prefect-client 2.19.4__py3-none-any.whl → 3.0.0rc2__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 (242) hide show
  1. prefect/__init__.py +8 -56
  2. prefect/_internal/compatibility/deprecated.py +6 -115
  3. prefect/_internal/compatibility/experimental.py +4 -79
  4. prefect/_internal/concurrency/api.py +0 -34
  5. prefect/_internal/concurrency/calls.py +0 -6
  6. prefect/_internal/concurrency/cancellation.py +0 -3
  7. prefect/_internal/concurrency/event_loop.py +0 -20
  8. prefect/_internal/concurrency/inspection.py +3 -3
  9. prefect/_internal/concurrency/threads.py +35 -0
  10. prefect/_internal/concurrency/waiters.py +0 -28
  11. prefect/_internal/pydantic/__init__.py +0 -45
  12. prefect/_internal/pydantic/v1_schema.py +21 -22
  13. prefect/_internal/pydantic/v2_schema.py +0 -2
  14. prefect/_internal/pydantic/v2_validated_func.py +18 -23
  15. prefect/_internal/schemas/bases.py +44 -177
  16. prefect/_internal/schemas/fields.py +1 -43
  17. prefect/_internal/schemas/validators.py +60 -158
  18. prefect/artifacts.py +161 -14
  19. prefect/automations.py +39 -4
  20. prefect/blocks/abstract.py +1 -1
  21. prefect/blocks/core.py +268 -148
  22. prefect/blocks/fields.py +2 -57
  23. prefect/blocks/kubernetes.py +8 -12
  24. prefect/blocks/notifications.py +40 -20
  25. prefect/blocks/redis.py +168 -0
  26. prefect/blocks/system.py +22 -11
  27. prefect/blocks/webhook.py +2 -9
  28. prefect/client/base.py +4 -4
  29. prefect/client/cloud.py +8 -13
  30. prefect/client/orchestration.py +362 -340
  31. prefect/client/schemas/actions.py +92 -86
  32. prefect/client/schemas/filters.py +20 -40
  33. prefect/client/schemas/objects.py +158 -152
  34. prefect/client/schemas/responses.py +16 -24
  35. prefect/client/schemas/schedules.py +47 -35
  36. prefect/client/subscriptions.py +2 -2
  37. prefect/client/utilities.py +5 -2
  38. prefect/concurrency/asyncio.py +4 -2
  39. prefect/concurrency/events.py +1 -1
  40. prefect/concurrency/services.py +7 -4
  41. prefect/context.py +195 -27
  42. prefect/deployments/__init__.py +5 -6
  43. prefect/deployments/base.py +7 -5
  44. prefect/deployments/flow_runs.py +185 -0
  45. prefect/deployments/runner.py +50 -45
  46. prefect/deployments/schedules.py +28 -23
  47. prefect/deployments/steps/__init__.py +0 -1
  48. prefect/deployments/steps/core.py +1 -0
  49. prefect/deployments/steps/pull.py +7 -21
  50. prefect/engine.py +12 -2422
  51. prefect/events/actions.py +17 -23
  52. prefect/events/cli/automations.py +19 -6
  53. prefect/events/clients.py +14 -37
  54. prefect/events/filters.py +14 -18
  55. prefect/events/related.py +2 -2
  56. prefect/events/schemas/__init__.py +0 -5
  57. prefect/events/schemas/automations.py +55 -46
  58. prefect/events/schemas/deployment_triggers.py +7 -197
  59. prefect/events/schemas/events.py +36 -65
  60. prefect/events/schemas/labelling.py +10 -14
  61. prefect/events/utilities.py +2 -3
  62. prefect/events/worker.py +2 -3
  63. prefect/filesystems.py +6 -517
  64. prefect/{new_flow_engine.py → flow_engine.py} +315 -74
  65. prefect/flow_runs.py +379 -7
  66. prefect/flows.py +248 -165
  67. prefect/futures.py +187 -345
  68. prefect/infrastructure/__init__.py +0 -27
  69. prefect/infrastructure/provisioners/__init__.py +5 -3
  70. prefect/infrastructure/provisioners/cloud_run.py +11 -6
  71. prefect/infrastructure/provisioners/container_instance.py +11 -7
  72. prefect/infrastructure/provisioners/ecs.py +6 -4
  73. prefect/infrastructure/provisioners/modal.py +8 -5
  74. prefect/input/actions.py +2 -4
  75. prefect/input/run_input.py +9 -9
  76. prefect/logging/formatters.py +0 -2
  77. prefect/logging/handlers.py +3 -11
  78. prefect/logging/loggers.py +2 -2
  79. prefect/manifests.py +2 -1
  80. prefect/records/__init__.py +1 -0
  81. prefect/records/cache_policies.py +179 -0
  82. prefect/records/result_store.py +42 -0
  83. prefect/records/store.py +9 -0
  84. prefect/results.py +43 -39
  85. prefect/runner/runner.py +9 -9
  86. prefect/runner/server.py +6 -10
  87. prefect/runner/storage.py +3 -8
  88. prefect/runner/submit.py +2 -2
  89. prefect/runner/utils.py +2 -2
  90. prefect/serializers.py +24 -35
  91. prefect/server/api/collections_data/views/aggregate-worker-metadata.json +5 -14
  92. prefect/settings.py +76 -136
  93. prefect/states.py +22 -50
  94. prefect/task_engine.py +666 -56
  95. prefect/task_runners.py +272 -300
  96. prefect/task_runs.py +203 -0
  97. prefect/{task_server.py → task_worker.py} +89 -60
  98. prefect/tasks.py +358 -341
  99. prefect/transactions.py +224 -0
  100. prefect/types/__init__.py +61 -82
  101. prefect/utilities/asyncutils.py +195 -136
  102. prefect/utilities/callables.py +121 -41
  103. prefect/utilities/collections.py +23 -38
  104. prefect/utilities/dispatch.py +11 -3
  105. prefect/utilities/dockerutils.py +4 -0
  106. prefect/utilities/engine.py +140 -20
  107. prefect/utilities/importtools.py +26 -27
  108. prefect/utilities/pydantic.py +128 -38
  109. prefect/utilities/schema_tools/hydration.py +5 -1
  110. prefect/utilities/templating.py +12 -2
  111. prefect/variables.py +84 -62
  112. prefect/workers/__init__.py +0 -1
  113. prefect/workers/base.py +26 -18
  114. prefect/workers/process.py +3 -8
  115. prefect/workers/server.py +2 -2
  116. {prefect_client-2.19.4.dist-info → prefect_client-3.0.0rc2.dist-info}/METADATA +23 -21
  117. prefect_client-3.0.0rc2.dist-info/RECORD +179 -0
  118. prefect/_internal/pydantic/_base_model.py +0 -51
  119. prefect/_internal/pydantic/_compat.py +0 -82
  120. prefect/_internal/pydantic/_flags.py +0 -20
  121. prefect/_internal/pydantic/_types.py +0 -8
  122. prefect/_internal/pydantic/utilities/__init__.py +0 -0
  123. prefect/_internal/pydantic/utilities/config_dict.py +0 -72
  124. prefect/_internal/pydantic/utilities/field_validator.py +0 -150
  125. prefect/_internal/pydantic/utilities/model_construct.py +0 -56
  126. prefect/_internal/pydantic/utilities/model_copy.py +0 -55
  127. prefect/_internal/pydantic/utilities/model_dump.py +0 -136
  128. prefect/_internal/pydantic/utilities/model_dump_json.py +0 -112
  129. prefect/_internal/pydantic/utilities/model_fields.py +0 -50
  130. prefect/_internal/pydantic/utilities/model_fields_set.py +0 -29
  131. prefect/_internal/pydantic/utilities/model_json_schema.py +0 -82
  132. prefect/_internal/pydantic/utilities/model_rebuild.py +0 -80
  133. prefect/_internal/pydantic/utilities/model_validate.py +0 -75
  134. prefect/_internal/pydantic/utilities/model_validate_json.py +0 -68
  135. prefect/_internal/pydantic/utilities/model_validator.py +0 -87
  136. prefect/_internal/pydantic/utilities/type_adapter.py +0 -71
  137. prefect/_vendor/__init__.py +0 -0
  138. prefect/_vendor/fastapi/__init__.py +0 -25
  139. prefect/_vendor/fastapi/applications.py +0 -946
  140. prefect/_vendor/fastapi/background.py +0 -3
  141. prefect/_vendor/fastapi/concurrency.py +0 -44
  142. prefect/_vendor/fastapi/datastructures.py +0 -58
  143. prefect/_vendor/fastapi/dependencies/__init__.py +0 -0
  144. prefect/_vendor/fastapi/dependencies/models.py +0 -64
  145. prefect/_vendor/fastapi/dependencies/utils.py +0 -877
  146. prefect/_vendor/fastapi/encoders.py +0 -177
  147. prefect/_vendor/fastapi/exception_handlers.py +0 -40
  148. prefect/_vendor/fastapi/exceptions.py +0 -46
  149. prefect/_vendor/fastapi/logger.py +0 -3
  150. prefect/_vendor/fastapi/middleware/__init__.py +0 -1
  151. prefect/_vendor/fastapi/middleware/asyncexitstack.py +0 -25
  152. prefect/_vendor/fastapi/middleware/cors.py +0 -3
  153. prefect/_vendor/fastapi/middleware/gzip.py +0 -3
  154. prefect/_vendor/fastapi/middleware/httpsredirect.py +0 -3
  155. prefect/_vendor/fastapi/middleware/trustedhost.py +0 -3
  156. prefect/_vendor/fastapi/middleware/wsgi.py +0 -3
  157. prefect/_vendor/fastapi/openapi/__init__.py +0 -0
  158. prefect/_vendor/fastapi/openapi/constants.py +0 -2
  159. prefect/_vendor/fastapi/openapi/docs.py +0 -203
  160. prefect/_vendor/fastapi/openapi/models.py +0 -480
  161. prefect/_vendor/fastapi/openapi/utils.py +0 -485
  162. prefect/_vendor/fastapi/param_functions.py +0 -340
  163. prefect/_vendor/fastapi/params.py +0 -453
  164. prefect/_vendor/fastapi/requests.py +0 -4
  165. prefect/_vendor/fastapi/responses.py +0 -40
  166. prefect/_vendor/fastapi/routing.py +0 -1331
  167. prefect/_vendor/fastapi/security/__init__.py +0 -15
  168. prefect/_vendor/fastapi/security/api_key.py +0 -98
  169. prefect/_vendor/fastapi/security/base.py +0 -6
  170. prefect/_vendor/fastapi/security/http.py +0 -172
  171. prefect/_vendor/fastapi/security/oauth2.py +0 -227
  172. prefect/_vendor/fastapi/security/open_id_connect_url.py +0 -34
  173. prefect/_vendor/fastapi/security/utils.py +0 -10
  174. prefect/_vendor/fastapi/staticfiles.py +0 -1
  175. prefect/_vendor/fastapi/templating.py +0 -3
  176. prefect/_vendor/fastapi/testclient.py +0 -1
  177. prefect/_vendor/fastapi/types.py +0 -3
  178. prefect/_vendor/fastapi/utils.py +0 -235
  179. prefect/_vendor/fastapi/websockets.py +0 -7
  180. prefect/_vendor/starlette/__init__.py +0 -1
  181. prefect/_vendor/starlette/_compat.py +0 -28
  182. prefect/_vendor/starlette/_exception_handler.py +0 -80
  183. prefect/_vendor/starlette/_utils.py +0 -88
  184. prefect/_vendor/starlette/applications.py +0 -261
  185. prefect/_vendor/starlette/authentication.py +0 -159
  186. prefect/_vendor/starlette/background.py +0 -43
  187. prefect/_vendor/starlette/concurrency.py +0 -59
  188. prefect/_vendor/starlette/config.py +0 -151
  189. prefect/_vendor/starlette/convertors.py +0 -87
  190. prefect/_vendor/starlette/datastructures.py +0 -707
  191. prefect/_vendor/starlette/endpoints.py +0 -130
  192. prefect/_vendor/starlette/exceptions.py +0 -60
  193. prefect/_vendor/starlette/formparsers.py +0 -276
  194. prefect/_vendor/starlette/middleware/__init__.py +0 -17
  195. prefect/_vendor/starlette/middleware/authentication.py +0 -52
  196. prefect/_vendor/starlette/middleware/base.py +0 -220
  197. prefect/_vendor/starlette/middleware/cors.py +0 -176
  198. prefect/_vendor/starlette/middleware/errors.py +0 -265
  199. prefect/_vendor/starlette/middleware/exceptions.py +0 -74
  200. prefect/_vendor/starlette/middleware/gzip.py +0 -113
  201. prefect/_vendor/starlette/middleware/httpsredirect.py +0 -19
  202. prefect/_vendor/starlette/middleware/sessions.py +0 -82
  203. prefect/_vendor/starlette/middleware/trustedhost.py +0 -64
  204. prefect/_vendor/starlette/middleware/wsgi.py +0 -147
  205. prefect/_vendor/starlette/requests.py +0 -328
  206. prefect/_vendor/starlette/responses.py +0 -347
  207. prefect/_vendor/starlette/routing.py +0 -933
  208. prefect/_vendor/starlette/schemas.py +0 -154
  209. prefect/_vendor/starlette/staticfiles.py +0 -248
  210. prefect/_vendor/starlette/status.py +0 -199
  211. prefect/_vendor/starlette/templating.py +0 -231
  212. prefect/_vendor/starlette/testclient.py +0 -804
  213. prefect/_vendor/starlette/types.py +0 -30
  214. prefect/_vendor/starlette/websockets.py +0 -193
  215. prefect/agent.py +0 -698
  216. prefect/deployments/deployments.py +0 -1042
  217. prefect/deprecated/__init__.py +0 -0
  218. prefect/deprecated/data_documents.py +0 -350
  219. prefect/deprecated/packaging/__init__.py +0 -12
  220. prefect/deprecated/packaging/base.py +0 -96
  221. prefect/deprecated/packaging/docker.py +0 -146
  222. prefect/deprecated/packaging/file.py +0 -92
  223. prefect/deprecated/packaging/orion.py +0 -80
  224. prefect/deprecated/packaging/serializers.py +0 -171
  225. prefect/events/instrument.py +0 -135
  226. prefect/infrastructure/base.py +0 -323
  227. prefect/infrastructure/container.py +0 -818
  228. prefect/infrastructure/kubernetes.py +0 -920
  229. prefect/infrastructure/process.py +0 -289
  230. prefect/new_task_engine.py +0 -423
  231. prefect/pydantic/__init__.py +0 -76
  232. prefect/pydantic/main.py +0 -39
  233. prefect/software/__init__.py +0 -2
  234. prefect/software/base.py +0 -50
  235. prefect/software/conda.py +0 -199
  236. prefect/software/pip.py +0 -122
  237. prefect/software/python.py +0 -52
  238. prefect/workers/block.py +0 -218
  239. prefect_client-2.19.4.dist-info/RECORD +0 -292
  240. {prefect_client-2.19.4.dist-info → prefect_client-3.0.0rc2.dist-info}/LICENSE +0 -0
  241. {prefect_client-2.19.4.dist-info → prefect_client-3.0.0rc2.dist-info}/WHEEL +0 -0
  242. {prefect_client-2.19.4.dist-info → prefect_client-3.0.0rc2.dist-info}/top_level.txt +0 -0
