OpenGeodeWeb-Back 6.1.2__tar.gz → 6.1.3__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 (107) hide show
  1. {opengeodeweb_back-6.1.2/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-6.1.3}/PKG-INFO +1 -1
  2. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/pyproject.toml +1 -1
  3. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +1 -1
  4. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/blueprint_routes.py +27 -39
  5. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/tests/test_routes.py +33 -38
  6. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/LICENSE +0 -0
  7. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/README.md +0 -0
  8. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/requirements.txt +0 -0
  9. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/setup.cfg +0 -0
  10. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +0 -0
  11. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  12. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
  13. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -0
  14. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  15. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/__init__.py +0 -0
  16. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/app.py +0 -0
  17. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/app_config.py +0 -0
  18. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_functions.py +0 -0
  19. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
  20. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_brep.py +0 -0
  21. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
  22. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
  23. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
  24. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
  25. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
  26. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
  27. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
  28. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
  29. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
  30. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
  31. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
  32. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
  33. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_model.py +0 -0
  34. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
  35. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
  36. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
  37. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
  38. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
  39. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
  40. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
  41. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
  42. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
  43. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
  44. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_section.py +0 -0
  45. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
  46. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
  47. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
  48. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
  49. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
  50. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
  51. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
  52. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
  53. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/geode_objects/types.py +0 -0
  54. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/py.typed +0 -0
  55. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/create/blueprint_create.py +0 -0
  56. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -0
  57. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/create/schemas/point.json +0 -0
  58. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/create/schemas/point.py +0 -0
  59. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/models/blueprint_models.py +0 -0
  60. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/models/schemas/__init__.py +0 -0
  61. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/models/schemas/mesh_components.json +0 -0
  62. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/models/schemas/mesh_components.py +0 -0
  63. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/__init__.py +0 -0
  64. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  65. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
  66. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  67. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
  68. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
  69. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -0
  70. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
  71. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -0
  72. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
  73. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
  74. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  75. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
  76. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  77. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
  78. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/import_extension.json +0 -0
  79. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/import_extension.py +0 -0
  80. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
  81. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
  82. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  83. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/inspect_file.py +0 -0
  84. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
  85. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
  86. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  87. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/missing_files.py +0 -0
  88. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  89. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
  90. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  91. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -0
  92. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  93. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -0
  94. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  95. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
  96. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  97. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
  98. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  99. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
  100. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  101. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -0
  102. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/test_utils.py +0 -0
  103. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/src/opengeodeweb_back/utils_functions.py +0 -0
  104. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/tests/test_create_routes.py +0 -0
  105. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/tests/test_geode_functions.py +0 -0
  106. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/tests/test_models_routes.py +0 -0
  107. {opengeodeweb_back-6.1.2 → opengeodeweb_back-6.1.3}/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.1.2
3
+ Version: 6.1.3
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.1.2"
7
+ version = "6.1.3"
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.1.2
3
+ Version: 6.1.3
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
@@ -2,6 +2,7 @@
2
2
  import os
3
3
  import time
4
4
  import shutil
5
+ import math
5
6
  from typing import Any
6
7
 
7
8
  # Third party imports
@@ -267,28 +268,30 @@ def texture_coordinates() -> flask.Response:
267
268
  return flask.make_response({"texture_coordinates": texture_coordinates}, 200)
268
269
 
269
270
 
270
- def attributes_metadata(manager: og.AttributeManager) -> dict[str, list[float]]:
271
- metadata: dict[str, list[float]] = {}
271
+ def attributes_metadata(manager: og.AttributeManager) -> list[dict[str, str | float]]:
272
+ attributes: list[dict[str, str | float]] = []
273
+ nb_elements = manager.nb_elements()
272
274
  for name in manager.attribute_names():
273
275
  attribute = manager.find_generic_attribute(name)
