Coverage for src/models/jobs.py: 100.00%
54 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-10-18 15:02 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-10-18 15:02 +0000
1#!/usr/bin/env python3
3# Standard libraries
4from typing import Dict, Optional
6# Components
7from .images import Entrypoint, Image
8from .options import Options
9from .scripts import Scripts
10from .services import Services
11from .settings import AllowFailure, Retry, Trigger, When
12from .stages import Stage
13from .tags import Tags
14from .variables import Variables
16# JobName type
17JobName = str
19# JobData class, pylint: disable=too-few-public-methods,too-many-instance-attributes
20class JobData:
22 # Members
23 name: JobName
24 stage: Optional[Stage]
25 image: Optional[Image]
26 entrypoint: Entrypoint
27 variables: Variables
28 before_script: Optional[Scripts]
29 script: Optional[Scripts]
30 after_script: Optional[Scripts]
31 retry: Optional[Retry]
32 when: Optional[When]
33 allow_failure: Optional[AllowFailure]
34 services: Optional[Services]
35 tags: Optional[Tags]
36 trigger: Optional[Trigger]
37 options: Options
39 # Constructor
40 def __init__(self, name: JobName) -> None:
41 self.name = name
42 self.stage = None
43 self.image = None
44 self.entrypoint = None
45 self.variables = {}
46 self.before_script = None
47 self.script = None
48 self.after_script = None
49 self.retry = None
50 self.when = None
51 self.allow_failure = None
52 self.services = None
53 self.tags = None
54 self.trigger = None
55 self.options = Options()
57# Job class, pylint: disable=too-few-public-methods,too-many-instance-attributes
58class Job:
60 # Members
61 name: JobName
62 stage: Stage
63 image: Image
64 entrypoint: Entrypoint
65 variables: Variables
66 before_script: Scripts
67 script: Scripts
68 after_script: Scripts
69 retry: Retry
70 when: When
71 allow_failure: AllowFailure
72 services: Services
73 tags: Optional[Tags]
74 trigger: Optional[Trigger]
75 options: Options
77 # Constructor
78 def __init__(self, data: JobData) -> None:
79 self.name = data.name
80 assert data.stage is not None
81 self.stage = data.stage
82 assert data.image is not None
83 self.image = data.image
84 self.entrypoint = data.entrypoint
85 self.variables = data.variables
86 assert data.before_script is not None
87 self.before_script = data.before_script
88 assert data.script is not None
89 self.script = data.script
90 assert data.after_script is not None
91 self.after_script = data.after_script
92 assert data.retry is not None
93 self.retry = data.retry
94 assert data.when is not None
95 self.when = data.when
96 assert data.allow_failure is not None
97 self.allow_failure = data.allow_failure
98 assert data.services is not None
99 self.services = data.services
100 self.tags = data.tags
101 self.trigger = data.trigger
102 self.options = data.options
104# Jobs type
105Jobs = Dict[str, Job]