@@ -1,3 +0,0 @@
1
- from prefect._vendor.starlette.background import (
2
- BackgroundTasks as BackgroundTasks,
3
- )
@@ -1,44 +0,0 @@
1
- from contextlib import AsyncExitStack as AsyncExitStack # noqa
2
- from contextlib import asynccontextmanager as asynccontextmanager
3
- from typing import AsyncGenerator, ContextManager, TypeVar
4
-
5
- import anyio
6
- from anyio import CapacityLimiter
7
- from prefect._vendor.starlette.concurrency import (
8
- iterate_in_threadpool as iterate_in_threadpool,
9
- ) # noqa
10
- from prefect._vendor.starlette.concurrency import (
11
- run_in_threadpool as run_in_threadpool,
12
- ) # noqa
13
- from prefect._vendor.starlette.concurrency import ( # noqa
14
- run_until_first_complete as run_until_first_complete,
15
- )
16
-
17
- _T = TypeVar("_T")
18
-
19
-
20
- @asynccontextmanager
21
- async def contextmanager_in_threadpool(
22
- cm: ContextManager[_T],
23
- ) -> AsyncGenerator[_T, None]:
24
- # blocking __exit__ from running waiting on a free thread
25
- # can create race conditions/deadlocks if the context manager itself
26
- # has it's own internal pool (e.g. a database connection pool)
27
- # to avoid this we let __exit__ run without a capacity limit
28
- # since we're creating a new limiter for each call, any non-zero limit
29
- # works (1 is arbitrary)
30
- exit_limiter = CapacityLimiter(1)
31
- try:
32
- yield await run_in_threadpool(cm.__enter__)
33
- except Exception as e:
34
- ok = bool(
35
- await anyio.to_thread.run_sync(
36
- cm.__exit__, type(e), e, None, limiter=exit_limiter
37
- )
38
- )
39
- if not ok:
40
- raise e
41
- else:
42
- await anyio.to_thread.run_sync(
43
- cm.__exit__, None, None, None, limiter=exit_limiter
44
- )
@@ -1,58 +0,0 @@
1
- from typing import Any, Callable, Dict, Iterable, Type, TypeVar
2
-
3
- from prefect._vendor.starlette.datastructures import URL as URL # noqa: F401
4
- from prefect._vendor.starlette.datastructures import Address as Address # noqa: F401
5
- from prefect._vendor.starlette.datastructures import FormData as FormData # noqa: F401
6
- from prefect._vendor.starlette.datastructures import Headers as Headers # noqa: F401
7
- from prefect._vendor.starlette.datastructures import (
8
- QueryParams as QueryParams, # noqa: F401
9
- )
10
- from prefect._vendor.starlette.datastructures import State as State # noqa: F401
11
- from prefect._vendor.starlette.datastructures import UploadFile as StarletteUploadFile
12
-
13
-
14
- class UploadFile(StarletteUploadFile):
15
- @classmethod
16
- def __get_validators__(cls: Type["UploadFile"]) -> Iterable[Callable[..., Any]]:
17
- yield cls.validate
18
-
19
- @classmethod
20
- def validate(cls: Type["UploadFile"], v: Any) -> Any:
21
- if not isinstance(v, StarletteUploadFile):
22
- raise ValueError(f"Expected UploadFile, received: {type(v)}")
23
- return v
24
-
25
- @classmethod
26
- def __modify_schema__(cls, field_schema: Dict[str, Any]) -> None:
27
- field_schema.update({"type": "string", "format": "binary"})
28
-
29
-
30
- class DefaultPlaceholder:
31
- """
32
- You shouldn't use this class directly.
33
-
34
- It's used internally to recognize when a default value has been overwritten, even
35
- if the overridden default value was truthy.
36
- """
37
-
38
- def __init__(self, value: Any):
39
- self.value = value
40
-
41
- def __bool__(self) -> bool:
42
- return bool(self.value)
43
-
44
- def __eq__(self, o: object) -> bool:
45
- return isinstance(o, DefaultPlaceholder) and o.value == self.value
46
-
47
-
48
- DefaultType = TypeVar("DefaultType")
49
-
50
-
51
- def Default(value: DefaultType) -> DefaultType:
52
- """
53
- You shouldn't use this function directly.
54
-
55
- It's used internally to recognize when a default value has been overwritten, even
56
- if the overridden default value was truthy.
57
- """
58
- return DefaultPlaceholder(value) # type: ignore
File without changes
@@ -1,64 +0,0 @@
1
- from typing import Any, Callable, List, Optional, Sequence
2
-
3
- from prefect._vendor.fastapi.security.base import SecurityBase
4
-
5
- from prefect._internal.pydantic import HAS_PYDANTIC_V2
6
-
7
- if HAS_PYDANTIC_V2:
8
- from pydantic.v1.fields import ModelField
9
- else:
10
- from pydantic.fields import ModelField
11
-
12
-
13
- class SecurityRequirement:
14
- def __init__(
15
- self, security_scheme: SecurityBase, scopes: Optional[Sequence[str]] = None
16
- ):
17
- self.security_scheme = security_scheme
18
- self.scopes = scopes
19
-
20
-
21
- class Dependant:
22
- def __init__(
23
- self,
24
- *,
25
- path_params: Optional[List[ModelField]] = None,
26
- query_params: Optional[List[ModelField]] = None,
27
- header_params: Optional[List[ModelField]] = None,
28
- cookie_params: Optional[List[ModelField]] = None,
29
- body_params: Optional[List[ModelField]] = None,
30
- dependencies: Optional[List["Dependant"]] = None,
31
- security_schemes: Optional[List[SecurityRequirement]] = None,
32
- name: Optional[str] = None,
33
- call: Optional[Callable[..., Any]] = None,
34
- request_param_name: Optional[str] = None,
35
- websocket_param_name: Optional[str] = None,
36
- http_connection_param_name: Optional[str] = None,
37
- response_param_name: Optional[str] = None,
38
- background_tasks_param_name: Optional[str] = None,
39
- security_scopes_param_name: Optional[str] = None,
40
- security_scopes: Optional[List[str]] = None,
41
- use_cache: bool = True,
42
- path: Optional[str] = None,
43
- ) -> None:
44
- self.path_params = path_params or []
45
- self.query_params = query_params or []
46
- self.header_params = header_params or []
47
- self.cookie_params = cookie_params or []
48
- self.body_params = body_params or []
49
- self.dependencies = dependencies or []
50
- self.security_requirements = security_schemes or []
51
- self.request_param_name = request_param_name
52
- self.websocket_param_name = websocket_param_name
53
- self.http_connection_param_name = http_connection_param_name
54
- self.response_param_name = response_param_name
55
- self.background_tasks_param_name = background_tasks_param_name
56
- self.security_scopes = security_scopes
57
- self.security_scopes_param_name = security_scopes_param_name
58
- self.name = name
59
- self.call = call
60
- self.use_cache = use_cache
61
- # Store the path to be able to re-generate a dependable from it in overrides
62
- self.path = path
63
- # Save the cache key at creation to optimize performance
64
- self.cache_key = (self.call, tuple(sorted(set(self.security_scopes or []))))