:py:mod:`wfexs_backend.workflow_engines`
========================================

.. py:module:: wfexs_backend.workflow_engines

.. autodoc2-docstring:: wfexs_backend.workflow_engines
   :allowtitles:

Submodules
----------

.. toctree::
   :titlesonly:
   :maxdepth: 1

   wfexs_backend.workflow_engines.nextflow_engine
   wfexs_backend.workflow_engines.cwl_engine

Package Contents
----------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`WorkflowType <wfexs_backend.workflow_engines.WorkflowType>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType
          :summary:
   * - :py:obj:`MaterializedWorkflowEngine <wfexs_backend.workflow_engines.MaterializedWorkflowEngine>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine
          :summary:
   * - :py:obj:`StagedExecution <wfexs_backend.workflow_engines.StagedExecution>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution
          :summary:
   * - :py:obj:`AbstractWorkflowEngineType <wfexs_backend.workflow_engines.AbstractWorkflowEngineType>`
     -
   * - :py:obj:`WorkflowEngine <wfexs_backend.workflow_engines.WorkflowEngine>`
     -

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`WORKDIR_INPUTS_RELDIR <wfexs_backend.workflow_engines.WORKDIR_INPUTS_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_INPUTS_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_EXTRAPOLATED_INPUTS_RELDIR <wfexs_backend.workflow_engines.WORKDIR_EXTRAPOLATED_INPUTS_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_EXTRAPOLATED_INPUTS_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_INTERMEDIATE_RELDIR <wfexs_backend.workflow_engines.WORKDIR_INTERMEDIATE_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_INTERMEDIATE_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_META_RELDIR <wfexs_backend.workflow_engines.WORKDIR_META_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_META_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_STATS_RELDIR <wfexs_backend.workflow_engines.WORKDIR_STATS_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_STATS_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_OUTPUTS_RELDIR <wfexs_backend.workflow_engines.WORKDIR_OUTPUTS_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_OUTPUTS_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_ENGINE_TWEAKS_RELDIR <wfexs_backend.workflow_engines.WORKDIR_ENGINE_TWEAKS_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_ENGINE_TWEAKS_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_WORKFLOW_RELDIR <wfexs_backend.workflow_engines.WORKDIR_WORKFLOW_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_WORKFLOW_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_CONSOLIDATED_WORKFLOW_RELDIR <wfexs_backend.workflow_engines.WORKDIR_CONSOLIDATED_WORKFLOW_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_CONSOLIDATED_WORKFLOW_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_CONTAINERS_RELDIR <wfexs_backend.workflow_engines.WORKDIR_CONTAINERS_RELDIR>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_CONTAINERS_RELDIR
          :summary:
   * - :py:obj:`WORKDIR_STDOUT_FILE <wfexs_backend.workflow_engines.WORKDIR_STDOUT_FILE>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_STDOUT_FILE
          :summary:
   * - :py:obj:`WORKDIR_STDERR_FILE <wfexs_backend.workflow_engines.WORKDIR_STDERR_FILE>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_STDERR_FILE
          :summary:
   * - :py:obj:`WORKDIR_WORKFLOW_META_FILE <wfexs_backend.workflow_engines.WORKDIR_WORKFLOW_META_FILE>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_WORKFLOW_META_FILE
          :summary:
   * - :py:obj:`WORKDIR_MARSHALLED_STAGE_FILE <wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_STAGE_FILE>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_STAGE_FILE
          :summary:
   * - :py:obj:`WORKDIR_MARSHALLED_EXECUTE_FILE <wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_EXECUTE_FILE>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_EXECUTE_FILE
          :summary:
   * - :py:obj:`WORKDIR_MARSHALLED_EXPORT_FILE <wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_EXPORT_FILE>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_EXPORT_FILE
          :summary:
   * - :py:obj:`WORKDIR_PASSPHRASE_FILE <wfexs_backend.workflow_engines.WORKDIR_PASSPHRASE_FILE>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_PASSPHRASE_FILE
          :summary:
   * - :py:obj:`STATS_DAG_DOT_FILE <wfexs_backend.workflow_engines.STATS_DAG_DOT_FILE>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.STATS_DAG_DOT_FILE
          :summary:
   * - :py:obj:`DEFAULT_PRIORITY <wfexs_backend.workflow_engines.DEFAULT_PRIORITY>`
     - .. autodoc2-docstring:: wfexs_backend.workflow_engines.DEFAULT_PRIORITY
          :summary:

