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.
Files changed (38) hide show
  1. prefect/__init__.py +4 -1
  2. prefect/_internal/pydantic/v2_schema.py +9 -2
  3. prefect/client/orchestration.py +51 -4
  4. prefect/client/schemas/objects.py +16 -1
  5. prefect/deployments/runner.py +34 -3
  6. prefect/engine.py +302 -25
  7. prefect/events/clients.py +216 -5
  8. prefect/events/filters.py +214 -0
  9. prefect/exceptions.py +4 -0
  10. prefect/flows.py +16 -0
  11. prefect/infrastructure/base.py +106 -1
  12. prefect/infrastructure/container.py +52 -0
  13. prefect/infrastructure/kubernetes.py +64 -0
  14. prefect/infrastructure/process.py +38 -0
  15. prefect/infrastructure/provisioners/__init__.py +2 -0
  16. prefect/infrastructure/provisioners/cloud_run.py +206 -34
  17. prefect/infrastructure/provisioners/container_instance.py +1080 -0
  18. prefect/infrastructure/provisioners/ecs.py +483 -48
  19. prefect/input/__init__.py +11 -0
  20. prefect/input/actions.py +88 -0
  21. prefect/input/run_input.py +107 -0
  22. prefect/runner/runner.py +5 -0
  23. prefect/runner/server.py +92 -8
  24. prefect/runner/utils.py +92 -0
  25. prefect/settings.py +34 -9
  26. prefect/states.py +26 -3
  27. prefect/utilities/dockerutils.py +31 -0
  28. prefect/utilities/processutils.py +5 -2
  29. prefect/utilities/services.py +10 -0
  30. prefect/utilities/validation.py +63 -0
  31. prefect/workers/__init__.py +1 -0
  32. prefect/workers/block.py +226 -0
  33. prefect/workers/utilities.py +2 -2
  34. {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/METADATA +2 -1
  35. {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/RECORD +38 -30
  36. {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/LICENSE +0 -0
  37. {prefect_client-2.14.9.dist-info → prefect_client-2.14.11.dist-info}/WHEEL +0 -0
  38. {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
@@ -1 +1,2 @@
1
1
  from .process import ProcessWorker
2
+ from .block import BlockWorker
@@ -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
+ )
@@ -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.9
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=W_Nqn5HJVN-eaxJpcLHxaEjSawsCsvufKUjtqUBWiVE,5056
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=54-oJGJoEtC3QgWXLz6FCjezU3HbBigerjE65OmbuSc,92877
7
- prefect/exceptions.py,sha256=ObVErPdth_BomEf7DWguEy84bb3SitXoxb5pMZMB-HE,10717
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=MnysBebAxWZZkznQsPBrJuDD5o69Ih7wMC4TaJgxN4A,62648
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=41dZcrKBZMaq7Xi9G9mzKtlmeiAtZx30ky4w3xUgee4,64005
18
- prefect/states.py,sha256=0zT1-fZY8oW4EE3STukKKyTpyMnICOsiwd2pqVUvaZ8,20252
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=IXfoKrwY6SjnmHSIQSvTMF3vmIdUxDOxStOcP148ZGY,3160
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=iOpdiiBniVLDVnR3dr5bPd70vMQcfe-mKedZl6dPnVk,95790
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=OL7FtfdRe0zzkz_4l8RFo4QOkZtnHRI0dst62W4lo-c,51798
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=nTxFs482bxBrFk71aZqg1g322Y-1teI5cfzlxwvg1b8,35783
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=KVezI6hvpwwsidIRQdNqxA69Zoy8k4HS2a9IVQuYx6Y,6751
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=K_lhvDDOsMEZ6HSAX6bjmR2njt0fZI3mlfEmQI7noR8,6220
141
- prefect/infrastructure/container.py,sha256=FQ9eDyhNa_0eeNGDNobI4NVVPBkfNioI_79LKiRbx-g,28751
142
- prefect/infrastructure/kubernetes.py,sha256=0i1ZNmnkTzqDcpaHWrfyUqbAeeGo3j39i5t273Oai1Q,34078
143
- prefect/infrastructure/process.py,sha256=9c_mDD-bqvTTisuX_j-dSHFezYNcw9oAAsdq26DkA0Q,9853
144
- prefect/infrastructure/provisioners/__init__.py,sha256=NdUgMNMRwNZDTDi1uYHaLcaQkMwJAMtxPoICAtoX8rs,1365
145
- prefect/infrastructure/provisioners/cloud_run.py,sha256=uYbQIyekzqymaYstWwZr-r3eyU_wMoGX2_KkUoWy6_A,10477
146
- prefect/infrastructure/provisioners/ecs.py,sha256=yUazQ9zxa7ryWyzGS5bqESl4k1KHvxV5AS94L1pMac4,31897
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=KlENRaVEL_WfVKmy4O20WcvSeDoN6gHF39-10EsmK7M,44981
162
- prefect/runner/server.py,sha256=cGNgpMG72fJ9GcRQHZB1Y3WkZtK8lczR0hX0tBOE9Ro,2313
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=BfJzVRx62Si82MrFcFAqrhpKv7ep_bXMES6OX86K2Js,18727
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=hGMqWne0jKUN0-PtU3f9xOpIfIFm65VwdXLNzbWkO9U,14327
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=kEPQ8jjJfCcYANr4WKXr9A9PAP1pCfhdkavZiXuT7I0,6015
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=8dP8SLZbWYyC_l9DRTQSE3dEbDgns5DZDhxkp_NfsbQ,35
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=GenL5J8bBdTg8EdeDbu85042uXWTeb2AF3WA9KCmUH4,2448
201
- prefect_client-2.14.9.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
202
- prefect_client-2.14.9.dist-info/METADATA,sha256=JDuiu1WJeDzz7N57CJEHKupJDWJ7q4ogagQG1VgD5WI,7143
203
- prefect_client-2.14.9.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
204
- prefect_client-2.14.9.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
205
- prefect_client-2.14.9.dist-info/RECORD,,
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,,