prefect-client 3.1.8__py3-none-any.whl → 3.1.10__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 (44) hide show
  1. prefect/__init__.py +53 -59
  2. prefect/_internal/concurrency/services.py +6 -4
  3. prefect/_version.py +3 -3
  4. prefect/agent.py +3 -1
  5. prefect/artifacts.py +61 -74
  6. prefect/automations.py +27 -7
  7. prefect/client/cloud.py +0 -21
  8. prefect/client/schemas/objects.py +11 -0
  9. prefect/client/utilities.py +1 -15
  10. prefect/context.py +16 -27
  11. prefect/deployments/deployments.py +4 -2
  12. prefect/deployments/runner.py +3 -1
  13. prefect/engine.py +2 -1
  14. prefect/events/filters.py +2 -8
  15. prefect/exceptions.py +31 -41
  16. prefect/filesystems.py +2 -2
  17. prefect/flow_engine.py +2 -2
  18. prefect/flows.py +230 -186
  19. prefect/futures.py +42 -27
  20. prefect/infrastructure/__init__.py +3 -1
  21. prefect/infrastructure/base.py +3 -1
  22. prefect/locking/filesystem.py +8 -7
  23. prefect/locking/memory.py +5 -3
  24. prefect/locking/protocol.py +1 -1
  25. prefect/plugins.py +12 -10
  26. prefect/results.py +76 -19
  27. prefect/runner/runner.py +2 -3
  28. prefect/states.py +22 -10
  29. prefect/task_engine.py +1 -1
  30. prefect/telemetry/instrumentation.py +9 -10
  31. prefect/telemetry/processors.py +6 -6
  32. prefect/telemetry/services.py +68 -0
  33. prefect/utilities/engine.py +15 -1
  34. prefect/utilities/importtools.py +28 -21
  35. prefect/variables.py +2 -2
  36. prefect/workers/__init__.py +2 -0
  37. prefect/workers/base.py +6 -12
  38. prefect/workers/block.py +3 -1
  39. prefect/workers/cloud.py +3 -1
  40. {prefect_client-3.1.8.dist-info → prefect_client-3.1.10.dist-info}/METADATA +1 -1
  41. {prefect_client-3.1.8.dist-info → prefect_client-3.1.10.dist-info}/RECORD +44 -43
  42. {prefect_client-3.1.8.dist-info → prefect_client-3.1.10.dist-info}/LICENSE +0 -0
  43. {prefect_client-3.1.8.dist-info → prefect_client-3.1.10.dist-info}/WHEEL +0 -0
  44. {prefect_client-3.1.8.dist-info → prefect_client-3.1.10.dist-info}/top_level.txt +0 -0
@@ -7,9 +7,7 @@ from uuid import UUID
7
7
 
8
8
  from opentelemetry import metrics, trace
9
9
  from opentelemetry._logs import set_logger_provider
10
- from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
11
10
  from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter
12
- from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
13
11
  from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
14
12
  from opentelemetry.sdk._logs.export import SimpleLogRecordProcessor
15
13
  from opentelemetry.sdk.metrics import MeterProvider
@@ -19,6 +17,7 @@ from opentelemetry.sdk.trace import TracerProvider
19
17
 
20
18
  from .logging import set_log_handler
21
19
  from .processors import InFlightSpanProcessor
20
+ from .services import QueueingLogExporter, QueueingSpanExporter
22
21
 
23
22
  if TYPE_CHECKING:
24
23
  from opentelemetry.sdk._logs import LoggerProvider
@@ -83,11 +82,10 @@ def _setup_trace_provider(
83
82
  resource: Resource, headers: dict[str, str], telemetry_url: str
84
83
  ) -> TracerProvider:
85
84
  trace_provider = TracerProvider(resource=resource)
