OpenGeodeWeb-Back 6.11.0__tar.gz → 6.12.0rc1__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 (114) hide show
  1. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/PKG-INFO +4 -4
  2. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/pyproject.toml +1 -1
  3. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/requirements.txt +3 -3
  4. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/OpenGeodeWeb_Back.egg-info/PKG-INFO +4 -4
  5. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +1 -0
  6. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/OpenGeodeWeb_Back.egg-info/requires.txt +3 -3
  7. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/__init__.py +2 -0
  8. opengeodeweb_back-6.12.0rc1/src/opengeodeweb_back/geode_objects/geode_horizon_stack3d.py +103 -0
  9. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/blueprint_routes.py +1 -1
  10. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/create/blueprint_create.py +3 -9
  11. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/utils_functions.py +55 -38
  12. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/tests/test_utils_functions.py +6 -10
  13. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/LICENSE +0 -0
  14. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/README.md +0 -0
  15. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/setup.cfg +0 -0
  16. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  17. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
  18. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  19. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/__init__.py +0 -0
  20. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/app.py +0 -0
  21. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/app_config.py +0 -0
  22. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_functions.py +0 -0
  23. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_brep.py +0 -0
  24. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +0 -0
  25. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
  26. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
  27. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
  28. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
  29. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
  30. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
  31. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
  32. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
  33. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
  34. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
  35. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
  36. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_model.py +0 -0
  37. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
  38. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
  39. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
  40. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
  41. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
  42. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
  43. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
  44. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
  45. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
  46. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
  47. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_section.py +0 -0
  48. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
  49. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +0 -0
  50. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
  51. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
  52. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
  53. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
  54. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
  55. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
  56. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/py.typed +0 -0
  57. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -0
  58. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.json +0 -0
  59. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/create/schemas/edged_curve.py +0 -0
  60. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/create/schemas/point_set.json +0 -0
  61. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/create/schemas/point_set.py +0 -0
  62. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.json +0 -0
  63. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/create/schemas/polygonal_surface.py +0 -0
  64. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/__init__.py +0 -0
  65. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  66. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
  67. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  68. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
  69. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
  70. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -0
  71. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
  72. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -0
  73. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
  74. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
  75. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
  76. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +0 -0
  77. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  78. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
  79. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  80. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
  81. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
  82. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
  83. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
  84. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
  85. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  86. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/missing_files.py +0 -0
  87. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.json +0 -0
  88. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/model_component_edge_attribute_names.py +0 -0
  89. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.json +0 -0
  90. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/model_component_polygon_attribute_names.py +0 -0
  91. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.json +0 -0
  92. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/model_component_polyhedron_attribute_names.py +0 -0
  93. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.json +0 -0
  94. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/model_component_vertex_attribute_names.py +0 -0
  95. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  96. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
  97. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  98. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -0
  99. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  100. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -0
  101. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  102. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
  103. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  104. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
  105. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  106. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
  107. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/validate.json +0 -0
  108. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/validate.py +0 -0
  109. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  110. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -0
  111. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/src/opengeodeweb_back/test_utils.py +0 -0
  112. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/tests/test_create_routes.py +0 -0
  113. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/tests/test_geode_functions.py +0 -0
  114. {opengeodeweb_back-6.11.0 → opengeodeweb_back-6.12.0rc1}/tests/test_routes.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.11.0
3
+ Version: 6.12.0rc1
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
@@ -21,14 +21,14 @@ Requires-Dist: geode-viewables==3.4.0
21
21
  Requires-Dist: itsdangerous>=2
22
22
  Requires-Dist: jinja2>=3
23
23
  Requires-Dist: markupsafe>=3
24
- Requires-Dist: opengeode-core==17.3.7
25
- Requires-Dist: opengeode-geosciences==9.6.0
24
+ Requires-Dist: opengeode-core==17.4.4
25
+ Requires-Dist: opengeode-geosciences==9.6.1
26
26
  Requires-Dist: opengeode-geosciencesio==5.9.0
