:py:mod:`wfexs_backend.container_factories`
===========================================

.. py:module:: wfexs_backend.container_factories

.. autodoc2-docstring:: wfexs_backend.container_factories
   :allowtitles:

Submodules
----------

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

   wfexs_backend.container_factories.singularity_container
   wfexs_backend.container_factories.abstract_docker_container
   wfexs_backend.container_factories.no_container
   wfexs_backend.container_factories.docker_container
   wfexs_backend.container_factories.podman_container

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

Classes
~~~~~~~

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

   * - :py:obj:`Container <wfexs_backend.container_factories.Container>`
     - .. autodoc2-docstring:: wfexs_backend.container_factories.Container
          :summary:
   * - :py:obj:`ContainerCacheHandler <wfexs_backend.container_factories.ContainerCacheHandler>`
     - .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler
          :summary:
   * - :py:obj:`ContainerFactory <wfexs_backend.container_factories.ContainerFactory>`
     -

Data
~~~~

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

   * - :py:obj:`DOCKER_SCHEME <wfexs_backend.container_factories.DOCKER_SCHEME>`
     - .. autodoc2-docstring:: wfexs_backend.container_factories.DOCKER_SCHEME
          :summary:
   * - :py:obj:`DOCKER_URI_PREFIX <wfexs_backend.container_factories.DOCKER_URI_PREFIX>`
     - .. autodoc2-docstring:: wfexs_backend.container_factories.DOCKER_URI_PREFIX
          :summary:
   * - :py:obj:`DEFAULT_DOCKER_REGISTRY <wfexs_backend.container_factories.DEFAULT_DOCKER_REGISTRY>`
     - .. autodoc2-docstring:: wfexs_backend.container_factories.DEFAULT_DOCKER_REGISTRY
          :summary:
   * - :py:obj:`REGISTER_CONSTRUCTOR <wfexs_backend.container_factories.REGISTER_CONSTRUCTOR>`
     - .. autodoc2-docstring:: wfexs_backend.container_factories.REGISTER_CONSTRUCTOR
          :summary:

API
~~~

.. py:data:: DOCKER_SCHEME
   :canonical: wfexs_backend.container_factories.DOCKER_SCHEME
   :type: Final[str]
   :value: 'docker'

   .. autodoc2-docstring:: wfexs_backend.container_factories.DOCKER_SCHEME

.. py:data:: DOCKER_URI_PREFIX
   :canonical: wfexs_backend.container_factories.DOCKER_URI_PREFIX
   :type: Final[str]
   :value: None

   .. autodoc2-docstring:: wfexs_backend.container_factories.DOCKER_URI_PREFIX

.. py:data:: DEFAULT_DOCKER_REGISTRY
   :canonical: wfexs_backend.container_factories.DEFAULT_DOCKER_REGISTRY
   :type: Final[str]
   :value: 'docker.io'

   .. autodoc2-docstring:: wfexs_backend.container_factories.DEFAULT_DOCKER_REGISTRY

.. py:class:: Container
   :canonical: wfexs_backend.container_factories.Container

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

   .. autodoc2-docstring:: wfexs_backend.container_factories.Container

   .. py:attribute:: taggedName
      :canonical: wfexs_backend.container_factories.Container.taggedName
      :type: wfexs_backend.common.URIType
      :value: 'cast(...)'

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.taggedName

   .. py:attribute:: architecture
      :canonical: wfexs_backend.container_factories.Container.architecture
      :type: Optional[ProcessorArchitecture]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.architecture

   .. py:attribute:: operatingSystem
      :canonical: wfexs_backend.container_factories.Container.operatingSystem
      :type: Optional[ContainerOperatingSystem]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.operatingSystem

   .. py:attribute:: localPath
      :canonical: wfexs_backend.container_factories.Container.localPath
      :type: Optional[PathlibLike]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.localPath

   .. py:attribute:: signature
      :canonical: wfexs_backend.container_factories.Container.signature
      :type: Optional[Fingerprint]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.signature

   .. py:attribute:: fingerprint
      :canonical: wfexs_backend.container_factories.Container.fingerprint
      :type: Optional[Fingerprint]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.fingerprint

   .. py:attribute:: metadataLocalPath
      :canonical: wfexs_backend.container_factories.Container.metadataLocalPath
      :type: Optional[PathlibLike]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.metadataLocalPath

   .. py:attribute:: source_type
      :canonical: wfexs_backend.container_factories.Container.source_type
      :type: Optional[ContainerType]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.source_type

   .. py:attribute:: image_signature
      :canonical: wfexs_backend.container_factories.Container.image_signature
      :type: Optional[Fingerprint]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.image_signature

   .. py:method:: _value_defaults_fixes() -> None
      :canonical: wfexs_backend.container_factories.Container._value_defaults_fixes

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container._value_defaults_fixes

   .. py:property:: decompose_docker_tagged_name
      :canonical: wfexs_backend.container_factories.Container.decompose_docker_tagged_name
      :type: Tuple[Optional[str], str, Optional[str]]

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.decompose_docker_tagged_name

   .. py:method:: ContainerYAMLConstructor(loader: wfexs_backend.container_factories.AnyYAMLLoader, node: typing.Any) -> wfexs_backend.container_factories.Container
      :canonical: wfexs_backend.container_factories.Container.ContainerYAMLConstructor
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.ContainerYAMLConstructor

   .. py:method:: RegisterYAMLConstructor(loader: Type[AnyYAMLLoader]) -> None
      :canonical: wfexs_backend.container_factories.Container.RegisterYAMLConstructor
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.container_factories.Container.RegisterYAMLConstructor

