OpenGeodeWeb-Back 6.16.0rc1__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.
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/PKG-INFO +1 -1
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/pyproject.toml +1 -1
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/requirements.txt +1 -1
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/PKG-INFO +1 -1
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +18 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/blueprint_routes.py +197 -23
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/__init__.py +9 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/cell_attribute_range.json +49 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/cell_attribute_range.py +34 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/edge_attribute_range.json +49 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/edge_attribute_range.py +34 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_range.json +59 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_range.py +35 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_range.json +59 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_range.py +35 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_range.json +59 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_range.py +35 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_range.json +59 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_range.py +35 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/polygon_attribute_range.json +49 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/polygon_attribute_range.py +34 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_range.json +49 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_range.py +34 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -26
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -5
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/vertex_attribute_range.json +49 -0
- opengeodeweb_back-6.16.1/src/opengeodeweb_back/routes/schemas/vertex_attribute_range.py +34 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/tests/test_routes.py +74 -39
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/LICENSE +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/README.md +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/setup.cfg +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/__init__.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/app.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/app_config.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_functions.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_brep.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_horizon_stack3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_model.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_section.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/py.typed +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/__init__.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/__init__.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/blueprint_create.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/point_set.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/point_set.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/apply_time_series.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/apply_time_series.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/data_missing_files.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/data_missing_files.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/time_series_allowed_objects.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/time_series_allowed_objects.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/time_series_missing_files.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/time_series_missing_files.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/validate.json +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/routes/schemas/validate.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/test_utils.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/typed_route.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/opengeodeweb_back/utils_functions.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/tests/test_create_routes.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/tests/test_events.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/tests/test_geode_functions.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/tests/test_typed_routes.py +0 -0
- {opengeodeweb_back-6.16.0rc1 → 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.
|
|
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.
|
|
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"
|
{opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OpenGeodeWeb-Back
|
|
3
|
-
Version: 6.16.
|
|
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
|
{opengeodeweb_back-6.16.0rc1 → opengeodeweb_back-6.16.1}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt
RENAMED
|
@@ -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
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
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 |
|
|
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 |
|
|
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
|
|
@@ -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
|