prefect-client 3.4.7.dev1__py3-none-any.whl → 3.4.7.dev3__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/AGENTS.md ADDED
@@ -0,0 +1,38 @@
1
+ # Core Prefect Library
2
+
3
+ This is the core Prefect library containing the fundamental building blocks for workflow orchestration.
4
+
5
+ ## Core Concepts
6
+
7
+ - **Flows**: Top-level workflow containers defined with `@flow` decorator
8
+ - **Tasks**: Individual units of work defined with `@task` decorator
9
+ - **States**: Represent the status of flow/task runs (Pending, Running, Completed, Failed, etc.)
10
+ - **Context**: Runtime information available during flow/task execution
11
+ - **Results**: Persistence layer for task outputs and artifacts
12
+
13
+ ## Key Modules
14
+
15
+ - `flows.py` - Flow definition, execution, and lifecycle management
16
+ - `tasks.py` - Task definition, execution, and dependency resolution
17
+ - `states.py` - State management and transitions
18
+ - `context.py` - Runtime context and dependency injection
19
+ - `engine.py` - Core execution engine
20
+ - `client/` - Client interfaces for communicating with Prefect server/cloud
21
+ - `runner/` - Process management for running flows
22
+ - `deployments/` - Deployment creation and management
23
+ - `blocks/` - Reusable configuration and infrastructure components
24
+
25
+ ## Execution Architecture
26
+
27
+ Prefect uses an asynchronous execution model:
28
+ - Flows and tasks are async by default but support sync execution
29
+ - Task dependencies are resolved through return value tracking
30
+ - State management handles retries, caching, and failure policies
31
+ - Results are persisted and retrievable across runs
32
+
33
+ ## Development Patterns
34
+
35
+ - Prefer composition over inheritance for extensibility
36
+ - Use dependency injection through context for runtime services
37
+ - Maintain backward compatibility in public APIs
38
+ - Task and flow definitions are immutable after creation
prefect/_build_info.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # Generated by versioningit
2
- __version__ = "3.4.7.dev1"
3
- __build_date__ = "2025-06-12 08:09:28.422983+00:00"
4
- __git_commit__ = "0a7d010a384a8584787c9be27eaaa8cfc63f2d34"
2
+ __version__ = "3.4.7.dev3"
3
+ __build_date__ = "2025-06-17 08:09:28.549090+00:00"
4
+ __git_commit__ = "a40dd41d3b8dc001c893d5a5d778016da797aa82"
5
5
  __dirty__ = False
