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.
Files changed (35) hide show
  1. prefect/__init__.py +0 -2
  2. prefect/{records/cache_policies.py → cache_policies.py} +78 -23
  3. prefect/client/schemas/schedules.py +9 -2
  4. prefect/client/types/__init__.py +0 -0
  5. prefect/client/types/flexible_schedule_list.py +11 -0
  6. prefect/concurrency/asyncio.py +14 -4
  7. prefect/concurrency/services.py +29 -22
  8. prefect/concurrency/sync.py +3 -5
  9. prefect/context.py +0 -114
  10. prefect/deployments/__init__.py +1 -1
  11. prefect/deployments/runner.py +11 -93
  12. prefect/deployments/schedules.py +5 -7
  13. prefect/docker/__init__.py +20 -0
  14. prefect/docker/docker_image.py +82 -0
  15. prefect/flow_engine.py +14 -18
  16. prefect/flows.py +24 -93
  17. prefect/futures.py +13 -1
  18. prefect/infrastructure/provisioners/cloud_run.py +2 -2
  19. prefect/infrastructure/provisioners/container_instance.py +2 -2
  20. prefect/infrastructure/provisioners/ecs.py +2 -2
  21. prefect/records/result_store.py +5 -1
  22. prefect/results.py +78 -11
  23. prefect/runner/runner.py +5 -3
  24. prefect/runner/server.py +6 -2
  25. prefect/states.py +13 -3
  26. prefect/task_engine.py +10 -1
  27. prefect/tasks.py +8 -6
  28. prefect/transactions.py +2 -2
  29. prefect/types/entrypoint.py +13 -0
  30. prefect/utilities/dockerutils.py +2 -1
  31. {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/METADATA +1 -1
  32. {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/RECORD +35 -30
  33. {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/LICENSE +0 -0
  34. {prefect_client-3.0.0rc4.dist-info → prefect_client-3.0.0rc6.dist-info}/WHEEL +0 -0
  35. {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, obj: R, key: Optional[str] = None, expiration: Optional[DateTime] = None
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.serializer.loads(blob.data)
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 persisted?"
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(obj)
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, load_flows_from_script
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
- subflows = load_flows_from_script(script)
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, key=key, expiration=expiration
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, key=key, expiration=expiration
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, key=key, expiration=expiration
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=None,
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 run_coro_as_sync
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
- def serve(self) -> "Task":
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.EAGER
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 = CommitMode.LAZY,
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"
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefect-client
3
- Version: 3.0.0rc4
3
+ Version: 3.0.0rc6
4
4
  Summary: Workflow orchestration and management.
5
5
  Home-page: https://www.prefect.io
6
6
  Author: Prefect Technologies, Inc.
@@ -1,30 +1,31 @@
1
1
  prefect/.prefectignore,sha256=awSprvKT0vI8a64mEOLrMxhxqcO-b0ERQeYpA2rNKVQ,390
2
- prefect/__init__.py,sha256=YdjT2cx1P0UBRlc6qUXxZrY1DB39YNPbJHqNvLr8wds,2919
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/context.py,sha256=1dGUGcVXbx6rd04cwtz7Oz1qVPCMlIrAkF-Xo5GtcVY,23196
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=0Or0YtZcGVM4zYZtFWYB3qhUjzOP1ZI9KRqdqj-wEiY,26301
11
+ prefect/flow_engine.py,sha256=3JM3LpgqCGLUsTbrh5-CL3IFnHSHRWHbqV9xMEC3nyM,26149
11
12
  prefect/flow_runs.py,sha256=7mHGjb3-6MfR4XKQjy9sJPS9dS0yTxVO6MYQ8YlGjGw,16071
12
- prefect/flows.py,sha256=aHr_PLR_bmFUO09hMUC0J5LapJya3zppZXsMC95uBxo,81466
13
- prefect/futures.py,sha256=I4yyicBo_kUxzzOV1mrSWqjvRzFm_8CD-JQf0Gchbos,9452
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=r9yPpvQcvKlnaoXvJfWPj8nbJZ9QiiyKDxtKRS-PxKQ,25061
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=GDpFM6UUMB5MkCDWyqo8F9ELnkskr1BTg4YdU_bnv7Q,20395
22
- prefect/task_engine.py,sha256=cd68Rdy9Ihb0x1ngBcJ_eSH9E1BCUkoDHuesqfmlNjQ,32219
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=adECMEbsP32KPYzrSasBtfhdFs-gHUxCnS6PXxVsCek,60312
27
- prefect/transactions.py,sha256=FwCrZfq3zVSiqgpNYNkAm1ihjFFauDAvzPYf-J5z26s,9151
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=EIvVQN01ZnLf6Yu-3_Ar1iHybDwJ6C767AAnqMhVxWo,12846
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=P9e69XYik9QBSlUYyq1OcyqyUJaFjvW8jm6nfMkZ7uA,4304
85
+ prefect/concurrency/asyncio.py,sha256=sn5Wm6pOnU0bnfJiwltwWBcouj-rhGg27Zkzw7zfVuA,4684
83
86
  prefect/concurrency/events.py,sha256=rQLSBwcYCzvdKTXr7bLjgMIklllObxB33MAL6dylXAM,1802
84
- prefect/concurrency/services.py,sha256=JP74IUjdoDoljy-BdZQTa1IOEuSZZxMgsMyr7KJAYS0,2598
85
- prefect/concurrency/sync.py,sha256=gXyiiA0bul7jjpHWPm6su8pFdBiMOekhu9FHnjiPWBQ,3339
86
- prefect/deployments/__init__.py,sha256=9MnrUjil46PHWq-ni-3BLmgyJWAzlzORF5XZA-KdhYc,432
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=5f3pFGxw_DOA9k169KFIzILTZ_TkKIWI9DLhl1iK1Ck,44716
91
- prefect/deployments/schedules.py,sha256=c8ONC9t_buAWVxfcWAQEGhuIkU5rAjetuvU87PLJx48,2031
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=A2q9LhYQbbOZd-W5VG_Uy8KbEkttXu7Fj2DiQrOUhL0,17758
113
- prefect/infrastructure/provisioners/container_instance.py,sha256=-PNd-A088SnEDhj3m7foSE9iBsmVqoHUEmtT26XtJt8,41294
114
- prefect/infrastructure/provisioners/ecs.py,sha256=PVH3ByIqm0aoJ39nDpW1LsSsi7rcERFBdqO16KxIUic,47736
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/cache_policies.py,sha256=2R6tQioujG2qr5rQgg7kPK-SLMM1lUHplEKcOfJbrh0,4761
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=7WhYpDXQwtO4XyfLKNk27QuFXnrLKD4rJPiSfUab6OI,45098
133
- prefect/runner/server.py,sha256=UN44qjP1SjuA5OCp5PoPhRAfKXMVGEm9E2b-bWB-suk,10519
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=b3_kzba6kXRtzQNcgyigrY4N4LuH_jr6J_L2kOD9lHU,20310
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.0rc4.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
178
- prefect_client-3.0.0rc4.dist-info/METADATA,sha256=eFZ99z6jEN7BfrG1CodVrcYG7w13-pzn50J0ayzgO6I,7392
179
- prefect_client-3.0.0rc4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
180
- prefect_client-3.0.0rc4.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
181
- prefect_client-3.0.0rc4.dist-info/RECORD,,
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,,