86
- otlp_span_exporter = OTLPSpanExporter(
87
- endpoint=_url_join(telemetry_url, "v1/traces"),
88
- headers=headers,
85
+ queueing_span_exporter = QueueingSpanExporter.instance(
86
+ _url_join(telemetry_url, "v1/traces"), tuple(headers.items())
89
87
  )
90
- trace_provider.add_span_processor(InFlightSpanProcessor(otlp_span_exporter))
88
+ trace_provider.add_span_processor(InFlightSpanProcessor(queueing_span_exporter))
91
89
  trace.set_tracer_provider(trace_provider)
92
90
 
93
91
  return trace_provider
@@ -112,11 +110,12 @@ def _setup_logger_provider(
112
110
  resource: Resource, headers: dict[str, str], telemetry_url: str
113
111
  ) -> LoggerProvider:
114
112
  logger_provider = LoggerProvider(resource=resource)
115
- otlp_exporter = OTLPLogExporter(
116
- endpoint=_url_join(telemetry_url, "v1/logs"),
117
- headers=headers,
113
+ queueing_log_exporter = QueueingLogExporter.instance(
114
+ _url_join(telemetry_url, "v1/logs"), tuple(headers.items())
115
+ )
116
+ logger_provider.add_log_record_processor(
117
+ SimpleLogRecordProcessor(queueing_log_exporter)
118
118
  )
119
- logger_provider.add_log_record_processor(SimpleLogRecordProcessor(otlp_exporter))
120
119
  set_logger_provider(logger_provider)
121
120
  log_handler = LoggingHandler(level=logging.NOTSET, logger_provider=logger_provider)
122
121
 
@@ -1,6 +1,6 @@
1
1
  import time
2
2
  from threading import Event, Lock, Thread
3
- from typing import TYPE_CHECKING, Dict, Optional
3
+ from typing import TYPE_CHECKING, Optional
4
4
 
5
5
  from opentelemetry.context import Context
6
6
  from opentelemetry.sdk.trace import Span, SpanProcessor
@@ -13,7 +13,7 @@ if TYPE_CHECKING:
13
13
  class InFlightSpanProcessor(SpanProcessor):
14
14
  def __init__(self, span_exporter: "SpanExporter"):
15
15
  self.span_exporter = span_exporter
16
- self._in_flight: Dict[int, Span] = {}
16
+ self._in_flight: dict[int, Span] = {}
17
17
  self._lock = Lock()
18
18
  self._stop_event = Event()
19
19
  self._export_thread = Thread(target=self._export_periodically, daemon=True)
@@ -30,10 +30,10 @@ class InFlightSpanProcessor(SpanProcessor):
30
30
  self.span_exporter.export(to_export)
31
31
 
32
32
  def _readable_span(self, span: "Span") -> "ReadableSpan":
33
- readable = span._readable_span()
34
- readable._end_time = time.time_ns()
35
- readable._attributes = {
36
- **(readable._attributes or {}),
33
+ readable = span._readable_span() # pyright: ignore[reportPrivateUsage]
34
+ readable._end_time = time.time_ns() # pyright: ignore[reportPrivateUsage]
35
+ readable._attributes = { # pyright: ignore[reportPrivateUsage]
36
+ **(readable._attributes or {}), # pyright: ignore[reportPrivateUsage]
37
37
  "prefect.in-flight": True,
38
38
  }
39
39
  return readable
@@ -0,0 +1,68 @@
1
+ from collections.abc import Sequence
2
+ from typing import Any, Protocol, TypeVar
3
+
4
+ from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
5
+ from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
6
+ from opentelemetry.sdk._logs import LogData
7
+ from opentelemetry.sdk._logs.export import LogExporter
8
+ from opentelemetry.sdk.trace import ReadableSpan
9
+ from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult
10
+
11
+ from prefect._internal.concurrency.services import BatchedQueueService
12
+
13
+ BatchItem = TypeVar("BatchItem", ReadableSpan, LogData)
14
+ T_contra = TypeVar("T_contra", contravariant=True)
15
+
16
+
17
+ class OTLPExporter(Protocol[T_contra]):
18
+ def export(self, __items: Sequence[T_contra]) -> Any:
19
+ ...
20
+
21
+ def shutdown(self) -> Any:
22
+ ...
23
+
24
+
25
+ class BaseQueueingExporter(BatchedQueueService[BatchItem]):
26
+ _max_batch_size = 512
27
+ _min_interval = 2.0
28
+
29
+ def __init__(self, otlp_exporter: OTLPExporter[BatchItem]) -> None:
30
+ super().__init__()
31
+ self._otlp_exporter = otlp_exporter
32
+
33
+ async def _handle_batch(self, items: list[BatchItem]) -> None:
34
+ try:
35
+ self._otlp_exporter.export(items)
36
+ except Exception as e:
37
+ self._logger.exception(f"Failed to export batch: {e}")
38
+ raise
39
+
40
+ def shutdown(self) -> None:
41
+ if self._stopped:
42
+ return
43
+
44
+ self.drain()
45
+ self._otlp_exporter.shutdown()
46
+
47
+
48
+ class QueueingSpanExporter(BaseQueueingExporter[ReadableSpan], SpanExporter):
49
+ _otlp_exporter: OTLPSpanExporter
50
+
51
+ def __init__(self, endpoint: str, headers: tuple[tuple[str, str]]):
52
+ super().__init__(OTLPSpanExporter(endpoint=endpoint, headers=dict(headers)))
53
+
54
+ def export(self, spans: Sequence[ReadableSpan]) -> SpanExportResult:
55
+ for item in spans:
56
+ self.send(item)
57
+ return SpanExportResult.SUCCESS
58
+
59
+
60
+ class QueueingLogExporter(BaseQueueingExporter[LogData], LogExporter):
61
+ _otlp_exporter: OTLPLogExporter
62
+
63
+ def __init__(self, endpoint: str, headers: tuple[tuple[str, str]]) -> None:
64
+ super().__init__(OTLPLogExporter(endpoint=endpoint, headers=dict(headers)))
65
+
66
+ def export(self, batch: Sequence[LogData]) -> None:
67
+ for item in batch:
68
+ self.send(item)
@@ -18,6 +18,7 @@ from typing import (
18
18
  from uuid import UUID
19
19
 
20
20
  import anyio
21
+ from opentelemetry import propagate, trace
21
22
  from typing_extensions import TypeIs
22
23
 
23
24
  import prefect
@@ -767,6 +768,19 @@ def resolve_to_final_result(expr: Any, context: dict[str, Any]) -> Any:
767
768
  result = state.result(raise_on_failure=False, fetch=True)
768
769
  if asyncio.iscoroutine(result):
769
770
  result = run_coro_as_sync(result)
771
+
772
+ if state.state_details.traceparent:
773
+ parameter_context = propagate.extract(
774
+ {"traceparent": state.state_details.traceparent}
775
+ )
776
+ trace.get_current_span().add_link(
777
+ context=trace.get_current_span(parameter_context).get_span_context(),
778
+ attributes={
779
+ "prefect.input.name": context["parameter_name"],
780
+ "prefect.input.type": type(result).__name__,
781
+ },
782
+ )
783
+
770
784
  return result
771
785
 
772
786
 
@@ -796,7 +810,7 @@ def resolve_inputs_sync(
796
810
  return_data=return_data,
797
811
  max_depth=max_depth,
798
812
  remove_annotations=True,
799
- context={},
813
+ context={"parameter_name": parameter},
800
814
  )
801
815
  except UpstreamTaskError:
802
816
  raise
@@ -4,6 +4,7 @@ import importlib.util
4
4
  import os
5
5
  import runpy
6
6
  import sys
7
+ import threading
7
8
  import warnings
8
9
  from collections.abc import Iterable, Sequence
9
10
  from importlib.abc import Loader, MetaPathFinder
@@ -23,6 +24,16 @@ from prefect.utilities.filesystem import filename, is_local_path, tmpchdir
23
24
 
24
25
  logger: Logger = get_logger(__name__)
25
26
 
27
+ _sys_path_lock: Optional[threading.Lock] = None
28
+
29
+
30
+ def _get_sys_path_lock() -> threading.Lock:
31
+ """Get the global sys.path lock, initializing it if necessary."""
32
+ global _sys_path_lock
33
+ if _sys_path_lock is None:
34
+ _sys_path_lock = threading.Lock()
35
+ return _sys_path_lock
36
+
26
37
 
27
38
  def to_qualified_name(obj: Any) -> str:
28
39
  """
@@ -135,32 +146,26 @@ def objects_from_script(
135
146
 
136
147
 
137
148
  def load_script_as_module(path: str) -> ModuleType:
138
- """
139
- Execute a script at the given path.
149
+ """Execute a script at the given path.
140
150
 
141
- Sets the module name to `__prefect_loader__`.
151
+ Sets the module name to a unique identifier to ensure thread safety.
152
+ Uses a lock to safely modify sys.path for relative imports.
142
153
 
143
154
  If an exception occurs during execution of the script, a
144
155
  `prefect.exceptions.ScriptError` is created to wrap the exception and raised.
145
-
146
- During the duration of this function call, `sys` is modified to support loading.
147
- These changes are reverted after completion, but this function is not thread safe
148
- and use of it in threaded contexts may result in undesirable behavior.
149
-
150
- See https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly
151
156
  """
152
- # We will add the parent directory to search locations to support relative imports
153
- # during execution of the script
154
157
  if not path.endswith(".py"):
155
158
  raise ValueError(f"The provided path does not point to a python file: {path!r}")
156
159
 
157
160
  parent_path = str(Path(path).resolve().parent)
158
161
  working_directory = os.getcwd()
159
162
 
163
+ # Generate unique module name for thread safety
164
+ module_name = f"__prefect_loader_{id(path)}__"
165
+
160
166
  spec = importlib.util.spec_from_file_location(
161
- "__prefect_loader__",
167
+ module_name,
162
168
  path,
163
- # Support explicit relative imports i.e. `from .foo import bar`
164
169
  submodule_search_locations=[parent_path, working_directory],
165
170
  )
166
171
  if TYPE_CHECKING:
@@ -168,19 +173,21 @@ def load_script_as_module(path: str) -> ModuleType:
168
173
  assert spec.loader is not None
169
174
 
170
175
  module = importlib.util.module_from_spec(spec)
171
- sys.modules["__prefect_loader__"] = module
176
+ sys.modules[module_name] = module
172
177
 
173
- # Support implicit relative imports i.e. `from foo import bar`
174
- sys.path.insert(0, working_directory)
175
- sys.path.insert(0, parent_path)
176
178
  try:
177
- spec.loader.exec_module(module)
179
+ with _get_sys_path_lock():
180
+ sys.path.insert(0, working_directory)
181
+ sys.path.insert(0, parent_path)
182
+ try:
183
+ spec.loader.exec_module(module)
184
+ finally:
185
+ sys.path.remove(parent_path)
186
+ sys.path.remove(working_directory)
178
187
  except Exception as exc:
179
188
  raise ScriptError(user_exc=exc, path=path) from exc
180
189
  finally:
181
- sys.modules.pop("__prefect_loader__")
182
- sys.path.remove(parent_path)
183
- sys.path.remove(working_directory)
190
+ sys.modules.pop(module_name)
184
191
 
185
192
  return module
186
193
 
prefect/variables.py CHANGED
@@ -1,4 +1,4 @@
1
- from typing import Optional
1
+ from typing import Any, Callable, Optional
2
2
 
3
3
  from pydantic import BaseModel, Field
4
4
 
@@ -256,4 +256,4 @@ class Variable(BaseModel):
256
256
  return False
257
257
 
258
258
 
259
- __getattr__ = getattr_migration(__name__)
259
+ __getattr__: Callable[[str], Any] = getattr_migration(__name__)
@@ -1 +1,3 @@
1
1
  from .process import ProcessWorker
2
+
3
+ __all__ = ["ProcessWorker"]
prefect/workers/base.py CHANGED
@@ -18,7 +18,6 @@ from typing_extensions import Literal
18
18
  import prefect
19
19
  from prefect._internal.schemas.validators import return_v_or_none
20
20
  from prefect.client.base import ServerType
21
- from prefect.client.cloud import CloudClient, get_cloud_client
22
21
  from prefect.client.orchestration import PrefectClient, get_client
23
22
  from prefect.client.schemas.actions import WorkPoolCreate, WorkPoolUpdate
24
23
  from prefect.client.schemas.objects import (
@@ -441,7 +440,6 @@ class BaseWorker(abc.ABC):
441
440
  self._exit_stack: AsyncExitStack = AsyncExitStack()
442
441
  self._runs_task_group: Optional[anyio.abc.TaskGroup] = None
443
442
  self._client: Optional[PrefectClient] = None
444
- self._cloud_client: Optional[CloudClient] = None
445
443
  self._last_polled_time: pendulum.DateTime = pendulum.now("utc")
446
444
  self._limit = limit
447
445
  self._limiter: Optional[anyio.CapacityLimiter] = None
@@ -637,11 +635,6 @@ class BaseWorker(abc.ABC):
637
635
  await self._exit_stack.enter_async_context(self._client)
638
636
  await self._exit_stack.enter_async_context(self._runs_task_group)
639
637
 
640
- if self._client.server_type == ServerType.CLOUD:
641
- self._cloud_client = await self._exit_stack.enter_async_context(
642
- get_cloud_client()
643
- )
644
-
645
638
  self.is_setup = True
646
639
 
647
640
  async def teardown(self, *exc_info):
@@ -989,6 +982,8 @@ class BaseWorker(abc.ABC):
989
982
  try:
990
983
  configuration = await self._get_configuration(flow_run)
991
984
  submitted_event = self._emit_flow_run_submitted_event(configuration)
985
+ await self._give_worker_labels_to_flow_run(flow_run.id)
986
+
992
987
  result = await self.run(
993
988
  flow_run=flow_run,
994
989
  task_status=task_status,
@@ -1002,9 +997,8 @@ class BaseWorker(abc.ABC):
1002
997
  )
1003
998
  # Mark the task as started to prevent agent crash
1004
999
  task_status.started(exc)
1005
- await self._propose_crashed_state(
1006
- flow_run, "Flow run could not be submitted to infrastructure"
1007
- )
1000
+ message = f"Flow run could not be submitted to infrastructure:\n{exc!r}"
1001
+ await self._propose_crashed_state(flow_run, message)
1008
1002
  else:
1009
1003
  run_logger.exception(
1010
1004
  f"An error occurred while monitoring flow run '{flow_run.id}'. "
@@ -1221,7 +1215,7 @@ class BaseWorker(abc.ABC):
1221
1215
  """
1222
1216
  Give this worker's identifying labels to the specified flow run.
1223
1217
  """
1224
- if self._cloud_client:
1218
+ if self._client:
1225
1219
  labels: KeyValueLabels = {
1226
1220
  "prefect.worker.name": self.name,
1227
1221
  "prefect.worker.type": self.type,
@@ -1235,7 +1229,7 @@ class BaseWorker(abc.ABC):
1235
1229
  }
1236
1230
  )
1237
1231
 
1238
- await self._cloud_client.update_flow_run_labels(flow_run_id, labels)
1232
+ await self._client.update_flow_run_labels(flow_run_id, labels)
1239
1233
 
1240
1234
  async def __aenter__(self):
1241
1235
  self._logger.debug("Entering worker context...")
prefect/workers/block.py CHANGED
@@ -1,6 +1,8 @@
1
1
  """
2
2
  2024-06-27: This surfaces an actionable error message for moved or removed objects in Prefect 3.0 upgrade.
3
3
  """
4
+ from typing import Any, Callable
5
+
4
6
  from prefect._internal.compatibility.migration import getattr_migration
5
7
 
6
- __getattr__ = getattr_migration(__name__)
8
+ __getattr__: Callable[[str], Any] = getattr_migration(__name__)
prefect/workers/cloud.py CHANGED
@@ -1,6 +1,8 @@
1
1
  """
2
2
  2024-06-27: This surfaces an actionable error message for moved or removed objects in Prefect 3.0 upgrade.
3
3
  """
4
+ from typing import Any, Callable
5
+
4
6
  from prefect._internal.compatibility.migration import getattr_migration
5
7
 
6
- __getattr__ = getattr_migration(__name__)
8
+ __getattr__: Callable[[str], Any] = getattr_migration(__name__)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prefect-client
3
- Version: 3.1.8
3
+ Version: 3.1.10
4
4
  Summary: Workflow orchestration and management.
5
5
  Home-page: https://www.prefect.io
6
6
  Author: Prefect Technologies, Inc.
@@ -1,31 +1,31 @@
1
1
  prefect/.prefectignore,sha256=awSprvKT0vI8a64mEOLrMxhxqcO-b0ERQeYpA2rNKVQ,390
2
- prefect/__init__.py,sha256=ueYVH54DQR3_ktv_s3nB0xf_45VEekMsiwVV7aSOgcM,3522
3
- prefect/_version.py,sha256=bscv-D4ssNwrDiU3ekD7QzmIrDtnERxX5XHAG6X-rTE,496
4
- prefect/agent.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
5
- prefect/artifacts.py,sha256=dsxFWmdg2r9zbHM3KgKOR5YbJ29_dXUYF9kipJpbxkE,13009
6
- prefect/automations.py,sha256=T8sUqDriABSuFeuoKUH2OXeCK5YwFfk-mjjM0_Oflyw,5984
2
+ prefect/__init__.py,sha256=FmdMSNpGH8Mrkn5X0mNZup8_SHdeB_aqEmS5taeOHAQ,3530
3
+ prefect/_version.py,sha256=bUcLcvgSrFk7uLI6vWR4M14nKrDGJAXv4mOuUqQtH0U,497
4
+ prefect/agent.py,sha256=qyyUMdiv5ndUIk-O8uwamESJGXXDQ_BmhKiLlm31ue0,286
5
+ prefect/artifacts.py,sha256=c_hMYTQoKFij8_tahtBeHzjYl7ztXAU90QP_6SuMw9A,12934
6
+ prefect/automations.py,sha256=QHS3Xh6wUKRvzxXt8cfWri6wXjX8EfEDDQN8a7cRw3c,6594
7
7
  prefect/cache_policies.py,sha256=dlhYHMxhb2N5KdDMIAuw4q-PIsI8WH5k0LDDLqsRYMU,9903
8
- prefect/context.py,sha256=HTEqJIvd_VuSS9LYdhZ2qlZsPgftWndgkw6EFGKbWJw,22364
9
- prefect/engine.py,sha256=BpmDbe6miZcTl1vRkxfCPYcWSXADLigGPCagFwucMz0,1976
10
- prefect/exceptions.py,sha256=KR8Vg7GetiBmwU5rvV5imlpg410Mv6RqSyk_gEojWAI,11884
11
- prefect/filesystems.py,sha256=Ce_NPk8rFhnCYkuI2TXyhYvqQi4eDdRyDKAfM6tYS7U,17865
12
- prefect/flow_engine.py,sha256=MJQKHPFNfKZxUgmhygsN89vNOP5q-1mFkhkKezsjahQ,53758
8
+ prefect/context.py,sha256=OAEhyJz7kheIh6UEwPp3oLklYdM_UHibrdqeM3aCLqk,22325
9
+ prefect/engine.py,sha256=qkT6hQWfxQPmjAEECQx3wluiDiFMHf3h9DRG1ShwK7w,2031
10
+ prefect/exceptions.py,sha256=sbphPKQ4yOBUa9w0MsSFoDj_uC8Tlv9WHTjzO3cQKq8,11593
11
+ prefect/filesystems.py,sha256=cLBGbnW2NQqH4N70Y1i1QuCL3R7p-_r_d5CGaEAd4wg,17897
12
+ prefect/flow_engine.py,sha256=eb2N5lRdsZBWNIsaAs1pqdDhL5Vevq8ETxyn5LM4Mks,53812
13
13
  prefect/flow_runs.py,sha256=-5udBBYdgdCBCjAMYvELbA1vmrjZ6oREXl-BZdZr6hc,16129
14
- prefect/flows.py,sha256=w5M3A3rQ5kmdVbSS-6QCynzfauuKno51dtIOBcs9In4,91549
15
- prefect/futures.py,sha256=DlZvdccKtwQKuDUFrZ4zcINeO9C1chLiNOwjE5gTgCk,16356
14
+ prefect/flows.py,sha256=Z1BdpmJotXJoqoDqcUtxiiPsGWvDfSBvk1XEEo6ykw4,94127
15
+ prefect/futures.py,sha256=ZtQiRJddO5-LNabUZiX_2wEJnRf6w7qZ8KRC5VUNOa0,16915
16
16
  prefect/main.py,sha256=lFYvXkW32sMj4aVH97foApD3Ut3rZIwtO91xUQHo_6I,2355
17
- prefect/plugins.py,sha256=HY7Z7OJlltqzsUiPMEL1Y_hQbHw0CeZKayWiK-k8DP4,2435
17
+ prefect/plugins.py,sha256=FPRLR2mWVBMuOnlzeiTD9krlHONZH2rtYLD753JQDNQ,2516
18
18
  prefect/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- prefect/results.py,sha256=Yz6jzaj0-lk7lf23oxB9KRZAcSeiAz1oWn23Gh_xKaQ,48649
19
+ prefect/results.py,sha256=okLkMlQcYUZHIl0XXMqVnWVLdcIYXe4b1wWX1T7Qa_8,50562
20
20
  prefect/serializers.py,sha256=DiKLYdIA5VjCSrLyu0BSWcLLVRujqjvj8XoQ3HOuvoY,8968
21
- prefect/states.py,sha256=ttqH5QhV1SjT2mUAiypEaK_7D-0yI2XGmMCaazuwBYY,24963
22
- prefect/task_engine.py,sha256=BLYEqbIce7wYJG3C5mkRSzA2Q4qktO-52xxTiSOJyTk,61199
21
+ prefect/states.py,sha256=ZhJHLx8ax7dQNdaBl2eDT6VYGAU-68R1loht68qHGpc,25396
22
+ prefect/task_engine.py,sha256=1xM64s9OpDREnKPnU9HpwHgtbAE50uwdp2ZucmPUhCg,61226
23
23
  prefect/task_runners.py,sha256=o7x_R18vMuum4GOcaQYVMK2CwyMgFguxYouKON5-_8c,15208
24
24
  prefect/task_runs.py,sha256=jkaQOkRKOHS8fgHUijteriFpjMSKv4zldn1D8tZHkUI,8777
25
25
  prefect/task_worker.py,sha256=PsjK25VS9JS_rAGY6rZU0lv4zgwIScl78V8Q4tXKZTs,17654
26
26
  prefect/tasks.py,sha256=YgA67JQu3ZqCuRtWuBMli2fHuiYDaKinD1ZyDvd9OJM,69988
27
27
  prefect/transactions.py,sha256=KLZbvOdCOqwpXrvzfycZbBlVOqrZhKhjG7JynGxkZY4,16686
28
- prefect/variables.py,sha256=QmXeyMvFslUphaGOtGouAzgXkAVvwpnyGA1tXPgY7Io,8305
28
+ prefect/variables.py,sha256=dCK3vX7TbkqXZhnNT_v7rcGh3ISRqoR6pJVLpoll3Js,8342
29
29
  prefect/_experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  prefect/_experimental/lineage.py,sha256=Sz0Vtk5o68FzL6S-FgDELqmR1y8NgUdlKPn1u5_EAfA,6677
31
31
  prefect/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -44,7 +44,7 @@ prefect/_internal/concurrency/cancellation.py,sha256=5pVR65GfVlzI4-h7R_uAPPgRFlw
44
44
  prefect/_internal/concurrency/event_loop.py,sha256=N6SyBV0vaSF5HD4_JM8zL7oBGd2nMuEKkeSPnBZdHw4,2136
45
45
  prefect/_internal/concurrency/inspection.py,sha256=xfyUNr5CoES8LFhybi2DmzHeW4RpTAbrGPiZOYMVLbQ,3464
46
46
  prefect/_internal/concurrency/primitives.py,sha256=BQ0vObO7NUEq-IMbu5aTlfoZpWMbYwinzYP89GIyw68,2609
47
- prefect/_internal/concurrency/services.py,sha256=0V0BW8ZKFMUKrHvNhjM8PuYyl4Oo9G33RiAjwT7NWis,12775
47
+ prefect/_internal/concurrency/services.py,sha256=zemUTygWxI3s2t4abQQKVqedGkuePhEqfESSe0BQ9Pw,12842
48
48
  prefect/_internal/concurrency/threads.py,sha256=pe-ill3xaXejpCwWLkak9e1hQB5wEuwZ_-0aQDMEDBM,9153
49
49
  prefect/_internal/concurrency/waiters.py,sha256=eHMfsoFiY9ZZFFTxfYMaW46WR6e5uB6OUUgnmmKFp_k,9224
50
50
  prefect/_internal/pydantic/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -69,16 +69,16 @@ prefect/blocks/system.py,sha256=1Zcu4tzgY2x_F3rESb_gQsr_UCsyX55-O2eq9tqdce0,4702
69
69
  prefect/blocks/webhook.py,sha256=F0u1WSO17Gda8qwr9gYaA84Nfc8Qkic6HhhJMYXRzug,2496
70
70
  prefect/client/__init__.py,sha256=bDeOC_I8_la5dwCAfxKzYSTSAr2tlq5HpxJgVoCCdAs,675
71
71
  prefect/client/base.py,sha256=KJg-RapWjjJp64I-k7s3AlN3rXZQRVz2tYOoAQ6qdTU,25547
72
- prefect/client/cloud.py,sha256=-Va7ziL5ZnF0a9jz1Pinhmtl5rkw5sTpkBu5eKegSbA,7179
72
+ prefect/client/cloud.py,sha256=nw3eVQXVCLD5DU8a-7rpBYHDnBD1v3B0GZ3tu9aNT70,6546
73
73
  prefect/client/collections.py,sha256=OdgJrUssGtuD0tHIYhtBamEN5q4oA6Uv4ZX-QueW7LI,1074
74
74
  prefect/client/constants.py,sha256=Z_GG8KF70vbbXxpJuqW5pLnwzujTVeHbcYYRikNmGH0,29
75
75
  prefect/client/orchestration.py,sha256=DQBnvgFZ1jbUMfMKcoP6l5mn6lZlT_0FW2DFcP0ahds,159927
76
76
  prefect/client/subscriptions.py,sha256=TZ7Omv8yeQQIkE6EmWYM78e8p7UdvdTDzcQe91dCU4U,3838
77
- prefect/client/utilities.py,sha256=mfU-t5sCm5GV9dLKmUbl2ynixGZJOKXSh3_gjZfA7Vo,3703
77
+ prefect/client/utilities.py,sha256=oYer87Q79C6V4BXURRHbvsPFt0tiOSFR2lLBzjaNV6w,3463
78
78
  prefect/client/schemas/__init__.py,sha256=uQqe3HkbW3gBvsIju0ee_ybJ8uuF2z_-DXLjS_O_37w,1063
79
79
  prefect/client/schemas/actions.py,sha256=8Ioj7DsEzLBUYfRS5OLzt9kFFWU3HqetDmQLlE1Pk9U,29921
80
80
  prefect/client/schemas/filters.py,sha256=MAy-km7qfJpz3Arf1kWk823oON175TH7gLp2iC4bflA,36452
81
- prefect/client/schemas/objects.py,sha256=2lEhzA6baWcK8v5Qj9c5yvXx1co6fcFi8p3gqwbK7Ek,57406
81
+ prefect/client/schemas/objects.py,sha256=75VdF_YswjRIEZRAqLFhDIDz8RwMrVY-4EdtW4OZnfU,57731
82
82
  prefect/client/schemas/responses.py,sha256=iTXTiUhdRL7PxNyJXMZ4ngT7C8SepT_z7g_pnUnVlzo,15629
83
83
  prefect/client/schemas/schedules.py,sha256=ALK3Q-FveJdrTO8RryyAYJzOTGF8Wyp-Nbu6agpTooE,14466
84
84
  prefect/client/schemas/sorting.py,sha256=L-2Mx-igZPtsUoRUguTcG3nIEstMEMPD97NwPM2Ox5s,2579
@@ -98,9 +98,9 @@ prefect/concurrency/v1/services.py,sha256=5IwRepJ4IMC0y-PmqXiDr5rR4wl3BuHbP6Tg6C
98
98
  prefect/concurrency/v1/sync.py,sha256=qKE0YzNbrmYooTwP7pz4m1BUz61THCUIF45_PE5IyYg,2375
99
99
  prefect/deployments/__init__.py,sha256=_wb7NxDKhq11z9MjYsPckmT3o6MRhGLRgCV9TmvYtew,1002
100
100
  prefect/deployments/base.py,sha256=bwlkSN6pWC2fLj4-48AtPY1jTmVB0GADdyK9ToFLAiE,16534
101
- prefect/deployments/deployments.py,sha256=EvC9qBdvJRc8CHJqRjFTqtzx75SE8bpZOl5C-2eULyA,109
101
+ prefect/deployments/deployments.py,sha256=K3Rgnpjxo_T8I8LMwlq24OKqZiZBTE8-YnPg-YGUStM,171
102
102
  prefect/deployments/flow_runs.py,sha256=YZ8Q1napmOyuGr4XKLWU1VcyZv1Gr48njOX_Qi8pkj4,6843
103
- prefect/deployments/runner.py,sha256=aBuMEcpw1LgnAGVhwqvwrHyflJvFLCgsUeLac-Jz0wU,42279
103
+ prefect/deployments/runner.py,sha256=2hO3PruCz65bKK__hnaHoZNlJJCuOSBzM34k_mDbdF4,42443
104
104
  prefect/deployments/schedules.py,sha256=qFzYxPUYz8mYRPxG4dOXZC-6tdVprbK5Zw1fwBf42xI,1910
105
105
  prefect/deployments/steps/__init__.py,sha256=Dlz9VqMRyG1Gal8dj8vfGpPr0LyQhZdvcciozkK8WoY,206
106
106
  prefect/deployments/steps/core.py,sha256=8V_xrYfpF_LqX_uIvWMV_Fnx_EcO9ryVNZaL6peQdao,6882
@@ -111,7 +111,7 @@ prefect/docker/docker_image.py,sha256=Y84_ooCYA9NGl6FElJul9-FaW3teT-eia2SiNtZ1LG
111
111
  prefect/events/__init__.py,sha256=GtKl2bE--pJduTxelH2xy7SadlLJmmis8WR1EYixhuA,2094
112
112
  prefect/events/actions.py,sha256=A7jS8bo4zWGnrt3QfSoQs0uYC1xfKXio3IfU0XtTb5s,9129
113
113
  prefect/events/clients.py,sha256=pxhq8o2N4pJUMvtg5lkzqP8_v4-HSybRgKkqxetOpRM,24681
114
- prefect/events/filters.py,sha256=J6qfXkIVr6v1jT-E5LOiVXLOrcyBIPRr_8HotrM34k0,8275
114
+ prefect/events/filters.py,sha256=G1bkshD8mtVijIiHZ1lhyB_spGNXn1glZ8FmXCQIeuE,8056
115
115
  prefect/events/related.py,sha256=A-1SVYwHtsxaDurRepnTsYbTWRBJSbtL5O_KffLaTwU,6534
116
116
  prefect/events/utilities.py,sha256=gaJEC5mMK9XsCt8wbWzuFhZTRyYYmfnMoR-S4s79zg4,2648
117
117
  prefect/events/worker.py,sha256=gW590T7xWIz-I3xatQea0ORvsXfsmyWquYeRpuZS96E,4549
@@ -122,8 +122,8 @@ prefect/events/schemas/automations.py,sha256=LHpZvI-5triEtgYsdEjADfEtgkpZgqzt3rs
122
122
  prefect/events/schemas/deployment_triggers.py,sha256=OX9g9eHe0nqJ3PtVEzqs9Ub2LaOHMA4afLZSvSukKGU,3191
123
123
  prefect/events/schemas/events.py,sha256=dfM5R6v5ZBM0Eb5FyDaw2gT9566LMFJpZmdPTdEewpc,9043
124
124
  prefect/events/schemas/labelling.py,sha256=bU-XYaHXhI2MEBIHngth96R9D02m8HHb85KNcHZ_1Gc,3073
125
- prefect/infrastructure/__init__.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
126
- prefect/infrastructure/base.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
125
+ prefect/infrastructure/__init__.py,sha256=qyyUMdiv5ndUIk-O8uwamESJGXXDQ_BmhKiLlm31ue0,286
126
+ prefect/infrastructure/base.py,sha256=qyyUMdiv5ndUIk-O8uwamESJGXXDQ_BmhKiLlm31ue0,286
127
127
  prefect/infrastructure/provisioners/__init__.py,sha256=wn240gHrQbien2g_g2A8Ujb2iFyjmDgMHLQ7tgQngf4,1706
128
128
  prefect/infrastructure/provisioners/cloud_run.py,sha256=K6_8AO_fZRfuI0hGx_EwvlRkiNPcmR5yD9P8B-QSjuc,17745
129
129
  prefect/infrastructure/provisioners/container_instance.py,sha256=ZaiaAOywMjbhZI6emzqsDQh-xBePajzjjMT_JY8lwNA,41281
@@ -133,9 +133,9 @@ 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=GiZlLLj51cLH6QQgq7IeU6jUK6vGi0wMnOG0zaO95-c,8025
137
- prefect/locking/memory.py,sha256=Y1fsMSUAk3jUILzRivbxlrE9Xv8OcVbaylVf-aiEGNc,7495
138
- prefect/locking/protocol.py,sha256=o5-48SxvEDAdVwW8RIn7rCN32CmvIsaVHTztESUXuHU,4232
136
+ prefect/locking/filesystem.py,sha256=zhNwdKroi2kLR6Cut6CMT-rWmFwtTtzuGKSwGH_Iw0s,8084
137
+ prefect/locking/memory.py,sha256=mFUgV750ywEL7aVQuxFjg9gxbjVU4esBQn7bGQYzeMY,7548
138
+ prefect/locking/protocol.py,sha256=RsfvlaHTTEJ0YvYWSqFGoZuT2w4FPPxyQlHqjoyNGuE,4240
139
139
  prefect/logging/__init__.py,sha256=zx9f5_dWrR4DbcTOFBpNGOPoCZ1QcPFudr7zxb2XRpA,148
140
140
  prefect/logging/configuration.py,sha256=t7EJrk7Jr4QMxopH3TP6gRN8kMg_LFBsIoiwXCihrso,3353
141
141
  prefect/logging/filters.py,sha256=9keHLN4-cpnsWcii1qU0RITNi9-m7pOhkJ_t0MtCM4k,1117
@@ -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=JZbZqv9hy4rp_TAeIQiLfmplfLWe0OLCRVe6vUrh0wE,54005
153
+ prefect/runner/runner.py,sha256=nk9rxxtAbejrUvnyST7VKk8AxcWU4weMVbuR6zQxp0E,54012
154
154
  prefect/runner/server.py,sha256=UXlxugqV1SiC49aTnwCDsEdQS6AXyfstaJWukuOBVO8,11171
155
155
  prefect/runner/storage.py,sha256=EkCnutcpcs4X0II81xBtZFGIwqfwRe00W9r6LLfZkQU,24754
156
156
  prefect/runner/submit.py,sha256=DGhBUUIg-N3z788ZqaCcqpIPkvCzQtZeLqjKtQNV1IA,8137
@@ -198,10 +198,11 @@ prefect/settings/models/server/tasks.py,sha256=YzfRTcmiYnD_INezR_29rvO0M_YbAqT1b
198
198
  prefect/settings/models/server/ui.py,sha256=6cTSC2RQsS4c2HpB1Se6qRms4RMEKSsaI40T2CTkobg,1780
199
199
  prefect/telemetry/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
200
200
  prefect/telemetry/bootstrap.py,sha256=b64UpBBo0Yo7Z8b_V9NQLAlFrpIuJoTs5opYTuB-R20,1550
201
- prefect/telemetry/instrumentation.py,sha256=bW5-S3_brDUR_k-LIE04DbkIN1p8yP79DpUVmgPHOy8,4241
201
+ prefect/telemetry/instrumentation.py,sha256=G8kDiN2N4l7A8on-BHbYnh8uqH71zuGr3t2JntxRv0Q,4183
202
202
  prefect/telemetry/logging.py,sha256=yn5D4D2GGRrAv0y8wlHPN7PZDmQucGjQT_YauK9M9Yo,727
203
- prefect/telemetry/processors.py,sha256=mBWk51uIcdFumus0L_FZ0Qf-0c43jzDUAkoNETH_wJ8,2122
203
+ prefect/telemetry/processors.py,sha256=jw6j6LviOVxw3IBJe7cSjsxFk0zzY43jUmy6C9pcfCE,2272
204
204
  prefect/telemetry/run_telemetry.py,sha256=FfvcUJK6Sqcagp6rJ3vx4twCAkyYJYBhtNUUzjM0D7A,8135
205
+ prefect/telemetry/services.py,sha256=ek5KMSgCjUeIoNl9INPCfKkwlUwyFYp_dUiZd_rD0_8,2270
205
206
  prefect/types/__init__.py,sha256=s-l0r8UiDs7GCEstOPMzbb9PvvF_0F4G8OcVy3_50Yk,4700
206
207
  prefect/types/entrypoint.py,sha256=2FF03-wLPgtnqR_bKJDB2BsXXINPdu8ptY9ZYEZnXg8,328
207
208
  prefect/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -214,10 +215,10 @@ prefect/utilities/compat.py,sha256=nnPA3lf2f4Y-l645tYFFNmj5NDPaYvjqa9pbGKZ3WKE,5
214
215
  prefect/utilities/context.py,sha256=23SDMgdt07SjmB1qShiykHfGgiv55NBzdbMXM3fE9CI,1447
215
216
  prefect/utilities/dispatch.py,sha256=ykPKflsgO4zIayzQK-ILmZe34ogRdfbDjm3I2r-fNME,6318
216
217
  prefect/utilities/dockerutils.py,sha256=bzokKf8mFS0YcKl6Wg9rZUZAC8dIzH6TdRIwylraVrw,20851
217
- prefect/utilities/engine.py,sha256=Z0hGlHcECDYjmrSj40gwSvZn3XSYpM5aO2xcw2ttoQo,29073
218
+ prefect/utilities/engine.py,sha256=nqK6FnqQmsomrRTpo3JddPNWc470flwFEpzL8sA7VWA,29604
218
219
  prefect/utilities/filesystem.py,sha256=W449XqS33-sIJs6FIc_McctzqhULK7uZDvW396E_YsA,5710
219
220
  prefect/utilities/hashing.py,sha256=7jRy26s46IJAFRmVnCnoK9ek9N4p_UfXxQQvu2tW6dM,2589
220
- prefect/utilities/importtools.py,sha256=2HH37LRr39utZmc6sEL7v4Q8X3F2Wme9wC0W6YIz78o,20245
221
+ prefect/utilities/importtools.py,sha256=6_Y9yuqt2aoSSTtTj6QYMVjFIxzY14uONtGbWF8JRy4,20223
221
222
  prefect/utilities/math.py,sha256=UPIdJMP13lCU3o0Yz98o4VDw3LTkkrsOAsvAdA3Xifc,2954
222
223
  prefect/utilities/names.py,sha256=S_cmhrXybZpwcm9lwibDV2t9dRjPCvYYcJrGommaUt4,1743
223
224
  prefect/utilities/processutils.py,sha256=YFvO8a_L3AeuJbwXcGR1pkBjEjvw7OPw2GCjT0AEkU0,16267
@@ -233,15 +234,15 @@ prefect/utilities/visualization.py,sha256=4MyQKLb00A1QZCvSrbPEbyqUNByQ_EkJ6wXKFC
233
234
  prefect/utilities/schema_tools/__init__.py,sha256=At3rMHd2g_Em2P3_dFQlFgqR_EpBwrYtU2N2OJd0pDE,345
234
235
  prefect/utilities/schema_tools/hydration.py,sha256=4yQMynZSloPFp0tlA7g8udWqE2TjZgfm19Y4R4F0s04,9415
235
236
  prefect/utilities/schema_tools/validation.py,sha256=Wix26IVR-ZJ32-6MX2pHhrwm3reB-Q4iB6_phn85OKE,10743
236
- prefect/workers/__init__.py,sha256=8dP8SLZbWYyC_l9DRTQSE3dEbDgns5DZDhxkp_NfsbQ,35
237
- prefect/workers/base.py,sha256=oqcjsOtcQA_kDhH2PKW6_QhCqdmJSoObjU_6EKq9WUc,49438
238
- prefect/workers/block.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
239
- prefect/workers/cloud.py,sha256=BOVVY5z-vUIQ2u8LwMTXDaNys2fjOZSS5YGDwJmTQjI,230
237
+ prefect/workers/__init__.py,sha256=EaM1F0RZ-XIJaGeTKLsXDnfOPHzVWk5bk0_c4BVS44M,64
238
+ prefect/workers/base.py,sha256=nBv4pc51J1JRoSkgxvBDfQb4wIEN67D7cBVwT-jYHdI,49198
239
+ prefect/workers/block.py,sha256=qyyUMdiv5ndUIk-O8uwamESJGXXDQ_BmhKiLlm31ue0,286
240
+ prefect/workers/cloud.py,sha256=qyyUMdiv5ndUIk-O8uwamESJGXXDQ_BmhKiLlm31ue0,286
240
241
  prefect/workers/process.py,sha256=tcJ3fbiraLCfpVGpv8dOHwMSfVzeD_kyguUOvPuIz6I,19796
241
242
  prefect/workers/server.py,sha256=lgh2FfSuaNU7b6HPxSFm8JtKvAvHsZGkiOo4y4tW1Cw,2022
242
243
  prefect/workers/utilities.py,sha256=VfPfAlGtTuDj0-Kb8WlMgAuOfgXCdrGAnKMapPSBrwc,2483
243
- prefect_client-3.1.8.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
244
- prefect_client-3.1.8.dist-info/METADATA,sha256=4KfLwSINwbcWgsBb4RwSbu-lz7FjcGvGCoiKQ3a04_E,7286
245
- prefect_client-3.1.8.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
246
- prefect_client-3.1.8.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
247
- prefect_client-3.1.8.dist-info/RECORD,,
244
+ prefect_client-3.1.10.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
245
+ prefect_client-3.1.10.dist-info/METADATA,sha256=BbPdwx1OPrG1CxVh7OJNeBzquSMMMfOCBk4e-zilqhs,7287
246
+ prefect_client-3.1.10.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
247
+ prefect_client-3.1.10.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
248
+ prefect_client-3.1.10.dist-info/RECORD,,