prefect-client 2.14.9__py3-none-any.whl → 2.14.11__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.
- prefect/__init__.py +4 -1
- prefect/_internal/pydantic/v2_schema.py +9 -2
- prefect/client/orchestration.py +51 -4
- prefect/client/schemas/objects.py +16 -1
- prefect/deployments/runner.py +34 -3
- prefect/engine.py +302 -25
- prefect/events/clients.py +216 -5
- prefect/events/filters.py +214 -0
- prefect/exceptions.py +4 -0
- prefect/flows.py +16 -0
- prefect/infrastructure/base.py +106 -1
- prefect/infrastructure/container.py +52 -0
- prefect/infrastructure/kubernetes.py +64 -0
- prefect/infrastructure/process.py +38 -0
- prefect/infrastructure/provisioners/__init__.py +2 -0
- prefect/infrastructure/provisioners/cloud_run.py +206 -34
- prefect/infrastructure/provisioners/container_instance.py +1080 -0
- prefect/infrastructure/provisioners/ecs.py +483 -48
- prefect/input/__init__.py +11 -0
- prefect/input/actions.py +88 -0
- prefect/input/run_input.py +107 -0
- prefect/runner/runner.py +5 -0
- prefect/runner/server.py +92 -8
- prefect/runner/utils.py +92 -0
- prefect/settings.py +34 -9
- prefect/states.py +26 -3
- prefect/utilities/dockerutils.py +31 -0
- prefect/utilities/processutils.py +5 -2
- prefect/utilities/services.py +10 -0
- prefect/utilities/validation.py +63 -0
- prefect/workers/__init__.py +1 -0
- prefect/workers/block.py +226 -0
- prefect/workers/utilities.py +2 -2
- {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/METADATA +2 -1
- {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/RECORD +38 -30
- {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/LICENSE +0 -0
- {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/WHEEL +0 -0
- {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
import jsonschema
|
2
|
+
|
3
|
+
from prefect.utilities.collections import remove_nested_keys
|
4
|
+
|
5
|
+
|
6
|
+
def validate_schema(schema: dict):
|
7
|
+
"""
|
8
|
+
Validate that the provided schema is a valid json schema.
|
9
|
+
|
10
|
+
Args:
|
11
|
+
schema: The schema to validate.
|
12
|
+
|
13
|
+
Raises:
|
14
|
+
ValueError: If the provided schema is not a valid json schema.
|
15
|
+
|
16
|
+
"""
|
17
|
+
try:
|
18
|
+
if schema is not None:
|
19
|
+
# Most closely matches the schemas generated by pydantic
|
20
|
+
jsonschema.Draft4Validator.check_schema(schema)
|
21
|
+
except jsonschema.SchemaError as exc:
|
22
|
+
raise ValueError(
|
23
|
+
"The provided schema is not a valid json schema. Schema error:"
|
24
|
+
f" {exc.message}"
|
25
|
+
) from exc
|
26
|
+
|
27
|
+
|
28
|
+
def validate_values_conform_to_schema(
|
29
|
+
values: dict, schema: dict, ignore_required: bool = False
|
30
|
+
):
|
31
|
+
"""
|
32
|
+
Validate that the provided values conform to the provided json schema.
|
33
|
+
|
34
|
+
Args:
|
35
|
+
values: The values to validate.
|
36
|
+
schema: The schema to validate against.
|
37
|
+
ignore_required: Whether to ignore the required fields in the schema. Should be
|
38
|
+
used when a partial set of values is acceptable.
|
39
|
+
|
40
|
+
Raises:
|
41
|
+
ValueError: If the parameters do not conform to the schema.
|
42
|
+
|
43
|
+
"""
|
44
|
+
if ignore_required:
|
45
|
+
schema = remove_nested_keys(["required"], schema)
|
46
|
+
|
47
|
+
try:
|
48
|
+
if schema is not None and values is not None:
|
49
|
+
jsonschema.validate(values, schema)
|
50
|
+
except jsonschema.ValidationError as exc:
|
51
|
+
if exc.json_path == "$":
|
52
|
+
error_message = "Validation failed."
|
53
|
+
else:
|
54
|
+
error_message = (
|
55
|
+
f"Validation failed for field {exc.json_path.replace('$.', '')!r}."
|
56
|
+
)
|
57
|
+
error_message += f" Failure reason: {exc.message}"
|
58
|
+
raise ValueError(error_message) from exc
|
59
|
+
except jsonschema.SchemaError as exc:
|
60
|
+
raise ValueError(
|
61
|
+
"The provided schema is not a valid json schema. Schema error:"
|
62
|
+
f" {exc.message}"
|
63
|
+
) from exc
|
prefect/workers/__init__.py
CHANGED
prefect/workers/block.py
ADDED
@@ -0,0 +1,226 @@
|
|
1
|
+
import shlex
|
2
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
3
|
+
|
4
|
+
import anyio
|
5
|
+
import anyio.abc
|
6
|
+
|
7
|
+
from prefect._internal.pydantic import HAS_PYDANTIC_V2
|
8
|
+
from prefect.blocks.core import Block
|
9
|
+
from prefect.client.schemas.objects import BlockDocument
|
10
|
+
from prefect.infrastructure.base import Infrastructure
|
11
|
+
from prefect.utilities.collections import get_from_dict
|
12
|
+
from prefect.workers.base import BaseWorker, BaseWorkerResult
|
13
|
+
|
14
|
+
if HAS_PYDANTIC_V2:
|
15
|
+
from pydantic.v1 import BaseModel, Field, PrivateAttr, validator
|
16
|
+
else:
|
17
|
+
from pydantic import BaseModel, Field, PrivateAttr, validator
|
18
|
+
|
19
|
+
from prefect.client.orchestration import PrefectClient
|
20
|
+
from prefect.client.utilities import inject_client
|
21
|
+
from prefect.events.related import object_as_related_resource, tags_as_related_resources
|
22
|
+
from prefect.events.schemas import RelatedResource
|
23
|
+
from prefect.utilities.templating import (
|
24
|
+
apply_values,
|
25
|
+
)
|
26
|
+
|
27
|
+
if TYPE_CHECKING:
|
28
|
+
from prefect.client.schemas.objects import Flow, FlowRun
|
29
|
+
from prefect.client.schemas.responses import (
|
30
|
+
DeploymentResponse,
|
31
|
+
)
|
32
|
+
|
33
|
+
|
34
|
+
class BlockWorkerJobConfiguration(BaseModel):
|
35
|
+
block: Block = Field(
|
36
|
+
default=..., description="The infrastructure block to use for job creation."
|
37
|
+
)
|
38
|
+
|
39
|
+
@validator("block")
|
40
|
+
def _validate_block_is_infrastructure(cls, v):
|
41
|
+
print("v: ", v)
|
42
|
+
if not isinstance(v, Infrastructure):
|
43
|
+
raise TypeError("Provided block is not a valid infrastructure block.")
|
44
|
+
|
45
|
+
return v
|
46
|
+
|
47
|
+
_related_objects: Dict[str, Any] = PrivateAttr(default_factory=dict)
|
48
|
+
|
49
|
+
@property
|
50
|
+
def is_using_a_runner(self):
|
51
|
+
return (
|
52
|
+
self.block.command is not None
|
53
|
+
and "prefect flow-run execute" in shlex.join(self.block.command)
|
54
|
+
)
|
55
|
+
|
56
|
+
@staticmethod
|
57
|
+
def _get_base_config_defaults(variables: dict) -> dict:
|
58
|
+
"""Get default values from base config for all variables that have them."""
|
59
|
+
defaults = dict()
|
60
|
+
for variable_name, attrs in variables.items():
|
61
|
+
if "default" in attrs:
|
62
|
+
defaults[variable_name] = attrs["default"]
|
63
|
+
|
64
|
+
return defaults
|
65
|
+
|
66
|
+
@classmethod
|
67
|
+
@inject_client
|
68
|
+
async def from_template_and_values(
|
69
|
+
cls, base_job_template: dict, values: dict, client: "PrefectClient" = None
|
70
|
+
):
|
71
|
+
"""Creates a valid worker configuration object from the provided base
|
72
|
+
configuration and overrides.
|
73
|
+
|
74
|
+
Important: this method expects that the base_job_template was already
|
75
|
+
validated server-side.
|
76
|
+
"""
|
77
|
+
job_config: Dict[str, Any] = base_job_template["job_configuration"]
|
78
|
+
variables_schema = base_job_template["variables"]
|
79
|
+
variables = cls._get_base_config_defaults(
|
80
|
+
variables_schema.get("properties", {})
|
81
|
+
)
|
82
|
+
variables.update(values)
|
83
|
+
|
84
|
+
populated_configuration = apply_values(template=job_config, values=variables)
|
85
|
+
|
86
|
+
block_document_id = get_from_dict(
|
87
|
+
populated_configuration, "block.$ref.block_document_id"
|
88
|
+
)
|
89
|
+
if not block_document_id:
|
90
|
+
raise ValueError(
|
91
|
+
"Base job template is invalid for this worker type because it does not"
|
92
|
+
" contain a block_document_id after variable resolution."
|
93
|
+
)
|
94
|
+
|
95
|
+
block_document = await client.read_block_document(
|
96
|
+
block_document_id=block_document_id
|
97
|
+
)
|
98
|
+
infrastructure_block = Block._from_block_document(block_document)
|
99
|
+
|
100
|
+
populated_configuration["block"] = infrastructure_block
|
101
|
+
|
102
|
+
return cls(**populated_configuration)
|
103
|
+
|
104
|
+
@classmethod
|
105
|
+
def json_template(cls) -> dict:
|
106
|
+
"""Returns a dict with job configuration as keys and the corresponding templates as values
|
107
|
+
|
108
|
+
Defaults to using the job configuration parameter name as the template variable name.
|
109
|
+
|
110
|
+
e.g.
|
111
|
+
{
|
112
|
+
key1: '{{ key1 }}', # default variable template
|
113
|
+
key2: '{{ template2 }}', # `template2` specifically provide as template
|
114
|
+
}
|
115
|
+
"""
|
116
|
+
configuration = {}
|
117
|
+
properties = cls.schema()["properties"]
|
118
|
+
for k, v in properties.items():
|
119
|
+
if v.get("template"):
|
120
|
+
template = v["template"]
|
121
|
+
else:
|
122
|
+
template = "{{ " + k + " }}"
|
123
|
+
configuration[k] = template
|
124
|
+
|
125
|
+
return configuration
|
126
|
+
|
127
|
+
def _related_resources(self) -> List[RelatedResource]:
|
128
|
+
tags = set()
|
129
|
+
related = []
|
130
|
+
|
131
|
+
for kind, obj in self._related_objects.items():
|
132
|
+
if obj is None:
|
133
|
+
continue
|
134
|
+
if hasattr(obj, "tags"):
|
135
|
+
tags.update(obj.tags)
|
136
|
+
related.append(object_as_related_resource(kind=kind, role=kind, object=obj))
|
137
|
+
|
138
|
+
return related + tags_as_related_resources(tags)
|
139
|
+
|
140
|
+
def prepare_for_flow_run(
|
141
|
+
self,
|
142
|
+
flow_run: "FlowRun",
|
143
|
+
deployment: Optional["DeploymentResponse"] = None,
|
144
|
+
flow: Optional["Flow"] = None,
|
145
|
+
):
|
146
|
+
self.block = self.block.prepare_for_flow_run(
|
147
|
+
flow_run=flow_run, deployment=deployment, flow=flow
|
148
|
+
)
|
149
|
+
|
150
|
+
|
151
|
+
class BlockWorkerResult(BaseWorkerResult):
|
152
|
+
"""Result of a block worker job"""
|
153
|
+
|
154
|
+
|
155
|
+
class BlockWorker(BaseWorker):
|
156
|
+
type = "block"
|
157
|
+
job_configuration = BlockWorkerJobConfiguration
|
158
|
+
|
159
|
+
_description = "Execute flow runs using an infrastructure block as the job creator."
|
160
|
+
_display_name = "Block"
|
161
|
+
|
162
|
+
async def run(
|
163
|
+
self,
|
164
|
+
flow_run: "FlowRun",
|
165
|
+
configuration: BlockWorkerJobConfiguration,
|
166
|
+
task_status: Optional[anyio.abc.TaskStatus] = None,
|
167
|
+
):
|
168
|
+
block = configuration.block
|
169
|
+
|
170
|
+
# logic for applying infra overrides taken from src/prefect/agent.py
|
171
|
+
deployment = await self._client.read_deployment(flow_run.deployment_id)
|
172
|
+
flow = await self._client.read_flow(deployment.flow_id)
|
173
|
+
infra_document = await self._client.read_block_document(
|
174
|
+
configuration.block._block_document_id
|
175
|
+
)
|
176
|
+
|
177
|
+
# this piece of logic applies any overrides that may have been set on the
|
178
|
+
# deployment; overrides are defined as dot.delimited paths on possibly nested
|
179
|
+
# attributes of the infrastructure block
|
180
|
+
doc_dict = infra_document.dict()
|
181
|
+
infra_dict = doc_dict.get("data", {})
|
182
|
+
for override, value in (deployment.infra_overrides or {}).items():
|
183
|
+
nested_fields = override.split(".")
|
184
|
+
if nested_fields == ["command"]:
|
185
|
+
value = shlex.split(value)
|
186
|
+
data = infra_dict
|
187
|
+
for field in nested_fields[:-1]:
|
188
|
+
data = data[field]
|
189
|
+
|
190
|
+
# once we reach the end, set the value
|
191
|
+
data[nested_fields[-1]] = value
|
192
|
+
|
193
|
+
# reconstruct the infra block
|
194
|
+
doc_dict["data"] = infra_dict
|
195
|
+
infra_document = BlockDocument(**doc_dict)
|
196
|
+
block = Block._from_block_document(infra_document)
|
197
|
+
|
198
|
+
block = block.prepare_for_flow_run(
|
199
|
+
flow_run=flow_run, deployment=deployment, flow=flow
|
200
|
+
)
|
201
|
+
|
202
|
+
result = await block.run(
|
203
|
+
task_status=task_status,
|
204
|
+
)
|
205
|
+
return BlockWorkerResult(
|
206
|
+
identifier=result.identifier, status_code=result.status_code
|
207
|
+
)
|
208
|
+
|
209
|
+
async def kill_infrastructure(
|
210
|
+
self,
|
211
|
+
infrastructure_pid: str,
|
212
|
+
configuration: BlockWorkerJobConfiguration,
|
213
|
+
grace_seconds: int = 30,
|
214
|
+
):
|
215
|
+
block = configuration.block
|
216
|
+
if not hasattr(block, "kill"):
|
217
|
+
self._logger.error(
|
218
|
+
f"Flow run infrastructure block {block.type!r} "
|
219
|
+
"does not support killing created infrastructure. "
|
220
|
+
"Cancellation cannot be guaranteed."
|
221
|
+
)
|
222
|
+
return
|
223
|
+
|
224
|
+
await block.kill(
|
225
|
+
infrastructure_pid=infrastructure_pid, grace_seconds=grace_seconds
|
226
|
+
)
|
prefect/workers/utilities.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
from copy import deepcopy
|
1
2
|
from logging import getLogger
|
2
3
|
from typing import Any, Dict, List, Optional
|
3
4
|
|
@@ -35,14 +36,13 @@ async def get_default_base_job_template_for_infrastructure_type(
|
|
35
36
|
# from the local type registry first.
|
36
37
|
worker_cls = BaseWorker.get_worker_class_from_type(infra_type)
|
37
38
|
if worker_cls is not None:
|
38
|
-
return worker_cls.get_default_base_job_template()
|
39
|
+
return deepcopy(worker_cls.get_default_base_job_template())
|
39
40
|
|
40
41
|
# If the worker type is not found in the local type registry, attempt to
|
41
42
|
# get the default base job template from the collections registry.
|
42
43
|
async with get_collections_metadata_client() as collections_client:
|
43
44
|
try:
|
44
45
|
worker_metadata = await collections_client.read_worker_metadata()
|
45
|
-
|
46
46
|
for collection in worker_metadata.values():
|
47
47
|
for worker in collection.values():
|
48
48
|
if worker.get("type") == infra_type:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: prefect-client
|
3
|
-
Version: 2.14.
|
3
|
+
Version: 2.14.11
|
4
4
|
Summary: Workflow orchestration and management.
|
5
5
|
Home-page: https://www.prefect.io
|
6
6
|
Author: Prefect Technologies, Inc.
|
@@ -25,6 +25,7 @@ Requires-Python: >=3.8
|
|
25
25
|
Description-Content-Type: text/markdown
|
26
26
|
Requires-Dist: anyio <4.0.0,>=3.7.1
|
27
27
|
Requires-Dist: asgi-lifespan <3.0,>=1.0
|
28
|
+
Requires-Dist: cachetools <6.0,>=5.3
|
28
29
|
Requires-Dist: cloudpickle <4.0,>=2.0
|
29
30
|
Requires-Dist: coolname <3.0.0,>=1.0.4
|
30
31
|
Requires-Dist: croniter <3.0.0,>=1.0.12
|
@@ -1,12 +1,12 @@
|
|
1
1
|
prefect/.prefectignore,sha256=awSprvKT0vI8a64mEOLrMxhxqcO-b0ERQeYpA2rNKVQ,390
|
2
|
-
prefect/__init__.py,sha256=
|
2
|
+
prefect/__init__.py,sha256=eomMSkMZMHSV8oRTV0HX3XwoKm0sdm_UmbEqX7rqhnU,5143
|
3
3
|
prefect/_version.py,sha256=fQguBh1dzT7Baahj504O5RrsLlSyg3Zrx42OpgdPnFc,22378
|
4
4
|
prefect/agent.py,sha256=b557LEcKxcBrgAGOlEDlOPclAkucDj1RhzywBSYxYpI,27487
|
5
5
|
prefect/context.py,sha256=61IwPuOCIpYIHtgjz7ADe_-s2Zy8QD6RezWwAKl3Ytk,17774
|
6
|
-
prefect/engine.py,sha256=
|
7
|
-
prefect/exceptions.py,sha256=
|
6
|
+
prefect/engine.py,sha256=XQLp9QxpaBQHoF0iuvitGJdZUo8nPeTtOgnvVHodhBQ,103525
|
7
|
+
prefect/exceptions.py,sha256=AtYh--XOUJujutX9r355eDjln27fUBFQXG0slOPWPcY,10840
|
8
8
|
prefect/filesystems.py,sha256=X0M8_jddar7j1JtdEZgyDTX_8EVNJUYYs-Dat48GUhE,34101
|
9
|
-
prefect/flows.py,sha256=
|
9
|
+
prefect/flows.py,sha256=S9_lEzITjR7pItVwsoUl8DTM9UnKVLcj4SWTx1xBYI0,63916
|
10
10
|
prefect/futures.py,sha256=uqNlykBSRrXQO1pQ6mZWLMqwkFCLhvMLrEFR4eHs--I,12589
|
11
11
|
prefect/manifests.py,sha256=xfwEEozSEqPK2Lro4dfgdTnjVbQx-aCECNBnf7vO7ZQ,808
|
12
12
|
prefect/plugins.py,sha256=0C-D3-dKi06JZ44XEGmLjCiAkefbE_lKX-g3urzdbQ4,4163
|
@@ -14,8 +14,8 @@ prefect/profiles.toml,sha256=1Tz7nKBDTDXL_6KPJSeB7ok0Vx_aQJ_p0AUmbnzDLzw,39
|
|
14
14
|
prefect/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
15
|
prefect/results.py,sha256=uFVy2MBpr5b8eeZ6H8KVd2m7aKCqI6wM0J8nuMMQdfk,20189
|
16
16
|
prefect/serializers.py,sha256=sSbe40Ipj-d6VuzBae5k2ao9lkMUZpIXcLtD7f2a7cE,10852
|
17
|
-
prefect/settings.py,sha256=
|
18
|
-
prefect/states.py,sha256
|
17
|
+
prefect/settings.py,sha256=sS91SR85wBo-2V8kU2QzEh1tj_kMb4Z5gvoQ-Rtw1KY,64632
|
18
|
+
prefect/states.py,sha256=-Ud4AUom3Qu-HQ4hOLvfVZuuF-b_ibaqtzmL7V949Ac,20839
|
19
19
|
prefect/task_runners.py,sha256=HXUg5UqhZRN2QNBqMdGE1lKhwFhT8TaRN75ScgLbnw8,11012
|
20
20
|
prefect/tasks.py,sha256=_iCyePhTcdq8jW6gkB_TiIrCJjd9A2Mqhq0LfO5sV4Q,44730
|
21
21
|
prefect/variables.py,sha256=57h-cJ15ZXWrdQiOnoEQmUVlAe59hmIaa57ZcGNBzao,914
|
@@ -37,7 +37,7 @@ prefect/_internal/concurrency/threads.py,sha256=3QZCQFv9_Ac42HkstsCWs0TXpee9Pe6d
|
|
37
37
|
prefect/_internal/concurrency/waiters.py,sha256=ZmJVuH4GnWBqSEsCVRNkEvZpF47eeVwtgcpIHZHk5L8,9477
|
38
38
|
prefect/_internal/pydantic/__init__.py,sha256=ZTFHClaJIxIHpFFIHrZD1rZbWrY-1yyvAvLvwy1IQCk,423
|
39
39
|
prefect/_internal/pydantic/schemas.py,sha256=tsRKq5yEIgiRbWMl3BPnbfNaKyDN6pq8WSs0M8SQMm4,452
|
40
|
-
prefect/_internal/pydantic/v2_schema.py,sha256=
|
40
|
+
prefect/_internal/pydantic/v2_schema.py,sha256=bZV3fOqoZe2nfuwg5-hxw4-Kwm_T6c0nvfNakL89ub0,3284
|
41
41
|
prefect/_internal/pydantic/v2_validated_func.py,sha256=44I4o8jjiS7TYep-E6UYMwjpYH5F1WwJFajW81A3wts,3823
|
42
42
|
prefect/_internal/pydantic/annotations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
43
|
prefect/_internal/pydantic/annotations/pendulum.py,sha256=hfqBKtpQJq17BjbZoCCVHn_dU7bvJf9Oi_5tNN3ZZeY,2626
|
@@ -103,12 +103,12 @@ prefect/client/base.py,sha256=19VMAsq6Wvp1ZUwAb2OAT4pMQ0CFWsHBwqY3kZfPR2w,12209
|
|
103
103
|
prefect/client/cloud.py,sha256=vlGivNaOIS0YNc0OnVKEx2L88SRU8pal8GYMoPHXyrU,3955
|
104
104
|
prefect/client/collections.py,sha256=I9EgbTg4Fn57gn8vwP_WdDmgnATbx9gfkm2jjhCORjw,1037
|
105
105
|
prefect/client/constants.py,sha256=Z_GG8KF70vbbXxpJuqW5pLnwzujTVeHbcYYRikNmGH0,29
|
106
|
-
prefect/client/orchestration.py,sha256=
|
106
|
+
prefect/client/orchestration.py,sha256=AP4g_ZxaLM1ssH6dEywvGlzDSjM3b5ntgptXUkzN0w4,97293
|
107
107
|
prefect/client/utilities.py,sha256=ejALWrVYuqW-A2zKJkAuRXDkhZ5e8fsiEkn-wI1tzF0,1998
|
108
108
|
prefect/client/schemas/__init__.py,sha256=KlyqFV-hMulMkNstBn_0ijoHoIwJZaBj6B1r07UmgvE,607
|
109
109
|
prefect/client/schemas/actions.py,sha256=2Chfqg1yoRweIQW6WvhTFHW0WQ2HDkInDQdPzp-Iot8,24017
|
110
110
|
prefect/client/schemas/filters.py,sha256=7RIrMpiuFL2XVh8rzLzKTkgvFyzUDGbUYDfDXJQGRMs,35026
|
111
|
-
prefect/client/schemas/objects.py,sha256=
|
111
|
+
prefect/client/schemas/objects.py,sha256=zwo9uLVRb_0wHiPpXV_-4398-Eq5V6jMst_U2aSMe-U,52304
|
112
112
|
prefect/client/schemas/responses.py,sha256=nSYhg2Kl477RdczNsA731vpcJqF93WDnM6eMya3F7qI,9152
|
113
113
|
prefect/client/schemas/schedules.py,sha256=Gomwqp83qGqblBcOeniUtebzovBekxzf0srDy992pEI,14221
|
114
114
|
prefect/client/schemas/sorting.py,sha256=Y-ea8k_vTUKAPKIxqGebwLSXM7x1s5mJ_4-sDd1Ivi8,2276
|
@@ -121,7 +121,7 @@ prefect/concurrency/sync.py,sha256=AChhkA6hykgnnPmIeOp87jauLL0p_lrSwMwUoeuYprI,2
|
|
121
121
|
prefect/deployments/__init__.py,sha256=gPxKvTDTQTR9e8eAxxGkbvhjsY_zYHJ3VgROGQmZOVI,404
|
122
122
|
prefect/deployments/base.py,sha256=J7eAfoRs-RjVI157BB4p7lClT1YmkrIuipZPKyg6EJk,20286
|
123
123
|
prefect/deployments/deployments.py,sha256=xVJ4CyfloaTApn8J2t-0G98BGCpKjaXivP_jYmte_0M,35215
|
124
|
-
prefect/deployments/runner.py,sha256=
|
124
|
+
prefect/deployments/runner.py,sha256=LXflxsI0jZAh4qqDimMVJbJ7i7hw-EMXwBSKUmyYU-I,37790
|
125
125
|
prefect/deployments/steps/__init__.py,sha256=3pZWONAZzenDszqNQT3bmTFilnvjB6xMolMz9tr5pLw,229
|
126
126
|
prefect/deployments/steps/core.py,sha256=Mg2F5GBJyO-jBAAP7PGtIu1sZgNsvmw5Jn5Qj-bUlgk,6617
|
127
127
|
prefect/deployments/steps/pull.py,sha256=VXyMXedH9JNPFQ0Cs54qlTgL1EJ8Y6IbvxPKjAduqpA,7602
|
@@ -130,20 +130,25 @@ prefect/deprecated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
130
130
|
prefect/deprecated/data_documents.py,sha256=mGxhPHy7nm8xqLnnoo5oUxcm2MjcZxwEE6boD2EwJgg,9642
|
131
131
|
prefect/events/__init__.py,sha256=2tQCrDogstn-w65lKyf9ahu_wbWhPaaDK_oxH2v1558,173
|
132
132
|
prefect/events/actions.py,sha256=6ybRk3Weyeby250ME0qKlFRMvOD7iE6iCAU5tnblT14,966
|
133
|
-
prefect/events/clients.py,sha256=
|
133
|
+
prefect/events/clients.py,sha256=AfJeV-FCObvydutrSFD8JLrMVwtDJsL3WN0nbopzA3s,13688
|
134
|
+
prefect/events/filters.py,sha256=vSWHGDCCsi_znQs3gZomCxh-Q498ukn_QHJ7H8q16do,6922
|
134
135
|
prefect/events/instrument.py,sha256=uNiD7AnkfuiwTsCMgNyJURmY9H2tXNfLCb3EC5FL0Qw,3805
|
135
136
|
prefect/events/related.py,sha256=N0o19kTlos1V4L4AgO79Z_k06ZW9bfjSH8Xa9h7lugg,6746
|
136
137
|
prefect/events/schemas.py,sha256=kNDcN62-G_jz2u9zrzGI5yV6CvAM-_IzpQjAAbFIdSU,11641
|
137
138
|
prefect/events/utilities.py,sha256=JApOECe-09SU8QabSnyykdl8fzsXE28RVSCBcFDseH4,2374
|
138
139
|
prefect/events/worker.py,sha256=4Uw-_fiLa449gD2QsEOhubQwxpEyQn8PUo9N_zsJY1M,2684
|
139
140
|
prefect/infrastructure/__init__.py,sha256=Fm1Rhc4I7ZfJePpUAl1F4iNEtcDugoT650WXXt6xoCM,770
|
140
|
-
prefect/infrastructure/base.py,sha256=
|
141
|
-
prefect/infrastructure/container.py,sha256=
|
142
|
-
prefect/infrastructure/kubernetes.py,sha256=
|
143
|
-
prefect/infrastructure/process.py,sha256=
|
144
|
-
prefect/infrastructure/provisioners/__init__.py,sha256=
|
145
|
-
prefect/infrastructure/provisioners/cloud_run.py,sha256=
|
146
|
-
prefect/infrastructure/provisioners/
|
141
|
+
prefect/infrastructure/base.py,sha256=BvgY2HY1u_JEeb6u2HhnN7k86aicfOTheD-urU7bcTI,10196
|
142
|
+
prefect/infrastructure/container.py,sha256=_CbrVW2ZYmkrc-jLNNuZyblmmX8uNVYUKHeTZWH0jcg,30914
|
143
|
+
prefect/infrastructure/kubernetes.py,sha256=Jsg_86MjR3OEYm_nDh3TVzbDCBeba0YBoiP0ejGw0AQ,36553
|
144
|
+
prefect/infrastructure/process.py,sha256=xkWEMxUWnyaAD37eqdbcgL7tzmum_ctFz802RHhGfag,11283
|
145
|
+
prefect/infrastructure/provisioners/__init__.py,sha256=omykbyfYUsPQRdPGEbF3H0zSer4C4GyrGogg3spHdJM,1501
|
146
|
+
prefect/infrastructure/provisioners/cloud_run.py,sha256=kqk8yRZ4gfGJLgCEJL8vNYvRyONe2Mc4e_0DHeEb0iM,17658
|
147
|
+
prefect/infrastructure/provisioners/container_instance.py,sha256=iw6zrmrSVe0RQlbUjBy5B2cMvW8ouqBInWpUsY3kovs,41479
|
148
|
+
prefect/infrastructure/provisioners/ecs.py,sha256=J3lCSoCdO6sbBH21pSRbz9bGzxkGjiBEqAb1HpgYcAg,47640
|
149
|
+
prefect/input/__init__.py,sha256=bGXPuazC4WaDGsODHqFVkcIlIgFGb7vgqZc43VpbS5Y,343
|
150
|
+
prefect/input/actions.py,sha256=iyg-HTh8ZCAgS0HT9gZcFL5i1Hv_HzkAdAS29bAfUTk,2459
|
151
|
+
prefect/input/run_input.py,sha256=g45Q5anO0Wwla9LPWMr1aFa8xZTd3LvHE-1Wf04AMCE,3043
|
147
152
|
prefect/logging/__init__.py,sha256=EnbHzgJE_-e4VM3jG5s7MCABYvZ7UGjntC6NfSdTqLg,112
|
148
153
|
prefect/logging/configuration.py,sha256=Qy0r7_j7b8_klsBEn2_f-eSrTQ_EzaBrFwGnwdtgcK8,3436
|
149
154
|
prefect/logging/formatters.py,sha256=pJKHSo_D_DXXor8R7dnPBCOSwQMhRKfP-35UHdIcOyE,4081
|
@@ -158,9 +163,10 @@ prefect/packaging/file.py,sha256=LdYUpAJfBzaYABCwVs4jMKVyo2DC6psEFGpwJ-iKUd4,227
|
|
158
163
|
prefect/packaging/orion.py,sha256=ctWh8s3UztYfOTsZ0sfumebI0dbNDOTriDNXohtEC-k,1935
|
159
164
|
prefect/packaging/serializers.py,sha256=1x5GjcBSYrE-YMmrpYYZi2ObTs7MM6YEM3LS0e6mHAk,6321
|
160
165
|
prefect/runner/__init__.py,sha256=RxkH2lejFchDZu9fp9oFmy6fs-I96u1vq5-EVz0uDfA,34
|
161
|
-
prefect/runner/runner.py,sha256=
|
162
|
-
prefect/runner/server.py,sha256=
|
166
|
+
prefect/runner/runner.py,sha256=uWOxIulnBm7a0nvg0fNe4j_r60RcziUBQkjFViq4mAk,45384
|
167
|
+
prefect/runner/server.py,sha256=RYNPUMPHlLz8GS13P_Y84m545N4C7lVIx5zU3G_pQg0,5495
|
163
168
|
prefect/runner/storage.py,sha256=hILSisK4CVRt4ywOfAa89c1pjRZIK-_Ea-LN_VIoGD4,22038
|
169
|
+
prefect/runner/utils.py,sha256=GFbCXIp5bFmJJJa_1deY0WNsQ1inWs8HJDCyhYf8BRA,3316
|
164
170
|
prefect/runtime/__init__.py,sha256=iYmfK1HmXiXXCQK77wDloOqZmY7SFF5iyr37jRzuf-c,406
|
165
171
|
prefect/runtime/deployment.py,sha256=UWNXH-3-NNVxLCl5XnDKiofo4a5j8w_42ns1OSQMixg,4751
|
166
172
|
prefect/runtime/flow_run.py,sha256=OYXykn0CZKbIj8ni_Ut-KbAmZhEj85QwQ3xyk_T9GtM,7894
|
@@ -179,27 +185,29 @@ prefect/utilities/collections.py,sha256=BAldQs4jRG-4EYhuKDREHhMVOzLRvHty_A4Vfuhn
|
|
179
185
|
prefect/utilities/compat.py,sha256=mNQZDnzyKaOqy-OV-DnmH_dc7CNF5nQgW_EsA4xMr7g,906
|
180
186
|
prefect/utilities/context.py,sha256=nb_Kui1q9cYK5fLy84baoBzko5-mOToQkd1AnZhwyq8,418
|
181
187
|
prefect/utilities/dispatch.py,sha256=dcezbuJRsD_YYfJrsk5pGiqzJsdUhb9RxJ_lq8nXeds,5466
|
182
|
-
prefect/utilities/dockerutils.py,sha256=
|
188
|
+
prefect/utilities/dockerutils.py,sha256=4sd21GswRcTB-A8pwTfFTvyEenJaH8Xk2aOKFIIUpxs,19926
|
183
189
|
prefect/utilities/filesystem.py,sha256=JIVhlG10PAFO_S85T1i2tuwJLiz40TTrcLsIZczR0GY,4359
|
184
190
|
prefect/utilities/hashing.py,sha256=EOwZLmoIZImuSTxAvVqInabxJ-4RpEfYeg9e2EDQF8o,1752
|
185
191
|
prefect/utilities/importtools.py,sha256=isblzKv7EPo7HtnlKYpL4t-GJdtTjUSMmvXgXSMEVZM,11764
|
186
192
|
prefect/utilities/math.py,sha256=wLwcKVidpNeWQi1TUIWWLHGjlz9UgboX9FUGhx_CQzo,2821
|
187
193
|
prefect/utilities/names.py,sha256=x-stHcF7_tebJPvB1dz-5FvdXJXNBTg2kFZXSnIBBmk,1657
|
188
|
-
prefect/utilities/processutils.py,sha256=
|
194
|
+
prefect/utilities/processutils.py,sha256=JJE0Tqo05CAPGaJqJX0E3leoPa8akGpOUUV9c2Z2NJA,14370
|
189
195
|
prefect/utilities/pydantic.py,sha256=rgkzzUgiCMVjr8DMyHNmfYzy_6eGS8Z0OuNW1ssZ22g,9226
|
190
196
|
prefect/utilities/render_swagger.py,sha256=h2UrORVN3f7gM4zurtMnySjQXZIOWbji3uMinpbkl8U,3717
|
191
|
-
prefect/utilities/services.py,sha256=
|
197
|
+
prefect/utilities/services.py,sha256=TCjBJX6huz1nUzmiXI0IZNNfBuxM5-xV9PLbPZNosOw,6438
|
192
198
|
prefect/utilities/slugify.py,sha256=57Vb14t13F3zm1P65KAu8nVeAz0iJCd1Qc5eMG-R5y8,169
|
193
199
|
prefect/utilities/templating.py,sha256=cTDT0IkeXdZC-NJZ7z5PJKEWXQfKg5_a471_99i4fho,11262
|
194
200
|
prefect/utilities/text.py,sha256=eXGIsCcZ7h_6hy8T5GDQjL8GiKyktoOqavYub0QjgO4,445
|
201
|
+
prefect/utilities/validation.py,sha256=60AseIr0F1XlygAuqweswz288i7YP4LlLY00s1dM2cg,1985
|
195
202
|
prefect/utilities/visualization.py,sha256=iGkYtroroYY9Rsiw1ok1bLv9FwsNyjtiK-0vBPL-ZWI,6491
|
196
|
-
prefect/workers/__init__.py,sha256=
|
203
|
+
prefect/workers/__init__.py,sha256=6el2Q856CuRPa5Hdrbm9QyAWB_ovcT2bImSFsoWI46k,66
|
197
204
|
prefect/workers/base.py,sha256=YmWJXJiiXH1fQKL9KX873jn9h1XEQJWTAEimNNnsSE4,44488
|
205
|
+
prefect/workers/block.py,sha256=lvKlaWdA-DCCXDX23HHK9M5urEq4x2wmpKtU9ft3a7k,7767
|
198
206
|
prefect/workers/process.py,sha256=MLmS3qtuY14QJulL40sLBSSN2ZMHwh5LMcFXZNvrsdc,10368
|
199
207
|
prefect/workers/server.py,sha256=WVZJxR8nTMzK0ov0BD0xw5OyQpT26AxlXbsGQ1OrxeQ,1551
|
200
|
-
prefect/workers/utilities.py,sha256=
|
201
|
-
prefect_client-2.14.
|
202
|
-
prefect_client-2.14.
|
203
|
-
prefect_client-2.14.
|
204
|
-
prefect_client-2.14.
|
205
|
-
prefect_client-2.14.
|
208
|
+
prefect/workers/utilities.py,sha256=VfPfAlGtTuDj0-Kb8WlMgAuOfgXCdrGAnKMapPSBrwc,2483
|
209
|
+
prefect_client-2.14.11.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
|
210
|
+
prefect_client-2.14.11.dist-info/METADATA,sha256=zj4zGdarcuKtqSrYAn9xUZJsjKSMhVjWHNpZnW5sQwQ,7181
|
211
|
+
prefect_client-2.14.11.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
212
|
+
prefect_client-2.14.11.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
|
213
|
+
prefect_client-2.14.11.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|