OpenGeodeWeb-Back 6.14.1rc1__tar.gz → 6.14.2rc1__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.14.1rc1 → opengeodeweb_back-6.14.2rc1}/PKG-INFO +5 -3
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/pyproject.toml +1 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/requirements.txt +6 -2
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/OpenGeodeWeb_Back.egg-info/PKG-INFO +5 -3
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +2 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/OpenGeodeWeb_Back.egg-info/requires.txt +4 -2
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/app.py +57 -43
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/app_config.py +10 -8
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_functions.py +24 -16
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/__init__.py +25 -20
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_brep.py +46 -17
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +29 -16
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +32 -11
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +32 -11
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_graph.py +28 -7
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +13 -8
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +13 -8
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_horizon_stack3d.py +43 -19
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +22 -8
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +23 -9
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +23 -9
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +22 -2
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +22 -2
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_mesh.py +7 -3
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_model.py +14 -6
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_object.py +14 -11
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +32 -11
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +32 -11
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +21 -5
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +21 -5
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +21 -5
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +34 -13
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +34 -13
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +27 -10
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +27 -10
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_section.py +46 -19
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +17 -4
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +29 -16
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +18 -7
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +18 -7
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +21 -5
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +22 -8
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +22 -8
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +30 -10
- opengeodeweb_back-6.14.2rc1/src/opengeodeweb_back/routes/__init__.py +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/blueprint_routes.py +154 -156
- opengeodeweb_back-6.14.2rc1/src/opengeodeweb_back/routes/create/__init__.py +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/create/blueprint_create.py +5 -10
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/create/schemas/point_set.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/allowed_files.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/export_project.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/import_project.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/kill.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/missing_files.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/ping.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/upload_file.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/validate.py +2 -1
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +2 -1
- opengeodeweb_back-6.14.2rc1/src/opengeodeweb_back/test_utils.py +75 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/typed_route.py +37 -19
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/utils_functions.py +101 -109
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/tests/test_create_routes.py +8 -7
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/tests/test_geode_functions.py +16 -23
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/tests/test_routes.py +127 -174
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/tests/test_typed_routes.py +17 -12
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/tests/test_utils_functions.py +63 -53
- opengeodeweb_back-6.14.1rc1/src/opengeodeweb_back/test_utils.py +0 -49
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/LICENSE +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/README.md +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/setup.cfg +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/__init__.py +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/py.typed +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/create/schemas/point_set.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/__init__.py +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/validate.json +0 -0
- {opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OpenGeodeWeb-Back
|
|
3
|
-
Version: 6.14.
|
|
3
|
+
Version: 6.14.2rc1
|
|
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
|
|
@@ -14,6 +14,7 @@ License-File: LICENSE
|
|
|
14
14
|
Requires-Dist: asgiref==3.*
|
|
15
15
|
Requires-Dist: blinker==1.*
|
|
16
16
|
Requires-Dist: click==8.*
|
|
17
|
+
Requires-Dist: defusedxml==0.7.1
|
|
17
18
|
Requires-Dist: flask[async]==3.*
|
|
18
19
|
Requires-Dist: flask-cors==6.0.2
|
|
19
20
|
Requires-Dist: geode-common==33.26.6
|
|
@@ -21,14 +22,15 @@ Requires-Dist: geode-viewables==3.5.2
|
|
|
21
22
|
Requires-Dist: itsdangerous==2.*
|
|
22
23
|
Requires-Dist: jinja2==3.*
|
|
23
24
|
Requires-Dist: markupsafe==3.*
|
|
24
|
-
Requires-Dist: opengeode-core==18.4.
|
|
25
|
+
Requires-Dist: opengeode-core==18.4.1
|
|
25
26
|
Requires-Dist: opengeode-geosciences==9.8.1
|
|
26
27
|
Requires-Dist: opengeode-geosciencesio==5.11.1
|
|
27
28
|
Requires-Dist: opengeode-inspector==6.12.1
|
|
28
29
|
Requires-Dist: opengeode-inspector-geosciences==1.2.1
|
|
29
30
|
Requires-Dist: opengeode-io==7.10.0
|
|
31
|
+
Requires-Dist: types-defusedxml==0.7.0.20260504
|
|
30
32
|
Requires-Dist: werkzeug==3.1.8
|
|
31
|
-
Requires-Dist: opengeodeweb-microservice==1.*,>=1.3.
|
|
33
|
+
Requires-Dist: opengeodeweb-microservice==1.*,>=1.3.2rc1
|
|
32
34
|
Dynamic: license-file
|
|
33
35
|
|
|
34
36
|
<h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "OpenGeodeWeb-Back"
|
|
7
|
-
version = "6.14.
|
|
7
|
+
version = "6.14.2-rc.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"
|
|
@@ -10,6 +10,8 @@ blinker==1.*
|
|
|
10
10
|
# via flask
|
|
11
11
|
click==8.*
|
|
12
12
|
# via flask
|
|
13
|
+
defusedxml==0.7.1
|
|
14
|
+
# via -r requirements.in
|
|
13
15
|
flask[async]==3.*
|
|
14
16
|
# via
|
|
15
17
|
# -r requirements.in
|
|
@@ -31,7 +33,7 @@ markupsafe==3.*
|
|
|
31
33
|
# flask
|
|
32
34
|
# jinja2
|
|
33
35
|
# werkzeug
|
|
34
|
-
opengeode-core==18.4.
|
|
36
|
+
opengeode-core==18.4.1
|
|
35
37
|
# via
|
|
36
38
|
# -r requirements.in
|
|
37
39
|
# geode-common
|
|
@@ -60,10 +62,12 @@ opengeode-io==7.10.0
|
|
|
60
62
|
# -r requirements.in
|
|
61
63
|
# geode-viewables
|
|
62
64
|
# opengeode-geosciencesio
|
|
65
|
+
types-defusedxml==0.7.0.20260504
|
|
66
|
+
# via -r requirements.in
|
|
63
67
|
werkzeug==3.1.8
|
|
64
68
|
# via
|
|
65
69
|
# -r requirements.in
|
|
66
70
|
# flask
|
|
67
71
|
# flask-cors
|
|
68
72
|
|
|
69
|
-
opengeodeweb-microservice==1.*,>=1.3.
|
|
73
|
+
opengeodeweb-microservice==1.*,>=1.3.2rc1
|
{opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/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.14.
|
|
3
|
+
Version: 6.14.2rc1
|
|
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
|
|
@@ -14,6 +14,7 @@ License-File: LICENSE
|
|
|
14
14
|
Requires-Dist: asgiref==3.*
|
|
15
15
|
Requires-Dist: blinker==1.*
|
|
16
16
|
Requires-Dist: click==8.*
|
|
17
|
+
Requires-Dist: defusedxml==0.7.1
|
|
17
18
|
Requires-Dist: flask[async]==3.*
|
|
18
19
|
Requires-Dist: flask-cors==6.0.2
|
|
19
20
|
Requires-Dist: geode-common==33.26.6
|
|
@@ -21,14 +22,15 @@ Requires-Dist: geode-viewables==3.5.2
|
|
|
21
22
|
Requires-Dist: itsdangerous==2.*
|
|
22
23
|
Requires-Dist: jinja2==3.*
|
|
23
24
|
Requires-Dist: markupsafe==3.*
|
|
24
|
-
Requires-Dist: opengeode-core==18.4.
|
|
25
|
+
Requires-Dist: opengeode-core==18.4.1
|
|
25
26
|
Requires-Dist: opengeode-geosciences==9.8.1
|
|
26
27
|
Requires-Dist: opengeode-geosciencesio==5.11.1
|
|
27
28
|
Requires-Dist: opengeode-inspector==6.12.1
|
|
28
29
|
Requires-Dist: opengeode-inspector-geosciences==1.2.1
|
|
29
30
|
Requires-Dist: opengeode-io==7.10.0
|
|
31
|
+
Requires-Dist: types-defusedxml==0.7.0.20260504
|
|
30
32
|
Requires-Dist: werkzeug==3.1.8
|
|
31
|
-
Requires-Dist: opengeodeweb-microservice==1.*,>=1.3.
|
|
33
|
+
Requires-Dist: opengeodeweb-microservice==1.*,>=1.3.2rc1
|
|
32
34
|
Dynamic: license-file
|
|
33
35
|
|
|
34
36
|
<h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
|
|
@@ -51,7 +51,9 @@ src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py
|
|
|
51
51
|
src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py
|
|
52
52
|
src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py
|
|
53
53
|
src/opengeodeweb_back/geode_objects/geode_vertex_set.py
|
|
54
|
+
src/opengeodeweb_back/routes/__init__.py
|
|
54
55
|
src/opengeodeweb_back/routes/blueprint_routes.py
|
|
56
|
+
src/opengeodeweb_back/routes/create/__init__.py
|
|
55
57
|
src/opengeodeweb_back/routes/create/blueprint_create.py
|
|
56
58
|
src/opengeodeweb_back/routes/create/schemas/__init__.py
|
|
57
59
|
src/opengeodeweb_back/routes/create/schemas/edged_curve.json
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
asgiref==3.*
|
|
2
2
|
blinker==1.*
|
|
3
3
|
click==8.*
|
|
4
|
+
defusedxml==0.7.1
|
|
4
5
|
flask[async]==3.*
|
|
5
6
|
flask-cors==6.0.2
|
|
6
7
|
geode-common==33.26.6
|
|
@@ -8,11 +9,12 @@ geode-viewables==3.5.2
|
|
|
8
9
|
itsdangerous==2.*
|
|
9
10
|
jinja2==3.*
|
|
10
11
|
markupsafe==3.*
|
|
11
|
-
opengeode-core==18.4.
|
|
12
|
+
opengeode-core==18.4.1
|
|
12
13
|
opengeode-geosciences==9.8.1
|
|
13
14
|
opengeode-geosciencesio==5.11.1
|
|
14
15
|
opengeode-inspector==6.12.1
|
|
15
16
|
opengeode-inspector-geosciences==1.2.1
|
|
16
17
|
opengeode-io==7.10.0
|
|
18
|
+
types-defusedxml==0.7.0.20260504
|
|
17
19
|
werkzeug==3.1.8
|
|
18
|
-
opengeodeweb-microservice==1.*,>=1.3.
|
|
20
|
+
opengeodeweb-microservice==1.*,>=1.3.2rc1
|
|
@@ -1,75 +1,82 @@
|
|
|
1
1
|
"""Packages"""
|
|
2
2
|
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
3
5
|
import argparse
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
import json
|
|
7
|
+
import logging
|
|
8
|
+
import queue
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import TYPE_CHECKING, Any
|
|
11
|
+
|
|
7
12
|
import flask
|
|
8
|
-
import flask_cors # type: ignore
|
|
13
|
+
import flask_cors # type: ignore[import-untyped]
|
|
9
14
|
from flask import Flask, Response
|
|
10
15
|
from flask_cors import cross_origin
|
|
16
|
+
from opengeodeweb_microservice.database import connection
|
|
11
17
|
from werkzeug.exceptions import HTTPException
|
|
12
|
-
|
|
18
|
+
|
|
19
|
+
from opengeodeweb_back import app_config, utils_functions
|
|
13
20
|
from opengeodeweb_back.routes import blueprint_routes
|
|
14
21
|
from opengeodeweb_back.routes.create import blueprint_create
|
|
15
|
-
from opengeodeweb_microservice.database import connection
|
|
16
22
|
|
|
17
|
-
|
|
18
|
-
import
|
|
19
|
-
import json
|
|
20
|
-
from typing import Any, Dict, Generator, Tuple
|
|
23
|
+
if TYPE_CHECKING:
|
|
24
|
+
from collections.abc import Generator
|
|
21
25
|
|
|
26
|
+
logger = logging.getLogger(__name__)
|
|
22
27
|
|
|
23
|
-
def create_app(name: str) -> flask.Flask:
|
|
24
|
-
app = flask.Flask(name)
|
|
25
28
|
|
|
29
|
+
def _register_request_hooks(app: flask.Flask) -> None:
|
|
26
30
|
@app.before_request
|
|
27
31
|
def before_request() -> flask.Response | None:
|
|
28
32
|
if flask.request.method == "OPTIONS":
|
|
29
33
|
response = flask.make_response()
|
|
30
|
-
response.headers["Access-Control-Allow-Methods"] =
|
|
31
|
-
"GET,POST,PUT,DELETE,OPTIONS"
|
|
32
|
-
)
|
|
34
|
+
response.headers["Access-Control-Allow-Methods"] = "GET,POST,PUT,DELETE,OPTIONS"
|
|
33
35
|
return response
|
|
34
36
|
utils_functions.before_request(flask.current_app)
|
|
35
37
|
return None
|
|
36
38
|
|
|
39
|
+
@app.teardown_request
|
|
40
|
+
def teardown_request(exception: BaseException | None) -> None:
|
|
41
|
+
utils_functions.teardown_request(flask.current_app, exception)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _register_event_stream(app: flask.Flask) -> None:
|
|
37
45
|
def wants_event_stream() -> bool:
|
|
38
46
|
accept = flask.request.headers.get("Accept", "")
|
|
39
47
|
return "text/event-stream" in accept
|
|
40
48
|
|
|
41
49
|
_event_queue: queue.Queue[tuple[str, dict[str, Any]]] = queue.Queue()
|
|
42
|
-
_lock = threading.Lock()
|
|
43
50
|
|
|
44
51
|
def publish_event(event: str, data: dict[str, Any]) -> None:
|
|
45
52
|
_event_queue.put((event, data))
|
|
46
53
|
|
|
47
|
-
def stream_events() -> Generator[str
|
|
54
|
+
def stream_events() -> Generator[str]:
|
|
48
55
|
while True:
|
|
49
56
|
event, data = _event_queue.get()
|
|
50
57
|
yield f"event: {event}\ndata: {json.dumps(data)}\n\n"
|
|
51
58
|
|
|
52
59
|
@app.after_request
|
|
53
60
|
def after_request(response: flask.Response) -> flask.Response:
|
|
54
|
-
endpoint = (
|
|
55
|
-
|
|
56
|
-
)
|
|
57
|
-
if endpoint == "events" or endpoint == None:
|
|
61
|
+
endpoint = flask.request.endpoint.replace(".", "/") if flask.request.endpoint else None
|
|
62
|
+
if endpoint in {"events", None}:
|
|
58
63
|
return response
|
|
59
64
|
|
|
60
65
|
if wants_event_stream():
|
|
61
66
|
payload: dict[str, Any]
|
|
62
67
|
try:
|
|
63
68
|
payload = response.get_json()
|
|
64
|
-
except
|
|
69
|
+
except ValueError:
|
|
65
70
|
payload = {"status": response.status_code}
|
|
66
71
|
publish_event(endpoint, payload)
|
|
67
72
|
return response
|
|
68
73
|
|
|
69
|
-
@app.
|
|
70
|
-
def
|
|
71
|
-
|
|
74
|
+
@app.route("/events")
|
|
75
|
+
def events() -> flask.Response:
|
|
76
|
+
return flask.Response(stream_events(), mimetype="text/event-stream")
|
|
72
77
|
|
|
78
|
+
|
|
79
|
+
def _register_error_handlers(app: flask.Flask) -> None:
|
|
73
80
|
@app.errorhandler(HTTPException)
|
|
74
81
|
def errorhandler(exception: HTTPException) -> tuple[dict[str, Any], int] | Response:
|
|
75
82
|
return utils_functions.handle_exception(exception)
|
|
@@ -78,16 +85,14 @@ def create_app(name: str) -> flask.Flask:
|
|
|
78
85
|
def handle_generic_exception(exception: Exception) -> Response:
|
|
79
86
|
return utils_functions.handle_unexpected_exception(exception)
|
|
80
87
|
|
|
81
|
-
@app.route("/events")
|
|
82
|
-
def events() -> flask.Response:
|
|
83
|
-
return flask.Response(stream_events(), mimetype="text/event-stream")
|
|
84
88
|
|
|
89
|
+
def _register_base_routes(app: flask.Flask) -> None:
|
|
85
90
|
@app.route(
|
|
86
91
|
"/error",
|
|
87
92
|
methods=["POST"],
|
|
88
93
|
)
|
|
89
94
|
def return_error() -> Response:
|
|
90
|
-
flask.abort(500,
|
|
95
|
+
flask.abort(500, "Test")
|
|
91
96
|
return flask.make_response({}, 500)
|
|
92
97
|
|
|
93
98
|
@app.route(
|
|
@@ -104,6 +109,13 @@ def create_app(name: str) -> flask.Flask:
|
|
|
104
109
|
def root() -> Response:
|
|
105
110
|
return flask.make_response({}, 200)
|
|
106
111
|
|
|
112
|
+
|
|
113
|
+
def create_app(name: str) -> flask.Flask:
|
|
114
|
+
app = flask.Flask(name)
|
|
115
|
+
_register_request_hooks(app)
|
|
116
|
+
_register_event_stream(app)
|
|
117
|
+
_register_error_handlers(app)
|
|
118
|
+
_register_base_routes(app)
|
|
107
119
|
return app
|
|
108
120
|
|
|
109
121
|
|
|
@@ -127,8 +139,9 @@ def run_server(app: Flask) -> None:
|
|
|
127
139
|
pre_args, _ = pre_parser.parse_known_args()
|
|
128
140
|
|
|
129
141
|
if pre_args.project_folder_path is None:
|
|
130
|
-
|
|
131
|
-
|
|
142
|
+
msg = "project_folder_path must be provided"
|
|
143
|
+
raise ValueError(msg)
|
|
144
|
+
project_folder_path = str(Path(pre_args.project_folder_path).resolve())
|
|
132
145
|
|
|
133
146
|
if pre_args.debug:
|
|
134
147
|
app.config.from_object(app_config.DevConfig(project_folder_path))
|
|
@@ -138,9 +151,7 @@ def run_server(app: Flask) -> None:
|
|
|
138
151
|
parser = argparse.ArgumentParser(
|
|
139
152
|
prog="OpenGeodeWeb-Back", description="Backend server for OpenGeodeWeb"
|
|
140
153
|
)
|
|
141
|
-
parser.add_argument(
|
|
142
|
-
"--host", default=app.config.get("HOST"), type=str, help="Host to run on"
|
|
143
|
-
)
|
|
154
|
+
parser.add_argument("--host", default=app.config.get("HOST"), type=str, help="Host to run on")
|
|
144
155
|
parser.add_argument(
|
|
145
156
|
"-p",
|
|
146
157
|
"--port",
|
|
@@ -192,9 +203,13 @@ def run_server(app: Flask) -> None:
|
|
|
192
203
|
)
|
|
193
204
|
args = parser.parse_args()
|
|
194
205
|
|
|
195
|
-
args.project_folder_path =
|
|
206
|
+
args.project_folder_path = str(Path(args.project_folder_path).resolve())
|
|
196
207
|
|
|
197
|
-
|
|
208
|
+
logging.basicConfig(
|
|
209
|
+
level=logging.DEBUG if args.debug else logging.INFO,
|
|
210
|
+
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
|
|
211
|
+
)
|
|
212
|
+
logger.info("Arguments: %s", args)
|
|
198
213
|
|
|
199
214
|
app.config.update(
|
|
200
215
|
HOST=args.host,
|
|
@@ -209,16 +224,15 @@ def run_server(app: Flask) -> None:
|
|
|
209
224
|
|
|
210
225
|
db_filename = app.config.get("DATABASE_FILENAME")
|
|
211
226
|
if not isinstance(db_filename, str):
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
db_path
|
|
216
|
-
os.makedirs(os.path.dirname(db_path), exist_ok=True)
|
|
227
|
+
msg = f"DATABASE_FILENAME config must be a string, got {db_filename!r}"
|
|
228
|
+
raise TypeError(msg)
|
|
229
|
+
db_path = Path(str(app.config.get("DATA_FOLDER_PATH"))) / db_filename
|
|
230
|
+
db_path.parent.mkdir(parents=True, exist_ok=True)
|
|
217
231
|
app.config["SQLALCHEMY_DATABASE_URI"] = f"sqlite:///{db_path}"
|
|
218
232
|
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
|
|
219
233
|
|
|
220
234
|
connection.init_database(db_path)
|
|
221
|
-
|
|
235
|
+
logger.info("Database initialized at: %s", db_path)
|
|
222
236
|
|
|
223
237
|
flask_cors.CORS(app, origins=args.allowed_origins)
|
|
224
238
|
app.run(
|
|
@@ -233,7 +247,7 @@ def run_opengeodeweb_back() -> None:
|
|
|
233
247
|
app = create_app(__name__)
|
|
234
248
|
register_ogw_back_blueprints(app)
|
|
235
249
|
run_server(app)
|
|
236
|
-
|
|
250
|
+
logger.info("Server stopped")
|
|
237
251
|
|
|
238
252
|
|
|
239
253
|
# ''' Main '''
|
{opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/app_config.py
RENAMED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
# Standard library imports
|
|
2
|
-
import os
|
|
3
2
|
import time
|
|
3
|
+
from pathlib import Path
|
|
4
4
|
|
|
5
5
|
# Third party imports
|
|
6
|
+
from flask.helpers import get_debug_flag
|
|
7
|
+
|
|
6
8
|
# Local application imports
|
|
7
9
|
|
|
8
|
-
base_dir =
|
|
10
|
+
base_dir = Path(__file__).resolve().parent
|
|
9
11
|
|
|
10
12
|
|
|
11
|
-
class Config
|
|
12
|
-
FLASK_DEBUG =
|
|
13
|
+
class Config:
|
|
14
|
+
FLASK_DEBUG = get_debug_flag()
|
|
13
15
|
HOST = "localhost"
|
|
14
16
|
PORT = "5000"
|
|
15
17
|
CORS_HEADERS = "Content-Type"
|
|
@@ -18,11 +20,11 @@ class Config(object):
|
|
|
18
20
|
LAST_PING_TIME = time.time()
|
|
19
21
|
DATABASE_FILENAME = "project.db"
|
|
20
22
|
|
|
21
|
-
def __init__(self, project_folder_path: str):
|
|
23
|
+
def __init__(self, project_folder_path: str) -> None:
|
|
22
24
|
self.PROJECT_FOLDER_PATH = project_folder_path
|
|
23
|
-
self.DATA_FOLDER_PATH =
|
|
24
|
-
self.EXTENSIONS_FOLDER_PATH =
|
|
25
|
-
self.UPLOAD_FOLDER_PATH =
|
|
25
|
+
self.DATA_FOLDER_PATH = str(Path(project_folder_path) / "data")
|
|
26
|
+
self.EXTENSIONS_FOLDER_PATH = str(Path(project_folder_path) / "extensions")
|
|
27
|
+
self.UPLOAD_FOLDER_PATH = str(Path(project_folder_path) / "uploads")
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
class ProdConfig(Config):
|
{opengeodeweb_back-6.14.1rc1 → opengeodeweb_back-6.14.2rc1}/src/opengeodeweb_back/geode_functions.py
RENAMED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
# Standard library imports
|
|
2
|
-
import
|
|
4
|
+
import logging
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
3
7
|
|
|
4
8
|
# Third party imports
|
|
5
|
-
import werkzeug
|
|
6
9
|
import flask
|
|
10
|
+
import werkzeug
|
|
7
11
|
from opengeodeweb_microservice.database.data import Data
|
|
8
12
|
from opengeodeweb_microservice.database.data_types import (
|
|
9
13
|
GeodeObjectType,
|
|
@@ -12,15 +16,20 @@ from opengeodeweb_microservice.database.data_types import (
|
|
|
12
16
|
|
|
13
17
|
# Local application imports
|
|
14
18
|
from .geode_objects import geode_objects
|
|
15
|
-
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from .geode_objects.geode_object import GeodeObject
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
16
25
|
|
|
17
26
|
|
|
18
27
|
def data_file_path(data_id: str, filename: str | None = None) -> str:
|
|
19
28
|
data_folder_path = flask.current_app.config["DATA_FOLDER_PATH"]
|
|
20
|
-
data_path =
|
|
29
|
+
data_path = Path(data_folder_path) / data_id
|
|
21
30
|
if filename is not None:
|
|
22
|
-
return
|
|
23
|
-
return data_path
|
|
31
|
+
return str(data_path / filename)
|
|
32
|
+
return str(data_path)
|
|
24
33
|
|
|
25
34
|
|
|
26
35
|
def geode_object_from_string(value: str) -> type[GeodeObject]:
|
|
@@ -33,8 +42,11 @@ def load_geode_object(data_id: str) -> GeodeObject:
|
|
|
33
42
|
flask.abort(404, f"Data with id {data_id} not found")
|
|
34
43
|
|
|
35
44
|
file_absolute_path = data_file_path(data_id, data.native_file)
|
|
36
|
-
|
|
37
|
-
|
|
45
|
+
logger.debug(
|
|
46
|
+
"Loading file: %s (exists: %s)",
|
|
47
|
+
file_absolute_path,
|
|
48
|
+
Path(file_absolute_path).exists(),
|
|
49
|
+
)
|
|
38
50
|
return geode_object_from_string(data.geode_object).load(file_absolute_path)
|
|
39
51
|
|
|
40
52
|
|
|
@@ -48,7 +60,7 @@ def get_data_info(data_id: str) -> Data:
|
|
|
48
60
|
def upload_file_path(filename: str) -> str:
|
|
49
61
|
upload_folder = flask.current_app.config["UPLOAD_FOLDER_PATH"]
|
|
50
62
|
secure_filename = werkzeug.utils.secure_filename(filename)
|
|
51
|
-
return
|
|
63
|
+
return str((Path(upload_folder) / secure_filename).resolve())
|
|
52
64
|
|
|
53
65
|
|
|
54
66
|
def geode_object_output_extensions(
|
|
@@ -56,20 +68,16 @@ def geode_object_output_extensions(
|
|
|
56
68
|
) -> dict[GeodeObjectType, dict[str, bool]]:
|
|
57
69
|
results: dict[GeodeObjectType, dict[str, bool]] = {}
|
|
58
70
|
for mixin_geode_object in geode_objects[geode_object.geode_object_type()].__mro__:
|
|
59
|
-
output_extensions_method = getattr(
|
|
60
|
-
mixin_geode_object, "output_extensions", None
|
|
61
|
-
)
|
|
71
|
+
output_extensions_method = getattr(mixin_geode_object, "output_extensions", None)
|
|
62
72
|
if output_extensions_method is None:
|
|
63
73
|
continue
|
|
64
74
|
output_extensions = output_extensions_method.__func__(mixin_geode_object)
|
|
65
75
|
if output_extensions is None:
|
|
66
76
|
continue
|
|
67
77
|
object_output_extensions: dict[str, bool] = {}
|
|
68
|
-
is_saveable_method =
|
|
78
|
+
is_saveable_method = mixin_geode_object.is_saveable # type: ignore[attr-defined]
|
|
69
79
|
for output_extension in output_extensions:
|
|
70
|
-
bool_is_saveable = is_saveable_method(
|
|
71
|
-
geode_object, f"test.{output_extension}"
|
|
72
|
-
)
|
|
80
|
+
bool_is_saveable = is_saveable_method(geode_object, f"test.{output_extension}")
|
|
73
81
|
object_output_extensions[output_extension] = bool_is_saveable
|
|
74
82
|
if hasattr(mixin_geode_object, "geode_object_type"):
|
|
75
83
|
results[mixin_geode_object.geode_object_type()] = object_output_extensions
|
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
# Standard library imports
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
from opengeodeweb_microservice.database.data_types import GeodeObjectType
|
|
4
|
+
from typing import TYPE_CHECKING
|
|
6
5
|
|
|
7
|
-
#
|
|
8
|
-
from .geode_object import GeodeObject
|
|
6
|
+
# Third party imports
|
|
9
7
|
from .geode_brep import GeodeBRep
|
|
10
|
-
from .
|
|
8
|
+
from .geode_cross_section import GeodeCrossSection
|
|
9
|
+
from .geode_edged_curve2d import GeodeEdgedCurve2D
|
|
10
|
+
from .geode_edged_curve3d import GeodeEdgedCurve3D
|
|
11
11
|
from .geode_graph import GeodeGraph
|
|
12
|
+
from .geode_horizon_stack3d import GeodeHorizonStack3D
|
|
13
|
+
from .geode_hybrid_solid3d import GeodeHybridSolid3D
|
|
14
|
+
from .geode_implicit_cross_section import GeodeImplicitCrossSection
|
|
15
|
+
from .geode_implicit_structural_model import GeodeImplicitStructuralModel
|
|
16
|
+
from .geode_light_regular_grid2d import GeodeLightRegularGrid2D
|
|
17
|
+
from .geode_light_regular_grid3d import GeodeLightRegularGrid3D
|
|
18
|
+
|
|
19
|
+
# Local application imports
|
|
12
20
|
from .geode_point_set2d import GeodePointSet2D
|
|
13
21
|
from .geode_point_set3d import GeodePointSet3D
|
|
14
|
-
from .geode_edged_curve2d import GeodeEdgedCurve2D
|
|
15
|
-
from .geode_edged_curve3d import GeodeEdgedCurve3D
|
|
16
|
-
from .geode_raster_image2d import GeodeRasterImage2D
|
|
17
|
-
from .geode_raster_image3d import GeodeRasterImage3D
|
|
18
22
|
from .geode_polygonal_surface2d import GeodePolygonalSurface2D
|
|
19
23
|
from .geode_polygonal_surface3d import GeodePolygonalSurface3D
|
|
20
|
-
from .geode_triangulated_surface2d import GeodeTriangulatedSurface2D
|
|
21
|
-
from .geode_triangulated_surface3d import GeodeTriangulatedSurface3D
|
|
22
|
-
from .geode_regular_grid2d import GeodeRegularGrid2D
|
|
23
24
|
from .geode_polyhedral_solid3d import GeodePolyhedralSolid3D
|
|
24
|
-
from .
|
|
25
|
-
from .
|
|
25
|
+
from .geode_raster_image2d import GeodeRasterImage2D
|
|
26
|
+
from .geode_raster_image3d import GeodeRasterImage3D
|
|
27
|
+
from .geode_regular_grid2d import GeodeRegularGrid2D
|
|
26
28
|
from .geode_regular_grid3d import GeodeRegularGrid3D
|
|
27
|
-
from .geode_light_regular_grid2d import GeodeLightRegularGrid2D
|
|
28
|
-
from .geode_light_regular_grid3d import GeodeLightRegularGrid3D
|
|
29
29
|
from .geode_section import GeodeSection
|
|
30
30
|
from .geode_structural_model import GeodeStructuralModel
|
|
31
|
-
from .
|
|
32
|
-
from .
|
|
33
|
-
from .
|
|
34
|
-
from .
|
|
31
|
+
from .geode_tetrahedral_solid3d import GeodeTetrahedralSolid3D
|
|
32
|
+
from .geode_triangulated_surface2d import GeodeTriangulatedSurface2D
|
|
33
|
+
from .geode_triangulated_surface3d import GeodeTriangulatedSurface3D
|
|
34
|
+
from .geode_vertex_set import GeodeVertexSet
|
|
35
|
+
|
|
36
|
+
if TYPE_CHECKING:
|
|
37
|
+
from opengeodeweb_microservice.database.data_types import GeodeObjectType
|
|
38
|
+
|
|
39
|
+
from .geode_object import GeodeObject
|
|
35
40
|
|
|
36
41
|
geode_objects: dict[GeodeObjectType, type[GeodeObject]] = {
|
|
37
42
|
"VertexSet": GeodeVertexSet,
|