.. py:data:: REGISTER_CONSTRUCTOR
   :canonical: wfexs_backend.container_factories.REGISTER_CONSTRUCTOR
   :value: True

   .. autodoc2-docstring:: wfexs_backend.container_factories.REGISTER_CONSTRUCTOR

.. py:exception:: ContainerFactoryException()
   :canonical: wfexs_backend.container_factories.ContainerFactoryException

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

   .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactoryException

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactoryException.__init__

.. py:exception:: ContainerEngineException()
   :canonical: wfexs_backend.container_factories.ContainerEngineException

   Bases: :py:obj:`wfexs_backend.container_factories.ContainerFactoryException`

   .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerEngineException

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerEngineException.__init__

.. py:exception:: ContainerNotFoundException()
   :canonical: wfexs_backend.container_factories.ContainerNotFoundException

   Bases: :py:obj:`wfexs_backend.container_factories.ContainerFactoryException`

   .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerNotFoundException

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerNotFoundException.__init__

.. py:class:: ContainerCacheHandler(containers_cache_dir: Optional[pathlib.Path], engine_name: str, simple_file_name_method: wfexs_backend.container_factories.ContainerFileNamingMethod)
   :canonical: wfexs_backend.container_factories.ContainerCacheHandler

   .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler.__init__

   .. py:method:: _genTmpContainerPath() -> pathlib.Path
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler._genTmpContainerPath

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler._genTmpContainerPath

   .. py:method:: _genContainerPaths(container: wfexs_backend.common.ContainerTaggedName) -> Sequence[Tuple[pathlib.Path, pathlib.Path]]
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler._genContainerPaths

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler._genContainerPaths

   .. py:method:: _computeFingerprint(image_path: pathlib.Path) -> wfexs_backend.common.Fingerprint
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler._computeFingerprint

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler._computeFingerprint

   .. py:method:: _computeCanonicalImagePath(image_path: pathlib.Path) -> Tuple[pathlib.Path, Fingerprint]
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler._computeCanonicalImagePath

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler._computeCanonicalImagePath

   .. py:method:: query(container: wfexs_backend.common.ContainerTaggedName) -> Tuple[bool, Sequence[Tuple[pathlib.Path, pathlib.Path]], Optional[Fingerprint]]
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler.query

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler.query

   .. py:method:: genStagedContainersDirPaths(container: wfexs_backend.common.ContainerTaggedName, stagedContainersDir: pathlib.Path) -> Sequence[Tuple[pathlib.Path, pathlib.Path]]
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler.genStagedContainersDirPaths

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler.genStagedContainersDirPaths

   .. py:method:: transfer(container: wfexs_backend.common.ContainerTaggedName, stagedContainersDir: pathlib.Path, force: bool = False) -> Optional[Sequence[Tuple[pathlib.Path, pathlib.Path]]]
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler.transfer

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler.transfer

   .. py:method:: update(container: wfexs_backend.common.ContainerTaggedName, image_path: pathlib.Path, image_metadata_path: pathlib.Path, do_move: bool = True) -> None
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler.update

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler.update

   .. py:method:: invalidate(container: wfexs_backend.common.ContainerTaggedName) -> None
      :canonical: wfexs_backend.container_factories.ContainerCacheHandler.invalidate

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerCacheHandler.invalidate

.. py:class:: ContainerFactory(simpleFileNameMethod: wfexs_backend.container_factories.ContainerFileNamingMethod, containersCacheDir: Optional[pathlib.Path] = None, stagedContainersDir: Optional[pathlib.Path] = None, progs_mapping: Optional[ProgsMapping] = None, engine_name: str = 'unset', tempDir: Optional[pathlib.Path] = None)
   :canonical: wfexs_backend.container_factories.ContainerFactory

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

   .. py:attribute:: ENABLED
      :canonical: wfexs_backend.container_factories.ContainerFactory.ENABLED
      :type: ClassVar[bool]
      :value: True

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.ENABLED

   .. py:method:: ContainerType() -> wfexs_backend.common.ContainerType
      :canonical: wfexs_backend.container_factories.ContainerFactory.ContainerType
      :abstractmethod:
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.ContainerType

   .. py:method:: AcceptsContainer(container: wfexs_backend.common.ContainerTaggedName) -> bool
      :canonical: wfexs_backend.container_factories.ContainerFactory.AcceptsContainer
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.AcceptsContainer

   .. py:method:: AcceptsContainerType(container_type: Union[common.ContainerType, Set[common.ContainerType]]) -> bool
      :canonical: wfexs_backend.container_factories.ContainerFactory.AcceptsContainerType
      :abstractmethod:
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.AcceptsContainerType

   .. py:property:: environment
      :canonical: wfexs_backend.container_factories.ContainerFactory.environment
      :type: Mapping[str, str]

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.environment

   .. py:property:: containerType
      :canonical: wfexs_backend.container_factories.ContainerFactory.containerType
      :type: wfexs_backend.common.ContainerType

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.containerType

   .. py:property:: command
      :canonical: wfexs_backend.container_factories.ContainerFactory.command
      :type: str

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.command

   .. py:property:: cacheDir
      :canonical: wfexs_backend.container_factories.ContainerFactory.cacheDir
      :type: pathlib.Path

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.cacheDir

   .. py:method:: engine_version() -> wfexs_backend.container_factories.ContainerEngineVersionStr
      :canonical: wfexs_backend.container_factories.ContainerFactory.engine_version

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.engine_version

   .. py:property:: architecture
      :canonical: wfexs_backend.container_factories.ContainerFactory.architecture
      :type: Tuple[ContainerOperatingSystem, ProcessorArchitecture]

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.architecture

   .. py:method:: materializeContainers(tagList: Sequence[ContainerTaggedName], containers_dir: Optional[pathlib.Path] = None, offline: bool = False, force: bool = False, injectable_containers: Sequence[Container] = []) -> Sequence[Container]
      :canonical: wfexs_backend.container_factories.ContainerFactory.materializeContainers

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.materializeContainers

   .. py:method:: materializeSingleContainer(tag: wfexs_backend.common.ContainerTaggedName, containers_dir: Optional[pathlib.Path] = None, offline: bool = False, force: bool = False) -> Optional[Container]
      :canonical: wfexs_backend.container_factories.ContainerFactory.materializeSingleContainer
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.materializeSingleContainer

   .. py:method:: deployContainers(containers_list: Sequence[Container], containers_dir: Optional[pathlib.Path] = None, force: bool = False) -> Sequence[Container]
      :canonical: wfexs_backend.container_factories.ContainerFactory.deployContainers

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.deployContainers

   .. py:method:: deploySingleContainer(container: wfexs_backend.common.ContainerTaggedName, containers_dir: Optional[pathlib.Path] = None, force: bool = False) -> Tuple[Container, bool]
      :canonical: wfexs_backend.container_factories.ContainerFactory.deploySingleContainer
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.deploySingleContainer

   .. py:method:: generateCanonicalTag(container: wfexs_backend.common.ContainerTaggedName) -> str
      :canonical: wfexs_backend.container_factories.ContainerFactory.generateCanonicalTag
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.generateCanonicalTag

   .. py:method:: supportsFeature(feat: str) -> bool
      :canonical: wfexs_backend.container_factories.ContainerFactory.supportsFeature

      .. autodoc2-docstring:: wfexs_backend.container_factories.ContainerFactory.supportsFeature
