:py:mod:`wfexs_backend.workdir`
===============================

.. py:module:: wfexs_backend.workdir

.. autodoc2-docstring:: wfexs_backend.workdir
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

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

   * - :py:obj:`Workdir <wfexs_backend.workdir.Workdir>`
     - .. autodoc2-docstring:: wfexs_backend.workdir.Workdir
          :summary:

API
~~~

.. py:exception:: WorkdirException()
   :canonical: wfexs_backend.workdir.WorkdirException

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

.. py:class:: Workdir(pass_gen: wfexs_backend.utils.passphrase_wrapper.WfExSPassphraseGenerator, uniqueRawWorkDir: pathlib.Path, instanceId: Optional[WfExSInstanceId] = None, nickname: Optional[str] = None, orcids: Optional[Sequence[str]] = [], create_ok: bool = False)
   :canonical: wfexs_backend.workdir.Workdir

   .. autodoc2-docstring:: wfexs_backend.workdir.Workdir

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.__init__

   .. py:attribute:: ID_JSON_FILENAME
      :canonical: wfexs_backend.workdir.Workdir.ID_JSON_FILENAME
      :type: Final[str]
      :value: '.id.json'

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.ID_JSON_FILENAME

   .. py:attribute:: LOCKFILE_PREFIX
      :canonical: wfexs_backend.workdir.Workdir.LOCKFILE_PREFIX
      :type: Final[str]
      :value: '._lock_'

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.LOCKFILE_PREFIX

   .. py:attribute:: LOCKFILE_MOUNT
      :canonical: wfexs_backend.workdir.Workdir.LOCKFILE_MOUNT
      :type: Final[str]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.LOCKFILE_MOUNT

   .. py:attribute:: WORKDIR_PASSPHRASE_FILE
      :canonical: wfexs_backend.workdir.Workdir.WORKDIR_PASSPHRASE_FILE
      :type: Final[RelPath]
      :value: 'cast(...)'

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.WORKDIR_PASSPHRASE_FILE

   .. py:attribute:: FUSE_SYSTEM_CONF
      :canonical: wfexs_backend.workdir.Workdir.FUSE_SYSTEM_CONF
      :type: Final[str]
      :value: '/etc/fuse.conf'

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.FUSE_SYSTEM_CONF

   .. py:attribute:: _NotInitialized
      :canonical: wfexs_backend.workdir.Workdir._NotInitialized
      :type: ClassVar[bool]
      :value: True

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir._NotInitialized

   .. py:attribute:: DefaultEncfsCmd
      :canonical: wfexs_backend.workdir.Workdir.DefaultEncfsCmd
      :type: ClassVar[AnyPath]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.DefaultEncfsCmd

   .. py:attribute:: DefaultEncfsType
      :canonical: wfexs_backend.workdir.Workdir.DefaultEncfsType
      :type: ClassVar[EncryptedFSType]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.DefaultEncfsType

   .. py:attribute:: DefaultPrivKey
      :canonical: wfexs_backend.workdir.Workdir.DefaultPrivKey
      :type: ClassVar[bytes]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.DefaultPrivKey

   .. py:attribute:: DefaultPubKey
      :canonical: wfexs_backend.workdir.Workdir.DefaultPubKey
      :type: ClassVar[bytes]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.DefaultPubKey

   .. py:attribute:: EncfsIdleMinutes
      :canonical: wfexs_backend.workdir.Workdir.EncfsIdleMinutes
      :type: ClassVar[int]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.EncfsIdleMinutes

   .. py:attribute:: FusermountCmd
      :canonical: wfexs_backend.workdir.Workdir.FusermountCmd
      :type: ClassVar[AnyPath]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.FusermountCmd

   .. py:method:: InitFromConfig(default_priv_key: bytes, default_pub_key: bytes, logger: logging.Logger, encfs_sect: Optional[Mapping[str, Any]] = None) -> wfexs_backend.common.AnyPath
      :canonical: wfexs_backend.workdir.Workdir.InitFromConfig
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.InitFromConfig

   .. py:property:: workdir_passphrase_file
      :canonical: wfexs_backend.workdir.Workdir.workdir_passphrase_file
      :type: pathlib.Path

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.workdir_passphrase_file

   .. py:method:: isSecure() -> bool
      :canonical: wfexs_backend.workdir.Workdir.isSecure

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.isSecure

   .. py:method:: _writePassphrase(private_key_filename: Optional[pathlib.Path] = None, private_key_passphrase: Optional[str] = None, public_key_filenames: Optional[Sequence[pathlib.Path]] = None, passphrase_length: int = 4) -> Tuple[EncryptedFSType, AnyPath, str, Sequence[bytes]]
      :canonical: wfexs_backend.workdir.Workdir._writePassphrase

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir._writePassphrase

   .. py:method:: _readPassphrase(private_key_filename: Optional[pathlib.Path] = None, private_key_passphrase: Optional[str] = None) -> Tuple[EncryptedFSType, AnyPath, str]
      :canonical: wfexs_backend.workdir.Workdir._readPassphrase

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir._readPassphrase

   .. py:method:: _wakeupEncDir(cond: threading.Condition, workDir: pathlib.Path, logger: logging.Logger) -> None
      :canonical: wfexs_backend.workdir.Workdir._wakeupEncDir
      :staticmethod:

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir._wakeupEncDir

   .. py:method:: setup(try_secure: bool, paranoid_mode: bool, fail_ok: bool = False, public_key_filenames: Optional[Sequence[pathlib.Path]] = None, private_key_filename: Optional[pathlib.Path] = None, private_key_passphrase: Optional[str] = None) -> Tuple[bool, pathlib.Path]
      :canonical: wfexs_backend.workdir.Workdir.setup

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.setup

   .. py:method:: unmount() -> None
      :canonical: wfexs_backend.workdir.Workdir.unmount

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.unmount

   .. py:method:: destroy() -> None
      :canonical: wfexs_backend.workdir.Workdir.destroy

      .. autodoc2-docstring:: wfexs_backend.workdir.Workdir.destroy
