OpenGeodeWeb-Back 6.3.6rc1__tar.gz → 6.4.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 (101) hide show
  1. {opengeodeweb_back-6.3.6rc1/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-6.4.0}/PKG-INFO +4 -4
  2. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/pyproject.toml +1 -1
  3. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/requirements.txt +3 -3
  4. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +4 -4
  5. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/OpenGeodeWeb_Back.egg-info/requires.txt +3 -3
  6. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_brep.py +3 -0
  7. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_cross_section.py +3 -0
  8. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_model.py +3 -0
  9. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_section.py +3 -0
  10. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_structural_model.py +3 -0
  11. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/utils_functions.py +7 -2
  12. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/tests/test_routes.py +9 -1
  13. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/LICENSE +0 -0
  14. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/README.md +0 -0
  15. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/setup.cfg +0 -0
  16. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +0 -0
  17. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  18. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/OpenGeodeWeb_Back.egg-info/entry_points.txt +0 -0
  19. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  20. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/__init__.py +0 -0
  21. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/app.py +0 -0
  22. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/app_config.py +0 -0
  23. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_functions.py +0 -0
  24. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/__init__.py +0 -0
  25. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_edged_curve2d.py +0 -0
  26. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_edged_curve3d.py +0 -0
  27. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_graph.py +0 -0
  28. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_grid2d.py +0 -0
  29. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_grid3d.py +0 -0
  30. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +0 -0
  31. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +0 -0
  32. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +0 -0
  33. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +0 -0
  34. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +0 -0
  35. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_mesh.py +0 -0
  36. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_object.py +0 -0
  37. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_point_set2d.py +0 -0
  38. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_point_set3d.py +0 -0
  39. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +0 -0
  40. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +0 -0
  41. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +0 -0
  42. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_raster_image2d.py +0 -0
  43. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_raster_image3d.py +0 -0
  44. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_regular_grid2d.py +0 -0
  45. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_regular_grid3d.py +0 -0
  46. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +0 -0
  47. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +0 -0
  48. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +0 -0
  49. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +0 -0
  50. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +0 -0
  51. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +0 -0
  52. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/geode_objects/geode_vertex_set.py +0 -0
  53. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/py.typed +0 -0
  54. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/blueprint_routes.py +0 -0
  55. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/create/blueprint_create.py +0 -0
  56. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/create/schemas/__init__.py +0 -0
  57. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/create/schemas/point.json +0 -0
  58. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/create/schemas/point.py +0 -0
  59. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/__init__.py +0 -0
  60. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  61. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/allowed_files.py +0 -0
  62. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  63. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/allowed_objects.py +0 -0
  64. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.json +0 -0
  65. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/cell_attribute_names.py +0 -0
  66. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.json +0 -0
  67. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/edge_attribute_names.py +0 -0
  68. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/export_project.json +0 -0
  69. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/export_project.py +0 -0
  70. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.json +0 -0
  71. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/geode_object_inheritance.py +0 -0
  72. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  73. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +0 -0
  74. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  75. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +0 -0
  76. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/import_project.json +0 -0
  77. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/import_project.py +0 -0
  78. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  79. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/inspect_file.py +0 -0
  80. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/kill.json +0 -0
  81. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/kill.py +0 -0
  82. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  83. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/missing_files.py +0 -0
  84. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  85. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/ping.py +0 -0
  86. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  87. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.py +0 -0
  88. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  89. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +0 -0
  90. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  91. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/save_viewable_file.py +0 -0
  92. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  93. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/texture_coordinates.py +0 -0
  94. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  95. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/upload_file.py +0 -0
  96. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  97. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.py +0 -0
  98. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/src/opengeodeweb_back/test_utils.py +0 -0
  99. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/tests/test_create_routes.py +0 -0
  100. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.0}/tests/test_geode_functions.py +0 -0
  101. {opengeodeweb_back-6.3.6rc1 → opengeodeweb_back-6.4.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: 6.3.6rc1
3
+ Version: 6.4.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
@@ -16,13 +16,13 @@ Requires-Dist: blinker>=1
16
16
  Requires-Dist: click>=8
17
17
  Requires-Dist: flask[async]>=3
18
18
  Requires-Dist: flask-cors==6.0.1
19
- Requires-Dist: geode-common==33.19.1
19
+ Requires-Dist: geode-common==33.20.0
20
20
  Requires-Dist: geode-viewables==3.3.5
21
21
  Requires-Dist: itsdangerous>=2
22
22
  Requires-Dist: jinja2>=3
23
23
  Requires-Dist: markupsafe>=3
24
- Requires-Dist: opengeode-core==16.2.0
25
- Requires-Dist: opengeode-geosciences==9.5.10
24
+ Requires-Dist: opengeode-core==16.3.0
25
+ Requires-Dist: opengeode-geosciences==9.5.11
26
26
  Requires-Dist: opengeode-geosciencesio==5.8.11
27
27
  Requires-Dist: opengeode-inspector==6.8.18
28
28
  Requires-Dist: opengeode-io==7.4.9
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "OpenGeodeWeb-Back"
7
- version = "6.3.6-rc.1"
7
+ version = "6.4.0"
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"
@@ -16,7 +16,7 @@ flask[async]>=3
16
16
  # flask-cors
17
17
  flask-cors==6.0.1
18
18
  # via -r requirements.in
19
- geode-common==33.19.1
19
+ geode-common==33.20.0
20
20
  # via
21
21
  # -r requirements.in
22
22
  # geode-viewables
@@ -31,7 +31,7 @@ markupsafe>=3
31
31
  # flask
32
32
  # jinja2
33
33
  # werkzeug
34
- opengeode-core==16.2.0
34
+ opengeode-core==16.3.0
35
35
  # via
36
36
  # -r requirements.in
37
37
  # geode-common
@@ -40,7 +40,7 @@ opengeode-core==16.2.0
40
40
  # opengeode-geosciencesio
41
41
  # opengeode-inspector
42
42
  # opengeode-io
43
- opengeode-geosciences==9.5.10
43
+ opengeode-geosciences==9.5.11
44
44
  # via
45
45
  # -r requirements.in
46
46
  # geode-viewables
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 6.3.6rc1
3
+ Version: 6.4.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
@@ -16,13 +16,13 @@ Requires-Dist: blinker>=1
16
16
  Requires-Dist: click>=8
17
17
  Requires-Dist: flask[async]>=3
18
18
  Requires-Dist: flask-cors==6.0.1
19
- Requires-Dist: geode-common==33.19.1
19
+ Requires-Dist: geode-common==33.20.0
20
20
  Requires-Dist: geode-viewables==3.3.5
21
21
  Requires-Dist: itsdangerous>=2
22
22
  Requires-Dist: jinja2>=3
23
23
  Requires-Dist: markupsafe>=3
24
- Requires-Dist: opengeode-core==16.2.0
25
- Requires-Dist: opengeode-geosciences==9.5.10
24
+ Requires-Dist: opengeode-core==16.3.0
25
+ Requires-Dist: opengeode-geosciences==9.5.11
26
26
  Requires-Dist: opengeode-geosciencesio==5.8.11
27
27
  Requires-Dist: opengeode-inspector==6.8.18
28
28
  Requires-Dist: opengeode-io==7.4.9
@@ -3,13 +3,13 @@ blinker>=1
3
3
  click>=8
4
4
  flask[async]>=3
5
5
  flask-cors==6.0.1
6
- geode-common==33.19.1
6
+ geode-common==33.20.0
7
7
  geode-viewables==3.3.5
8
8
  itsdangerous>=2
9
9
  jinja2>=3
10
10
  markupsafe>=3
11
- opengeode-core==16.2.0
12
- opengeode-geosciences==9.5.10
11
+ opengeode-core==16.3.0
12
+ opengeode-geosciences==9.5.11
13
13
  opengeode-geosciencesio==5.8.11
14
14
  opengeode-inspector==6.8.18
15
15
  opengeode-io==7.4.9
@@ -88,6 +88,9 @@ class GeodeBRep(GeodeModel):
88
88
  def items(self, id: og.uuid) -> list[og.ComponentID]:
89
89
  return self.brep.items(id)
90
90
 
91
+ def component_name(self, id: og.uuid) -> str | None:
92
+ return self.brep.brep_component(id).name()
93
+
91
94
  def inspect(self) -> og_inspector.BRepInspectionResult:
92
95
  return og_inspector.inspect_brep(self.brep)
93
96
 
@@ -73,3 +73,6 @@ class GeodeCrossSection(GeodeSection):
73
73
  return viewables.save_light_viewable_cross_section(
74
74
  self.cross_section, filename_without_extension
75
75
  )
76
+
77
+ def component_name(self, id: og.uuid) -> str | None:
78
+ return self.cross_section.cross_section_component(id).name()
@@ -35,3 +35,6 @@ class GeodeModel(GeodeObject):
35
35
 
36
36
  @abstractmethod
37
37
  def items(self, id: og.uuid) -> list[og.ComponentID]: ...
38
+
39
+ @abstractmethod
40
+ def component_name(self, id: og.uuid) -> str | None: ...
@@ -90,6 +90,9 @@ class GeodeSection(GeodeModel):
90
90
  def items(self, id: og.uuid) -> list[og.ComponentID]:
91
91
  return self.section.items(id)
92
92
 
93
+ def component_name(self, id: og.uuid) -> str | None:
94
+ return self.section.section_component(id).name()
95
+
93
96
  def inspect(self) -> og_inspector.SectionInspectionResult:
94
97
  return og_inspector.inspect_section(self.section)
95
98
 
@@ -75,3 +75,6 @@ class GeodeStructuralModel(GeodeBRep):
75
75
  return viewables.save_light_viewable_structural_model(
76
76
  self.structural_model, filename_without_extension
77
77
  )
78
+
79
+ def component_name(self, id: og.uuid) -> str | None:
80
+ return self.structural_model.structural_model_component(id).name()
@@ -214,7 +214,9 @@ def model_components(
214
214
  component_type = mesh_component.get()
215
215
  for id in ids:
216
216
  geode_id = id.string()
217
- component_name = geode_id
217
+ component_name = model.component_name(id)
218
+ if not component_name:
219
+ component_name = geode_id
218
220
  viewer_id = uuid_to_flat_index[geode_id]
219
221
  boundaries = model.boundaries(id)
220
222
  boundaries_uuid = [boundary.id().string() for boundary in boundaries]
@@ -236,11 +238,14 @@ def model_components(
236
238
  component_type = collection_component.get()
237
239
  for id in ids:
238
240
  geode_id = id.string()
241
+ component_name = model.component_name(id)
242
+ if not component_name:
243
+ component_name = geode_id
239
244
  items = model.items(id)
240
245
  items_uuid = [item.id().string() for item in items]
241
246
  collection_component_object = {
242
247
  "geode_id": geode_id,
243
- "name": geode_id,
248
+ "name": component_name,
244
249
  "type": component_type,
245
250
  "items": items_uuid,
246
251
  }
@@ -431,25 +431,33 @@ def test_geode_object_inheritance(client: FlaskClient) -> None:
431
431
 
432
432
  def test_model_components(client: FlaskClient) -> None:
433
433
  geode_object_type = "BRep"
434
- filename = "cube.og_brep"
434
+ filename = "LS2.og_brep"
435
435
  response = test_save_viewable_file(client, geode_object_type, filename)
436
436
  assert response.status_code == 200
437
437
  assert "mesh_components" in response.get_json()
438
438
  mesh_components = response.get_json()["mesh_components"]
439
439
  assert isinstance(mesh_components, list)
440
440
  assert len(mesh_components) > 0
441
+ name_is_uuid = False
442
+ name_is_not_uuid = False
441
443
  for mesh_component in mesh_components:
442
444
  assert isinstance(mesh_component, object)
443
445
  assert isinstance(mesh_component["geode_id"], str)
444
446
  assert isinstance(mesh_component["viewer_id"], int)
445
447
  assert isinstance(mesh_component["name"], str)
446
448
  assert isinstance(mesh_component["type"], str)
449
+ if mesh_component["name"] == mesh_component["geode_id"]:
450
+ name_is_uuid = True
451
+ else:
452
+ name_is_not_uuid = True
447
453
  assert isinstance(mesh_component["boundaries"], list)
448
454
  for boundary_uuid in mesh_component["boundaries"]:
449
455
  assert isinstance(boundary_uuid, str)
450
456
  assert isinstance(mesh_component["internals"], list)
451
457
  for internal_uuid in mesh_component["internals"]:
452
458
  assert isinstance(internal_uuid, str)
459
+ assert name_is_uuid is True
460
+ assert name_is_not_uuid is True
453
461
  assert "collection_components" in response.get_json()
454
462
  collection_components = response.get_json()["collection_components"]
455
463
  assert isinstance(collection_components, list)