274
- if not attribute.is_genericable():
275
- metadata[name] = [-1.0, -1.0]
276
- continue
277
- min_value = None
278
- max_value = None
279
- nb_items = attribute.nb_items()
280
- for i in range(nb_items):
281
- generic_value = attribute.generic_value(i)
282
- if min_value is None or generic_value < min_value:
283
- min_value = generic_value
284
- if max_value is None or generic_value > max_value:
285
- max_value = generic_value
286
- metadata[name] = (
287
- [min_value, max_value]
288
- if min_value is not None and max_value is not None
289
- else [-1.0, -1.0]
276
+ min_value, max_value = -1.0, -1.0
277
+ if attribute.is_genericable():
278
+ values = []
279
+ nb_items = attribute.nb_items()
280
+ for index in range(nb_elements):
281
+ for item in range(nb_items):
282
+ value = attribute.generic_item_value(index, item)
283
+ values.append(value)
284
+
285
+ valid_values = [
286
+ value for value in values if value is not None and not math.isnan(value)
287
+ ]
288
+ if valid_values:
289
+ min_value, max_value = min(valid_values), max(valid_values)
290
+
291
+ attributes.append(
292
+ {"attribute_name": name, "min_value": min_value, "max_value": max_value}
290
293
  )
291
- return metadata
294
+ return attributes
292
295
 
293
296
 
294
297
  @routes.route(
@@ -305,10 +308,7 @@ def vertex_attribute_names() -> flask.Response:
305
308
  flask.abort(400, f"{params.id} is not a GeodeMesh")
306
309
  attribute_manager = geode_object.vertex_attribute_manager()
307
310
  return flask.make_response(
308
- {
309
- "vertex_attribute_names": attribute_manager.attribute_names(),
310
- "vertex_attribute_metadata": attributes_metadata(attribute_manager),
311
- },
311
+ {"attributes": attributes_metadata(attribute_manager)},
312
312
  200,
313
313
  )
314
314
 
@@ -327,10 +327,7 @@ def cell_attribute_names() -> flask.Response:
327
327
  flask.abort(400, f"{params.id} is not a GeodeGrid")
328
328
  attribute_manager = geode_object.cell_attribute_manager()
329
329
  return flask.make_response(
330
- {
331
- "cell_attribute_names": attribute_manager.attribute_names(),
332
- "cell_attribute_metadata": attributes_metadata(attribute_manager),
333
- },
330
+ {"attributes": attributes_metadata(attribute_manager)},
334
331
  200,
335
332
  )
336
333
 
@@ -349,10 +346,7 @@ def polygon_attribute_names() -> flask.Response:
349
346
  flask.abort(400, f"{params.id} is not a GeodeSurfaceMesh")
350
347
  attribute_manager = geode_object.polygon_attribute_manager()
351
348
  return flask.make_response(
352
- {
353
- "polygon_attribute_names": attribute_manager.attribute_names(),
354
- "polygon_attribute_metadata": attributes_metadata(attribute_manager),
355
- },
349
+ {"attributes": attributes_metadata(attribute_manager)},
356
350
  200,
357
351
  )
358
352
 
@@ -371,10 +365,7 @@ def polyhedron_attribute_names() -> flask.Response:
371
365
  flask.abort(400, f"{params.id} is not a GeodeSolidMesh")
372
366
  attribute_manager = geode_object.polyhedron_attribute_manager()
373
367
  return flask.make_response(
374
- {
375
- "polyhedron_attribute_names": attribute_manager.attribute_names(),
376
- "polyhedron_attribute_metadata": attributes_metadata(attribute_manager),
377
- },
368
+ {"attributes": attributes_metadata(attribute_manager)},
378
369
  200,
379
370
  )
380
371
 
@@ -393,10 +384,7 @@ def edge_attribute_names() -> flask.Response:
393
384
  flask.abort(400, f"{params.id} does not have edges")
394
385
  attribute_manager = geode_object.edge_attribute_manager()
395
386
  return flask.make_response(
396
- {
397
- "edge_attribute_names": attribute_manager.attribute_names(),
398
- "edge_attribute_metadata": attributes_metadata(attribute_manager),
399
- },
387
+ {"attributes": attributes_metadata(attribute_manager)},
400
388
  200,
401
389
  )
402
390
 
@@ -246,13 +246,12 @@ def test_vertex_attribute_names(client: FlaskClient, test_id: str) -> None:
246
246
  assert os.path.exists(data_path), f"File not found at {data_path}"
247
247
  response = client.post(route, json={"id": data.id})
248
248
  assert response.status_code == 200
249
- vertex_attribute_names = response.get_json()["vertex_attribute_names"]
250
- vertex_attribute_metadata = response.get_json()["vertex_attribute_metadata"]
251
- assert type(vertex_attribute_names) is list
252
- assert type(vertex_attribute_metadata) is dict
253
- for vertex_attribute_name in vertex_attribute_names:
254
- assert type(vertex_attribute_name) is str
255
- assert vertex_attribute_name in vertex_attribute_metadata
249
+ attributes = response.get_json()["attributes"]
250
+ assert type(attributes) is list
251
+ for attribute in attributes:
252
+ assert "attribute_name" in attribute
253
+ assert "min_value" in attribute
254
+ assert "max_value" in attribute
256
255
 
257
256
 
258
257
  def test_cell_attribute_names(client: FlaskClient, test_id: str) -> None:
@@ -276,13 +275,12 @@ def test_cell_attribute_names(client: FlaskClient, test_id: str) -> None:
276
275
  assert os.path.exists(data_path), f"File not found at {data_path}"
277
276
  response = client.post(route, json={"id": data.id})
278
277
  assert response.status_code == 200
279
- cell_attribute_names = response.get_json()["cell_attribute_names"]
280
- cell_attribute_metadata = response.get_json()["cell_attribute_metadata"]
281
- assert type(cell_attribute_names) is list
282
- assert type(cell_attribute_metadata) is dict
283
- for cell_attribute_name in cell_attribute_names:
284
- assert type(cell_attribute_name) is str
285
- assert cell_attribute_name in cell_attribute_metadata
278
+ attributes = response.get_json()["attributes"]
279
+ assert type(attributes) is list
280
+ for attribute in attributes:
281
+ assert "attribute_name" in attribute
282
+ assert "min_value" in attribute
283
+ assert "max_value" in attribute
286
284
 
287
285
 
288
286
  def test_polygon_attribute_names(client: FlaskClient, test_id: str) -> None:
@@ -306,13 +304,12 @@ def test_polygon_attribute_names(client: FlaskClient, test_id: str) -> None:
306
304
  assert os.path.exists(data_path), f"File not found at {data_path}"
307
305
  response = client.post(route, json={"id": data.id})
308
306
  assert response.status_code == 200
309
- polygon_attribute_names = response.get_json()["polygon_attribute_names"]
310
- polygon_attribute_metadata = response.get_json()["polygon_attribute_metadata"]
311
- assert type(polygon_attribute_names) is list
312
- assert type(polygon_attribute_metadata) is dict
313
- for polygon_attribute_name in polygon_attribute_names:
314
- assert type(polygon_attribute_name) is str
315
- assert polygon_attribute_name in polygon_attribute_metadata
307
+ attributes = response.get_json()["attributes"]
308
+ assert type(attributes) is list
309
+ for attribute in attributes:
310
+ assert "attribute_name" in attribute
311
+ assert "min_value" in attribute
312
+ assert "max_value" in attribute
316
313
 
317
314
 
318
315
  def test_polyhedron_attribute_names(client: FlaskClient, test_id: str) -> None:
@@ -337,16 +334,15 @@ def test_polyhedron_attribute_names(client: FlaskClient, test_id: str) -> None:
337
334
  response = client.post(route, json={"id": data.id})
338
335
  print(response.get_json())
339
336
  assert response.status_code == 200
340
- polyhedron_attribute_names = response.get_json()["polyhedron_attribute_names"]
341
- polyhedron_attribute_metadata = response.get_json()["polyhedron_attribute_metadata"]
342
- assert type(polyhedron_attribute_names) is list
343
- assert type(polyhedron_attribute_metadata) is dict
344
- for polyhedron_attribute_name in polyhedron_attribute_names:
345
- assert type(polyhedron_attribute_name) is str
346
- assert polyhedron_attribute_name in polyhedron_attribute_metadata
347
-
348
- if "Range" in polyhedron_attribute_metadata:
349
- assert polyhedron_attribute_metadata["Range"] == [0.0, 579.0]
337
+ attributes = response.get_json()["attributes"]
338
+ assert type(attributes) is list
339
+ for attribute in attributes:
340
+ assert "attribute_name" in attribute
341
+ assert "min_value" in attribute
342
+ assert "max_value" in attribute
343
+ if attribute["attribute_name"] == "Range":
344
+ assert attribute["min_value"] == 0.0
345
+ assert attribute["max_value"] == 579.0
350
346
 
351
347
 
352
348
  def test_edge_attribute_names(client: FlaskClient, test_id: str) -> None:
@@ -371,13 +367,12 @@ def test_edge_attribute_names(client: FlaskClient, test_id: str) -> None:
371
367
  response = client.post(route, json={"id": data.id})
372
368
  print(response.get_json())
373
369
  assert response.status_code == 200
374
- edge_attribute_names = response.get_json()["edge_attribute_names"]
375
- edge_attribute_metadata = response.get_json()["edge_attribute_metadata"]
376
- assert type(edge_attribute_names) is list
377
- assert type(edge_attribute_metadata) is dict
378
- for edge_attribute_name in edge_attribute_names:
379
- assert type(edge_attribute_name) is str
380
- assert edge_attribute_name in edge_attribute_metadata
370
+ attributes = response.get_json()["attributes"]
371
+ assert type(attributes) is list
372
+ for attribute in attributes:
373
+ assert "attribute_name" in attribute
374
+ assert "min_value" in attribute
375
+ assert "max_value" in attribute
381
376
 
382
377
 
383
378
  def test_database_uri_path(client: FlaskClient) -> None: