OpenGeodeWeb-Back 5.8.7__py3-none-any.whl → 5.9.0rc1__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/geode_functions.py +22 -0
- opengeodeweb_back/routes/blueprint_routes.py +32 -39
- opengeodeweb_back/routes/models/blueprint_models.py +12 -19
- opengeodeweb_back/routes/models/schemas/mesh_components.json +9 -2
- opengeodeweb_back/routes/models/schemas/vtm_component_indices.json +2 -1
- opengeodeweb_back/routes/schemas/polygon_attribute_names.json +6 -1
- opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json +6 -1
- opengeodeweb_back/routes/schemas/texture_coordinates.json +5 -0
- opengeodeweb_back/routes/schemas/vertex_attribute_names.json +6 -1
- opengeodeweb_back/utils_functions.py +9 -8
- {opengeodeweb_back-5.8.7.dist-info → opengeodeweb_back-5.9.0rc1.dist-info}/METADATA +1 -1
- {opengeodeweb_back-5.8.7.dist-info → opengeodeweb_back-5.9.0rc1.dist-info}/RECORD +15 -15
- {opengeodeweb_back-5.8.7.dist-info → opengeodeweb_back-5.9.0rc1.dist-info}/WHEEL +0 -0
- {opengeodeweb_back-5.8.7.dist-info → opengeodeweb_back-5.9.0rc1.dist-info}/licenses/LICENSE +0 -0
- {opengeodeweb_back-5.8.7.dist-info → opengeodeweb_back-5.9.0rc1.dist-info}/top_level.txt +0 -0
@@ -4,6 +4,8 @@ import os
|
|
4
4
|
# Third party imports
|
5
5
|
import opengeode_geosciences as og_gs
|
6
6
|
import opengeode as og
|
7
|
+
import werkzeug
|
8
|
+
import flask
|
7
9
|
|
8
10
|
# Local application imports
|
9
11
|
from .geode_objects import geode_objects_dict
|
@@ -38,6 +40,26 @@ def load(geode_object: str, file_absolute_path: str):
|
|
38
40
|
return geode_object_value(geode_object)["load"](file_absolute_path)
|
39
41
|
|
40
42
|
|
43
|
+
def data_file_path(data_id: str, filename: str) -> str:
|
44
|
+
data_folder_path = flask.current_app.config["DATA_FOLDER_PATH"]
|
45
|
+
return os.path.join(
|
46
|
+
data_folder_path,
|
47
|
+
data_id,
|
48
|
+
werkzeug.utils.secure_filename(filename),
|
49
|
+
)
|
50
|
+
|
51
|
+
|
52
|
+
def load_data(geode_object: str, data_id: str, filename: str):
|
53
|
+
file_absolute_path = data_file_path(data_id, filename)
|
54
|
+
return load(geode_object, file_absolute_path)
|
55
|
+
|
56
|
+
|
57
|
+
def upload_file_path(filename):
|
58
|
+
upload_folder = flask.current_app.config["UPLOAD_FOLDER"]
|
59
|
+
secure_filename = werkzeug.utils.secure_filename(filename)
|
60
|
+
return os.path.abspath(os.path.join(upload_folder, secure_filename))
|
61
|
+
|
62
|
+
|
41
63
|
def is_saveable(geode_object: str, data, filename: str):
|
42
64
|
return geode_object_value(geode_object)["is_saveable"](data, filename)
|
43
65
|
|
@@ -97,9 +97,10 @@ def allowed_objects():
|
|
97
97
|
if flask.request.method == "OPTIONS":
|
98
98
|
return flask.make_response({}, 200)
|
99
99
|
|
100
|
-
UPLOAD_FOLDER = flask.current_app.config["UPLOAD_FOLDER"]
|
101
100
|
utils_functions.validate_request(flask.request, allowed_objects_json)
|
102
|
-
file_absolute_path =
|
101
|
+
file_absolute_path = geode_functions.upload_file_path(
|
102
|
+
flask.request.json["filename"]
|
103
|
+
)
|
103
104
|
allowed_objects = geode_functions.list_geode_objects(
|
104
105
|
file_absolute_path, flask.request.json["supported_feature"]
|
105
106
|
)
|
@@ -118,12 +119,11 @@ with open(
|
|
118
119
|
methods=missing_files_json["methods"],
|
119
120
|
)
|
120
121
|
def missing_files():
|
121
|
-
UPLOAD_FOLDER = flask.current_app.config["UPLOAD_FOLDER"]
|
122
122
|
utils_functions.validate_request(flask.request, missing_files_json)
|
123
|
-
|
123
|
+
file_path = geode_functions.upload_file_path(flask.request.json["filename"])
|
124
124
|
missing_files = geode_functions.missing_files(
|
125
125
|
flask.request.json["input_geode_object"],
|
126
|
-
|
126
|
+
file_path,
|
127
127
|
)
|
128
128
|
has_missing_files = missing_files.has_missing_files()
|
129
129
|
|
@@ -184,11 +184,9 @@ with open(
|
|
184
184
|
methods=inspect_file_json["methods"],
|
185
185
|
)
|
186
186
|
def inspect_file():
|
187
|
-
UPLOAD_FOLDER = flask.current_app.config["UPLOAD_FOLDER"]
|
188
187
|
utils_functions.validate_request(flask.request, inspect_file_json)
|
189
188
|
|
190
|
-
|
191
|
-
file_path = os.path.abspath(os.path.join(UPLOAD_FOLDER, secure_filename))
|
189
|
+
file_path = geode_functions.upload_file_path(flask.request.json["filename"])
|
192
190
|
data = geode_functions.load(flask.request.json["input_geode_object"], file_path)
|
193
191
|
class_inspector = geode_functions.inspect(
|
194
192
|
flask.request.json["input_geode_object"], data
|
@@ -209,13 +207,13 @@ with open(
|
|
209
207
|
methods=geode_objects_and_output_extensions_json["methods"],
|
210
208
|
)
|
211
209
|
def geode_objects_and_output_extensions():
|
212
|
-
UPLOAD_FOLDER = flask.current_app.config["UPLOAD_FOLDER"]
|
213
210
|
utils_functions.validate_request(
|
214
211
|
flask.request, geode_objects_and_output_extensions_json
|
215
212
|
)
|
213
|
+
file_path = geode_functions.upload_file_path(flask.request.json["filename"])
|
216
214
|
data = geode_functions.load(
|
217
215
|
flask.request.json["input_geode_object"],
|
218
|
-
|
216
|
+
file_path,
|
219
217
|
)
|
220
218
|
geode_objects_and_output_extensions = (
|
221
219
|
geode_functions.geode_objects_output_extensions(
|
@@ -241,14 +239,12 @@ with open(
|
|
241
239
|
)
|
242
240
|
def save_viewable_file():
|
243
241
|
utils_functions.validate_request(flask.request, save_viewable_file_json)
|
244
|
-
|
245
|
-
|
246
|
-
secure_filename = werkzeug.utils.secure_filename(flask.request.json["filename"])
|
247
|
-
file_path = os.path.abspath(os.path.join(UPLOAD_FOLDER, secure_filename))
|
242
|
+
|
243
|
+
file_path = geode_functions.upload_file_path(flask.request.json["filename"])
|
248
244
|
data = geode_functions.load(flask.request.json["input_geode_object"], file_path)
|
249
245
|
return flask.make_response(
|
250
246
|
utils_functions.generate_native_viewable_and_light_viewable(
|
251
|
-
flask.request.json["input_geode_object"], data
|
247
|
+
flask.request.json["input_geode_object"], data
|
252
248
|
),
|
253
249
|
200,
|
254
250
|
)
|
@@ -261,7 +257,6 @@ with open(os.path.join(schemas, "create_point.json"), "r") as file:
|
|
261
257
|
@routes.route(create_point_json["route"], methods=create_point_json["methods"])
|
262
258
|
def create_point():
|
263
259
|
utils_functions.validate_request(flask.request, create_point_json)
|
264
|
-
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
|
265
260
|
title = flask.request.json["title"]
|
266
261
|
x = flask.request.json["x"]
|
267
262
|
y = flask.request.json["y"]
|
@@ -273,7 +268,7 @@ def create_point():
|
|
273
268
|
builder.set_name(title)
|
274
269
|
return flask.make_response(
|
275
270
|
utils_functions.generate_native_viewable_and_light_viewable(
|
276
|
-
"PointSet3D", PointSet3D
|
271
|
+
"PointSet3D", PointSet3D
|
277
272
|
),
|
278
273
|
200,
|
279
274
|
)
|
@@ -288,12 +283,13 @@ with open(os.path.join(schemas, "texture_coordinates.json"), "r") as file:
|
|
288
283
|
methods=texture_coordinates_json["methods"],
|
289
284
|
)
|
290
285
|
def texture_coordinates():
|
291
|
-
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
|
292
286
|
utils_functions.validate_request(flask.request, texture_coordinates_json)
|
293
|
-
data = geode_functions.
|
287
|
+
data = geode_functions.load_data(
|
294
288
|
flask.request.json["input_geode_object"],
|
295
|
-
|
289
|
+
flask.request.json["id"],
|
290
|
+
flask.request.json["filename"],
|
296
291
|
)
|
292
|
+
|
297
293
|
texture_coordinates = data.texture_manager().texture_names()
|
298
294
|
|
299
295
|
return flask.make_response({"texture_coordinates": texture_coordinates}, 200)
|
@@ -311,14 +307,13 @@ with open(
|
|
311
307
|
methods=vertex_attribute_names_json["methods"],
|
312
308
|
)
|
313
309
|
def vertex_attribute_names():
|
314
|
-
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
|
315
310
|
utils_functions.validate_request(flask.request, vertex_attribute_names_json)
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
flask.request.json["input_geode_object"], file_absolute_path
|
311
|
+
data = geode_functions.load_data(
|
312
|
+
flask.request.json["input_geode_object"],
|
313
|
+
flask.request.json["id"],
|
314
|
+
flask.request.json["filename"],
|
321
315
|
)
|
316
|
+
|
322
317
|
vertex_attribute_names = data.vertex_attribute_manager().attribute_names()
|
323
318
|
|
324
319
|
return flask.make_response(
|
@@ -341,14 +336,13 @@ with open(
|
|
341
336
|
methods=polygon_attribute_names_json["methods"],
|
342
337
|
)
|
343
338
|
def polygon_attribute_names():
|
344
|
-
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
|
345
339
|
utils_functions.validate_request(flask.request, polygon_attribute_names_json)
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
flask.request.json["input_geode_object"], file_absolute_path
|
340
|
+
data = geode_functions.load_data(
|
341
|
+
flask.request.json["input_geode_object"],
|
342
|
+
flask.request.json["id"],
|
343
|
+
flask.request.json["filename"],
|
351
344
|
)
|
345
|
+
|
352
346
|
polygon_attribute_names = data.polygon_attribute_manager().attribute_names()
|
353
347
|
|
354
348
|
return flask.make_response(
|
@@ -371,14 +365,13 @@ with open(
|
|
371
365
|
methods=polyhedron_attribute_names_json["methods"],
|
372
366
|
)
|
373
367
|
def polyhedron_attribute_names():
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
data = geode_functions.load(
|
380
|
-
flask.request.json["input_geode_object"], file_absolute_path
|
368
|
+
utils_functions.validate_request(flask.request, polyhedron_attribute_names_json)
|
369
|
+
data = geode_functions.load_data(
|
370
|
+
flask.request.json["input_geode_object"],
|
371
|
+
flask.request.json["id"],
|
372
|
+
flask.request.json["filename"],
|
381
373
|
)
|
374
|
+
|
382
375
|
polyhedron_attribute_names = data.polyhedron_attribute_manager().attribute_names()
|
383
376
|
|
384
377
|
return flask.make_response(
|
@@ -18,36 +18,27 @@ with open(os.path.join(schemas, "vtm_component_indices.json"), "r") as file:
|
|
18
18
|
)
|
19
19
|
def uuid_to_flat_index():
|
20
20
|
utils_functions.validate_request(flask.request, vtm_component_indices_json)
|
21
|
-
|
22
|
-
|
21
|
+
|
22
|
+
vtm_file_path = geode_functions.data_file_path(
|
23
|
+
flask.request.json["id"], "viewable.vtm"
|
23
24
|
)
|
24
25
|
tree = ET.parse(vtm_file_path)
|
25
26
|
root = tree.find("vtkMultiBlockDataSet")
|
26
27
|
uuid_to_flat_index = {}
|
27
28
|
current_index = 0
|
28
|
-
|
29
29
|
for elem in root.iter():
|
30
30
|
if "uuid" in elem.attrib and elem.tag == "DataSet":
|
31
31
|
uuid_to_flat_index[elem.attrib["uuid"]] = current_index
|
32
|
-
|
33
32
|
current_index += 1
|
34
|
-
|
35
|
-
return flask.make_response(
|
36
|
-
{"uuid_to_flat_index": uuid_to_flat_index},
|
37
|
-
200,
|
38
|
-
)
|
33
|
+
return flask.make_response({"uuid_to_flat_index": uuid_to_flat_index}, 200)
|
39
34
|
|
40
35
|
|
41
|
-
def extract_model_uuids(
|
42
|
-
model = geode_functions.load(geode_object, file_path)
|
36
|
+
def extract_model_uuids(model):
|
43
37
|
mesh_components = model.mesh_components()
|
44
|
-
|
45
38
|
uuid_dict = {}
|
46
|
-
|
47
39
|
for mesh_component, ids in mesh_components.items():
|
48
40
|
component_name = mesh_component.get()
|
49
41
|
uuid_dict[component_name] = [id.string() for id in ids]
|
50
|
-
|
51
42
|
return uuid_dict
|
52
43
|
|
53
44
|
|
@@ -58,10 +49,12 @@ with open(os.path.join(schemas, "mesh_components.json"), "r") as file:
|
|
58
49
|
@routes.route(mesh_components_json["route"], methods=mesh_components_json["methods"])
|
59
50
|
def extract_uuids_endpoint():
|
60
51
|
utils_functions.validate_request(flask.request, mesh_components_json)
|
61
|
-
|
62
|
-
|
52
|
+
|
53
|
+
model = geode_functions.load_data(
|
54
|
+
flask.request.json["geode_object"],
|
55
|
+
flask.request.json["id"],
|
56
|
+
flask.request.json["filename"],
|
63
57
|
)
|
64
|
-
|
65
|
-
|
66
|
-
uuid_dict = extract_model_uuids(flask.request.json["geode_object"], file_path)
|
58
|
+
|
59
|
+
uuid_dict = extract_model_uuids(model)
|
67
60
|
return flask.make_response({"uuid_dict": uuid_dict}, 200)
|
@@ -5,14 +5,21 @@
|
|
5
5
|
],
|
6
6
|
"type": "object",
|
7
7
|
"properties": {
|
8
|
+
"id": {
|
9
|
+
"type": "string",
|
10
|
+
"minLength": 1
|
11
|
+
},
|
8
12
|
"filename": {
|
9
|
-
"type": "string"
|
13
|
+
"type": "string",
|
14
|
+
"minLength": 1
|
10
15
|
},
|
11
16
|
"geode_object": {
|
12
|
-
"type": "string"
|
17
|
+
"type": "string",
|
18
|
+
"minLength": 1
|
13
19
|
}
|
14
20
|
},
|
15
21
|
"required": [
|
22
|
+
"id",
|
16
23
|
"filename",
|
17
24
|
"geode_object"
|
18
25
|
],
|
@@ -12,11 +12,16 @@
|
|
12
12
|
"filename": {
|
13
13
|
"type": "string",
|
14
14
|
"minLength": 1
|
15
|
+
},
|
16
|
+
"id": {
|
17
|
+
"type": "string",
|
18
|
+
"minLength": 1
|
15
19
|
}
|
16
20
|
},
|
17
21
|
"required": [
|
18
22
|
"input_geode_object",
|
19
|
-
"filename"
|
23
|
+
"filename",
|
24
|
+
"id"
|
20
25
|
],
|
21
26
|
"additionalProperties": false
|
22
27
|
}
|
@@ -12,11 +12,16 @@
|
|
12
12
|
"filename": {
|
13
13
|
"type": "string",
|
14
14
|
"minLength": 1
|
15
|
+
},
|
16
|
+
"id": {
|
17
|
+
"type": "string",
|
18
|
+
"minLength": 1
|
15
19
|
}
|
16
20
|
},
|
17
21
|
"required": [
|
18
22
|
"input_geode_object",
|
19
|
-
"filename"
|
23
|
+
"filename",
|
24
|
+
"id"
|
20
25
|
],
|
21
26
|
"additionalProperties": false
|
22
27
|
}
|
@@ -12,11 +12,16 @@
|
|
12
12
|
"filename": {
|
13
13
|
"type": "string",
|
14
14
|
"minLength": 1
|
15
|
+
},
|
16
|
+
"id": {
|
17
|
+
"type": "string",
|
18
|
+
"minLength": 1
|
15
19
|
}
|
16
20
|
},
|
17
21
|
"required": [
|
18
22
|
"input_geode_object",
|
19
|
-
"filename"
|
23
|
+
"filename",
|
24
|
+
"id"
|
20
25
|
],
|
21
26
|
"additionalProperties": false
|
22
27
|
}
|
@@ -143,24 +143,25 @@ def handle_exception(e):
|
|
143
143
|
return response
|
144
144
|
|
145
145
|
|
146
|
-
def generate_native_viewable_and_light_viewable(
|
147
|
-
geode_object, data, folder_absolute_path
|
148
|
-
):
|
146
|
+
def generate_native_viewable_and_light_viewable(geode_object, data):
|
149
147
|
generated_id = str(uuid.uuid4()).replace("-", "")
|
148
|
+
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
|
149
|
+
data_path = os.path.join(DATA_FOLDER_PATH, generated_id)
|
150
150
|
name = data.name()
|
151
151
|
object_type = geode_functions.get_object_type(geode_object)
|
152
152
|
|
153
153
|
saved_native_file_path = geode_functions.save(
|
154
154
|
geode_object,
|
155
155
|
data,
|
156
|
-
|
157
|
-
|
156
|
+
data_path,
|
157
|
+
"native." + data.native_extension(),
|
158
158
|
)
|
159
159
|
saved_viewable_file_path = geode_functions.save_viewable(
|
160
|
-
geode_object, data,
|
160
|
+
geode_object, data, data_path, "viewable"
|
161
161
|
)
|
162
|
+
viewable_file_name = os.path.basename(saved_viewable_file_path)
|
162
163
|
saved_light_viewable_file_path = geode_functions.save_light_viewable(
|
163
|
-
geode_object, data,
|
164
|
+
geode_object, data, data_path, "light_viewable"
|
164
165
|
)
|
165
166
|
f = open(saved_light_viewable_file_path, "rb")
|
166
167
|
binary_light_viewable = f.read()
|
@@ -169,7 +170,7 @@ def generate_native_viewable_and_light_viewable(
|
|
169
170
|
return {
|
170
171
|
"name": name,
|
171
172
|
"native_file_name": os.path.basename(saved_native_file_path[0]),
|
172
|
-
"viewable_file_name":
|
173
|
+
"viewable_file_name": viewable_file_name,
|
173
174
|
"id": generated_id,
|
174
175
|
"object_type": object_type,
|
175
176
|
"binary_light_viewable": str(binary_light_viewable, "utf-8"),
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: OpenGeodeWeb-Back
|
3
|
-
Version: 5.
|
3
|
+
Version: 5.9.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
|
@@ -1,13 +1,13 @@
|
|
1
1
|
opengeodeweb_back/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
opengeodeweb_back/app_config.py,sha256=gJfYxDJOa_PYLqjqgdXacp3W3F109uujE9LGPvzHOkc,728
|
3
|
-
opengeodeweb_back/geode_functions.py,sha256=
|
3
|
+
opengeodeweb_back/geode_functions.py,sha256=JGUbVVDA-CFYbsOmUTKAvpAKwzlf0Wg_Pxuq1IibykY,9806
|
4
4
|
opengeodeweb_back/geode_objects.py,sha256=13A9FTGugiA9ClSeYkBiCu5QGzm93nm8YJQwiWB4nNw,25995
|
5
5
|
opengeodeweb_back/test_utils.py,sha256=18AbRW9-tfKkPcmRGilTTHXI7S3armYyV7Vdy5UvUKM,794
|
6
|
-
opengeodeweb_back/utils_functions.py,sha256=
|
7
|
-
opengeodeweb_back/routes/blueprint_routes.py,sha256=
|
8
|
-
opengeodeweb_back/routes/models/blueprint_models.py,sha256=
|
9
|
-
opengeodeweb_back/routes/models/schemas/mesh_components.json,sha256=
|
10
|
-
opengeodeweb_back/routes/models/schemas/vtm_component_indices.json,sha256=
|
6
|
+
opengeodeweb_back/utils_functions.py,sha256=NWsrhn5MNggtOfqj6kWoGbO_wbAE7XV6rruQKbhxlOA,5348
|
7
|
+
opengeodeweb_back/routes/blueprint_routes.py,sha256=UKmp2QZXUxUaFHGlcHWYAn7pd-UFDnAceE_6Jqwc2kA,11290
|
8
|
+
opengeodeweb_back/routes/models/blueprint_models.py,sha256=PAyHSKjsvVm5gGfjUyWAnODmE0BJMsIWc1AWl0F3bO0,1955
|
9
|
+
opengeodeweb_back/routes/models/schemas/mesh_components.json,sha256=3OQvI4pUCe77WGC46tEr37rEWigQ6n2nsfGUTZRY074,419
|
10
|
+
opengeodeweb_back/routes/models/schemas/vtm_component_indices.json,sha256=0XILVxhAxi0RhQFDZZoUeGcAnBMroWz3kNJS7-6_dKQ,239
|
11
11
|
opengeodeweb_back/routes/schemas/allowed_files.json,sha256=pRsGf39LiJpl3zEGLg4IqvRtm7iUx3Wq4Tb4tSFXGV0,234
|
12
12
|
opengeodeweb_back/routes/schemas/allowed_objects.json,sha256=oy_YYpFzgDICx-keWqNIUpQM3zzB4eE3H6mPNxH9rWc,361
|
13
13
|
opengeodeweb_back/routes/schemas/create_point.json,sha256=XjmXLMkr4jgWYHUKSwAhsxz1oLDZi8r8J0SY-QuEvks,386
|
@@ -16,14 +16,14 @@ opengeodeweb_back/routes/schemas/geographic_coordinate_systems.json,sha256=lnPqe
|
|
16
16
|
opengeodeweb_back/routes/schemas/inspect_file.json,sha256=WoFF2hgZCUfqSDFJRq1sLpivjCQ6TCvSHPH8pKFY6KM,348
|
17
17
|
opengeodeweb_back/routes/schemas/missing_files.json,sha256=eOBAkiphA-2xG6e-OAy7wcJK2FeY0YFYXJlLdr8SNSc,349
|
18
18
|
opengeodeweb_back/routes/schemas/ping.json,sha256=MhI5jtrjMsAsfIKEzdY8p1HyV9xv4O3hYfESWw6tkyE,162
|
19
|
-
opengeodeweb_back/routes/schemas/polygon_attribute_names.json,sha256=
|
20
|
-
opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json,sha256=
|
19
|
+
opengeodeweb_back/routes/schemas/polygon_attribute_names.json,sha256=HJ_zVLJNdVL1snoK2mSo5Rb0XOIgiPVq1VLaDTORe54,433
|
20
|
+
opengeodeweb_back/routes/schemas/polyhedron_attribute_names.json,sha256=Fw6rcYxuHaiEAc_AcVzPy5ibajcr4wW3jyb2r7T0m-c,436
|
21
21
|
opengeodeweb_back/routes/schemas/save_viewable_file.json,sha256=pvvEdaC7bNASPMrl3bXzlcA5blgflK0EYp2hBDf74qY,424
|
22
|
-
opengeodeweb_back/routes/schemas/texture_coordinates.json,sha256=
|
22
|
+
opengeodeweb_back/routes/schemas/texture_coordinates.json,sha256=oW84Vh34KfleK935fmMXnqJXy-vaLDd7g87O_PtSzfY,429
|
23
23
|
opengeodeweb_back/routes/schemas/upload_file.json,sha256=LJ3U3L5ApKuQDVFIpVT_y2alq4HW_suTvZ3HUucNbhg,219
|
24
|
-
opengeodeweb_back/routes/schemas/vertex_attribute_names.json,sha256=
|
25
|
-
opengeodeweb_back-5.
|
26
|
-
opengeodeweb_back-5.
|
27
|
-
opengeodeweb_back-5.
|
28
|
-
opengeodeweb_back-5.
|
29
|
-
opengeodeweb_back-5.
|
24
|
+
opengeodeweb_back/routes/schemas/vertex_attribute_names.json,sha256=bmXG0pzVHMUTZY_0iu6ruX7eMUVk8wr2H1o4eEtBlg0,432
|
25
|
+
opengeodeweb_back-5.9.0rc1.dist-info/licenses/LICENSE,sha256=LoTB-aqQvzTGxoTRXNnhNV0LKiqdk2bQv6MB34l8zkI,1079
|
26
|
+
opengeodeweb_back-5.9.0rc1.dist-info/METADATA,sha256=QJrrf0M7Uqa1SgQdvxGF2eihN1_8hvRcBp3JG2y1Wec,3036
|
27
|
+
opengeodeweb_back-5.9.0rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
28
|
+
opengeodeweb_back-5.9.0rc1.dist-info/top_level.txt,sha256=tN1FZeLIVBrdja2-pbmhg5-tK-JILmmT9OeIBnhlUrQ,18
|
29
|
+
opengeodeweb_back-5.9.0rc1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|