OpenGeodeWeb-Back 5.10.4__py3-none-any.whl → 5.14.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- opengeodeweb_back/app.py +20 -14
- opengeodeweb_back/geode_functions.py +44 -283
- opengeodeweb_back/geode_objects/__init__.py +61 -0
- opengeodeweb_back/geode_objects/geode_brep.py +102 -0
- opengeodeweb_back/geode_objects/geode_cross_section.py +75 -0
- opengeodeweb_back/geode_objects/geode_edged_curve2d.py +107 -0
- opengeodeweb_back/geode_objects/geode_edged_curve3d.py +107 -0
- opengeodeweb_back/geode_objects/geode_graph.py +76 -0
- opengeodeweb_back/geode_objects/geode_grid2d.py +30 -0
- opengeodeweb_back/geode_objects/geode_grid3d.py +30 -0
- opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py +71 -0
- opengeodeweb_back/geode_objects/geode_implicit_cross_section.py +81 -0
- opengeodeweb_back/geode_objects/geode_implicit_structural_model.py +85 -0
- opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py +72 -0
- opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py +72 -0
- opengeodeweb_back/geode_objects/geode_mesh.py +19 -0
- opengeodeweb_back/geode_objects/geode_model.py +22 -0
- opengeodeweb_back/geode_objects/geode_object.py +78 -0
- opengeodeweb_back/geode_objects/geode_point_set2d.py +105 -0
- opengeodeweb_back/geode_objects/geode_point_set3d.py +105 -0
- opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py +73 -0
- opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py +73 -0
- opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py +73 -0
- opengeodeweb_back/geode_objects/geode_raster_image2d.py +83 -0
- opengeodeweb_back/geode_objects/geode_raster_image3d.py +83 -0
- opengeodeweb_back/geode_objects/geode_regular_grid2d.py +78 -0
- opengeodeweb_back/geode_objects/geode_regular_grid3d.py +78 -0
- opengeodeweb_back/geode_objects/geode_section.py +106 -0
- opengeodeweb_back/geode_objects/geode_solid_mesh3d.py +61 -0
- opengeodeweb_back/geode_objects/geode_structural_model.py +78 -0
- opengeodeweb_back/geode_objects/geode_surface_mesh2d.py +66 -0
- opengeodeweb_back/geode_objects/geode_surface_mesh3d.py +66 -0
- opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py +73 -0
- opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py +77 -0
- opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py +77 -0
- opengeodeweb_back/geode_objects/geode_vertex_set.py +81 -0
- opengeodeweb_back/geode_objects/types.py +75 -0
- opengeodeweb_back/routes/blueprint_routes.py +346 -225
- opengeodeweb_back/routes/create/blueprint_create.py +121 -0
- opengeodeweb_back/routes/create/schemas/__init__.py +3 -0
- opengeodeweb_back/routes/create/schemas/create_aoi.json +45 -0
- opengeodeweb_back/routes/create/schemas/create_aoi.py +25 -0
- opengeodeweb_back/routes/create/schemas/create_point.json +29 -0
- opengeodeweb_back/routes/create/schemas/create_point.py +13 -0
- opengeodeweb_back/routes/create/schemas/create_voi.json +36 -0
- opengeodeweb_back/routes/create/schemas/create_voi.py +24 -0
- opengeodeweb_back/routes/models/blueprint_models.py +27 -27
- opengeodeweb_back/routes/models/schemas/__init__.py +2 -0
- opengeodeweb_back/routes/models/schemas/mesh_components.py +10 -0
- opengeodeweb_back/routes/models/schemas/vtm_component_indices.py +10 -0
- opengeodeweb_back/routes/schemas/__init__.py +17 -0
- opengeodeweb_back/routes/schemas/allowed_files.json +6 -8
- opengeodeweb_back/routes/schemas/allowed_files.py +10 -0
- opengeodeweb_back/routes/schemas/allowed_objects.json +1 -8
- opengeodeweb_back/routes/schemas/allowed_objects.py +10 -0
- opengeodeweb_back/routes/schemas/cell_attribute_names.json +13 -0
- opengeodeweb_back/routes/schemas/cell_attribute_names.py +10 -0
- opengeodeweb_back/routes/schemas/export_project.json +21 -0
- opengeodeweb_back/routes/schemas/export_project.py +12 -0
- opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json +2 -2
- opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py +11 -0
- opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json +2 -2
- opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py +10 -0
- opengeodeweb_back/routes/schemas/import_project.json +10 -0
- opengeodeweb_back/routes/schemas/import_project.py +10 -0
- opengeodeweb_back/routes/schemas/inspect_file.json +2 -2
- opengeodeweb_back/routes/schemas/inspect_file.py +11 -0
- opengeodeweb_back/routes/schemas/kill.py +10 -0
- opengeodeweb_back/routes/schemas/missing_files.json +2 -2
- opengeodeweb_back/routes/schemas/missing_files.py +11 -0
- opengeodeweb_back/routes/schemas/ping.py +10 -0
- opengeodeweb_back/routes/schemas/polygon_attribute_names.py +10 -0
- opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py +10 -0
- opengeodeweb_back/routes/schemas/save_viewable_file.json +2 -2
- opengeodeweb_back/routes/schemas/save_viewable_file.py +11 -0
- opengeodeweb_back/routes/schemas/texture_coordinates.py +10 -0
- opengeodeweb_back/routes/schemas/upload_file.py +11 -0
- opengeodeweb_back/routes/schemas/vertex_attribute_names.py +10 -0
- opengeodeweb_back/test_utils.py +9 -3
- opengeodeweb_back/utils_functions.py +77 -74
- {opengeodeweb_back-5.10.4.dist-info → opengeodeweb_back-5.14.1.dist-info}/METADATA +9 -9
- opengeodeweb_back-5.14.1.dist-info/RECORD +98 -0
- opengeodeweb_back/geode_objects.py +0 -570
- opengeodeweb_back/routes/schemas/create_point.json +0 -29
- opengeodeweb_back-5.10.4.dist-info/RECORD +0 -33
- {opengeodeweb_back-5.10.4.dist-info → opengeodeweb_back-5.14.1.dist-info}/WHEEL +0 -0
- {opengeodeweb_back-5.10.4.dist-info → opengeodeweb_back-5.14.1.dist-info}/entry_points.txt +0 -0
- {opengeodeweb_back-5.10.4.dist-info → opengeodeweb_back-5.14.1.dist-info}/licenses/LICENSE +0 -0
- {opengeodeweb_back-5.10.4.dist-info → opengeodeweb_back-5.14.1.dist-info}/top_level.txt +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
],
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|
|
8
|
-
"
|
|
8
|
+
"geode_object_type": {
|
|
9
9
|
"type": "string",
|
|
10
10
|
"minLength": 1
|
|
11
11
|
},
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"required": [
|
|
18
|
-
"
|
|
18
|
+
"geode_object_type",
|
|
19
19
|
"filename"
|
|
20
20
|
],
|
|
21
21
|
"additionalProperties": false
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
],
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|
|
8
|
-
"
|
|
8
|
+
"geode_object_type": {
|
|
9
9
|
"type": "string",
|
|
10
10
|
"minLength": 1
|
|
11
11
|
},
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"required": [
|
|
18
|
-
"
|
|
18
|
+
"geode_object_type",
|
|
19
19
|
"filename"
|
|
20
20
|
],
|
|
21
21
|
"additionalProperties": false
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from dataclasses_json import DataClassJsonMixin
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclass
|
|
7
|
+
class UploadFile(DataClassJsonMixin):
|
|
8
|
+
def __post_init__(self) -> None:
|
|
9
|
+
print(self, flush=True)
|
|
10
|
+
|
|
11
|
+
filename: Optional[str] = None
|
opengeodeweb_back/test_utils.py
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
# Standard library imports
|
|
2
|
+
from typing import Callable, Any
|
|
2
3
|
|
|
3
4
|
# Third party imports
|
|
5
|
+
from flask.testing import FlaskClient
|
|
4
6
|
|
|
5
7
|
# Local application imports
|
|
6
8
|
|
|
9
|
+
JsonData = dict[str, Any]
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+
|
|
12
|
+
def test_route_wrong_params(
|
|
13
|
+
client: FlaskClient, route: str, get_full_data: Callable[[], JsonData]
|
|
14
|
+
) -> None:
|
|
9
15
|
for key, value in get_full_data().items():
|
|
10
16
|
json = get_full_data()
|
|
11
17
|
json.pop(key)
|
|
12
18
|
response = client.post(route, json=json)
|
|
13
19
|
assert response.status_code == 400
|
|
14
|
-
error_description = response.
|
|
20
|
+
error_description = response.get_json()["description"]
|
|
15
21
|
assert "data must contain" in error_description
|
|
16
22
|
assert f"'{key}'" in error_description
|
|
17
23
|
|
|
@@ -19,6 +25,6 @@ def test_route_wrong_params(client, route, get_full_data):
|
|
|
19
25
|
json["dumb_key"] = "dumb_value"
|
|
20
26
|
response = client.post(route, json=json)
|
|
21
27
|
assert response.status_code == 400
|
|
22
|
-
error_description = response.
|
|
28
|
+
error_description = response.get_json()["description"]
|
|
23
29
|
assert "data must not contain" in error_description
|
|
24
30
|
assert "'dumb_key'" in error_description
|
|
@@ -4,8 +4,9 @@ import threading
|
|
|
4
4
|
import time
|
|
5
5
|
import zipfile
|
|
6
6
|
from collections.abc import Callable
|
|
7
|
-
from typing import Any
|
|
8
7
|
from concurrent.futures import ThreadPoolExecutor
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
9
10
|
|
|
10
11
|
# Third party imports
|
|
11
12
|
import flask
|
|
@@ -14,11 +15,15 @@ import importlib.metadata as metadata
|
|
|
14
15
|
import shutil
|
|
15
16
|
from werkzeug.exceptions import HTTPException
|
|
16
17
|
import werkzeug
|
|
18
|
+
from opengeodeweb_microservice.schemas import SchemaDict
|
|
19
|
+
from opengeodeweb_microservice.database.data import Data
|
|
20
|
+
from opengeodeweb_microservice.database.connection import get_session
|
|
17
21
|
|
|
18
22
|
# Local application imports
|
|
19
23
|
from . import geode_functions
|
|
20
|
-
from
|
|
21
|
-
from
|
|
24
|
+
from .geode_objects import geode_objects
|
|
25
|
+
from .geode_objects.types import GeodeObjectType
|
|
26
|
+
from .geode_objects.geode_object import GeodeObject
|
|
22
27
|
|
|
23
28
|
|
|
24
29
|
def increment_request_counter(current_app: flask.Flask) -> None:
|
|
@@ -98,7 +103,7 @@ def versions(list_packages: list[str]) -> list[dict[str, str]]:
|
|
|
98
103
|
return list_with_versions
|
|
99
104
|
|
|
100
105
|
|
|
101
|
-
def validate_request(request: flask.Request, schema: dict[str,
|
|
106
|
+
def validate_request(request: flask.Request, schema: SchemaDict) -> dict[str, Any]:
|
|
102
107
|
json_data = request.get_json(force=True, silent=True)
|
|
103
108
|
|
|
104
109
|
if json_data is None:
|
|
@@ -108,11 +113,13 @@ def validate_request(request: flask.Request, schema: dict[str, str]) -> None:
|
|
|
108
113
|
validate(json_data)
|
|
109
114
|
except fastjsonschema.JsonSchemaException as e:
|
|
110
115
|
error_msg = str(e)
|
|
116
|
+
print("Validation failed:", error_msg, flush=True)
|
|
111
117
|
flask.abort(400, error_msg)
|
|
118
|
+
return json_data
|
|
112
119
|
|
|
113
120
|
|
|
114
121
|
def set_interval(
|
|
115
|
-
function: Callable[[
|
|
122
|
+
function: Callable[[flask.Flask], None], seconds: float, args: flask.Flask
|
|
116
123
|
) -> threading.Timer:
|
|
117
124
|
def function_wrapper() -> None:
|
|
118
125
|
set_interval(function, seconds, args)
|
|
@@ -129,14 +136,16 @@ def extension_from_filename(filename: str) -> str:
|
|
|
129
136
|
|
|
130
137
|
|
|
131
138
|
def send_file(
|
|
132
|
-
upload_folder: str, saved_files: str, new_file_name: str
|
|
139
|
+
upload_folder: str, saved_files: list[str], new_file_name: str
|
|
133
140
|
) -> flask.Response:
|
|
134
141
|
if len(saved_files) == 1:
|
|
135
142
|
mimetype = "application/octet-binary"
|
|
136
143
|
else:
|
|
137
144
|
mimetype = "application/zip"
|
|
138
145
|
new_file_name = os.path.splitext(new_file_name)[0] + ".zip"
|
|
139
|
-
with zipfile.ZipFile(
|
|
146
|
+
with zipfile.ZipFile(
|
|
147
|
+
os.path.join(os.path.abspath(upload_folder), new_file_name), "w"
|
|
148
|
+
) as zipObj:
|
|
140
149
|
for saved_file_path in saved_files:
|
|
141
150
|
zipObj.write(
|
|
142
151
|
saved_file_path,
|
|
@@ -144,7 +153,7 @@ def send_file(
|
|
|
144
153
|
)
|
|
145
154
|
|
|
146
155
|
response = flask.send_from_directory(
|
|
147
|
-
directory=upload_folder,
|
|
156
|
+
directory=os.path.abspath(upload_folder),
|
|
148
157
|
path=new_file_name,
|
|
149
158
|
as_attachment=True,
|
|
150
159
|
mimetype=mimetype,
|
|
@@ -156,15 +165,16 @@ def send_file(
|
|
|
156
165
|
|
|
157
166
|
|
|
158
167
|
def handle_exception(exception: HTTPException) -> flask.Response:
|
|
159
|
-
|
|
160
|
-
response
|
|
168
|
+
print("\033[91mError:\033[0m \033[91m" + str(exception) + "\033[0m", flush=True)
|
|
169
|
+
response = flask.jsonify(
|
|
161
170
|
{
|
|
162
171
|
"code": exception.code,
|
|
163
172
|
"name": exception.name,
|
|
164
|
-
"description": exception.description,
|
|
173
|
+
"description": exception.description or "An error occurred",
|
|
165
174
|
}
|
|
166
175
|
)
|
|
167
176
|
response.content_type = "application/json"
|
|
177
|
+
response.status_code = exception.code or 500
|
|
168
178
|
return response
|
|
169
179
|
|
|
170
180
|
|
|
@@ -176,85 +186,79 @@ def create_data_folder_from_id(data_id: str) -> str:
|
|
|
176
186
|
|
|
177
187
|
|
|
178
188
|
def save_all_viewables_and_return_info(
|
|
179
|
-
geode_object:
|
|
180
|
-
data:
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
) -> dict[str, Any]:
|
|
184
|
-
if additional_files is None:
|
|
185
|
-
additional_files = []
|
|
186
|
-
|
|
187
|
-
data_entry = Data.create(
|
|
188
|
-
geode_object=geode_object,
|
|
189
|
-
input_file=input_file,
|
|
190
|
-
additional_files=additional_files,
|
|
191
|
-
)
|
|
192
|
-
data_path = create_data_folder_from_id(data_entry.id)
|
|
189
|
+
geode_object: GeodeObject,
|
|
190
|
+
data: Data,
|
|
191
|
+
data_path: str,
|
|
192
|
+
) -> dict[str, str | list[str]]:
|
|
193
193
|
with ThreadPoolExecutor() as executor:
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
194
|
+
(native_files, viewable_path, light_path) = executor.map(
|
|
195
|
+
lambda args: args[0](args[1]),
|
|
196
|
+
[
|
|
197
|
+
(
|
|
198
|
+
geode_object.save,
|
|
199
|
+
os.path.join(
|
|
200
|
+
data_path, "native." + geode_object.native_extension()
|
|
201
|
+
),
|
|
202
|
+
),
|
|
203
|
+
(geode_object.save_viewable, os.path.join(data_path, "viewable")),
|
|
204
|
+
(
|
|
205
|
+
geode_object.save_light_viewable,
|
|
206
|
+
os.path.join(data_path, "light_viewable"),
|
|
207
|
+
),
|
|
208
|
+
],
|
|
203
209
|
)
|
|
204
|
-
|
|
205
|
-
geode_functions.save_light_viewable,
|
|
206
|
-
geode_object,
|
|
207
|
-
data,
|
|
208
|
-
data_path,
|
|
209
|
-
"light_viewable",
|
|
210
|
-
)
|
|
211
|
-
saved_light_viewable_file_path = light_viewable_future.result()
|
|
212
|
-
with open(saved_light_viewable_file_path, "rb") as f:
|
|
210
|
+
with open(light_path, "rb") as f:
|
|
213
211
|
binary_light_viewable = f.read()
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
212
|
+
data.native_file = os.path.basename(native_files[0])
|
|
213
|
+
data.viewable_file = os.path.basename(viewable_path)
|
|
214
|
+
data.light_viewable_file = os.path.basename(light_path)
|
|
215
|
+
assert data.native_file is not None
|
|
216
|
+
assert data.viewable_file is not None
|
|
217
|
+
assert data.light_viewable_file is not None
|
|
220
218
|
return {
|
|
221
|
-
"
|
|
222
|
-
"
|
|
223
|
-
"id":
|
|
224
|
-
"
|
|
219
|
+
"native_file": data.native_file,
|
|
220
|
+
"viewable_file": data.viewable_file,
|
|
221
|
+
"id": data.id,
|
|
222
|
+
"name": geode_object.identifier.name(),
|
|
223
|
+
"viewer_type": data.viewer_object,
|
|
225
224
|
"binary_light_viewable": binary_light_viewable.decode("utf-8"),
|
|
226
|
-
"
|
|
227
|
-
"input_file":
|
|
228
|
-
"additional_files":
|
|
225
|
+
"geode_object_type": data.geode_object,
|
|
226
|
+
"input_file": data.input_file or "",
|
|
227
|
+
"additional_files": data.additional_files or [],
|
|
229
228
|
}
|
|
230
229
|
|
|
231
230
|
|
|
232
231
|
def generate_native_viewable_and_light_viewable_from_object(
|
|
233
|
-
geode_object:
|
|
234
|
-
) -> dict[str,
|
|
235
|
-
|
|
232
|
+
geode_object: GeodeObject,
|
|
233
|
+
) -> dict[str, str | list[str]]:
|
|
234
|
+
data = Data.create(
|
|
235
|
+
geode_object=geode_object.geode_object_type(),
|
|
236
|
+
viewer_object=geode_object.viewer_type(),
|
|
237
|
+
)
|
|
238
|
+
data_path = create_data_folder_from_id(data.id)
|
|
239
|
+
return save_all_viewables_and_return_info(geode_object, data, data_path)
|
|
236
240
|
|
|
237
241
|
|
|
238
242
|
def generate_native_viewable_and_light_viewable_from_file(
|
|
239
|
-
|
|
240
|
-
) -> dict[str,
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
geode_object=
|
|
244
|
-
|
|
245
|
-
|
|
243
|
+
geode_object_type: GeodeObjectType, input_file: str
|
|
244
|
+
) -> dict[str, str | list[str]]:
|
|
245
|
+
generic_geode_object = geode_objects[geode_object_type]
|
|
246
|
+
data = Data.create(
|
|
247
|
+
geode_object=geode_object_type,
|
|
248
|
+
viewer_object=generic_geode_object.viewer_type(),
|
|
249
|
+
input_file=input_file,
|
|
246
250
|
)
|
|
247
251
|
|
|
248
|
-
data_path = create_data_folder_from_id(
|
|
252
|
+
data_path = create_data_folder_from_id(data.id)
|
|
249
253
|
|
|
250
|
-
full_input_filename = geode_functions.upload_file_path(
|
|
254
|
+
full_input_filename = geode_functions.upload_file_path(input_file)
|
|
251
255
|
copied_full_path = os.path.join(
|
|
252
|
-
data_path, werkzeug.utils.secure_filename(
|
|
256
|
+
data_path, werkzeug.utils.secure_filename(input_file)
|
|
253
257
|
)
|
|
254
258
|
shutil.copy2(full_input_filename, copied_full_path)
|
|
255
259
|
|
|
256
260
|
additional_files_copied: list[str] = []
|
|
257
|
-
additional =
|
|
261
|
+
additional = generic_geode_object.additional_files(full_input_filename)
|
|
258
262
|
for additional_file in additional.mandatory_files + additional.optional_files:
|
|
259
263
|
if additional_file.is_missing:
|
|
260
264
|
continue
|
|
@@ -268,11 +272,10 @@ def generate_native_viewable_and_light_viewable_from_file(
|
|
|
268
272
|
shutil.copy2(source_path, dest_path)
|
|
269
273
|
additional_files_copied.append(additional_file.filename)
|
|
270
274
|
|
|
271
|
-
|
|
272
|
-
|
|
275
|
+
geode_object = generic_geode_object.load(copied_full_path)
|
|
276
|
+
data.additional_files = additional_files_copied
|
|
273
277
|
return save_all_viewables_and_return_info(
|
|
274
278
|
geode_object,
|
|
275
279
|
data,
|
|
276
|
-
|
|
277
|
-
additional_files=additional_files_copied,
|
|
280
|
+
data_path,
|
|
278
281
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OpenGeodeWeb-Back
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.14.1
|
|
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,18 +16,18 @@ 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.11.
|
|
20
|
-
Requires-Dist: geode-viewables==3.3.
|
|
19
|
+
Requires-Dist: geode-common==33.11.3
|
|
20
|
+
Requires-Dist: geode-viewables==3.3.2
|
|
21
21
|
Requires-Dist: itsdangerous>=2
|
|
22
22
|
Requires-Dist: jinja2>=3
|
|
23
23
|
Requires-Dist: markupsafe>=3
|
|
24
|
-
Requires-Dist: opengeode-core==15.
|
|
25
|
-
Requires-Dist: opengeode-geosciences==9.
|
|
26
|
-
Requires-Dist: opengeode-geosciencesio==5.8.
|
|
27
|
-
Requires-Dist: opengeode-inspector==6.8.
|
|
28
|
-
Requires-Dist: opengeode-io==7.4.
|
|
24
|
+
Requires-Dist: opengeode-core==15.30.4
|
|
25
|
+
Requires-Dist: opengeode-geosciences==9.5.5
|
|
26
|
+
Requires-Dist: opengeode-geosciencesio==5.8.6
|
|
27
|
+
Requires-Dist: opengeode-inspector==6.8.6
|
|
28
|
+
Requires-Dist: opengeode-io==7.4.6
|
|
29
29
|
Requires-Dist: werkzeug==3.1.2
|
|
30
|
-
Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.
|
|
30
|
+
Requires-Dist: opengeodeweb-microservice==1.*,>=1.0.11
|
|
31
31
|
Dynamic: license-file
|
|
32
32
|
|
|
33
33
|
<h1 align="center">OpenGeodeWeb-Back<sup><i>by Geode-solutions</i></sup></h1>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
opengeodeweb_back/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
opengeodeweb_back/app.py,sha256=dKh_LIQPrak6Fb6FJvy5c0f--H9J4ELC95oFyhA8hWk,5430
|
|
3
|
+
opengeodeweb_back/app_config.py,sha256=z-omTiGj3-y0BZ1IchAM6EoTdC7vAX6B4OymEnuM0T4,843
|
|
4
|
+
opengeodeweb_back/geode_functions.py,sha256=8ThDrC-AnuSocQ_vlx5nipsHchl22iO3wZTXwgeBGGg,2710
|
|
5
|
+
opengeodeweb_back/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
|
6
|
+
opengeodeweb_back/test_utils.py,sha256=kFsEhWNaTKTSMMzvrfg7PqYC50AFnV1J2uL6iNyPix8,960
|
|
7
|
+
opengeodeweb_back/utils_functions.py,sha256=VIzWBfsqXMIULAOjpyiM8kI2ojPKIeubhveDWVCCqkk,9590
|
|
8
|
+
opengeodeweb_back/geode_objects/__init__.py,sha256=DDiMRx6fjss3RmJ_fyKwaG5M8Bc0Xc0f1ppPG8v3jPk,2713
|
|
9
|
+
opengeodeweb_back/geode_objects/geode_brep.py,sha256=_8UQ1Ay8p8VWH-m5KeLE9pg_-GSl6eKqKsWJ6c3FQ9M,3198
|
|
10
|
+
opengeodeweb_back/geode_objects/geode_cross_section.py,sha256=8xV4Wsq852Nm3jFIzo4AdGPO3OdxNy1JKonk5eSndbQ,2531
|
|
11
|
+
opengeodeweb_back/geode_objects/geode_edged_curve2d.py,sha256=MmO8YFvVKBMf0JduLcZN-WXFgF6mn-Lq-0-eKLfMWRM,3500
|
|
12
|
+
opengeodeweb_back/geode_objects/geode_edged_curve3d.py,sha256=OnLULXEF211ryytq8DWXgipwzNJ-pomg8QzdPU-FyeU,3499
|
|
13
|
+
opengeodeweb_back/geode_objects/geode_graph.py,sha256=uTCbLkha_La2wpjF9qzjOw4XEG5CizqXSmYMvJJ_dLk,2101
|
|
14
|
+
opengeodeweb_back/geode_objects/geode_grid2d.py,sha256=bQL6i_MB6ofOc-gBazVL7faU9csX_oaLqucOCN4u8HY,635
|
|
15
|
+
opengeodeweb_back/geode_objects/geode_grid3d.py,sha256=5Qx_EYJc41r2KLnFBYMQSokIp4nJE5A6jdp1NyAVKlY,634
|
|
16
|
+
opengeodeweb_back/geode_objects/geode_hybrid_solid3d.py,sha256=-xn3gONdCXN8LWPQgpV5OhewNfKzfhhtVidAQY8map4,2365
|
|
17
|
+
opengeodeweb_back/geode_objects/geode_implicit_cross_section.py,sha256=tvuRsNEQv81wGfxTvF_1PpNw5BszDI6IYbrEf9ZI-Rk,2881
|
|
18
|
+
opengeodeweb_back/geode_objects/geode_implicit_structural_model.py,sha256=4h9--CD49aVp5piq6m-im3z7IGX31KBpbsxXYEMjnhU,3057
|
|
19
|
+
opengeodeweb_back/geode_objects/geode_light_regular_grid2d.py,sha256=86PnOhRy8plNORPv5X6e4o2RmSyA0fH45ygz3dc3i4U,2545
|
|
20
|
+
opengeodeweb_back/geode_objects/geode_light_regular_grid3d.py,sha256=bmg1A9JCFsTeF-ftaU7fLTFqCpK3hwfCm6P6rURby48,2545
|
|
21
|
+
opengeodeweb_back/geode_objects/geode_mesh.py,sha256=mLe4w097qlngo7upcSkwnNbFBokKWnSx_Elx52wn1hI,452
|
|
22
|
+
opengeodeweb_back/geode_objects/geode_model.py,sha256=Ml9qXLlhpDWG_x34hYgxcYolWsAFl_ouJmnj1bD0WjQ,571
|
|
23
|
+
opengeodeweb_back/geode_objects/geode_object.py,sha256=7Mb3NjMSoNQ4NqPYRDZxygR8e0Bko-HSPYzsOcilabk,1886
|
|
24
|
+
opengeodeweb_back/geode_objects/geode_point_set2d.py,sha256=7SM8n198vEHlAok_dDhjFY_0Fv_NICDTIyZXbJAARgQ,3409
|
|
25
|
+
opengeodeweb_back/geode_objects/geode_point_set3d.py,sha256=2ZORpNZJzl_djazldUlLXHgLVnkORjsAm6NLzRq4DoU,3408
|
|
26
|
+
opengeodeweb_back/geode_objects/geode_polygonal_surface2d.py,sha256=NvlxVkWiV-LWwtA67I7VQ1UVsHtw_kHa7HvoKb5FQ1A,2550
|
|
27
|
+
opengeodeweb_back/geode_objects/geode_polygonal_surface3d.py,sha256=NnTDF449ep7VOWSBaP-zp57iBYQebfgK9Kc_v9niGIQ,2550
|
|
28
|
+
opengeodeweb_back/geode_objects/geode_polyhedral_solid3d.py,sha256=y7Uy6u0e_cuNhjja9jPkhCAEStGRzmHZtFXQKFsTo8Q,2513
|
|
29
|
+
opengeodeweb_back/geode_objects/geode_raster_image2d.py,sha256=rvmSD3i_fHz8RtG2NLBGrwogE1gUW6FZ1NXphYHr-Yk,2474
|
|
30
|
+
opengeodeweb_back/geode_objects/geode_raster_image3d.py,sha256=ocmOy7qgYsj8gEliUW9P3iF5ws36heEDY4urLnoYl-E,2473
|
|
31
|
+
opengeodeweb_back/geode_objects/geode_regular_grid2d.py,sha256=0Ro1ZtPsAvIqKBV4fEMLBpS6Jdt1ZJ7b9k9wMQqICeo,2639
|
|
32
|
+
opengeodeweb_back/geode_objects/geode_regular_grid3d.py,sha256=S_I9tm9G6EosJxQ6YvrfypDxJWOnB7Z9lyAXtCjNHok,2631
|
|
33
|
+
opengeodeweb_back/geode_objects/geode_section.py,sha256=BP-_Ydfyvt8utKEz6SwBo-0mylkV5HoPOegvWKL2IbI,3378
|
|
34
|
+
opengeodeweb_back/geode_objects/geode_solid_mesh3d.py,sha256=8PUBC7L22EKzebTx8XHIjOb3KJe9SOPP_h45s6AX4cc,1975
|
|
35
|
+
opengeodeweb_back/geode_objects/geode_structural_model.py,sha256=3W3RIHK7J5BGubQfCm2lp85qjS7Y7z1LmjVT2PYczzY,2680
|
|
36
|
+
opengeodeweb_back/geode_objects/geode_surface_mesh2d.py,sha256=f5Dnosjeua8NVnNipuLCjelKVqFYA8NfCHgTlXy_ZiA,2153
|
|
37
|
+
opengeodeweb_back/geode_objects/geode_surface_mesh3d.py,sha256=R0plNmUpDuAF8-aE-wBRSVz5R_g8rIUJPsgADl5pdNw,2152
|
|
38
|
+
opengeodeweb_back/geode_objects/geode_tetrahedral_solid3d.py,sha256=fUnHwVJukWcikUPMrNyaMW8V8oAjTlmN8HSqQsXmLZg,2544
|
|
39
|
+
opengeodeweb_back/geode_objects/geode_triangulated_surface2d.py,sha256=XkMqTyfU94LB7_mJEHTDr-jvJhegGf82w8xY7G5Etpg,2679
|
|
40
|
+
opengeodeweb_back/geode_objects/geode_triangulated_surface3d.py,sha256=USx61xlzyNRet3Z3XAosK2ZHJnALrsr_twJ1TKpuNdc,2679
|
|
41
|
+
opengeodeweb_back/geode_objects/geode_vertex_set.py,sha256=4oB-kwvp35dKDrLCCoHN1c7UI79GHBlmkFEfoOOUPvs,2367
|
|
42
|
+
opengeodeweb_back/geode_objects/types.py,sha256=agbK3nuwDIOwa-xFoYxWY43Upz_XyQFjLcZtWRcokTk,1708
|
|
43
|
+
opengeodeweb_back/routes/blueprint_routes.py,sha256=qC1OaanmS_H9Tnmdq4TfQ2uPhb3hYtnKMtPyAlSylv0,19118
|
|
44
|
+
opengeodeweb_back/routes/create/blueprint_create.py,sha256=eh4D8Dj_-Aps0ieewJ-f6XrEXO0aJbbxsKPLMr0G3zM,4229
|
|
45
|
+
opengeodeweb_back/routes/create/schemas/__init__.py,sha256=UyslqS2HwJX1hd2XGDB7jxJOP1i5HYWDP3bdoDGaTis,80
|
|
46
|
+
opengeodeweb_back/routes/create/schemas/create_aoi.json,sha256=cRrkyPiTaOV8rM8xQz99ieuhLktipvV5AisA2A7oqEU,972
|
|
47
|
+
opengeodeweb_back/routes/create/schemas/create_aoi.py,sha256=2AS00g7AjQqcebCl2-N6cLsOgYU0UnmGGqtHqDldf9c,485
|
|
48
|
+
opengeodeweb_back/routes/create/schemas/create_point.json,sha256=ddfDzWKj4cMYhF6oJzvRh0bpTiQo1hqLFODK-vJjxHQ,484
|
|
49
|
+
opengeodeweb_back/routes/create/schemas/create_point.py,sha256=FqDyZBzRAi_0Cv7r47bFfRz8wPRxspebYq4EisaM1-8,257
|
|
50
|
+
opengeodeweb_back/routes/create/schemas/create_voi.json,sha256=Y9zBXRXPsHWnkNY6PcpHQ8R4-qO_ywn6KXY-v_7Kpgk,810
|
|
51
|
+
opengeodeweb_back/routes/create/schemas/create_voi.py,sha256=_iu_vvNWRLnjiDUp_rKfvI2GjIdkoMaoPSXUc3m-S8c,501
|
|
52
|
+
opengeodeweb_back/routes/models/blueprint_models.py,sha256=ZKudPQWUJbRb7U71fzXwjbZ_e952hXc0Id11xLwuhH4,2122
|
|
53
|
+
opengeodeweb_back/routes/models/schemas/__init__.py,sha256=kNhYSdP7ti6BEalSO3fNfJJf_S7u0kEQDFRdBTDVNQY,68
|
|
54
|
+
opengeodeweb_back/routes/models/schemas/mesh_components.json,sha256=JmQUvpy7HpGS6FlThZLx1YjHqiInRTqUZ_Ft5MfOzEE,239
|
|
55
|
+
opengeodeweb_back/routes/models/schemas/mesh_components.py,sha256=SbuBkplhvdodqWU6FbiVEstnp0gCTokHv1nv4go34oo,219
|
|
56
|
+
opengeodeweb_back/routes/models/schemas/vtm_component_indices.json,sha256=0XILVxhAxi0RhQFDZZoUeGcAnBMroWz3kNJS7-6_dKQ,239
|
|
57
|
+
opengeodeweb_back/routes/models/schemas/vtm_component_indices.py,sha256=n4r3699N4aFWbCPlXQImxdQ7SyUjlQR001dbUwO6P50,224
|
|
58
|
+
opengeodeweb_back/routes/schemas/__init__.py,sha256=retWNAvQT3HgIaWyzn2JXUxk10lCC4x6ScDdXsKm214,564
|
|
59
|
+
opengeodeweb_back/routes/schemas/allowed_files.json,sha256=-CiTUZDGnwaBZB5Tfrx_YyDgqyh1qy34XuBtEz8cQiU,153
|
|
60
|
+
opengeodeweb_back/routes/schemas/allowed_files.py,sha256=ChVc0pZcoE5a-3a9stNg_4W7zLI8n6u8Yb_8Bja7I-U,214
|
|
61
|
+
opengeodeweb_back/routes/schemas/allowed_objects.json,sha256=MRoBem4GlZwxsFLUYzBgica7XeaB12KnKBFGHro1ZVA,245
|
|
62
|
+
opengeodeweb_back/routes/schemas/allowed_objects.py,sha256=QyH8VojA2s8ib3lDXsnXTEZOWFs4gf2KkLGS7A52XhU,225
|
|
63
|
+
opengeodeweb_back/routes/schemas/cell_attribute_names.json,sha256=GnxSjeMC42pBeWiSuP5E_jkTUIUqmkralrlje2cAefg,223
|
|
64
|
+
opengeodeweb_back/routes/schemas/cell_attribute_names.py,sha256=ntH71e691rgMZoTPoInBAFVZicerf5zSvO_FoRLK92A,223
|
|
65
|
+
opengeodeweb_back/routes/schemas/export_project.json,sha256=Du59q6UMidnHU3N_eCppMiOtpfG3zaSbaJvwektR19g,308
|
|
66
|
+
opengeodeweb_back/routes/schemas/export_project.py,sha256=Z1n5S9eq_TQ04c5eG3TcMwHKYdI__JqKoIyCPlD-xmE,282
|
|
67
|
+
opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.json,sha256=1QOOg3tKt0LWPPpTScnjrsyCtW8_7SO4MhF4BsSii1U,369
|
|
68
|
+
opengeodeweb_back/routes/schemas/geode_objects_and_output_extensions.py,sha256=9s592iSyCjYYDWKXi7jWOW9mGFu-9aelxCdAAo7ziqc,269
|
|
69
|
+
opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json,sha256=PsD4Tafvg9ZJPhqe7YgwnRuvEBEjouNKkcs9Gr5Z97E,277
|
|
70
|
+
opengeodeweb_back/routes/schemas/geographic_coordinate_systems.py,sha256=rj_LYcwSZlM3gMg3p9pI5Jz2_B4KJ1caqSDOc7iRiNQ,247
|
|
71
|
+
opengeodeweb_back/routes/schemas/import_project.json,sha256=c2hZYhfd8hjCvzME7ITiBGwSPX_O466JVcWak-DYbr8,154
|
|
72
|
+
opengeodeweb_back/routes/schemas/import_project.py,sha256=bjK9KdlkpC8kQFN6Ni8i9OIp9z8hE-mhPT0czTxyedo,215
|
|
73
|
+
opengeodeweb_back/routes/schemas/inspect_file.json,sha256=SQv9x-bmxh_6GZdLrOdIq2gKU9BZh6Gj5zi_6kEBOaQ,346
|
|
74
|
+
opengeodeweb_back/routes/schemas/inspect_file.py,sha256=awgjcsIpihL9Z2aJKQZoih9rSyHsIYUhyBmj44ftqXY,249
|
|
75
|
+
opengeodeweb_back/routes/schemas/kill.json,sha256=tZEv4TuTNNthet2MsxUPLV3ivW6tIGjYTfxd6Jl9zaM,144
|
|
76
|
+
opengeodeweb_back/routes/schemas/kill.py,sha256=DbQyF57NJ4BsOo7UbKzKwm5rERkphIAh28QVt2DJcA8,206
|
|
77
|
+
opengeodeweb_back/routes/schemas/missing_files.json,sha256=yUGS0T9ttlH5mJHZ10W1AdcExqESmnArzUDf8dfDwb0,347
|
|
78
|
+
opengeodeweb_back/routes/schemas/missing_files.py,sha256=04AgU9YZGQWVIvcGb_Ywka-yj8aMgPm-tznUVbAupBA,250
|
|
79
|
+
opengeodeweb_back/routes/schemas/ping.json,sha256=MhI5jtrjMsAsfIKEzdY8p1HyV9xv4O3hYfESWw6tkyE,162
|
|
80
|
+
opengeodeweb_back/routes/schemas/ping.py,sha256=_dAfbVQD_fJ-Sq4d1UEt4W0U6Sqv3WyWtgFpauUOtG4,206
|
|
81
|
+
opengeodeweb_back/routes/schemas/polygon_attribute_names.json,sha256=1BrpfjcbRL1ZOL4azHIHirqXIc8tpu4xGnMRFEMEshU,241
|
|
82
|
+
opengeodeweb_back/routes/schemas/polygon_attribute_names.py,sha256=Y_tCbn3Qt2uvm7T3cBbU0V0Xw0Qit0jvbsYP80fzTlU,226
|
|
83
|
+
opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json,sha256=Tt6fWBGOWgxOVC-n76_JbOQcZ-Ss-foPghMrQOY-DIE,244
|
|
84
|
+
opengeodeweb_back/routes/schemas/polyhedron_attribute_names.py,sha256=3JLVj5fwcR41YnHh4WHLy9PFWxGkb1X2Y2YJA9JYwH4,229
|
|
85
|
+
opengeodeweb_back/routes/schemas/save_viewable_file.json,sha256=5u-PRo_lZ3Dy7IB9Ed6HiBACvNa4zIVuXSRT6OJPR7Q,422
|
|
86
|
+
opengeodeweb_back/routes/schemas/save_viewable_file.py,sha256=orDXtY8360loyu_pcUOGLo0pH_5fq0aMio5q6wU8PCk,254
|
|
87
|
+
opengeodeweb_back/routes/schemas/texture_coordinates.json,sha256=2uQueIl1jOmxFG_gIi_vJETR4IurrwuSf8GAnzphk9g,237
|
|
88
|
+
opengeodeweb_back/routes/schemas/texture_coordinates.py,sha256=BdH2_DFyud_ic1NmxZpzoOrJUzwp1yJbCLVnoG8M-Js,223
|
|
89
|
+
opengeodeweb_back/routes/schemas/upload_file.json,sha256=LJ3U3L5ApKuQDVFIpVT_y2alq4HW_suTvZ3HUucNbhg,219
|
|
90
|
+
opengeodeweb_back/routes/schemas/upload_file.py,sha256=bnkk7qJNByXDeq_EiKCHfQaHUqDmzktLAL__ozyBr0A,266
|
|
91
|
+
opengeodeweb_back/routes/schemas/vertex_attribute_names.json,sha256=ECIflohiqPZNsflAdkfEzksL4we0JvZhIxUd84Ubctg,240
|
|
92
|
+
opengeodeweb_back/routes/schemas/vertex_attribute_names.py,sha256=tRFpdN-Nh4LbEpN0yM4H0DD1G_4ni0UAvpJ42qtSxwM,225
|
|
93
|
+
opengeodeweb_back-5.14.1.dist-info/licenses/LICENSE,sha256=LoTB-aqQvzTGxoTRXNnhNV0LKiqdk2bQv6MB34l8zkI,1079
|
|
94
|
+
opengeodeweb_back-5.14.1.dist-info/METADATA,sha256=TPOPJWchIl0QHU8HOCmzbF8qd9TknPOcGR3VmIcqHIg,2663
|
|
95
|
+
opengeodeweb_back-5.14.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
96
|
+
opengeodeweb_back-5.14.1.dist-info/entry_points.txt,sha256=3W_t5GFc9ROHSIZ55IGvYU3DLHUFQmYOM4Bm9u3Z0cE,71
|
|
97
|
+
opengeodeweb_back-5.14.1.dist-info/top_level.txt,sha256=tN1FZeLIVBrdja2-pbmhg5-tK-JILmmT9OeIBnhlUrQ,18
|
|
98
|
+
opengeodeweb_back-5.14.1.dist-info/RECORD,,
|