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 +38 -0
- prefect/_build_info.py +3 -3
- prefect/client/cloud.py +11 -1
- prefect/client/orchestration/__init__.py +16 -6
- prefect/client/schemas/objects.py +0 -4
- prefect/events/schemas/automations.py +4 -0
- prefect/locking/filesystem.py +1 -1
- prefect/serializers.py +8 -3
- prefect/server/api/logs.py +51 -1
- prefect/settings/models/server/logs.py +28 -0
- prefect/settings/models/server/root.py +5 -0
- prefect/utilities/_ast.py +2 -2
- prefect/utilities/callables.py +1 -1
- {prefect_client-3.4.7.dev1.dist-info → prefect_client-3.4.7.dev3.dist-info}/METADATA +1 -1
- {prefect_client-3.4.7.dev1.dist-info → prefect_client-3.4.7.dev3.dist-info}/RECORD +17 -15
- {prefect_client-3.4.7.dev1.dist-info → prefect_client-3.4.7.dev3.dist-info}/WHEEL +0 -0
- {prefect_client-3.4.7.dev1.dist-info → prefect_client-3.4.7.dev3.dist-info}/licenses/LICENSE +0 -0
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.
|
3
|
-
__build_date__ = "2025-06-
|
4
|
-
__git_commit__ = "
|
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 =
|
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
|
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
|
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
|
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
|
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
|
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
|
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=...,
|
prefect/locking/filesystem.py
CHANGED
@@ -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
|
-
|
72
|
-
|
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:
|
prefect/server/api/logs.py
CHANGED
@@ -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,
|
20
|
+
DecoratedFnMetadata: TypeAlias = dict[str, Any]
|
21
21
|
|
22
22
|
|
23
23
|
async def find_prefect_decorated_functions_in_file(
|
prefect/utilities/callables.py
CHANGED
@@ -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,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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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/
|
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=
|
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=
|
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.
|
329
|
-
prefect_client-3.4.7.
|
330
|
-
prefect_client-3.4.7.
|
331
|
-
prefect_client-3.4.7.
|
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,,
|
File without changes
|
{prefect_client-3.4.7.dev1.dist-info → prefect_client-3.4.7.dev3.dist-info}/licenses/LICENSE
RENAMED
File without changes
|