:py:mod:`wfexs_backend.cache_handler`
=====================================

.. py:module:: wfexs_backend.cache_handler

.. autodoc2-docstring:: wfexs_backend.cache_handler
   :allowtitles:

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

Classes
~~~~~~~

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

   * - :py:obj:`CachedContent <wfexs_backend.cache_handler.CachedContent>`
     - .. autodoc2-docstring:: wfexs_backend.cache_handler.CachedContent
          :summary:
   * - :py:obj:`SchemeHandlerCacheHandler <wfexs_backend.cache_handler.SchemeHandlerCacheHandler>`
     - .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler
          :summary:

API
~~~

.. py:class:: CachedContent
   :canonical: wfexs_backend.cache_handler.CachedContent

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

   .. autodoc2-docstring:: wfexs_backend.cache_handler.CachedContent

   .. py:attribute:: kind
      :canonical: wfexs_backend.cache_handler.CachedContent.kind
      :type: wfexs_backend.common.ContentKind
      :value: None

      .. autodoc2-docstring:: wfexs_backend.cache_handler.CachedContent.kind

   .. py:attribute:: path
      :canonical: wfexs_backend.cache_handler.CachedContent.path
      :type: pathlib.Path
      :value: None

      .. autodoc2-docstring:: wfexs_backend.cache_handler.CachedContent.path

   .. py:attribute:: metadata_array
      :canonical: wfexs_backend.cache_handler.CachedContent.metadata_array
      :type: Sequence[URIWithMetadata]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.cache_handler.CachedContent.metadata_array

   .. py:attribute:: licences
      :canonical: wfexs_backend.cache_handler.CachedContent.licences
      :type: Tuple[URIType, ...]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.cache_handler.CachedContent.licences

   .. py:attribute:: fingerprint
      :canonical: wfexs_backend.cache_handler.CachedContent.fingerprint
      :type: Optional[Fingerprint]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.cache_handler.CachedContent.fingerprint

   .. py:attribute:: clonable
      :canonical: wfexs_backend.cache_handler.CachedContent.clonable
      :type: bool
      :value: True

      .. autodoc2-docstring:: wfexs_backend.cache_handler.CachedContent.clonable

.. py:exception:: CacheHandlerException()
   :canonical: wfexs_backend.cache_handler.CacheHandlerException

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

.. py:exception:: CacheOfflineException()
   :canonical: wfexs_backend.cache_handler.CacheOfflineException

   Bases: :py:obj:`wfexs_backend.cache_handler.CacheHandlerException`

.. py:exception:: CacheHandlerSchemeException()
   :canonical: wfexs_backend.cache_handler.CacheHandlerSchemeException

   Bases: :py:obj:`wfexs_backend.cache_handler.CacheHandlerException`

.. py:class:: SchemeHandlerCacheHandler(cacheDir: pathlib.Path, schemeHandlers: Mapping[str, DocumentedProtocolFetcher] = dict())
   :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler

   .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.__init__

   .. py:attribute:: CACHE_METADATA_SCHEMA
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.CACHE_METADATA_SCHEMA
      :value: 'cast(...)'

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.CACHE_METADATA_SCHEMA

   .. py:method:: addRawSchemeHandlers(schemeHandlers: Mapping[str, DocumentedProtocolFetcher]) -> None
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.addRawSchemeHandlers

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.addRawSchemeHandlers

   .. py:method:: bypassSchemeHandler(scheme: str, handler: Union[DocumentedStatefulProtocolFetcher, DocumentedProtocolFetcher], progs: wfexs_backend.common.ProgsMapping = dict(), setup_block: Optional[Mapping[str, Any]] = None) -> None
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.bypassSchemeHandler

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.bypassSchemeHandler

   .. py:method:: bypassSchemeHandlers(schemeHandlers: Mapping[str, Union[DocumentedStatefulProtocolFetcher, DocumentedProtocolFetcher]]) -> None
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.bypassSchemeHandlers

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.bypassSchemeHandlers

   .. py:method:: instantiateStatefulFetcher(statefulFetcher: Type[StatefulFetcher], progs: wfexs_backend.common.ProgsMapping = dict(), setup_block: Optional[Mapping[str, Any]] = None) -> wfexs_backend.fetchers.StatefulFetcher
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.instantiateStatefulFetcher

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.instantiateStatefulFetcher

   .. py:method:: describeRegisteredSchemes() -> Sequence[Tuple[str, str, int]]
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.describeRegisteredSchemes

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.describeRegisteredSchemes

   .. py:method:: _genUriMetaCachedFilename(hashDir: pathlib.Path, the_remote_file: wfexs_backend.common.URIType) -> Tuple[pathlib.Path, RelPath, pathlib.Path]
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler._genUriMetaCachedFilename

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler._genUriMetaCachedFilename

   .. py:method:: getHashDir(destdir: pathlib.Path) -> pathlib.Path
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.getHashDir
      :staticmethod:

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.getHashDir

   .. py:method:: _parseMetaStructure(fMeta: pathlib.Path, validate_meta: bool = False) -> wfexs_backend.cache_handler.CacheMetadataDict
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler._parseMetaStructure

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler._parseMetaStructure

   .. py:method:: list(*args: str, destdir: Optional[pathlib.Path] = None, acceptGlob: bool = False, cascade: bool = False) -> Iterator[Tuple[LicensedURI, CacheMetadataDict]]
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.list

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.list

   .. py:method:: remove(*args: str, destdir: Optional[pathlib.Path] = None, doRemoveFiles: bool = False, acceptGlob: bool = False, cascade: bool = False) -> Iterator[Tuple[LicensedURI, pathlib.Path, Optional[pathlib.Path]]]
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.remove

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.remove

   .. py:method:: inject(the_remote_file: Union[LicensedURI, urllib.parse.ParseResult, URIType], destdir: Optional[pathlib.Path] = None, fetched_metadata_array: Optional[Sequence[URIWithMetadata]] = None, finalCachedFilename: Optional[pathlib.Path] = None, tempCachedFilename: Optional[pathlib.Path] = None, inputKind: Optional[ContentKind] = None, clonable: bool = True) -> Tuple[Optional[pathlib.Path], Optional[Fingerprint]]
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.inject

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.inject

   .. py:method:: _inject(hashDir: pathlib.Path, the_remote_file: Union[LicensedURI, urllib.parse.ParseResult, URIType], destdir: pathlib.Path, fetched_metadata_array: Optional[Sequence[URIWithMetadata]] = None, finalCachedFilename: Optional[pathlib.Path] = None, tempCachedFilename: Optional[pathlib.Path] = None, inputKind: Optional[Union[ContentKind, AnyURI, Sequence[AnyURI]]] = None, clonable: bool = True) -> Tuple[Optional[pathlib.Path], Optional[Fingerprint]]
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler._inject

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler._inject

   .. py:method:: validate(*args: str, destdir: Optional[pathlib.Path] = None, acceptGlob: bool = False, cascade: bool = False) -> Iterator[Tuple[LicensedURI, bool, Optional[CacheMetadataDict]]]
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.validate

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.validate

   .. py:method:: fetch(remote_file: Union[AnyURI, urllib.parse.ParseResult, Sequence[AnyURI], Sequence[urllib.parse.ParseResult]], offline: bool, destdir: Optional[pathlib.Path] = None, ignoreCache: bool = False, registerInCache: bool = True, vault: Optional[SecurityContextVault] = None, sec_context_name: Optional[str] = None, default_clonable: bool = True) -> wfexs_backend.cache_handler.CachedContent
      :canonical: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.fetch

      .. autodoc2-docstring:: wfexs_backend.cache_handler.SchemeHandlerCacheHandler.fetch