API
~~~

.. py:data:: WORKDIR_INPUTS_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_INPUTS_RELDIR
   :value: 'inputs'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_INPUTS_RELDIR

.. py:data:: WORKDIR_EXTRAPOLATED_INPUTS_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_EXTRAPOLATED_INPUTS_RELDIR
   :value: 'extrapolated-inputs'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_EXTRAPOLATED_INPUTS_RELDIR

.. py:data:: WORKDIR_INTERMEDIATE_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_INTERMEDIATE_RELDIR
   :value: 'intermediate'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_INTERMEDIATE_RELDIR

.. py:data:: WORKDIR_META_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_META_RELDIR
   :value: 'meta'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_META_RELDIR

.. py:data:: WORKDIR_STATS_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_STATS_RELDIR
   :value: 'stats'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_STATS_RELDIR

.. py:data:: WORKDIR_OUTPUTS_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_OUTPUTS_RELDIR
   :value: 'outputs'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_OUTPUTS_RELDIR

.. py:data:: WORKDIR_ENGINE_TWEAKS_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_ENGINE_TWEAKS_RELDIR
   :value: 'engineTweaks'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_ENGINE_TWEAKS_RELDIR

.. py:data:: WORKDIR_WORKFLOW_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_WORKFLOW_RELDIR
   :value: 'workflow'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_WORKFLOW_RELDIR

.. py:data:: WORKDIR_CONSOLIDATED_WORKFLOW_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_CONSOLIDATED_WORKFLOW_RELDIR
   :value: 'consolidated-workflow'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_CONSOLIDATED_WORKFLOW_RELDIR

.. py:data:: WORKDIR_CONTAINERS_RELDIR
   :canonical: wfexs_backend.workflow_engines.WORKDIR_CONTAINERS_RELDIR
   :value: 'containers'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_CONTAINERS_RELDIR

.. py:data:: WORKDIR_STDOUT_FILE
   :canonical: wfexs_backend.workflow_engines.WORKDIR_STDOUT_FILE
   :value: 'cast(...)'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_STDOUT_FILE

.. py:data:: WORKDIR_STDERR_FILE
   :canonical: wfexs_backend.workflow_engines.WORKDIR_STDERR_FILE
   :value: 'cast(...)'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_STDERR_FILE

.. py:data:: WORKDIR_WORKFLOW_META_FILE
   :canonical: wfexs_backend.workflow_engines.WORKDIR_WORKFLOW_META_FILE
   :value: 'cast(...)'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_WORKFLOW_META_FILE

.. py:data:: WORKDIR_MARSHALLED_STAGE_FILE
   :canonical: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_STAGE_FILE
   :value: 'cast(...)'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_STAGE_FILE

.. py:data:: WORKDIR_MARSHALLED_EXECUTE_FILE
   :canonical: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_EXECUTE_FILE
   :value: 'cast(...)'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_EXECUTE_FILE

.. py:data:: WORKDIR_MARSHALLED_EXPORT_FILE
   :canonical: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_EXPORT_FILE
   :value: 'cast(...)'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_MARSHALLED_EXPORT_FILE

.. py:data:: WORKDIR_PASSPHRASE_FILE
   :canonical: wfexs_backend.workflow_engines.WORKDIR_PASSPHRASE_FILE
   :value: 'cast(...)'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WORKDIR_PASSPHRASE_FILE

.. py:data:: STATS_DAG_DOT_FILE
   :canonical: wfexs_backend.workflow_engines.STATS_DAG_DOT_FILE
   :value: 'cast(...)'

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.STATS_DAG_DOT_FILE

