pypeline-runner 1.12.0__py3-none-any.whl → 1.14.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pypeline/__init__.py +1 -1
- pypeline/domain/execution_context.py +9 -1
- pypeline/main.py +5 -0
- pypeline/steps/env_setup_script.py +4 -0
- pypeline/steps/scoop_install.py +10 -4
- {pypeline_runner-1.12.0.dist-info → pypeline_runner-1.14.0.dist-info}/METADATA +1 -1
- {pypeline_runner-1.12.0.dist-info → pypeline_runner-1.14.0.dist-info}/RECORD +10 -10
- {pypeline_runner-1.12.0.dist-info → pypeline_runner-1.14.0.dist-info}/LICENSE +0 -0
- {pypeline_runner-1.12.0.dist-info → pypeline_runner-1.14.0.dist-info}/WHEEL +0 -0
- {pypeline_runner-1.12.0.dist-info → pypeline_runner-1.14.0.dist-info}/entry_points.txt +0 -0
pypeline/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.
|
|
1
|
+
__version__ = "1.14.0"
|
|
@@ -18,13 +18,21 @@ class ExecutionContext:
|
|
|
18
18
|
data_registry: DataRegistry = field(default_factory=DataRegistry)
|
|
19
19
|
# Inputs provided for the pipeline run
|
|
20
20
|
inputs: Dict[str, Any] = field(default_factory=dict)
|
|
21
|
+
# Environment variables to be passed to the subprocesses
|
|
22
|
+
env_vars: Dict[str, Any] = field(default_factory=dict)
|
|
23
|
+
|
|
24
|
+
def get_input(self, name: str) -> Optional[Any]:
|
|
25
|
+
return self.inputs.get(name, None)
|
|
21
26
|
|
|
22
27
|
def add_install_dirs(self, install_dirs: List[Path]) -> None:
|
|
23
28
|
self.install_dirs.extend(install_dirs)
|
|
24
29
|
|
|
30
|
+
def add_env_vars(self, env_vars: Dict[str, Any]) -> None:
|
|
31
|
+
self.env_vars.update(env_vars)
|
|
32
|
+
|
|
25
33
|
def create_process_executor(self, command: List[str | Path], cwd: Optional[Path] = None) -> SubprocessExecutor:
|
|
26
|
-
# Add the install directories to the PATH
|
|
27
34
|
env = os.environ.copy()
|
|
35
|
+
env.update(self.env_vars)
|
|
28
36
|
env["PATH"] = os.pathsep.join([path.absolute().as_posix() for path in self.install_dirs] + [env["PATH"]])
|
|
29
37
|
# When started from a windows shell (e.g. cmd on Jenkins) the shell parameter must be set to True
|
|
30
38
|
shell = True if os.name == "nt" else False
|
pypeline/main.py
CHANGED
|
@@ -16,6 +16,11 @@ from pypeline.pypeline import PipelineScheduler, PipelineStepsExecutor
|
|
|
16
16
|
|
|
17
17
|
package_name = "pypeline"
|
|
18
18
|
|
|
19
|
+
|
|
20
|
+
def package_version_file() -> Path:
|
|
21
|
+
return Path(__file__).parent / "__init__.py"
|
|
22
|
+
|
|
23
|
+
|
|
19
24
|
app = typer.Typer(
|
|
20
25
|
name=package_name, help="Configure and execute pipelines with Python (similar to GitHub workflows or Jenkins pipelines).", no_args_is_help=True, add_completion=False
|
|
21
26
|
)
|
|
@@ -31,6 +31,10 @@ class GenerateEnvSetupScript(PipelineStep[ExecutionContext]):
|
|
|
31
31
|
else:
|
|
32
32
|
logger.warning(f".env file not found: {dot_env_file}")
|
|
33
33
|
env_vars = {}
|
|
34
|
+
|
|
35
|
+
# Merge execution context environment variables
|
|
36
|
+
env_vars.update(self.execution_context.env_vars)
|
|
37
|
+
|
|
34
38
|
# Generate the environment setup scripts
|
|
35
39
|
BatEnvSetupScriptGenerator(
|
|
36
40
|
install_dirs=self.execution_context.install_dirs,
|
pypeline/steps/scoop_install.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import io
|
|
2
2
|
import json
|
|
3
3
|
import traceback
|
|
4
|
-
from dataclasses import dataclass
|
|
4
|
+
from dataclasses import dataclass, field
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
from typing import Any, ClassVar, Dict, List, Optional
|
|
7
7
|
|
|
@@ -13,11 +13,13 @@ from py_app_dev.core.scoop_wrapper import ScoopWrapper
|
|
|
13
13
|
|
|
14
14
|
from ..domain.execution_context import ExecutionContext
|
|
15
15
|
from ..domain.pipeline import PipelineStep
|
|
16
|
+
from ..main import package_version_file
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
@dataclass
|
|
19
20
|
class ScoopInstallExecutionInfo(DataClassJSONMixin):
|
|
20
21
|
install_dirs: List[Path]
|
|
22
|
+
env_vars: Dict[str, Any] = field(default_factory=dict)
|
|
21
23
|
|
|
22
24
|
class Config(BaseConfig):
|
|
23
25
|
"""Base configuration for JSON serialization with omitted None values."""
|
|
@@ -72,18 +74,22 @@ class ScoopInstall(PipelineStep[ExecutionContext]):
|
|
|
72
74
|
for app in installed_apps:
|
|
73
75
|
self.logger.debug(f" - {app.name} ({app.version})")
|
|
74
76
|
self.install_dirs.extend(app.get_all_required_paths())
|
|
77
|
+
# Collect environment variables from each app
|
|
78
|
+
self.execution_info.env_vars.update(app.env_vars)
|
|
75
79
|
self.execution_info.to_json_file(self.execution_info_file)
|
|
76
80
|
return 0
|
|
77
81
|
|
|
78
82
|
def get_inputs(self) -> List[Path]:
|
|
79
|
-
return [self.scoop_file]
|
|
83
|
+
return [self.scoop_file, package_version_file()]
|
|
80
84
|
|
|
81
85
|
def get_outputs(self) -> List[Path]:
|
|
82
86
|
return [self.execution_info_file, *self.install_dirs]
|
|
83
87
|
|
|
84
88
|
def update_execution_context(self) -> None:
|
|
85
|
-
|
|
89
|
+
execution_info = ScoopInstallExecutionInfo.from_json_file(self.execution_info_file)
|
|
86
90
|
# Make the list unique and keep the order
|
|
87
|
-
unique_paths = list(dict.fromkeys(install_dirs))
|
|
91
|
+
unique_paths = list(dict.fromkeys(execution_info.install_dirs))
|
|
88
92
|
# Update the install directories for the subsequent steps
|
|
89
93
|
self.execution_context.add_install_dirs(unique_paths)
|
|
94
|
+
if execution_info.env_vars:
|
|
95
|
+
self.execution_context.add_env_vars(execution_info.env_vars)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
pypeline/__init__.py,sha256=
|
|
1
|
+
pypeline/__init__.py,sha256=oitamisYLp3lrFI3uGv-5ZCJIeYOT9gZLcszUmVNhw8,23
|
|
2
2
|
pypeline/__run.py,sha256=TCdaX05Qm3g8T4QYryKB25Xxf0L5Km7hFOHe1mK9vI0,350
|
|
3
3
|
pypeline/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
pypeline/domain/artifacts.py,sha256=5k7cVfHhLmvWXNuHKxXb9ca4Lxu0JytGQqazENCeKEU,1404
|
|
5
5
|
pypeline/domain/config.py,sha256=6vWdHi7B6MA7NGi9wWXQE-YhSg1COSRmc3b1ji6AdAk,2053
|
|
6
|
-
pypeline/domain/execution_context.py,sha256
|
|
6
|
+
pypeline/domain/execution_context.py,sha256=cDdUOU32hKg2Mv6FNXCG1co8GUrBf5QOVKhaKO-xVxI,1848
|
|
7
7
|
pypeline/domain/pipeline.py,sha256=2BsN2lw2znUxLH--Novyqe6SubVKs6XeHQSQf9yxirw,7788
|
|
8
8
|
pypeline/domain/project_slurper.py,sha256=64aqgVsrLgAK-c5QOM2N0wGCkOM1uNMio8yKjO2zDLU,1069
|
|
9
9
|
pypeline/inputs_parser.py,sha256=8WJnWbACNmw_iYLhbAwcgGohCZWult8HtiJC9KiG3R0,3389
|
|
@@ -19,16 +19,16 @@ pypeline/kickstart/templates/project/pyproject.toml,sha256=A60HZ6Aqf8KTFLoC35Sex
|
|
|
19
19
|
pypeline/kickstart/templates/project/scoopfile.json,sha256=DcfZ8jYf9hmPHM-AWwnPKQJCzRG3fCuYtMeoY01nkag,219
|
|
20
20
|
pypeline/kickstart/templates/project/steps/my_step.py,sha256=iZYTzWtL-qxEW_t7q079d-xpnRST_tumSzxqiQDW7sM,707
|
|
21
21
|
pypeline/kickstart/templates/project/west.yaml,sha256=ZfVym7M4yzzC-Nm0vESdhqNYs6EaJuMQWGJBht_i0b4,188
|
|
22
|
-
pypeline/main.py,sha256=
|
|
22
|
+
pypeline/main.py,sha256=2mC2BDB1OWIXhaijBXG6Y1vfT8_yMZ4Dj55w5u7g7-w,4158
|
|
23
23
|
pypeline/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
24
|
pypeline/pypeline.py,sha256=-mquLfFlEvESk-HORhvjRMESIzdlVAgBLPjwUDOPLqg,7452
|
|
25
25
|
pypeline/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
26
|
pypeline/steps/create_venv.py,sha256=sajEl43Yqcd1f0BN9lZOhm93UIRXj4Qx4TdAOSxLkTU,2509
|
|
27
|
-
pypeline/steps/env_setup_script.py,sha256=
|
|
28
|
-
pypeline/steps/scoop_install.py,sha256=
|
|
27
|
+
pypeline/steps/env_setup_script.py,sha256=u08A6pvMccFQbcnU0xruFvpU30PbDrttnbOjl1gDqog,2340
|
|
28
|
+
pypeline/steps/scoop_install.py,sha256=DDXBD-5TVaT-u6Yf7A85uWoCgBVmLvj9nPGrZ8OQCz0,3853
|
|
29
29
|
pypeline/steps/west_install.py,sha256=hPyr28ksdKsQ0tv0gMNytzupgk1IgjN9CpmaBdX5zps,1947
|
|
30
|
-
pypeline_runner-1.
|
|
31
|
-
pypeline_runner-1.
|
|
32
|
-
pypeline_runner-1.
|
|
33
|
-
pypeline_runner-1.
|
|
34
|
-
pypeline_runner-1.
|
|
30
|
+
pypeline_runner-1.14.0.dist-info/LICENSE,sha256=sKxdoqSmW9ezvPvt0ZGJbneyA0SBcm0GiqzTv2jN230,1066
|
|
31
|
+
pypeline_runner-1.14.0.dist-info/METADATA,sha256=FgmQ8o6AHWwEtCxGeIYXc5TXxT6KJklRZoIELvMcMTc,7553
|
|
32
|
+
pypeline_runner-1.14.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
|
33
|
+
pypeline_runner-1.14.0.dist-info/entry_points.txt,sha256=pe1u0uuhPI_yeQ0KjEw6jK-EvQfPcZwBSajgbAdKz1o,47
|
|
34
|
+
pypeline_runner-1.14.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|