123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- r"""
- INTERNAL MODULE, NOT FOR PUBLIC CONSUMPTION.
- Used by vtkCPPythonScriptV2Pipeline and may change without notice.
- """
- from . import log_level
- from .. import log, print_warning
- from ..modules.vtkPVPythonCatalyst import vtkCPPythonScriptV2Helper
- def register_module(path):
- """register a file/directory as an importable module.
- Returns the name to use to import the module, on success, otherwise `None`.
- """
- from .detail import RegisterPackageFromZip
- from .detail import RegisterPackageFromDir
- from .detail import RegisterModuleFromFile
- from paraview.vtk.vtkParallelCore import vtkPSystemTools
- from . import importers
- # plug into Python import machinery to help import pipeline modules
- # seamlessly.
- importers.install_pathfinder()
- if vtkPSystemTools.FileIsDirectory(path):
- return RegisterPackageFromDir(path)
- elif path.lower().endswith(".zip"):
- return RegisterPackageFromZip(path)
- else:
- return RegisterModuleFromFile(path)
- class CatalystV1Information:
- """
- Provides information to the current `catalyst_execute` call.
- """
- def __init__(self, dataDescription):
- self._dataDescription = dataDescription
- @property
- def time(self):
- """returns the current simulation time"""
- return self._dataDescription.GetTime()
- @property
- def timestep(self):
- """returns the current simulation cycle or timestep index"""
- return self._dataDescription.GetTimeStep()
- @property
- def cycle(self):
- """returns the current simulation cycle or timestep index"""
- return self._dataDescription.GetTimeStep()
- @property
- def dataDescription(self):
- """avoid using this unless absolutely sure what you're doing"""
- return self._dataDescription
- class CatalystV2Information:
- def __init__(self):
- from paraview.modules.vtkPVInSitu import vtkInSituInitializationHelper
- self.helper = vtkInSituInitializationHelper
- @property
- def time(self):
- """returns the current simulation time"""
- return self.helper.GetTime()
- @property
- def timestep(self):
- """returns the current simulation cycle or timestep index"""
- return self.helper.GetTimeStep()
- @property
- def cycle(self):
- """returns the current simulation cycle or timestep index"""
- return self.helper.GetTimeStep()
- def import_and_validate(modulename):
- import importlib
- m = importlib.import_module(modulename)
- _validate_and_initialize(m)
- return m
- def do_request_data_description(module, dataDescription):
- log(log_level(), "called do_request_data_description %r", module)
- # call 'RequestDataDescription' on module, if exists
- if hasattr(module, "RequestDataDescription"):
- log(log_level(), "calling '%s.%s'", module.__name__, "RequestDataDescription")
- module.RequestDataDescription(dataDescription)
- return True # indicates RequestDataDescription was overridden in the script.
- return False
- def do_catalyst_initialize(module):
- log(log_level(), "called do_catalyst_initialize %r", module)
- # call 'catalyst_initialize' on module if exits
- if hasattr(module, "catalyst_initialize"):
- log(log_level(), "calling '%s.%s'", module.__name__, "catalyst_initialize")
- module.catalyst_initialize()
- def do_catalyst_finalize(module):
- log(log_level(), "called do_catalyst_finalize %r", module)
- # call 'catalyst_finalize' on module if exits
- if hasattr(module, "catalyst_finalize"):
- log(log_level(), "calling '%s.%s'", module.__name__, "catalyst_finalize")
- module.catalyst_finalize()
- def do_catalyst_execute(module):
- log(log_level(), "called do_catalyst_execute %r", module)
- # call 'catalyst_execute' on module, if exists
- if hasattr(module, "catalyst_execute"):
- log(log_level(), "calling '%s.%s'", module.__name__, "catalyst_execute")
- dataDescription = _get_active_data_description()
- if dataDescription:
- info = CatalystV1Information(dataDescription)
- else:
- info = CatalystV2Information()
- module.catalyst_execute(info)
- return True
- return False
- def _get_active_data_description():
- helper = vtkCPPythonScriptV2Helper.GetActiveInstance()
- return helper.GetDataDescription()
- def _get_active_arguments():
- args = []
- helper = vtkCPPythonScriptV2Helper.GetActiveInstance()
- if not helper:
- # happens when script is executed in pvbatch, and not catalyst
- return args
- slist = helper.GetArgumentsAsStringList()
- for cc in range(slist.GetLength()):
- args.append(slist.GetString(cc))
- return args
- def _get_execute_parameters():
- params = []
- helper = vtkCPPythonScriptV2Helper.GetActiveInstance()
- if not helper:
- # happens when script is executed in pvbatch, and not catalyst
- return params
- slist = helper.GetParametersAsStringList()
- for cc in range(slist.GetLength()):
- params.append(slist.GetString(cc))
- return params
- def _get_script_filename():
- helper = vtkCPPythonScriptV2Helper.GetActiveInstance()
- if not helper:
- return None
- return helper.GetScriptFileName()
- def has_customized_execution(module):
- return hasattr(module, "catalyst_execute") or \
- hasattr(module, "RequestDataDescription") or \
- hasattr(module, "catalyst_initialize")
- def _validate_and_initialize(module):
- """Validates a module to confirm that it is a `module` that we can treat as
- a Catalyst script. Additionally, adds some private meta-data that this
- module will use during exection."""
- if not hasattr(module, "options"):
- print_warning("Module '%s' missing Catalyst 'options', will use a default options object", module.__name__)
- from . import Options
- module.options = Options()
- # provide the options to vtkCPPythonScriptV2Helper.
- helper = vtkCPPythonScriptV2Helper.GetActiveInstance()
- helper.SetOptions(module.options.SMProxy)
|