OpenGeodeWeb-Back 5.6.6rc1__tar.gz → 5.7.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 (37) hide show
  1. {opengeodeweb_back-5.6.6rc1/src/OpenGeodeWeb_Back.egg-info → opengeodeweb_back-5.7.0rc1}/PKG-INFO +12 -13
  2. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/pyproject.toml +1 -1
  3. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/requirements.txt +12 -14
  4. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1/src/OpenGeodeWeb_Back.egg-info}/PKG-INFO +12 -13
  5. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/OpenGeodeWeb_Back.egg-info/SOURCES.txt +2 -0
  6. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/OpenGeodeWeb_Back.egg-info/requires.txt +11 -12
  7. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/blueprint_routes.py +11 -1
  8. opengeodeweb_back-5.7.0rc1/src/opengeodeweb_back/routes/models/blueprint_models.py +74 -0
  9. opengeodeweb_back-5.7.0rc1/tests/test_models_routes.py +30 -0
  10. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/LICENSE +0 -0
  11. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/README.md +0 -0
  12. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/setup.cfg +0 -0
  13. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/OpenGeodeWeb_Back.egg-info/dependency_links.txt +0 -0
  14. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/OpenGeodeWeb_Back.egg-info/top_level.txt +0 -0
  15. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/__init__.py +0 -0
  16. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/app_config.py +0 -0
  17. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/geode_functions.py +0 -0
  18. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/geode_objects.py +0 -0
  19. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_files.json +0 -0
  20. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/allowed_objects.json +0 -0
  21. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/create_point.json +0 -0
  22. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +0 -0
  23. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +0 -0
  24. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/inspect_file.json +0 -0
  25. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/missing_files.json +0 -0
  26. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/ping.json +0 -0
  27. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/polygon_attribute_names.json +0 -0
  28. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +0 -0
  29. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/save_viewable_file.json +0 -0
  30. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/texture_coordinates.json +0 -0
  31. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/upload_file.json +0 -0
  32. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json +0 -0
  33. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/test_utils.py +0 -0
  34. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/src/opengeodeweb_back/utils_functions.py +0 -0
  35. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/tests/test_geode_functions.py +0 -0
  36. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/tests/test_routes.py +0 -0
  37. {opengeodeweb_back-5.6.6rc1 → opengeodeweb_back-5.7.0rc1}/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.6.6rc1
3
+ Version: 5.7.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
@@ -15,30 +15,29 @@ 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: colorama==0.4.6
19
18
  Requires-Dist: flask[async]==3.1.0
20
19
  Requires-Dist: flask-cors==5.0.1
21
- Requires-Dist: geode-background==9.1.3
22
- Requires-Dist: geode-common==33.7.0
23
- Requires-Dist: geode-conversion==6.2.6
24
- Requires-Dist: geode-explicit==6.1.34
25
- Requires-Dist: geode-implicit==3.7.3
26
- Requires-Dist: geode-numerics==6.0.2
27
- Requires-Dist: geode-simplex==9.2.3
28
- Requires-Dist: geode-viewables==3.0.12
20
+ Requires-Dist: geode-background==9.2.0
21
+ Requires-Dist: geode-common==33.7.5
22
+ Requires-Dist: geode-conversion==6.2.9
23
+ Requires-Dist: geode-explicit==6.1.37
24
+ Requires-Dist: geode-implicit==3.7.6
25
+ Requires-Dist: geode-numerics==6.0.3
26
+ Requires-Dist: geode-simplex==9.2.6
27
+ Requires-Dist: geode-viewables==3.1.0
29
28
  Requires-Dist: itsdangerous==2.2.0
30
29
  Requires-Dist: jinja2==3.1.6
31
30
  Requires-Dist: jsonschema==4.23.0
32
31
  Requires-Dist: jsonschema-specifications==2024.10.1
33
32
  Requires-Dist: markupsafe==3.0.2
34
- Requires-Dist: opengeode-core==15.17.7
35
- Requires-Dist: opengeode-geosciences==8.4.3
33
+ Requires-Dist: opengeode-core==15.17.12
34
+ Requires-Dist: opengeode-geosciences==8.4.4
36
35
  Requires-Dist: opengeode-geosciencesio==5.3.8
37
36
  Requires-Dist: opengeode-inspector==6.3.11
38
37
  Requires-Dist: opengeode-io==7.1.5
39
38
  Requires-Dist: referencing==0.36.2
40
39
  Requires-Dist: rpds-py==0.24.0
41
- Requires-Dist: typing-extensions==4.13.1
40
+ Requires-Dist: typing-extensions==4.13.2
42
41
  Requires-Dist: werkzeug==3.1.3
