runnable 0.28.1__tar.gz → 0.28.3__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {runnable-0.28.1 → runnable-0.28.3}/PKG-INFO +1 -1
- {runnable-0.28.1 → runnable-0.28.3}/extensions/job_executor/k8s.py +25 -9
- {runnable-0.28.1 → runnable-0.28.3}/pyproject.toml +1 -1
- {runnable-0.28.1 → runnable-0.28.3}/.gitignore +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/LICENSE +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/README.md +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/README.md +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/__init__.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/catalog/README.md +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/catalog/any_path.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/catalog/file_system.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/catalog/minio.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/catalog/pyproject.toml +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/catalog/s3.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/job_executor/README.md +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/job_executor/__init__.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/job_executor/k8s_job_spec.yaml +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/job_executor/local.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/job_executor/local_container.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/job_executor/pyproject.toml +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/nodes/README.md +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/nodes/nodes.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/nodes/pyproject.toml +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/pipeline_executor/README.md +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/pipeline_executor/__init__.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/pipeline_executor/argo.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/pipeline_executor/local.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/pipeline_executor/local_container.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/pipeline_executor/mocked.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/pipeline_executor/pyproject.toml +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/pipeline_executor/retry.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/README.md +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/__init__.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/any_path.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/chunked_fs.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/chunked_minio.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/db/implementation_FF.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/db/integration_FF.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/file_system.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/generic_chunked.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/minio.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/run_log_store/pyproject.toml +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/secrets/README.md +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/secrets/dotenv.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/extensions/secrets/pyproject.toml +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/__init__.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/catalog.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/cli.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/context.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/datastore.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/defaults.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/entrypoints.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/exceptions.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/executor.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/graph.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/names.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/nodes.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/parameters.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/pickler.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/sdk.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/secrets.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/tasks.py +0 -0
- {runnable-0.28.1 → runnable-0.28.3}/runnable/utils.py +0 -0
@@ -34,6 +34,19 @@ class ImagePullPolicy(str, Enum):
|
|
34
34
|
NEVER = "Never"
|
35
35
|
|
36
36
|
|
37
|
+
class TolerationOperator(str, Enum):
|
38
|
+
EXISTS = "Exists"
|
39
|
+
EQUAL = "Equal"
|
40
|
+
|
41
|
+
|
42
|
+
class Toleration(BaseModel):
|
43
|
+
key: str
|
44
|
+
operator: TolerationOperator = TolerationOperator.EQUAL
|
45
|
+
value: Optional[str]
|
46
|
+
effect: str
|
47
|
+
toleration_seconds: Optional[int] = Field(default=None)
|
48
|
+
|
49
|
+
|
37
50
|
class LabelSelectorRequirement(BaseModel):
|
38
51
|
key: str
|
39
52
|
operator: Operator
|
@@ -56,6 +69,12 @@ class EnvVar(BaseModel):
|
|
56
69
|
value: str
|
57
70
|
|
58
71
|
|
72
|
+
VendorGPU = Annotated[
|
73
|
+
Optional[int],
|
74
|
+
PlainSerializer(lambda x: str(x), return_type=str, when_used="unless-none"),
|
75
|
+
]
|
76
|
+
|
77
|
+
|
59
78
|
class Request(BaseModel):
|
60
79
|
"""
|
61
80
|
The default requests
|
@@ -63,19 +82,16 @@ class Request(BaseModel):
|
|
63
82
|
|
64
83
|
memory: str = "1Gi"
|
65
84
|
cpu: str = "250m"
|
85
|
+
gpu: VendorGPU = Field(default=None, serialization_alias="nvidia.com/gpu")
|
66
86
|
|
67
87
|
|
68
|
-
|
69
|
-
Optional[int],
|
70
|
-
PlainSerializer(lambda x: str(x), return_type=str, when_used="unless-none"),
|
71
|
-
]
|
72
|
-
|
73
|
-
|
74
|
-
class Limit(Request):
|
88
|
+
class Limit(BaseModel):
|
75
89
|
"""
|
76
90
|
The default limits
|
77
91
|
"""
|
78
92
|
|
93
|
+
memory: str = "1Gi"
|
94
|
+
cpu: str = "250m"
|
79
95
|
gpu: VendorGPU = Field(default=None, serialization_alias="nvidia.com/gpu")
|
80
96
|
|
81
97
|
|
@@ -124,7 +140,7 @@ class PVCVolume(BaseModel):
|
|
124
140
|
class K8sTemplateSpec(BaseModel):
|
125
141
|
active_deadline_seconds: int = Field(default=60 * 60 * 2) # 2 hours
|
126
142
|
node_selector: Optional[dict[str, str]] = None
|
127
|
-
tolerations: Optional[list[
|
143
|
+
tolerations: Optional[list[Toleration]] = None
|
128
144
|
volumes: Optional[list[HostPathVolume | PVCVolume]] = Field(
|
129
145
|
default_factory=lambda: []
|
130
146
|
)
|
@@ -260,7 +276,7 @@ class GenericK8sJobExecutor(GenericJobExecutor):
|
|
260
276
|
tolerations = None
|
261
277
|
if self.job_spec.template.spec.tolerations:
|
262
278
|
tolerations = [
|
263
|
-
self._client.V1Toleration(**toleration)
|
279
|
+
self._client.V1Toleration(**toleration.model_dump(by_alias=True))
|
264
280
|
for toleration in self.job_spec.template.spec.tolerations
|
265
281
|
]
|
266
282
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|