.. py:data:: DEFAULT_PRIORITY
   :canonical: wfexs_backend.workflow_engines.DEFAULT_PRIORITY
   :type: Final[int]
   :value: 0

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.DEFAULT_PRIORITY

.. py:class:: WorkflowType
   :canonical: wfexs_backend.workflow_engines.WorkflowType

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType

   .. py:attribute:: engineName
      :canonical: wfexs_backend.workflow_engines.WorkflowType.engineName
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.engineName

   .. py:attribute:: shortname
      :canonical: wfexs_backend.workflow_engines.WorkflowType.shortname
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.shortname

   .. py:attribute:: name
      :canonical: wfexs_backend.workflow_engines.WorkflowType.name
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.name

   .. py:attribute:: clazz
      :canonical: wfexs_backend.workflow_engines.WorkflowType.clazz
      :type: Type[AbstractWorkflowEngineType]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.clazz

   .. py:attribute:: uriMatch
      :canonical: wfexs_backend.workflow_engines.WorkflowType.uriMatch
      :type: Sequence[Union[Pattern[str], URIType]]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.uriMatch

   .. py:attribute:: uriTemplate
      :canonical: wfexs_backend.workflow_engines.WorkflowType.uriTemplate
      :type: wfexs_backend.common.URIType
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.uriTemplate

   .. py:attribute:: url
      :canonical: wfexs_backend.workflow_engines.WorkflowType.url
      :type: wfexs_backend.common.URIType
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.url

   .. py:attribute:: trs_descriptor
      :canonical: wfexs_backend.workflow_engines.WorkflowType.trs_descriptor
      :type: wfexs_backend.common.TRS_Workflow_Descriptor
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.trs_descriptor

   .. py:attribute:: rocrate_programming_language
      :canonical: wfexs_backend.workflow_engines.WorkflowType.rocrate_programming_language
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.rocrate_programming_language

   .. py:attribute:: priority
      :canonical: wfexs_backend.workflow_engines.WorkflowType.priority
      :type: int
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.priority

   .. py:attribute:: enabled
      :canonical: wfexs_backend.workflow_engines.WorkflowType.enabled
      :type: bool
      :value: True

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.enabled

   .. py:method:: _value_fixes() -> Mapping[str, Optional[str]]
      :canonical: wfexs_backend.workflow_engines.WorkflowType._value_fixes
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType._value_fixes

   .. py:property:: has_explicit_outputs
      :canonical: wfexs_backend.workflow_engines.WorkflowType.has_explicit_outputs
      :type: bool

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowType.has_explicit_outputs

.. py:class:: MaterializedWorkflowEngine
   :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine

   .. py:attribute:: instance
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.instance
      :type: AbstractWorkflowEngineType
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.instance

   .. py:attribute:: version
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.version
      :type: wfexs_backend.common.EngineVersion
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.version

   .. py:attribute:: fingerprint
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.fingerprint
      :type: Union[Fingerprint, str]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.fingerprint

   .. py:attribute:: engine_path
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.engine_path
      :type: pathlib.Path
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.engine_path

   .. py:attribute:: workflow
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.workflow
      :type: wfexs_backend.common.LocalWorkflow
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.workflow

   .. py:attribute:: containers_path
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.containers_path
      :type: Optional[pathlib.Path]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.containers_path

   .. py:attribute:: containers
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.containers
      :type: Optional[Sequence[Container]]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.containers

   .. py:attribute:: operational_containers
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.operational_containers
      :type: Optional[Sequence[Container]]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine.operational_containers

   .. py:method:: _mapping_fixes(orig: Mapping[str, Any], workdir: Optional[pathlib.Path]) -> Mapping[str, Any]
      :canonical: wfexs_backend.workflow_engines.MaterializedWorkflowEngine._mapping_fixes
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.MaterializedWorkflowEngine._mapping_fixes

