OpenGeodeWeb-Back 6.10.1__tar.gz → 6.11.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/PKG-INFO +1 -1
  2. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/pyproject.toml +1 -1
  3. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/OpenGeodeWeb_Back.egg-info/PKG-INFO +1 -1
  4. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/blueprint_routes.py +30 -14
  5. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/tests/test_routes.py +44 -0
  6. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/LICENSE +0 -0
  7. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/README.md +0 -0
  8. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/requirements.txt +0 -0
  9. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/setup.cfg +0 -0
  10. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +0 -0
  11. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  12. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
  13. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -0
  14. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  15. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/__init__.py +0 -0
  16. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/app.py +0 -0
  17. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/app_config.py +0 -0
  18. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_functions.py +0 -0
  19. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
  20. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_brep.py +0 -0
  21. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
  22. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
  23. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
  24. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
  25. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
  26. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
  27. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
  28. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
  29. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
  30. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
  31. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
  32. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
  33. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_model.py +0 -0
  34. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
  35. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
  36. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
  37. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
  38. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
  39. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
  40. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
  41. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
  42. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
  43. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
  44. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_section.py +0 -0
  45. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
  46. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
  47. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
  48. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
  49. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
  50. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
  51. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
  52. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
  53. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/py.typed +0 -0
  54. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/create/blueprint_create.py +0 -0
  55. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -0
  56. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/create/schemas/edged_curve.json +0 -0
  57. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/create/schemas/edged_curve.py +0 -0
  58. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/create/schemas/point_set.json +0 -0
  59. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/create/schemas/point_set.py +0 -0
  60. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json +0 -0
  61. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.py +0 -0
  62. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/__init__.py +0 -0
  63. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  64. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
  65. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  66. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
  67. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
  68. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -0
  69. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
  70. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -0
  71. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
  72. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
  73. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
  74. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +0 -0
  75. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  76. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
  77. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  78. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
  79. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
  80. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
  81. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
  82. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
  83. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  84. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/missing_files.py +0 -0
  85. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.json +0 -0
  86. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.py +0 -0
  87. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.json +0 -0
  88. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.py +0 -0
  89. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.json +0 -0
  90. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.py +0 -0
  91. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.json +0 -0
  92. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.py +0 -0
  93. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  94. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
  95. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  96. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -0
  97. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  98. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -0
  99. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  100. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
  101. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  102. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
  103. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  104. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
  105. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/validate.json +0 -0
  106. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/validate.py +0 -0
  107. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  108. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -0
  109. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/test_utils.py +0 -0
  110. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/src/opengeodeweb_back/utils_functions.py +0 -0
  111. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/tests/test_create_routes.py +0 -0
  112. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/tests/test_geode_functions.py +0 -0
  113. {opengeodeweb_back-6.10.1 → opengeodeweb_back-6.11.0}/tests/test_utils_functions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.10.1
3
+ Version: 6.11.0
4
4
  Summary: OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem
5
5
  Author-email: Geode-solutions <team-web@geode-solutions.com>
6
6
  Project-URL: Homepage, https://github.com/Geode-solutions/OpenGeodeWeb-Back
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "OpenGeodeWeb-Back"
7
- version = "6.10.1"
7
+ version = "6.11.0"
8
8
  dynamic = ["dependencies"]
9
9
  authors = [{ name = "Geode-solutions", email = "team-web@geode-solutions.com" }]
10
10
  description = "OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.10.1
3
+ Version: 6.11.0
4
4
  Summary: OpenGeodeWeb-Back is an open source framework that proposes handy python functions and wrappers for the OpenGeode ecosystem
5
5
  Author-email: Geode-solutions <team-web@geode-solutions.com>
6
6
  Project-URL: Homepage, https://github.com/Geode-solutions/OpenGeodeWeb-Back
@@ -250,29 +250,45 @@ def texture_coordinates() -> flask.Response:
250
250
  return flask.make_response({"texture_coordinates": texture_coordinates}, 200)
251
251
 
252
252
 
253
- def attributes_metadata(manager: og.AttributeManager) -> list[dict[str, str | float]]:
254
- attributes: list[dict[str, str | float]] = []
253
+ def attributes_metadata(
254
+ manager: og.AttributeManager,
255
+ ) -> list[dict[str, str | int | float | list[float]]]:
256
+ attributes: list[dict[str, str | int | float | list[float]]] = []
255
257
  nb_elements = manager.nb_elements()
256
258
  for name in manager.attribute_names():
257
259
  attribute = manager.find_generic_attribute(name)
260
+ nb_items = 1
258
261
  min_value, max_value = -1.0, -1.0
262
+ min_values, max_values = [-1.0], [-1.0]
259
263
  if attribute.is_genericable():
260
- values = []
261
264
  nb_items = attribute.nb_items()
262
- for index in range(nb_elements):
263
- for item in range(nb_items):
264
- value = attribute.generic_item_value(index, item)
265
- values.append(value)
266
-
267
- valid_values = [
268
- value for value in values if value is not None and not math.isnan(value)
269
- ]
270
- if valid_values:
271
- min_value, max_value = min(valid_values), max(valid_values)
265
+ min_values, max_values = [], []
266
+ for item in range(nb_items):
267
+ values = [
268
+ attribute.generic_item_value(idx, item)
269
+ for idx in range(nb_elements)
270
+ ]
271
+ valid = [
272
+ value
273
+ for value in values
274
+ if value is not None and not math.isnan(value)
275
+ ]
276
+ min_values.append(min(valid) if valid else -1.0)
277
+ max_values.append(max(valid) if valid else -1.0)
278
+ min_value, max_value = min_values[0], max_values[0]
272
279
 
