32 lines
644 B
Python
32 lines
644 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from dataclasses import dataclass, field
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass(frozen=True)
|
||
|
|
class Subsystem:
|
||
|
|
name: str
|
||
|
|
path: str
|
||
|
|
file_count: int
|
||
|
|
notes: str
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass(frozen=True)
|
||
|
|
class PortingModule:
|
||
|
|
name: str
|
||
|
|
responsibility: str
|
||
|
|
source_hint: str
|
||
|
|
status: str = 'planned'
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class PortingBacklog:
|
||
|
|
title: str
|
||
|
|
modules: list[PortingModule] = field(default_factory=list)
|
||
|
|
|
||
|
|
def summary_lines(self) -> list[str]:
|
||
|
|
return [
|
||
|
|
f'- {module.name} [{module.status}] — {module.responsibility} (from {module.source_hint})'
|
||
|
|
for module in self.modules
|
||
|
|
]
|