27
27
  Requires-Dist: opengeode-inspector==6.11.6
28
28
  Requires-Dist: opengeode-inspector-geosciences==1.1.0
29
29
  Requires-Dist: opengeode-io==7.7.0
30
30
  Requires-Dist: werkzeug==3.1.8
31
- Requires-Dist: opengeodeweb-microservice==1.*,>=1.1.4
31
+ Requires-Dist: opengeodeweb-microservice==1.*,>=1.2.0rc1
32
32
  Dynamic: license-file
33
33
 
34
34
  <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.11.0"
7
+ version = "6.12.0-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"
@@ -31,7 +31,7 @@ markupsafe>=3
31
31
  # flask
32
32
  # jinja2
33
33
  # werkzeug
34
- opengeode-core==17.3.7
34
+ opengeode-core==17.4.4
35
35
  # via
36
36
  # -r requirements.in
37
37
  # geode-common
@@ -41,7 +41,7 @@ opengeode-core==17.3.7
41
41
  # opengeode-inspector
42
42
  # opengeode-inspector-geosciences
43
43
  # opengeode-io
44
- opengeode-geosciences==9.6.0
44
+ opengeode-geosciences==9.6.1
45
45
  # via
46
46
  # -r requirements.in
47
47
  # geode-viewables
@@ -66,4 +66,4 @@ werkzeug==3.1.8
66
66
  # flask
67
67
  # flask-cors
68
68
 
69
- opengeodeweb-microservice==1.*,>=1.1.4
69
+ opengeodeweb-microservice==1.*,>=1.2.0rc1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.11.0
3
+ Version: 6.12.0rc1
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
@@ -21,14 +21,14 @@ Requires-Dist: geode-viewables==3.4.0
21
21
  Requires-Dist: itsdangerous>=2
22
22
  Requires-Dist: jinja2>=3
23
23
  Requires-Dist: markupsafe>=3
24
- Requires-Dist: opengeode-core==17.3.7
25
- Requires-Dist: opengeode-geosciences==9.6.0
24
+ Requires-Dist: opengeode-core==17.4.4
25
+ Requires-Dist: opengeode-geosciences==9.6.1
26
26
  Requires-Dist: opengeode-geosciencesio==5.9.0
27
27
  Requires-Dist: opengeode-inspector==6.11.6
28
28
  Requires-Dist: opengeode-inspector-geosciences==1.1.0
29
29
  Requires-Dist: opengeode-io==7.7.0
30
30
  Requires-Dist: werkzeug==3.1.8
31
- Requires-Dist: opengeodeweb-microservice==1.*,>=1.1.4
31
+ Requires-Dist: opengeodeweb-microservice==1.*,>=1.2.0rc1
32
32
  Dynamic: license-file
33
33
 
34
34
  <h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
@@ -23,6 +23,7 @@ src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py
23
23
  src/opengeodeweb_back/geode_objects/geode_graph.py
24
24
  src/opengeodeweb_back/geode_objects/geode_grid2d.py
25
25
  src/opengeodeweb_back/geode_objects/geode_grid3d.py
26
+ src/opengeodeweb_back/geode_objects/geode_horizon_stack3d.py
26
27
  src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py
27
28
  src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py
28
29
  src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py
@@ -8,11 +8,11 @@ geode-viewables==3.4.0
8
8
  itsdangerous>=2
9
9
  jinja2>=3
10
10
  markupsafe>=3
11
- opengeode-core==17.3.7
12
- opengeode-geosciences==9.6.0
11
+ opengeode-core==17.4.4
12
+ opengeode-geosciences==9.6.1
13
13
  opengeode-geosciencesio==5.9.0
14
14
  opengeode-inspector==6.11.6
15
15
  opengeode-inspector-geosciences==1.1.0
