prefect-client 2.19.3__py3-none-any.whl → 3.0.0rc1__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 (239) 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/system.py +22 -11
  26. prefect/blocks/webhook.py +2 -9
  27. prefect/client/base.py +4 -4
  28. prefect/client/cloud.py +8 -13
  29. prefect/client/orchestration.py +347 -341
  30. prefect/client/schemas/actions.py +92 -86
  31. prefect/client/schemas/filters.py +20 -40
  32. prefect/client/schemas/objects.py +147 -145
  33. prefect/client/schemas/responses.py +16 -24
  34. prefect/client/schemas/schedules.py +47 -35
  35. prefect/client/subscriptions.py +2 -2
  36. prefect/client/utilities.py +5 -2
  37. prefect/concurrency/asyncio.py +3 -1
  38. prefect/concurrency/events.py +1 -1
  39. prefect/concurrency/services.py +6 -3
  40. prefect/context.py +195 -27
  41. prefect/deployments/__init__.py +5 -6
  42. prefect/deployments/base.py +7 -5
  43. prefect/deployments/flow_runs.py +185 -0
  44. prefect/deployments/runner.py +50 -45
  45. prefect/deployments/schedules.py +28 -23
  46. prefect/deployments/steps/__init__.py +0 -1
  47. prefect/deployments/steps/core.py +1 -0
  48. prefect/deployments/steps/pull.py +7 -21
  49. prefect/engine.py +12 -2422
  50. prefect/events/actions.py +17 -23
  51. prefect/events/cli/automations.py +19 -6
  52. prefect/events/clients.py +14 -37
  53. prefect/events/filters.py +14 -18
  54. prefect/events/related.py +2 -2
  55. prefect/events/schemas/__init__.py +0 -5
  56. prefect/events/schemas/automations.py +55 -46
  57. prefect/events/schemas/deployment_triggers.py +7 -197
  58. prefect/events/schemas/events.py +34 -65
  59. prefect/events/schemas/labelling.py +10 -14
  60. prefect/events/utilities.py +2 -3
  61. prefect/events/worker.py +2 -3
  62. prefect/filesystems.py +6 -517
  63. prefect/{new_flow_engine.py → flow_engine.py} +313 -72
  64. prefect/flow_runs.py +377 -5
  65. prefect/flows.py +248 -165
  66. prefect/futures.py +186 -345
  67. prefect/infrastructure/__init__.py +0 -27
  68. prefect/infrastructure/provisioners/__init__.py +5 -3
  69. prefect/infrastructure/provisioners/cloud_run.py +11 -6
  70. prefect/infrastructure/provisioners/container_instance.py +11 -7
  71. prefect/infrastructure/provisioners/ecs.py +6 -4
  72. prefect/infrastructure/provisioners/modal.py +8 -5
  73. prefect/input/actions.py +2 -4
  74. prefect/input/run_input.py +5 -7
  75. prefect/logging/formatters.py +0 -2
  76. prefect/logging/handlers.py +3 -11
  77. prefect/logging/loggers.py +2 -2
  78. prefect/manifests.py +2 -1
  79. prefect/records/__init__.py +1 -0
  80. prefect/records/result_store.py +42 -0
  81. prefect/records/store.py +9 -0
  82. prefect/results.py +43 -39
  83. prefect/runner/runner.py +9 -9
  84. prefect/runner/server.py +6 -10
  85. prefect/runner/storage.py +3 -8
  86. prefect/runner/submit.py +2 -2
  87. prefect/runner/utils.py +2 -2
  88. prefect/serializers.py +24 -35
  89. prefect/server/api/collections_data/views/aggregate-worker-metadata.json +5 -14
  90. prefect/settings.py +70 -133
  91. prefect/states.py +17 -47
  92. prefect/task_engine.py +697 -58
  93. prefect/task_runners.py +269 -301
  94. prefect/task_server.py +53 -34
  95. prefect/tasks.py +327 -337
  96. prefect/transactions.py +220 -0
  97. prefect/types/__init__.py +61 -82
  98. prefect/utilities/asyncutils.py +195 -136
  99. prefect/utilities/callables.py +121 -41
  100. prefect/utilities/collections.py +23 -38
  101. prefect/utilities/dispatch.py +11 -3
  102. prefect/utilities/dockerutils.py +4 -0
  103. prefect/utilities/engine.py +140 -20
  104. prefect/utilities/importtools.py +26 -27
  105. prefect/utilities/pydantic.py +128 -38
  106. prefect/utilities/schema_tools/hydration.py +5 -1
  107. prefect/utilities/templating.py +12 -2
  108. prefect/variables.py +78 -61
  109. prefect/workers/__init__.py +0 -1
  110. prefect/workers/base.py +15 -17
  111. prefect/workers/process.py +3 -8
  112. prefect/workers/server.py +2 -2
  113. {prefect_client-2.19.3.dist-info → prefect_client-3.0.0rc1.dist-info}/METADATA +22 -21
  114. prefect_client-3.0.0rc1.dist-info/RECORD +176 -0
  115. prefect/_internal/pydantic/_base_model.py +0 -51
  116. prefect/_internal/pydantic/_compat.py +0 -82
  117. prefect/_internal/pydantic/_flags.py +0 -20
  118. prefect/_internal/pydantic/_types.py +0 -8
  119. prefect/_internal/pydantic/utilities/__init__.py +0 -0
  120. prefect/_internal/pydantic/utilities/config_dict.py +0 -72
  121. prefect/_internal/pydantic/utilities/field_validator.py +0 -150
  122. prefect/_internal/pydantic/utilities/model_construct.py +0 -56
  123. prefect/_internal/pydantic/utilities/model_copy.py +0 -55
  124. prefect/_internal/pydantic/utilities/model_dump.py +0 -136
  125. prefect/_internal/pydantic/utilities/model_dump_json.py +0 -112
  126. prefect/_internal/pydantic/utilities/model_fields.py +0 -50
  127. prefect/_internal/pydantic/utilities/model_fields_set.py +0 -29
  128. prefect/_internal/pydantic/utilities/model_json_schema.py +0 -82
  129. prefect/_internal/pydantic/utilities/model_rebuild.py +0 -80
  130. prefect/_internal/pydantic/utilities/model_validate.py +0 -75
  131. prefect/_internal/pydantic/utilities/model_validate_json.py +0 -68
  132. prefect/_internal/pydantic/utilities/model_validator.py +0 -87
  133. prefect/_internal/pydantic/utilities/type_adapter.py +0 -71
  134. prefect/_vendor/__init__.py +0 -0
  135. prefect/_vendor/fastapi/__init__.py +0 -25
  136. prefect/_vendor/fastapi/applications.py +0 -946
  137. prefect/_vendor/fastapi/background.py +0 -3
  138. prefect/_vendor/fastapi/concurrency.py +0 -44
  139. prefect/_vendor/fastapi/datastructures.py +0 -58
  140. prefect/_vendor/fastapi/dependencies/__init__.py +0 -0
  141. prefect/_vendor/fastapi/dependencies/models.py +0 -64
  142. prefect/_vendor/fastapi/dependencies/utils.py +0 -877
  143. prefect/_vendor/fastapi/encoders.py +0 -177
  144. prefect/_vendor/fastapi/exception_handlers.py +0 -40
  145. prefect/_vendor/fastapi/exceptions.py +0 -46
  146. prefect/_vendor/fastapi/logger.py +0 -3
  147. prefect/_vendor/fastapi/middleware/__init__.py +0 -1
  148. prefect/_vendor/fastapi/middleware/asyncexitstack.py +0 -25
  149. prefect/_vendor/fastapi/middleware/cors.py +0 -3
  150. prefect/_vendor/fastapi/middleware/gzip.py +0 -3
  151. prefect/_vendor/fastapi/middleware/httpsredirect.py +0 -3
  152. prefect/_vendor/fastapi/middleware/trustedhost.py +0 -3
  153. prefect/_vendor/fastapi/middleware/wsgi.py +0 -3
  154. prefect/_vendor/fastapi/openapi/__init__.py +0 -0
  155. prefect/_vendor/fastapi/openapi/constants.py +0 -2
  156. prefect/_vendor/fastapi/openapi/docs.py +0 -203
  157. prefect/_vendor/fastapi/openapi/models.py +0 -480
  158. prefect/_vendor/fastapi/openapi/utils.py +0 -485
  159. prefect/_vendor/fastapi/param_functions.py +0 -340
  160. prefect/_vendor/fastapi/params.py +0 -453
  161. prefect/_vendor/fastapi/requests.py +0 -4
  162. prefect/_vendor/fastapi/responses.py +0 -40
  163. prefect/_vendor/fastapi/routing.py +0 -1331
  164. prefect/_vendor/fastapi/security/__init__.py +0 -15
  165. prefect/_vendor/fastapi/security/api_key.py +0 -98
  166. prefect/_vendor/fastapi/security/base.py +0 -6
  167. prefect/_vendor/fastapi/security/http.py +0 -172
  168. prefect/_vendor/fastapi/security/oauth2.py +0 -227
  169. prefect/_vendor/fastapi/security/open_id_connect_url.py +0 -34
  170. prefect/_vendor/fastapi/security/utils.py +0 -10
  171. prefect/_vendor/fastapi/staticfiles.py +0 -1
  172. prefect/_vendor/fastapi/templating.py +0 -3
  173. prefect/_vendor/fastapi/testclient.py +0 -1
  174. prefect/_vendor/fastapi/types.py +0 -3
  175. prefect/_vendor/fastapi/utils.py +0 -235
  176. prefect/_vendor/fastapi/websockets.py +0 -7
  177. prefect/_vendor/starlette/__init__.py +0 -1
  178. prefect/_vendor/starlette/_compat.py +0 -28
  179. prefect/_vendor/starlette/_exception_handler.py +0 -80
  180. prefect/_vendor/starlette/_utils.py +0 -88
  181. prefect/_vendor/starlette/applications.py +0 -261
  182. prefect/_vendor/starlette/authentication.py +0 -159
  183. prefect/_vendor/starlette/background.py +0 -43
  184. prefect/_vendor/starlette/concurrency.py +0 -59
  185. prefect/_vendor/starlette/config.py +0 -151
  186. prefect/_vendor/starlette/convertors.py +0 -87
  187. prefect/_vendor/starlette/datastructures.py +0 -707
  188. prefect/_vendor/starlette/endpoints.py +0 -130
  189. prefect/_vendor/starlette/exceptions.py +0 -60
  190. prefect/_vendor/starlette/formparsers.py +0 -276
  191. prefect/_vendor/starlette/middleware/__init__.py +0 -17
  192. prefect/_vendor/starlette/middleware/authentication.py +0 -52
  193. prefect/_vendor/starlette/middleware/base.py +0 -220
  194. prefect/_vendor/starlette/middleware/cors.py +0 -176
  195. prefect/_vendor/starlette/middleware/errors.py +0 -265
  196. prefect/_vendor/starlette/middleware/exceptions.py +0 -74
  197. prefect/_vendor/starlette/middleware/gzip.py +0 -113
  198. prefect/_vendor/starlette/middleware/httpsredirect.py +0 -19
  199. prefect/_vendor/starlette/middleware/sessions.py +0 -82
  200. prefect/_vendor/starlette/middleware/trustedhost.py +0 -64
  201. prefect/_vendor/starlette/middleware/wsgi.py +0 -147
  202. prefect/_vendor/starlette/requests.py +0 -328
  203. prefect/_vendor/starlette/responses.py +0 -347
  204. prefect/_vendor/starlette/routing.py +0 -933
  205. prefect/_vendor/starlette/schemas.py +0 -154
  206. prefect/_vendor/starlette/staticfiles.py +0 -248
  207. prefect/_vendor/starlette/status.py +0 -199
  208. prefect/_vendor/starlette/templating.py +0 -231
  209. prefect/_vendor/starlette/testclient.py +0 -804
  210. prefect/_vendor/starlette/types.py +0 -30
  211. prefect/_vendor/starlette/websockets.py +0 -193
  212. prefect/agent.py +0 -698
  213. prefect/deployments/deployments.py +0 -1042
  214. prefect/deprecated/__init__.py +0 -0
  215. prefect/deprecated/data_documents.py +0 -350
  216. prefect/deprecated/packaging/__init__.py +0 -12
  217. prefect/deprecated/packaging/base.py +0 -96
  218. prefect/deprecated/packaging/docker.py +0 -146
  219. prefect/deprecated/packaging/file.py +0 -92
  220. prefect/deprecated/packaging/orion.py +0 -80
  221. prefect/deprecated/packaging/serializers.py +0 -171
  222. prefect/events/instrument.py +0 -135
  223. prefect/infrastructure/base.py +0 -323
  224. prefect/infrastructure/container.py +0 -818
  225. prefect/infrastructure/kubernetes.py +0 -920
  226. prefect/infrastructure/process.py +0 -289
  227. prefect/new_task_engine.py +0 -423
  228. prefect/pydantic/__init__.py +0 -76
  229. prefect/pydantic/main.py +0 -39
  230. prefect/software/__init__.py +0 -2
  231. prefect/software/base.py +0 -50
  232. prefect/software/conda.py +0 -199
  233. prefect/software/pip.py +0 -122
  234. prefect/software/python.py +0 -52
  235. prefect/workers/block.py +0 -218
  236. prefect_client-2.19.3.dist-info/RECORD +0 -292
  237. {prefect_client-2.19.3.dist-info → prefect_client-3.0.0rc1.dist-info}/LICENSE +0 -0
  238. {prefect_client-2.19.3.dist-info → prefect_client-3.0.0rc1.dist-info}/WHEEL +0 -0
  239. {prefect_client-2.19.3.dist-info → prefect_client-3.0.0rc1.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 []))))