diff --git a/requirements.in b/requirements.in index 53896aba..10ebe922 100644 --- a/requirements.in +++ b/requirements.in @@ -1,10 +1,10 @@ -OpenGeode-core==15.24.1 -OpenGeode-IO==7.3.1 +OpenGeode-core==15.24.2 +OpenGeode-IO==7.3.2 OpenGeode-Inspector==6.7.0 -OpenGeode-Geosciences==9.2.1 -OpenGeode-GeosciencesIO==5.7.1 +OpenGeode-Geosciences==9.2.2 +OpenGeode-GeosciencesIO==5.7.2 Geode-Viewables==3.2.0 fastjsonschema==2.16.2 Flask[async]==3.0.3 Flask-Cors==6.0.1 -werkzeug==3.0.3 \ No newline at end of file +werkzeug==3.0.3 diff --git a/requirements.txt b/requirements.txt index 7b5af813..1e0a5aa2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -31,7 +31,7 @@ markupsafe==3.0.2 # via # jinja2 # werkzeug -opengeode-core==15.24.1 +opengeode-core==15.24.2 # via # -r requirements.in # geode-common @@ -40,16 +40,16 @@ opengeode-core==15.24.1 # opengeode-geosciencesio # opengeode-inspector # opengeode-io -opengeode-geosciences==9.2.1 +opengeode-geosciences==9.2.2 # via # -r requirements.in # geode-viewables # opengeode-geosciencesio -opengeode-geosciencesio==5.7.1 +opengeode-geosciencesio==5.7.2 # via -r requirements.in opengeode-inspector==6.7.0 # via -r requirements.in -opengeode-io==7.3.1 +opengeode-io==7.3.2 # via # -r requirements.in # geode-viewables diff --git a/src/opengeodeweb_back/geode_functions.py b/src/opengeodeweb_back/geode_functions.py index 8d704895..68115f62 100644 --- a/src/opengeodeweb_back/geode_functions.py +++ b/src/opengeodeweb_back/geode_functions.py @@ -32,8 +32,9 @@ def additional_files(geode_object: str, file_absolute_path: str): return geode_object_value(geode_object)["additional_files"](file_absolute_path) -def is_loadable(geode_object: str, file_absolute_path: str): - return geode_object_value(geode_object)["is_loadable"](file_absolute_path) +def is_loadable(geode_object: str, file_absolute_path: str) -> float: + percentage = geode_object_value(geode_object)["is_loadable"](file_absolute_path) + return percentage.value() def load(geode_object: str, file_absolute_path: str): @@ -183,8 +184,8 @@ def list_geode_objects( for geode_object in geode_objects_filtered_list: if has_creator(geode_object, file_extension): - file_is_loadable = is_loadable(geode_object, file_absolute_path) - return_dict[geode_object] = {"is_loadable": file_is_loadable} + loadability_score = is_loadable(geode_object, file_absolute_path) + return_dict[geode_object] = {"is_loadable": loadability_score} return return_dict diff --git a/tests/test_geode_functions.py b/tests/test_geode_functions.py index 2463f74e..24af3868 100644 --- a/tests/test_geode_functions.py +++ b/tests/test_geode_functions.py @@ -63,7 +63,8 @@ def test_is_loadable(): for input_extension in input_extensions: file_absolute_path = os.path.join(data_folder, f"test.{input_extension}") is_loadable = geode_functions.is_loadable(geode_object, file_absolute_path) - assert type(is_loadable) is bool + assert isinstance(is_loadable, float) + assert 0.0 <= is_loadable <= 1.0 def test_load(): @@ -73,7 +74,7 @@ def test_load(): for input_extension in input_extensions: print(f"\t{input_extension=}") file_absolute_path = os.path.join(data_folder, f"test.{input_extension}") - if geode_functions.is_loadable(geode_object, file_absolute_path): + if geode_functions.is_loadable(geode_object, file_absolute_path) > 0.0: data = geode_functions.load(geode_object, file_absolute_path) data_name = data.name() if "save_viewable" in value: @@ -171,7 +172,7 @@ def test_geode_object_output_extensions(): print( f"\t\tAdditional files: {[f.filename for f in additional.optional_files]}" ) - if geode_functions.is_loadable(geode_object, file_absolute_path): + if geode_functions.is_loadable(geode_object, file_absolute_path) > 0.0: data = geode_functions.load(geode_object, file_absolute_path) geode_objets_and_output_extensions = ( geode_functions.geode_objects_output_extensions(geode_object, data) @@ -214,7 +215,7 @@ def test_get_inspector_children(): print(f"\t\t{mandatory_files=}", flush=True) additional_files = [f.filename for f in additional.optional_files] print(f"\t\t{additional_files=}", flush=True) - if geode_functions.is_loadable(geode_object, file_absolute_path): + if geode_functions.is_loadable(geode_object, file_absolute_path) > 0.0: data = geode_functions.load(geode_object, file_absolute_path) class_inspector = geode_functions.inspect(geode_object, data) assert "InspectionResult" in class_inspector.__class__.__name__ @@ -296,7 +297,8 @@ def test_list_geode_objects(): input_extension, input_extension_value, ) in input_extension_dict.items(): - assert type(input_extension_value) is bool + assert isinstance(input_extension_value, float) + assert 0.0 <= input_extension_value <= 1.0 def test_geode_objects_output_extensions(): @@ -304,7 +306,7 @@ def test_geode_objects_output_extensions(): input_extensions = geode_functions.geode_object_input_extensions(geode_object) for input_extension in input_extensions: file_absolute_path = os.path.join(data_folder, f"test.{input_extension}") - if geode_functions.is_loadable(geode_object, file_absolute_path): + if geode_functions.is_loadable(geode_object, file_absolute_path) > 0.0: data = geode_functions.load(geode_object, file_absolute_path) geode_objects_and_output_extensions = ( geode_functions.geode_objects_output_extensions(geode_object, data) diff --git a/tests/test_routes.py b/tests/test_routes.py index 83339d48..83a0f375 100644 --- a/tests/test_routes.py +++ b/tests/test_routes.py @@ -201,11 +201,13 @@ def test_vertex_attribute_names(client, test_id): elements = geode_functions.get_elements(geode_object) if "points" in elements: for input_extension in input_extensions: - is_loadable = geode_functions.is_loadable( - geode_object, - os.path.join("./data", f"test.{input_extension}"), - ) - if is_loadable: + if ( + geode_functions.is_loadable( + geode_object, + os.path.join("./data", f"test.{input_extension}"), + ) + > 0.0 + ): def get_full_data(): return { @@ -238,11 +240,13 @@ def test_polygon_attribute_names(client, test_id): elements = geode_functions.get_elements(geode_object) if "polygons" in elements: for input_extension in input_extensions: - is_loadable = geode_functions.is_loadable( - geode_object, - os.path.join("./data", f"test.{input_extension}"), - ) - if is_loadable: + if ( + geode_functions.is_loadable( + geode_object, + os.path.join("./data", f"test.{input_extension}"), + ) + > 0.0 + ): def get_full_data(): return { @@ -275,11 +279,13 @@ def test_polyhedron_attribute_names(client, test_id): elements = geode_functions.get_elements(geode_object) if "polyhedrons" in elements: for input_extension in input_extensions: - is_loadable = geode_functions.is_loadable( - geode_object, - os.path.join("./data", f"test.{input_extension}"), - ) - if is_loadable: + if ( + geode_functions.is_loadable( + geode_object, + os.path.join("./data", f"test.{input_extension}"), + ) + > 0.0 + ): def get_full_data(): return {