43
42
  Dynamic: license-file
44
43
 
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "OpenGeodeWeb-Back"
8
- version = "5.6.6-rc.1"
8
+ version = "5.7.0-rc.1"
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.11
2
+ # This file is autogenerated by pip-compile with Python 3.10
3
3
  # by the following command:
4
4
  #
5
5
  # pip-compile requirements.in
@@ -14,20 +14,18 @@ blinker==1.9.0
14
14
  # via flask
15
15
  click==8.1.8
16
16
  # via flask
17
- colorama==0.4.6
18
- # via click
19
17
  flask[async]==3.1.0
20
18
  # via
21
19
  # -r requirements.in
22
20
  # flask-cors
23
21
  flask-cors==5.0.1
24
22
  # via -r requirements.in
25
- geode-background==9.1.3
23
+ geode-background==9.2.0
26
24
  # via
27
25
  # geode-explicit
28
26
  # geode-implicit
29
27
  # geode-simplex
30
- geode-common==33.7.0
28
+ geode-common==33.7.5
31
29
  # via
32
30
  # -r requirements.in
33
31
  # geode-background
@@ -37,27 +35,27 @@ geode-common==33.7.0
37
35
  # geode-numerics
38
36
  # geode-simplex
39
37
  # geode-viewables
40
- geode-conversion==6.2.6
38
+ geode-conversion==6.2.9
41
39
  # via
42
40
  # geode-explicit
43
41
  # geode-implicit
44
42
  # geode-simplex
45
- geode-explicit==6.1.34
43
+ geode-explicit==6.1.37
46
44
  # via
47
45
  # -r requirements.in
48
46
  # geode-implicit
49
- geode-implicit==3.7.3
47
+ geode-implicit==3.7.6
50
48
  # via -r requirements.in
51
- geode-numerics==6.0.2
49
+ geode-numerics==6.0.3
52
50
  # via
53
51
  # -r requirements.in
54
52
  # geode-implicit
55
53
  # geode-simplex
56
- geode-simplex==9.2.3
54
+ geode-simplex==9.2.6
57
55
  # via
58
56
  # -r requirements.in
59
57
  # geode-implicit
60
- geode-viewables==3.0.12
58
+ geode-viewables==3.1.0
61
59
  # via -r requirements.in
62
60
  itsdangerous==2.2.0
63
61
  # via flask
@@ -71,7 +69,7 @@ markupsafe==3.0.2
71
69
  # via
72
70
  # jinja2
73
71
  # werkzeug
74
- opengeode-core==15.17.7
72
+ opengeode-core==15.17.12
75
73
  # via
76
74
  # -r requirements.in
77
75
  # geode-background
@@ -86,7 +84,7 @@ opengeode-core==15.17.7
86
84
  # opengeode-geosciencesio
87
85
  # opengeode-inspector
88
86
  # opengeode-io
89
- opengeode-geosciences==8.4.3
87
+ opengeode-geosciences==8.4.4
90
88
  # via
91
89
  # -r requirements.in
92
90
  # geode-implicit
@@ -116,7 +114,7 @@ rpds-py==0.24.0
116
114
  # via
117
115
  # jsonschema
118
116
  # referencing
119
- typing-extensions==4.13.1
117
+ typing-extensions==4.13.2
120
118
  # via
121
119
  # asgiref
122
120
  # referencing
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenGeodeWeb-Back
3
- Version: 5.6.6rc1
3
+ Version: 5.7.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
@@ -15,30 +15,29 @@ 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: colorama==0.4.6
19
18
  Requires-Dist: flask[async]==3.1.0
20
19
  Requires-Dist: flask-cors==5.0.1
21
- Requires-Dist: geode-background==9.1.3
22
- Requires-Dist: geode-common==33.7.0
23
- Requires-Dist: geode-conversion==6.2.6
24
- Requires-Dist: geode-explicit==6.1.34
25
- Requires-Dist: geode-implicit==3.7.3
26
- Requires-Dist: geode-numerics==6.0.2
27
- Requires-Dist: geode-simplex==9.2.3
28
- Requires-Dist: geode-viewables==3.0.12
20
+ Requires-Dist: geode-background==9.2.0
21
+ Requires-Dist: geode-common==33.7.5
22
+ Requires-Dist: geode-conversion==6.2.9
23
+ Requires-Dist: geode-explicit==6.1.37
24
+ Requires-Dist: geode-implicit==3.7.6
25
+ Requires-Dist: geode-numerics==6.0.3
26
+ Requires-Dist: geode-simplex==9.2.6
27
+ Requires-Dist: geode-viewables==3.1.0
29
28
  Requires-Dist: itsdangerous==2.2.0
