prefect-client 3.0.2__py3-none-any.whl → 3.0.4__py3-none-any.whl

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