prefect-client 2.14.8__py3-none-any.whl → 2.14.10__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/client/orchestration.py +1 -2
- prefect/deployments/runner.py +5 -1
- prefect/deployments/steps/core.py +2 -4
- prefect/engine.py +176 -11
- prefect/events/clients.py +216 -5
- prefect/events/filters.py +214 -0
- prefect/exceptions.py +4 -0
- prefect/infrastructure/base.py +106 -1
- prefect/infrastructure/container.py +52 -0
- prefect/infrastructure/process.py +38 -0
- prefect/infrastructure/provisioners/__init__.py +6 -2
- prefect/infrastructure/provisioners/cloud_run.py +7 -1
- prefect/infrastructure/provisioners/container_instance.py +797 -0
- prefect/infrastructure/provisioners/ecs.py +907 -0
- prefect/runner/runner.py +14 -0
- prefect/runner/storage.py +12 -2
- prefect/states.py +26 -3
- prefect/utilities/services.py +10 -0
- prefect/workers/__init__.py +1 -0
- prefect/workers/block.py +226 -0
- prefect/workers/utilities.py +2 -1
- {prefect_client-2.14.8.dist-info → prefect_client-2.14.10.dist-info}/METADATA +2 -1
- {prefect_client-2.14.8.dist-info → prefect_client-2.14.10.dist-info}/RECORD +27 -23
- {prefect_client-2.14.8.dist-info → prefect_client-2.14.10.dist-info}/LICENSE +0 -0
- {prefect_client-2.14.8.dist-info → prefect_client-2.14.10.dist-info}/WHEEL +0 -0
- {prefect_client-2.14.8.dist-info → prefect_client-2.14.10.dist-info}/top_level.txt +0 -0
prefect/runner/runner.py
CHANGED
@@ -798,7 +798,20 @@ class Runner:
|
|
798
798
|
try:
|
799
799
|
if self._limiter:
|
800
800
|
self._limiter.acquire_on_behalf_of_nowait(flow_run_id)
|
801
|
+
self._logger.debug("Limit slot acquired for flow run '%s'", flow_run_id)
|
801
802
|
return True
|
803
|
+
except RuntimeError as exc:
|
804
|
+
if (
|
805
|
+
"this borrower is already holding one of this CapacityLimiter's tokens"
|
806
|
+
in str(exc)
|
807
|
+
):
|
808
|
+
self._logger.warning(
|
809
|
+
f"Duplicate submission of flow run '{flow_run_id}' detected. Runner"
|
810
|
+
" will not re-submit flow run."
|
811
|
+
)
|
812
|
+
return False
|
813
|
+
else:
|
814
|
+
raise
|
802
815
|
except anyio.WouldBlock:
|
803
816
|
self._logger.info(
|
804
817
|
f"Flow run limit reached; {self._limiter.borrowed_tokens} flow runs"
|
@@ -813,6 +826,7 @@ class Runner:
|
|
813
826
|
"""
|
814
827
|
if self._limiter:
|
815
828
|
self._limiter.release_on_behalf_of(flow_run_id)
|
829
|
+
self._logger.debug("Limit slot released for flow run '%s'", flow_run_id)
|
816
830
|
|
817
831
|
async def _submit_scheduled_flow_runs(
|
818
832
|
self, flow_run_response: List["FlowRun"]
|
prefect/runner/storage.py
CHANGED
@@ -9,12 +9,18 @@ import fsspec
|
|
9
9
|
from anyio import run_process
|
10
10
|
|
11
11
|
from prefect._internal.concurrency.api import create_call, from_async
|
12
|
+
from prefect._internal.pydantic import HAS_PYDANTIC_V2
|
12
13
|
from prefect.blocks.core import Block, BlockNotSavedError
|
13
14
|
from prefect.blocks.system import Secret
|
14
15
|
from prefect.filesystems import ReadableDeploymentStorage, WritableDeploymentStorage
|
15
16
|
from prefect.logging.loggers import get_logger
|
16
17
|
from prefect.utilities.collections import visit_collection
|
17
18
|
|
19
|
+
if HAS_PYDANTIC_V2:
|
20
|
+
from pydantic.v1 import SecretStr
|
21
|
+
else:
|
22
|
+
from pydantic import SecretStr
|
23
|
+
|
18
24
|
|
19
25
|
@runtime_checkable
|
20
26
|
class RunnerStorage(Protocol):
|
@@ -156,8 +162,12 @@ class GitRepository:
|
|
156
162
|
if isinstance(self._credentials, Block)
|
157
163
|
else deepcopy(self._credentials)
|
158
164
|
)
|
159
|
-
|
160
|
-
|
165
|
+
|
166
|
+
for k, v in credentials.items():
|
167
|
+
if isinstance(v, Secret):
|
168
|
+
credentials[k] = v.get()
|
169
|
+
elif isinstance(v, SecretStr):
|
170
|
+
credentials[k] = v.get_secret_value()
|
161
171
|
|
162
172
|
formatted_credentials = _format_token_from_credentials(
|
163
173
|
urlparse(self._url).netloc, credentials
|
prefect/states.py
CHANGED
@@ -568,10 +568,10 @@ def Pending(cls: Type[State] = State, **kwargs) -> State:
|
|
568
568
|
|
569
569
|
def Paused(
|
570
570
|
cls: Type[State] = State,
|
571
|
-
timeout_seconds: int = None,
|
572
|
-
pause_expiration_time: datetime.datetime = None,
|
571
|
+
timeout_seconds: Optional[int] = None,
|
572
|
+
pause_expiration_time: Optional[datetime.datetime] = None,
|
573
573
|
reschedule: bool = False,
|
574
|
-
pause_key: str = None,
|
574
|
+
pause_key: Optional[str] = None,
|
575
575
|
**kwargs,
|
576
576
|
) -> State:
|
577
577
|
"""Convenience function for creating `Paused` states.
|
@@ -602,6 +602,29 @@ def Paused(
|
|
602
602
|
return cls(type=StateType.PAUSED, state_details=state_details, **kwargs)
|
603
603
|
|
604
604
|
|
605
|
+
def Suspended(
|
606
|
+
cls: Type[State] = State,
|
607
|
+
timeout_seconds: Optional[int] = None,
|
608
|
+
pause_expiration_time: Optional[datetime.datetime] = None,
|
609
|
+
pause_key: Optional[str] = None,
|
610
|
+
**kwargs,
|
611
|
+
):
|
612
|
+
"""Convenience function for creating `Suspended` states.
|
613
|
+
|
614
|
+
Returns:
|
615
|
+
State: a Suspended state
|
616
|
+
"""
|
617
|
+
return Paused(
|
618
|
+
cls=cls,
|
619
|
+
name="Suspended",
|
620
|
+
reschedule=True,
|
621
|
+
timeout_seconds=timeout_seconds,
|
622
|
+
pause_expiration_time=pause_expiration_time,
|
623
|
+
pause_key=pause_key,
|
624
|
+
**kwargs,
|
625
|
+
)
|
626
|
+
|
627
|
+
|
605
628
|
def AwaitingRetry(
|
606
629
|
cls: Type[State] = State, scheduled_time: datetime.datetime = None, **kwargs
|
607
630
|
) -> State:
|
prefect/utilities/services.py
CHANGED
@@ -7,9 +7,12 @@ from typing import Callable, Coroutine, Deque, Tuple
|
|
7
7
|
import anyio
|
8
8
|
import httpx
|
9
9
|
|
10
|
+
from prefect.logging.loggers import get_logger
|
10
11
|
from prefect.utilities.collections import distinct
|
11
12
|
from prefect.utilities.math import clamped_poisson_interval
|
12
13
|
|
14
|
+
logger = get_logger("utilities.services.critical_service_loop")
|
15
|
+
|
13
16
|
|
14
17
|
async def critical_service_loop(
|
15
18
|
workload: Callable[..., Coroutine],
|
@@ -50,6 +53,7 @@ async def critical_service_loop(
|
|
50
53
|
|
51
54
|
while True:
|
52
55
|
try:
|
56
|
+
logger.debug(f"Starting run of {workload!r}")
|
53
57
|
await workload()
|
54
58
|
|
55
59
|
# Reset the backoff count on success; we may want to consider resetting
|
@@ -69,6 +73,9 @@ async def critical_service_loop(
|
|
69
73
|
# exception clause below)
|
70
74
|
track_record.append(False)
|
71
75
|
failures.append((exc, sys.exc_info()[-1]))
|
76
|
+
logger.debug(
|
77
|
+
f"Run of {workload!r} failed with TransportError", exc_info=exc
|
78
|
+
)
|
72
79
|
except httpx.HTTPStatusError as exc:
|
73
80
|
if exc.response.status_code >= 500:
|
74
81
|
# 5XX codes indicate a potential outage of the Prefect API which is
|
@@ -76,6 +83,9 @@ async def critical_service_loop(
|
|
76
83
|
# it is prolonged.
|
77
84
|
track_record.append(False)
|
78
85
|
failures.append((exc, sys.exc_info()[-1]))
|
86
|
+
logger.debug(
|
87
|
+
f"Run of {workload!r} failed with HTTPStatusError", exc_info=exc
|
88
|
+
)
|
79
89
|
else:
|
80
90
|
raise
|
81
91
|
|
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,7 +36,7 @@ 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.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: prefect-client
|
3
|
-
Version: 2.14.
|
3
|
+
Version: 2.14.10
|
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,10 +1,10 @@
|
|
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=q8ZjmMiCcXvHry-EwBdmqsaHxpwyDvhU0m3T093I9Fc,99531
|
7
|
+
prefect/exceptions.py,sha256=AtYh--XOUJujutX9r355eDjln27fUBFQXG0slOPWPcY,10840
|
8
8
|
prefect/filesystems.py,sha256=X0M8_jddar7j1JtdEZgyDTX_8EVNJUYYs-Dat48GUhE,34101
|
9
9
|
prefect/flows.py,sha256=MnysBebAxWZZkznQsPBrJuDD5o69Ih7wMC4TaJgxN4A,62648
|
10
10
|
prefect/futures.py,sha256=uqNlykBSRrXQO1pQ6mZWLMqwkFCLhvMLrEFR4eHs--I,12589
|
@@ -15,7 +15,7 @@ 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
17
|
prefect/settings.py,sha256=41dZcrKBZMaq7Xi9G9mzKtlmeiAtZx30ky4w3xUgee4,64005
|
18
|
-
prefect/states.py,sha256
|
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
|
@@ -103,7 +103,7 @@ 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=FyUZJnbPpe2wtn_CWik_flOXH-zdjij_h43CPThvQHE,95794
|
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
|
@@ -121,28 +121,31 @@ 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=tr1nPByLgBqR42CUDITBWluA6vyARf4gfERKfiQd5uY,36047
|
125
125
|
prefect/deployments/steps/__init__.py,sha256=3pZWONAZzenDszqNQT3bmTFilnvjB6xMolMz9tr5pLw,229
|
126
|
-
prefect/deployments/steps/core.py,sha256=
|
126
|
+
prefect/deployments/steps/core.py,sha256=Mg2F5GBJyO-jBAAP7PGtIu1sZgNsvmw5Jn5Qj-bUlgk,6617
|
127
127
|
prefect/deployments/steps/pull.py,sha256=VXyMXedH9JNPFQ0Cs54qlTgL1EJ8Y6IbvxPKjAduqpA,7602
|
128
128
|
prefect/deployments/steps/utility.py,sha256=LebTPEi66OOGuUYSsTQHbYHExIdjspSFHdacrC30C_k,7903
|
129
129
|
prefect/deprecated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
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=
|
141
|
+
prefect/infrastructure/base.py,sha256=BvgY2HY1u_JEeb6u2HhnN7k86aicfOTheD-urU7bcTI,10196
|
142
|
+
prefect/infrastructure/container.py,sha256=_CbrVW2ZYmkrc-jLNNuZyblmmX8uNVYUKHeTZWH0jcg,30914
|
142
143
|
prefect/infrastructure/kubernetes.py,sha256=0i1ZNmnkTzqDcpaHWrfyUqbAeeGo3j39i5t273Oai1Q,34078
|
143
|
-
prefect/infrastructure/process.py,sha256=
|
144
|
-
prefect/infrastructure/provisioners/__init__.py,sha256=
|
145
|
-
prefect/infrastructure/provisioners/cloud_run.py,sha256=
|
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=GhhSiLPVLJ1Ozghdd0YtxKEdgdFV_0Lunvhw-VxB8fE,10597
|
147
|
+
prefect/infrastructure/provisioners/container_instance.py,sha256=bH9Hm4H66MMbxo5iqUc8CBhP8Rw5mWRrehqDZ3LxY0w,30693
|
148
|
+
prefect/infrastructure/provisioners/ecs.py,sha256=yUazQ9zxa7ryWyzGS5bqESl4k1KHvxV5AS94L1pMac4,31897
|
146
149
|
prefect/logging/__init__.py,sha256=EnbHzgJE_-e4VM3jG5s7MCABYvZ7UGjntC6NfSdTqLg,112
|
147
150
|
prefect/logging/configuration.py,sha256=Qy0r7_j7b8_klsBEn2_f-eSrTQ_EzaBrFwGnwdtgcK8,3436
|
148
151
|
prefect/logging/formatters.py,sha256=pJKHSo_D_DXXor8R7dnPBCOSwQMhRKfP-35UHdIcOyE,4081
|
@@ -157,9 +160,9 @@ prefect/packaging/file.py,sha256=LdYUpAJfBzaYABCwVs4jMKVyo2DC6psEFGpwJ-iKUd4,227
|
|
157
160
|
prefect/packaging/orion.py,sha256=ctWh8s3UztYfOTsZ0sfumebI0dbNDOTriDNXohtEC-k,1935
|
158
161
|
prefect/packaging/serializers.py,sha256=1x5GjcBSYrE-YMmrpYYZi2ObTs7MM6YEM3LS0e6mHAk,6321
|
159
162
|
prefect/runner/__init__.py,sha256=RxkH2lejFchDZu9fp9oFmy6fs-I96u1vq5-EVz0uDfA,34
|
160
|
-
prefect/runner/runner.py,sha256=
|
163
|
+
prefect/runner/runner.py,sha256=KlENRaVEL_WfVKmy4O20WcvSeDoN6gHF39-10EsmK7M,44981
|
161
164
|
prefect/runner/server.py,sha256=cGNgpMG72fJ9GcRQHZB1Y3WkZtK8lczR0hX0tBOE9Ro,2313
|
162
|
-
prefect/runner/storage.py,sha256=
|
165
|
+
prefect/runner/storage.py,sha256=hILSisK4CVRt4ywOfAa89c1pjRZIK-_Ea-LN_VIoGD4,22038
|
163
166
|
prefect/runtime/__init__.py,sha256=iYmfK1HmXiXXCQK77wDloOqZmY7SFF5iyr37jRzuf-c,406
|
164
167
|
prefect/runtime/deployment.py,sha256=UWNXH-3-NNVxLCl5XnDKiofo4a5j8w_42ns1OSQMixg,4751
|
165
168
|
prefect/runtime/flow_run.py,sha256=OYXykn0CZKbIj8ni_Ut-KbAmZhEj85QwQ3xyk_T9GtM,7894
|
@@ -187,18 +190,19 @@ prefect/utilities/names.py,sha256=x-stHcF7_tebJPvB1dz-5FvdXJXNBTg2kFZXSnIBBmk,16
|
|
187
190
|
prefect/utilities/processutils.py,sha256=hGMqWne0jKUN0-PtU3f9xOpIfIFm65VwdXLNzbWkO9U,14327
|
188
191
|
prefect/utilities/pydantic.py,sha256=rgkzzUgiCMVjr8DMyHNmfYzy_6eGS8Z0OuNW1ssZ22g,9226
|
189
192
|
prefect/utilities/render_swagger.py,sha256=h2UrORVN3f7gM4zurtMnySjQXZIOWbji3uMinpbkl8U,3717
|
190
|
-
prefect/utilities/services.py,sha256=
|
193
|
+
prefect/utilities/services.py,sha256=TCjBJX6huz1nUzmiXI0IZNNfBuxM5-xV9PLbPZNosOw,6438
|
191
194
|
prefect/utilities/slugify.py,sha256=57Vb14t13F3zm1P65KAu8nVeAz0iJCd1Qc5eMG-R5y8,169
|
192
195
|
prefect/utilities/templating.py,sha256=cTDT0IkeXdZC-NJZ7z5PJKEWXQfKg5_a471_99i4fho,11262
|
193
196
|
prefect/utilities/text.py,sha256=eXGIsCcZ7h_6hy8T5GDQjL8GiKyktoOqavYub0QjgO4,445
|
194
197
|
prefect/utilities/visualization.py,sha256=iGkYtroroYY9Rsiw1ok1bLv9FwsNyjtiK-0vBPL-ZWI,6491
|
195
|
-
prefect/workers/__init__.py,sha256=
|
198
|
+
prefect/workers/__init__.py,sha256=6el2Q856CuRPa5Hdrbm9QyAWB_ovcT2bImSFsoWI46k,66
|
196
199
|
prefect/workers/base.py,sha256=YmWJXJiiXH1fQKL9KX873jn9h1XEQJWTAEimNNnsSE4,44488
|
200
|
+
prefect/workers/block.py,sha256=lvKlaWdA-DCCXDX23HHK9M5urEq4x2wmpKtU9ft3a7k,7767
|
197
201
|
prefect/workers/process.py,sha256=MLmS3qtuY14QJulL40sLBSSN2ZMHwh5LMcFXZNvrsdc,10368
|
198
202
|
prefect/workers/server.py,sha256=WVZJxR8nTMzK0ov0BD0xw5OyQpT26AxlXbsGQ1OrxeQ,1551
|
199
|
-
prefect/workers/utilities.py,sha256=
|
200
|
-
prefect_client-2.14.
|
201
|
-
prefect_client-2.14.
|
202
|
-
prefect_client-2.14.
|
203
|
-
prefect_client-2.14.
|
204
|
-
prefect_client-2.14.
|
203
|
+
prefect/workers/utilities.py,sha256=OXMqMINSgYzW8r8Cyurs5Lp_tJwLTF8ojWfv7BHTEOI,2484
|
204
|
+
prefect_client-2.14.10.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
|
205
|
+
prefect_client-2.14.10.dist-info/METADATA,sha256=WxIZUHId-ZfcBl0eKGymVCVzbooxsUT4X9zrBTS_v8E,7181
|
206
|
+
prefect_client-2.14.10.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
207
|
+
prefect_client-2.14.10.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
|
208
|
+
prefect_client-2.14.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|