30
29
  Requires-Dist: jinja2==3.1.6
31
30
  Requires-Dist: jsonschema==4.23.0
32
31
  Requires-Dist: jsonschema-specifications==2024.10.1
33
32
  Requires-Dist: markupsafe==3.0.2
34
- Requires-Dist: opengeode-core==15.17.7
35
- Requires-Dist: opengeode-geosciences==8.4.3
33
+ Requires-Dist: opengeode-core==15.17.12
34
+ Requires-Dist: opengeode-geosciences==8.4.4
36
35
  Requires-Dist: opengeode-geosciencesio==5.3.8
37
36
  Requires-Dist: opengeode-inspector==6.3.11
38
37
  Requires-Dist: opengeode-io==7.1.5
39
38
  Requires-Dist: referencing==0.36.2
40
39
  Requires-Dist: rpds-py==0.24.0
41
- Requires-Dist: typing-extensions==4.13.1
40
+ Requires-Dist: typing-extensions==4.13.2
42
41
  Requires-Dist: werkzeug==3.1.3
43
42
  Dynamic: license-file
44
43
 
@@ -14,6 +14,7 @@ src/opengeodeweb_back/geode_objects.py
14
14
  src/opengeodeweb_back/test_utils.py
15
15
  src/opengeodeweb_back/utils_functions.py
16
16
  src/opengeodeweb_back/routes/blueprint_routes.py
17
+ src/opengeodeweb_back/routes/models/blueprint_models.py
17
18
  src/opengeodeweb_back/routes/schemas/allowed_files.json
18
19
  src/opengeodeweb_back/routes/schemas/allowed_objects.json
19
20
  src/opengeodeweb_back/routes/schemas/create_point.json
@@ -29,5 +30,6 @@ src/opengeodeweb_back/routes/schemas/texture_coordinates.json
29
30
  src/opengeodeweb_back/routes/schemas/upload_file.json
30
31
  src/opengeodeweb_back/routes/schemas/vertex_attribute_names.json
31
32
  tests/test_geode_functions.py
33
+ tests/test_models_routes.py
32
34
  tests/test_routes.py
33
35
  tests/test_utils_functions.py
@@ -2,28 +2,27 @@ asgiref==3.8.1
2
2
  attrs==25.3.0
3
3
  blinker==1.9.0
4
4
  click==8.1.8
5
- colorama==0.4.6
6
5
  flask[async]==3.1.0
7
6
  flask-cors==5.0.1
8
- geode-background==9.1.3
9
- geode-common==33.7.0
10
- geode-conversion==6.2.6
11
- geode-explicit==6.1.34
12
- geode-implicit==3.7.3
13
- geode-numerics==6.0.2
14
- geode-simplex==9.2.3
15
- geode-viewables==3.0.12
7
+ geode-background==9.2.0
8
+ geode-common==33.7.5
9
+ geode-conversion==6.2.9
10
+ geode-explicit==6.1.37
11
+ geode-implicit==3.7.6
12
+ geode-numerics==6.0.3
13
+ geode-simplex==9.2.6
14
+ geode-viewables==3.1.0
16
15
  itsdangerous==2.2.0
17
16
  jinja2==3.1.6
18
17
  jsonschema==4.23.0
19
18
  jsonschema-specifications==2024.10.1
20
19
  markupsafe==3.0.2
21
- opengeode-core==15.17.7
22
- opengeode-geosciences==8.4.3
20
+ opengeode-core==15.17.12
21
+ opengeode-geosciences==8.4.4
23
22
  opengeode-geosciencesio==5.3.8
24
23
  opengeode-inspector==6.3.11
25
24
  opengeode-io==7.1.5
26
25
  referencing==0.36.2
27
26
  rpds-py==0.24.0
28
- typing-extensions==4.13.1
27
+ typing-extensions==4.13.2
29
28
  werkzeug==3.1.3
@@ -12,7 +12,9 @@ import werkzeug
12
12
  # Local application imports
13
13
  from .. import geode_functions, utils_functions
14
14
 
15
- routes = flask.Blueprint("routes", __name__)
15
+ from .models import blueprint_models
16
+
17
+ routes = flask.Blueprint("routes", __name__, url_prefix="/opengeodeweb_back")
16
18
 
17
19
 
18
20
  @routes.before_request
@@ -23,11 +25,19 @@ def before_request():
23
25
 
24
26
  @routes.teardown_request
25
27
  def teardown_request(exception):
28
+
26
29
  if "ping" not in flask.request.path:
27
30
  utils_functions.decrement_request_counter(flask.current_app)
28
31
  utils_functions.update_last_request_time(flask.current_app)
29
32
 
30
33
 