16
16
  opengeode-io==7.7.0
17
17
  werkzeug==3.1.8
18
- opengeodeweb-microservice==1.*,>=1.1.4
18
+ opengeodeweb-microservice==1.*,>=1.2.0rc1
@@ -31,6 +31,7 @@ from .geode_structural_model import GeodeStructuralModel
31
31
  from .geode_cross_section import GeodeCrossSection
32
32
  from .geode_implicit_structural_model import GeodeImplicitStructuralModel
33
33
  from .geode_implicit_cross_section import GeodeImplicitCrossSection
34
+ from .geode_horizon_stack3d import GeodeHorizonStack3D
34
35
 
35
36
  geode_objects: dict[GeodeObjectType, type[GeodeObject]] = {
36
37
  "VertexSet": GeodeVertexSet,
@@ -58,4 +59,5 @@ geode_objects: dict[GeodeObjectType, type[GeodeObject]] = {
58
59
  "CrossSection": GeodeCrossSection,
59
60
  "ImplicitStructuralModel": GeodeImplicitStructuralModel,
60
61
  "ImplicitCrossSection": GeodeImplicitCrossSection,
62
+ "HorizonStack3D": GeodeHorizonStack3D,
61
63
  }
@@ -0,0 +1,103 @@
1
+ # Standard library imports
2
+ from __future__ import annotations
3
+ from typing import Any
4
+
5
+ # Third party imports
6
+ import opengeode as og
7
+ import opengeode_geosciences as og_geosciences
8
+ from opengeodeweb_microservice.database.data_types import GeodeModelType
9
+
10
+ # Local application imports
11
+ from .geode_model import GeodeModel, ComponentRegistry
12
+
13
+
14
+ class GeodeHorizonStack3D(GeodeModel):
15
+ horizon_stack: og_geosciences.HorizonsStack3D
16
+
17
+ def __init__(
18
+ self, horizon_stack: og_geosciences.HorizonsStack3D | None = None
19
+ ) -> None:
20
+ self.horizon_stack = (
21
+ horizon_stack
22
+ if horizon_stack is not None
23
+ else og_geosciences.HorizonsStack3D()
24
+ )
25
+ super().__init__(self.horizon_stack)
26
+
27
+ @classmethod
28
+ def geode_object_type(cls) -> GeodeModelType:
29
+ return "HorizonStack3D"
30
+
31
+ def native_extension(self) -> str:
32
+ return self.horizon_stack.native_extension()
33
+
34
+ @classmethod
35
+ def is_3D(cls) -> bool:
36
+ return True
37
+
38
+ @classmethod
39
+ def is_viewable(cls) -> bool:
40
+ return False
41
+
42
+ def builder(self) -> og_geosciences.HorizonsStackBuilder3D:
43
+ return og_geosciences.HorizonsStackBuilder3D(self.horizon_stack)
44
+
45
+ @classmethod
46
+ def load(cls, filename: str) -> GeodeHorizonStack3D:
47
+ return GeodeHorizonStack3D(og_geosciences.load_horizons_stack3D(filename))
48
+
49
+ @classmethod
50
+ def additional_files(cls, filename: str) -> og.AdditionalFiles:
51
+ return og_geosciences.horizons_stack_additional_files3D(filename)
52
+
53
+ @classmethod
54
+ def is_loadable(cls, filename: str) -> og.Percentage:
55
+ return og_geosciences.is_horizons_stack_loadable3D(filename)
56
+
57
+ @classmethod
58
+ def input_extensions(cls) -> list[str]:
59
+ return og_geosciences.HorizonsStackInputFactory3D.list_creators()
60
+
61
+ @classmethod
62
+ def output_extensions(cls) -> list[str]:
63
+ return og_geosciences.HorizonsStackOutputFactory3D.list_creators()
64
+
65
+ @classmethod
66
+ def object_priority(cls, filename: str) -> int:
67
+ return og_geosciences.horizons_stack_object_priority3D(filename)
68
+
69
+ def is_saveable(self, filename: str) -> bool:
70
+ return og_geosciences.is_horizons_stack_saveable3D(self.horizon_stack, filename)
71
+
72
+ def save(self, filename: str) -> list[str]:
73
+ return og_geosciences.save_horizons_stack3D(self.horizon_stack, filename)
74
+
75
+ def save_viewable(self, filename_without_extension: str) -> str:
76
+ return ""
77
+
78
+ def save_light_viewable(self, filename_without_extension: str) -> str:
79
+ return ""
80
+
81
+ def mesh_components(self) -> ComponentRegistry:
82
+ return {}
83
+
84
+ def collection_components(self) -> ComponentRegistry:
85
+ return {}
86
+
87
+ def boundaries(self, id: og.uuid) -> list[og.ComponentID]:
88
+ return []
89
+
90
+ def internals(self, id: og.uuid) -> list[og.ComponentID]:
91
+ return []
92
+
93
+ def items(self, id: og.uuid) -> list[og.ComponentID]:
94
+ return []
95
+
96
+ def component(self, id: og.uuid) -> og.Component3D:
97
+ raise NotImplementedError("HorizonStack3D has no mesh components")
98
+
99
+ def inspect(self) -> Any:
100
+ return None
101
+
102
+ def validate(self) -> Any:
103
+ return None
@@ -226,7 +226,7 @@ def save_viewable_file() -> flask.Response:
226
226
  )
