prefect-client 3.0.0rc4__py3-none-any.whl → 3.0.0rc6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- prefect/__init__.py +0 -2
- prefect/{records/cache_policies.py → cache_policies.py} +78 -23
- prefect/client/schemas/schedules.py +9 -2
- prefect/client/types/__init__.py +0 -0
- prefect/client/types/flexible_schedule_list.py +11 -0
- prefect/concurrency/asyncio.py +14 -4
- prefect/concurrency/services.py +29 -22
- prefect/concurrency/sync.py +3 -5
- prefect/context.py +0 -114
- prefect/deployments/__init__.py +1 -1
- prefect/deployments/runner.py +11 -93
- prefect/deployments/schedules.py +5 -7
- prefect/docker/__init__.py +20 -0
- prefect/docker/docker_image.py +82 -0
- prefect/flow_engine.py +14 -18
- prefect/flows.py +24 -93
- prefect/futures.py +13 -1
- prefect/infrastructure/provisioners/cloud_run.py +2 -2
- prefect/infrastructure/provisioners/container_instance.py +2 -2
- prefect/infrastructure/provisioners/ecs.py +2 -2
- prefect/records/result_store.py +5 -1
- prefect/results.py +78 -11
- prefect/runner/runner.py +5 -3
- prefect/runner/server.py +6 -2
- prefect/states.py +13 -3
- prefect/task_engine.py +10 -1
- prefect/tasks.py +8 -6
- prefect/transactions.py +2 -2
- prefect/types/entrypoint.py +13 -0
- prefect/utilities/dockerutils.py +2 -1
- {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/METADATA +1 -1
- {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/RECORD +35 -30
- {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/LICENSE +0 -0
- {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/WHEEL +0 -0
- {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/top_level.txt +0 -0
prefect/results.py
CHANGED
@@ -431,7 +431,11 @@ class ResultFactory(BaseModel):
|
|
431
431
|
|
432
432
|
@sync_compatible
|
433
433
|
async def create_result(
|
434
|
-
self,
|
434
|
+
self,
|
435
|
+
obj: R,
|
436
|
+
key: Optional[str] = None,
|
437
|
+
expiration: Optional[DateTime] = None,
|
438
|
+
defer_persistence: bool = False,
|
435
439
|
) -> Union[R, "BaseResult[R]"]:
|
436
440
|
"""
|
437
441
|
Create a result type for the given object.
|
@@ -464,6 +468,7 @@ class ResultFactory(BaseModel):
|
|
464
468
|
serializer=self.serializer,
|
465
469
|
cache_object=should_cache_object,
|
466
470
|
expiration=expiration,
|
471
|
+
defer_persistence=defer_persistence,
|
467
472
|
)
|
468
473
|
|
469
474
|
@sync_compatible
|
@@ -589,6 +594,19 @@ class PersistedResult(BaseResult):
|
|
589
594
|
expiration: Optional[DateTime] = None
|
590
595
|
|
591
596
|
_should_cache_object: bool = PrivateAttr(default=True)
|
597
|
+
_persisted: bool = PrivateAttr(default=False)
|
598
|
+
_storage_block: WritableFileSystem = PrivateAttr(default=None)
|
599
|
+
_serializer: Serializer = PrivateAttr(default=None)
|
600
|
+
|
601
|
+
def _cache_object(
|
602
|
+
self,
|
603
|
+
obj: Any,
|
604
|
+
storage_block: WritableFileSystem = None,
|
605
|
+
serializer: Serializer = None,
|
606
|
+
) -> None:
|
607
|
+
self._cache = obj
|
608
|
+
self._storage_block = storage_block
|
609
|
+
self._serializer = serializer
|
592
610
|
|
593
611
|
@sync_compatible
|
594
612
|
@inject_client
|
@@ -601,7 +619,7 @@ class PersistedResult(BaseResult):
|
|
601
619
|
return self._cache
|
602
620
|
|
603
621
|
blob = await self._read_blob(client=client)
|
604
|
-
obj = blob.
|
622
|
+
obj = blob.load()
|
605
623
|
self.expiration = blob.expiration
|
606
624
|
|
607
625
|
if self._should_cache_object:
|
@@ -632,6 +650,46 @@ class PersistedResult(BaseResult):
|
|
632
650
|
if hasattr(storage_block, "_remote_file_system"):
|
633
651
|
return storage_block._remote_file_system._resolve_path(key)
|
634
652
|
|
653
|
+
@sync_compatible
|
654
|
+
@inject_client
|
655
|
+
async def write(self, obj: R = NotSet, client: "PrefectClient" = None) -> None:
|
656
|
+
"""
|
657
|
+
Write the result to the storage block.
|
658
|
+
"""
|
659
|
+
|
660
|
+
if self._persisted:
|
661
|
+
# don't double write or overwrite
|
662
|
+
return
|
663
|
+
|
664
|
+
# load objects from a cache
|
665
|
+
|
666
|
+
# first the object itself
|
667
|
+
if obj is NotSet and not self.has_cached_object():
|
668
|
+
raise ValueError("Cannot write a result that has no object cached.")
|
669
|
+
obj = obj if obj is not NotSet else self._cache
|
670
|
+
|
671
|
+
# next, the storage block
|
672
|
+
storage_block = self._storage_block
|
673
|
+
if storage_block is None:
|
674
|
+
block_document = await client.read_block_document(self.storage_block_id)
|
675
|
+
storage_block = Block._from_block_document(block_document)
|
676
|
+
|
677
|
+
# finally, the serializer
|
678
|
+
serializer = self._serializer
|
679
|
+
if serializer is None:
|
680
|
+
# this could error if the serializer requires kwargs
|
681
|
+
serializer = Serializer(type=self.serializer_type)
|
682
|
+
|
683
|
+
data = serializer.dumps(obj)
|
684
|
+
blob = PersistedResultBlob(
|
685
|
+
serializer=serializer, data=data, expiration=self.expiration
|
686
|
+
)
|
687
|
+
await storage_block.write_path(self.storage_key, content=blob.to_bytes())
|
688
|
+
self._persisted = True
|
689
|
+
|
690
|
+
if not self._should_cache_object:
|
691
|
+
self._cache = NotSet
|
692
|
+
|
635
693
|
@classmethod
|
636
694
|
@sync_compatible
|
637
695
|
async def create(
|
@@ -643,6 +701,7 @@ class PersistedResult(BaseResult):
|
|
643
701
|
serializer: Serializer,
|
644
702
|
cache_object: bool = True,
|
645
703
|
expiration: Optional[DateTime] = None,
|
704
|
+
defer_persistence: bool = False,
|
646
705
|
) -> "PersistedResult[R]":
|
647
706
|
"""
|
648
707
|
Create a new result reference from a user's object.
|
@@ -652,19 +711,13 @@ class PersistedResult(BaseResult):
|
|
652
711
|
"""
|
653
712
|
assert (
|
654
713
|
storage_block_id is not None
|
655
|
-
), "Unexpected storage block ID. Was it
|
656
|
-
data = serializer.dumps(obj)
|
657
|
-
blob = PersistedResultBlob(
|
658
|
-
serializer=serializer, data=data, expiration=expiration
|
659
|
-
)
|
714
|
+
), "Unexpected storage block ID. Was it saved?"
|
660
715
|
|
661
716
|
key = storage_key_fn()
|
662
717
|
if not isinstance(key, str):
|
663
718
|
raise TypeError(
|
664
719
|
f"Expected type 'str' for result storage key; got value {key!r}"
|
665
720
|
)
|
666
|
-
await storage_block.write_path(key, content=blob.to_bytes())
|
667
|
-
|
668
721
|
description = f"Result of type `{type(obj).__name__}`"
|
669
722
|
uri = cls._infer_path(storage_block, key)
|
670
723
|
if uri:
|
@@ -684,12 +737,23 @@ class PersistedResult(BaseResult):
|
|
684
737
|
expiration=expiration,
|
685
738
|
)
|
686
739
|
|
687
|
-
if cache_object:
|
740
|
+
if cache_object and not defer_persistence:
|
688
741
|
# Attach the object to the result so it's available without deserialization
|
689
|
-
result._cache_object(
|
742
|
+
result._cache_object(
|
743
|
+
obj, storage_block=storage_block, serializer=serializer
|
744
|
+
)
|
690
745
|
|
691
746
|
object.__setattr__(result, "_should_cache_object", cache_object)
|
692
747
|
|
748
|
+
if not defer_persistence:
|
749
|
+
await result.write(obj=obj)
|
750
|
+
else:
|
751
|
+
# we must cache temporarily to allow for writing later
|
752
|
+
# the cache will be removed on write
|
753
|
+
result._cache_object(
|
754
|
+
obj, storage_block=storage_block, serializer=serializer
|
755
|
+
)
|
756
|
+
|
693
757
|
return result
|
694
758
|
|
695
759
|
|
@@ -705,6 +769,9 @@ class PersistedResultBlob(BaseModel):
|
|
705
769
|
prefect_version: str = Field(default=prefect.__version__)
|
706
770
|
expiration: Optional[DateTime] = None
|
707
771
|
|
772
|
+
def load(self) -> Any:
|
773
|
+
return self.serializer.loads(self.data)
|
774
|
+
|
708
775
|
def to_bytes(self) -> bytes:
|
709
776
|
return self.model_dump_json(serialize_as_any=True).encode()
|
710
777
|
|
prefect/runner/runner.py
CHANGED
@@ -45,7 +45,7 @@ import threading
|
|
45
45
|
from copy import deepcopy
|
46
46
|
from functools import partial
|
47
47
|
from pathlib import Path
|
48
|
-
from typing import Callable, Dict, Iterable, List, Optional, Set, Union
|
48
|
+
from typing import TYPE_CHECKING, Callable, Dict, Iterable, List, Optional, Set, Union
|
49
49
|
from uuid import UUID, uuid4
|
50
50
|
|
51
51
|
import anyio
|
@@ -75,7 +75,6 @@ from prefect.deployments.runner import (
|
|
75
75
|
EntrypointType,
|
76
76
|
RunnerDeployment,
|
77
77
|
)
|
78
|
-
from prefect.deployments.schedules import FlexibleScheduleList
|
79
78
|
from prefect.events import DeploymentTriggerTypes, TriggerTypes
|
80
79
|
from prefect.exceptions import Abort, ObjectNotFound
|
81
80
|
from prefect.flows import Flow, load_flow_from_flow_run
|
@@ -98,6 +97,9 @@ from prefect.utilities.engine import propose_state
|
|
98
97
|
from prefect.utilities.processutils import _register_signal, run_process
|
99
98
|
from prefect.utilities.services import critical_service_loop
|
100
99
|
|
100
|
+
if TYPE_CHECKING:
|
101
|
+
from prefect.client.types.flexible_schedule_list import FlexibleScheduleList
|
102
|
+
|
101
103
|
__all__ = ["Runner"]
|
102
104
|
|
103
105
|
|
@@ -221,7 +223,7 @@ class Runner:
|
|
221
223
|
cron: Optional[Union[Iterable[str], str]] = None,
|
222
224
|
rrule: Optional[Union[Iterable[str], str]] = None,
|
223
225
|
paused: Optional[bool] = None,
|
224
|
-
schedules: Optional[FlexibleScheduleList] = None,
|
226
|
+
schedules: Optional["FlexibleScheduleList"] = None,
|
225
227
|
schedule: Optional[SCHEDULE_TYPES] = None,
|
226
228
|
is_schedule_active: Optional[bool] = None,
|
227
229
|
parameters: Optional[dict] = None,
|
prefect/runner/server.py
CHANGED
@@ -10,7 +10,7 @@ from typing_extensions import Literal
|
|
10
10
|
from prefect._internal.schemas.validators import validate_values_conform_to_schema
|
11
11
|
from prefect.client.orchestration import get_client
|
12
12
|
from prefect.exceptions import MissingFlowError, ScriptError
|
13
|
-
from prefect.flows import Flow, load_flow_from_entrypoint
|
13
|
+
from prefect.flows import Flow, load_flow_from_entrypoint
|
14
14
|
from prefect.logging import get_logger
|
15
15
|
from prefect.runner.utils import (
|
16
16
|
inject_schemas_into_openapi,
|
@@ -24,6 +24,7 @@ from prefect.settings import (
|
|
24
24
|
PREFECT_RUNNER_SERVER_PORT,
|
25
25
|
)
|
26
26
|
from prefect.utilities.asyncutils import sync_compatible
|
27
|
+
from prefect.utilities.importtools import load_script_as_module
|
27
28
|
|
28
29
|
if TYPE_CHECKING:
|
29
30
|
from prefect.client.schemas.responses import DeploymentResponse
|
@@ -155,7 +156,10 @@ async def get_subflow_schemas(runner: "Runner") -> Dict[str, Dict]:
|
|
155
156
|
continue
|
156
157
|
|
157
158
|
script = deployment.entrypoint.split(":")[0]
|
158
|
-
|
159
|
+
module = load_script_as_module(script)
|
160
|
+
subflows = [
|
161
|
+
obj for obj in module.__dict__.values() if isinstance(obj, Flow)
|
162
|
+
]
|
159
163
|
for flow in subflows:
|
160
164
|
schemas[flow.name] = flow.parameters.model_dump()
|
161
165
|
|
prefect/states.py
CHANGED
@@ -209,6 +209,7 @@ async def return_value_to_state(
|
|
209
209
|
result_factory: ResultFactory,
|
210
210
|
key: Optional[str] = None,
|
211
211
|
expiration: Optional[datetime.datetime] = None,
|
212
|
+
defer_persistence: bool = False,
|
212
213
|
) -> State[R]:
|
213
214
|
"""
|
214
215
|
Given a return value from a user's function, create a `State` the run should
|
@@ -242,7 +243,10 @@ async def return_value_to_state(
|
|
242
243
|
# to update the data to the correct type
|
243
244
|
if not isinstance(state.data, BaseResult):
|
244
245
|
state.data = await result_factory.create_result(
|
245
|
-
state.data,
|
246
|
+
state.data,
|
247
|
+
key=key,
|
248
|
+
expiration=expiration,
|
249
|
+
defer_persistence=defer_persistence,
|
246
250
|
)
|
247
251
|
|
248
252
|
return state
|
@@ -284,7 +288,10 @@ async def return_value_to_state(
|
|
284
288
|
type=new_state_type,
|
285
289
|
message=message,
|
286
290
|
data=await result_factory.create_result(
|
287
|
-
retval,
|
291
|
+
retval,
|
292
|
+
key=key,
|
293
|
+
expiration=expiration,
|
294
|
+
defer_persistence=defer_persistence,
|
288
295
|
),
|
289
296
|
)
|
290
297
|
|
@@ -300,7 +307,10 @@ async def return_value_to_state(
|
|
300
307
|
else:
|
301
308
|
return Completed(
|
302
309
|
data=await result_factory.create_result(
|
303
|
-
data,
|
310
|
+
data,
|
311
|
+
key=key,
|
312
|
+
expiration=expiration,
|
313
|
+
defer_persistence=defer_persistence,
|
304
314
|
)
|
305
315
|
)
|
306
316
|
|
prefect/task_engine.py
CHANGED
@@ -174,11 +174,18 @@ class TaskRunEngine(Generic[P, R]):
|
|
174
174
|
def compute_transaction_key(self) -> str:
|
175
175
|
key = None
|
176
176
|
if self.task.cache_policy:
|
177
|
+
flow_run_context = FlowRunContext.get()
|
177
178
|
task_run_context = TaskRunContext.get()
|
179
|
+
|
180
|
+
if flow_run_context:
|
181
|
+
parameters = flow_run_context.parameters
|
182
|
+
else:
|
183
|
+
parameters = None
|
184
|
+
|
178
185
|
key = self.task.cache_policy.compute_key(
|
179
186
|
task_ctx=task_run_context,
|
180
187
|
inputs=self.parameters,
|
181
|
-
flow_parameters=
|
188
|
+
flow_parameters=parameters,
|
182
189
|
)
|
183
190
|
elif self.task.result_storage_key is not None:
|
184
191
|
key = _format_user_supplied_storage_key(self.task.result_storage_key)
|
@@ -310,6 +317,8 @@ class TaskRunEngine(Generic[P, R]):
|
|
310
317
|
result_factory=result_factory,
|
311
318
|
key=transaction.key,
|
312
319
|
expiration=expiration,
|
320
|
+
# defer persistence to transaction commit
|
321
|
+
defer_persistence=True,
|
313
322
|
)
|
314
323
|
)
|
315
324
|
transaction.stage(
|
prefect/tasks.py
CHANGED
@@ -32,19 +32,18 @@ from uuid import UUID, uuid4
|
|
32
32
|
|
33
33
|
from typing_extensions import Literal, ParamSpec
|
34
34
|
|
35
|
+
from prefect.cache_policies import DEFAULT, NONE, CachePolicy
|
35
36
|
from prefect.client.orchestration import get_client
|
36
37
|
from prefect.client.schemas import TaskRun
|
37
38
|
from prefect.client.schemas.objects import TaskRunInput, TaskRunResult
|
38
39
|
from prefect.context import (
|
39
40
|
FlowRunContext,
|
40
|
-
PrefectObjectRegistry,
|
41
41
|
TagsContext,
|
42
42
|
TaskRunContext,
|
43
43
|
serialize_context,
|
44
44
|
)
|
45
45
|
from prefect.futures import PrefectDistributedFuture, PrefectFuture
|
46
46
|
from prefect.logging.loggers import get_logger
|
47
|
-
from prefect.records.cache_policies import DEFAULT, NONE, CachePolicy
|
48
47
|
from prefect.results import ResultFactory, ResultSerializer, ResultStorage
|
49
48
|
from prefect.settings import (
|
50
49
|
PREFECT_TASK_DEFAULT_RETRIES,
|
@@ -52,7 +51,10 @@ from prefect.settings import (
|
|
52
51
|
)
|
53
52
|
from prefect.states import Pending, Scheduled, State
|
54
53
|
from prefect.utilities.annotations import NotSet
|
55
|
-
from prefect.utilities.asyncutils import
|
54
|
+
from prefect.utilities.asyncutils import (
|
55
|
+
run_coro_as_sync,
|
56
|
+
sync_compatible,
|
57
|
+
)
|
56
58
|
from prefect.utilities.callables import (
|
57
59
|
expand_mapping_parameters,
|
58
60
|
get_call_parameters,
|
@@ -174,7 +176,6 @@ def _infer_parent_task_runs(
|
|
174
176
|
return parents
|
175
177
|
|
176
178
|
|
177
|
-
@PrefectObjectRegistry.register_instances
|
178
179
|
class Task(Generic[P, R]):
|
179
180
|
"""
|
180
181
|
A Prefect task definition.
|
@@ -1286,7 +1287,8 @@ class Task(Generic[P, R]):
|
|
1286
1287
|
"""
|
1287
1288
|
return self.apply_async(args=args, kwargs=kwargs)
|
1288
1289
|
|
1289
|
-
|
1290
|
+
@sync_compatible
|
1291
|
+
async def serve(self) -> NoReturn:
|
1290
1292
|
"""Serve the task using the provided task runner. This method is used to
|
1291
1293
|
establish a websocket connection with the Prefect server and listen for
|
1292
1294
|
submitted task runs to execute.
|
@@ -1305,7 +1307,7 @@ class Task(Generic[P, R]):
|
|
1305
1307
|
"""
|
1306
1308
|
from prefect.task_worker import serve
|
1307
1309
|
|
1308
|
-
serve(self)
|
1310
|
+
await serve(self)
|
1309
1311
|
|
1310
1312
|
|
1311
1313
|
@overload
|
prefect/transactions.py
CHANGED
@@ -89,7 +89,7 @@ class Transaction(ContextModel):
|
|
89
89
|
if parent:
|
90
90
|
self.commit_mode = parent.commit_mode
|
91
91
|
else:
|
92
|
-
self.commit_mode = CommitMode.
|
92
|
+
self.commit_mode = CommitMode.LAZY
|
93
93
|
|
94
94
|
# this needs to go before begin, which could set the state to committed
|
95
95
|
self.state = TransactionState.ACTIVE
|
@@ -236,7 +236,7 @@ def get_transaction() -> Optional[Transaction]:
|
|
236
236
|
def transaction(
|
237
237
|
key: Optional[str] = None,
|
238
238
|
store: Optional[RecordStore] = None,
|
239
|
-
commit_mode: CommitMode =
|
239
|
+
commit_mode: Optional[CommitMode] = None,
|
240
240
|
overwrite: bool = False,
|
241
241
|
) -> Generator[Transaction, None, None]:
|
242
242
|
"""
|
@@ -0,0 +1,13 @@
|
|
1
|
+
from enum import Enum
|
2
|
+
|
3
|
+
|
4
|
+
class EntrypointType(Enum):
|
5
|
+
"""
|
6
|
+
Enum representing a entrypoint type.
|
7
|
+
|
8
|
+
File path entrypoints are in the format: `path/to/file.py:function_name`.
|
9
|
+
Module path entrypoints are in the format: `path.to.module.function_name`.
|
10
|
+
"""
|
11
|
+
|
12
|
+
FILE_PATH = "file_path"
|
13
|
+
MODULE_PATH = "module_path"
|
prefect/utilities/dockerutils.py
CHANGED
@@ -9,6 +9,7 @@ from tempfile import TemporaryDirectory
|
|
9
9
|
from types import TracebackType
|
10
10
|
from typing import (
|
11
11
|
TYPE_CHECKING,
|
12
|
+
Any,
|
12
13
|
Generator,
|
13
14
|
Iterable,
|
14
15
|
List,
|
@@ -142,7 +143,7 @@ def build_image(
|
|
142
143
|
pull: bool = False,
|
143
144
|
platform: Optional[str] = None,
|
144
145
|
stream_progress_to: Optional[TextIO] = None,
|
145
|
-
**kwargs,
|
146
|
+
**kwargs: Any,
|
146
147
|
) -> str:
|
147
148
|
"""Builds a Docker image, returning the image ID
|
148
149
|
|
@@ -1,30 +1,31 @@
|
|
1
1
|
prefect/.prefectignore,sha256=awSprvKT0vI8a64mEOLrMxhxqcO-b0ERQeYpA2rNKVQ,390
|
2
|
-
prefect/__init__.py,sha256=
|
2
|
+
prefect/__init__.py,sha256=YmPor6iCXeKOr8jfH08qD9CBiRsEY6pXs4mRSQRo6ro,2873
|
3
3
|
prefect/_version.py,sha256=I9JsXwt7BjAAbMEZgtmE3a6dJ2jqV-wqWto9D6msb3k,24597
|
4
4
|
prefect/artifacts.py,sha256=G-jCyce3XGtTyQpCk_s3L7e-TWFyJY8Dcnk_i4_CsY4,12647
|
5
5
|
prefect/automations.py,sha256=NlQ62GPJzy-gnWQqX7c6CQJKw7p60WLGDAFcy82vtg4,5613
|
6
|
-
prefect/
|
6
|
+
prefect/cache_policies.py,sha256=uEKNGO-PJ3N35B2tjhRDtQULN6ok72D9raIoJaUyXk0,6365
|
7
|
+
prefect/context.py,sha256=OEmbC61D3l0E50HIaMlVNNJShhYC6I1-4TQhpP321tw,19480
|
7
8
|
prefect/engine.py,sha256=asH7iMb1IfEOOIVIxM3ZalfvCe9PUp7f9ceKyT6isa8,2019
|
8
9
|
prefect/exceptions.py,sha256=kRiEX6qpT9errs0SuYJDYG7ioMNddTvqK7gT8RVFajk,11076
|
9
10
|
prefect/filesystems.py,sha256=HrPoehZKpuVxzWDXaTiuJqgVCgxlQ4lyTEZKSYKiZUc,17169
|
10
|
-
prefect/flow_engine.py,sha256=
|
11
|
+
prefect/flow_engine.py,sha256=3JM3LpgqCGLUsTbrh5-CL3IFnHSHRWHbqV9xMEC3nyM,26149
|
11
12
|
prefect/flow_runs.py,sha256=7mHGjb3-6MfR4XKQjy9sJPS9dS0yTxVO6MYQ8YlGjGw,16071
|
12
|
-
prefect/flows.py,sha256=
|
13
|
-
prefect/futures.py,sha256=
|
13
|
+
prefect/flows.py,sha256=fODMwvsgkNkIy1eWCqh5zHLDpLaL1LXCN17Ygpg0MdU,79204
|
14
|
+
prefect/futures.py,sha256=mI3WuaH3k0LkqwPbM6V7WbG0ssT-NjpX1wROS7vSKE0,9882
|
14
15
|
prefect/manifests.py,sha256=477XcmfdC_yE81wT6zIAKnEUEJ0lH9ZLfOVSgX2FohE,676
|
15
16
|
prefect/plugins.py,sha256=-IqPJvQGoMZBioHCF0s1IDNHYA7OxIRaUlkaGM2CgLY,4164
|
16
17
|
prefect/profiles.toml,sha256=Fs8hD_BdWHZgAijgk8pK_Zx-Pm-YFixqDIfEP6fM-qU,38
|
17
18
|
prefect/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
-
prefect/results.py,sha256=
|
19
|
+
prefect/results.py,sha256=qG-5mAlZTRV7GneuQVS7GpHHt3QXcZbwLwn03fHAi4M,27326
|
19
20
|
prefect/serializers.py,sha256=8ON--RmaLX3Td3Rpd1lshGcqWyjlCFkmO3sblxsdT_c,8699
|
20
21
|
prefect/settings.py,sha256=JkCgcFO7Zw0Kv_azK9XLabx08ypVgL76E6r8nD-HZLM,74598
|
21
|
-
prefect/states.py,sha256=
|
22
|
-
prefect/task_engine.py,sha256=
|
22
|
+
prefect/states.py,sha256=JdN01UMYFelFybPoAEKbiPJNuPaj6pksLJ3o0_oNz5Q,20690
|
23
|
+
prefect/task_engine.py,sha256=wGN-jFfiLROth8pA8be9Y9_ghi5VS3T2Zpu4ZxTtHSk,32519
|
23
24
|
prefect/task_runners.py,sha256=TQHyQATPkZE6BNVJ_JQBNmiL1kdgZRjY_Fjs3-N1UiE,11869
|
24
25
|
prefect/task_runs.py,sha256=eDWYH5H1K4SyduhKmn3GzO6vM3fZSwOZxAb8KhkMGsk,7798
|
25
26
|
prefect/task_worker.py,sha256=iawQZn4hNcrXR-CHtM4jzhlnotqeNHiRuHc-eumJ9Oc,16788
|
26
|
-
prefect/tasks.py,sha256=
|
27
|
-
prefect/transactions.py,sha256=
|
27
|
+
prefect/tasks.py,sha256=rA7FAqcb58hwhrju7ocxL-e982vXEKx86Zl8G-LYcQY,60300
|
28
|
+
prefect/transactions.py,sha256=XhEXdhid1457m5V7VTz1U8JCek6U6jSFD7EffGhCLag,9149
|
28
29
|
prefect/variables.py,sha256=-t5LVY0N-K4f0fa6YwruVVQqwnU3fGWBMYXXE32XPkA,4821
|
29
30
|
prefect/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
31
|
prefect/_internal/_logging.py,sha256=HvNHY-8P469o5u4LYEDBTem69XZEt1QUeUaLToijpak,810
|
@@ -76,23 +77,27 @@ prefect/client/schemas/actions.py,sha256=t-JJCikwa_ZrTPu7VJDwkLQ2fgNQuYHUwAi_3PH
|
|
76
77
|
prefect/client/schemas/filters.py,sha256=HyIYZQowhkHa_D6syj83zUp5uFEzA8UADLaS9mt1MTo,35305
|
77
78
|
prefect/client/schemas/objects.py,sha256=htwlQ1CYcouNPWENVLyWyWSGRfjNXRIxvuYG_nKcnlE,53308
|
78
79
|
prefect/client/schemas/responses.py,sha256=YnofjvPxaDE0kPw7SLfK5TuZSJ0IlqP2G17rQgz_buk,15135
|
79
|
-
prefect/client/schemas/schedules.py,sha256=
|
80
|
+
prefect/client/schemas/schedules.py,sha256=8rpqjOYtknu2-1n5_WD4cOplgu93P3mCyX86B22LfL4,13070
|
80
81
|
prefect/client/schemas/sorting.py,sha256=EIQ6FUjUWMwk6fn6ckVLQLXOP-GI5kce7ftjUkDFWV0,2490
|
82
|
+
prefect/client/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
|
+
prefect/client/types/flexible_schedule_list.py,sha256=F1VFAXGLM89dJRBLnVsxwAMGLmrRF2i81FirEMpbB5s,368
|
81
84
|
prefect/concurrency/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
|
-
prefect/concurrency/asyncio.py,sha256=
|
85
|
+
prefect/concurrency/asyncio.py,sha256=sn5Wm6pOnU0bnfJiwltwWBcouj-rhGg27Zkzw7zfVuA,4684
|
83
86
|
prefect/concurrency/events.py,sha256=rQLSBwcYCzvdKTXr7bLjgMIklllObxB33MAL6dylXAM,1802
|
84
|
-
prefect/concurrency/services.py,sha256=
|
85
|
-
prefect/concurrency/sync.py,sha256=
|
86
|
-
prefect/deployments/__init__.py,sha256=
|
87
|
+
prefect/concurrency/services.py,sha256=pxqfjA5DpzcpbU-E2TQT1Rq8BhOGf3Sfz5eTFE8sYu8,2981
|
88
|
+
prefect/concurrency/sync.py,sha256=QtnPRfVX9GqVyuZOt6W9yJuT9G-PlCSVnxlZKFTjuKY,3271
|
89
|
+
prefect/deployments/__init__.py,sha256=yAtuBvqhQNhlJHjPW6yQyjkPFCgew3t26NAKO2RnQyk,428
|
87
90
|
prefect/deployments/base.py,sha256=j2VUHkghXCqbfYJD8Joeh12Ejh4KCzr2DgVPRpDpbLw,16600
|
88
91
|
prefect/deployments/deployments.py,sha256=EvC9qBdvJRc8CHJqRjFTqtzx75SE8bpZOl5C-2eULyA,109
|
89
92
|
prefect/deployments/flow_runs.py,sha256=eatcBD7pg-aaEqs9JxQQcKN_flf614O4gAvedAlRyNo,6803
|
90
|
-
prefect/deployments/runner.py,sha256=
|
91
|
-
prefect/deployments/schedules.py,sha256=
|
93
|
+
prefect/deployments/runner.py,sha256=wVz2Ltis_tOpWLvLzPuOBJBIsdWqs8aXY2oCOuwhssc,41763
|
94
|
+
prefect/deployments/schedules.py,sha256=l1xOHBmJJ-VZFPTX4RWScJ802P-iE81Vzp4EniQ65k4,2004
|
92
95
|
prefect/deployments/steps/__init__.py,sha256=Dlz9VqMRyG1Gal8dj8vfGpPr0LyQhZdvcciozkK8WoY,206
|
93
96
|
prefect/deployments/steps/core.py,sha256=yKBVi8pi_7fzdng28kUD8vcSl5aED5yFnu9KxCdquKA,6627
|
94
97
|
prefect/deployments/steps/pull.py,sha256=ylp3fd72hEfmY67LQs7sMwdcK6KKobsTZOeay-YUl8Q,7125
|
95
98
|
prefect/deployments/steps/utility.py,sha256=s5mMBmHVCS1ZRBRUCunwPueU_7Dii_GK6CqCoznwUCc,8134
|
99
|
+
prefect/docker/__init__.py,sha256=jumlacz2HY9l1ee0L9_kE0PFi9NO3l3pWINm9T5N9hs,524
|
100
|
+
prefect/docker/docker_image.py,sha256=Y84_ooCYA9NGl6FElJul9-FaW3teT-eia2SiNtZ1LG8,2999
|
96
101
|
prefect/events/__init__.py,sha256=GtKl2bE--pJduTxelH2xy7SadlLJmmis8WR1EYixhuA,2094
|
97
102
|
prefect/events/actions.py,sha256=4kBV2NwFlC6oXVeMp9Qb2HMNqv1IZ7FcOqeXz1zlRf0,8983
|
98
103
|
prefect/events/clients.py,sha256=nDP8AQCoPNOfRPgS9QbEvdpx0wKyE4_4gwxQEtsnuUA,19860
|
@@ -109,9 +114,9 @@ prefect/events/schemas/events.py,sha256=RqosMukGfHvLPnYDcyxkm6VuifCeH5-aQ4POdMPm
|
|
109
114
|
prefect/events/schemas/labelling.py,sha256=bU-XYaHXhI2MEBIHngth96R9D02m8HHb85KNcHZ_1Gc,3073
|
110
115
|
prefect/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
111
116
|
prefect/infrastructure/provisioners/__init__.py,sha256=wn240gHrQbien2g_g2A8Ujb2iFyjmDgMHLQ7tgQngf4,1706
|
112
|
-
prefect/infrastructure/provisioners/cloud_run.py,sha256=
|
113
|
-
prefect/infrastructure/provisioners/container_instance.py,sha256
|
114
|
-
prefect/infrastructure/provisioners/ecs.py,sha256=
|
117
|
+
prefect/infrastructure/provisioners/cloud_run.py,sha256=K6_8AO_fZRfuI0hGx_EwvlRkiNPcmR5yD9P8B-QSjuc,17745
|
118
|
+
prefect/infrastructure/provisioners/container_instance.py,sha256=ZaiaAOywMjbhZI6emzqsDQh-xBePajzjjMT_JY8lwNA,41281
|
119
|
+
prefect/infrastructure/provisioners/ecs.py,sha256=8cqabILtoy7t3ISuX8VbFCcG3IOFr3ODWWLi3ls2NyU,47723
|
115
120
|
prefect/infrastructure/provisioners/modal.py,sha256=4-VanBPqWlAj_5ckpXT7NonbqP0YwznTXFa4P8cthIs,9080
|
116
121
|
prefect/input/__init__.py,sha256=Ue2h-YhYP71nEtsVJaslqMwO6C0ckjhjTYwwEgp-E3g,701
|
117
122
|
prefect/input/actions.py,sha256=IGdWjVcesnRjLmPCzB4ZM7FkRWXDKCku6yhE-7p0vKk,3777
|
@@ -125,12 +130,11 @@ prefect/logging/highlighters.py,sha256=BpSXOy0n3lFVvlKWa7jC-HetAiClFi9jnQtEq5-rg
|
|
125
130
|
prefect/logging/loggers.py,sha256=qWM-5IxN3U5MlK7srfALOC9sCpGqt20Vu9WSxpU2zIs,11527
|
126
131
|
prefect/logging/logging.yml,sha256=UkEewf0c3_dURI2uCU4RrxkhI5Devoa1s93fl7hilcg,3160
|
127
132
|
prefect/records/__init__.py,sha256=7q-lwyevfVgb5S7K9frzawmiJmpZ5ET0m5yXIHBYcVA,31
|
128
|
-
prefect/records/
|
129
|
-
prefect/records/result_store.py,sha256=pyhMr5OKto1NhWuVrEVBd6-Z4Dc0N0xdYApwDAQL8IM,1557
|
133
|
+
prefect/records/result_store.py,sha256=6Yh9zqqXMWjn0qWSfcjQBSfXCM7jVg9pve5TVsOodDc,1734
|
130
134
|
prefect/records/store.py,sha256=eQM1p2vZDshXZYg6SkJwL-DP3kUehL_Zgs8xa2-0DZs,224
|
131
135
|
prefect/runner/__init__.py,sha256=7U-vAOXFkzMfRz1q8Uv6Otsvc0OrPYLLP44srwkJ_8s,89
|
132
|
-
prefect/runner/runner.py,sha256=
|
133
|
-
prefect/runner/server.py,sha256=
|
136
|
+
prefect/runner/runner.py,sha256=aR9Figoyvn0PAKv8zussaT7sJP9zM-SAmrcYZN19ZB8,45152
|
137
|
+
prefect/runner/server.py,sha256=pXyNGDw2aBYCXRr3zyFCaflxUaQOG4M07zxwXiFngoQ,10676
|
134
138
|
prefect/runner/storage.py,sha256=nuzkEjmAZYAjCEpXhuuZSGJAqBARICIBmDQNqDgI4yk,22316
|
135
139
|
prefect/runner/submit.py,sha256=EpgYNR-tAub0VFVTIkijp8qwHcS1iojLAZN5NM0X39s,8552
|
136
140
|
prefect/runner/utils.py,sha256=wVgVa7p5uUL7tfYfDOVuq6QIGf-I8U9dfAjYBmYf6n4,3286
|
@@ -141,6 +145,7 @@ prefect/runtime/task_run.py,sha256=B6v_nZiHy9nKZfnKFQF7izZjAjaiZOT0j80m-VcLxmY,3
|
|
141
145
|
prefect/server/api/collections_data/views/aggregate-worker-metadata.json,sha256=gqrwGyylzBEzlFSPOJcMuUwdoK_zojpU0SZaBDgK5FE,79748
|
142
146
|
prefect/server/api/static/prefect-logo-mark-gradient.png,sha256=ylRjJkI_JHCw8VbQasNnXQHwZW-sH-IQiUGSD3aWP1E,73430
|
143
147
|
prefect/types/__init__.py,sha256=SAHJDtWEGidTKXQACJ38nj6fq8r57Gj0Pwo4Gy7pVWs,2234
|
148
|
+
prefect/types/entrypoint.py,sha256=2FF03-wLPgtnqR_bKJDB2BsXXINPdu8ptY9ZYEZnXg8,328
|
144
149
|
prefect/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
145
150
|
prefect/utilities/annotations.py,sha256=bXB43j5Zsq5gaBcJe9qnszBlnNwCTwqSTgcu2OkkRLo,2776
|
146
151
|
prefect/utilities/asyncutils.py,sha256=GRDiA3S9vGRpM3aKSq6iZnNP9XNBcfUg0NBwbjUFeAw,19200
|
@@ -149,7 +154,7 @@ prefect/utilities/collections.py,sha256=2W7cgdB_c_LGMbHPmFSKJbwue_Ai8h5CukSmFoZ8
|
|
149
154
|
prefect/utilities/compat.py,sha256=mNQZDnzyKaOqy-OV-DnmH_dc7CNF5nQgW_EsA4xMr7g,906
|
150
155
|
prefect/utilities/context.py,sha256=BThuUW94-IYgFYTeMIM9KMo8ShT3oiI7w5ajZHzU1j0,1377
|
151
156
|
prefect/utilities/dispatch.py,sha256=c8G-gBo7hZlyoD7my9nO50Rzy8Retk-np5WGq9_E2AM,5856
|
152
|
-
prefect/utilities/dockerutils.py,sha256=
|
157
|
+
prefect/utilities/dockerutils.py,sha256=kRozGQ7JO6Uxl-ljWtDryzxhf96rHL78aHYDh255Em4,20324
|
153
158
|
prefect/utilities/engine.py,sha256=E5WSLg9XsvkEN56M8Q5Wl4k0INUpaqmvdToQPFjYWNo,30160
|
154
159
|
prefect/utilities/filesystem.py,sha256=frAyy6qOeYa7c-jVbEUGZQEe6J1yF8I_SvUepPd59gI,4415
|
155
160
|
prefect/utilities/hashing.py,sha256=EOwZLmoIZImuSTxAvVqInabxJ-4RpEfYeg9e2EDQF8o,1752
|
@@ -174,8 +179,8 @@ prefect/workers/base.py,sha256=62E0Q41pPr3eQdSBSUBfiR4WYx01OfuqUp5INRqHGgo,46942
|
|
174
179
|
prefect/workers/process.py,sha256=vylkSSswaSCew-V65YW0HcxIxyKI-uqWkbSKpkkLamQ,9372
|
175
180
|
prefect/workers/server.py,sha256=EfPiMxI7TVgkqpHkdPwSaYG-ydi99sG7jwXhkAcACbI,1519
|
176
181
|
prefect/workers/utilities.py,sha256=VfPfAlGtTuDj0-Kb8WlMgAuOfgXCdrGAnKMapPSBrwc,2483
|
177
|
-
prefect_client-3.0.
|
178
|
-
prefect_client-3.0.
|
179
|
-
prefect_client-3.0.
|
180
|
-
prefect_client-3.0.
|
181
|
-
prefect_client-3.0.
|
182
|
+
prefect_client-3.0.0rc6.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
|
183
|
+
prefect_client-3.0.0rc6.dist-info/METADATA,sha256=1aezCRgHP5WGBdbEDZGHjrfcnobQMNMOmtB1e-c8cHs,7392
|
184
|
+
prefect_client-3.0.0rc6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
185
|
+
prefect_client-3.0.0rc6.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
|
186
|
+
prefect_client-3.0.0rc6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|