34
+ routes.register_blueprint(
35
+ blueprint_models.routes,
36
+ url_prefix=blueprint_models.routes.url_prefix,
37
+ name=blueprint_models.routes.name,
38
+ )
39
+
40
+
31
41
  schemas = os.path.join(os.path.dirname(__file__), "schemas")
32
42
 
33
43
  with open(
@@ -0,0 +1,74 @@
1
+ import json
2
+ import os
3
+ import xml.etree.ElementTree as ET
4
+ import flask
5
+ from ... import geode_functions, utils_functions
6
+
7
+ routes = flask.Blueprint("models", __name__, url_prefix="/models")
8
+
9
+
10
+ schemas = os.path.join(os.path.dirname(__file__), "schemas")
11
+
12
+ with open(os.path.join(schemas, "vtm_component_indices.json"), "r") as file:
13
+ vtm_component_indices_json = json.load(file)
14
+
15
+
16
+ @routes.route(
17
+ vtm_component_indices_json["route"], methods=vtm_component_indices_json["methods"]
18
+ )
19
+ def uuid_to_flat_index():
20
+
21
+ print(f"uuid_to_flat_index : {flask.request=}", flush=True)
22
+ utils_functions.validate_request(flask.request, vtm_component_indices_json)
23
+ vtm_file_path = os.path.join(
24
+ flask.current_app.config["DATA_FOLDER_PATH"], flask.request.json["id"] + ".vtm"
25
+ )
26
+
27
+ tree = ET.parse(vtm_file_path)
28
+ root = tree.getroot()
29
+ uuid_to_flat_index = {}
30
+ current_index = 1
31
+
32
+ for elem in root.iter():
33
+ if "uuid" in elem.attrib and elem.tag == "DataSet":
34
+ uuid_to_flat_index[elem.attrib["uuid"]] = current_index
35
+ current_index += 1
36
+
37
+ return flask.make_response(
38
+ {"uuid_to_flat_index": uuid_to_flat_index},
39
+ 200,
40
+ )
41
+
42
+
43
+ def extract_model_uuids(geode_object, file_path):
44
+ model = geode_functions.load(geode_object, file_path)
45
+ mesh_components = model.mesh_components()
46
+
47
+ uuid_dict = {}
48
+
49
+ for mesh_component, ids in mesh_components.items():
50
+ component_name = mesh_component.get()
51
+ uuid_dict[component_name] = [id.string() for id in ids]
52
+
53
+ return uuid_dict
54
+
55
+
56
+ with open(os.path.join(schemas, "mesh_components.json"), "r") as file:
57
+ mesh_components_json = json.load(file)
58
+
59
+
60
+ @routes.route(mesh_components_json["route"], methods=mesh_components_json["methods"])
61
+ def extract_uuids_endpoint():
62
+ print(f"extract_uuids_endpoint : {flask.request=}", flush=True)
63
+
64
+ utils_functions.validate_request(flask.request, mesh_components_json)
65
+
66
+ file_path = os.path.join(
67
+ flask.current_app.config["DATA_FOLDER_PATH"], flask.request.json["filename"]
68
+ )
69
+
70
+ if not os.path.exists(file_path):
71
+ return flask.make_response({"error": "File not found"}, 404)
72
+
73
+ uuid_dict = extract_model_uuids(flask.request.json["geode_object"], file_path)
74
+ return flask.make_response({"uuid_dict": uuid_dict}, 200)
@@ -0,0 +1,30 @@
1
+ def test_model_mesh_components(client):
2
+ route = f"/models/vtm_component_indices"
3
+ get_full_data = lambda: {"id": "cube"}
4
+ json = get_full_data()
5
+ response = client.post(route, json=json)
6
+ assert response.status_code == 200
7
+ uuid_dict = response.json["uuid_to_flat_index"]
8
+ assert type(uuid_dict) is dict
9
+
10
+ indices = list(uuid_dict.values())
11
+ indices.sort()
12
+ assert indices[0] == 1
13
+ assert all(indices[i] == indices[i - 1] + 1 for i in range(1, len(indices)))
14
+
15
+
16
+ def test_extract_brep_uuids(client):
17
+ route = "/models/mesh_components"
18
+ json_data = {"filename": "cube.og_brep", "geode_object": "BRep"}
19
+
20
+ response = client.post(route, json=json_data)
21
+
22
+ assert response.status_code == 200
23
+ uuid_dict = response.json["uuid_dict"]
24
+ assert isinstance(uuid_dict, dict)
25
+ assert (
26
+ "Block" in uuid_dict
27
+ or "Line" in uuid_dict
28
+ or "Surface" in uuid_dict
29
+ or "Corner" in uuid_dict
30
+ )