prefect-client 3.2.0__py3-none-any.whl → 3.2.1__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/_version.py +3 -3
- prefect/flow_engine.py +11 -2
- prefect/flows.py +23 -0
- prefect/settings/sources.py +4 -0
- {prefect_client-3.2.0.dist-info → prefect_client-3.2.1.dist-info}/METADATA +1 -1
- {prefect_client-3.2.0.dist-info → prefect_client-3.2.1.dist-info}/RECORD +9 -9
- {prefect_client-3.2.0.dist-info → prefect_client-3.2.1.dist-info}/LICENSE +0 -0
- {prefect_client-3.2.0.dist-info → prefect_client-3.2.1.dist-info}/WHEEL +0 -0
- {prefect_client-3.2.0.dist-info → prefect_client-3.2.1.dist-info}/top_level.txt +0 -0
prefect/_version.py
CHANGED
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2025-02-
|
11
|
+
"date": "2025-02-10T15:20:53-0600",
|
12
12
|
"dirty": true,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "3.2.
|
14
|
+
"full-revisionid": "f8b15dfbe4dc668f9048f5199efdd90dc8626859",
|
15
|
+
"version": "3.2.1"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
prefect/flow_engine.py
CHANGED
@@ -49,12 +49,18 @@ from prefect.context import (
|
|
49
49
|
)
|
50
50
|
from prefect.exceptions import (
|
51
51
|
Abort,
|
52
|
+
MissingFlowError,
|
52
53
|
Pause,
|
53
54
|
PrefectException,
|
54
55
|
TerminationSignal,
|
55
56
|
UpstreamTaskError,
|
56
57
|
)
|
57
|
-
from prefect.flows import
|
58
|
+
from prefect.flows import (
|
59
|
+
Flow,
|
60
|
+
load_flow_from_entrypoint,
|
61
|
+
load_flow_from_flow_run,
|
62
|
+
load_function_and_convert_to_flow,
|
63
|
+
)
|
58
64
|
from prefect.futures import PrefectFuture, resolve_futures_to_states
|
59
65
|
from prefect.logging.loggers import (
|
60
66
|
flow_run_logger,
|
@@ -125,7 +131,10 @@ def load_flow(flow_run: FlowRun) -> Flow[..., Any]:
|
|
125
131
|
|
126
132
|
if entrypoint:
|
127
133
|
# we should not accept a placeholder flow at runtime
|
128
|
-
|
134
|
+
try:
|
135
|
+
flow = load_flow_from_entrypoint(entrypoint, use_placeholder_flow=False)
|
136
|
+
except MissingFlowError:
|
137
|
+
flow = load_function_and_convert_to_flow(entrypoint)
|
129
138
|
else:
|
130
139
|
flow = run_coro_as_sync(
|
131
140
|
load_flow_from_flow_run(flow_run, use_placeholder_flow=False)
|
prefect/flows.py
CHANGED
@@ -2080,6 +2080,29 @@ def load_flow_from_entrypoint(
|
|
2080
2080
|
return flow
|
2081
2081
|
|
2082
2082
|
|
2083
|
+
def load_function_and_convert_to_flow(entrypoint: str) -> Flow[P, Any]:
|
2084
|
+
"""
|
2085
|
+
Loads a function from an entrypoint and converts it to a flow if it is not already a flow.
|
2086
|
+
"""
|
2087
|
+
|
2088
|
+
if ":" in entrypoint:
|
2089
|
+
# split by the last colon once to handle Windows paths with drive letters i.e C:\path\to\file.py:do_stuff
|
2090
|
+
path, func_name = entrypoint.rsplit(":", maxsplit=1)
|
2091
|
+
else:
|
2092
|
+
path, func_name = entrypoint.rsplit(".", maxsplit=1)
|
2093
|
+
try:
|
2094
|
+
func = import_object(entrypoint) # pyright: ignore[reportRedeclaration]
|
2095
|
+
except AttributeError as exc:
|
2096
|
+
raise RuntimeError(
|
2097
|
+
f"Function with name {func_name!r} not found in {path!r}."
|
2098
|
+
) from exc
|
2099
|
+
|
2100
|
+
if isinstance(func, Flow):
|
2101
|
+
return func
|
2102
|
+
else:
|
2103
|
+
return Flow(func, log_prints=True)
|
2104
|
+
|
2105
|
+
|
2083
2106
|
def serve(
|
2084
2107
|
*args: "RunnerDeployment",
|
2085
2108
|
pause_on_shutdown: bool = True,
|
prefect/settings/sources.py
CHANGED
@@ -319,6 +319,10 @@ def _get_profiles_path() -> Path:
|
|
319
319
|
"pyproject.toml", ["tool", "prefect", "profiles_path"]
|
320
320
|
):
|
321
321
|
return Path(pyproject_path)
|
322
|
+
|
323
|
+
if os.environ.get("PREFECT_HOME"):
|
324
|
+
return Path(os.environ["PREFECT_HOME"]) / "profiles.toml"
|
325
|
+
|
322
326
|
if not (DEFAULT_PREFECT_HOME / "profiles.toml").exists():
|
323
327
|
return DEFAULT_PROFILES_PATH
|
324
328
|
return DEFAULT_PREFECT_HOME / "profiles.toml"
|
@@ -2,7 +2,7 @@ prefect/.prefectignore,sha256=awSprvKT0vI8a64mEOLrMxhxqcO-b0ERQeYpA2rNKVQ,390
|
|
2
2
|
prefect/__init__.py,sha256=FmdMSNpGH8Mrkn5X0mNZup8_SHdeB_aqEmS5taeOHAQ,3530
|
3
3
|
prefect/__main__.py,sha256=WFjw3kaYJY6pOTA7WDOgqjsz8zUEUZHCcj3P5wyVa-g,66
|
4
4
|
prefect/_result_records.py,sha256=d6VWsJuXEM645kFm3y9J3j1lKGmFY2OihyBp-WEQmQA,7584
|
5
|
-
prefect/_version.py,sha256=
|
5
|
+
prefect/_version.py,sha256=t1hNzonzGvks3WeozTF7c1ud2j6kgIXJ21ijVHd6gv8,496
|
6
6
|
prefect/agent.py,sha256=dPvG1jDGD5HSH7aM2utwtk6RaJ9qg13XjkA0lAIgQmY,287
|
7
7
|
prefect/artifacts.py,sha256=dMBUOAWnUamzjb5HSqwB5-GR2Qb-Gxee26XG5NDCUuw,22720
|
8
8
|
prefect/automations.py,sha256=ZzPxn2tINdlXTQo805V4rIlbXuNWxd7cdb3gTJxZIeY,12567
|
@@ -11,9 +11,9 @@ prefect/context.py,sha256=iJe4pkFqX6lz8ax1Mde_YqVmBVWmzeBe0ca2_nT6KPQ,23673
|
|
11
11
|
prefect/engine.py,sha256=g-Hf2FfhMOncLiGhT-rCN142Yx6JmcL-r3zYak_MCX8,2609
|
12
12
|
prefect/exceptions.py,sha256=-nih8qqdxRm6CX-4yrqwePVh8Mcpvla_V6N_KbdJsIU,11593
|
13
13
|
prefect/filesystems.py,sha256=v5YqGB4uXf9Ew2VuB9VCSkawvYMMVvEtZf7w1VmAmr8,18036
|
14
|
-
prefect/flow_engine.py,sha256=
|
14
|
+
prefect/flow_engine.py,sha256=mW95w_fBpEPejYFXuMyjfnhm7J1jMSv_VtAYGD0VlCo,60226
|
15
15
|
prefect/flow_runs.py,sha256=MzjfRFgQwOqUSC3Iuu6E0hWkWdn089Urk6BY3qjEwEE,16113
|
16
|
-
prefect/flows.py,sha256=
|
16
|
+
prefect/flows.py,sha256=AnMGp25Xb1weSC9iBGinH8k2ro8MaqsQbxLWGoqY9b4,108215
|
17
17
|
prefect/futures.py,sha256=NYWGeC8uRGe1WWB1MxkUshdvAdYibhc32HdFjffdiW0,17217
|
18
18
|
prefect/main.py,sha256=9NFSloSmrOgzXg_Pwh_m31deeZj4jorfpx1pUZqWNi8,2359
|
19
19
|
prefect/plugins.py,sha256=FPRLR2mWVBMuOnlzeiTD9krlHONZH2rtYLD753JQDNQ,2516
|
@@ -198,7 +198,7 @@ prefect/settings/context.py,sha256=yKxnaDJHX8e2jmAVtw1RF9o7X4V3AOcz61sVeQyPX2c,2
|
|
198
198
|
prefect/settings/legacy.py,sha256=KG00GwaURl1zbwfCKAjwNRdJjB2UdTyo80gYF7U60jk,5693
|
199
199
|
prefect/settings/profiles.py,sha256=Z8vOgHx2SR_l35SsFLnrFi2qfRY2_Psn0epx5zZD8WI,12392
|
200
200
|
prefect/settings/profiles.toml,sha256=kTvqDNMzjH3fsm5OEI-NKY4dMmipor5EvQXRB6rPEjY,522
|
201
|
-
prefect/settings/sources.py,sha256
|
201
|
+
prefect/settings/sources.py,sha256=-GTAZiTFjvGCiEGC-oGQhjcwDi_3XDvxQ7MkwEsGIiA,13060
|
202
202
|
prefect/settings/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
203
203
|
prefect/settings/models/api.py,sha256=XOxZDtNKeXgOMtvlr6QBJ1_UsvsXad3m0ECgZ0vAfaA,1796
|
204
204
|
prefect/settings/models/cli.py,sha256=U-KwO1mfwj-hsyrR0KfS4eHg1-M1rr6VllqOt-VzoBM,1045
|
@@ -275,8 +275,8 @@ prefect/workers/cloud.py,sha256=dPvG1jDGD5HSH7aM2utwtk6RaJ9qg13XjkA0lAIgQmY,287
|
|
275
275
|
prefect/workers/process.py,sha256=6VWon_LK7fQNLlQTjTBFeU4KFUa4faqP4EUuTvrbtbg,20176
|
276
276
|
prefect/workers/server.py,sha256=SEuyScZ5nGm2OotdtbHjpvqJlTRVWCh29ND7FeL_fZA,1974
|
277
277
|
prefect/workers/utilities.py,sha256=VfPfAlGtTuDj0-Kb8WlMgAuOfgXCdrGAnKMapPSBrwc,2483
|
278
|
-
prefect_client-3.2.
|
279
|
-
prefect_client-3.2.
|
280
|
-
prefect_client-3.2.
|
281
|
-
prefect_client-3.2.
|
282
|
-
prefect_client-3.2.
|
278
|
+
prefect_client-3.2.1.dist-info/LICENSE,sha256=MCxsn8osAkzfxKC4CC_dLcUkU8DZLkyihZ8mGs3Ah3Q,11357
|
279
|
+
prefect_client-3.2.1.dist-info/METADATA,sha256=y0SU-d6cL0dgjIh2tGQ-t4YndTcIdiE0vxh0keXB5aI,7286
|
280
|
+
prefect_client-3.2.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
281
|
+
prefect_client-3.2.1.dist-info/top_level.txt,sha256=MJZYJgFdbRc2woQCeB4vM6T33tr01TmkEhRcns6H_H4,8
|
282
|
+
prefect_client-3.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|