prefect-client 3.0.0rc9__py3-none-any.whl → 3.0.0rc10__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/task_runners.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import abc
2
2
  import asyncio
3
3
  import sys
4
+ import threading
4
5
  import uuid
5
6
  from concurrent.futures import ThreadPoolExecutor
6
7
  from contextvars import copy_context
@@ -41,8 +42,8 @@ if TYPE_CHECKING:
41
42
 
42
43
  P = ParamSpec("P")
43
44
  T = TypeVar("T")
44
- F = TypeVar("F", bound=PrefectFuture)
45
45
  R = TypeVar("R")
46
+ F = TypeVar("F", bound=PrefectFuture, default=PrefectConcurrentFuture)
46
47
 
47
48
 
48
49
  class TaskRunner(abc.ABC, Generic[F]):
@@ -220,6 +221,7 @@ class ThreadPoolTaskRunner(TaskRunner[PrefectConcurrentFuture]):
220
221
  super().__init__()
221
222
  self._executor: Optional[ThreadPoolExecutor] = None
222
223
  self._max_workers = sys.maxsize if max_workers is None else max_workers
224
+ self._cancel_events: Dict[uuid.UUID, threading.Event] = {}
223
225
 
224
226
  def duplicate(self) -> "ThreadPoolTaskRunner":
225
227
  return type(self)(max_workers=self._max_workers)
@@ -270,6 +272,8 @@ class ThreadPoolTaskRunner(TaskRunner[PrefectConcurrentFuture]):
270
272
  from prefect.task_engine import run_task_async, run_task_sync
271
273
 
272
274
  task_run_id = uuid.uuid4()
275
+ cancel_event = threading.Event()
276
+ self._cancel_events[task_run_id] = cancel_event
273
277
  context = copy_context()
274
278
 
275
279
  flow_run_ctx = FlowRunContext.get()
@@ -280,31 +284,29 @@ class ThreadPoolTaskRunner(TaskRunner[PrefectConcurrentFuture]):
280
284
  else:
281
285
  self.logger.info(f"Submitting task {task.name} to thread pool executor...")
282
286
 
287
+ submit_kwargs = dict(
288
+ task=task,
289
+ task_run_id=task_run_id,
290
+ parameters=parameters,
291
+ wait_for=wait_for,
292
+ return_type="state",
293
+ dependencies=dependencies,
294
+ context=dict(cancel_event=cancel_event),
295
+ )
296
+
283
297
  if task.isasync:
284
298
  # TODO: Explore possibly using a long-lived thread with an event loop
285
299
  # for better performance
286
300
  future = self._executor.submit(
287
301
  context.run,
288
302
  asyncio.run,
289
- run_task_async(
290
- task=task,
291
- task_run_id=task_run_id,
292
- parameters=parameters,
293
- wait_for=wait_for,
294
- return_type="state",
295
- dependencies=dependencies,
296
- ),
303
+ run_task_async(**submit_kwargs),
297
304
  )
298
305
  else:
299
306
  future = self._executor.submit(
300
307
  context.run,
301
308
  run_task_sync,
302
- task=task,
303
- task_run_id=task_run_id,
304
- parameters=parameters,
305
- wait_for=wait_for,
306
- return_type="state",
307
- dependencies=dependencies,
309
+ **submit_kwargs,
308
310
  )
309
311
  prefect_future = PrefectConcurrentFuture(
310
312
  task_run_id=task_run_id, wrapped_future=future
@@ -337,14 +339,24 @@ class ThreadPoolTaskRunner(TaskRunner[PrefectConcurrentFuture]):
337
339
  ):
338
340
  return super().map(task, parameters, wait_for)
339
341
 
342
+ def cancel_all(self):
343
+ for event in self._cancel_events.values():
344
+ event.set()
345
+ self.logger.debug("Set cancel event")
346
+
347
+ if self._executor is not None:
348
+ self._executor.shutdown(cancel_futures=True)
349
+ self._executor = None
350
+
340
351
  def __enter__(self):
341
352
  super().__enter__()
342
353
  self._executor = ThreadPoolExecutor(max_workers=self._max_workers)
343
354
  return self
344
355
 
345
356
  def __exit__(self, exc_type, exc_value, traceback):
357
+ self.cancel_all()
346
358
  if self._executor is not None:
347
- self._executor.shutdown()
359
+ self._executor.shutdown(cancel_futures=True)
348
360
  self._executor = None
349
361
  super().__exit__(exc_type, exc_value, traceback)
350
362
 