.. py:class:: StagedExecution
   :canonical: wfexs_backend.workflow_engines.StagedExecution

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution

   .. py:attribute:: exitVal
      :canonical: wfexs_backend.workflow_engines.StagedExecution.exitVal
      :type: wfexs_backend.common.ExitVal
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.exitVal

   .. py:attribute:: augmentedInputs
      :canonical: wfexs_backend.workflow_engines.StagedExecution.augmentedInputs
      :type: Sequence[MaterializedInput]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.augmentedInputs

   .. py:attribute:: matCheckOutputs
      :canonical: wfexs_backend.workflow_engines.StagedExecution.matCheckOutputs
      :type: Sequence[MaterializedOutput]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.matCheckOutputs

   .. py:attribute:: outputsDir
      :canonical: wfexs_backend.workflow_engines.StagedExecution.outputsDir
      :type: pathlib.Path
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.outputsDir

   .. py:attribute:: started
      :canonical: wfexs_backend.workflow_engines.StagedExecution.started
      :type: datetime.datetime
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.started

   .. py:attribute:: ended
      :canonical: wfexs_backend.workflow_engines.StagedExecution.ended
      :type: datetime.datetime
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.ended

   .. py:attribute:: environment
      :canonical: wfexs_backend.workflow_engines.StagedExecution.environment
      :type: Sequence[MaterializedInput]
      :value: []

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.environment

   .. py:attribute:: outputMetaDir
      :canonical: wfexs_backend.workflow_engines.StagedExecution.outputMetaDir
      :type: Optional[pathlib.Path]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.outputMetaDir

   .. py:attribute:: diagram
      :canonical: wfexs_backend.workflow_engines.StagedExecution.diagram
      :type: Optional[pathlib.Path]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.diagram

   .. py:attribute:: logfile
      :canonical: wfexs_backend.workflow_engines.StagedExecution.logfile
      :type: Sequence[pathlib.Path]
      :value: []

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.logfile

   .. py:attribute:: profiles
      :canonical: wfexs_backend.workflow_engines.StagedExecution.profiles
      :type: Optional[Sequence[str]]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.profiles

   .. py:attribute:: queued
      :canonical: wfexs_backend.workflow_engines.StagedExecution.queued
      :type: Optional[datetime.datetime]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.queued

   .. py:attribute:: status
      :canonical: wfexs_backend.workflow_engines.StagedExecution.status
      :type: wfexs_backend.common.ExecutionStatus
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.status

   .. py:attribute:: job_id
      :canonical: wfexs_backend.workflow_engines.StagedExecution.job_id
      :type: Optional[str]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution.job_id

   .. py:method:: _mapping_fixes(orig: Mapping[str, Any], workdir: Optional[pathlib.Path]) -> Mapping[str, Any]
      :canonical: wfexs_backend.workflow_engines.StagedExecution._mapping_fixes
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.StagedExecution._mapping_fixes

.. py:class:: AbstractWorkflowEngineType
   :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType

   Bases: :py:obj:`abc.ABC`

   .. py:method:: MyWorkflowType() -> wfexs_backend.workflow_engines.WorkflowType
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.MyWorkflowType
      :abstractmethod:
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.MyWorkflowType

   .. py:method:: HasExplicitOutputs() -> bool
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.HasExplicitOutputs
      :abstractmethod:
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.HasExplicitOutputs

   .. py:property:: workflowType
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.workflowType
      :type: wfexs_backend.workflow_engines.WorkflowType

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.workflowType

   .. py:method:: getConfiguredContainerType() -> wfexs_backend.common.ContainerType
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.getConfiguredContainerType
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.getConfiguredContainerType

   .. py:property:: configuredContainerType
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.configuredContainerType
      :type: wfexs_backend.common.ContainerType

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.configuredContainerType

   .. py:property:: engine_url
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.engine_url
      :abstractmethod:
      :type: wfexs_backend.common.URIType

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.engine_url

   .. py:method:: _get_engine_version_str(matWfEng: wfexs_backend.workflow_engines.MaterializedWorkflowEngine) -> wfexs_backend.workflow_engines.WorkflowEngineVersionStr
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType._get_engine_version_str
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType._get_engine_version_str

   .. py:method:: sideContainers() -> Sequence[ContainerTaggedName]
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.sideContainers
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.sideContainers

   .. py:method:: materialize_containers(listOfContainerTags: Sequence[ContainerTaggedName], containersDir: pathlib.Path, offline: bool = False, force: bool = False, injectable_containers: Sequence[Container] = []) -> Tuple[ContainerEngineVersionStr, Sequence[Container], ContainerOperatingSystem, ProcessorArchitecture]
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.materialize_containers
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.materialize_containers

   .. py:method:: deploy_containers(containers_list: Sequence[Container], containersDir: Optional[pathlib.Path] = None, force: bool = False) -> Sequence[Container]
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.deploy_containers
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.deploy_containers

   .. py:property:: staged_containers_dir
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.staged_containers_dir
      :abstractmethod:
      :type: pathlib.Path

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.staged_containers_dir

   .. py:method:: materializeEngine(localWf: wfexs_backend.common.LocalWorkflow, engineVersion: Optional[EngineVersion] = None, do_identify: bool = False) -> Optional[MaterializedWorkflowEngine]
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.materializeEngine
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.materializeEngine

   .. py:method:: identifyWorkflow(localWf: wfexs_backend.common.LocalWorkflow, engineVer: Optional[EngineVersion] = None) -> Union[Tuple[EngineVersion, LocalWorkflow], Tuple[None, None]]
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.identifyWorkflow
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.identifyWorkflow

   .. py:method:: materializeWorkflow(matWorfklowEngine: wfexs_backend.workflow_engines.MaterializedWorkflowEngine, consolidatedWorkflowDir: pathlib.Path, offline: bool = False, profiles: Optional[Sequence[str]] = None) -> Tuple[MaterializedWorkflowEngine, Sequence[ContainerTaggedName]]
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.materializeWorkflow
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.materializeWorkflow

   .. py:method:: launchWorkflow(matWfEng: wfexs_backend.workflow_engines.MaterializedWorkflowEngine, inputs: Sequence[MaterializedInput], environment: Sequence[MaterializedInput], outputs: Sequence[ExpectedOutput], profiles: Optional[Sequence[str]] = None) -> Iterator[StagedExecution]
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.launchWorkflow
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.launchWorkflow

   .. py:method:: FromStagedSetup(staged_setup: wfexs_backend.common.StagedSetup, container_factory_classes: Sequence[Type[ContainerFactory]] = [NoContainerFactory], progs_mapping: Optional[ProgsMapping] = None, cache_dir: Optional[pathlib.Path] = None, cache_workflow_dir: Optional[pathlib.Path] = None, cache_workflow_inputs_dir: Optional[pathlib.Path] = None, local_config: Optional[EngineLocalConfig] = None, config_directory: Optional[pathlib.Path] = None) -> wfexs_backend.workflow_engines.AbstractWorkflowEngineType
      :canonical: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.FromStagedSetup
      :abstractmethod:
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.AbstractWorkflowEngineType.FromStagedSetup

.. py:exception:: WorkflowEngineException()
   :canonical: wfexs_backend.workflow_engines.WorkflowEngineException

   Bases: :py:obj:`wfexs_backend.common.AbstractWfExSException`

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngineException

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngineException.__init__

.. py:exception:: WorkflowEngineInstallException()
   :canonical: wfexs_backend.workflow_engines.WorkflowEngineInstallException

   Bases: :py:obj:`wfexs_backend.workflow_engines.WorkflowEngineException`

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngineInstallException

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngineInstallException.__init__

