summaryrefslogtreecommitdiffstats
path: root/venv/lib/python3.9/site-packages/git/db.py
diff options
context:
space:
mode:
authornoptuno <repollo.marrero@gmail.com>2023-04-28 02:29:30 +0200
committernoptuno <repollo.marrero@gmail.com>2023-04-28 02:29:30 +0200
commit355dee533bb34a571b9367820a63cccb668cf866 (patch)
tree838af886b4fec07320aeb10f0d1e74ba79e79b5c /venv/lib/python3.9/site-packages/git/db.py
parentadded pyproject.toml file (diff)
downloadgpt4free-355dee533bb34a571b9367820a63cccb668cf866.tar
gpt4free-355dee533bb34a571b9367820a63cccb668cf866.tar.gz
gpt4free-355dee533bb34a571b9367820a63cccb668cf866.tar.bz2
gpt4free-355dee533bb34a571b9367820a63cccb668cf866.tar.lz
gpt4free-355dee533bb34a571b9367820a63cccb668cf866.tar.xz
gpt4free-355dee533bb34a571b9367820a63cccb668cf866.tar.zst
gpt4free-355dee533bb34a571b9367820a63cccb668cf866.zip
Diffstat (limited to 'venv/lib/python3.9/site-packages/git/db.py')
-rw-r--r--venv/lib/python3.9/site-packages/git/db.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/venv/lib/python3.9/site-packages/git/db.py b/venv/lib/python3.9/site-packages/git/db.py
new file mode 100644
index 00000000..bff43347
--- /dev/null
+++ b/venv/lib/python3.9/site-packages/git/db.py
@@ -0,0 +1,63 @@
+"""Module with our own gitdb implementation - it uses the git command"""
+from git.util import bin_to_hex, hex_to_bin
+from gitdb.base import OInfo, OStream
+from gitdb.db import GitDB # @UnusedImport
+from gitdb.db import LooseObjectDB
+
+from gitdb.exc import BadObject
+from git.exc import GitCommandError
+
+# typing-------------------------------------------------
+
+from typing import TYPE_CHECKING
+from git.types import PathLike
+
+if TYPE_CHECKING:
+ from git.cmd import Git
+
+
+# --------------------------------------------------------
+
+__all__ = ("GitCmdObjectDB", "GitDB")
+
+
+class GitCmdObjectDB(LooseObjectDB):
+
+ """A database representing the default git object store, which includes loose
+ objects, pack files and an alternates file
+
+ It will create objects only in the loose object database.
+ :note: for now, we use the git command to do all the lookup, just until he
+ have packs and the other implementations
+ """
+
+ def __init__(self, root_path: PathLike, git: "Git") -> None:
+ """Initialize this instance with the root and a git command"""
+ super(GitCmdObjectDB, self).__init__(root_path)
+ self._git = git
+
+ def info(self, binsha: bytes) -> OInfo:
+ hexsha, typename, size = self._git.get_object_header(bin_to_hex(binsha))
+ return OInfo(hex_to_bin(hexsha), typename, size)
+
+ def stream(self, binsha: bytes) -> OStream:
+ """For now, all lookup is done by git itself"""
+ hexsha, typename, size, stream = self._git.stream_object_data(bin_to_hex(binsha))
+ return OStream(hex_to_bin(hexsha), typename, size, stream)
+
+ # { Interface
+
+ def partial_to_complete_sha_hex(self, partial_hexsha: str) -> bytes:
+ """:return: Full binary 20 byte sha from the given partial hexsha
+ :raise AmbiguousObjectName:
+ :raise BadObject:
+ :note: currently we only raise BadObject as git does not communicate
+ AmbiguousObjects separately"""
+ try:
+ hexsha, _typename, _size = self._git.get_object_header(partial_hexsha)
+ return hex_to_bin(hexsha)
+ except (GitCommandError, ValueError) as e:
+ raise BadObject(partial_hexsha) from e
+ # END handle exceptions
+
+ # } END interface