OpenGeodeWeb-Back 6.16.0__tar.gz → 6.16.1__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 (143) hide show
  1. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/PKG-INFO +1 -1
  2. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/pyproject.toml +1 -1
  3. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/requirements.txt +1 -1
  4. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/PKG-INFO +1 -1
  5. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +18 -0
  6. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/blueprint_routes.py +197 -23
  7. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/__init__.py +9 -0
  8. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -26
  9. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -5
  10. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/cell_attribute_range.json +49 -0
  11. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/cell_attribute_range.py +34 -0
  12. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -26
  13. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -5
  14. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/edge_attribute_range.json +49 -0
  15. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/edge_attribute_range.py +34 -0
  16. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.json +0 -26
  17. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.py +0 -5
  18. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_range.json +59 -0
  19. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_range.py +35 -0
  20. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.json +0 -26
  21. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.py +0 -5
  22. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_range.json +59 -0
  23. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_range.py +35 -0
  24. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.json +0 -26
  25. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.py +0 -5
  26. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_range.json +59 -0
  27. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_range.py +35 -0
  28. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.json +0 -26
  29. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.py +0 -5
  30. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_range.json +59 -0
  31. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_range.py +35 -0
  32. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -26
  33. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -5
  34. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/polygon_attribute_range.json +49 -0
  35. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/polygon_attribute_range.py +34 -0
  36. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -26
  37. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -5
  38. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_range.json +49 -0
  39. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_range.py +34 -0
  40. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -26
  41. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -5
  42. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/vertex_attribute_range.json +49 -0
  43. opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/vertex_attribute_range.py +34 -0
  44. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/tests/test_routes.py +74 -39
  45. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/LICENSE +0 -0
  46. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/README.md +0 -0
  47. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/setup.cfg +0 -0
  48. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  49. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
  50. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -0
  51. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  52. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/__init__.py +0 -0
  53. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/app.py +0 -0
  54. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/app_config.py +0 -0
  55. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_functions.py +0 -0
  56. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
  57. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_brep.py +0 -0
  58. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
  59. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
  60. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
  61. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
  62. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
  63. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
  64. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_horizon_stack3d.py +0 -0
  65. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
  66. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
  67. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
  68. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
  69. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
  70. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
  71. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_model.py +0 -0
  72. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
  73. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
  74. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
  75. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
  76. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
  77. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
  78. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
  79. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
  80. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
  81. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
  82. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_section.py +0 -0
  83. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
  84. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
  85. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
  86. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
  87. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
  88. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
  89. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
  90. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
  91. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/py.typed +0 -0
  92. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/__init__.py +0 -0
  93. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/__init__.py +0 -0
  94. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/blueprint_create.py +0 -0
  95. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -0
  96. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.json +0 -0
  97. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.py +0 -0
  98. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/point_set.json +0 -0
  99. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/point_set.py +0 -0
  100. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json +0 -0
  101. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.py +0 -0
  102. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  103. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
  104. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  105. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
  106. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/apply_time_series.json +0 -0
  107. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/apply_time_series.py +0 -0
  108. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/data_missing_files.json +0 -0
  109. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/data_missing_files.py +0 -0
  110. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
  111. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
  112. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
  113. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +0 -0
  114. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  115. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
  116. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  117. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
  118. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
  119. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
  120. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
  121. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
  122. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  123. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
  124. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  125. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
  126. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  127. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
  128. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/time_series_allowed_objects.json +0 -0
  129. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/time_series_allowed_objects.py +0 -0
  130. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/time_series_missing_files.json +0 -0
  131. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/time_series_missing_files.py +0 -0
  132. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  133. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
  134. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/validate.json +0 -0
  135. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/validate.py +0 -0
  136. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/test_utils.py +0 -0
  137. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/typed_route.py +0 -0
  138. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/utils_functions.py +0 -0
  139. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/tests/test_create_routes.py +0 -0
  140. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/tests/test_events.py +0 -0
  141. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/tests/test_geode_functions.py +0 -0
  142. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/tests/test_typed_routes.py +0 -0
  143. {opengeodeweb_back-6.16.0 → opengeodeweb_back-6.16.1}/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.16.0
3
+ Version: 6.16.1
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.16.0"
7
+ version = "6.16.1"
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,5 +1,5 @@
1
1
  #