273
280
  attributes.append(
274
- {"attribute_name": name, "min_value": min_value, "max_value": max_value}
281
+ {
282
+ "attribute_name": name,
283
+ "nb_items": nb_items,
284
+ "min_value": min_value,
285
+ "max_value": max_value,
286
+ "min_values": min_values,
287
+ "max_values": max_values,
288
+ }
275
289
  )
290
+ print(f"[ATTRIBUTES] Number of items: {nb_items}")
291
+ print(f"[ATTRIBUTES] Attributes: {attributes}")
276
292
  return attributes
277
293
 
278
294
 
@@ -258,6 +258,14 @@ def test_vertex_attribute_names(client: FlaskClient, test_id: str) -> None:
258
258
  assert "attribute_name" in attribute
259
259
  assert "min_value" in attribute
260
260
  assert "max_value" in attribute
261
+ assert "nb_items" in attribute
262
+ assert "min_values" in attribute
263
+ assert "max_values" in attribute
264
+ print(
265
+ f"[ATTRIBUTES]: ",
266
+ [attribute["nb_items"] for attribute in attributes],
267
+ flush=True,
268
+ )
261
269
 
262
270
 
263
271
  def test_cell_attribute_names(client: FlaskClient, test_id: str) -> None:
@@ -286,6 +294,14 @@ def test_cell_attribute_names(client: FlaskClient, test_id: str) -> None:
286
294
  assert "attribute_name" in attribute
287
295
  assert "min_value" in attribute
288
296
  assert "max_value" in attribute
297
+ assert "nb_items" in attribute
298
+ assert "min_values" in attribute
299
+ assert "max_values" in attribute
300
+ print(
301
+ f"[ATTRIBUTES]: ",
302
+ [attribute["nb_items"] for attribute in attributes],
303
+ flush=True,
304
+ )
289
305
 
290
306
 
291
307
  def test_polygon_attribute_names(client: FlaskClient, test_id: str) -> None:
@@ -314,6 +330,14 @@ def test_polygon_attribute_names(client: FlaskClient, test_id: str) -> None:
314
330
  assert "attribute_name" in attribute
315
331
  assert "min_value" in attribute
316
332
  assert "max_value" in attribute
333
+ assert "nb_items" in attribute
334
+ assert "min_values" in attribute
335
+ assert "max_values" in attribute
336
+ print(
337
+ f"[ATTRIBUTES]: ",
338
+ [attribute["nb_items"] for attribute in attributes],
339
+ flush=True,
340
+ )
317
341
 
318
342
 
319
343
  def test_polyhedron_attribute_names(client: FlaskClient, test_id: str) -> None:
@@ -343,9 +367,17 @@ def test_polyhedron_attribute_names(client: FlaskClient, test_id: str) -> None:
343
367
  assert "attribute_name" in attribute
344
368
  assert "min_value" in attribute
345
369
  assert "max_value" in attribute
370
+ assert "nb_items" in attribute
371
+ assert "min_values" in attribute
372
+ assert "max_values" in attribute
346
373
  if attribute["attribute_name"] == "Range":
347
374
  assert attribute["min_value"] == 0.0
348
375
  assert attribute["max_value"] == 579.0
376
+ print(
377
+ f"[ATTRIBUTES]: ",
378
+ [attribute["nb_items"] for attribute in attributes],
379
+ flush=True,
380
+ )
349
381
 
350
382
 
351
383
  def test_edge_attribute_names(client: FlaskClient, test_id: str) -> None:
@@ -370,11 +402,20 @@ def test_edge_attribute_names(client: FlaskClient, test_id: str) -> None:
370
402
  print(response.get_json())
371
403
  assert response.status_code == 200
372
404
  attributes = response.get_json()["attributes"]
405
+ print(f"[ATTRIBUTES]: ", attributes, flush=True)
373
406
  assert type(attributes) is list
374
407
  for attribute in attributes:
375
408
  assert "attribute_name" in attribute
376
409
  assert "min_value" in attribute
377
410
  assert "max_value" in attribute
411
+ assert "nb_items" in attribute
412
+ assert "min_values" in attribute
413
+ assert "max_values" in attribute
414
+ print(
415
+ f"[ATTRIBUTES]: ",
416
+ [attribute["nb_items"] for attribute in attributes],
417
+ flush=True,
418
+ )
378
419
 
379
420
 
380
421
  def test_database_uri_path(client: FlaskClient) -> None:
@@ -624,6 +665,9 @@ def _assert_attributes_response(response) -> None:
624
665
  assert "attribute_name" in attribute
625
666
  assert "min_value" in attribute
626
667
  assert "max_value" in attribute
668
+ assert "nb_items" in attribute
669
+ assert "min_values" in attribute
670
+ assert "max_values" in attribute
627
671
 
628
672
 
629
673
  def test_model_component_vertex_attribute_names(client: FlaskClient) -> None: