initial commit

This commit is contained in:
KubaPro010
2025-11-14 22:22:34 +01:00
commit c3df0f26a9
4 changed files with 613 additions and 0 deletions

61
objects.py Normal file
View File

@@ -0,0 +1,61 @@
from datetime import datetime
from dataclasses import dataclass
from enum import StrEnum
OBJ_TYPES = {
1: "commit",
2: "tree",
3: "blob",
4: "tag",
6: "ofs_delta",
7: "ref_delta"
}
@dataclass
class GitUser:
name: str
email: str
time: datetime
class GitObjectType(StrEnum):
COMMIT = "commit"
TREE = "tree"
BLOB = "blob"
TAG = "tag"
@dataclass
class GitFile:
mode: int
filename: str
data_hash: str
data: bytes | None = None
@dataclass
class Tree:
hash: str
files: list[GitFile]
bytes: "bytes | None" = None
@dataclass
class Commit:
hash: str
tree: Tree | None
parent: "Commit | None"
author: GitUser | None
committer: GitUser | None
message: str
bytes: "bytes"
@dataclass
class Blob:
hash: str
bytes: "bytes"
@dataclass
class Tag:
hash: str
name: str | None
object: "Commit | Tree | bytes | Tag | None"
tagger: GitUser | None
message: str
bytes: "bytes"