| |
| |
| |
| |
|
|
| |
|
|
| __all__ = [ |
| "Actor", |
| "AmbiguousObjectName", |
| "BadName", |
| "BadObject", |
| "BadObjectType", |
| "BaseIndexEntry", |
| "Blob", |
| "BlobFilter", |
| "BlockingLockFile", |
| "CacheError", |
| "CheckoutError", |
| "CommandError", |
| "Commit", |
| "Diff", |
| "DiffConstants", |
| "DiffIndex", |
| "Diffable", |
| "FetchInfo", |
| "Git", |
| "GitCmdObjectDB", |
| "GitCommandError", |
| "GitCommandNotFound", |
| "GitConfigParser", |
| "GitDB", |
| "GitError", |
| "HEAD", |
| "Head", |
| "HookExecutionError", |
| "INDEX", |
| "IndexEntry", |
| "IndexFile", |
| "IndexObject", |
| "InvalidDBRoot", |
| "InvalidGitRepositoryError", |
| "List", |
| "LockFile", |
| "NULL_TREE", |
| "NoSuchPathError", |
| "ODBError", |
| "Object", |
| "Optional", |
| "ParseError", |
| "PathLike", |
| "PushInfo", |
| "RefLog", |
| "RefLogEntry", |
| "Reference", |
| "Remote", |
| "RemoteProgress", |
| "RemoteReference", |
| "Repo", |
| "RepositoryDirtyError", |
| "RootModule", |
| "RootUpdateProgress", |
| "Sequence", |
| "StageType", |
| "Stats", |
| "Submodule", |
| "SymbolicReference", |
| "TYPE_CHECKING", |
| "Tag", |
| "TagObject", |
| "TagReference", |
| "Tree", |
| "TreeModifier", |
| "Tuple", |
| "Union", |
| "UnmergedEntriesError", |
| "UnsafeOptionError", |
| "UnsafeProtocolError", |
| "UnsupportedOperation", |
| "UpdateProgress", |
| "WorkTreeRepositoryUnsupported", |
| "refresh", |
| "remove_password_if_present", |
| "rmtree", |
| "safe_decode", |
| "to_hex_sha", |
| ] |
|
|
| __version__ = '3.1.44' |
|
|
| from typing import Any, List, Optional, Sequence, TYPE_CHECKING, Tuple, Union |
|
|
| if TYPE_CHECKING: |
| from types import ModuleType |
|
|
| import warnings |
|
|
| from gitdb.util import to_hex_sha |
|
|
| from git.exc import ( |
| AmbiguousObjectName, |
| BadName, |
| BadObject, |
| BadObjectType, |
| CacheError, |
| CheckoutError, |
| CommandError, |
| GitCommandError, |
| GitCommandNotFound, |
| GitError, |
| HookExecutionError, |
| InvalidDBRoot, |
| InvalidGitRepositoryError, |
| NoSuchPathError, |
| ODBError, |
| ParseError, |
| RepositoryDirtyError, |
| UnmergedEntriesError, |
| UnsafeOptionError, |
| UnsafeProtocolError, |
| UnsupportedOperation, |
| WorkTreeRepositoryUnsupported, |
| ) |
| from git.types import PathLike |
|
|
| try: |
| from git.compat import safe_decode |
| from git.config import GitConfigParser |
| from git.objects import ( |
| Blob, |
| Commit, |
| IndexObject, |
| Object, |
| RootModule, |
| RootUpdateProgress, |
| Submodule, |
| TagObject, |
| Tree, |
| TreeModifier, |
| UpdateProgress, |
| ) |
| from git.refs import ( |
| HEAD, |
| Head, |
| RefLog, |
| RefLogEntry, |
| Reference, |
| RemoteReference, |
| SymbolicReference, |
| Tag, |
| TagReference, |
| ) |
| from git.diff import ( |
| INDEX, |
| NULL_TREE, |
| Diff, |
| DiffConstants, |
| DiffIndex, |
| Diffable, |
| ) |
| from git.db import GitCmdObjectDB, GitDB |
| from git.cmd import Git |
| from git.repo import Repo |
| from git.remote import FetchInfo, PushInfo, Remote, RemoteProgress |
| from git.index import ( |
| BaseIndexEntry, |
| BlobFilter, |
| CheckoutError, |
| IndexEntry, |
| IndexFile, |
| StageType, |
| |
| |
| util, |
| ) |
| from git.util import ( |
| Actor, |
| BlockingLockFile, |
| LockFile, |
| Stats, |
| remove_password_if_present, |
| rmtree, |
| ) |
| except GitError as _exc: |
| raise ImportError("%s: %s" % (_exc.__class__.__name__, _exc)) from _exc |
|
|
|
|
| def _warned_import(message: str, fullname: str) -> "ModuleType": |
| import importlib |
|
|
| warnings.warn(message, DeprecationWarning, stacklevel=3) |
| return importlib.import_module(fullname) |
|
|
|
|
| def _getattr(name: str) -> Any: |
| |
|
|
| if name == "util": |
| return _warned_import( |
| "The expression `git.util` and the import `from git import util` actually " |
| "reference git.index.util, and not the git.util module accessed in " |
| '`from git.util import XYZ` or `sys.modules["git.util"]`. This potentially ' |
| "confusing behavior is currently preserved for compatibility, but may be " |
| "changed in the future and should not be relied on.", |
| fullname="git.index.util", |
| ) |
|
|
| for names, prefix in ( |
| ({"head", "log", "reference", "symbolic", "tag"}, "git.refs"), |
| ({"base", "fun", "typ"}, "git.index"), |
| ): |
| if name not in names: |
| continue |
|
|
| fullname = f"{prefix}.{name}" |
|
|
| return _warned_import( |
| f"{__name__}.{name} is a private alias of {fullname} and subject to " |
| f"immediate removal. Use {fullname} instead.", |
| fullname=fullname, |
| ) |
|
|
| raise AttributeError(f"module {__name__!r} has no attribute {name!r}") |
|
|
|
|
| if not TYPE_CHECKING: |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| del util |
|
|
| |
| __getattr__ = _getattr |
|
|
| |
|
|
| GIT_OK = None |
|
|
|
|
| def refresh(path: Optional[PathLike] = None) -> None: |
| """Convenience method for setting the git executable path. |
| |
| :param path: |
| Optional path to the Git executable. If not absolute, it is resolved |
| immediately, relative to the current directory. |
| |
| :note: |
| The `path` parameter is usually omitted and cannot be used to specify a custom |
| command whose location is looked up in a path search on each call. See |
| :meth:`Git.refresh <git.cmd.Git.refresh>` for details on how to achieve this. |
| |
| :note: |
| This calls :meth:`Git.refresh <git.cmd.Git.refresh>` and sets other global |
| configuration according to the effect of doing so. As such, this function should |
| usually be used instead of using :meth:`Git.refresh <git.cmd.Git.refresh>` or |
| :meth:`FetchInfo.refresh <git.remote.FetchInfo.refresh>` directly. |
| |
| :note: |
| This function is called automatically, with no arguments, at import time. |
| """ |
| global GIT_OK |
| GIT_OK = False |
|
|
| if not Git.refresh(path=path): |
| return |
| if not FetchInfo.refresh(): |
| return |
|
|
| GIT_OK = True |
|
|
|
|
| try: |
| refresh() |
| except Exception as _exc: |
| raise ImportError("Failed to initialize: {0}".format(_exc)) from _exc |
|
|
| |
|
|