2
- # This file is autogenerated by pip-compile with Python 3.12
2
+ # This file is autogenerated by pip-compile with Python 3.14
3
3
  # by the following command:
4
4
  #
5
5
  # pip-compile --output-file=./requirements.txt ./requirements.in
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.16.0
3
+ Version: 6.16.1
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
@@ -71,10 +71,14 @@ src/opengeodeweb_back/routes/schemas/apply_time_series.json
71
71
  src/opengeodeweb_back/routes/schemas/apply_time_series.py
72
72
  src/opengeodeweb_back/routes/schemas/cell_attribute_names.json
73
73
  src/opengeodeweb_back/routes/schemas/cell_attribute_names.py
74
+ src/opengeodeweb_back/routes/schemas/cell_attribute_range.json
75
+ src/opengeodeweb_back/routes/schemas/cell_attribute_range.py
74
76
  src/opengeodeweb_back/routes/schemas/data_missing_files.json
75
77
  src/opengeodeweb_back/routes/schemas/data_missing_files.py
76
78
  src/opengeodeweb_back/routes/schemas/edge_attribute_names.json
77
79
  src/opengeodeweb_back/routes/schemas/edge_attribute_names.py
80
+ src/opengeodeweb_back/routes/schemas/edge_attribute_range.json
81
+ src/opengeodeweb_back/routes/schemas/edge_attribute_range.py
78
82
  src/opengeodeweb_back/routes/schemas/export_project.json
79
83
  src/opengeodeweb_back/routes/schemas/export_project.py
80
84
  src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json
@@ -89,18 +93,30 @@ src/opengeodeweb_back/routes/schemas/kill.json
89
93
  src/opengeodeweb_back/routes/schemas/kill.py
90
94
  src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.json
91
95
  src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.py
96
+ src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_range.json
97
+ src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_range.py
92
98
  src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.json
93
99
  src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.py
100
+ src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_range.json
101
+ src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_range.py
94
102
  src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.json
95
103
  src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.py
104
+ src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_range.json
105
+ src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_range.py
96
106
  src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.json
97
107
  src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.py
108
+ src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_range.json
109
+ src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_range.py
98
110
  src/opengeodeweb_back/routes/schemas/ping.json
99
111
  src/opengeodeweb_back/routes/schemas/ping.py
100
112
  src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json
101
113
  src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py
114
+ src/opengeodeweb_back/routes/schemas/polygon_attribute_range.json
115
+ src/opengeodeweb_back/routes/schemas/polygon_attribute_range.py
102
116
  src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json
103
117
  src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py
118
+ src/opengeodeweb_back/routes/schemas/polyhedron_attribute_range.json
119
+ src/opengeodeweb_back/routes/schemas/polyhedron_attribute_range.py
104
120
  src/opengeodeweb_back/routes/schemas/save_viewable_file.json
105
121
  src/opengeodeweb_back/routes/schemas/save_viewable_file.py
106
122
  src/opengeodeweb_back/routes/schemas/texture_coordinates.json
@@ -115,6 +131,8 @@ src/opengeodeweb_back/routes/schemas/validate.json
115
131
  src/opengeodeweb_back/routes/schemas/validate.py
116
132
  src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json
117
133
  src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py
134
+ src/opengeodeweb_back/routes/schemas/vertex_attribute_range.json
135
+ src/opengeodeweb_back/routes/schemas/vertex_attribute_range.py
118
136
  tests/test_create_routes.py
119
137
  tests/test_events.py
120
138
  tests/test_geode_functions.py
