OpenGeodeWeb-Back 5.7.4rc1__tar.gz → 5.8.0__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 (40) hide show
  1. {opengeodeweb_back-5.7.4rc1/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-5.8.0}/PKG-INFO +15 -15
  2. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/README.md +1 -1
  3. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/pyproject.toml +1 -1
  4. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/requirements.txt +16 -17
  5. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +15 -15
  6. opengeodeweb_back-5.8.0/src/OpenGeodeWeb_Back.egg-info/requires.txt +28 -0
  7. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/geode_functions.py +6 -0
  8. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/geode_objects.py +22 -1
  9. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/blueprint_routes.py +13 -0
  10. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/tests/test_geode_functions.py +10 -1
  11. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/tests/test_routes.py +6 -2
  12. opengeodeweb_back-5.7.4rc1/src/OpenGeodeWeb_Back.egg-info/requires.txt +0 -28
  13. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/LICENSE +0 -0
  14. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/setup.cfg +0 -0
  15. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +0 -0
  16. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  17. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  18. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/__init__.py +0 -0
  19. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/app_config.py +0 -0
  20. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/models/blueprint_models.py +0 -0
  21. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/models/schemas/mesh_components.json +0 -0
  22. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/models/schemas/vtm_component_indices.json +0 -0
  23. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  24. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  25. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/create_point.json +0 -0
  26. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  27. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  28. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  29. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  30. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  31. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  32. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  33. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  34. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  35. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  36. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  37. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/test_utils.py +0 -0
  38. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/src/opengeodeweb_back/utils_functions.py +0 -0
  39. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/tests/test_models_routes.py +0 -0
  40. {opengeodeweb_back-5.7.4rc1 → opengeodeweb_back-5.8.0}/tests/test_utils_functions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 5.7.4rc1
3
+ Version: 5.8.0
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
@@ -15,28 +15,28 @@ Requires-Dist: asgiref==3.8.1
15
15
  Requires-Dist: attrs==25.3.0
16
16
  Requires-Dist: blinker==1.9.0
17
17
  Requires-Dist: click==8.1.8
18
- Requires-Dist: flask[async]==3.1.0
18
+ Requires-Dist: flask[async]==3.1.1
19
19
  Requires-Dist: flask-cors==5.0.1
20
- Requires-Dist: geode-background==9.2.4
21
- Requires-Dist: geode-common==33.8.1
22
- Requires-Dist: geode-conversion==6.2.13
23
- Requires-Dist: geode-explicit==6.1.39
24
- Requires-Dist: geode-implicit==3.7.10
25
- Requires-Dist: geode-numerics==6.0.6
26
- Requires-Dist: geode-simplex==9.3.2
20
+ Requires-Dist: geode-background==9.2.6
21
+ Requires-Dist: geode-common==33.8.4
22
+ Requires-Dist: geode-conversion==6.3.0
23
+ Requires-Dist: geode-explicit==6.2.0
24
+ Requires-Dist: geode-implicit==3.9.1
25
+ Requires-Dist: geode-numerics==6.2.0
26
+ Requires-Dist: geode-simplex==9.4.0
27
27
  Requires-Dist: geode-viewables==3.1.1
28
28
  Requires-Dist: itsdangerous==2.2.0
29
29
  Requires-Dist: jinja2==3.1.6
30
30
  Requires-Dist: jsonschema==4.23.0
31
31
  Requires-Dist: jsonschema-specifications==2025.4.1
32
32
  Requires-Dist: markupsafe==3.0.2
33
- Requires-Dist: opengeode-core==15.18.0
34
- Requires-Dist: opengeode-geosciences==8.4.7
35
- Requires-Dist: opengeode-geosciencesio==5.3.9
36
- Requires-Dist: opengeode-inspector==6.4.1
33
+ Requires-Dist: opengeode-core==15.19.1
34
+ Requires-Dist: opengeode-geosciences==8.4.8
35
+ Requires-Dist: opengeode-geosciencesio==5.3.10
36
+ Requires-Dist: opengeode-inspector==6.5.0
37
37
  Requires-Dist: opengeode-io==7.2.0
