mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 07:00:17 -05:00
#14772 Python: Add Project.import_formation_names and Case.set_formation_names as object methods and forward importFormationNames to them
The legacy command combined import and assignment with an applyToCaseId. This is split into RimProject_importFormationNames (returns the FormationNames object) and RimCase_setFormationNames (takes the object). RimFormationNames is made scriptable so it can be returned and passed. RicfImportFormationNames forwards to both. Project.import_formation_names() in Python keeps its signature, now returns the FormationNames object, and gains an apply_to_all_cases flag (default True, matching the old behavior). Case.import_formation_names() is kept and emits a DeprecationWarning.
This commit is contained in:
1 parent
b60ccf1f83
commit
147a60ceec
9 files changed
+249
-64
No files matched your search
@@ -932,20 +932,23 @@ def import_formation_names(
|
||||
) -> None:
|
||||
"""Import formation names into project and apply it to the current case
|
||||
|
||||
Deprecated: use Project.import_formation_names(apply_to_all_cases=False) followed by
|
||||
Case.set_formation_names() instead.
|
||||
|
||||
Arguments:
|
||||
formation_files(list): list of files to import
|
||||
|
||||
"""
|
||||
if formation_files is None:
|
||||
formation_files = []
|
||||
elif isinstance(formation_files, str):
|
||||
formation_files = [formation_files]
|
||||
|
||||
self._execute_command(
|
||||
importFormationNames=Cmd.ImportFormationNamesRequest(
|
||||
formationFiles=formation_files, applyToCaseId=self.id
|
||||
)
|
||||
warnings.warn(
|
||||
"Case.import_formation_names() is deprecated, use Project.import_formation_names() and Case.set_formation_names() instead",
|
||||
DeprecationWarning,
|
||||
stacklevel=3,
|
||||
)
|
||||
project = self.ancestor(rips.project.Project)
|
||||
formation_names = project.import_formation_names(
|
||||
formation_files=formation_files, apply_to_all_cases=False
|
||||
)
|
||||
self.set_formation_names(formation_names=formation_names)
|
||||
|
||||
|
||||
@add_method(Case)
|
||||
|
||||
@@ -23,6 +23,7 @@ import KeyValueStore_pb2
|
||||
from .exception import RipsError
|
||||
from .resinsight_classes import (
|
||||
ColorLegendCollection,
|
||||
FormationNames,
|
||||
FractureTemplate,
|
||||
PlotWindow,
|
||||
Project,
|
||||
@@ -458,23 +459,29 @@ def import_well_log_files(self, well_log_files=None, well_log_folder=""):
|
||||
|
||||
|
||||
@add_method(Project)
|
||||
def import_formation_names(self, formation_files=None):
|
||||
"""Import formation names into project
|
||||
def import_formation_names(self, formation_files=None, apply_to_all_cases=True):
|
||||
"""Import formation names into project and apply it to all grid cases in the project
|
||||
|
||||
Arguments:
|
||||
formation_files(list): list of files to import
|
||||
apply_to_all_cases(bool): assign the imported formation names to all grid cases.
|
||||
Use Case.set_formation_names() for finer control.
|
||||
|
||||
Returns:
|
||||
:class:`rips.generated.generated_classes.FormationNames`
|
||||
"""
|
||||
if formation_files is None:
|
||||
formation_files = []
|
||||
elif isinstance(formation_files, str):
|
||||
formation_files = [formation_files]
|
||||
|
||||
self._execute_command(
|
||||
importFormationNames=Commands_pb2.ImportFormationNamesRequest(
|
||||
formationFiles=formation_files, applyToCaseId=-1
|
||||
)
|
||||
formation_names = self._call_pdm_method_return_value(
|
||||
"importFormationNames", FormationNames, formation_files=formation_files
|
||||
)
|
||||
if apply_to_all_cases:
|
||||
for case in self.descendants(Case):
|
||||
case.set_formation_names(formation_names=formation_names)
|
||||
return formation_names
|
||||
|
||||
|
||||
@add_method(Project)
|
||||
|
||||
@@ -311,6 +311,33 @@ def test_import_formation_names(rips_instance, initialize_test):
|
||||
assert "Active Formation Names" in available
|
||||
|
||||
|
||||
def test_import_and_set_formation_names_object_methods(rips_instance, initialize_test):
|
||||
case_path = dataroot.PATH + "/TEST10K_FLT_LGR_NNC/TEST10K_FLT_LGR_NNC.EGRID"
|
||||
case = rips_instance.project.load_case(case_path)
|
||||
|
||||
formation_names = rips_instance.project.import_formation_names(
|
||||
formation_files=[dataroot.PATH + "/20Layers.lyr"], apply_to_all_cases=False
|
||||
)
|
||||
assert isinstance(formation_names, rips.FormationNames)
|
||||
assert formation_names.formation_names_file_name.endswith("20Layers.lyr")
|
||||
# No formation names assigned to the case yet
|
||||
with pytest.raises(rips.RipsError):
|
||||
case.available_properties(rips.PropertyType.FORMATION_NAMES)
|
||||
|
||||
case.set_formation_names(formation_names=formation_names)
|
||||
assert "Active Formation Names" in case.available_properties(
|
||||
rips.PropertyType.FORMATION_NAMES
|
||||
)
|
||||
|
||||
with pytest.raises(rips.RipsError):
|
||||
rips_instance.project.import_formation_names(formation_files=["/no/such.lyr"])
|
||||
with pytest.raises(rips.RipsError):
|
||||
case.set_formation_names()
|
||||
|
||||
with pytest.warns(DeprecationWarning):
|
||||
case.import_formation_names(formation_files=dataroot.PATH + "/20Layers.lyr")
|
||||
|
||||
|
||||
_MINIMAL_LAS = """~Version Information
|
||||
VERS. 2.0 : CWLS log ASCII Standard - VERSION 2.0
|
||||
WRAP. NO : One line per depth step
|
||||
|
||||
Reference in new issue
Block a user