@@ -334,6 +334,16 @@ def _attribute_ids_for_name(
334
334
  return attribute_ids[:1]
335
335
 
336
336
 
337
+ def _is_nan_no_value(no_value: object) -> bool:
338
+ if isinstance(no_value, float):
339
+ return math.isnan(no_value)
340
+ if isinstance(no_value, list):
341
+ return bool(no_value) and all(
342
+ isinstance(value, float) and math.isnan(value) for value in no_value
343
+ )
344
+ return False
345
+
346
+
337
347
  def _extract_valid_values_from_attribute(
338
348
  attribute_manager: og.AttributeManager,
339
349
  attribute_id: og.uuid,
@@ -361,15 +371,21 @@ def _extract_valid_values_from_attribute(
361
371
  ],
362
372
  )
363
373
 
364
- valid_values: list[float] = []
365
- has_nan = False
366
- for element_index in range(attribute_manager.nb_elements()):
367
- value = attribute.generic_item_value(element_index, item_index)
368
- if math.isnan(value) or (no_value is not None and value_getter(element_index) == no_value):
369
- has_nan = True
370
- else:
371
- valid_values.append(value)
372
- return valid_values, has_nan
374
+ item_value = attribute.generic_item_value
375
+ values = [
376
+ item_value(element_index, item_index)
377
+ for element_index in range(attribute_manager.nb_elements())
378
+ ]
379
+ # A NaN no value never compares equal: the isnan filter alone removes it
380
+ if no_value is None or _is_nan_no_value(no_value):
381
+ valid_values = [value for value in values if not math.isnan(value)]
382
+ return valid_values, len(valid_values) != len(values)
383
+ valid_values = [
384
+ value
385
+ for element_index, value in enumerate(values)
386
+ if not math.isnan(value) and value_getter(element_index) != no_value
387
+ ]
388
+ return valid_values, len(valid_values) != len(values)
373
389
 
374
390
 
375
391
  def extract_valid_attribute_values(
@@ -423,9 +439,9 @@ def _attribute_ranges(
423
439
 
424
440
  def attributes_metadata(
425
441
  manager: og.AttributeManager | list[og.AttributeManager],
426
- ) -> list[dict[str, str | int | float | bool | list[float]]]:
442
+ ) -> list[dict[str, str | int | list[float]]]:
427
443
  attribute_managers = manager if isinstance(manager, list) else [manager]
428
- attributes: list[dict[str, str | int | float | bool | list[float]]] = []
444
+ attributes: list[dict[str, str | int | list[float]]] = []
429
445
  first_manager = attribute_managers[0]
430
446
  listed_time_series: set[str] = set()
431
447
  for attribute_id in first_manager.attribute_ids():
@@ -442,12 +458,6 @@ def attributes_metadata(
442
458
  continue
443
459
  if time_steps:
444
460
  listed_time_series.add(attribute_name)
445
- nb_items = attribute.nb_items()
446
- min_values, max_values, attribute_has_nan = _attribute_ranges(
447
- attribute_managers, attribute_name, nb_items
448
- )
449
- if not min_values or not max_values:
450
- continue
451
461
  series_id = (
452
462
  first_manager.time_steps(attribute_name)[0].attribute_id.string()
453
463
  if time_steps
@@ -457,18 +467,37 @@ def attributes_metadata(
457
467
  {
458
468
  "attribute_name": attribute_name,
459
469
  "attribute_id": series_id,
460
- "nb_items": nb_items,
461
- "min_value": min(min_values),
462
- "max_value": max(max_values),
463
- "min_values": min_values,
464
- "max_values": max_values,
465
- "no_data": attribute_has_nan,
470
+ "nb_items": attribute.nb_items(),
466
471
  "time_steps": time_steps,
467
472
  }
468
473
  )
469
474
  return attributes
470
475
 
471
476
 
477
+ def _attribute_nb_items(attribute_manager: og.AttributeManager, attribute_name: str) -> int:
478
+ attribute_ids = _attribute_ids_for_name(attribute_manager, attribute_name)
479
+ if not attribute_ids:
480
+ return 0
481
+ attribute = attribute_manager.find_generic_attribute(attribute_ids[0])
482
+ return attribute.nb_items() if attribute is not None else 0
483
+
484
+
485
+ def attributes_range(
486
+ attribute_managers: list[og.AttributeManager], attribute_name: str
487
+ ) -> dict[str, list[float] | bool]:
488
+ nb_items = min(
489
+ (
490
+ _attribute_nb_items(attribute_manager, attribute_name)
491
+ for attribute_manager in attribute_managers
492
+ ),
493
+ default=0,
494
+ )
495
+ min_values, max_values, no_data = _attribute_ranges(
496
+ attribute_managers, attribute_name, nb_items
497
+ )
498
+ return {"min_values": min_values, "max_values": max_values, "no_data": no_data}
499
+
500
+
472
501
  @typed_route(routes, schemas.vertex_attribute_names_route)
473
502
  def vertex_attribute_names(
474
503
  params: schemas.VertexAttributeNames,
@@ -482,6 +511,19 @@ def vertex_attribute_names(
482
511
  )
483
512
 
484
513
 
514
+ @typed_route(routes, schemas.vertex_attribute_range_route)
515
+ def vertex_attribute_range(
516
+ params: schemas.VertexAttributeRange,
517
+ ) -> schemas.VertexAttributeRangeResponse:
518
+ geode_object = geode_functions.load_geode_object(params.id)
519
+ if not isinstance(geode_object, GeodeMesh):
520
+ flask.abort(400, f"{params.id} is not a GeodeMesh")
521
+ attribute_manager = geode_object.vertex_attribute_manager()
522
+ return schemas.VertexAttributeRangeResponse.from_dict(
523
+ attributes_range([attribute_manager], params.attribute_name)
524
+ )
525
+
526
+
485
527
  @typed_route(routes, schemas.cell_attribute_names_route)
486
528
  def cell_attribute_names(
487
529
  params: schemas.CellAttributeNames,
@@ -495,6 +537,19 @@ def cell_attribute_names(
495
537
  )
496
538
 
497
539
 
540
+ @typed_route(routes, schemas.cell_attribute_range_route)
541
+ def cell_attribute_range(
542
+ params: schemas.CellAttributeRange,
543
+ ) -> schemas.CellAttributeRangeResponse:
544
+ geode_object = geode_functions.load_geode_object(params.id)
545
+ if not isinstance(geode_object, GeodeGrid2D | GeodeGrid3D):
546
+ flask.abort(400, f"{params.id} is not a GeodeGrid")
547
+ attribute_manager = geode_object.cell_attribute_manager()
548
+ return schemas.CellAttributeRangeResponse.from_dict(
549
+ attributes_range([attribute_manager], params.attribute_name)
550
+ )
551
+
552
+
498
553
  @typed_route(routes, schemas.polygon_attribute_names_route)
499
554
  def polygon_attribute_names(
500
555
  params: schemas.PolygonAttributeNames,
@@ -508,6 +563,19 @@ def polygon_attribute_names(
508
563
  )
509
564
 
510
565
 
566
+ @typed_route(routes, schemas.polygon_attribute_range_route)
567
+ def polygon_attribute_range(
568
+ params: schemas.PolygonAttributeRange,
569
+ ) -> schemas.PolygonAttributeRangeResponse:
570
+ geode_object = geode_functions.load_geode_object(params.id)
571
+ if not isinstance(geode_object, GeodeSurfaceMesh2D | GeodeSurfaceMesh3D):
572
+ flask.abort(400, f"{params.id} is not a GeodeSurfaceMesh")
573
+ attribute_manager = geode_object.polygon_attribute_manager()
574
+ return schemas.PolygonAttributeRangeResponse.from_dict(
575
+ attributes_range([attribute_manager], params.attribute_name)
576
+ )
577
+
578
+
511
579
  @typed_route(routes, schemas.polyhedron_attribute_names_route)
512
580
  def polyhedron_attribute_names(
513
581
  params: schemas.PolyhedronAttributeNames,
@@ -521,6 +589,19 @@ def polyhedron_attribute_names(
521
589
  )
522
590
 
523
591
 
592
+ @typed_route(routes, schemas.polyhedron_attribute_range_route)
593
+ def polyhedron_attribute_range(
594
+ params: schemas.PolyhedronAttributeRange,
595
+ ) -> schemas.PolyhedronAttributeRangeResponse:
596
+ geode_object = geode_functions.load_geode_object(params.id)
597
+ if not isinstance(geode_object, GeodeSolidMesh3D):
598
+ flask.abort(400, f"{params.id} is not a GeodeSolidMesh")
599
+ attribute_manager = geode_object.polyhedron_attribute_manager()
600
+ return schemas.PolyhedronAttributeRangeResponse.from_dict(
601
+ attributes_range([attribute_manager], params.attribute_name)
602
+ )
603
+
604
+
524
605
  @typed_route(routes, schemas.edge_attribute_names_route)
525
606
  def edge_attribute_names(
526
607
  params: schemas.EdgeAttributeNames,
@@ -534,6 +615,19 @@ def edge_attribute_names(
534
615
  )
535
616
 
536
617
 
618
+ @typed_route(routes, schemas.edge_attribute_range_route)
619
+ def edge_attribute_range(
620
+ params: schemas.EdgeAttributeRange,
621
+ ) -> schemas.EdgeAttributeRangeResponse:
622
+ geode_object = geode_functions.load_geode_object(params.id)
623
+ if not isinstance(geode_object, GeodeGraph):
624
+ flask.abort(400, f"{params.id} does not have edges")
625
+ attribute_manager = geode_object.edge_attribute_manager()
626
+ return schemas.EdgeAttributeRangeResponse.from_dict(
627
+ attributes_range([attribute_manager], params.attribute_name)
628
+ )
629
+
630
+
537
631
  @typed_route(routes, schemas.model_component_vertex_attribute_names_route)
538
632
  def model_component_vertex_attribute_names(
539
633
  params: schemas.ModelComponentVertexAttributeNames,
@@ -554,6 +648,26 @@ def model_component_vertex_attribute_names(
554
648
  )
555
649
 
556
650
 
651
+ @typed_route(routes, schemas.model_component_vertex_attribute_range_route)
652
+ def model_component_vertex_attribute_range(
653
+ params: schemas.ModelComponentVertexAttributeRange,
654
+ ) -> schemas.ModelComponentVertexAttributeRangeResponse:
655
+ geode_object = geode_functions.load_geode_object(params.id)
656
+ if not isinstance(geode_object, GeodeModel):
657
+ flask.abort(400, f"{params.id} is not a GeodeModel")
658
+ managers = [
659
+ component.mesh().vertex_attribute_manager()
660
+ for component_id in params.component_ids
661
+ if isinstance(
662
+ (component := geode_object.component(og.uuid(component_id))),
663
+ ComponentMesh,
664
+ )
665
+ ]
666
+ return schemas.ModelComponentVertexAttributeRangeResponse.from_dict(
667
+ attributes_range(managers, params.attribute_name)
668
+ )
669
+
670
+
557
671
  @typed_route(routes, schemas.model_component_edge_attribute_names_route)
558
672
  def model_component_edge_attribute_names(
559
673
  params: schemas.ModelComponentEdgeAttributeNames,
@@ -574,6 +688,26 @@ def model_component_edge_attribute_names(
574
688
  )
575
689
 
576
690
 
691
+ @typed_route(routes, schemas.model_component_edge_attribute_range_route)
692
+ def model_component_edge_attribute_range(
693
+ params: schemas.ModelComponentEdgeAttributeRange,
694
+ ) -> schemas.ModelComponentEdgeAttributeRangeResponse:
695
+ geode_object = geode_functions.load_geode_object(params.id)
696
+ if not isinstance(geode_object, GeodeModel):
697
+ flask.abort(400, f"{params.id} is not a GeodeModel")
698
+ managers = [
699
+ component.mesh().edge_attribute_manager()
700
+ for component_id in params.component_ids
701
+ if isinstance(
702
+ (component := geode_object.component(og.uuid(component_id))),
703
+ ComponentLine,
704
+ )
705
+ ]
706
+ return schemas.ModelComponentEdgeAttributeRangeResponse.from_dict(
707
+ attributes_range(managers, params.attribute_name)
708
+ )
709
+
710
+
577
711
  @typed_route(routes, schemas.model_component_polygon_attribute_names_route)
578
712
  def model_component_polygon_attribute_names(
579
713
  params: schemas.ModelComponentPolygonAttributeNames,
@@ -594,6 +728,26 @@ def model_component_polygon_attribute_names(
594
728
  )
595
729
 
596
730
 
731
+ @typed_route(routes, schemas.model_component_polygon_attribute_range_route)
732
+ def model_component_polygon_attribute_range(
733
+ params: schemas.ModelComponentPolygonAttributeRange,
734
+ ) -> schemas.ModelComponentPolygonAttributeRangeResponse:
735
+ geode_object = geode_functions.load_geode_object(params.id)
736
+ if not isinstance(geode_object, GeodeModel):
737
+ flask.abort(400, f"{params.id} is not a GeodeModel")
738
+ managers = [
739
+ component.mesh().polygon_attribute_manager()
740
+ for component_id in params.component_ids
741
+ if isinstance(
742
+ (component := geode_object.component(og.uuid(component_id))),
743
+ ComponentSurface,
744
+ )
745
+ ]
746
+ return schemas.ModelComponentPolygonAttributeRangeResponse.from_dict(
747
+ attributes_range(managers, params.attribute_name)
748
+ )
749
+
750
+
597
751
  @typed_route(routes, schemas.model_component_polyhedron_attribute_names_route)
598
752
  def model_component_polyhedron_attribute_names(
599
753
  params: schemas.ModelComponentPolyhedronAttributeNames,
@@ -614,6 +768,26 @@ def model_component_polyhedron_attribute_names(
614
768
  )
615
769
 
616
770
 
771
+ @typed_route(routes, schemas.model_component_polyhedron_attribute_range_route)
772
+ def model_component_polyhedron_attribute_range(
773
+ params: schemas.ModelComponentPolyhedronAttributeRange,
774
+ ) -> schemas.ModelComponentPolyhedronAttributeRangeResponse:
775
+ geode_object = geode_functions.load_geode_object(params.id)
776
+ if not isinstance(geode_object, GeodeModel):
777
+ flask.abort(400, f"{params.id} is not a GeodeModel")
778
+ managers = [
779
+ component.mesh().polyhedron_attribute_manager()
780
+ for component_id in params.component_ids
781
+ if isinstance(
782
+ (component := geode_object.component(og.uuid(component_id))),
783
+ ComponentBlock,
784
+ )
785
+ ]
786
+ return schemas.ModelComponentPolyhedronAttributeRangeResponse.from_dict(
787
+ attributes_range(managers, params.attribute_name)
788
+ )
789
+
790
+
617
791
  @typed_route(routes, schemas.ping_route)
618
792
  def ping(_params: schemas.Ping) -> schemas.PingResponse:
619
793
  flask.current_app.config.update(LAST_PING_TIME=time.time())
@@ -1,3 +1,4 @@
1
+ from .vertex_attribute_range import *
1
2
  from .vertex_attribute_names import *
2
3
  from .validate import *
3
4
  from .upload_file import *
@@ -5,12 +6,18 @@ from .time_series_missing_files import *
5
6
  from .time_series_allowed_objects import *
6
7
  from .texture_coordinates import *
7
8
  from .save_viewable_file import *
9
+ from .polyhedron_attribute_range import *
8
10
  from .polyhedron_attribute_names import *
11
+ from .polygon_attribute_range import *
9
12
  from .polygon_attribute_names import *
10
13
  from .ping import *
14
+ from .model_component_vertex_attribute_range import *
11
15
  from .model_component_vertex_attribute_names import *
16
+ from .model_component_polyhedron_attribute_range import *
12
17
  from .model_component_polyhedron_attribute_names import *
18
+ from .model_component_polygon_attribute_range import *
13
19
  from .model_component_polygon_attribute_names import *
20
+ from .model_component_edge_attribute_range import *
14
21
  from .model_component_edge_attribute_names import *
15
22
  from .kill import *
16
23
  from .import_project import *
@@ -18,8 +25,10 @@ from .geographic_coordinate_systems import *
18
25
  from .geode_objects_and_output_extensions import *
19
26
  from .geode_object_inheritance import *
20
27
  from .export_project import *
28
+ from .edge_attribute_range import *
21
29
  from .edge_attribute_names import *
22
30
  from .data_missing_files import *
31
+ from .cell_attribute_range import *
23
32
  from .cell_attribute_names import *
24
33
  from .apply_time_series import *
25
34
  from .allowed_objects import *
@@ -32,27 +32,6 @@
32
32
  "nb_items": {
33
33
  "type": "integer"
34
34
  },
35
- "min_value": {
36
- "type": "number"
37
- },
38
- "max_value": {
39
- "type": "number"
40
- },
41
- "min_values": {
42
- "type": "array",
43
- "items": {
44
- "type": "number"
45
- }
46
- },
47
- "max_values": {
48
- "type": "array",
49
- "items": {
50
- "type": "number"
51
- }
52
- },
53
- "no_data": {
54
- "type": "boolean"
55
- },
56
35
  "time_steps": {
57
36
  "type": "array",
58
37
  "items": {
@@ -64,11 +43,6 @@
64
43
  "attribute_name",
65
44
  "attribute_id",
66
45
  "nb_items",
67
- "min_value",
68
- "max_value",
69
- "min_values",
70
- "max_values",
71
- "no_data",
72
46
  "time_steps"
73
47
  ],
74
48
  "additionalProperties": false
@@ -21,12 +21,7 @@ class Attribute(DataClassJsonMixin):
21
21
 
22
22
  attribute_id: str
23
23
  attribute_name: str
24
- max_value: float
25
- max_values: List[float]
26
- min_value: float
27
- min_values: List[float]
28
24
  nb_items: int
29
- no_data: bool
30
25
  time_steps: List[float]
31
26
 
32
27
 
@@ -0,0 +1,49 @@
1
+ {
2
+ "route": "/cell_attribute_range",
3
+ "methods": [
4
+ "POST"
5
+ ],
6
+ "type": "object",
7
+ "properties": {
8
+ "id": {
9
+ "type": "string",
10
+ "minLength": 32,
11
+ "maxLength": 32
12
+ },
13
+ "attribute_name": {
14
+ "type": "string",
15
+ "minLength": 1
16
+ }
17
+ },
18
+ "required": [
19
+ "id",
20
+ "attribute_name"
21
+ ],
22
+ "additionalProperties": false,
23
+ "response": {
24
+ "type": "object",
25
+ "properties": {
26
+ "min_values": {
27
+ "type": "array",
28
+ "items": {
29
+ "type": "number"
30
+ }
31
+ },
32
+ "max_values": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "number"
36
+ }
37
+ },
38
+ "no_data": {
39
+ "type": "boolean"
40
+ }
41
+ },
42
+ "required": [
43
+ "min_values",
44
+ "max_values",
45
+ "no_data"
46
+ ],
47
+ "additionalProperties": false
48
+ }
49
+ }
@@ -0,0 +1,34 @@
1
+ from pathlib import Path
2
+ from opengeodeweb_microservice.schemas import Route, load_schema
3
+ from typing import List
4
+ from dataclasses_json import DataClassJsonMixin
5
+ from opengeodeweb_microservice.schemas import print_dataclass
6
+ from dataclasses import dataclass
7
+
8
+
9
+ @dataclass
10
+ class CellAttributeRange(DataClassJsonMixin):
11
+ def __post_init__(self) -> None:
12
+ print_dataclass(self)
13
+
14
+ attribute_name: str
15
+ id: str
16
+
17
+
18
+ @dataclass
19
+ class CellAttributeRangeResponse(DataClassJsonMixin):
20
+ def __post_init__(self) -> None:
21
+ print_dataclass(self)
22
+
23
+ max_values: List[float]
24
+ min_values: List[float]
25
+ no_data: bool
26
+
27
+
28
+ cell_attribute_range_route = Route(
29
+ schema=load_schema(Path(__file__)),
30
+ params=CellAttributeRange,
31
+ response=CellAttributeRangeResponse,
32
+ )
33
+
34
+ __all__ = ["CellAttributeRange", "CellAttributeRangeResponse", "cell_attribute_range_route"]
@@ -32,27 +32,6 @@
32
32
  "nb_items": {
33
33
  "type": "integer"
34
34
  },
35
- "min_value": {
36
- "type": "number"
37
- },
38
- "max_value": {
39
- "type": "number"
40
- },
41
- "min_values": {
42
- "type": "array",
43
- "items": {
44
- "type": "number"
45
- }
46
- },
47
- "max_values": {
48
- "type": "array",
49
- "items": {
50
- "type": "number"
51
- }
52
- },
53
- "no_data": {
54
- "type": "boolean"
55
- },
56
35
  "time_steps": {
57
36
  "type": "array",
58
37
  "items": {
@@ -64,11 +43,6 @@
64
43
  "attribute_name",
65
44
  "attribute_id",
66
45
  "nb_items",
67
- "min_value",
68
- "max_value",
69
- "min_values",
70
- "max_values",
71
- "no_data",
72
46
  "time_steps"
73
47
  ],
74
48
  "additionalProperties": false
@@ -21,12 +21,7 @@ class Attribute(DataClassJsonMixin):
21
21
 
22
22
  attribute_id: str
23
23
  attribute_name: str
24
- max_value: float
25
- max_values: List[float]
26
- min_value: float
27
- min_values: List[float]
28
24
  nb_items: int
29
- no_data: bool
30
25
  time_steps: List[float]
31
26
 
32
27