.. py:class:: WorkflowEngine(container_factory_clazz: Type[ContainerFactory] = NoContainerFactory, cacheDir: Optional[pathlib.Path] = None, engine_config: Optional[EngineLocalConfig] = None, progs_mapping: Optional[ProgsMapping] = None, engineTweaksDir: Optional[pathlib.Path] = None, cacheWorkflowDir: Optional[pathlib.Path] = None, cacheWorkflowInputsDir: Optional[pathlib.Path] = None, workDir: Optional[pathlib.Path] = None, outputsDir: Optional[pathlib.Path] = None, outputMetaDir: Optional[pathlib.Path] = None, intermediateDir: Optional[pathlib.Path] = None, tempDir: Optional[pathlib.Path] = None, stagedContainersDir: Optional[pathlib.Path] = None, secure_exec: bool = False, allowOther: bool = False, config_directory: Optional[pathlib.Path] = None, engine_mode: wfexs_backend.common.EngineMode = DEFAULT_ENGINE_MODE, writable_containers: bool = False)
   :canonical: wfexs_backend.workflow_engines.WorkflowEngine

   Bases: :py:obj:`wfexs_backend.workflow_engines.AbstractWorkflowEngineType`

   .. py:attribute:: ENGINE_NAME
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.ENGINE_NAME
      :value: 'abstract'

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.ENGINE_NAME

   .. py:method:: FromStagedSetup(staged_setup: wfexs_backend.common.StagedSetup, container_factory_classes: Sequence[Type[ContainerFactory]] = [NoContainerFactory], progs_mapping: Optional[ProgsMapping] = None, cache_dir: Optional[pathlib.Path] = None, cache_workflow_dir: Optional[pathlib.Path] = None, cache_workflow_inputs_dir: Optional[pathlib.Path] = None, local_config: Optional[EngineLocalConfig] = None, config_directory: Optional[pathlib.Path] = None) -> wfexs_backend.workflow_engines.AbstractWorkflowEngineType
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.FromStagedSetup
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.FromStagedSetup

   .. py:method:: getConfiguredContainerType() -> wfexs_backend.common.ContainerType
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.getConfiguredContainerType

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.getConfiguredContainerType

   .. py:method:: SupportedContainerTypes() -> Set[ContainerType]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.SupportedContainerTypes
      :abstractmethod:
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.SupportedContainerTypes

   .. py:method:: SupportedSecureExecContainerTypes() -> Set[ContainerType]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.SupportedSecureExecContainerTypes
      :abstractmethod:
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.SupportedSecureExecContainerTypes

   .. py:method:: SupportsContainerType(container_type: wfexs_backend.common.ContainerType) -> bool
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.SupportsContainerType
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.SupportsContainerType

   .. py:method:: SupportsContainerFactory(container_factory_clazz: Type[ContainerFactory]) -> bool
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.SupportsContainerFactory
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.SupportsContainerFactory

   .. py:method:: SupportsSecureExecContainerType(container_type: wfexs_backend.common.ContainerType) -> bool
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.SupportsSecureExecContainerType
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.SupportsSecureExecContainerType

   .. py:method:: SupportsSecureExecContainerFactory(container_factory_clazz: Type[ContainerFactory]) -> bool
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.SupportsSecureExecContainerFactory
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.SupportsSecureExecContainerFactory

   .. py:method:: identifyWorkflow(localWf: wfexs_backend.common.LocalWorkflow, engineVer: Optional[EngineVersion] = None) -> Union[Tuple[EngineVersion, LocalWorkflow], Tuple[None, None]]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.identifyWorkflow
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.identifyWorkflow

   .. py:method:: materializeEngineVersion(engineVersion: wfexs_backend.common.EngineVersion) -> Tuple[EngineVersion, pathlib.Path, Fingerprint]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.materializeEngineVersion
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.materializeEngineVersion

   .. py:method:: GetEngineVersion(matWfEng: wfexs_backend.workflow_engines.MaterializedWorkflowEngine) -> wfexs_backend.workflow_engines.WorkflowEngineVersionStr
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.GetEngineVersion
      :staticmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.GetEngineVersion

   .. py:method:: materializeEngine(localWf: wfexs_backend.common.LocalWorkflow, engineVersion: Optional[EngineVersion] = None, do_identify: bool = False) -> Optional[MaterializedWorkflowEngine]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.materializeEngine

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.materializeEngine

   .. py:method:: materializeWorkflow(matWorfklowEngine: wfexs_backend.workflow_engines.MaterializedWorkflowEngine, consolidatedWorkflowDir: pathlib.Path, offline: bool = False, profiles: Optional[Sequence[str]] = None) -> Tuple[MaterializedWorkflowEngine, Sequence[ContainerTaggedName]]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.materializeWorkflow
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.materializeWorkflow

   .. py:method:: sideContainers() -> Sequence[ContainerTaggedName]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.sideContainers

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.sideContainers

   .. py:method:: simpleContainerFileName(imageUrl: wfexs_backend.common.URIType) -> Sequence[RelPath]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.simpleContainerFileName
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.simpleContainerFileName

   .. py:method:: materialize_containers(listOfContainerTags: Sequence[ContainerTaggedName], containersDir: Optional[pathlib.Path] = None, offline: bool = False, force: bool = False, injectable_containers: Sequence[Container] = []) -> Tuple[ContainerEngineVersionStr, Sequence[Container], ContainerOperatingSystem, ProcessorArchitecture]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.materialize_containers

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.materialize_containers

   .. py:method:: deploy_containers(containers_list: Sequence[Container], containersDir: Optional[pathlib.Path] = None, force: bool = False) -> Sequence[Container]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.deploy_containers

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.deploy_containers

   .. py:property:: staged_containers_dir
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.staged_containers_dir
      :type: pathlib.Path

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.staged_containers_dir

   .. py:method:: create_job_directories() -> Tuple[str, pathlib.Path, pathlib.Path, pathlib.Path]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.create_job_directories

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.create_job_directories

   .. py:method:: launchWorkflow(matWfEng: wfexs_backend.workflow_engines.MaterializedWorkflowEngine, inputs: Sequence[MaterializedInput], environment: Sequence[MaterializedInput], outputs: Sequence[ExpectedOutput], profiles: Optional[Sequence[str]] = None) -> Iterator[StagedExecution]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.launchWorkflow
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.launchWorkflow

   .. py:method:: ExecuteWorkflow(matWfEng: wfexs_backend.workflow_engines.MaterializedWorkflowEngine, inputs: Sequence[MaterializedInput], environment: Sequence[MaterializedInput], outputs: Sequence[ExpectedOutput], profiles: Optional[Sequence[str]] = None) -> Iterator[StagedExecution]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.ExecuteWorkflow
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.ExecuteWorkflow

   .. py:method:: MaterializeWorkflowAndContainers(matWfEng: wfexs_backend.workflow_engines.MaterializedWorkflowEngine, containersDir: pathlib.Path, consolidatedWorkflowDir: pathlib.Path, offline: bool = False, injectable_containers: Sequence[Container] = [], injectable_operational_containers: Sequence[Container] = [], profiles: Optional[Sequence[str]] = None) -> Tuple[MaterializedWorkflowEngine, ContainerEngineVersionStr, ContainerOperatingSystem, ProcessorArchitecture]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.MaterializeWorkflowAndContainers
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.MaterializeWorkflowAndContainers

   .. py:attribute:: GuessedCardinalityMapping
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.GuessedCardinalityMapping
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.GuessedCardinalityMapping

   .. py:attribute:: GuessedOutputKindMapping
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.GuessedOutputKindMapping
      :type: Mapping[str, ContentKind]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.GuessedOutputKindMapping

   .. py:method:: identifyMaterializedOutputs(matInputs: Sequence[MaterializedInput], expectedOutputs: Sequence[ExpectedOutput], outputsDir: pathlib.Path, outputsMapping: Optional[Mapping[SymbolicOutputName, Any]] = None) -> Sequence[MaterializedOutput]
      :canonical: wfexs_backend.workflow_engines.WorkflowEngine.identifyMaterializedOutputs

      .. autodoc2-docstring:: wfexs_backend.workflow_engines.WorkflowEngine.identifyMaterializedOutputs
