Source code for validate_actions.domain_model.job_order_models
"""
Job ordering domain models for GitHub Actions workflows.
This module contains dataclasses that represent job execution plans, conditions,
stages, and dependencies for workflow analysis.
"""
from dataclasses import dataclass, field
from typing import Dict, List
from validate_actions.domain_model.ast import Job
[docs]
@dataclass
class JobCondition:
"""Represents conditional execution information for a job."""
expression: str
depends_on_success: List[str] = field(default_factory=list)
depends_on_failure: List[str] = field(default_factory=list)
always_run: bool = False
[docs]
@dataclass
class JobStage:
"""Represents a stage of parallel job execution."""
parallel_jobs: List[Job] = field(default_factory=list)
[docs]
@dataclass
class JobExecutionPlan:
"""Represents the complete execution plan for a workflow."""
stages: List[JobStage] = field(default_factory=list)
conditional_jobs: Dict[str, JobCondition] = field(default_factory=dict)
dependency_graph: Dict[str, List[str]] = field(default_factory=dict)
[docs]
@dataclass
class CyclicDependency:
"""Represents a circular dependency error."""
job_ids: List[str] = field(default_factory=list)