prefect-client 3.0.2__py3-none-any.whl → 3.0.4__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/_internal/retries.py +1 -3
- prefect/_internal/schemas/validators.py +1 -1
- prefect/blocks/core.py +5 -4
- prefect/blocks/webhook.py +9 -1
- prefect/cache_policies.py +98 -28
- prefect/client/cloud.py +9 -0
- prefect/client/orchestration.py +3 -0
- prefect/client/schemas/actions.py +8 -0
- prefect/client/schemas/filters.py +4 -2
- prefect/client/schemas/objects.py +36 -1
- prefect/client/schemas/responses.py +15 -1
- prefect/client/subscriptions.py +3 -3
- prefect/context.py +1 -5
- prefect/deployments/base.py +12 -0
- prefect/deployments/runner.py +42 -5
- prefect/events/clients.py +40 -22
- prefect/filesystems.py +26 -1
- prefect/flows.py +25 -12
- prefect/locking/filesystem.py +3 -3
- prefect/plugins.py +9 -1
- prefect/results.py +96 -11
- prefect/runner/runner.py +12 -45
- prefect/settings.py +36 -0
- prefect/task_engine.py +28 -7
- prefect/transactions.py +11 -8
- prefect/utilities/asyncutils.py +7 -0
- prefect/utilities/collections.py +3 -2
- prefect/utilities/engine.py +4 -1
- prefect/workers/base.py +7 -62
- {prefect_client-3.0.2.dist-info → prefect_client-3.0.4.dist-info}/METADATA +1 -1
- {prefect_client-3.0.2.dist-info → prefect_client-3.0.4.dist-info}/RECORD +34 -34
- {prefect_client-3.0.2.dist-info → prefect_client-3.0.4.dist-info}/LICENSE +0 -0
- {prefect_client-3.0.2.dist-info → prefect_client-3.0.4.dist-info}/WHEEL +0 -0
- {prefect_client-3.0.2.dist-info → prefect_client-3.0.4.dist-info}/top_level.txt +0 -0
prefect/settings.py
CHANGED
@@ -1288,6 +1288,36 @@ compromise. Adjust this setting based on your specific security requirements
|
|
1288
1288
|
and usage patterns.
|
1289
1289
|
"""
|
1290
1290
|
|
1291
|
+
PREFECT_SERVER_CORS_ALLOWED_ORIGINS = Setting(
|
1292
|
+
str,
|
1293
|
+
default="*",
|
1294
|
+
)
|
1295
|
+
"""
|
1296
|
+
A comma-separated list of origins that are authorized to make cross-origin requests to the API.
|
1297
|
+
|
1298
|
+
By default, this is set to `*`, which allows requests from all origins.
|
1299
|
+
"""
|
1300
|
+
|
1301
|
+
PREFECT_SERVER_CORS_ALLOWED_METHODS = Setting(
|
1302
|
+
str,
|
1303
|
+
default="*",
|
1304
|
+
)
|
1305
|
+
"""
|
1306
|
+
A comma-separated list of methods that are authorized to make cross-origin requests to the API.
|
1307
|
+
|
1308
|
+
By default, this is set to `*`, which allows requests with all methods.
|
1309
|
+
"""
|
1310
|
+
|
1311
|
+
PREFECT_SERVER_CORS_ALLOWED_HEADERS = Setting(
|
1312
|
+
str,
|
1313
|
+
default="*",
|
1314
|
+
)
|
1315
|
+
"""
|
1316
|
+
A comma-separated list of headers that are authorized to make cross-origin requests to the API.
|
1317
|
+
|
1318
|
+
By default, this is set to `*`, which allows requests with all headers.
|
1319
|
+
"""
|
1320
|
+
|
1291
1321
|
PREFECT_SERVER_ALLOW_EPHEMERAL_MODE = Setting(bool, default=False)
|
1292
1322
|
"""
|
1293
1323
|
Controls whether or not a subprocess server can be started when no API URL is provided.
|
@@ -1428,6 +1458,12 @@ PREFECT_DEPLOYMENT_SCHEDULE_MAX_SCHEDULED_RUNS = Setting(int, default=50)
|
|
1428
1458
|
The maximum number of scheduled runs to create for a deployment.
|
1429
1459
|
"""
|
1430
1460
|
|
1461
|
+
PREFECT_DEPLOYMENT_CONCURRENCY_SLOT_WAIT_SECONDS = Setting(float, default=30.0)
|
1462
|
+
"""
|
1463
|
+
The number of seconds to wait before retrying when a deployment flow run
|
1464
|
+
cannot secure a concurrency slot from the server.
|
1465
|
+
"""
|
1466
|
+
|
1431
1467
|
PREFECT_WORKER_HEARTBEAT_SECONDS = Setting(float, default=30)
|
1432
1468
|
"""
|
1433
1469
|
Number of seconds a worker should wait between sending a heartbeat.
|
prefect/task_engine.py
CHANGED
@@ -77,7 +77,7 @@ from prefect.states import (
|
|
77
77
|
exception_to_failed_state,
|
78
78
|
return_value_to_state,
|
79
79
|
)
|
80
|
-
from prefect.transactions import Transaction, transaction
|
80
|
+
from prefect.transactions import IsolationLevel, Transaction, transaction
|
81
81
|
from prefect.utilities.annotations import NotSet
|
82
82
|
from prefect.utilities.asyncutils import run_coro_as_sync
|
83
83
|
from prefect.utilities.callables import call_with_parameters, parameters_to_args_kwargs
|
@@ -364,7 +364,6 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
364
364
|
new_state = Running()
|
365
365
|
|
366
366
|
self.task_run.start_time = new_state.timestamp
|
367
|
-
self.task_run.run_count += 1
|
368
367
|
|
369
368
|
flow_run_context = FlowRunContext.get()
|
370
369
|
if flow_run_context and flow_run_context.flow_run:
|
@@ -412,6 +411,9 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
412
411
|
self.task_run.state_type = new_state.type
|
413
412
|
self.task_run.state_name = new_state.name
|
414
413
|
|
414
|
+
if new_state.is_running():
|
415
|
+
self.task_run.run_count += 1
|
416
|
+
|
415
417
|
if new_state.is_final():
|
416
418
|
if isinstance(state.data, BaseResult) and state.data.has_cached_object():
|
417
419
|
# Avoid fetching the result unless it is cached, otherwise we defeat
|
@@ -511,7 +513,6 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
511
513
|
else:
|
512
514
|
delay = None
|
513
515
|
new_state = Retrying()
|
514
|
-
self.task_run.run_count += 1
|
515
516
|
|
516
517
|
self.logger.info(
|
517
518
|
"Task run failed with exception: %r - " "Retry %s/%s will start %s",
|
@@ -692,8 +693,9 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
692
693
|
if scheduled_time := self.state.state_details.scheduled_time:
|
693
694
|
sleep_time = (scheduled_time - pendulum.now("utc")).total_seconds()
|
694
695
|
await anyio.sleep(sleep_time if sleep_time > 0 else 0)
|
696
|
+
new_state = Retrying() if self.state.name == "AwaitingRetry" else Running()
|
695
697
|
self.set_state(
|
696
|
-
|
698
|
+
new_state,
|
697
699
|
force=True,
|
698
700
|
)
|
699
701
|
|
@@ -725,12 +727,21 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
725
727
|
else PREFECT_TASKS_REFRESH_CACHE.value()
|
726
728
|
)
|
727
729
|
|
730
|
+
isolation_level = (
|
731
|
+
IsolationLevel(self.task.cache_policy.isolation_level)
|
732
|
+
if self.task.cache_policy
|
733
|
+
and self.task.cache_policy is not NotSet
|
734
|
+
and self.task.cache_policy.isolation_level is not None
|
735
|
+
else None
|
736
|
+
)
|
737
|
+
|
728
738
|
with transaction(
|
729
739
|
key=self.compute_transaction_key(),
|
730
740
|
store=get_result_store(),
|
731
741
|
overwrite=overwrite,
|
732
742
|
logger=self.logger,
|
733
743
|
write_on_commit=should_persist_result(),
|
744
|
+
isolation_level=isolation_level,
|
734
745
|
) as txn:
|
735
746
|
yield txn
|
736
747
|
|
@@ -874,7 +885,6 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
874
885
|
new_state = Running()
|
875
886
|
|
876
887
|
self.task_run.start_time = new_state.timestamp
|
877
|
-
self.task_run.run_count += 1
|
878
888
|
|
879
889
|
flow_run_context = FlowRunContext.get()
|
880
890
|
if flow_run_context:
|
@@ -922,6 +932,9 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
922
932
|
self.task_run.state_type = new_state.type
|
923
933
|
self.task_run.state_name = new_state.name
|
924
934
|
|
935
|
+
if new_state.is_running():
|
936
|
+
self.task_run.run_count += 1
|
937
|
+
|
925
938
|
if new_state.is_final():
|
926
939
|
if (
|
927
940
|
isinstance(new_state.data, BaseResult)
|
@@ -1017,7 +1030,6 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
1017
1030
|
else:
|
1018
1031
|
delay = None
|
1019
1032
|
new_state = Retrying()
|
1020
|
-
self.task_run.run_count += 1
|
1021
1033
|
|
1022
1034
|
self.logger.info(
|
1023
1035
|
"Task run failed with exception: %r - " "Retry %s/%s will start %s",
|
@@ -1190,8 +1202,9 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
1190
1202
|
if scheduled_time := self.state.state_details.scheduled_time:
|
1191
1203
|
sleep_time = (scheduled_time - pendulum.now("utc")).total_seconds()
|
1192
1204
|
await anyio.sleep(sleep_time if sleep_time > 0 else 0)
|
1205
|
+
new_state = Retrying() if self.state.name == "AwaitingRetry" else Running()
|
1193
1206
|
await self.set_state(
|
1194
|
-
|
1207
|
+
new_state,
|
1195
1208
|
force=True,
|
1196
1209
|
)
|
1197
1210
|
|
@@ -1224,6 +1237,13 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
1224
1237
|
if self.task.refresh_cache is not None
|
1225
1238
|
else PREFECT_TASKS_REFRESH_CACHE.value()
|
1226
1239
|
)
|
1240
|
+
isolation_level = (
|
1241
|
+
IsolationLevel(self.task.cache_policy.isolation_level)
|
1242
|
+
if self.task.cache_policy
|
1243
|
+
and self.task.cache_policy is not NotSet
|
1244
|
+
and self.task.cache_policy.isolation_level is not None
|
1245
|
+
else None
|
1246
|
+
)
|
1227
1247
|
|
1228
1248
|
with transaction(
|
1229
1249
|
key=self.compute_transaction_key(),
|
@@ -1231,6 +1251,7 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
1231
1251
|
overwrite=overwrite,
|
1232
1252
|
logger=self.logger,
|
1233
1253
|
write_on_commit=should_persist_result(),
|
1254
|
+
isolation_level=isolation_level,
|
1234
1255
|
) as txn:
|
1235
1256
|
yield txn
|
1236
1257
|
|
prefect/transactions.py
CHANGED
@@ -18,7 +18,11 @@ from pydantic import Field, PrivateAttr
|
|
18
18
|
from typing_extensions import Self
|
19
19
|
|
20
20
|
from prefect.context import ContextModel
|
21
|
-
from prefect.exceptions import
|
21
|
+
from prefect.exceptions import (
|
22
|
+
ConfigurationError,
|
23
|
+
MissingContextError,
|
24
|
+
SerializationError,
|
25
|
+
)
|
22
26
|
from prefect.logging.loggers import get_logger, get_run_logger
|
23
27
|
from prefect.records import RecordStore
|
24
28
|
from prefect.records.base import TransactionRecord
|
@@ -27,7 +31,6 @@ from prefect.results import (
|
|
27
31
|
ResultRecord,
|
28
32
|
ResultStore,
|
29
33
|
get_result_store,
|
30
|
-
should_persist_result,
|
31
34
|
)
|
32
35
|
from prefect.utilities.annotations import NotSet
|
33
36
|
from prefect.utilities.collections import AutoEnum
|
@@ -194,8 +197,10 @@ class Transaction(ContextModel):
|
|
194
197
|
and self.key
|
195
198
|
and not self.store.supports_isolation_level(self.isolation_level)
|
196
199
|
):
|
197
|
-
raise
|
198
|
-
f"Isolation level {self.isolation_level.name} is not supported by provided
|
200
|
+
raise ConfigurationError(
|
201
|
+
f"Isolation level {self.isolation_level.name} is not supported by provided "
|
202
|
+
"configuration. Please ensure you've provided a lock file directory or lock "
|
203
|
+
"manager when using the SERIALIZABLE isolation level."
|
199
204
|
)
|
200
205
|
|
201
206
|
# this needs to go before begin, which could set the state to committed
|
@@ -432,7 +437,7 @@ def transaction(
|
|
432
437
|
commit_mode: Optional[CommitMode] = None,
|
433
438
|
isolation_level: Optional[IsolationLevel] = None,
|
434
439
|
overwrite: bool = False,
|
435
|
-
write_on_commit:
|
440
|
+
write_on_commit: bool = True,
|
436
441
|
logger: Union[logging.Logger, logging.LoggerAdapter, None] = None,
|
437
442
|
) -> Generator[Transaction, None, None]:
|
438
443
|
"""
|
@@ -467,9 +472,7 @@ def transaction(
|
|
467
472
|
commit_mode=commit_mode,
|
468
473
|
isolation_level=isolation_level,
|
469
474
|
overwrite=overwrite,
|
470
|
-
write_on_commit=write_on_commit
|
471
|
-
if write_on_commit is not None
|
472
|
-
else should_persist_result(),
|
475
|
+
write_on_commit=write_on_commit,
|
473
476
|
logger=logger,
|
474
477
|
) as txn:
|
475
478
|
yield txn
|
prefect/utilities/asyncutils.py
CHANGED
@@ -341,6 +341,13 @@ def sync_compatible(
|
|
341
341
|
will submit the async method to the event loop.
|
342
342
|
- If we cannot find an event loop, we will create a new one and run the async method
|
343
343
|
then tear down the loop.
|
344
|
+
|
345
|
+
Note: Type checkers will infer functions decorated with `@sync_compatible` are synchronous. If
|
346
|
+
you want to use the decorated function in an async context, you will need to ignore the types
|
347
|
+
and "cast" the return type to a coroutine. For example:
|
348
|
+
```
|
349
|
+
python result: Coroutine = sync_compatible(my_async_function)(arg1, arg2) # type: ignore
|
350
|
+
```
|
344
351
|
"""
|
345
352
|
|
346
353
|
@wraps(async_fn)
|
prefect/utilities/collections.py
CHANGED
@@ -18,7 +18,6 @@ from typing import (
|
|
18
18
|
Generator,
|
19
19
|
Hashable,
|
20
20
|
Iterable,
|
21
|
-
Iterator,
|
22
21
|
List,
|
23
22
|
Optional,
|
24
23
|
Set,
|
@@ -192,7 +191,9 @@ def extract_instances(
|
|
192
191
|
return ret
|
193
192
|
|
194
193
|
|
195
|
-
def batched_iterable(
|
194
|
+
def batched_iterable(
|
195
|
+
iterable: Iterable[T], size: int
|
196
|
+
) -> Generator[Tuple[T, ...], None, None]:
|
196
197
|
"""
|
197
198
|
Yield batches of a certain size from an iterable
|
198
199
|
|
prefect/utilities/engine.py
CHANGED
@@ -627,6 +627,9 @@ def link_state_to_result(state: State, result: Any) -> None:
|
|
627
627
|
"""
|
628
628
|
|
629
629
|
flow_run_context = FlowRunContext.get()
|
630
|
+
# Drop the data field to avoid holding a strong reference to the result
|
631
|
+
# Holding large user objects in memory can cause memory bloat
|
632
|
+
linked_state = state.model_copy(update={"data": None})
|
630
633
|
|
631
634
|
def link_if_trackable(obj: Any) -> None:
|
632
635
|
"""Track connection between a task run result and its associated state if it has a unique ID.
|
@@ -643,7 +646,7 @@ def link_state_to_result(state: State, result: Any) -> None:
|
|
643
646
|
):
|
644
647
|
state.state_details.untrackable_result = True
|
645
648
|
return
|
646
|
-
flow_run_context.task_run_results[id(obj)] =
|
649
|
+
flow_run_context.task_run_results[id(obj)] = linked_state
|
647
650
|
|
648
651
|
if flow_run_context:
|
649
652
|
visit_collection(expr=result, visit_fn=link_if_trackable, max_depth=1)
|
prefect/workers/base.py
CHANGED
@@ -19,11 +19,6 @@ from prefect.client.orchestration import PrefectClient, get_client
|
|
19
19
|
from prefect.client.schemas.actions import WorkPoolCreate, WorkPoolUpdate
|
20
20
|
from prefect.client.schemas.objects import StateType, WorkPool
|
21
21
|
from prefect.client.utilities import inject_client
|
22
|
-
from prefect.concurrency.asyncio import (
|
23
|
-
AcquireConcurrencySlotTimeoutError,
|
24
|
-
ConcurrencySlotAcquisitionError,
|
25
|
-
concurrency,
|
26
|
-
)
|
27
22
|
from prefect.events import Event, RelatedResource, emit_event
|
28
23
|
from prefect.events.related import object_as_related_resource, tags_as_related_resources
|
29
24
|
from prefect.exceptions import (
|
@@ -41,12 +36,10 @@ from prefect.settings import (
|
|
41
36
|
get_current_settings,
|
42
37
|
)
|
43
38
|
from prefect.states import (
|
44
|
-
AwaitingConcurrencySlot,
|
45
39
|
Crashed,
|
46
40
|
Pending,
|
47
41
|
exception_to_failed_state,
|
48
42
|
)
|
49
|
-
from prefect.utilities.asyncutils import asyncnullcontext
|
50
43
|
from prefect.utilities.dispatch import get_registry_for_type, register_base_type
|
51
44
|
from prefect.utilities.engine import propose_state
|
52
45
|
from prefect.utilities.services import critical_service_loop
|
@@ -221,7 +214,7 @@ class BaseJobConfiguration(BaseModel):
|
|
221
214
|
env = {
|
222
215
|
**self._base_environment(),
|
223
216
|
**self._base_flow_run_environment(flow_run),
|
224
|
-
**self.env,
|
217
|
+
**(self.env if isinstance(self.env, dict) else {}),
|
225
218
|
}
|
226
219
|
self.env = {key: value for key, value in env.items() if value is not None}
|
227
220
|
self.labels = {
|
@@ -865,48 +858,15 @@ class BaseWorker(abc.ABC):
|
|
865
858
|
self, flow_run: "FlowRun", task_status: Optional[anyio.abc.TaskStatus] = None
|
866
859
|
) -> Union[BaseWorkerResult, Exception]:
|
867
860
|
run_logger = self.get_flow_run_logger(flow_run)
|
868
|
-
deployment = None
|
869
|
-
|
870
|
-
if flow_run.deployment_id:
|
871
|
-
deployment = await self._client.read_deployment(flow_run.deployment_id)
|
872
|
-
if deployment and deployment.concurrency_limit:
|
873
|
-
limit_name = f"deployment:{deployment.id}"
|
874
|
-
concurrency_ctx = concurrency
|
875
|
-
|
876
|
-
# ensure that the global concurrency limit is available
|
877
|
-
# and up-to-date before attempting to acquire a slot
|
878
|
-
await self._client.upsert_global_concurrency_limit_by_name(
|
879
|
-
limit_name, deployment.concurrency_limit
|
880
|
-
)
|
881
|
-
else:
|
882
|
-
limit_name = ""
|
883
|
-
concurrency_ctx = asyncnullcontext
|
884
861
|
|
885
862
|
try:
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
configuration=configuration,
|
893
|
-
)
|
894
|
-
except (
|
895
|
-
AcquireConcurrencySlotTimeoutError,
|
896
|
-
ConcurrencySlotAcquisitionError,
|
897
|
-
) as exc:
|
898
|
-
self._logger.info(
|
899
|
-
(
|
900
|
-
"Deployment %s has reached its concurrency limit when submitting flow run %s"
|
901
|
-
),
|
902
|
-
flow_run.deployment_id,
|
903
|
-
flow_run.name,
|
863
|
+
configuration = await self._get_configuration(flow_run)
|
864
|
+
submitted_event = self._emit_flow_run_submitted_event(configuration)
|
865
|
+
result = await self.run(
|
866
|
+
flow_run=flow_run,
|
867
|
+
task_status=task_status,
|
868
|
+
configuration=configuration,
|
904
869
|
)
|
905
|
-
await self._propose_scheduled_state(flow_run)
|
906
|
-
|
907
|
-
if not task_status._future.done():
|
908
|
-
task_status.started(exc)
|
909
|
-
return exc
|
910
870
|
except Exception as exc:
|
911
871
|
if not task_status._future.done():
|
912
872
|
# This flow run was being submitted and did not start successfully
|
@@ -1032,21 +992,6 @@ class BaseWorker(abc.ABC):
|
|
1032
992
|
|
1033
993
|
return True
|
1034
994
|
|
1035
|
-
async def _propose_scheduled_state(self, flow_run: "FlowRun") -> None:
|
1036
|
-
run_logger = self.get_flow_run_logger(flow_run)
|
1037
|
-
try:
|
1038
|
-
state = await propose_state(
|
1039
|
-
self._client,
|
1040
|
-
AwaitingConcurrencySlot(),
|
1041
|
-
flow_run_id=flow_run.id,
|
1042
|
-
)
|
1043
|
-
self._logger.info(f"Flow run {flow_run.id} now has state {state.name}")
|
1044
|
-
except Abort:
|
1045
|
-
# Flow run already marked as failed
|
1046
|
-
pass
|
1047
|
-
except Exception:
|
1048
|
-
run_logger.exception(f"Failed to update state of flow run '{flow_run.id}'")
|
1049
|
-
|
1050
995
|
async def _propose_failed_state(self, flow_run: "FlowRun", exc: Exception) -> None:
|
1051
996
|
run_logger = self.get_flow_run_logger(flow_run)
|
1052
997
|
try:
|
@@ -4,35 +4,35 @@ prefect/_version.py,sha256=I9JsXwt7BjAAbMEZgtmE3a6dJ2jqV-wqWto9D6msb3k,24597
|
|
4
4
|
prefect/agent.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
|
5
5
|
prefect/artifacts.py,sha256=dsxFWmdg2r9zbHM3KgKOR5YbJ29_dXUYF9kipJpbxkE,13009
|
6
6
|
prefect/automations.py,sha256=NlQ62GPJzy-gnWQqX7c6CQJKw7p60WLGDAFcy82vtg4,5613
|
7
|
-
prefect/cache_policies.py,sha256=
|
8
|
-
prefect/context.py,sha256=
|
7
|
+
prefect/cache_policies.py,sha256=thYNj0CcJjM4TJQvXsLKTIQl7t0qjEnSWzxPWPONcRw,9118
|
8
|
+
prefect/context.py,sha256=J4GS70ZG_dkJ2v_dQWkdbuiN88iumFpoJhTu3hg7d60,21821
|
9
9
|
prefect/engine.py,sha256=BpmDbe6miZcTl1vRkxfCPYcWSXADLigGPCagFwucMz0,1976
|
10
10
|
prefect/exceptions.py,sha256=ondjUe0fIXXjhoFnqg8twqgLoPMR02HuQv5Az-kSG50,11348
|
11
|
-
prefect/filesystems.py,sha256=
|
11
|
+
prefect/filesystems.py,sha256=CxwMmKY8LBUed_9IqE2jUqxVCWhXa1r2fjKgLbIC2Vg,17893
|
12
12
|
prefect/flow_engine.py,sha256=Z6xOO1ONAGwVNcvyvEIkJv_LB0VE5iBptV4ZWgTFqbc,30000
|
13
13
|
prefect/flow_runs.py,sha256=EaXRIQTOnwnA0fO7_EjwafFRmS57K_CRy0Xsz3JDIhc,16070
|
14
|
-
prefect/flows.py,sha256=
|
14
|
+
prefect/flows.py,sha256=zgTnzasA8a1PiOGRRSUB1P2kIz5kNgaKMkPEI81TXcQ,89588
|
15
15
|
prefect/futures.py,sha256=1Uq-Q3ommCHSku_lsASuP1s3yFuYoL980fGcHdCFg30,16298
|
16
16
|
prefect/main.py,sha256=IdtnJR5-IwP8EZsfhMFKj92ylMhNyau9X_eMcTP2ZjM,2336
|
17
|
-
prefect/plugins.py,sha256=
|
17
|
+
prefect/plugins.py,sha256=HY7Z7OJlltqzsUiPMEL1Y_hQbHw0CeZKayWiK-k8DP4,2435
|
18
18
|
prefect/profiles.toml,sha256=kTvqDNMzjH3fsm5OEI-NKY4dMmipor5EvQXRB6rPEjY,522
|
19
19
|
prefect/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
-
prefect/results.py,sha256=
|
20
|
+
prefect/results.py,sha256=dHaS_sHHi9CcHk5DmwONey2OQnVJkj7cLqoYmHaUB58,47377
|
21
21
|
prefect/serializers.py,sha256=Lo41EM0_qGzcfB_63390Izeo3DdK6cY6VZfxa9hpSGQ,8712
|
22
|
-
prefect/settings.py,sha256=
|
22
|
+
prefect/settings.py,sha256=9T_JY0VIpnFly_BtDDihPT9ppukUQrOdUkqwEtJQa60,73501
|
23
23
|
prefect/states.py,sha256=2lysq6X5AvqPfE3eD3D0HYt-KpFA2OUgA0c4ZQ22A_U,24906
|
24
|
-
prefect/task_engine.py,sha256=
|
24
|
+
prefect/task_engine.py,sha256=rcCPPrX01CxiOPhnf_7WcN0wGHbmB5VV7_OG7PKYOrY,57943
|
25
25
|
prefect/task_runners.py,sha256=W1n0yMwbDIqnvffFVJADo9MGEbLaYkzWk52rqgnkMY4,15019
|
26
26
|
prefect/task_runs.py,sha256=jkaQOkRKOHS8fgHUijteriFpjMSKv4zldn1D8tZHkUI,8777
|
27
27
|
prefect/task_worker.py,sha256=a8Uw78Ms4p3ikt_la50lENmPLIa-jjbuvunvjVXvRKQ,16785
|
28
28
|
prefect/tasks.py,sha256=35eOv7VfhziiC3hL9FxB3spYtG6tpxZBLzk5KP_8Ux8,68371
|
29
|
-
prefect/transactions.py,sha256=
|
29
|
+
prefect/transactions.py,sha256=oJKP4w5KjV1PSmN-ByyHN3bagSiKiTKvMVtLvAAfpAg,16387
|
30
30
|
prefect/variables.py,sha256=023cfSj_ydwvz6lyChRKnjHFfkdoYZKK_zdTtuSxrYo,4665
|
31
31
|
prefect/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
32
|
prefect/_internal/_logging.py,sha256=HvNHY-8P469o5u4LYEDBTem69XZEt1QUeUaLToijpak,810
|
33
33
|
prefect/_internal/integrations.py,sha256=U4cZMDbnilzZSKaMxvzZcSL27a1tzRMjDoTfr2ul_eY,231
|
34
34
|
prefect/_internal/pytz.py,sha256=WWl9x16rKFWequGmcOGs_ljpCDPf2LDHMyZp_4D8e6c,13748
|
35
|
-
prefect/_internal/retries.py,sha256=
|
35
|
+
prefect/_internal/retries.py,sha256=xtgj6oPSvYQLbyk451LR6swcRQvRVWEzCxY6GMK7qA4,2284
|
36
36
|
prefect/_internal/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
37
|
prefect/_internal/compatibility/deprecated.py,sha256=PVME2C3Oe4_8tKIGufx1W4EpGkz5IQY8gFohPVOjNcM,7533
|
38
38
|
prefect/_internal/compatibility/experimental.py,sha256=nrIeeAe1vZ0yMb1cPw5AroVR6_msx-bzTeBLzY4au6o,5634
|
@@ -58,28 +58,28 @@ prefect/_internal/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
58
58
|
prefect/_internal/schemas/bases.py,sha256=L8Lm93Cjfxv6QNu-RXjg59wm6oy97aGRb4niXiha2n4,4124
|
59
59
|
prefect/_internal/schemas/fields.py,sha256=m4LrFNz8rA9uBhMk9VyQT6FIXmV_EVAW92hdXeSvHbY,837
|
60
60
|
prefect/_internal/schemas/serializers.py,sha256=G_RGHfObjisUiRvd29p-zc6W4bwt5rE1OdR6TXNrRhQ,825
|
61
|
-
prefect/_internal/schemas/validators.py,sha256=
|
61
|
+
prefect/_internal/schemas/validators.py,sha256=L_NyWhmO76DRTprxXla_FAo3QoGfdbM7uQsVe3gKp4g,26551
|
62
62
|
prefect/blocks/__init__.py,sha256=BUfh6gIwA6HEjRyVCAiv0he3M1zfM-oY-JrlBfeWeY8,182
|
63
63
|
prefect/blocks/abstract.py,sha256=YLzCaf3yXv6wFCF5ZqCIHJNwH7fME1rLxC-SijARHzk,16319
|
64
|
-
prefect/blocks/core.py,sha256=
|
64
|
+
prefect/blocks/core.py,sha256=l_56oggt9uJOABHus-NCXLQ4akeY4kzyDUO37ZyosX0,52783
|
65
65
|
prefect/blocks/fields.py,sha256=1m507VVmkpOnMF_7N-qboRjtw4_ceIuDneX3jZ3Jm54,63
|
66
66
|
prefect/blocks/notifications.py,sha256=NEQqFobAOYWmvqbs6wPGHklrHPocJQSEsJow_CczwqE,29794
|
67
67
|
prefect/blocks/redis.py,sha256=GUKYyx2QLtyNvgf5FT_dJxbgQcOzWCja3I23J1-AXhM,5629
|
68
68
|
prefect/blocks/system.py,sha256=OacB-LLXaNiLY49bPx7aAjmvdEdBxNoaOdzsCUcDr2c,4563
|
69
|
-
prefect/blocks/webhook.py,sha256=
|
69
|
+
prefect/blocks/webhook.py,sha256=F0u1WSO17Gda8qwr9gYaA84Nfc8Qkic6HhhJMYXRzug,2496
|
70
70
|
prefect/client/__init__.py,sha256=fFtCXsGIsBCsAMFKlUPgRVUoIeqq_CsGtFE1knhbHlU,593
|
71
71
|
prefect/client/base.py,sha256=2K8UiWzorZNNM4c8c-OiGeZ5i5ViUfZ_Q31oPobbOO0,24956
|
72
|
-
prefect/client/cloud.py,sha256=
|
72
|
+
prefect/client/cloud.py,sha256=Wjm27jUG1K8UHb8sIamOqyAGlM26Oe9_OFpCO6x5s2E,6191
|
73
73
|
prefect/client/collections.py,sha256=u-96saqu0RALAazRI0YaZCJahnuafMppY21KN6ggx80,1059
|
74
74
|
prefect/client/constants.py,sha256=Z_GG8KF70vbbXxpJuqW5pLnwzujTVeHbcYYRikNmGH0,29
|
75
|
-
prefect/client/orchestration.py,sha256=
|
76
|
-
prefect/client/subscriptions.py,sha256=
|
75
|
+
prefect/client/orchestration.py,sha256=XImn-8TKOYJ8LBAZ83FEC4DOf0RP6WE9BeLpDXfYX4A,149371
|
76
|
+
prefect/client/subscriptions.py,sha256=oqF2MJsgN3psJg-MePfvwMtEWjromfP9StWF00xc1eg,3403
|
77
77
|
prefect/client/utilities.py,sha256=89fmza0cRMOayxgXRdO51TKb11TczJ0ByOZmcZVrt44,3286
|
78
78
|
prefect/client/schemas/__init__.py,sha256=KlyqFV-hMulMkNstBn_0ijoHoIwJZaBj6B1r07UmgvE,607
|
79
|
-
prefect/client/schemas/actions.py,sha256=
|
80
|
-
prefect/client/schemas/filters.py,sha256=
|
81
|
-
prefect/client/schemas/objects.py,sha256=
|
82
|
-
prefect/client/schemas/responses.py,sha256=
|
79
|
+
prefect/client/schemas/actions.py,sha256=GT1VlvwV5koV690H7ViGFH3tpW7_PvDf0QJoYTcOLDg,28862
|
80
|
+
prefect/client/schemas/filters.py,sha256=oYUBj59SC6keYHaQ8-qFaVynEAcHV8BABrQaob2mI6c,35864
|
81
|
+
prefect/client/schemas/objects.py,sha256=zJGTbmFYiAORxJ3PB4EcRkOIVcQlxH4O91aOtjKBkyU,56149
|
82
|
+
prefect/client/schemas/responses.py,sha256=tV06W8npA8oCjV9d0ZNvjro4QcbHxayb8PC4LmanXjo,15467
|
83
83
|
prefect/client/schemas/schedules.py,sha256=8rpqjOYtknu2-1n5_WD4cOplgu93P3mCyX86B22LfL4,13070
|
84
84
|
prefect/client/schemas/sorting.py,sha256=L-2Mx-igZPtsUoRUguTcG3nIEstMEMPD97NwPM2Ox5s,2579
|
85
85
|
prefect/client/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -97,10 +97,10 @@ prefect/concurrency/v1/events.py,sha256=PhW3iV5z-ez97LBHnte4joHMVPYaZJNRJkNXsZlb
|
|
97
97
|
prefect/concurrency/v1/services.py,sha256=5IwRepJ4IMC0y-PmqXiDr5rR4wl3BuHbP6Tg6C3rrQg,4426
|
98
98
|
prefect/concurrency/v1/sync.py,sha256=qKE0YzNbrmYooTwP7pz4m1BUz61THCUIF45_PE5IyYg,2375
|
99
99
|
prefect/deployments/__init__.py,sha256=_wb7NxDKhq11z9MjYsPckmT3o6MRhGLRgCV9TmvYtew,1002
|
100
|
-
prefect/deployments/base.py,sha256=
|
100
|
+
prefect/deployments/base.py,sha256=OyaKZ1Uk16XtvABh5byO6I3jp_1FYG301ryjDq00qJE,16688
|
101
101
|
prefect/deployments/deployments.py,sha256=EvC9qBdvJRc8CHJqRjFTqtzx75SE8bpZOl5C-2eULyA,109
|
102
102
|
prefect/deployments/flow_runs.py,sha256=tH6lpEkgHhQ5Ipr0bhVAjN6AeOoDwY7UKrkbJihJ6D0,6567
|
103
|
-
prefect/deployments/runner.py,sha256=
|
103
|
+
prefect/deployments/runner.py,sha256=b7jD1DHL7y2jeBXgdBfSsnBMJPHShs4Tt1c5jAeG5Dk,41823
|
104
104
|
prefect/deployments/schedules.py,sha256=KCYA6dOmLAoElHZuoWqdJn4Yno4TtOZtXfPOpTLb1cE,2046
|
105
105
|
prefect/deployments/steps/__init__.py,sha256=Dlz9VqMRyG1Gal8dj8vfGpPr0LyQhZdvcciozkK8WoY,206
|
106
106
|
prefect/deployments/steps/core.py,sha256=5vFf6BSpu992kkaYsvcPpsz-nZxFmayMIDmY9h0Hb8M,6846
|
@@ -110,7 +110,7 @@ prefect/docker/__init__.py,sha256=jumlacz2HY9l1ee0L9_kE0PFi9NO3l3pWINm9T5N9hs,52
|
|
110
110
|
prefect/docker/docker_image.py,sha256=Y84_ooCYA9NGl6FElJul9-FaW3teT-eia2SiNtZ1LG8,2999
|
111
111
|
prefect/events/__init__.py,sha256=GtKl2bE--pJduTxelH2xy7SadlLJmmis8WR1EYixhuA,2094
|
112
112
|
prefect/events/actions.py,sha256=A7jS8bo4zWGnrt3QfSoQs0uYC1xfKXio3IfU0XtTb5s,9129
|
113
|
-
prefect/events/clients.py,sha256=
|
113
|
+
prefect/events/clients.py,sha256=fCR64VROlbMfVY5WL7Dy_1UroBKYrKNltll2sIiD8Ek,23028
|
114
114
|
prefect/events/filters.py,sha256=IJ1TF-TCC7Wk2nJsbYW-HyAANToDQ6z1MdD63qE-lfw,8186
|
115
115
|
prefect/events/related.py,sha256=TQPYIPJI_vZlZgZgq3YpsGCmFleiZCMDtn_jMrYBJRg,6537
|
116
116
|
prefect/events/utilities.py,sha256=ajIAiNFTN5Bz57IEq-o-i1BJdUi7P2oYH_6GyQjCKs8,2635
|
@@ -133,7 +133,7 @@ prefect/input/__init__.py,sha256=Ue2h-YhYP71nEtsVJaslqMwO6C0ckjhjTYwwEgp-E3g,701
|
|
133
133
|
prefect/input/actions.py,sha256=IGdWjVcesnRjLmPCzB4ZM7FkRWXDKCku6yhE-7p0vKk,3777
|
134
134
|
prefect/input/run_input.py,sha256=2wG-0L3N0spwh61Z3xI0PM8AAjHEIQZcDN703Er_gLo,18728
|
135
135
|
prefect/locking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
136
|
-
prefect/locking/filesystem.py,sha256=
|
136
|
+
prefect/locking/filesystem.py,sha256=GiZlLLj51cLH6QQgq7IeU6jUK6vGi0wMnOG0zaO95-c,8025
|
137
137
|
prefect/locking/memory.py,sha256=Y1fsMSUAk3jUILzRivbxlrE9Xv8OcVbaylVf-aiEGNc,7495
|
138
138
|
prefect/locking/protocol.py,sha256=o5-48SxvEDAdVwW8RIn7rCN32CmvIsaVHTztESUXuHU,4232
|
139
139
|
prefect/logging/__init__.py,sha256=zx9f5_dWrR4DbcTOFBpNGOPoCZ1QcPFudr7zxb2XRpA,148
|
@@ -150,7 +150,7 @@ prefect/records/filesystem.py,sha256=X-h7r5deiHH5IaaDk4ugOCmR5ZKnJeU2cLgp0AkMt0E
|
|
150
150
|
prefect/records/memory.py,sha256=YdzQvEfb-CX0sKxAZK5TaNxVvAlyYlZse9qdoer6Xbk,6447
|
151
151
|
prefect/records/result_store.py,sha256=3ZUFNHCCv_qBQhmIFdvlK_GMnPZcFacaI9dVdDKWdwA,2431
|
152
152
|
prefect/runner/__init__.py,sha256=7U-vAOXFkzMfRz1q8Uv6Otsvc0OrPYLLP44srwkJ_8s,89
|
153
|
-
prefect/runner/runner.py,sha256=
|
153
|
+
prefect/runner/runner.py,sha256=G9OfJRRGLaerUAF7Gt1WUwGsdiFIiLLs8t9CXDCiw48,48672
|
154
154
|
prefect/runner/server.py,sha256=2o5vhrL7Zbn-HBStWhCjqqViex5Ye9GiQ1EW9RSEzdo,10500
|
155
155
|
prefect/runner/storage.py,sha256=OsBa4nWdFxOTiAMNLFpexBdi5K3iuxidQx4YWZwditE,24734
|
156
156
|
prefect/runner/submit.py,sha256=RuyDr-ved9wjYYarXiehY5oJVFf_HE3XKKACNWpxpPc,8131
|
@@ -165,14 +165,14 @@ prefect/types/__init__.py,sha256=SAHJDtWEGidTKXQACJ38nj6fq8r57Gj0Pwo4Gy7pVWs,223
|
|
165
165
|
prefect/types/entrypoint.py,sha256=2FF03-wLPgtnqR_bKJDB2BsXXINPdu8ptY9ZYEZnXg8,328
|
166
166
|
prefect/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
167
167
|
prefect/utilities/annotations.py,sha256=Ocj2s5zhnGr8uXUBnOli-OrybXVJdu4-uZvCRpKpV_Q,2820
|
168
|
-
prefect/utilities/asyncutils.py,sha256=
|
168
|
+
prefect/utilities/asyncutils.py,sha256=jWj2bMx2yLOd2QTouMOQFOtqy2DLnfefJNlujbMZZYU,20198
|
169
169
|
prefect/utilities/callables.py,sha256=53yqDgkx7Zb_uS4v1_ltrPrvdqjwkHvqK8A0E958dFk,24859
|
170
|
-
prefect/utilities/collections.py,sha256=
|
170
|
+
prefect/utilities/collections.py,sha256=_YVHZfT49phrXq7aDUmn4pqWwEtJQTPy2nJD0M1sz0o,17264
|
171
171
|
prefect/utilities/compat.py,sha256=mNQZDnzyKaOqy-OV-DnmH_dc7CNF5nQgW_EsA4xMr7g,906
|
172
172
|
prefect/utilities/context.py,sha256=BThuUW94-IYgFYTeMIM9KMo8ShT3oiI7w5ajZHzU1j0,1377
|
173
173
|
prefect/utilities/dispatch.py,sha256=EthEmyRwv-4W8z2BJclrsOQHJ_pJoZYL0t2cyYPEa-E,6098
|
174
174
|
prefect/utilities/dockerutils.py,sha256=kRozGQ7JO6Uxl-ljWtDryzxhf96rHL78aHYDh255Em4,20324
|
175
|
-
prefect/utilities/engine.py,sha256=
|
175
|
+
prefect/utilities/engine.py,sha256=KaGtKWNZ-EaSTTppL7zpqWWjDLpMcPTVK0Gfd4zXpRM,32087
|
176
176
|
prefect/utilities/filesystem.py,sha256=frAyy6qOeYa7c-jVbEUGZQEe6J1yF8I_SvUepPd59gI,4415
|
177
177
|
prefect/utilities/hashing.py,sha256=EOwZLmoIZImuSTxAvVqInabxJ-4RpEfYeg9e2EDQF8o,1752
|
178
178
|
prefect/utilities/importtools.py,sha256=aO-xhf2h2KzsLGvSKwRAZLB4ITeW9rsV0Ys-gwq3i7o,19426
|
@@ -192,14 +192,14 @@ prefect/utilities/schema_tools/__init__.py,sha256=KsFsTEHQqgp89TkDpjggkgBBywoHQP
|
|
192
192
|
prefect/utilities/schema_tools/hydration.py,sha256=k12qVCdLLrK-mNo1hPCdhxM5f_N14Nj0vJdtiWYWffk,8858
|
193
193
|
prefect/utilities/schema_tools/validation.py,sha256=2GCjxwApTFwzey40ul9OkcAXrU3r-kWK__9ucMo0qbk,9744
|
194
194
|
prefect/workers/__init__.py,sha256=8dP8SLZbWYyC_l9DRTQSE3dEbDgns5DZDhxkp_NfsbQ,35
|
195
|
-
prefect/workers/base.py,sha256=
|
195
|
+
prefect/workers/base.py,sha256=ALmFjBgTh0S490x6n2Xq674dk5Xm-_AsTdNYGISfhv0,44021
|
196
196
|
prefect/workers/block.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
|
197
197
|
prefect/workers/cloud.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
|
198
198
|
prefect/workers/process.py,sha256=tcJ3fbiraLCfpVGpv8dOHwMSfVzeD_kyguUOvPuIz6I,19796
|
199
199
|
prefect/workers/server.py,sha256=lgh2FfSuaNU7b6HPxSFm8JtKvAvHsZGkiOo4y4tW1Cw,2022
|
200
200
|
prefect/workers/utilities.py,sha256=VfPfAlGtTuDj0-Kb8WlMgAuOfgXCdrGAnKMapPSBrwc,2483
|
201
|
-
prefect_client-3.0.
|
202
|
-
prefect_client-3.0.
|
203
|
-
prefect_client-3.0.
|
204
|
-
prefect_client-3.0.
|
205
|
-
prefect_client-3.0.
|
201
|
+
prefect_client-3.0.4.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
|
202
|
+
prefect_client-3.0.4.dist-info/METADATA,sha256=ylM5VSYd7hcLhlSEVyvOk4Pmp5LuAfj7Fae0wdGUB0o,7332
|
203
|
+
prefect_client-3.0.4.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
204
|
+
prefect_client-3.0.4.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
|
205
|
+
prefect_client-3.0.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|