38
38
  Requires-Dist: referencing==0.36.2
39
- Requires-Dist: rpds-py==0.24.0
39
+ Requires-Dist: rpds-py==0.25.0
40
40
  Requires-Dist: typing-extensions==4.13.2
41
41
  Requires-Dist: werkzeug==3.1.3
42
42
  Dynamic: license-file
@@ -72,4 +72,4 @@ Detailed changes for each release are documented in the [release notes](https://
72
72
 
73
73
  [MIT](https://opensource.org/licenses/MIT)
74
74
 
75
- Copyright (c) 2019 - 2024, Geode-solutions
75
+ Copyright (c) 2019 - 2025, Geode-solutions
@@ -29,4 +29,4 @@ Detailed changes for each release are documented in the [release notes](https://
29
29
 
30
30
  [MIT](https://opensource.org/licenses/MIT)
31
31
 
32
- Copyright (c) 2019 - 2024, Geode-solutions
32
+ Copyright (c) 2019 - 2025, Geode-solutions
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "OpenGeodeWeb-Back"
8
- version = "5.7.4-rc.1"
8
+ version = "5.8.0"
9
9
  dynamic = ["dependencies"]
10
10
  authors = [
11
11
  { name="Geode-solutions", email="team-web@geode-solutions.com" },
@@ -1,5 +1,5 @@
1
1
  #
2
- # This file is autogenerated by pip-compile with Python 3.10
2
+ # This file is autogenerated by pip-compile with Python 3.12
3
3
  # by the following command:
4
4
  #
5
5
  # pip-compile requirements.in
@@ -14,18 +14,18 @@ blinker==1.9.0
14
14
  # via flask
15
15
  click==8.1.8
16
16
  # via flask
17
- flask[async]==3.1.0
17
+ flask[async]==3.1.1
18
18
  # via
19
19
  # -r requirements.in
20
20
  # flask-cors
21
21
  flask-cors==5.0.1
22
22
  # via -r requirements.in
23
- geode-background==9.2.4
23
+ geode-background==9.2.6
24
24
  # via
25
25
  # geode-explicit
26
26
  # geode-implicit
27
27
  # geode-simplex
28
- geode-common==33.8.1
28
+ geode-common==33.8.4
29
29
  # via
30
30
  # -r requirements.in
31
31
  # geode-background
@@ -35,22 +35,22 @@ geode-common==33.8.1
35
35
  # geode-numerics
36
36
  # geode-simplex
37
37
  # geode-viewables
38
- geode-conversion==6.2.13
38
+ geode-conversion==6.3.0
39
39
  # via
40
40
  # geode-explicit
41
41
  # geode-implicit
42
- geode-explicit==6.1.39
42
+ geode-explicit==6.2.0
43
43
  # via
44
44
  # -r requirements.in
45
45
  # geode-implicit
46
- geode-implicit==3.7.10
46
+ geode-implicit==3.9.1
47
47
  # via -r requirements.in
48
- geode-numerics==6.0.6
48
+ geode-numerics==6.2.0
49
49
  # via
50
50
  # -r requirements.in
51
51
  # geode-implicit
52
52
  # geode-simplex
53
- geode-simplex==9.3.2
53
+ geode-simplex==9.4.0
54
54
  # via
55
55
  # -r requirements.in
56
56
  # geode-implicit
@@ -66,9 +66,10 @@ jsonschema-specifications==2025.4.1
66
66
  # via jsonschema
67
67
  markupsafe==3.0.2
68
68
  # via
69
+ # flask
69
70
  # jinja2
70
71
  # werkzeug
71
- opengeode-core==15.18.0
72
+ opengeode-core==15.19.1
72
73
  # via
73
74
  # -r requirements.in
74
75
  # geode-background
@@ -83,17 +84,17 @@ opengeode-core==15.18.0
83
84
  # opengeode-geosciencesio
84
85
  # opengeode-inspector
85
86
  # opengeode-io
86
- opengeode-geosciences==8.4.7
87
+ opengeode-geosciences==8.4.8
87
88
  # via
88
89
  # -r requirements.in
89
90
  # geode-implicit
90
91
  # geode-viewables
91
92
  # opengeode-geosciencesio
92
- opengeode-geosciencesio==5.3.9
93
+ opengeode-geosciencesio==5.3.10
93
94
  # via
94
95
  # -r requirements.in
95
96
  # geode-implicit
96
- opengeode-inspector==6.4.1
97
+ opengeode-inspector==6.5.0
97
98
  # via
98
99
  # -r requirements.in
99
100
  # geode-explicit
@@ -109,14 +110,12 @@ referencing==0.36.2
109
110
  # via
110
111
  # jsonschema
111
112
  # jsonschema-specifications
112
- rpds-py==0.24.0
113
+ rpds-py==0.25.0
113
114
  # via
114
115
  # jsonschema
115
116
  # referencing
116
117
  typing-extensions==4.13.2
117
- # via
118
- # asgiref
119
- # referencing
118
+ # via referencing
120
119
  werkzeug==3.1.3
121
120
  # via
122
121
  # -r requirements.in
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 5.7.4rc1
3
+ Version: 5.8.0
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
@@ -15,28 +15,28 @@ Requires-Dist: asgiref==3.8.1
15
15
  Requires-Dist: attrs==25.3.0
16
16
  Requires-Dist: blinker==1.9.0
17
17
  Requires-Dist: click==8.1.8
18
- Requires-Dist: flask[async]==3.1.0
18
+ Requires-Dist: flask[async]==3.1.1
19
19
  Requires-Dist: flask-cors==5.0.1
20
- Requires-Dist: geode-background==9.2.4
21
- Requires-Dist: geode-common==33.8.1
22
- Requires-Dist: geode-conversion==6.2.13
23
- Requires-Dist: geode-explicit==6.1.39
24
- Requires-Dist: geode-implicit==3.7.10
25
- Requires-Dist: geode-numerics==6.0.6
26
- Requires-Dist: geode-simplex==9.3.2
20
+ Requires-Dist: geode-background==9.2.6
21
+ Requires-Dist: geode-common==33.8.4
22
+ Requires-Dist: geode-conversion==6.3.0
23
+ Requires-Dist: geode-explicit==6.2.0
24
+ Requires-Dist: geode-implicit==3.9.1
25
+ Requires-Dist: geode-numerics==6.2.0
26
+ Requires-Dist: geode-simplex==9.4.0
27
27
  Requires-Dist: geode-viewables==3.1.1
28
28
  Requires-Dist: itsdangerous==2.2.0
29
29
  Requires-Dist: jinja2==3.1.6
30
30
  Requires-Dist: jsonschema==4.23.0
31
31
  Requires-Dist: jsonschema-specifications==2025.4.1
32
32
  Requires-Dist: markupsafe==3.0.2
33
- Requires-Dist: opengeode-core==15.18.0
34
- Requires-Dist: opengeode-geosciences==8.4.7
35
- Requires-Dist: opengeode-geosciencesio==5.3.9
36
- Requires-Dist: opengeode-inspector==6.4.1
33
+ Requires-Dist: opengeode-core==15.19.1
34
+ Requires-Dist: opengeode-geosciences==8.4.8
35
+ Requires-Dist: opengeode-geosciencesio==5.3.10
36
+ Requires-Dist: opengeode-inspector==6.5.0
37
37
  Requires-Dist: opengeode-io==7.2.0
38
38
  Requires-Dist: referencing==0.36.2
39
- Requires-Dist: rpds-py==0.24.0
39
+ Requires-Dist: rpds-py==0.25.0
40
40
  Requires-Dist: typing-extensions==4.13.2
41
41
  Requires-Dist: werkzeug==3.1.3
42
42
  Dynamic: license-file
@@ -72,4 +72,4 @@ Detailed changes for each release are documented in the [release notes](https://
72
72
 
73
73
  [MIT](https://opensource.org/licenses/MIT)
74
74
 
75
- Copyright (c) 2019 - 2024, Geode-solutions
75
+ Copyright (c) 2019 - 2025, Geode-solutions
@@ -0,0 +1,28 @@
1
+ asgiref==3.8.1
2
+ attrs==25.3.0
3
+ blinker==1.9.0
4
+ click==8.1.8
5
+ flask[async]==3.1.1
6
+ flask-cors==5.0.1
7
+ geode-background==9.2.6
8
+ geode-common==33.8.4
9
+ geode-conversion==6.3.0
10
+ geode-explicit==6.2.0
11
+ geode-implicit==3.9.1
12
+ geode-numerics==6.2.0
13
+ geode-simplex==9.4.0
14
+ geode-viewables==3.1.1
15
+ itsdangerous==2.2.0
16
+ jinja2==3.1.6
17
+ jsonschema==4.23.0
18
+ jsonschema-specifications==2025.4.1
19
+ markupsafe==3.0.2
20
+ opengeode-core==15.19.1
21
+ opengeode-geosciences==8.4.8
22
+ opengeode-geosciencesio==5.3.10
23
+ opengeode-inspector==6.5.0
24
+ opengeode-io==7.2.0
25
+ referencing==0.36.2
26
+ rpds-py==0.25.0
27
+ typing-extensions==4.13.2
28
+ werkzeug==3.1.3
@@ -101,6 +101,12 @@ def save_viewable(geode_object: str, data, folder_absolute_path: str, id: str):
101
101
  )
102
102
 
103
103
 
104
+ def save_light_viewable(geode_object: str, data, folder_absolute_path: str, id: str):
105
+ return geode_object_value(geode_object)["save_light_viewable"](
106
+ data, os.path.join(folder_absolute_path, id)
107
+ )
108
+
109
+
104
110
  def geode_object_input_extensions(geode_object: str):
105
111
  geode_object_input_list_creators = input_factory(geode_object).list_creators()
106
112
  geode_object_input_list_creators.sort()
@@ -40,6 +40,7 @@ def geode_objects_dict():
40
40
  "is_3D": True,
41
41
  "is_viewable": True,
42
42
  "save_viewable": g_v.save_viewable_brep,
43
+ "save_light_viewable": g_v.save_light_viewable_brep,
43
44
  "inspector": og_inspector.inspect_brep,
44
45
  },
45
46
  "CrossSection": {
@@ -62,6 +63,7 @@ def geode_objects_dict():
62
63
  "is_3D": False,
63
64
  "is_viewable": True,
64
65
  "save_viewable": g_v.save_viewable_cross_section,
66
+ "save_light_viewable": g_v.save_light_viewable_cross_section,
65
67
  "inspector": og_inspector.inspect_section,
66
68
  },
67
69
  "EdgedCurve2D": {
@@ -84,6 +86,7 @@ def geode_objects_dict():
84
86
  "is_3D": False,
85
87
  "is_viewable": True,
86
88
  "save_viewable": g_v.save_viewable_edged_curve2D,
89
+ "save_light_viewable": g_v.save_light_viewable_edged_curve2D,
87
90
  "inspector": og_inspector.inspect_edged_curve2D,
88
91
  },
89
92
  "EdgedCurve3D": {
@@ -106,6 +109,7 @@ def geode_objects_dict():
106
109
  "is_3D": True,
107
110
  "is_viewable": True,
108
111
  "save_viewable": g_v.save_viewable_edged_curve3D,
112
+ "save_light_viewable": g_v.save_light_viewable_edged_curve3D,
109
113
  "inspector": og_inspector.inspect_edged_curve3D,
110
114
  },
111
115
  "Graph": {
@@ -142,6 +146,7 @@ def geode_objects_dict():
142
146
  "is_3D": True,
143
147
  "is_viewable": True,
144
148
  "save_viewable": g_v.save_viewable_hybrid_solid3D,
149
+ "save_light_viewable": g_v.save_light_viewable_hybrid_solid3D,
145
150
  "inspector": og_inspector.inspect_solid3D,
146
151
  },
147
152
  "ImplicitCrossSection": {
@@ -164,6 +169,7 @@ def geode_objects_dict():
164
169
  "is_3D": False,
165
170
  "is_viewable": True,
166
171
  "save_viewable": g_v.save_viewable_implicit_cross_section,
172
+ "save_light_viewable": g_v.save_light_viewable_implicit_cross_section,
167
173
  "inspector": og_inspector.inspect_section,
168
174
  },
169
175
  "ImplicitStructuralModel": {
@@ -186,6 +192,7 @@ def geode_objects_dict():
186
192
  "is_3D": True,
187
193
  "is_viewable": True,
188
194
  "save_viewable": g_v.save_viewable_implicit_structural_model,
195
+ "save_light_viewable": g_v.save_light_viewable_implicit_structural_model,
189
196
  "inspector": og_inspector.inspect_brep,
190
197
  },
191
198
  "LightRegularGrid2D": {
@@ -201,7 +208,8 @@ def geode_objects_dict():
201
208
  "elements": [points, polygons],
202
209
  "is_3D": False,
203
210
  "is_viewable": True,
204
- "save_viewable": g_v.save_viewable_light_regular_grid2D,
211
+ "save_viewable": g_v.save_light_viewable_light_regular_grid2D,
212
+ "save_light_viewable": g_v.save_light_viewable_light_regular_grid2D,
205
213
  },
206
214
  "LightRegularGrid3D": {
207
215
  "class": og.LightRegularGrid3D,
@@ -217,6 +225,7 @@ def geode_objects_dict():
217
225
  "is_3D": True,
218
226
  "is_viewable": True,
219
227
  "save_viewable": g_v.save_viewable_light_regular_grid3D,
228
+ "save_light_viewable": g_v.save_light_viewable_light_regular_grid3D,
220
229
  },
221
230
  "PointSet2D": {
222
231
  "class": og.PointSet2D,
@@ -238,6 +247,7 @@ def geode_objects_dict():
238
247
  "is_3D": False,
239
248
  "is_viewable": True,
240
249
  "save_viewable": g_v.save_viewable_point_set2D,
250
+ "save_light_viewable": g_v.save_light_viewable_point_set2D,
241
251
  "inspector": og_inspector.inspect_point_set2D,
242
252
  },
243
253
  "PointSet3D": {
@@ -260,6 +270,7 @@ def geode_objects_dict():
260
270
  "is_3D": True,
261
271
  "is_viewable": True,
262
272
  "save_viewable": g_v.save_viewable_point_set3D,
273
+ "save_light_viewable": g_v.save_light_viewable_point_set3D,
263
274
  "inspector": og_inspector.inspect_point_set3D,
264
275
  },
265
276
  "PolygonalSurface2D": {
@@ -282,6 +293,7 @@ def geode_objects_dict():
282
293
  "is_3D": False,
283
294
  "is_viewable": True,
284
295
  "save_viewable": g_v.save_viewable_polygonal_surface2D,
296
+ "save_light_viewable": g_v.save_light_viewable_polygonal_surface2D,
285
297
  "inspector": og_inspector.inspect_surface2D,
286
298
  },
287
299
  "PolygonalSurface3D": {
@@ -304,6 +316,7 @@ def geode_objects_dict():
304
316
  "is_3D": True,
305
317
  "is_viewable": True,
306
318
  "save_viewable": g_v.save_viewable_polygonal_surface3D,
319
+ "save_light_viewable": g_v.save_light_viewable_polygonal_surface3D,
307
320
  "inspector": og_inspector.inspect_surface3D,
308
321
  },
309
322
  "PolyhedralSolid3D": {
@@ -326,6 +339,7 @@ def geode_objects_dict():
326
339
  "is_3D": True,
327
340
  "is_viewable": True,
328
341
  "save_viewable": g_v.save_viewable_polyhedral_solid3D,
342
+ "save_light_viewable": g_v.save_light_viewable_polyhedral_solid3D,
329
343
  "inspector": og_inspector.inspect_solid3D,
330
344
  },
331
345
  "RasterImage2D": {
@@ -376,6 +390,7 @@ def geode_objects_dict():
376
390
  "is_3D": False,
377
391
  "is_viewable": True,
378
392
  "save_viewable": g_v.save_viewable_regular_grid2D,
393
+ "save_light_viewable": g_v.save_light_viewable_regular_grid2D,
379
394
  },
380
395
  "RegularGrid3D": {
381
396
  "class": og.RegularGrid3D,
@@ -397,6 +412,7 @@ def geode_objects_dict():
397
412
  "is_3D": True,
398
413
  "is_viewable": True,
399
414
  "save_viewable": g_v.save_viewable_regular_grid3D,
415
+ "save_light_viewable": g_v.save_light_viewable_regular_grid3D,
400
416
  },
401
417
  "Section": {
402
418
  "class": og.Section,
@@ -417,6 +433,7 @@ def geode_objects_dict():
417
433
  "is_3D": False,
418
434
  "is_viewable": True,
419
435
  "save_viewable": g_v.save_viewable_section,
436
+ "save_light_viewable": g_v.save_light_viewable_section,
420
437
  "inspector": og_inspector.inspect_section,
421
438
  },
422
439
  "StructuralModel": {
@@ -439,6 +456,7 @@ def geode_objects_dict():
439
456
  "is_3D": True,
440
457
  "is_viewable": True,
441
458
  "save_viewable": g_v.save_viewable_structural_model,
459
+ "save_light_viewable": g_v.save_light_viewable_structural_model,
442
460
  "inspector": og_inspector.inspect_brep,
443
461
  },
444
462
  "TetrahedralSolid3D": {
@@ -461,6 +479,7 @@ def geode_objects_dict():
461
479
  "is_3D": True,
462
480
  "is_viewable": True,
463
481
  "save_viewable": g_v.save_viewable_tetrahedral_solid3D,
482
+ "save_light_viewable": g_v.save_light_viewable_tetrahedral_solid3D,
464
483
  "inspector": og_inspector.inspect_solid3D,
465
484
  },
466
485
  "TriangulatedSurface2D": {
@@ -483,6 +502,7 @@ def geode_objects_dict():
483
502
  "is_3D": False,
484
503
  "is_viewable": True,
485
504
  "save_viewable": g_v.save_viewable_triangulated_surface2D,
505
+ "save_light_viewable": g_v.save_light_viewable_triangulated_surface2D,
486
506
  "inspector": og_inspector.inspect_surface2D,
487
507
  },
488
508
  "TriangulatedSurface3D": {
@@ -505,6 +525,7 @@ def geode_objects_dict():
505
525
  "is_3D": True,
506
526
  "is_viewable": True,
507
527
  "save_viewable": g_v.save_viewable_triangulated_surface3D,
528
+ "save_light_viewable": g_v.save_light_viewable_triangulated_surface3D,
508
529
  "inspector": og_inspector.inspect_surface3D,
509
530
  },
510
531
  "VertexSet": {
@@ -260,6 +260,18 @@ def save_viewable_file():
260
260
  saved_viewable_file_path = geode_functions.save_viewable(
261
261
  flask.request.json["input_geode_object"], data, DATA_FOLDER_PATH, generated_id
262
262
  )
263
+
264
+ saved_light_viewable_file_path = geode_functions.save_light_viewable(
265
+ flask.request.json["input_geode_object"],
266
+ data,
267
+ DATA_FOLDER_PATH,
268
+ "light_" + generated_id,
269
+ )
270
+
271
+ f = open(saved_light_viewable_file_path, "rb")
272
+ binary_light_viewable = f.read()
273
+ f.close()
274
+
263
275
  geode_functions.save(
264
276
  flask.request.json["input_geode_object"],
265
277
  data,
@@ -280,6 +292,7 @@ def save_viewable_file():
280
292
  "viewable_file_name": viewable_file_name,
281
293
  "id": generated_id,
282
294
  "object_type": object_type,
295
+ "binary_light_viewable": str(binary_light_viewable, "utf-8"),
283
296
  },
284
297
  200,
285
298
  )
@@ -87,8 +87,8 @@ def test_load():
87
87
  if geode_functions.is_loadable(geode_object, file_absolute_path):
88
88
  data = geode_functions.load(geode_object, file_absolute_path)
89
89
  data_name = data.name()
90
+ uu_id = str(uuid.uuid4()).replace("-", "")
90
91
  if "save_viewable" in value:
91
- uu_id = str(uuid.uuid4()).replace("-", "")
92
92
  viewable_file_path = geode_functions.save_viewable(
93
93
  geode_object,
94
94
  data,
@@ -96,6 +96,15 @@ def test_load():
96
96
  data_name,
97
97
  )
98
98
  os.remove(viewable_file_path)
99
+
100
+ if "save_light_viewable" in value:
101
+ light_viewable_file_path = geode_functions.save_light_viewable(
102
+ geode_object,
103
+ data,
104
+ os.path.abspath(f"./output"),
105
+ data_name,
106
+ )
107
+ os.remove(light_viewable_file_path)
99
108
  geode_objects_and_output_extensions = (
100
109
  geode_functions.geode_objects_output_extensions(geode_object, data)
101
110
  )
@@ -44,10 +44,10 @@ def test_allowed_objects(client):
44
44
  test_utils.test_route_wrong_params(client, route, get_full_data)
45
45
 
46
46
 
47
- def test_upload_file(client):
47
+ def test_upload_file(client, filename="corbi.og_brep"):
48
48
  response = client.put(
49
49
  f"/upload_file",
50
- data={"file": FileStorage(open("./tests/corbi.og_brep", "rb"))},
50
+ data={"file": FileStorage(open(f"./tests/{filename}", "rb"))},
51
51
  )
52
52
 
53
53
  assert response.status_code == 201
@@ -139,6 +139,8 @@ def test_geode_objects_and_output_extensions(client):
139
139
 
140
140
 
141
141
  def test_save_viewable_file(client):
142
+
143
+ test_upload_file(client, filename="corbi.og_brep")
142
144
  route = f"/save_viewable_file"
143
145
 
144
146
  def get_full_data():
@@ -161,6 +163,8 @@ def test_save_viewable_file(client):
161
163
  object_type = response.json["object_type"]
162
164
  assert type(object_type) is str
163
165
  assert object_type in ["model", "mesh"]
166
+ binary_light_viewable = response.json["binary_light_viewable"]
167
+ assert type(binary_light_viewable) is str
164
168
 
165
169
  # Test all params
166
170
  test_utils.test_route_wrong_params(client, route, get_full_data)
@@ -1,28 +0,0 @@
1
- asgiref==3.8.1
2
- attrs==25.3.0
3
- blinker==1.9.0
4
- click==8.1.8
5
- flask[async]==3.1.0
6
- flask-cors==5.0.1
7
- geode-background==9.2.4
8
- geode-common==33.8.1
9
- geode-conversion==6.2.13
10
- geode-explicit==6.1.39
11
- geode-implicit==3.7.10
12
- geode-numerics==6.0.6
13
- geode-simplex==9.3.2
14
- geode-viewables==3.1.1
15
- itsdangerous==2.2.0
16
- jinja2==3.1.6
17
- jsonschema==4.23.0
18
- jsonschema-specifications==2025.4.1
19
- markupsafe==3.0.2
20
- opengeode-core==15.18.0
21
- opengeode-geosciences==8.4.7
22
- opengeode-geosciencesio==5.3.9
23
- opengeode-inspector==6.4.1
24
- opengeode-io==7.2.0
25
- referencing==0.36.2
26
- rpds-py==0.24.0
27
- typing-extensions==4.13.2
28
- werkzeug==3.1.3