Coverage for src/workstack/status/models/status_data.py: 100%
67 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-19 09:31 -0400
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-19 09:31 -0400
1"""Data models for status information."""
3from dataclasses import dataclass
4from pathlib import Path
7@dataclass(frozen=True)
8class WorktreeInfo:
9 """Basic worktree information."""
11 name: str
12 path: Path
13 branch: str | None
14 is_root: bool
17@dataclass(frozen=True)
18class CommitInfo:
19 """Information about a git commit."""
21 sha: str
22 message: str
23 author: str
24 date: str
27@dataclass(frozen=True)
28class GitStatus:
29 """Git repository status information."""
31 branch: str | None
32 clean: bool
33 ahead: int
34 behind: int
35 staged_files: list[str]
36 modified_files: list[str]
37 untracked_files: list[str]
38 recent_commits: list[CommitInfo]
41@dataclass(frozen=True)
42class StackPosition:
43 """Graphite stack position information."""
45 stack: list[str]
46 current_branch: str
47 parent_branch: str | None
48 children_branches: list[str]
49 is_trunk: bool
52@dataclass(frozen=True)
53class PullRequestStatus:
54 """Pull request status information."""
56 number: int
57 title: str | None # May not be available from all data sources
58 state: str
59 is_draft: bool
60 url: str
61 checks_passing: bool | None
62 reviews: list[str] | None # May not be available from all data sources
63 ready_to_merge: bool
66@dataclass(frozen=True)
67class EnvironmentStatus:
68 """Environment variables status."""
70 variables: dict[str, str]
73@dataclass(frozen=True)
74class DependencyStatus:
75 """Dependency status for various language ecosystems."""
77 language: str
78 up_to_date: bool
79 outdated_count: int
80 details: str | None
83@dataclass(frozen=True)
84class PlanStatus:
85 """Status of .PLAN.md file."""
87 exists: bool
88 path: Path | None
89 summary: str | None
90 line_count: int
91 first_lines: list[str]
94@dataclass(frozen=True)
95class StatusData:
96 """Container for all status information."""
98 worktree_info: WorktreeInfo
99 git_status: GitStatus | None
100 stack_position: StackPosition | None
101 pr_status: PullRequestStatus | None
102 environment: EnvironmentStatus | None
103 dependencies: DependencyStatus | None
104 plan: PlanStatus | None
105 related_worktrees: list[WorktreeInfo]