prefect/client/cloud.py CHANGED
@@ -24,6 +24,16 @@ from prefect.settings import (
24
24
 
25
25
  PARSE_API_URL_REGEX = re.compile(r"accounts/(.{36})/workspaces/(.{36})")
26
26
 
27
+ # Cache for TypeAdapter instances to avoid repeated instantiation
28
+ _TYPE_ADAPTER_CACHE: dict[type, pydantic.TypeAdapter[Any]] = {}
29
+
30
+
31
+ def _get_type_adapter(type_: type) -> pydantic.TypeAdapter[Any]:
32
+ """Get or create a cached TypeAdapter for the given type."""
33
+ if type_ not in _TYPE_ADAPTER_CACHE:
34
+ _TYPE_ADAPTER_CACHE[type_] = pydantic.TypeAdapter(type_)
35
+ return _TYPE_ADAPTER_CACHE[type_]
36
+
27
37
 
28
38
  def get_cloud_client(
29
39
  host: Optional[str] = None,
@@ -112,7 +122,7 @@ class CloudClient:
112
122
  await self.read_workspaces()
113
123
 
114
124
  async def read_workspaces(self) -> list[Workspace]:
115
- workspaces = pydantic.TypeAdapter(list[Workspace]).validate_python(
125
+ workspaces = _get_type_adapter(list[Workspace]).validate_python(
116
126
  await self.get("/me/workspaces")
117
127
  )
118
128
  return workspaces
@@ -144,6 +144,16 @@ P = ParamSpec("P")
144
144
  R = TypeVar("R", infer_variance=True)
145
145
  T = TypeVar("T")
146
146
 
147
+ # Cache for TypeAdapter instances to avoid repeated instantiation
148
+ _TYPE_ADAPTER_CACHE: dict[type, pydantic.TypeAdapter[Any]] = {}
149
+
150
+
151
+ def _get_type_adapter(type_: type) -> pydantic.TypeAdapter[Any]:
152
+ """Get or create a cached TypeAdapter for the given type."""
153
+ if type_ not in _TYPE_ADAPTER_CACHE:
154
+ _TYPE_ADAPTER_CACHE[type_] = pydantic.TypeAdapter(type_)
155
+ return _TYPE_ADAPTER_CACHE[type_]
156
+
147
157
 
148
158
  @overload
149
159
  def get_client(
@@ -635,7 +645,7 @@ class PrefectClient(
635
645
  raise prefect.exceptions.ObjectNotFound(http_exc=e) from e
636
646
  else:
637
647
  raise
638
- return pydantic.TypeAdapter(list[FlowRun]).validate_python(response.json())
648
+ return _get_type_adapter(list[FlowRun]).validate_python(response.json())
639
649
 
640
650
  async def read_work_queue(
641
651
  self,
@@ -894,7 +904,7 @@ class PrefectClient(
894
904
  "offset": offset,
895
905
  }
896
906
  response = await self._client.post("/task_runs/filter", json=body)
897
- return pydantic.TypeAdapter(list[TaskRun]).validate_python(response.json())
907
+ return _get_type_adapter(list[TaskRun]).validate_python(response.json())
898
908
 
899
909
  async def delete_task_run(self, task_run_id: UUID) -> None:
900
910
  """
@@ -958,7 +968,7 @@ class PrefectClient(
958
968
  response = await self._client.get(
959
969
  "/task_run_states/", params=dict(task_run_id=str(task_run_id))
960
970
  )
961
- return pydantic.TypeAdapter(list[prefect.states.State]).validate_python(
971
+ return _get_type_adapter(list[prefect.states.State]).validate_python(
962
972
  response.json()
963
973
  )
964
974
 
@@ -1005,7 +1015,7 @@ class PrefectClient(
1005
1015
  else:
1006
1016
  response = await self._client.post("/work_queues/filter", json=json)
1007
1017
 
1008
- return pydantic.TypeAdapter(list[WorkQueue]).validate_python(response.json())
1018
+ return _get_type_adapter(list[WorkQueue]).validate_python(response.json())
1009
1019
 
1010
1020
  async def read_worker_metadata(self) -> dict[str, Any]:
1011
1021
  """Reads worker metadata stored in Prefect collection registry."""
@@ -1554,7 +1564,7 @@ class SyncPrefectClient(
1554
1564
  "offset": offset,
1555
1565
  }
1556
1566
  response = self._client.post("/task_runs/filter", json=body)
1557
- return pydantic.TypeAdapter(list[TaskRun]).validate_python(response.json())
1567
+ return _get_type_adapter(list[TaskRun]).validate_python(response.json())
1558
1568
 
1559
1569
  def set_task_run_state(
1560
1570
  self,
@@ -1598,6 +1608,6 @@ class SyncPrefectClient(
1598
1608
  response = self._client.get(
1599
1609
  "/task_run_states/", params=dict(task_run_id=str(task_run_id))
1600
1610
  )
1601
- return pydantic.TypeAdapter(list[prefect.states.State]).validate_python(
1611
+ return _get_type_adapter(list[prefect.states.State]).validate_python(
1602
1612
  response.json()
1603
1613
  )
@@ -279,10 +279,6 @@ class State(TimeSeriesBaseModel, ObjectBaseModel, Generic[R]):
279
279
  if the state is of type `FAILED` and the underlying data is an exception. When flow
280
280
  was run in a different memory space (using `run_deployment`), this will only raise
281
281
  if `fetch` is `True`.
282
- fetch: a boolean specifying whether to resolve references to persisted
283
- results into data. For synchronous users, this defaults to `True`.
284
- For asynchronous users, this defaults to `False` for backwards
285
- compatibility.
286
282
  retry_result_failure: a boolean specifying whether to retry on failures to
287
283
  load the result from result storage
288
284
 
@@ -416,6 +416,10 @@ class AutomationCore(PrefectBaseModel, extra="ignore"): # type: ignore[call-arg
416
416
  enabled: bool = Field(
417
417
  default=True, description="Whether this automation will be evaluated"
418
418
  )
419
+ tags: List[str] = Field(
420
+ default_factory=list,
421
+ description="A list of tags associated with this automation",
422
+ )
419
423
 
420
424
  trigger: TriggerTypes = Field(
421
425
  default=...,
@@ -195,7 +195,7 @@ class FileSystemLockManager(LockManager):
195
195
  def release_lock(self, key: str, holder: str) -> None:
196
196
  lock_path = self._lock_path_for_key(key)
197
197
  if not self.is_locked(key):
198
- ValueError(f"No lock for transaction with key {key}")
198
+ raise ValueError(f"No lock for transaction with key {key}")
199
199
  if self.is_lock_holder(key, holder):
200
200
  Path(lock_path).unlink(missing_ok=True)
201
201
  self._locks.pop(key, None)
prefect/serializers.py CHANGED
@@ -38,6 +38,8 @@ from prefect.utilities.pydantic import custom_pydantic_encoder
38
38
 
39
39
  D = TypeVar("D", default=Any)
40
40
 
41
+ _TYPE_ADAPTER_CACHE: dict[str, TypeAdapter[Any]] = {}
42
+
41
43
 
42
44
  def prefect_json_object_encoder(obj: Any) -> Any:
43
45
  """
@@ -68,9 +70,12 @@ def prefect_json_object_decoder(result: dict[str, Any]) -> Any:
68
70
  with `prefect_json_object_encoder`
69
71
  """
70
72
  if "__class__" in result:
71
- return TypeAdapter(from_qualified_name(result["__class__"])).validate_python(
72
- result["data"]
73
- )
73
+ class_name = result["__class__"]
74
+ if class_name not in _TYPE_ADAPTER_CACHE:
75
+ _TYPE_ADAPTER_CACHE[class_name] = TypeAdapter(
76
+ from_qualified_name(class_name)
77
+ )
78
+ return _TYPE_ADAPTER_CACHE[class_name].validate_python(result["data"])
74
79
  elif "__exc_type__" in result:
75
80
  return from_qualified_name(result["__exc_type__"])(result["message"])
76
81
  else:
@@ -4,12 +4,15 @@ Routes for interacting with log objects.
4
4
 
5
5
  from typing import List
6
6
 
7
- from fastapi import Body, Depends, status
7
+ from fastapi import Body, Depends, WebSocket, status
8
+ from starlette.status import WS_1002_PROTOCOL_ERROR
8
9
 
9
10
  import prefect.server.api.dependencies as dependencies
10
11
  import prefect.server.models as models
11
12
  import prefect.server.schemas as schemas
12
13
  from prefect.server.database import PrefectDBInterface, provide_database_interface
14
+ from prefect.server.logs import stream
15
+ from prefect.server.utilities import subscriptions
13
16
  from prefect.server.utilities.server import PrefectRouter
14
17
 
15
18
  router: PrefectRouter = PrefectRouter(prefix="/logs", tags=["Logs"])
@@ -45,3 +48,50 @@ async def read_logs(
45
48
  return await models.logs.read_logs(
46
49
  session=session, log_filter=logs, offset=offset, limit=limit, sort=sort
47
50
  )
51
+
52
+
53
+ @router.websocket("/out")
54
+ async def stream_logs_out(
55
+ websocket: WebSocket,
56
+ ) -> None:
57
+ """Serve a WebSocket to stream live logs"""
58
+ websocket = await subscriptions.accept_prefect_socket(
59
+ websocket,
60
+ )
61
+ if not websocket:
62
+ return
63
+
64
+ try:
65
+ # After authentication, the next message is expected to be a filter message, any
66
+ # other type of message will close the connection.
67
+ message = await websocket.receive_json()
68
+
69
+ if message["type"] != "filter":
70
+ return await websocket.close(
71
+ WS_1002_PROTOCOL_ERROR, reason="Expected 'filter' message"
72
+ )
73
+
74
+ try:
75
+ filter = schemas.filters.LogFilter.model_validate(message["filter"])
76
+ except Exception as e:
77
+ return await websocket.close(
78
+ WS_1002_PROTOCOL_ERROR, reason=f"Invalid filter: {e}"
79
+ )
80
+
81
+ # No backfill support for logs - only live streaming
82
+ # Subscribe to the ongoing log stream
83
+ async with stream.logs(filter) as log_stream:
84
+ async for log in log_stream:
85
+ if not log:
86
+ if await subscriptions.still_connected(websocket):
87
+ continue
88
+ break
89
+
90
+ await websocket.send_json(
91
+ {"type": "log", "log": log.model_dump(mode="json")}
92
+ )
93
+
94
+ except subscriptions.NORMAL_DISCONNECT_EXCEPTIONS: # pragma: no cover
95
+ pass # it's fine if a client disconnects either normally or abnormally
96
+
97
+ return None
@@ -0,0 +1,28 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import ClassVar
4
+
5
+ from pydantic import Field
6
+ from pydantic_settings import SettingsConfigDict
7
+
8
+ from prefect.settings.base import PrefectBaseSettings, build_settings_config
9
+
10
+
11
+ class ServerLogsSettings(PrefectBaseSettings):
12
+ """
13
+ Settings for controlling behavior of the logs subsystem
14
+ """
15
+
16
+ model_config: ClassVar[SettingsConfigDict] = build_settings_config(
17
+ ("server", "logs")
18
+ )
19
+
20
+ stream_out_enabled: bool = Field(
21
+ default=False,
22
+ description="Whether or not to stream logs out to the API via websockets.",
23
+ )
24
+
25
+ stream_publishing_enabled: bool = Field(
26
+ default=False,
27
+ description="Whether or not to publish logs to the streaming system.",
28
+ )
@@ -13,6 +13,7 @@ from .deployments import ServerDeploymentsSettings
13
13
  from .ephemeral import ServerEphemeralSettings
14
14
  from .events import ServerEventsSettings
15
15
  from .flow_run_graph import ServerFlowRunGraphSettings
16
+ from .logs import ServerLogsSettings
16
17
  from .services import ServerServicesSettings
17
18
  from .tasks import ServerTasksSettings
18
19
  from .ui import ServerUISettings
@@ -127,6 +128,10 @@ class ServerSettings(PrefectBaseSettings):
127
128
  default_factory=ServerFlowRunGraphSettings,
128
129
  description="Settings for controlling flow run graph behavior",
129
130
  )
131
+ logs: ServerLogsSettings = Field(
132
+ default_factory=ServerLogsSettings,
133
+ description="Settings for controlling server logs behavior",
134
+ )
130
135
  services: ServerServicesSettings = Field(
131
136
  default_factory=ServerServicesSettings,
132
137
  description="Settings for controlling server services behavior",
prefect/utilities/_ast.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import ast
2
2
  import math
3
- from typing import TYPE_CHECKING, Literal
3
+ from typing import TYPE_CHECKING, Any, Literal
4
4
 
5
5
  import anyio
6
6
  from typing_extensions import TypeAlias
@@ -17,7 +17,7 @@ OPEN_FILE_SEMAPHORE = LazySemaphore(lambda: math.floor(get_open_file_limit() * 0
17
17
  # this potentially could be a TypedDict, but you
18
18
  # need some way to convince the type checker that
19
19
  # Literal["flow_name", "task_name"] are being provided
20
- DecoratedFnMetadata: TypeAlias = dict[str, str]
20
+ DecoratedFnMetadata: TypeAlias = dict[str, Any]
21
21
 
22
22
 
23
23
  async def find_prefect_decorated_functions_in_file(
@@ -654,7 +654,7 @@ def _get_docstring_from_source(source_code: str, func_name: str) -> Optional[str
654
654
  and isinstance(func_def.body[0], ast.Expr)
655
655
  and isinstance(func_def.body[0].value, ast.Constant)
656
656
  ):
657
- return func_def.body[0].value.value
657
+ return str(func_def.body[0].value.value)
658
658
  return None
659
659
 
660
660
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prefect-client
3
- Version: 3.4.7.dev1
3
+ Version: 3.4.7.dev3
4
4
  Summary: Workflow orchestration and management.
5
5
  Project-URL: Changelog, https://github.com/PrefectHQ/prefect/releases
6
6
  Project-URL: Documentation, https://docs.prefect.io
@@ -1,7 +1,8 @@
1
1
  prefect/.prefectignore,sha256=awSprvKT0vI8a64mEOLrMxhxqcO-b0ERQeYpA2rNKVQ,390
2
+ prefect/AGENTS.md,sha256=y9wvcT-AJ7zaP58Vj6IPoGEL82Fhw9X15UlnvGGoD0k,1645
2
3
  prefect/__init__.py,sha256=iCdcC5ZmeewikCdnPEP6YBAjPNV5dvfxpYCTpw30Hkw,3685
3
4
  prefect/__main__.py,sha256=WFjw3kaYJY6pOTA7WDOgqjsz8zUEUZHCcj3P5wyVa-g,66
4
- prefect/_build_info.py,sha256=niigVOkmWBXfwYlJ17kT2BFC_ZqjkhTSIE7chQTHfbU,185
5
+ prefect/_build_info.py,sha256=8xVqpc5-nJMEr7cLce8MxOqYg18OrvFqwHYf_UbNSpY,185
5
6
  prefect/_result_records.py,sha256=S6QmsODkehGVSzbMm6ig022PYbI6gNKz671p_8kBYx4,7789
6
7
  prefect/_versioning.py,sha256=YqR5cxXrY4P6LM1Pmhd8iMo7v_G2KJpGNdsf4EvDFQ0,14132
7
8
  prefect/_waiters.py,sha256=Ia2ITaXdHzevtyWIgJoOg95lrEXQqNEOquHvw3T33UQ,9026
@@ -22,7 +23,7 @@ prefect/plugins.py,sha256=FPRLR2mWVBMuOnlzeiTD9krlHONZH2rtYLD753JQDNQ,2516
22
23
  prefect/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
24
  prefect/results.py,sha256=Amm3TQu8U_oakSn__tCogIJ5DsTj0w_kLzuENWsxK6A,36824
24
25
  prefect/schedules.py,sha256=dhq4OhImRvcmtxF7UH1m8RbwYdHT5RQsp_FrxVXfODE,7289
25
- prefect/serializers.py,sha256=lU9A1rGEfAfhr8nTl3rf-K7ED78QNShXOrmRBhgNk3Y,9566
26
+ prefect/serializers.py,sha256=MICSdT_1iL2SSq9cYatJ8T7wqPS97uyw9ew5Fh86-NM,9789
26
27
  prefect/states.py,sha256=rh7l1bnIYpTXdlXt5nnpz66y9KLjBWAJrN9Eo5RwgQs,26023
27
28
  prefect/task_engine.py,sha256=j7i_UiLvijV4Vut1Bw5-72kSlOqAPxqeS7-3cMVEBPA,65509
28
29
  prefect/task_runners.py,sha256=ptgE5wuXg_IVHM0j7d6l7ELAVg3SXSy4vggnoHRF8dA,17040
@@ -84,12 +85,12 @@ prefect/blocks/system.py,sha256=4KiUIy5zizMqfGJrxvi9GLRLcMj4BjAXARxCUEmgbKI,5041
84
85
  prefect/blocks/webhook.py,sha256=xylFigbDOsn-YzxahkTzNqYwrIA7wwS6204P0goLY3A,2907
85
86
  prefect/client/__init__.py,sha256=bDeOC_I8_la5dwCAfxKzYSTSAr2tlq5HpxJgVoCCdAs,675
86
87
  prefect/client/base.py,sha256=7VAMyoy8KtmtI-H8KYsI16_uw9TlrXSrcxChFuMp65Q,26269
87
- prefect/client/cloud.py,sha256=jnFgg0osMVDGbLjdWkDX3rQg_0pI_zvfSlU480XCWGQ,6523
88
+ prefect/client/cloud.py,sha256=v1UO5YUF3kP6u5I1SKHe5DfpcVXB1_xc1rxr6P9-5DY,6927
88
89
  prefect/client/collections.py,sha256=t9XkVU_onQMZ871L21F1oZnAiPSQeeVfd_MuDEBS3iM,1050
89
90
  prefect/client/constants.py,sha256=Z_GG8KF70vbbXxpJuqW5pLnwzujTVeHbcYYRikNmGH0,29
90
91
  prefect/client/subscriptions.py,sha256=PTYi1Pp7rX-aGdcxZkxRBZkZnpzBt1P17APsm05EDR8,4376
91
92
  prefect/client/utilities.py,sha256=UEJD6nwYg2mD8-GSmru-E2ofXaBlmSFZ2-8T_5rIK6c,3472
92
- prefect/client/orchestration/__init__.py,sha256=DPbazZvQDgoSZipuNk4z_AILgJbM6zBld-1OsVH55ME,55831
93
+ prefect/client/orchestration/__init__.py,sha256=lG3IW4XfbBkgZyPiSrxeyBhTqt3YfFcBHnEXDVrNmLs,56220
93
94
  prefect/client/orchestration/base.py,sha256=HM6ryHBZSzuHoCFQM9u5qR5k1dN9Bbr_ah6z1UPNbZQ,1542
94
95
  prefect/client/orchestration/routes.py,sha256=_-HC-EmgMhsYdmGwZTxIXlINaVzYuX7RZAvzjHbVp-4,4266
95
96
  prefect/client/orchestration/_artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -119,7 +120,7 @@ prefect/client/orchestration/_work_pools/client.py,sha256=s1DfUQQBgB2sLiVVPhLNTl
119
120
  prefect/client/schemas/__init__.py,sha256=InZcDzdeWA2oaV0TlyvoMcyLcbi_aaqU1U9D6Gx-eoU,2747
120
121
  prefect/client/schemas/actions.py,sha256=E46Mdq7vAq8hhYmMj6zqUF20uAPXZricViZcIYmgEf0,32443
121
122
  prefect/client/schemas/filters.py,sha256=qa--NNZduuSOcL1xw-YMd4FVIKMrDnBwPPY4m5Di0GA,35963
122
- prefect/client/schemas/objects.py,sha256=6rR9ccLJ4f1Hw0J8ywzgX2L3FRw8--XCQX9blBrE7R8,57984
123
+ prefect/client/schemas/objects.py,sha256=JYcHShcR4JUBjc1VrsMaJ0QYd3H9peXbXtT9U4Lhkc8,57708
123
124
  prefect/client/schemas/responses.py,sha256=Zdcx7jlIaluEa2uYIOE5mK1HsJvWPErRAcaWM20oY_I,17336
124
125
  prefect/client/schemas/schedules.py,sha256=sxLFk0SmFY7X1Y9R9HyGDqOS3U5NINBWTciUU7vTTic,14836
125
126
  prefect/client/schemas/sorting.py,sha256=L-2Mx-igZPtsUoRUguTcG3nIEstMEMPD97NwPM2Ox5s,2579
@@ -161,7 +162,7 @@ prefect/events/worker.py,sha256=HjbibR0_J1W1nnNMZDFTXAbB0cl_cFGaFI87DvNGcnI,4557
161
162
  prefect/events/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
163
  prefect/events/cli/automations.py,sha256=uCX3NnypoI25TmyAoyL6qYhanWjZbJ2watwv1nfQMxs,11513
163
164
  prefect/events/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
- prefect/events/schemas/automations.py,sha256=UHrV572HB5Icb1LuOUkMIdDrMDsxW1GhIiST-qzUlFs,14640
165
+ prefect/events/schemas/automations.py,sha256=GVAfgyNoTxr8NpEw_Ao-1Prfd_MSsrhrLsXv6SLKUdY,14775
165
166
  prefect/events/schemas/deployment_triggers.py,sha256=OX9g9eHe0nqJ3PtVEzqs9Ub2LaOHMA4afLZSvSukKGU,3191
166
167
  prefect/events/schemas/events.py,sha256=r8sSx2Q1A0KIofnZR_Bri7YT1wzXKV3YS-LnxpeIXHE,9270
167
168
  prefect/events/schemas/labelling.py,sha256=bU-XYaHXhI2MEBIHngth96R9D02m8HHb85KNcHZ_1Gc,3073
@@ -177,7 +178,7 @@ prefect/input/__init__.py,sha256=Ue2h-YhYP71nEtsVJaslqMwO6C0ckjhjTYwwEgp-E3g,701
177
178
  prefect/input/actions.py,sha256=BDx26b6ZYCTr0kbWBp73Or7UXnLIv1lnm0jow6Simxw,3871
178
179
  prefect/input/run_input.py,sha256=GoM4LR3oqAFLf2sPCR1yITY9tNSZT8kAd4gaC-v-a-c,22703
179
180
  prefect/locking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
- prefect/locking/filesystem.py,sha256=RVE4_5lgKi1iea0NZVQlyct5GU4fVAtCPPEdRMDaQHw,8128
181
+ prefect/locking/filesystem.py,sha256=PxC9ndDbo59-gBEx9jtKad4T-Jav0srJSM9vYGzvQwE,8134
181
182
  prefect/locking/memory.py,sha256=EFQnhAO94jEy4TyS880DbsJ42CHT5WNuNc6Wj8dYrKc,7842
182
183
  prefect/locking/protocol.py,sha256=RsfvlaHTTEJ0YvYWSqFGoZuT2w4FPPxyQlHqjoyNGuE,4240
183
184
  prefect/logging/__init__.py,sha256=DpRZzZeWeiDHFlMDEQdknRzbxpL0ObFh5IqqS9iaZwQ,170
@@ -218,7 +219,7 @@ prefect/server/api/events.py,sha256=mUTv5ZNxiRsEOpzq8fpfCkLpPasjt-ROUAowA5eFbDE,
218
219
  prefect/server/api/flow_run_states.py,sha256=lIdxVE9CqLgtDCuH9bTaKkzHNL81FPrr11liPzvONrw,1661
219
220
  prefect/server/api/flow_runs.py,sha256=Lmb165fLbN4DioxjxgDYaAJ5Qxj771iRYaqn-hYq9KM,33744
220
221
  prefect/server/api/flows.py,sha256=Bz0ISh-9oY0W1X3mqA631_8678pQ6tuRGMpSgWAfxOc,7018
221
- prefect/server/api/logs.py,sha256=0z78tM2B5sRgJWYRWJn5lHhRoLtZB_OU3C-uALV8tOs,1571
222
+ prefect/server/api/logs.py,sha256=10Xsjg_cj1qY9spRe0I6lFskSEFX1RyPU0-650_gMKY,3284
222
223
  prefect/server/api/middleware.py,sha256=WkyuyeJIfo9Q0GAIVU5gO6yIGNVwoHwuBah5AB5oUyw,2733
223
224
  prefect/server/api/root.py,sha256=CeumFYIM_BDvPicJH9ry5PO_02PZTLeMqbLMGGTh90o,942
224
225
  prefect/server/api/run_history.py,sha256=EW-GTPxZAQ5zXiAqHzmS-iAN_Bn6ZSgVQksDT-ZTsyc,5995
@@ -270,7 +271,8 @@ prefect/settings/models/server/deployments.py,sha256=LjWQr2U1mjItYhuuLqMT_QQ7P4K
270
271
  prefect/settings/models/server/ephemeral.py,sha256=rh8Py5Nxh-gq9KgfB7CDnIgT_nuOuv59OrLGuhMIGmk,1043
271
272
  prefect/settings/models/server/events.py,sha256=9rdlbLz9SIg_easm1UcFTfX1seS935Xtv5d9y3r39Eo,5578
272
273
  prefect/settings/models/server/flow_run_graph.py,sha256=PuAZqqdu6fzvrbUgXZzyntUH_Ii_bP7qezgcgvW7ULk,1146
273
- prefect/settings/models/server/root.py,sha256=Dk_Zx4eGUy1h2cAetDKphnd6TWhDrK6DHOLJxdP7e1Y,5215
274
+ prefect/settings/models/server/logs.py,sha256=tk6tzZS2pAHcAA55Ko-WaIbYz88sUGSGESvZHjIzv9Q,756
275
+ prefect/settings/models/server/root.py,sha256=9z58934Yqudf8N3-aRCIL73GPsfs3dKuTt-E9ECaxB4,5409
274
276
  prefect/settings/models/server/services.py,sha256=Mb71MG5I1hPlCaJ54vNmHgU7Rxde2x8QeDQl9a8cGU4,18998
275
277
  prefect/settings/models/server/tasks.py,sha256=_CaOUfh3WDXvUhmHXmR-MkTRaQqocZck4efmX74iOg8,2976
276
278
  prefect/settings/models/server/ui.py,sha256=hShsi4rPBtdJA2WnT1Er0tWqu-e5wUum8NkNgucShkk,1867
@@ -286,13 +288,13 @@ prefect/types/_datetime.py,sha256=_N3eAMhYlwSEubMQlfeTGxLJHn2jRFPrNPxkod21B_s,75
286
288
  prefect/types/entrypoint.py,sha256=2FF03-wLPgtnqR_bKJDB2BsXXINPdu8ptY9ZYEZnXg8,328
287
289
  prefect/types/names.py,sha256=dGXNrP9nibQTm4hOBOpaQebKm3Avf3OGM5MH4M5BUKc,4013
288
290
  prefect/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
289
- prefect/utilities/_ast.py,sha256=sgEPUWElih-3cp4PoAy1IOyPtu8E27lL0Dldf3ijnYY,4905
291
+ prefect/utilities/_ast.py,sha256=IE_XGZAfkd_C7Rl6MvvNC4kGSbbqIFAbYa5S2PPks-U,4910
290
292
  prefect/utilities/_deprecated.py,sha256=b3pqRSoFANdVJAc8TJkygBcP-VjZtLJUxVIWC7kwspI,1303
291
293
  prefect/utilities/_engine.py,sha256=9GW4X1lyAbmPwCuXXIubVJ7Z0DMT3dykkEUtp9tm5hI,3356
292
294
  prefect/utilities/_git.py,sha256=bPYWQdr9xvH0BqxR1ll1RkaSb3x0vhwylhYD5EilkKU,863
293
295
  prefect/utilities/annotations.py,sha256=0Elqgq6LR7pQqezNqT5wb6U_0e2pDO_zx6VseVL6kL8,4396
294
296
  prefect/utilities/asyncutils.py,sha256=xcfeNym2j3WH4gKXznON2hI1PpUTcwr_BGc16IQS3C4,19789
295
- prefect/utilities/callables.py,sha256=HcXA3_Stb8CBtp074SuFKuMy-ge2KW89X5towbzGjaY,25925
297
+ prefect/utilities/callables.py,sha256=57adLaN2QGJEE0YCdv1jS1L5R3vi4IuzPiNVZ7cCcEk,25930
296
298
  prefect/utilities/collections.py,sha256=c3nPLPWqIZQQdNuHs_nrbQJwuhQSX4ivUl-h9LtzXto,23243
297
299
  prefect/utilities/compat.py,sha256=nnPA3lf2f4Y-l645tYFFNmj5NDPaYvjqa9pbGKZ3WKE,582
298
300
  prefect/utilities/context.py,sha256=23SDMgdt07SjmB1qShiykHfGgiv55NBzdbMXM3fE9CI,1447
@@ -325,7 +327,7 @@ prefect/workers/cloud.py,sha256=dPvG1jDGD5HSH7aM2utwtk6RaJ9qg13XjkA0lAIgQmY,287
325
327
  prefect/workers/process.py,sha256=Yi5D0U5AQ51wHT86GdwtImXSefe0gJf3LGq4r4z9zwM,11090
326
328
  prefect/workers/server.py,sha256=2pmVeJZiVbEK02SO6BEZaBIvHMsn6G8LzjW8BXyiTtk,1952
327
329
  prefect/workers/utilities.py,sha256=VfPfAlGtTuDj0-Kb8WlMgAuOfgXCdrGAnKMapPSBrwc,2483
328
- prefect_client-3.4.7.dev1.dist-info/METADATA,sha256=MonfmnGhNyj5DVF9qenqZUAUOwPM4z7ZMQd7KIwpTPw,7517
329
- prefect_client-3.4.7.dev1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
330
- prefect_client-3.4.7.dev1.dist-info/licenses/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
331
- prefect_client-3.4.7.dev1.dist-info/RECORD,,
330
+ prefect_client-3.4.7.dev3.dist-info/METADATA,sha256=I7zZWLn2BwTOehFSIbkXwLGRffJwBHXUV1_Ticj2-5g,7517
331
+ prefect_client-3.4.7.dev3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
332
+ prefect_client-3.4.7.dev3.dist-info/licenses/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
333
+ prefect_client-3.4.7.dev3.dist-info/RECORD,,