Add models and data structures
This commit is contained in:
@@ -22,31 +22,24 @@ class Commit:
|
||||
"""Represents a git commit."""
|
||||
sha: str
|
||||
message: str
|
||||
author_name: str
|
||||
author: str
|
||||
author_email: str
|
||||
committed_datetime: datetime
|
||||
author_datetime: datetime
|
||||
parents: List[str] = field(default_factory=list)
|
||||
additions: int = 0
|
||||
deletions: int = 0
|
||||
timestamp: datetime
|
||||
lines_added: int = 0
|
||||
lines_deleted: int = 0
|
||||
files_changed: List[str] = field(default_factory=list)
|
||||
file_changes: List["FileChange"] = field(default_factory=list)
|
||||
is_merge: bool = False
|
||||
is_revert: bool = False
|
||||
|
||||
@property
|
||||
def timestamp(self) -> datetime:
|
||||
return self.committed_datetime
|
||||
|
||||
|
||||
@dataclass_json
|
||||
@dataclass
|
||||
class FileChange:
|
||||
"""Represents changes to a file in a commit."""
|
||||
filepath: str
|
||||
additions: int
|
||||
deletions: int
|
||||
changes: int = 0
|
||||
lines_added: int
|
||||
lines_deleted: int
|
||||
change_type: str
|
||||
|
||||
|
||||
@dataclass_json
|
||||
@@ -97,15 +90,3 @@ class VelocityAnalysis:
|
||||
top_contributors: List[Author]
|
||||
most_active_day: str
|
||||
most_active_hour: str
|
||||
|
||||
|
||||
@dataclass_json
|
||||
@dataclass
|
||||
class ProductivityReport:
|
||||
"""Comprehensive productivity report."""
|
||||
repository_path: str
|
||||
analysis_days: int
|
||||
commit_analysis: Optional[CommitAnalysis]
|
||||
code_churn_analysis: Optional[CodeChurnAnalysis]
|
||||
risky_commit_analysis: Optional[RiskyCommitAnalysis]
|
||||
velocity_analysis: Optional[VelocityAnalysis]
|
||||
|
||||
Reference in New Issue
Block a user