prefect/task_worker.py CHANGED
@@ -37,6 +37,7 @@ from prefect.utilities.annotations import NotSet
37
37
  from prefect.utilities.asyncutils import asyncnullcontext, sync_compatible
38
38
  from prefect.utilities.engine import emit_task_run_state_change_event, propose_state
39
39
  from prefect.utilities.processutils import _register_signal
40
+ from prefect.utilities.urls import url_for
40
41
 
41
42
  logger = get_logger("task_worker")
42
43
 
@@ -288,10 +289,6 @@ class TaskWorker:
288
289
  await self._client._client.delete(f"/task_runs/{task_run.id}")
289
290
  return
290
291
 
291
- logger.debug(
292
- f"Submitting run {task_run.name!r} of task {task.name!r} to engine"
293
- )
294
-
295
292
  try:
296
293
  new_state = Pending()
297
294
  new_state.state_details.deferred = True
@@ -326,6 +323,11 @@ class TaskWorker:
326
323
  validated_state=state,
327
324
  )
328
325
 
326
+ if task_run_url := url_for(task_run):
327
+ logger.info(
328
+ f"Submitting task run {task_run.name!r} to engine. View run in the UI at {task_run_url!r}"
329
+ )
330
+
329
331
  if task.isasync:
330
332
  await run_task_async(
331
333
  task=task,
prefect/tasks.py CHANGED
@@ -50,7 +50,6 @@ from prefect.futures import PrefectDistributedFuture, PrefectFuture, PrefectFutu
50
50
  from prefect.logging.loggers import get_logger
51
51
  from prefect.results import ResultFactory, ResultSerializer, ResultStorage
52
52
  from prefect.settings import (
53
- PREFECT_RESULTS_PERSIST_BY_DEFAULT,
54
53
  PREFECT_TASK_DEFAULT_RETRIES,
55
54
  PREFECT_TASK_DEFAULT_RETRY_DELAY_SECONDS,
56
55
  )
@@ -67,6 +66,7 @@ from prefect.utilities.callables import (
67
66
  )
68
67
  from prefect.utilities.hashing import hash_objects
69
68
  from prefect.utilities.importtools import to_qualified_name
69
+ from prefect.utilities.urls import url_for
70
70
 
71
71
  if TYPE_CHECKING:
72
72
  from prefect.client.orchestration import PrefectClient
@@ -387,9 +387,20 @@ class Task(Generic[P, R]):
387
387
  self.cache_expiration = cache_expiration
388
388
  self.refresh_cache = refresh_cache
389
389
 
390
+ # result persistence settings
390
391
  if persist_result is None:
391
- persist_result = PREFECT_RESULTS_PERSIST_BY_DEFAULT.value()
392
- if not persist_result:
392
+ if any(
393
+ [
394
+ cache_policy and cache_policy != NONE and cache_policy != NotSet,
395
+ cache_key_fn is not None,
396
+ result_storage_key is not None,
397
+ result_storage is not None,
398
+ result_serializer is not None,
399
+ ]
400
+ ):
401
+ persist_result = True
402
+
403
+ if persist_result is False:
393
404
  self.cache_policy = None if cache_policy is None else NONE
394
405
  if cache_policy and cache_policy is not NotSet and cache_policy != NONE:
395
406
  logger.warning(
@@ -428,6 +439,14 @@ class Task(Generic[P, R]):
428
439
 
429
440
  self.retry_jitter_factor = retry_jitter_factor
430
441
  self.persist_result = persist_result
442
+
443
+ if result_storage and not isinstance(result_storage, str):
444
+ if getattr(result_storage, "_block_document_id", None) is None:
445
+ raise TypeError(
446
+ "Result storage configuration must be persisted server-side."
447
+ " Please call `.save()` on your block before passing it in."
448
+ )
449
+
431
450
  self.result_storage = result_storage
432
451
  self.result_serializer = result_serializer
433
452
  self.result_storage_key = result_storage_key
@@ -1282,14 +1301,20 @@ class Task(Generic[P, R]):
1282
1301
  # Convert the call args/kwargs to a parameter dict
1283
1302
  parameters = get_call_parameters(self.fn, args, kwargs)
1284
1303
 
1285
- task_run = run_coro_as_sync(
1304
+ task_run: TaskRun = run_coro_as_sync(
1286
1305
  self.create_run(
1287
1306
  parameters=parameters,
1288
1307
  deferred=True,
1289
1308
  wait_for=wait_for,
1290
1309
  extra_task_inputs=dependencies,
1291
1310
  )
1292
- )
1311
+ ) # type: ignore
1312
+
1313
+ if task_run_url := url_for(task_run):
1314
+ logger.info(
1315
+ f"Created task run {task_run.name!r}. View it in the UI at {task_run_url!r}"
1316
+ )
1317
+
1293
1318
  return PrefectDistributedFuture(task_run_id=task_run.id)
1294
1319
 
1295
1320
  def delay(self, *args: P.args, **kwargs: P.kwargs) -> PrefectDistributedFuture:
prefect/transactions.py CHANGED
@@ -22,7 +22,7 @@ from prefect.records.result_store import ResultFactoryStore
22
22
  from prefect.results import (
23
23
  BaseResult,
24
24
  ResultFactory,
25
- get_or_create_default_result_storage,
25
+ get_default_result_storage,
26
26
  )
27
27
  from prefect.utilities.asyncutils import run_coro_as_sync
28
28
  from prefect.utilities.collections import AutoEnum
@@ -297,7 +297,7 @@ def transaction(
297
297
  }
298
298
  )
299
299
  else:
300
- default_storage = get_or_create_default_result_storage(_sync=True)
300
+ default_storage = get_default_result_storage(_sync=True)
301
301
  if existing_factory:
302
302
  new_factory = existing_factory.model_copy(
303
303
  update={
@@ -184,7 +184,7 @@ def run_coro_as_sync(
184
184
  coroutine: Awaitable[R],
185
185
  force_new_thread: bool = False,
186
186
  wait_for_result: bool = True,
187
- ) -> R:
187
+ ) -> Union[R, None]:
188
188
  """
189
189
  Runs a coroutine from a synchronous context, as if it were a synchronous
190
190
  function.
@@ -216,7 +216,7 @@ def run_coro_as_sync(
216
216
  else:
217
217
  raise TypeError("`coroutine` must be a coroutine object")
218
218
 
219
- async def coroutine_wrapper():
219
+ async def coroutine_wrapper() -> Union[R, None]:
220
220
  """
221
221
  Set flags so that children (and grandchildren...) of this task know they are running in a new
222
222
  thread and do not try to run on the run_sync thread, which would cause a
@@ -245,7 +245,12 @@ def run_coro_as_sync(
245
245
  call = _cast_to_call(coroutine_wrapper)
246
246
  runner = get_run_sync_loop()
247
247
  runner.submit(call)
248
- return call.result()
248
+ try:
249
+ return call.result()
250
+ except KeyboardInterrupt:
251
+ call.cancel()
252
+ logger.debug("Coroutine cancelled due to KeyboardInterrupt.")
253
+ raise
249
254
 
250
255
 
251
256
  async def run_sync_in_worker_thread(
@@ -422,7 +422,7 @@ def safe_load_namespace(source_code: str):
422
422
  logger.debug("Failed to import from %s: %s", node.module, e)
423
423
 
424
424
  # Handle local definitions
425
- for node in ast.walk(parsed_code):
425
+ for node in parsed_code.body:
426
426
  if isinstance(node, (ast.ClassDef, ast.FunctionDef, ast.Assign)):
427
427
  try:
428
428
  # Compile and execute each class and function definition and assignment
@@ -1,6 +1,6 @@
1
1
  from asyncio import CancelledError
2
2
  from contextlib import contextmanager
3
- from typing import Optional
3
+ from typing import Optional, Type
4
4
 
5
5
  from prefect._internal.concurrency.cancellation import (
6
6
  cancel_async_after,
@@ -8,8 +8,19 @@ from prefect._internal.concurrency.cancellation import (
8
8
  )
9
9
 
10
10
 
11
+ def fail_if_not_timeout_error(timeout_exc_type: Type[Exception]) -> None:
12
+ if not issubclass(timeout_exc_type, TimeoutError):
13
+ raise ValueError(
14
+ "The `timeout_exc_type` argument must be a subclass of `TimeoutError`."
15
+ )
16
+
17
+
11
18
  @contextmanager
12
- def timeout_async(seconds: Optional[float] = None):
19
+ def timeout_async(
20
+ seconds: Optional[float] = None, timeout_exc_type: Type[TimeoutError] = TimeoutError
21
+ ):
22
+ fail_if_not_timeout_error(timeout_exc_type)
23
+
13
24
  if seconds is None:
14
25
  yield
15
26
  return
@@ -18,11 +29,15 @@ def timeout_async(seconds: Optional[float] = None):
18
29
  with cancel_async_after(timeout=seconds):
19
30
  yield
20
31
  except CancelledError:
21
- raise TimeoutError(f"Scope timed out after {seconds} second(s).")
32
+ raise timeout_exc_type(f"Scope timed out after {seconds} second(s).")
22
33
 
23
34
 
24
35
  @contextmanager
25
- def timeout(seconds: Optional[float] = None):
36
+ def timeout(
37
+ seconds: Optional[float] = None, timeout_exc_type: Type[TimeoutError] = TimeoutError
38
+ ):
39
+ fail_if_not_timeout_error(timeout_exc_type)
40
+
26
41
  if seconds is None:
27
42
  yield
28
43
  return
@@ -31,4 +46,4 @@ def timeout(seconds: Optional[float] = None):
31
46
  with cancel_sync_after(timeout=seconds):
32
47
  yield
33
48
  except CancelledError:
34
- raise TimeoutError(f"Scope timed out after {seconds} second(s).")
49
+ raise timeout_exc_type(f"Scope timed out after {seconds} second(s).")
@@ -0,0 +1,6 @@
1
+ """
2
+ 2024-06-27: This surfaces an actionable error message for moved or removed objects in Prefect 3.0 upgrade.
3
+ """
4
+ from prefect._internal.compatibility.migration import getattr_migration
5
+
6
+ __getattr__ = getattr_migration(__name__)
@@ -0,0 +1,6 @@
1
+ """
2
+ 2024-06-27: This surfaces an actionable error message for moved or removed objects in Prefect 3.0 upgrade.
3
+ """
4
+ from prefect._internal.compatibility.migration import getattr_migration
5
+
6
+ __getattr__ = getattr_migration(__name__)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefect-client
3
- Version: 3.0.0rc9
3
+ Version: 3.0.0rc10
4
4
  Summary: Workflow orchestration and management.
5
5
  Home-page: https://www.prefect.io
6
6
  Author: Prefect Technologies, Inc.
@@ -58,7 +58,7 @@ Requires-Dist: sniffio <2.0.0,>=1.3.0
58
58
  Requires-Dist: toml >=0.10.0
59
59
  Requires-Dist: typing-extensions <5.0.0,>=4.5.0
60
60
  Requires-Dist: ujson <6.0.0,>=5.8.0
61
- Requires-Dist: uvicorn <0.29.0,>=0.14.0
61
+ Requires-Dist: uvicorn !=0.29.0,>=0.14.0
62
62
  Requires-Dist: websockets <13.0,>=10.4
63
63
  Requires-Dist: wrapt >=1.16.0
64
64
  Requires-Dist: importlib-metadata >=4.4 ; python_version < "3.10"
@@ -1,32 +1,33 @@
1
1
  prefect/.prefectignore,sha256=awSprvKT0vI8a64mEOLrMxhxqcO-b0ERQeYpA2rNKVQ,390
2
2
  prefect/__init__.py,sha256=rFlBikby0TcAmljqECcleQE_se15eh1gLp5iac0ZhsU,3301
3
3
  prefect/_version.py,sha256=I9JsXwt7BjAAbMEZgtmE3a6dJ2jqV-wqWto9D6msb3k,24597
4
+ prefect/agent.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
4
5
  prefect/artifacts.py,sha256=G-jCyce3XGtTyQpCk_s3L7e-TWFyJY8Dcnk_i4_CsY4,12647
5
6
  prefect/automations.py,sha256=NlQ62GPJzy-gnWQqX7c6CQJKw7p60WLGDAFcy82vtg4,5613
6
7
  prefect/cache_policies.py,sha256=uEKNGO-PJ3N35B2tjhRDtQULN6ok72D9raIoJaUyXk0,6365
7
- prefect/context.py,sha256=OEmbC61D3l0E50HIaMlVNNJShhYC6I1-4TQhpP321tw,19480
8
+ prefect/context.py,sha256=GmCFJDsj8mEYBph8q_mQpzDebk3P43EeaXz-SiMeAmQ,19698
8
9
  prefect/engine.py,sha256=BpmDbe6miZcTl1vRkxfCPYcWSXADLigGPCagFwucMz0,1976
9
- prefect/exceptions.py,sha256=kRiEX6qpT9errs0SuYJDYG7ioMNddTvqK7gT8RVFajk,11076
10
- prefect/filesystems.py,sha256=HrPoehZKpuVxzWDXaTiuJqgVCgxlQ4lyTEZKSYKiZUc,17169
11
- prefect/flow_engine.py,sha256=zTPQ_qSIKfDdmzQgtLKmAXGQVWWp6JUGVhoB6OVoRVM,26896
10
+ prefect/exceptions.py,sha256=3s69Z_IC3HKF6BKxcHrMPXkKdYwfbEfaTjy4-5LOtQ0,11132
11
+ prefect/filesystems.py,sha256=rbFvlqHXeeo71nK1Y5I0-ucmGOYUcdkbb6N2vpsRcWE,17229
12
+ prefect/flow_engine.py,sha256=niDSb2xeKvtE4ZZmkUR3zF-khqPFhpWuORnxZ_bJOD0,29246
12
13
  prefect/flow_runs.py,sha256=EaXRIQTOnwnA0fO7_EjwafFRmS57K_CRy0Xsz3JDIhc,16070
13
- prefect/flows.py,sha256=mninDvvSt2pcfyGIr1YOsHKbGfNjfcOTx3651VAaUBw,79159
14
+ prefect/flows.py,sha256=KfAulSaYhodoeLVROthtYWeVpchRhv7u9dsgYbR4Kzg,80833
14
15
  prefect/futures.py,sha256=nGD195sLosqBIpBtESLeVMKAorUVRNLstipiqs6e7w8,12153
15
16
  prefect/main.py,sha256=bab5nBn37a6gmxdPbTlRS2a9Cf0KY0GaCotDOSbcQ7M,1930
16
17
  prefect/manifests.py,sha256=477XcmfdC_yE81wT6zIAKnEUEJ0lH9ZLfOVSgX2FohE,676
17
18
  prefect/plugins.py,sha256=7AICJzHIu8iAeF9vl9wAYm28pR_k7dkdnm3OyJRfCv4,2229
18
19
  prefect/profiles.toml,sha256=Fs8hD_BdWHZgAijgk8pK_Zx-Pm-YFixqDIfEP6fM-qU,38
19
20
  prefect/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- prefect/results.py,sha256=V-x--5xlFok5AZvAxVGeXjCF_s_v-KtZaqZwPawcCkQ,27074
21
- prefect/serializers.py,sha256=8ON--RmaLX3Td3Rpd1lshGcqWyjlCFkmO3sblxsdT_c,8699
22
- prefect/settings.py,sha256=PtlBckPyMY2qnmvHRtOkmlgbczcBLMHZMuE09N5fWhU,70566
21
+ prefect/results.py,sha256=gpX2pGIYyVfxMaVJkic5i1KbJ4RBARAoIizDL_C3auI,26152
22
+ prefect/serializers.py,sha256=Lo41EM0_qGzcfB_63390Izeo3DdK6cY6VZfxa9hpSGQ,8712
23
+ prefect/settings.py,sha256=-x6n7WpSgflBPCFRx9mP4i9cqDtMWVI3IKU7GFTRmP4,69747
23
24
  prefect/states.py,sha256=lw22xucH46cN9stkxiV9ByIvq689mH5iL3gErri-Y18,22207
24
- prefect/task_engine.py,sha256=yibsXJw5hzYXjb5qAgqBnUcXMCiPhJZy1hDtiPmj1uA,33050
25
- prefect/task_runners.py,sha256=KulKKV1_Pkt7Pt2to3NLc1tp-idpV8EXdSuFJXS8ZyY,14622
25
+ prefect/task_engine.py,sha256=94Acrmq04i-KjJtSa72_ofGAEfs_lKBAYqhRww0jH24,34957
26
+ prefect/task_runners.py,sha256=W1n0yMwbDIqnvffFVJADo9MGEbLaYkzWk52rqgnkMY4,15019
26
27
  prefect/task_runs.py,sha256=eDWYH5H1K4SyduhKmn3GzO6vM3fZSwOZxAb8KhkMGsk,7798
27
- prefect/task_worker.py,sha256=fyRP5K1U6LGMBoCZOPtbxKs0ay2A6o2gJiw1to0vNYk,17219
28
- prefect/tasks.py,sha256=Z_8yQPTTlm0ujNudHqCOioQSsTBH8irmF5WJY2uOPSQ,61668
29
- prefect/transactions.py,sha256=15ZrRp7Csp2uNol8rMvBnZLBKEvlIGiUFsMjk63ha6c,10480
28
+ prefect/task_worker.py,sha256=dH9hf_vKsOlWtXinp2-1d2wk2YCa69QyuH8YAV_Bp28,17342
29
+ prefect/tasks.py,sha256=VkliQAiiLiYSpBQvY1Xc4huqmGgMlgX0KChlBPOX9IY,62599
30
+ prefect/transactions.py,sha256=UBEFArEn1jWlacvHtYBxdtK6k57I4bHcCl5n8LDblRI,10460
30
31
  prefect/variables.py,sha256=-t5LVY0N-K4f0fa6YwruVVQqwnU3fGWBMYXXE32XPkA,4821
31
32
  prefect/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
33
  prefect/_internal/_logging.py,sha256=HvNHY-8P469o5u4LYEDBTem69XZEt1QUeUaLToijpak,810
@@ -35,7 +36,7 @@ prefect/_internal/pytz.py,sha256=WWl9x16rKFWequGmcOGs_ljpCDPf2LDHMyZp_4D8e6c,137
35
36
  prefect/_internal/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
37
  prefect/_internal/compatibility/deprecated.py,sha256=7vqE1_PAPS0cDalTfTumHWUIOqIzkbKvQl1iwHlfynQ,9205
37
38
  prefect/_internal/compatibility/experimental.py,sha256=nrIeeAe1vZ0yMb1cPw5AroVR6_msx-bzTeBLzY4au6o,5634
38
- prefect/_internal/compatibility/migration.py,sha256=WcxP0heqBXxlZHEdpGcTWHbAf2EBddSuQdt-z9ZykD4,5006
39
+ prefect/_internal/compatibility/migration.py,sha256=O9HrcqxfQ-RrIklH0uGxeXMrQejPz1hmsgrw8zDLJuw,6801
39
40
  prefect/_internal/concurrency/__init__.py,sha256=YlTwU9ryjPNwbJa45adLJY00t_DGCh1QrdtY9WdVFfw,2140
40
41
  prefect/_internal/concurrency/api.py,sha256=mE2IahRxGX1DgyxIryDXhF6gwhOJ-cdghsTjJtNil9U,7132
41
42
  prefect/_internal/concurrency/calls.py,sha256=UlNgzCoy3awKEPnMpexBSa1dk_2MNwCWoZ5YQODEmG4,15437
@@ -77,7 +78,7 @@ prefect/client/utilities.py,sha256=Qh1WdKLs8F_GuA04FeZ1GJsPYtiCN4DjKmLEaMfKmpQ,3
77
78
  prefect/client/schemas/__init__.py,sha256=KlyqFV-hMulMkNstBn_0ijoHoIwJZaBj6B1r07UmgvE,607
78
79
  prefect/client/schemas/actions.py,sha256=wiyq87MrHBVbZZVqA6IX4Gy_rw7sogLfqRSXK3Id0cc,28019
79
80
  prefect/client/schemas/filters.py,sha256=HyIYZQowhkHa_D6syj83zUp5uFEzA8UADLaS9mt1MTo,35305
80
- prefect/client/schemas/objects.py,sha256=oxFupZM77x8J6HdA8Vx1nVhz-w0WIBbklOhJmDqKYRQ,53538
81
+ prefect/client/schemas/objects.py,sha256=ot3nxARccG3viFuXp2bli_6JaGcO6I1_U_8gP-F2j0w,53547
81
82
  prefect/client/schemas/responses.py,sha256=xW9QKmVgBftSEmtuSr5gp9HBFvIDzF6aSFq-mhv7dE8,14948
82
83
  prefect/client/schemas/schedules.py,sha256=8rpqjOYtknu2-1n5_WD4cOplgu93P3mCyX86B22LfL4,13070
83
84
  prefect/client/schemas/sorting.py,sha256=EIQ6FUjUWMwk6fn6ckVLQLXOP-GI5kce7ftjUkDFWV0,2490
@@ -93,7 +94,7 @@ prefect/deployments/base.py,sha256=j2VUHkghXCqbfYJD8Joeh12Ejh4KCzr2DgVPRpDpbLw,1
93
94
  prefect/deployments/deployments.py,sha256=EvC9qBdvJRc8CHJqRjFTqtzx75SE8bpZOl5C-2eULyA,109
94
95
  prefect/deployments/flow_runs.py,sha256=eatcBD7pg-aaEqs9JxQQcKN_flf614O4gAvedAlRyNo,6803
95
96
  prefect/deployments/runner.py,sha256=wVz2Ltis_tOpWLvLzPuOBJBIsdWqs8aXY2oCOuwhssc,41763
96
- prefect/deployments/schedules.py,sha256=l1xOHBmJJ-VZFPTX4RWScJ802P-iE81Vzp4EniQ65k4,2004
97
+ prefect/deployments/schedules.py,sha256=KCYA6dOmLAoElHZuoWqdJn4Yno4TtOZtXfPOpTLb1cE,2046
97
98
  prefect/deployments/steps/__init__.py,sha256=Dlz9VqMRyG1Gal8dj8vfGpPr0LyQhZdvcciozkK8WoY,206
98
99
  prefect/deployments/steps/core.py,sha256=5vFf6BSpu992kkaYsvcPpsz-nZxFmayMIDmY9h0Hb8M,6846
99
100
  prefect/deployments/steps/pull.py,sha256=ylp3fd72hEfmY67LQs7sMwdcK6KKobsTZOeay-YUl8Q,7125
@@ -110,11 +111,12 @@ prefect/events/worker.py,sha256=UGwqnoOHmtvAh_Y9yJlEB6RfKmYRu4Xsc5l9LolHV_0,3434
110
111
  prefect/events/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
112
  prefect/events/cli/automations.py,sha256=WIZ3-EcDibjQB5BrMEx7OZ7UfOqP8VjCI1dNh64Nmg0,11425
112
113
  prefect/events/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
- prefect/events/schemas/automations.py,sha256=hZ7lbkJEhpHmyd118k_O7kl_i_lEnDifwsn2ZHyn8Po,14380
114
+ prefect/events/schemas/automations.py,sha256=he9_v0Oq8AtCJe5gMti5GDQiaGa50sM4Jz9soDf-upU,14396
114
115
  prefect/events/schemas/deployment_triggers.py,sha256=i_BtKscXU9kOHAeqmxrYQr8itEYfuPIxAnCW3fo1YeE,3114
115
116
  prefect/events/schemas/events.py,sha256=RqosMukGfHvLPnYDcyxkm6VuifCeH5-aQ4POdMPmaUA,8649
116
117
  prefect/events/schemas/labelling.py,sha256=bU-XYaHXhI2MEBIHngth96R9D02m8HHb85KNcHZ_1Gc,3073
117
- prefect/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
+ prefect/infrastructure/__init__.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
119
+ prefect/infrastructure/base.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
118
120
  prefect/infrastructure/provisioners/__init__.py,sha256=wn240gHrQbien2g_g2A8Ujb2iFyjmDgMHLQ7tgQngf4,1706
119
121
  prefect/infrastructure/provisioners/cloud_run.py,sha256=K6_8AO_fZRfuI0hGx_EwvlRkiNPcmR5yD9P8B-QSjuc,17745
120
122
  prefect/infrastructure/provisioners/container_instance.py,sha256=ZaiaAOywMjbhZI6emzqsDQh-xBePajzjjMT_JY8lwNA,41281
@@ -150,7 +152,7 @@ prefect/types/__init__.py,sha256=SAHJDtWEGidTKXQACJ38nj6fq8r57Gj0Pwo4Gy7pVWs,223
150
152
  prefect/types/entrypoint.py,sha256=2FF03-wLPgtnqR_bKJDB2BsXXINPdu8ptY9ZYEZnXg8,328
151
153
  prefect/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
154
  prefect/utilities/annotations.py,sha256=bXB43j5Zsq5gaBcJe9qnszBlnNwCTwqSTgcu2OkkRLo,2776
153
- prefect/utilities/asyncutils.py,sha256=5wo5Ya3fimaRy353nApCde9lzXkDLMc_BJjHTg2WbIw,19797
155
+ prefect/utilities/asyncutils.py,sha256=9utKsWwvZ2q4ZgXEEPwqlAF9rQ_lavAo_4yZowICkJQ,19997
154
156
  prefect/utilities/callables.py,sha256=rkPPzwiVFRoVszSUq612s9S0v3nxcMC-rIwfXoJTn0E,24915
155
157
  prefect/utilities/collections.py,sha256=pPa_SZZq80cja6l99b3TV7hRQy366WnuWpOW_FnutMI,17259
156
158
  prefect/utilities/compat.py,sha256=mNQZDnzyKaOqy-OV-DnmH_dc7CNF5nQgW_EsA4xMr7g,906
@@ -160,7 +162,7 @@ prefect/utilities/dockerutils.py,sha256=kRozGQ7JO6Uxl-ljWtDryzxhf96rHL78aHYDh255
160
162
  prefect/utilities/engine.py,sha256=E5WSLg9XsvkEN56M8Q5Wl4k0INUpaqmvdToQPFjYWNo,30160
161
163
  prefect/utilities/filesystem.py,sha256=frAyy6qOeYa7c-jVbEUGZQEe6J1yF8I_SvUepPd59gI,4415
162
164
  prefect/utilities/hashing.py,sha256=EOwZLmoIZImuSTxAvVqInabxJ-4RpEfYeg9e2EDQF8o,1752
163
- prefect/utilities/importtools.py,sha256=-7-ROjtL6ZHLIrGll05h0c9Vv0L70XH8U9BQgeAPWAU,15411
165
+ prefect/utilities/importtools.py,sha256=YKmfib0_fYK_TaVjy8Ru1yxBI1OPH_Jh-utxlLpu2y8,15406
164
166
  prefect/utilities/math.py,sha256=wLwcKVidpNeWQi1TUIWWLHGjlz9UgboX9FUGhx_CQzo,2821
165
167
  prefect/utilities/names.py,sha256=x-stHcF7_tebJPvB1dz-5FvdXJXNBTg2kFZXSnIBBmk,1657
166
168
  prefect/utilities/processutils.py,sha256=yo_GO48pZzgn4A0IK5irTAoqyUCYvWKDSqHXCrtP8c4,14547
@@ -170,7 +172,7 @@ prefect/utilities/services.py,sha256=WoYOkWFnuW0K5I2RPx2g7F7WhuVgz39zWK9xkgiSHC8
170
172
  prefect/utilities/slugify.py,sha256=57Vb14t13F3zm1P65KAu8nVeAz0iJCd1Qc5eMG-R5y8,169
171
173
  prefect/utilities/templating.py,sha256=nAiOGMMHGbIDFkGYy-g-dzcbY311WfycdgAhsM3cLpY,13298
172
174
  prefect/utilities/text.py,sha256=eXGIsCcZ7h_6hy8T5GDQjL8GiKyktoOqavYub0QjgO4,445
173
- prefect/utilities/timeout.py,sha256=nxmuPxROIT-i8gPffpARuxnxu58H0vkmbjTVIgef0_0,805
175
+ prefect/utilities/timeout.py,sha256=BRDIOWnqcw3B7X9tIk83Y3n9nQrJzZgduDQ63z-ns8w,1286
174
176
  prefect/utilities/urls.py,sha256=GuiV3mk-XfzXx139ySyNQNbNaolA3T-hUZvW3T_PhXU,6396
175
177
  prefect/utilities/visualization.py,sha256=Lum4IvLQ0nHsdLt6GGzS3Wwo-828u1rmOKc5mmWu994,6502
176
178
  prefect/utilities/schema_tools/__init__.py,sha256=KsFsTEHQqgp89TkDpjggkgBBywoHQPxbx-m6YQhiNEI,322
@@ -178,11 +180,13 @@ prefect/utilities/schema_tools/hydration.py,sha256=Nitnmr35Mcn5z9NXIvh9DuZW5nCZx
178
180
  prefect/utilities/schema_tools/validation.py,sha256=zZHL_UFxAlgaUzi-qsEOrhWtZ7EkFQvPkX_YN1EJNTo,8414
179
181
  prefect/workers/__init__.py,sha256=8dP8SLZbWYyC_l9DRTQSE3dEbDgns5DZDhxkp_NfsbQ,35
180
182
  prefect/workers/base.py,sha256=62E0Q41pPr3eQdSBSUBfiR4WYx01OfuqUp5INRqHGgo,46942
183
+ prefect/workers/block.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
184
+ prefect/workers/cloud.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
181
185
  prefect/workers/process.py,sha256=vylkSSswaSCew-V65YW0HcxIxyKI-uqWkbSKpkkLamQ,9372
182
186
  prefect/workers/server.py,sha256=EfPiMxI7TVgkqpHkdPwSaYG-ydi99sG7jwXhkAcACbI,1519
183
187
  prefect/workers/utilities.py,sha256=VfPfAlGtTuDj0-Kb8WlMgAuOfgXCdrGAnKMapPSBrwc,2483
184
- prefect_client-3.0.0rc9.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
185
- prefect_client-3.0.0rc9.dist-info/METADATA,sha256=6OG1-1e_ST_fDwjKngTXj3p7NBcxfFJlsZ75vMm1gJE,7422
186
- prefect_client-3.0.0rc9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
187
- prefect_client-3.0.0rc9.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
188
- prefect_client-3.0.0rc9.dist-info/RECORD,,
188
+ prefect_client-3.0.0rc10.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
189
+ prefect_client-3.0.0rc10.dist-info/METADATA,sha256=IrvEmM3lkAlZER89HpIGYjfXrekuvfgaxXCE4875OQ4,7424
190
+ prefect_client-3.0.0rc10.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
191
+ prefect_client-3.0.0rc10.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
192
+ prefect_client-3.0.0rc10.dist-info/RECORD,,