:py:mod:`wfexs_backend.fetchers.git`
====================================

.. py:module:: wfexs_backend.fetchers.git

.. autodoc2-docstring:: wfexs_backend.fetchers.git
   :allowtitles:

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

Classes
~~~~~~~

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

   * - :py:obj:`GitFetcher <wfexs_backend.fetchers.git.GitFetcher>`
     -

Data
~~~~

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

   * - :py:obj:`GITHUB_NETLOC <wfexs_backend.fetchers.git.GITHUB_NETLOC>`
     - .. autodoc2-docstring:: wfexs_backend.fetchers.git.GITHUB_NETLOC
          :summary:

API
~~~

.. py:data:: GITHUB_NETLOC
   :canonical: wfexs_backend.fetchers.git.GITHUB_NETLOC
   :value: 'github.com'

   .. autodoc2-docstring:: wfexs_backend.fetchers.git.GITHUB_NETLOC

.. py:class:: GitFetcher(progs: wfexs_backend.common.ProgsMapping, setup_block: Optional[Mapping[str, Any]] = None)
   :canonical: wfexs_backend.fetchers.git.GitFetcher

   Bases: :py:obj:`wfexs_backend.fetchers.AbstractRepoFetcher`

   .. py:attribute:: GIT_PROTO
      :canonical: wfexs_backend.fetchers.git.GitFetcher.GIT_PROTO
      :type: Final[str]
      :value: 'git'

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.GIT_PROTO

   .. py:attribute:: GIT_PROTO_PREFIX
      :canonical: wfexs_backend.fetchers.git.GitFetcher.GIT_PROTO_PREFIX
      :type: Final[str]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.GIT_PROTO_PREFIX

   .. py:attribute:: GITHUB_SCHEME
      :canonical: wfexs_backend.fetchers.git.GitFetcher.GITHUB_SCHEME
      :type: Final[str]
      :value: 'github'

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.GITHUB_SCHEME

   .. py:attribute:: DEFAULT_GIT_CMD
      :canonical: wfexs_backend.fetchers.git.GitFetcher.DEFAULT_GIT_CMD
      :type: Final[SymbolicName]
      :value: 'cast(...)'

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.DEFAULT_GIT_CMD

   .. py:attribute:: HEAD_LABEL
      :canonical: wfexs_backend.fetchers.git.GitFetcher.HEAD_LABEL
      :type: Final[bytes]
      :value: b'HEAD'

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.HEAD_LABEL

   .. py:attribute:: REFS_HEADS_PREFIX
      :canonical: wfexs_backend.fetchers.git.GitFetcher.REFS_HEADS_PREFIX
      :type: Final[bytes]
      :value: b'refs/heads/'

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.REFS_HEADS_PREFIX

   .. py:attribute:: REFS_TAGS_PREFIX
      :canonical: wfexs_backend.fetchers.git.GitFetcher.REFS_TAGS_PREFIX
      :type: Final[bytes]
      :value: b'refs/tags/'

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.REFS_TAGS_PREFIX

   .. py:attribute:: GIT_SCHEMES
      :canonical: wfexs_backend.fetchers.git.GitFetcher.GIT_SCHEMES
      :type: Final[Sequence[str]]
      :value: ['https', 'git', 'ssh', 'file']

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.GIT_SCHEMES

   .. py:method:: GetSchemeHandlers() -> Mapping[str, DocumentedStatefulProtocolFetcher]
      :canonical: wfexs_backend.fetchers.git.GitFetcher.GetSchemeHandlers
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.GetSchemeHandlers

   .. py:property:: description
      :canonical: wfexs_backend.fetchers.git.GitFetcher.description
      :type: str

   .. py:method:: GetNeededPrograms() -> Sequence[SymbolicName]
      :canonical: wfexs_backend.fetchers.git.GitFetcher.GetNeededPrograms
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.GetNeededPrograms

   .. py:method:: _find_git_repo_in_uri(remote_file: Union[URIType, parse.ParseResult]) -> Tuple[RemoteRepo, Sequence[str], Sequence[RepoTag]]
      :canonical: wfexs_backend.fetchers.git.GitFetcher._find_git_repo_in_uri
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher._find_git_repo_in_uri

   .. py:method:: GuessRepoParams(wf_url: Union[URIType, parse.ParseResult], logger: Optional[logging.Logger] = None, fail_ok: bool = False) -> Optional[RemoteRepo]
      :canonical: wfexs_backend.fetchers.git.GitFetcher.GuessRepoParams
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.GuessRepoParams

   .. py:method:: build_pid_from_repo(remote_repo: wfexs_backend.fetchers.RemoteRepo) -> Optional[str]
      :canonical: wfexs_backend.fetchers.git.GitFetcher.build_pid_from_repo

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.build_pid_from_repo

   .. py:method:: materialize_repo(repoURL: wfexs_backend.common.RepoURL, repoTag: Optional[RepoTag] = None, repo_tag_destdir: Optional[PathLikePath] = None, base_repo_destdir: Optional[PathLikePath] = None, doUpdate: Optional[bool] = True) -> Tuple[pathlib.Path, RemoteRepo, Sequence[URIWithMetadata]]
      :canonical: wfexs_backend.fetchers.git.GitFetcher.materialize_repo

      .. autodoc2-docstring:: wfexs_backend.fetchers.git.GitFetcher.materialize_repo

   .. py:method:: fetch(remote_file: wfexs_backend.common.URIType, cachedFilename: wfexs_backend.common.PathLikePath, secContext: Optional[SecurityContextConfig] = None) -> wfexs_backend.fetchers.ProtocolFetcherReturn
      :canonical: wfexs_backend.fetchers.git.GitFetcher.fetch