227
227
  params = schemas.SaveViewableFile.from_dict(json_data)
228
228
  return flask.make_response(
229
- utils_functions.generate_native_viewable_and_light_viewable_from_file(
229
+ utils_functions.generate_files_from_file(
230
230
  geode_object_type=geode_object_type(params.geode_object_type),
231
231
  input_file=params.filename,
232
232
  ),
@@ -35,9 +35,7 @@ def point_set() -> flask.Response:
35
35
  for point in params.points:
36
36
  builder.create_point(opengeode.Point3D([point.x, point.y, point.z]))
37
37
 
38
- result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
39
- pointset
40
- )
38
+ result = utils_functions.generate_files_from_object(pointset)
41
39
  return flask.make_response(result, 200)
42
40
 
43
41
 
@@ -61,9 +59,7 @@ def edged_curve() -> flask.Response:
61
59
  for edge in params.edges:
62
60
  builder.create_edge_with_vertices(edge[0], edge[1])
63
61
 
64
- result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
65
- edged_curve_obj
66
- )
62
+ result = utils_functions.generate_files_from_object(edged_curve_obj)
67
63
  return flask.make_response(result, 200)
68
64
 
69
65
 
@@ -89,7 +85,5 @@ def polygonal_surface() -> flask.Response:
89
85
 
90
86
  builder.compute_polygon_adjacencies()
91
87
 
92
- result = utils_functions.generate_native_viewable_and_light_viewable_from_object(
93
- polygonal_surface_obj
94
- )
88
+ result = utils_functions.generate_files_from_object(polygonal_surface_obj)
95
89
  return flask.make_response(result, 200)
@@ -198,20 +198,22 @@ def create_data_folder_from_id(data_id: str) -> str:
198
198
 
199
199
 
200
200
  def model_components(
201
- data_id: str, model: GeodeModel, viewable_file: str
201
+ data_id: str, model: GeodeModel, viewable_file: str | None
202
202
  ) -> dict[str, Any]:
203
- vtm_file_path = geode_functions.data_file_path(data_id, viewable_file)
204
- tree = ET.parse(vtm_file_path)
205
- root = tree.find("vtkMultiBlockDataSet")
206
- if root is None:
207
- flask.abort(500, "Failed to read viewable file")
208
- uuid_to_flat_index = {}
209
- current_index = 0
210
- assert root is not None
211
- for elem in root.iter():
212
- if "uuid" in elem.attrib and elem.tag == "DataSet":
213
- uuid_to_flat_index[elem.attrib["uuid"]] = current_index
214
- current_index += 1
203
+ uuid_to_flat_index: dict[str, int] = {}
204
+ if viewable_file:
205
+ vtm_file_path = geode_functions.data_file_path(data_id, viewable_file)
206
+ tree = ET.parse(vtm_file_path)
207
+ root = tree.find("vtkMultiBlockDataSet")
208
+ if root is None:
209
+ flask.abort(500, "Failed to read viewable file")
210
+ current_index = 0
211
+ assert root is not None
212
+ for elem in root.iter():
213
+ if "uuid" in elem.attrib and elem.tag == "DataSet":
214
+ uuid_to_flat_index[elem.attrib["uuid"]] = current_index
215
+ current_index += 1
216
+
215
217
  model_mesh_components = model.mesh_components()
216
218
  mesh_components = []
217
219
  for mesh_component, ids in model_mesh_components.items():
@@ -270,44 +272,59 @@ def save_all_viewables_and_return_info(
270
272
  data_path: str,
271
273
  ) -> dict[str, Any]:
272
274
  with ThreadPoolExecutor() as executor:
273
- native_files, viewable_path, light_path = executor.map(
274
- lambda args: args[0](args[1]),
275
- [
276
- (
277
- geode_object.save,
278
- os.path.join(
279
- data_path, "native." + geode_object.native_extension()
275
+ tasks: list[tuple[Callable[[str], Any], str]] = [
276
+ (
277
+ geode_object.save,
278
+ os.path.join(data_path, "native." + geode_object.native_extension()),
279
+ )
280
+ ]
281
+ if geode_object.is_viewable():
282
+ tasks.extend(
283
+ [
284
+ (geode_object.save_viewable, os.path.join(data_path, "viewable")),
285
+ (
286
+ geode_object.save_light_viewable,
287
+ os.path.join(data_path, "light_viewable"),
280
288
  ),
281
- ),
282
- (geode_object.save_viewable, os.path.join(data_path, "viewable")),
283
- (
284
- geode_object.save_light_viewable,
285
- os.path.join(data_path, "light_viewable"),
286
- ),
287
- ],
288
- )
289
- with open(light_path, "rb") as f:
290
- binary_light_viewable = f.read()
289
+ ]
290
+ )
291
+
292
+ results = list(executor.map(lambda args: args[0](args[1]), tasks))
293
+ native_files = results[0]
294
+ if geode_object.is_viewable():
295
+ viewable_path = results[1]
296
+ light_path = results[2]
297
+ with open(light_path, "rb") as f:
298
+ binary_light_viewable = f.read()
299
+ binary_light_viewable_str = binary_light_viewable.decode("utf-8")
300
+ data.viewable_file = os.path.basename(viewable_path)
301
+ data.light_viewable_file = os.path.basename(light_path)
302
+ else:
303
+ binary_light_viewable_str = None
304
+ data.viewable_file = None
305
+ data.light_viewable_file = None
306
+
291
307
  data.native_file = os.path.basename(native_files[0])
292
- data.viewable_file = os.path.basename(viewable_path)
293
- data.light_viewable_file = os.path.basename(light_path)
294
308
 
295
309
  assert data.native_file is not None
296
- assert data.viewable_file is not None
297
- assert data.light_viewable_file is not None
310
+ if geode_object.is_viewable():
311
+ assert data.viewable_file is not None
312
+ assert data.light_viewable_file is not None
298
313
  name = geode_object.identifier.name()
299
314
  if not name:
300
315
  flask.abort(400, "Geode object has no name defined.")
301
316
 
302
317
  response: dict[str, Any] = {
303
318
  "native_file": data.native_file,
304
- "viewable_file": data.viewable_file,
305
319
  "id": data.id,
306
320
  "name": name,
307
321
  "viewer_type": data.viewer_object,
308
- "binary_light_viewable": binary_light_viewable.decode("utf-8"),
322
+ "is_viewable": geode_object.is_viewable(),
309
323
  "geode_object_type": data.geode_object,
310
324
  }
325
+ if geode_object.is_viewable():
326
+ response["viewable_file"] = data.viewable_file
327
+ response["binary_light_viewable"] = binary_light_viewable_str
311
328
  if isinstance(geode_object, GeodeVertexSet):
312
329
  response["nb_vertices"] = geode_object.vertex_set.nb_vertices()
313
330
  if isinstance(geode_object, GeodeModel):
@@ -315,7 +332,7 @@ def save_all_viewables_and_return_info(
315
332
  return response
316
333
 
317
334
 
318
- def generate_native_viewable_and_light_viewable_from_object(
335
+ def generate_files_from_object(
319
336
  geode_object: GeodeObject,
320
337
  ) -> dict[str, Any]:
321
338
  data = Data.create(
@@ -327,7 +344,7 @@ def generate_native_viewable_and_light_viewable_from_object(
327
344
  return save_all_viewables_and_return_info(geode_object, data, data_path)
328
345
 
329
346
 
330
- def generate_native_viewable_and_light_viewable_from_file(
347
+ def generate_files_from_file(
331
348
  geode_object_type: GeodeObjectType, input_file: str
332
349
  ) -> dict[str, Any]:
333
350
  generic_geode_object = geode_objects[geode_object_type]
@@ -162,18 +162,14 @@ def test_save_all_viewables_commits_to_db(client: FlaskClient) -> None:
162
162
  assert db_entry_before.native_file == result["native_file"]
163
163
 
164
164
 
165
- def test_generate_native_viewable_and_light_viewable_from_object(
165
+ def test_generate_files_from_object(
166
166
  client: FlaskClient,
167
167
  ) -> None:
168
168
  app = client.application
169
169
  with app.app_context():
170
170
  geode_object = GeodeBRep.load(os.path.join(data_dir, "test.og_brep"))
171
171
 
172
- result = (
173
- utils_functions.generate_native_viewable_and_light_viewable_from_object(
174
- geode_object
175
- )
176
- )
172
+ result = utils_functions.generate_files_from_object(geode_object)
177
173
 
178
174
  assert isinstance(result, dict)
179
175
  assert isinstance(result["native_file"], str)
@@ -197,12 +193,12 @@ def test_generate_native_viewable_and_light_viewable_from_object(
197
193
  assert os.path.exists(os.path.join(data_path, data.light_viewable_file))
198
194
 
199
195
 
200
- def test_generate_native_viewable_and_light_viewable_from_file(
196
+ def test_generate_files_from_file(
201
197
  client: FlaskClient,
202
198
  ) -> None:
203
199
  app = client.application
204
200
  with app.app_context():
205
- result = utils_functions.generate_native_viewable_and_light_viewable_from_file(
201
+ result = utils_functions.generate_files_from_file(
206
202
  GeodeBRep.geode_object_type(), "test.og_brep"
207
203
  )
208
204
 
@@ -218,12 +214,12 @@ def test_generate_native_viewable_and_light_viewable_from_file(
218
214
  assert isinstance(result["binary_light_viewable"], str)
219
215
 
220
216
 
221
- def test_generate_native_viewable_and_light_viewable_from_file_with_multi_dots(
217
+ def test_generate_files_from_file_with_multi_dots(
222
218
  client: FlaskClient,
223
219
  ) -> None:
224
220
  app = client.application
225
221
  with app.app_context():
226
- result = utils_functions.generate_native_viewable_and_light_viewable_from_file(
222
+ result = utils_functions.generate_files_from_file(
227
223
  GeodeBRep.geode_object_type(), "cube.test.og_brep"
228
224
  )
229
225
  assert result["name"] == "cube.test"