diff --git a/.releaserc b/.releaserc new file mode 100644 index 00000000..bf47fdf5 --- /dev/null +++ b/.releaserc @@ -0,0 +1,11 @@ +{ + branches: [ + { name: "master" }, + { name: "next", channel: "next", prerelease: "rc" } + ], + plugins: [ + '@semantic-release/commit-analyzer', + '@semantic-release/release-notes-generator', + '@semantic-release/github' + ] +} diff --git a/src/opengeodeweb_back/geode_functions.py b/src/opengeodeweb_back/geode_functions.py index 68115f62..3fd4cd05 100644 --- a/src/opengeodeweb_back/geode_functions.py +++ b/src/opengeodeweb_back/geode_functions.py @@ -37,6 +37,10 @@ def is_loadable(geode_object: str, file_absolute_path: str) -> float: return percentage.value() +def object_priority(geode_object: str, file_absolute_path: str) -> int: + return geode_object_value(geode_object)["object_priority"](file_absolute_path) + + def load(geode_object: str, file_absolute_path: str): return geode_object_value(geode_object)["load"](file_absolute_path) @@ -181,7 +185,6 @@ def list_geode_objects( os.path.basename(file_absolute_path) ) geode_objects_filtered_list = filter_geode_objects(key) - for geode_object in geode_objects_filtered_list: if has_creator(geode_object, file_extension): loadability_score = is_loadable(geode_object, file_absolute_path) diff --git a/src/opengeodeweb_back/geode_objects.py b/src/opengeodeweb_back/geode_objects.py index b878272c..7386f24e 100644 --- a/src/opengeodeweb_back/geode_objects.py +++ b/src/opengeodeweb_back/geode_objects.py @@ -27,6 +27,7 @@ def geode_objects_dict(): "output_factory": og.BRepOutputFactory, "additional_files": og.brep_additional_files, "is_loadable": og.is_brep_loadable, + "object_priority": og.brep_object_priority, "load": og.load_brep, "is_saveable": og.is_brep_saveable, "save": og.save_brep, @@ -50,6 +51,7 @@ def geode_objects_dict(): "output_factory": og_gs.CrossSectionOutputFactory, "additional_files": og_gs.cross_section_additional_files, "is_loadable": og_gs.is_cross_section_loadable, + "object_priority": og_gs.cross_section_object_priority, "load": og_gs.load_cross_section, "is_saveable": og_gs.is_cross_section_saveable, "save": og_gs.save_cross_section, @@ -72,6 +74,7 @@ def geode_objects_dict(): "output_factory": og.EdgedCurveOutputFactory2D, "additional_files": og.edged_curve_additional_files2D, "is_loadable": og.is_edged_curve_loadable2D, + "object_priority": og.edged_curve_object_priority2D, "load": og.load_edged_curve2D, "is_saveable": og.is_edged_curve_saveable2D, "save": og.save_edged_curve2D, @@ -95,6 +98,7 @@ def geode_objects_dict(): "output_factory": og.EdgedCurveOutputFactory3D, "additional_files": og.edged_curve_additional_files3D, "is_loadable": og.is_edged_curve_loadable3D, + "object_priority": og.edged_curve_object_priority3D, "load": og.load_edged_curve3D, "is_saveable": og.is_edged_curve_saveable3D, "save": og.save_edged_curve3D, @@ -118,6 +122,7 @@ def geode_objects_dict(): "output_factory": og.GraphOutputFactory, "additional_files": og.graph_additional_files, "is_loadable": og.is_graph_loadable, + "object_priority": og.graph_object_priority, "load": og.load_graph, "is_saveable": og.is_graph_saveable, "save": og.save_graph, @@ -132,6 +137,7 @@ def geode_objects_dict(): "output_factory": og.HybridSolidOutputFactory3D, "additional_files": og.hybrid_solid_additional_files3D, "is_loadable": og.is_hybrid_solid_loadable3D, + "object_priority": og.hybrid_solid_object_priority3D, "load": og.load_hybrid_solid3D, "is_saveable": og.is_hybrid_solid_saveable3D, "save": og.save_hybrid_solid3D, @@ -156,6 +162,7 @@ def geode_objects_dict(): "output_factory": og_gs.ImplicitCrossSectionOutputFactory, "additional_files": og_gs.implicit_cross_section_additional_files, "is_loadable": og_gs.is_implicit_cross_section_loadable, + "object_priority": og_gs.implicit_cross_section_object_priority, "load": og_gs.load_implicit_cross_section, "is_saveable": og_gs.is_implicit_cross_section_saveable, "save": og_gs.save_implicit_cross_section, @@ -179,6 +186,7 @@ def geode_objects_dict(): "output_factory": og_gs.ImplicitStructuralModelOutputFactory, "additional_files": og_gs.implicit_structural_model_additional_files, "is_loadable": og_gs.is_implicit_structural_model_loadable, + "object_priority": og_gs.implicit_structural_model_object_priority, "load": og_gs.load_implicit_structural_model, "is_saveable": og_gs.is_implicit_structural_model_saveable, "save": og_gs.save_implicit_structural_model, @@ -201,6 +209,7 @@ def geode_objects_dict(): "output_factory": og.LightRegularGridOutputFactory2D, "additional_files": og.light_regular_grid_additional_files2D, "is_loadable": og.is_light_regular_grid_loadable2D, + "object_priority": og.light_regular_grid_object_priority2D, "load": og.load_light_regular_grid2D, "is_saveable": og.is_light_regular_grid_saveable2D, "save": og.save_light_regular_grid2D, @@ -217,6 +226,7 @@ def geode_objects_dict(): "output_factory": og.LightRegularGridOutputFactory3D, "additional_files": og.light_regular_grid_additional_files3D, "is_loadable": og.is_light_regular_grid_loadable3D, + "object_priority": og.light_regular_grid_object_priority3D, "load": og.load_light_regular_grid3D, "is_saveable": og.is_light_regular_grid_saveable3D, "save": og.save_light_regular_grid3D, @@ -233,6 +243,7 @@ def geode_objects_dict(): "output_factory": og.PointSetOutputFactory2D, "additional_files": og.point_set_additional_files2D, "is_loadable": og.is_point_set_loadable2D, + "object_priority": og.point_set_object_priority2D, "load": og.load_point_set2D, "is_saveable": og.is_point_set_saveable2D, "save": og.save_point_set2D, @@ -256,6 +267,7 @@ def geode_objects_dict(): "output_factory": og.PointSetOutputFactory3D, "additional_files": og.point_set_additional_files3D, "is_loadable": og.is_point_set_loadable3D, + "object_priority": og.point_set_object_priority3D, "load": og.load_point_set3D, "is_saveable": og.is_point_set_saveable3D, "save": og.save_point_set3D, @@ -279,6 +291,7 @@ def geode_objects_dict(): "output_factory": og.PolygonalSurfaceOutputFactory2D, "additional_files": og.polygonal_surface_additional_files2D, "is_loadable": og.is_polygonal_surface_loadable2D, + "object_priority": og.polygonal_surface_object_priority2D, "load": og.load_polygonal_surface2D, "is_saveable": og.is_polygonal_surface_saveable2D, "save": og.save_polygonal_surface2D, @@ -302,6 +315,7 @@ def geode_objects_dict(): "output_factory": og.PolygonalSurfaceOutputFactory3D, "additional_files": og.polygonal_surface_additional_files3D, "is_loadable": og.is_polygonal_surface_loadable3D, + "object_priority": og.polygonal_surface_object_priority3D, "load": og.load_polygonal_surface3D, "is_saveable": og.is_polygonal_surface_saveable3D, "save": og.save_polygonal_surface3D, @@ -325,6 +339,7 @@ def geode_objects_dict(): "output_factory": og.PolyhedralSolidOutputFactory3D, "additional_files": og.polyhedral_solid_additional_files3D, "is_loadable": og.is_polyhedral_solid_loadable3D, + "object_priority": og.polyhedral_solid_object_priority3D, "load": og.load_polyhedral_solid3D, "is_saveable": og.is_polyhedral_solid_saveable3D, "save": og.save_polyhedral_solid3D, @@ -348,6 +363,7 @@ def geode_objects_dict(): "output_factory": og.RasterImageOutputFactory2D, "additional_files": og.raster_image_additional_files2D, "is_loadable": og.is_raster_image_loadable2D, + "object_priority": og.raster_image_object_priority2D, "load": og.load_raster_image2D, "is_saveable": og.is_raster_image_saveable2D, "save": og.save_raster_image2D, @@ -362,6 +378,7 @@ def geode_objects_dict(): "output_factory": og.RasterImageOutputFactory3D, "additional_files": og.raster_image_additional_files3D, "is_loadable": og.is_raster_image_loadable3D, + "object_priority": og.raster_image_object_priority3D, "load": og.load_raster_image3D, "is_saveable": og.is_raster_image_saveable3D, "save": og.save_raster_image3D, @@ -376,6 +393,7 @@ def geode_objects_dict(): "output_factory": og.RegularGridOutputFactory2D, "additional_files": og.regular_grid_additional_files2D, "is_loadable": og.is_regular_grid_loadable2D, + "object_priority": og.regular_grid_object_priority2D, "load": og.load_regular_grid2D, "is_saveable": og.is_regular_grid_saveable2D, "save": og.save_regular_grid2D, @@ -398,6 +416,7 @@ def geode_objects_dict(): "output_factory": og.RegularGridOutputFactory3D, "additional_files": og.regular_grid_additional_files3D, "is_loadable": og.is_regular_grid_loadable3D, + "object_priority": og.regular_grid_object_priority3D, "load": og.load_regular_grid3D, "is_saveable": og.is_regular_grid_saveable3D, "save": og.save_regular_grid3D, @@ -420,6 +439,7 @@ def geode_objects_dict(): "output_factory": og.SectionOutputFactory, "additional_files": og.section_additional_files, "is_loadable": og.is_section_loadable, + "object_priority": og.section_object_priority, "load": og.load_section, "is_saveable": og.is_section_saveable, "save": og.save_section, @@ -443,6 +463,7 @@ def geode_objects_dict(): "output_factory": og_gs.StructuralModelOutputFactory, "additional_files": og_gs.structural_model_additional_files, "is_loadable": og_gs.is_structural_model_loadable, + "object_priority": og_gs.structural_model_object_priority, "load": og_gs.load_structural_model, "is_saveable": og_gs.is_structural_model_saveable, "save": og_gs.save_structural_model, @@ -465,6 +486,7 @@ def geode_objects_dict(): "output_factory": og.TetrahedralSolidOutputFactory3D, "additional_files": og.tetrahedral_solid_additional_files3D, "is_loadable": og.is_tetrahedral_solid_loadable3D, + "object_priority": og.tetrahedral_solid_object_priority3D, "load": og.load_tetrahedral_solid3D, "is_saveable": og.is_tetrahedral_solid_saveable3D, "save": og.save_tetrahedral_solid3D, @@ -488,6 +510,7 @@ def geode_objects_dict(): "output_factory": og.TriangulatedSurfaceOutputFactory2D, "additional_files": og.triangulated_surface_additional_files2D, "is_loadable": og.is_triangulated_surface_loadable2D, + "object_priority": og.triangulated_surface_object_priority2D, "load": og.load_triangulated_surface2D, "is_saveable": og.is_triangulated_surface_saveable2D, "save": og.save_triangulated_surface2D, @@ -511,6 +534,7 @@ def geode_objects_dict(): "output_factory": og.TriangulatedSurfaceOutputFactory3D, "additional_files": og.triangulated_surface_additional_files3D, "is_loadable": og.is_triangulated_surface_loadable3D, + "object_priority": og.triangulated_surface_object_priority3D, "load": og.load_triangulated_surface3D, "is_saveable": og.is_triangulated_surface_saveable3D, "save": og.save_triangulated_surface3D, @@ -534,6 +558,7 @@ def geode_objects_dict(): "output_factory": og.VertexSetOutputFactory, "additional_files": og.vertex_set_additional_files, "is_loadable": og.is_vertex_set_loadable, + "object_priority": og.vertex_set_object_priority, "load": og.load_vertex_set, "is_saveable": og.is_vertex_set_saveable, "save": og.save_vertex_set, diff --git a/tests/test_geode_functions.py b/tests/test_geode_functions.py index 24af3868..3cdaa5e0 100644 --- a/tests/test_geode_functions.py +++ b/tests/test_geode_functions.py @@ -67,6 +67,17 @@ def test_is_loadable(): assert 0.0 <= is_loadable <= 1.0 +def test_object_priority(): + for geode_object, _value in geode_objects.geode_objects_dict().items(): + 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}") + priority = geode_functions.object_priority(geode_object, file_absolute_path) + assert isinstance( + priority, int + ), f"Priority should be int for {geode_object}" + + def test_load(): for geode_object, value in geode_objects.geode_objects_dict().items(): print(f"\n{geode_object=}")