spr migrated books, and tester
This commit is contained in:
156
cfg/amar/models/__init__.py
Normal file
156
cfg/amar/models/__init__.py
Normal file
@@ -0,0 +1,156 @@
|
||||
"""
|
||||
Pawprint Models - Platform Agnostic Definitions
|
||||
|
||||
Portable to: TypeScript, Pydantic, Django, SQLAlchemy, etc.
|
||||
|
||||
Hierarchy:
|
||||
pawprint (abstract)
|
||||
├── artery → Pulse = Vein + Nest + Larder
|
||||
├── album → Book = Template + Larder
|
||||
└── ward → Table = Tools + Nest + Larder
|
||||
|
||||
Shared components: Nest, Larder
|
||||
System-specific: Vein (artery), Template (album), Tools (ward)
|
||||
|
||||
Rules:
|
||||
- Larder in album generated from Template = "Book (written)"
|
||||
- Same Larder exists independently in ward/artery
|
||||
- Nest contains runtime configs, credentials, targets
|
||||
- Larder contains data, provisions, stored content
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Optional, List
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class Status(Enum):
|
||||
PENDING = "pending"
|
||||
PLANNED = "planned"
|
||||
BUILDING = "building"
|
||||
DEV = "dev"
|
||||
LIVE = "live"
|
||||
READY = "ready"
|
||||
|
||||
|
||||
class System(Enum):
|
||||
ARTERY = "artery"
|
||||
ALBUM = "album"
|
||||
WARD = "ward"
|
||||
|
||||
|
||||
# === Shared Components ===
|
||||
|
||||
@dataclass
|
||||
class Nest:
|
||||
"""Runtime environment configuration.
|
||||
|
||||
Contains: credentials, targets, runtime configs.
|
||||
Shared across: artery, ward
|
||||
"""
|
||||
name: str
|
||||
status: Status = Status.PENDING
|
||||
# References to actual config files/secrets
|
||||
config_path: Optional[str] = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class Larder:
|
||||
"""Data storage / provisions.
|
||||
|
||||
Contains: data, transforms, parsers, dumps.
|
||||
Shared across: artery, album, ward
|
||||
|
||||
Note: When generated from Template in album, appears as "Book (written)"
|
||||
but exists as independent Larder in ward/artery.
|
||||
"""
|
||||
name: str
|
||||
status: Status = Status.PENDING
|
||||
# Optional source template (if generated)
|
||||
source_template: Optional[str] = None
|
||||
# Path to data
|
||||
data_path: Optional[str] = None
|
||||
|
||||
|
||||
# === System-Specific Components ===
|
||||
|
||||
@dataclass
|
||||
class Vein:
|
||||
"""Connector (artery-specific).
|
||||
|
||||
Single responsibility data connector.
|
||||
Examples: jira, google, slack, whatsapp, cash, vnc
|
||||
"""
|
||||
name: str
|
||||
status: Status = Status.PENDING
|
||||
system: System = field(default=System.ARTERY, init=False)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Template:
|
||||
"""Documentation template (album-specific).
|
||||
|
||||
Gherkin, BDD patterns, generators.
|
||||
Examples: feature-form, gherkin
|
||||
"""
|
||||
name: str
|
||||
status: Status = Status.PENDING
|
||||
system: System = field(default=System.ALBUM, init=False)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Tool:
|
||||
"""Execution tool (ward-specific).
|
||||
|
||||
Test runners, seeders, scripts.
|
||||
"""
|
||||
name: str
|
||||
status: Status = Status.PENDING
|
||||
system: System = field(default=System.WARD, init=False)
|
||||
|
||||
|
||||
# === Composed Types ===
|
||||
|
||||
@dataclass
|
||||
class Pulse:
|
||||
"""Composed data flow (artery).
|
||||
|
||||
Pulse = Vein + Nest + Larder
|
||||
"""
|
||||
name: str
|
||||
status: Status = Status.PENDING
|
||||
vein: Optional[Vein] = None
|
||||
nest: Optional[Nest] = None
|
||||
larder: Optional[Larder] = None
|
||||
system: System = field(default=System.ARTERY, init=False)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Book:
|
||||
"""Composed documentation (album).
|
||||
|
||||
Book = Template + Larder
|
||||
|
||||
Note: Output larder can be referenced independently in other systems.
|
||||
"""
|
||||
name: str
|
||||
status: Status = Status.PENDING
|
||||
template: Optional[Template] = None
|
||||
larder: Optional[Larder] = None
|
||||
# If this book produces a larder, it's tracked here
|
||||
output_larder: Optional[Larder] = None
|
||||
system: System = field(default=System.ALBUM, init=False)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Table:
|
||||
"""Composed execution bundle (ward).
|
||||
|
||||
Table = Tools + Nest + Larder
|
||||
"""
|
||||
name: str
|
||||
status: Status = Status.PENDING
|
||||
tools: List[Tool] = field(default_factory=list)
|
||||
nest: Optional[Nest] = None
|
||||
larder: Optional[Larder] = None
|
||||
system: System = field(default=System.WARD, init=False)
|
||||
Reference in New Issue
Block a user