prefect-client 3.0.0rc14__py3-none-any.whl → 3.0.0rc16__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/compatibility/deprecated.py +0 -53
- prefect/_internal/schemas/validators.py +3 -91
- prefect/client/orchestration.py +4 -47
- prefect/client/schemas/actions.py +7 -10
- prefect/client/schemas/filters.py +0 -12
- prefect/client/schemas/objects.py +0 -6
- prefect/client/schemas/responses.py +0 -7
- prefect/context.py +2 -1
- prefect/deployments/base.py +0 -9
- prefect/deployments/runner.py +1 -36
- prefect/events/clients.py +39 -56
- prefect/events/utilities.py +0 -2
- prefect/flows.py +10 -48
- prefect/futures.py +0 -5
- prefect/profiles.toml +3 -0
- prefect/runner/runner.py +0 -10
- prefect/runner/storage.py +4 -0
- prefect/runtime/flow_run.py +19 -1
- prefect/settings.py +78 -13
- prefect/task_engine.py +60 -58
- prefect/task_worker.py +4 -1
- prefect/tasks.py +9 -5
- prefect/transactions.py +30 -3
- prefect/utilities/asyncutils.py +0 -6
- prefect/utilities/engine.py +3 -0
- {prefect_client-3.0.0rc14.dist-info → prefect_client-3.0.0rc16.dist-info}/METADATA +39 -40
- {prefect_client-3.0.0rc14.dist-info → prefect_client-3.0.0rc16.dist-info}/RECORD +30 -30
- {prefect_client-3.0.0rc14.dist-info → prefect_client-3.0.0rc16.dist-info}/WHEEL +1 -1
- {prefect_client-3.0.0rc14.dist-info → prefect_client-3.0.0rc16.dist-info}/LICENSE +0 -0
- {prefect_client-3.0.0rc14.dist-info → prefect_client-3.0.0rc16.dist-info}/top_level.txt +0 -0
prefect/task_engine.py
CHANGED
@@ -5,7 +5,6 @@ import time
|
|
5
5
|
from asyncio import CancelledError
|
6
6
|
from contextlib import ExitStack, asynccontextmanager, contextmanager
|
7
7
|
from dataclasses import dataclass, field
|
8
|
-
from functools import wraps
|
9
8
|
from textwrap import dedent
|
10
9
|
from typing import (
|
11
10
|
Any,
|
@@ -231,11 +230,11 @@ class BaseTaskRunEngine(Generic[P, R]):
|
|
231
230
|
|
232
231
|
@task
|
233
232
|
def say_hello(name):
|
234
|
-
print
|
233
|
+
print(f"Hello, {name}!")
|
235
234
|
|
236
235
|
@flow
|
237
236
|
def example_flow():
|
238
|
-
future = say_hello.submit(name="Marvin)
|
237
|
+
future = say_hello.submit(name="Marvin")
|
239
238
|
future.wait()
|
240
239
|
|
241
240
|
example_flow()
|
@@ -409,6 +408,22 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
409
408
|
self.task_run.state_id = new_state.id
|
410
409
|
self.task_run.state_type = new_state.type
|
411
410
|
self.task_run.state_name = new_state.name
|
411
|
+
|
412
|
+
if new_state.is_final():
|
413
|
+
if (
|
414
|
+
isinstance(state.data, BaseResult)
|
415
|
+
and state.data.has_cached_object()
|
416
|
+
):
|
417
|
+
# Avoid fetching the result unless it is cached, otherwise we defeat
|
418
|
+
# the purpose of disabling `cache_result_in_memory`
|
419
|
+
result = state.result(raise_on_failure=False, fetch=True)
|
420
|
+
if inspect.isawaitable(result):
|
421
|
+
result = run_coro_as_sync(result)
|
422
|
+
else:
|
423
|
+
result = state.data
|
424
|
+
|
425
|
+
link_state_to_result(state, result)
|
426
|
+
|
412
427
|
else:
|
413
428
|
try:
|
414
429
|
new_state = propose_state_sync(
|
@@ -480,15 +495,8 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
480
495
|
)
|
481
496
|
transaction.stage(
|
482
497
|
terminal_state.data,
|
483
|
-
on_rollback_hooks=[self.handle_rollback]
|
484
|
-
|
485
|
-
_with_transaction_hook_logging(hook, "rollback", self.logger)
|
486
|
-
for hook in self.task.on_rollback_hooks
|
487
|
-
],
|
488
|
-
on_commit_hooks=[
|
489
|
-
_with_transaction_hook_logging(hook, "commit", self.logger)
|
490
|
-
for hook in self.task.on_commit_hooks
|
491
|
-
],
|
498
|
+
on_rollback_hooks=[self.handle_rollback] + self.task.on_rollback_hooks,
|
499
|
+
on_commit_hooks=self.task.on_commit_hooks,
|
492
500
|
)
|
493
501
|
if transaction.is_committed():
|
494
502
|
terminal_state.name = "Cached"
|
@@ -674,6 +682,12 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
674
682
|
task_run_name=task_run_name,
|
675
683
|
)
|
676
684
|
)
|
685
|
+
# Emit an event to capture that the task run was in the `PENDING` state.
|
686
|
+
self._last_event = emit_task_run_state_change_event(
|
687
|
+
task_run=self.task_run,
|
688
|
+
initial_state=None,
|
689
|
+
validated_state=self.task_run.state,
|
690
|
+
)
|
677
691
|
else:
|
678
692
|
if not self.task_run:
|
679
693
|
self.task_run = run_coro_as_sync(
|
@@ -686,12 +700,12 @@ class SyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
686
700
|
extra_task_inputs=dependencies,
|
687
701
|
)
|
688
702
|
)
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
703
|
+
# Emit an event to capture that the task run was in the `PENDING` state.
|
704
|
+
self._last_event = emit_task_run_state_change_event(
|
705
|
+
task_run=self.task_run,
|
706
|
+
initial_state=None,
|
707
|
+
validated_state=self.task_run.state,
|
708
|
+
)
|
695
709
|
|
696
710
|
with self.setup_run_context():
|
697
711
|
# setup_run_context might update the task run name, so log creation here
|
@@ -966,6 +980,20 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
966
980
|
self.task_run.state_id = new_state.id
|
967
981
|
self.task_run.state_type = new_state.type
|
968
982
|
self.task_run.state_name = new_state.name
|
983
|
+
|
984
|
+
if new_state.is_final():
|
985
|
+
if (
|
986
|
+
isinstance(new_state.data, BaseResult)
|
987
|
+
and new_state.data.has_cached_object()
|
988
|
+
):
|
989
|
+
# Avoid fetching the result unless it is cached, otherwise we defeat
|
990
|
+
# the purpose of disabling `cache_result_in_memory`
|
991
|
+
result = await new_state.result(raise_on_failure=False, fetch=True)
|
992
|
+
else:
|
993
|
+
result = new_state.data
|
994
|
+
|
995
|
+
link_state_to_result(new_state, result)
|
996
|
+
|
969
997
|
else:
|
970
998
|
try:
|
971
999
|
new_state = await propose_state(
|
@@ -1032,15 +1060,8 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
1032
1060
|
)
|
1033
1061
|
transaction.stage(
|
1034
1062
|
terminal_state.data,
|
1035
|
-
on_rollback_hooks=[self.handle_rollback]
|
1036
|
-
|
1037
|
-
_with_transaction_hook_logging(hook, "rollback", self.logger)
|
1038
|
-
for hook in self.task.on_rollback_hooks
|
1039
|
-
],
|
1040
|
-
on_commit_hooks=[
|
1041
|
-
_with_transaction_hook_logging(hook, "commit", self.logger)
|
1042
|
-
for hook in self.task.on_commit_hooks
|
1043
|
-
],
|
1063
|
+
on_rollback_hooks=[self.handle_rollback] + self.task.on_rollback_hooks,
|
1064
|
+
on_commit_hooks=self.task.on_commit_hooks,
|
1044
1065
|
)
|
1045
1066
|
if transaction.is_committed():
|
1046
1067
|
terminal_state.name = "Cached"
|
@@ -1222,6 +1243,12 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
1222
1243
|
extra_task_inputs=dependencies,
|
1223
1244
|
task_run_name=task_run_name,
|
1224
1245
|
)
|
1246
|
+
# Emit an event to capture that the task run was in the `PENDING` state.
|
1247
|
+
self._last_event = emit_task_run_state_change_event(
|
1248
|
+
task_run=self.task_run,
|
1249
|
+
initial_state=None,
|
1250
|
+
validated_state=self.task_run.state,
|
1251
|
+
)
|
1225
1252
|
else:
|
1226
1253
|
if not self.task_run:
|
1227
1254
|
self.task_run = await self.task.create_run(
|
@@ -1232,12 +1259,12 @@ class AsyncTaskRunEngine(BaseTaskRunEngine[P, R]):
|
|
1232
1259
|
wait_for=self.wait_for,
|
1233
1260
|
extra_task_inputs=dependencies,
|
1234
1261
|
)
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1262
|
+
# Emit an event to capture that the task run was in the `PENDING` state.
|
1263
|
+
self._last_event = emit_task_run_state_change_event(
|
1264
|
+
task_run=self.task_run,
|
1265
|
+
initial_state=None,
|
1266
|
+
validated_state=self.task_run.state,
|
1267
|
+
)
|
1241
1268
|
|
1242
1269
|
async with self.setup_run_context():
|
1243
1270
|
# setup_run_context might update the task run name, so log creation here
|
@@ -1580,28 +1607,3 @@ def run_task(
|
|
1580
1607
|
return run_task_async(**kwargs)
|
1581
1608
|
else:
|
1582
1609
|
return run_task_sync(**kwargs)
|
1583
|
-
|
1584
|
-
|
1585
|
-
def _with_transaction_hook_logging(
|
1586
|
-
hook: Callable[[Transaction], None],
|
1587
|
-
hook_type: Literal["rollback", "commit"],
|
1588
|
-
logger: logging.Logger,
|
1589
|
-
) -> Callable[[Transaction], None]:
|
1590
|
-
@wraps(hook)
|
1591
|
-
def _hook(txn: Transaction) -> None:
|
1592
|
-
hook_name = _get_hook_name(hook)
|
1593
|
-
logger.info(f"Running {hook_type} hook {hook_name!r}")
|
1594
|
-
|
1595
|
-
try:
|
1596
|
-
hook(txn)
|
1597
|
-
except Exception as exc:
|
1598
|
-
logger.error(
|
1599
|
-
f"An error was encountered while running {hook_type} hook {hook_name!r}",
|
1600
|
-
)
|
1601
|
-
raise exc
|
1602
|
-
else:
|
1603
|
-
logger.info(
|
1604
|
-
f"{hook_type.capitalize()} hook {hook_name!r} finished running successfully"
|
1605
|
-
)
|
1606
|
-
|
1607
|
-
return _hook
|
prefect/task_worker.py
CHANGED
@@ -293,12 +293,15 @@ class TaskWorker:
|
|
293
293
|
await self._client._client.delete(f"/task_runs/{task_run.id}")
|
294
294
|
return
|
295
295
|
|
296
|
+
initial_state = task_run.state
|
297
|
+
|
296
298
|
if PREFECT_EXPERIMENTAL_ENABLE_CLIENT_SIDE_TASK_ORCHESTRATION:
|
297
299
|
new_state = Pending()
|
298
300
|
new_state.state_details.deferred = True
|
299
301
|
new_state.state_details.task_run_id = task_run.id
|
300
302
|
new_state.state_details.flow_run_id = task_run.flow_run_id
|
301
303
|
state = new_state
|
304
|
+
task_run.state = state
|
302
305
|
else:
|
303
306
|
try:
|
304
307
|
new_state = Pending()
|
@@ -330,7 +333,7 @@ class TaskWorker:
|
|
330
333
|
|
331
334
|
emit_task_run_state_change_event(
|
332
335
|
task_run=task_run,
|
333
|
-
initial_state=
|
336
|
+
initial_state=initial_state,
|
334
337
|
validated_state=state,
|
335
338
|
)
|
336
339
|
|
prefect/tasks.py
CHANGED
@@ -33,9 +33,6 @@ from uuid import UUID, uuid4
|
|
33
33
|
from typing_extensions import Literal, ParamSpec
|
34
34
|
|
35
35
|
import prefect.states
|
36
|
-
from prefect._internal.compatibility.deprecated import (
|
37
|
-
deprecated_async_method,
|
38
|
-
)
|
39
36
|
from prefect.cache_policies import DEFAULT, NONE, CachePolicy
|
40
37
|
from prefect.client.orchestration import get_client
|
41
38
|
from prefect.client.schemas import TaskRun
|
@@ -1038,7 +1035,6 @@ class Task(Generic[P, R]):
|
|
1038
1035
|
) -> State[T]:
|
1039
1036
|
...
|
1040
1037
|
|
1041
|
-
@deprecated_async_method
|
1042
1038
|
def submit(
|
1043
1039
|
self,
|
1044
1040
|
*args: Any,
|
@@ -1203,7 +1199,6 @@ class Task(Generic[P, R]):
|
|
1203
1199
|
) -> PrefectFutureList[State[T]]:
|
1204
1200
|
...
|
1205
1201
|
|
1206
|
-
@deprecated_async_method
|
1207
1202
|
def map(
|
1208
1203
|
self,
|
1209
1204
|
*args: Any,
|
@@ -1455,6 +1450,15 @@ class Task(Generic[P, R]):
|
|
1455
1450
|
)
|
1456
1451
|
) # type: ignore
|
1457
1452
|
|
1453
|
+
from prefect.utilities.engine import emit_task_run_state_change_event
|
1454
|
+
|
1455
|
+
# emit a `SCHEDULED` event for the task run
|
1456
|
+
emit_task_run_state_change_event(
|
1457
|
+
task_run=task_run,
|
1458
|
+
initial_state=None,
|
1459
|
+
validated_state=task_run.state,
|
1460
|
+
)
|
1461
|
+
|
1458
1462
|
if task_run_url := url_for(task_run):
|
1459
1463
|
logger.info(
|
1460
1464
|
f"Created task run {task_run.name!r}. View it in the UI at {task_run_url!r}"
|
prefect/transactions.py
CHANGED
@@ -4,6 +4,7 @@ from contextvars import ContextVar, Token
|
|
4
4
|
from typing import (
|
5
5
|
Any,
|
6
6
|
Callable,
|
7
|
+
Dict,
|
7
8
|
Generator,
|
8
9
|
List,
|
9
10
|
Optional,
|
@@ -11,7 +12,7 @@ from typing import (
|
|
11
12
|
Union,
|
12
13
|
)
|
13
14
|
|
14
|
-
from pydantic import Field
|
15
|
+
from pydantic import Field, PrivateAttr
|
15
16
|
from typing_extensions import Self
|
16
17
|
|
17
18
|
from prefect.context import ContextModel, FlowRunContext, TaskRunContext
|
@@ -26,6 +27,7 @@ from prefect.results import (
|
|
26
27
|
)
|
27
28
|
from prefect.utilities.asyncutils import run_coro_as_sync
|
28
29
|
from prefect.utilities.collections import AutoEnum
|
30
|
+
from prefect.utilities.engine import _get_hook_name
|
29
31
|
|
30
32
|
|
31
33
|
class IsolationLevel(AutoEnum):
|
@@ -63,9 +65,18 @@ class Transaction(ContextModel):
|
|
63
65
|
)
|
64
66
|
overwrite: bool = False
|
65
67
|
logger: Union[logging.Logger, logging.LoggerAdapter, None] = None
|
68
|
+
_stored_values: Dict[str, Any] = PrivateAttr(default_factory=dict)
|
66
69
|
_staged_value: Any = None
|
67
70
|
__var__: ContextVar = ContextVar("transaction")
|
68
71
|
|
72
|
+
def set(self, name: str, value: Any) -> None:
|
73
|
+
self._stored_values[name] = value
|
74
|
+
|
75
|
+
def get(self, name: str) -> Any:
|
76
|
+
if name not in self._stored_values:
|
77
|
+
raise ValueError(f"Could not retrieve value for unknown key: {name}")
|
78
|
+
return self._stored_values.get(name)
|
79
|
+
|
69
80
|
def is_committed(self) -> bool:
|
70
81
|
return self.state == TransactionState.COMMITTED
|
71
82
|
|
@@ -183,7 +194,7 @@ class Transaction(ContextModel):
|
|
183
194
|
child.commit()
|
184
195
|
|
185
196
|
for hook in self.on_commit_hooks:
|
186
|
-
hook
|
197
|
+
self.run_hook(hook, "commit")
|
187
198
|
|
188
199
|
if self.store and self.key:
|
189
200
|
self.store.write(key=self.key, value=self._staged_value)
|
@@ -198,6 +209,22 @@ class Transaction(ContextModel):
|
|
198
209
|
self.rollback()
|
199
210
|
return False
|
200
211
|
|
212
|
+
def run_hook(self, hook, hook_type: str) -> None:
|
213
|
+
hook_name = _get_hook_name(hook)
|
214
|
+
self.logger.info(f"Running {hook_type} hook {hook_name!r}")
|
215
|
+
|
216
|
+
try:
|
217
|
+
hook(self)
|
218
|
+
except Exception as exc:
|
219
|
+
self.logger.error(
|
220
|
+
f"An error was encountered while running {hook_type} hook {hook_name!r}",
|
221
|
+
)
|
222
|
+
raise exc
|
223
|
+
else:
|
224
|
+
self.logger.info(
|
225
|
+
f"{hook_type.capitalize()} hook {hook_name!r} finished running successfully"
|
226
|
+
)
|
227
|
+
|
201
228
|
def stage(
|
202
229
|
self,
|
203
230
|
value: BaseResult,
|
@@ -222,7 +249,7 @@ class Transaction(ContextModel):
|
|
222
249
|
|
223
250
|
try:
|
224
251
|
for hook in reversed(self.on_rollback_hooks):
|
225
|
-
hook
|
252
|
+
self.run_hook(hook, "rollback")
|
226
253
|
|
227
254
|
self.state = TransactionState.ROLLED_BACK
|
228
255
|
|
prefect/utilities/asyncutils.py
CHANGED
@@ -30,7 +30,6 @@ import anyio.abc
|
|
30
30
|
import anyio.from_thread
|
31
31
|
import anyio.to_thread
|
32
32
|
import sniffio
|
33
|
-
import wrapt
|
34
33
|
from typing_extensions import Literal, ParamSpec, TypeGuard
|
35
34
|
|
36
35
|
from prefect._internal.concurrency.api import _cast_to_call, from_sync
|
@@ -210,11 +209,6 @@ def run_coro_as_sync(
|
|
210
209
|
Returns:
|
211
210
|
The result of the coroutine if wait_for_result is True, otherwise None.
|
212
211
|
"""
|
213
|
-
if not asyncio.iscoroutine(coroutine):
|
214
|
-
if isinstance(coroutine, wrapt.ObjectProxy):
|
215
|
-
return coroutine.__wrapped__
|
216
|
-
else:
|
217
|
-
raise TypeError("`coroutine` must be a coroutine object")
|
218
212
|
|
219
213
|
async def coroutine_wrapper() -> Union[R, None]:
|
220
214
|
"""
|
prefect/utilities/engine.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: prefect-client
|
3
|
-
Version: 3.0.
|
3
|
+
Version: 3.0.0rc16
|
4
4
|
Summary: Workflow orchestration and management.
|
5
5
|
Home-page: https://www.prefect.io
|
6
6
|
Author: Prefect Technologies, Inc.
|
@@ -24,47 +24,46 @@ Classifier: Topic :: Software Development :: Libraries
|
|
24
24
|
Requires-Python: >=3.9
|
25
25
|
Description-Content-Type: text/markdown
|
26
26
|
License-File: LICENSE
|
27
|
-
Requires-Dist: anyio
|
28
|
-
Requires-Dist: asgi-lifespan
|
29
|
-
Requires-Dist: cachetools
|
30
|
-
Requires-Dist: cloudpickle
|
31
|
-
Requires-Dist: coolname
|
32
|
-
Requires-Dist: croniter
|
33
|
-
Requires-Dist: exceptiongroup
|
34
|
-
Requires-Dist: fastapi
|
35
|
-
Requires-Dist: fsspec
|
36
|
-
Requires-Dist: graphviz
|
37
|
-
Requires-Dist: griffe
|
38
|
-
Requires-Dist: httpcore
|
39
|
-
Requires-Dist: httpx[http2]
|
40
|
-
Requires-Dist: importlib-resources
|
41
|
-
Requires-Dist: jsonpatch
|
42
|
-
Requires-Dist: jsonschema
|
43
|
-
Requires-Dist: orjson
|
44
|
-
Requires-Dist: packaging
|
45
|
-
Requires-Dist: pathspec
|
46
|
-
Requires-Dist: pendulum
|
47
|
-
Requires-Dist: prometheus-client
|
48
|
-
Requires-Dist: pydantic
|
49
|
-
Requires-Dist: pydantic-core
|
50
|
-
Requires-Dist: pydantic-extra-types
|
27
|
+
Requires-Dist: anyio<5.0.0,>=4.4.0
|
28
|
+
Requires-Dist: asgi-lifespan<3.0,>=1.0
|
29
|
+
Requires-Dist: cachetools<6.0,>=5.3
|
30
|
+
Requires-Dist: cloudpickle<4.0,>=2.0
|
31
|
+
Requires-Dist: coolname<3.0.0,>=1.0.4
|
32
|
+
Requires-Dist: croniter<4.0.0,>=1.0.12
|
33
|
+
Requires-Dist: exceptiongroup>=1.0.0
|
34
|
+
Requires-Dist: fastapi<1.0.0,>=0.111.0
|
35
|
+
Requires-Dist: fsspec>=2022.5.0
|
36
|
+
Requires-Dist: graphviz>=0.20.1
|
37
|
+
Requires-Dist: griffe<0.48.0,>=0.20.0
|
38
|
+
Requires-Dist: httpcore<2.0.0,>=1.0.5
|
39
|
+
Requires-Dist: httpx[http2]!=0.23.2,>=0.23
|
40
|
+
Requires-Dist: importlib-resources<6.2.0,>=6.1.3
|
41
|
+
Requires-Dist: jsonpatch<2.0,>=1.32
|
42
|
+
Requires-Dist: jsonschema<5.0.0,>=4.0.0
|
43
|
+
Requires-Dist: orjson<4.0,>=3.7
|
44
|
+
Requires-Dist: packaging<24.3,>=21.3
|
45
|
+
Requires-Dist: pathspec>=0.8.0
|
46
|
+
Requires-Dist: pendulum<4,>=3.0.0
|
47
|
+
Requires-Dist: prometheus-client>=0.20.0
|
48
|
+
Requires-Dist: pydantic<3.0.0,>=2.7
|
49
|
+
Requires-Dist: pydantic-core<3.0.0,>=2.12.0
|
50
|
+
Requires-Dist: pydantic-extra-types<3.0.0,>=2.8.2
|
51
51
|
Requires-Dist: pydantic-settings
|
52
|
-
Requires-Dist: python-dateutil
|
53
|
-
Requires-Dist: python-slugify
|
54
|
-
Requires-Dist: pyyaml
|
55
|
-
Requires-Dist: rfc3339-validator
|
56
|
-
Requires-Dist: rich
|
57
|
-
Requires-Dist: ruamel.yaml
|
58
|
-
Requires-Dist: sniffio
|
59
|
-
Requires-Dist: toml
|
60
|
-
Requires-Dist: typing-extensions
|
61
|
-
Requires-Dist: ujson
|
62
|
-
Requires-Dist: uvicorn
|
63
|
-
Requires-Dist: websockets
|
64
|
-
Requires-Dist:
|
65
|
-
Requires-Dist: importlib-metadata >=4.4 ; python_version < "3.10"
|
52
|
+
Requires-Dist: python-dateutil<3.0.0,>=2.8.2
|
53
|
+
Requires-Dist: python-slugify<9.0,>=5.0
|
54
|
+
Requires-Dist: pyyaml<7.0.0,>=5.4.1
|
55
|
+
Requires-Dist: rfc3339-validator<0.2.0,>=0.1.4
|
56
|
+
Requires-Dist: rich<14.0,>=11.0
|
57
|
+
Requires-Dist: ruamel.yaml>=0.17.0
|
58
|
+
Requires-Dist: sniffio<2.0.0,>=1.3.0
|
59
|
+
Requires-Dist: toml>=0.10.0
|
60
|
+
Requires-Dist: typing-extensions<5.0.0,>=4.5.0
|
61
|
+
Requires-Dist: ujson<6.0.0,>=5.8.0
|
62
|
+
Requires-Dist: uvicorn!=0.29.0,>=0.14.0
|
63
|
+
Requires-Dist: websockets<13.0,>=10.4
|
64
|
+
Requires-Dist: importlib-metadata>=4.4; python_version < "3.10"
|
66
65
|
Provides-Extra: notifications
|
67
|
-
Requires-Dist: apprise
|
66
|
+
Requires-Dist: apprise<2.0.0,>=1.1.0; extra == "notifications"
|
68
67
|
|
69
68
|
<p align="center"><img src="https://github.com/PrefectHQ/prefect/assets/3407835/c654cbc6-63e8-4ada-a92a-efd2f8f24b85" width=1000></p>
|
70
69
|
|
@@ -5,29 +5,29 @@ prefect/agent.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
|
|
5
5
|
prefect/artifacts.py,sha256=wet3coxBtqK0914uTf-slYpXRVP0mjbZn804hXB-RS4,13011
|
6
6
|
prefect/automations.py,sha256=NlQ62GPJzy-gnWQqX7c6CQJKw7p60WLGDAFcy82vtg4,5613
|
7
7
|
prefect/cache_policies.py,sha256=uEKNGO-PJ3N35B2tjhRDtQULN6ok72D9raIoJaUyXk0,6365
|
8
|
-
prefect/context.py,sha256=
|
8
|
+
prefect/context.py,sha256=Q04o0F1zc9O9y7H0Y6po1hvyajrviYAzuQmpKdNvgbM,21859
|
9
9
|
prefect/engine.py,sha256=BpmDbe6miZcTl1vRkxfCPYcWSXADLigGPCagFwucMz0,1976
|
10
10
|
prefect/exceptions.py,sha256=3s69Z_IC3HKF6BKxcHrMPXkKdYwfbEfaTjy4-5LOtQ0,11132
|
11
11
|
prefect/filesystems.py,sha256=rbFvlqHXeeo71nK1Y5I0-ucmGOYUcdkbb6N2vpsRcWE,17229
|
12
12
|
prefect/flow_engine.py,sha256=c8mIffc57zLtHFRo4sVtQOXGihVA_y2mZiXYzjJlOHY,29445
|
13
13
|
prefect/flow_runs.py,sha256=EaXRIQTOnwnA0fO7_EjwafFRmS57K_CRy0Xsz3JDIhc,16070
|
14
|
-
prefect/flows.py,sha256=
|
15
|
-
prefect/futures.py,sha256=
|
14
|
+
prefect/flows.py,sha256=Sl3m8Q3mXwY1MSgJSeViiXag4jtUBN7stMP1Fs4iepo,88039
|
15
|
+
prefect/futures.py,sha256=Zt5U7PnNpKUQuyfAhWAZZxpG0hQ6HXuA4KVg6E9sQf8,16208
|
16
16
|
prefect/main.py,sha256=bab5nBn37a6gmxdPbTlRS2a9Cf0KY0GaCotDOSbcQ7M,1930
|
17
17
|
prefect/manifests.py,sha256=477XcmfdC_yE81wT6zIAKnEUEJ0lH9ZLfOVSgX2FohE,676
|
18
18
|
prefect/plugins.py,sha256=7AICJzHIu8iAeF9vl9wAYm28pR_k7dkdnm3OyJRfCv4,2229
|
19
|
-
prefect/profiles.toml,sha256=
|
19
|
+
prefect/profiles.toml,sha256=kTvqDNMzjH3fsm5OEI-NKY4dMmipor5EvQXRB6rPEjY,522
|
20
20
|
prefect/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
21
|
prefect/results.py,sha256=3mVkVWZn_VSQ9Pik79StNy113rB_SEiP83SdoUsFvTM,24635
|
22
22
|
prefect/serializers.py,sha256=Lo41EM0_qGzcfB_63390Izeo3DdK6cY6VZfxa9hpSGQ,8712
|
23
|
-
prefect/settings.py,sha256=
|
23
|
+
prefect/settings.py,sha256=RpO6XMM2qf6KC_rQMHmQpcjul1t2rZmLOkK89Ta3OcM,72076
|
24
24
|
prefect/states.py,sha256=lw22xucH46cN9stkxiV9ByIvq689mH5iL3gErri-Y18,22207
|
25
|
-
prefect/task_engine.py,sha256=
|
25
|
+
prefect/task_engine.py,sha256=z5raK4OLgCRp6cubrTDL0XZQsx8Z5xTFwKn2QnITGcA,64053
|
26
26
|
prefect/task_runners.py,sha256=W1n0yMwbDIqnvffFVJADo9MGEbLaYkzWk52rqgnkMY4,15019
|
27
27
|
prefect/task_runs.py,sha256=jkaQOkRKOHS8fgHUijteriFpjMSKv4zldn1D8tZHkUI,8777
|
28
|
-
prefect/task_worker.py,sha256=
|
29
|
-
prefect/tasks.py,sha256=
|
30
|
-
prefect/transactions.py,sha256=
|
28
|
+
prefect/task_worker.py,sha256=DX4NYERghB8RZeFleZE0xOq3yJVunjUaAKHtiz8wuRo,17992
|
29
|
+
prefect/tasks.py,sha256=tpYQhH4wZcOeVTOOGus0Med4prLlmMM2jSf3TKuFdUQ,68230
|
30
|
+
prefect/transactions.py,sha256=YyWuY99mBeEsY8JGR3_eyWbFIUxWIzbHfU2UMBKTaik,11038
|
31
31
|
prefect/variables.py,sha256=-t5LVY0N-K4f0fa6YwruVVQqwnU3fGWBMYXXE32XPkA,4821
|
32
32
|
prefect/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
33
|
prefect/_internal/_logging.py,sha256=HvNHY-8P469o5u4LYEDBTem69XZEt1QUeUaLToijpak,810
|
@@ -35,7 +35,7 @@ prefect/_internal/integrations.py,sha256=U4cZMDbnilzZSKaMxvzZcSL27a1tzRMjDoTfr2u
|
|
35
35
|
prefect/_internal/pytz.py,sha256=WWl9x16rKFWequGmcOGs_ljpCDPf2LDHMyZp_4D8e6c,13748
|
36
36
|
prefect/_internal/retries.py,sha256=8uuagUX32w5YANLHqjM_1hHmVe9b1HxcwuPMXb1G2Qk,2317
|
37
37
|
prefect/_internal/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
-
prefect/_internal/compatibility/deprecated.py,sha256=
|
38
|
+
prefect/_internal/compatibility/deprecated.py,sha256=nqevphK00rakKgCfkbqBQ4NCktdb4338uuROjFcq6xA,7517
|
39
39
|
prefect/_internal/compatibility/experimental.py,sha256=nrIeeAe1vZ0yMb1cPw5AroVR6_msx-bzTeBLzY4au6o,5634
|
40
40
|
prefect/_internal/compatibility/migration.py,sha256=O9HrcqxfQ-RrIklH0uGxeXMrQejPz1hmsgrw8zDLJuw,6801
|
41
41
|
prefect/_internal/concurrency/__init__.py,sha256=YlTwU9ryjPNwbJa45adLJY00t_DGCh1QrdtY9WdVFfw,2140
|
@@ -59,7 +59,7 @@ prefect/_internal/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
59
59
|
prefect/_internal/schemas/bases.py,sha256=KYT8v4UOIClOKoXLEHSzDI7jran35BHvRcYWueyMFYU,4098
|
60
60
|
prefect/_internal/schemas/fields.py,sha256=m4LrFNz8rA9uBhMk9VyQT6FIXmV_EVAW92hdXeSvHbY,837
|
61
61
|
prefect/_internal/schemas/serializers.py,sha256=G_RGHfObjisUiRvd29p-zc6W4bwt5rE1OdR6TXNrRhQ,825
|
62
|
-
prefect/_internal/schemas/validators.py,sha256=
|
62
|
+
prefect/_internal/schemas/validators.py,sha256=Y8bHb3EsLJTiHsffg_TPbknj0Nmln8vd6qySLFbfGzY,26546
|
63
63
|
prefect/blocks/__init__.py,sha256=BUfh6gIwA6HEjRyVCAiv0he3M1zfM-oY-JrlBfeWeY8,182
|
64
64
|
prefect/blocks/abstract.py,sha256=YLzCaf3yXv6wFCF5ZqCIHJNwH7fME1rLxC-SijARHzk,16319
|
65
65
|
prefect/blocks/core.py,sha256=EAvmPga9fyUfK9QW_HFLSit0dn6Szh_KbDK3n8HX4q0,52155
|
@@ -73,14 +73,14 @@ prefect/client/base.py,sha256=2K8UiWzorZNNM4c8c-OiGeZ5i5ViUfZ_Q31oPobbOO0,24956
|
|
73
73
|
prefect/client/cloud.py,sha256=7iHff1YDABdzBW5BZFlyzmwgCMWUwbgVv2zTNlqW7lw,4132
|
74
74
|
prefect/client/collections.py,sha256=I9EgbTg4Fn57gn8vwP_WdDmgnATbx9gfkm2jjhCORjw,1037
|
75
75
|
prefect/client/constants.py,sha256=Z_GG8KF70vbbXxpJuqW5pLnwzujTVeHbcYYRikNmGH0,29
|
76
|
-
prefect/client/orchestration.py,sha256=
|
76
|
+
prefect/client/orchestration.py,sha256=G3zkz3HTfy9ZMELKAi8HRqvybOhdlOsia2Vt7ElWEPQ,143316
|
77
77
|
prefect/client/subscriptions.py,sha256=J9uK9NGHO4VX4Y3NGgBJ4pIG_0cf-dJWPhF3f3PGYL4,3388
|
78
78
|
prefect/client/utilities.py,sha256=89fmza0cRMOayxgXRdO51TKb11TczJ0ByOZmcZVrt44,3286
|
79
79
|
prefect/client/schemas/__init__.py,sha256=KlyqFV-hMulMkNstBn_0ijoHoIwJZaBj6B1r07UmgvE,607
|
80
|
-
prefect/client/schemas/actions.py,sha256=
|
81
|
-
prefect/client/schemas/filters.py,sha256=
|
82
|
-
prefect/client/schemas/objects.py,sha256=
|
83
|
-
prefect/client/schemas/responses.py,sha256=
|
80
|
+
prefect/client/schemas/actions.py,sha256=i0izw0JPdlvAeEC2YEbmskr7kU0-tyzEwEtCKXMPi74,28101
|
81
|
+
prefect/client/schemas/filters.py,sha256=_Ibx8VDICS0wkqo-M8zlpOyAbkrRw8sfgqyD9_x2Vvc,34881
|
82
|
+
prefect/client/schemas/objects.py,sha256=PNxOTBwQDQ57703i6ZrV_kxYDSuJSrJ3O_42hDwOliA,53296
|
83
|
+
prefect/client/schemas/responses.py,sha256=3Y-md6uXCF7X8gcZYvvKqcu5CXqvJfkJyfocHFypp9g,14637
|
84
84
|
prefect/client/schemas/schedules.py,sha256=8rpqjOYtknu2-1n5_WD4cOplgu93P3mCyX86B22LfL4,13070
|
85
85
|
prefect/client/schemas/sorting.py,sha256=EIQ6FUjUWMwk6fn6ckVLQLXOP-GI5kce7ftjUkDFWV0,2490
|
86
86
|
prefect/client/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -92,10 +92,10 @@ prefect/concurrency/events.py,sha256=EjZwUbbtP-N-u8rk8nbyMIi-BnkshoLkHRYh913jUWU
|
|
92
92
|
prefect/concurrency/services.py,sha256=wKW9dJzzZkTcS2Wk4IsNPfMOuXle2qSz50Qk0MxrOJc,3438
|
93
93
|
prefect/concurrency/sync.py,sha256=uGomOknZ_ET_wW0LcuOJBzbcYSNcaQZqH0bh1mOkmu8,4261
|
94
94
|
prefect/deployments/__init__.py,sha256=_wb7NxDKhq11z9MjYsPckmT3o6MRhGLRgCV9TmvYtew,1002
|
95
|
-
prefect/deployments/base.py,sha256=
|
95
|
+
prefect/deployments/base.py,sha256=rEMb-AXUuO66a7Qwq0KFUI1L0Xrl_-8z7cgAKaysfwg,16136
|
96
96
|
prefect/deployments/deployments.py,sha256=EvC9qBdvJRc8CHJqRjFTqtzx75SE8bpZOl5C-2eULyA,109
|
97
97
|
prefect/deployments/flow_runs.py,sha256=eatcBD7pg-aaEqs9JxQQcKN_flf614O4gAvedAlRyNo,6803
|
98
|
-
prefect/deployments/runner.py,sha256=
|
98
|
+
prefect/deployments/runner.py,sha256=lNfSyvkElcFglU6pZlsI8ZQTG2KzdsEjrONVNvnbDIs,39514
|
99
99
|
prefect/deployments/schedules.py,sha256=KCYA6dOmLAoElHZuoWqdJn4Yno4TtOZtXfPOpTLb1cE,2046
|
100
100
|
prefect/deployments/steps/__init__.py,sha256=Dlz9VqMRyG1Gal8dj8vfGpPr0LyQhZdvcciozkK8WoY,206
|
101
101
|
prefect/deployments/steps/core.py,sha256=5vFf6BSpu992kkaYsvcPpsz-nZxFmayMIDmY9h0Hb8M,6846
|
@@ -105,10 +105,10 @@ prefect/docker/__init__.py,sha256=jumlacz2HY9l1ee0L9_kE0PFi9NO3l3pWINm9T5N9hs,52
|
|
105
105
|
prefect/docker/docker_image.py,sha256=Y84_ooCYA9NGl6FElJul9-FaW3teT-eia2SiNtZ1LG8,2999
|
106
106
|
prefect/events/__init__.py,sha256=GtKl2bE--pJduTxelH2xy7SadlLJmmis8WR1EYixhuA,2094
|
107
107
|
prefect/events/actions.py,sha256=4kBV2NwFlC6oXVeMp9Qb2HMNqv1IZ7FcOqeXz1zlRf0,8983
|
108
|
-
prefect/events/clients.py,sha256=
|
108
|
+
prefect/events/clients.py,sha256=Vu2ygDPrkQ-uEimdATiMpqa8-k3E7Tvy94O8IoA1VmY,20936
|
109
109
|
prefect/events/filters.py,sha256=IJ1TF-TCC7Wk2nJsbYW-HyAANToDQ6z1MdD63qE-lfw,8186
|
110
110
|
prefect/events/related.py,sha256=1rUnQ7tg_UtNfSAkKdRo-rD2W93EKKB9xafPxyusFj8,6841
|
111
|
-
prefect/events/utilities.py,sha256=
|
111
|
+
prefect/events/utilities.py,sha256=zVyqNjPRtd6iJxsQfBxylerlEUrSHBk25cI_58WBJHk,2555
|
112
112
|
prefect/events/worker.py,sha256=JAgPZjvOShWLpym-N4DeUIBQDlaAaqqG_Kkx7BcxAGY,3759
|
113
113
|
prefect/events/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
114
114
|
prefect/events/cli/automations.py,sha256=WIZ3-EcDibjQB5BrMEx7OZ7UfOqP8VjCI1dNh64Nmg0,11425
|
@@ -139,14 +139,14 @@ prefect/records/__init__.py,sha256=7q-lwyevfVgb5S7K9frzawmiJmpZ5ET0m5yXIHBYcVA,3
|
|
139
139
|
prefect/records/result_store.py,sha256=6Yh9zqqXMWjn0qWSfcjQBSfXCM7jVg9pve5TVsOodDc,1734
|
140
140
|
prefect/records/store.py,sha256=eQM1p2vZDshXZYg6SkJwL-DP3kUehL_Zgs8xa2-0DZs,224
|
141
141
|
prefect/runner/__init__.py,sha256=7U-vAOXFkzMfRz1q8Uv6Otsvc0OrPYLLP44srwkJ_8s,89
|
142
|
-
prefect/runner/runner.py,sha256=
|
142
|
+
prefect/runner/runner.py,sha256=yrBG5fCO7dCpE-lwPOkx8ToBtfJ3-BKQIUm9eNbjA2g,47388
|
143
143
|
prefect/runner/server.py,sha256=2o5vhrL7Zbn-HBStWhCjqqViex5Ye9GiQ1EW9RSEzdo,10500
|
144
|
-
prefect/runner/storage.py,sha256=
|
144
|
+
prefect/runner/storage.py,sha256=OsBa4nWdFxOTiAMNLFpexBdi5K3iuxidQx4YWZwditE,24734
|
145
145
|
prefect/runner/submit.py,sha256=RuyDr-ved9wjYYarXiehY5oJVFf_HE3XKKACNWpxpPc,8131
|
146
146
|
prefect/runner/utils.py,sha256=wVgVa7p5uUL7tfYfDOVuq6QIGf-I8U9dfAjYBmYf6n4,3286
|
147
147
|
prefect/runtime/__init__.py,sha256=JswiTlYRup2zXOYu8AqJ7czKtgcw9Kxo0tTbS6aWCqY,407
|
148
148
|
prefect/runtime/deployment.py,sha256=Kah8Xdh5f94-CEAXjBgnEB4xAQXXYPaEqDJ_gTqltIY,4752
|
149
|
-
prefect/runtime/flow_run.py,sha256=
|
149
|
+
prefect/runtime/flow_run.py,sha256=33XsudriajxIRJtebPpqF8cWCRsUpmvb9V0CSipG4J0,9956
|
150
150
|
prefect/runtime/task_run.py,sha256=B6v_nZiHy9nKZfnKFQF7izZjAjaiZOT0j80m-VcLxmY,3403
|
151
151
|
prefect/server/api/collections_data/views/aggregate-worker-metadata.json,sha256=gqrwGyylzBEzlFSPOJcMuUwdoK_zojpU0SZaBDgK5FE,79748
|
152
152
|
prefect/server/api/static/prefect-logo-mark-gradient.png,sha256=ylRjJkI_JHCw8VbQasNnXQHwZW-sH-IQiUGSD3aWP1E,73430
|
@@ -154,14 +154,14 @@ prefect/types/__init__.py,sha256=SAHJDtWEGidTKXQACJ38nj6fq8r57Gj0Pwo4Gy7pVWs,223
|
|
154
154
|
prefect/types/entrypoint.py,sha256=2FF03-wLPgtnqR_bKJDB2BsXXINPdu8ptY9ZYEZnXg8,328
|
155
155
|
prefect/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
156
156
|
prefect/utilities/annotations.py,sha256=bXB43j5Zsq5gaBcJe9qnszBlnNwCTwqSTgcu2OkkRLo,2776
|
157
|
-
prefect/utilities/asyncutils.py,sha256=
|
157
|
+
prefect/utilities/asyncutils.py,sha256=gVgCYMEJBy7hZCE-2Mn-mfOo0S5zViYeT_SNzOp_HwE,19889
|
158
158
|
prefect/utilities/callables.py,sha256=agTY0XU0XWifH5SBsWLflAhNvIxOfc8Z0RRRAbCxrxk,25020
|
159
159
|
prefect/utilities/collections.py,sha256=pPa_SZZq80cja6l99b3TV7hRQy366WnuWpOW_FnutMI,17259
|
160
160
|
prefect/utilities/compat.py,sha256=mNQZDnzyKaOqy-OV-DnmH_dc7CNF5nQgW_EsA4xMr7g,906
|
161
161
|
prefect/utilities/context.py,sha256=BThuUW94-IYgFYTeMIM9KMo8ShT3oiI7w5ajZHzU1j0,1377
|
162
162
|
prefect/utilities/dispatch.py,sha256=c8G-gBo7hZlyoD7my9nO50Rzy8Retk-np5WGq9_E2AM,5856
|
163
163
|
prefect/utilities/dockerutils.py,sha256=kRozGQ7JO6Uxl-ljWtDryzxhf96rHL78aHYDh255Em4,20324
|
164
|
-
prefect/utilities/engine.py,sha256=
|
164
|
+
prefect/utilities/engine.py,sha256=KNr6VVPL_EBxMAc06bAV4yHpF4lkaZKndXG6BodW3T0,31659
|
165
165
|
prefect/utilities/filesystem.py,sha256=frAyy6qOeYa7c-jVbEUGZQEe6J1yF8I_SvUepPd59gI,4415
|
166
166
|
prefect/utilities/hashing.py,sha256=EOwZLmoIZImuSTxAvVqInabxJ-4RpEfYeg9e2EDQF8o,1752
|
167
167
|
prefect/utilities/importtools.py,sha256=Wo4Tj9hSf7gghP83MxW3w9FK3jkaGKPEobDYjabPqT0,19389
|
@@ -187,8 +187,8 @@ prefect/workers/cloud.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
|
|
187
187
|
prefect/workers/process.py,sha256=t1f1EYRoPL5B25KbLgUX2b5q-lCCAXb2Gpf6T2M9WfY,19822
|
188
188
|
prefect/workers/server.py,sha256=lgh2FfSuaNU7b6HPxSFm8JtKvAvHsZGkiOo4y4tW1Cw,2022
|
189
189
|
prefect/workers/utilities.py,sha256=VfPfAlGtTuDj0-Kb8WlMgAuOfgXCdrGAnKMapPSBrwc,2483
|
190
|
-
prefect_client-3.0.
|
191
|
-
prefect_client-3.0.
|
192
|
-
prefect_client-3.0.
|
193
|
-
prefect_client-3.0.
|
194
|
-
prefect_client-3.0.
|
190
|
+
prefect_client-3.0.0rc16.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
|
191
|
+
prefect_client-3.0.0rc16.dist-info/METADATA,sha256=u1Slx4EdzeZnEU0qZ_7V28FsWgCbcfRsjYVCk-1KNcY,7404
|
192
|
+
prefect_client-3.0.0rc16.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
193
|
+
prefect_client-3.0.0rc16.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
|
194
|
+
prefect_client-3.0.0rc16.dist-info/RECORD,,
|
File without changes
|
File without changes
|