initial commit
This commit is contained in:
61
objects.py
Normal file
61
objects.py
Normal 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"
|
||||
Reference in New Issue
Block a user