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,453 +0,0 @@
1
- import warnings
2
- from enum import Enum
3
- from typing import Any, Callable, List, Optional, Sequence
4
-
5
- from prefect._internal.pydantic import HAS_PYDANTIC_V2
6
-
7
- if HAS_PYDANTIC_V2:
8
- from pydantic.v1.fields import FieldInfo, Undefined
9
- else:
10
- from pydantic.fields import FieldInfo, Undefined
11
-
12
- from typing_extensions import Annotated, deprecated
13
-
14
-
15
- class ParamTypes(Enum):
16
- query = "query"
17
- header = "header"
18
- path = "path"
19
- cookie = "cookie"
20
-
21
-
22
- class Param(FieldInfo):
23
- in_: ParamTypes
24
-
25
- def __init__(
26
- self,
27
- default: Any = Undefined,
28
- *,
29
- alias: Optional[str] = None,
30
- title: Optional[str] = None,
31
- description: Optional[str] = None,
32
- gt: Optional[float] = None,
33
- ge: Optional[float] = None,
34
- lt: Optional[float] = None,
35
- le: Optional[float] = None,
36
- min_length: Optional[int] = None,
37
- max_length: Optional[int] = None,
38
- regex: Optional[str] = None,
39
- examples: Optional[List[Any]] = None,
40
- example: Annotated[
41
- Optional[Any],
42
- deprecated(
43
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
44
- "although still supported. Use examples instead."
45
- ),
46
- ] = Undefined,
47
- deprecated: Optional[bool] = None,
48
- include_in_schema: bool = True,
49
- **extra: Any,
50
- ):
51
- self.deprecated = deprecated
52
- if example is not Undefined:
53
- warnings.warn(
54
- "`example` has been depreacated, please use `examples` instead",
55
- category=DeprecationWarning,
56
- stacklevel=1,
57
- )
58
- self.example = example
59
- self.include_in_schema = include_in_schema
60
- extra_kwargs = {**extra}
61
- if examples:
62
- extra_kwargs["examples"] = examples
63
- super().__init__(
64
- default=default,
65
- alias=alias,
66
- title=title,
67
- description=description,
68
- gt=gt,
69
- ge=ge,
70
- lt=lt,
71
- le=le,
72
- min_length=min_length,
73
- max_length=max_length,
74
- regex=regex,
75
- **extra_kwargs,
76
- )
77
-
78
- def __repr__(self) -> str:
79
- return f"{self.__class__.__name__}({self.default})"
80
-
81
-
82
- class Path(Param):
83
- in_ = ParamTypes.path
84
-
85
- def __init__(
86
- self,
87
- default: Any = ...,
88
- *,
89
- alias: Optional[str] = None,
90
- title: Optional[str] = None,
91
- description: Optional[str] = None,
92
- gt: Optional[float] = None,
93
- ge: Optional[float] = None,
94
- lt: Optional[float] = None,
95
- le: Optional[float] = None,
96
- min_length: Optional[int] = None,
97
- max_length: Optional[int] = None,
98
- regex: Optional[str] = None,
99
- examples: Optional[List[Any]] = None,
100
- example: Annotated[
101
- Optional[Any],
102
- deprecated(
103
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
104
- "although still supported. Use examples instead."
105
- ),
106
- ] = Undefined,
107
- deprecated: Optional[bool] = None,
108
- include_in_schema: bool = True,
109
- **extra: Any,
110
- ):
111
- assert default is ..., "Path parameters cannot have a default value"
112
- self.in_ = self.in_
113
- super().__init__(
114
- default=default,
115
- alias=alias,
116
- title=title,
117
- description=description,
118
- gt=gt,
119
- ge=ge,
120
- lt=lt,
121
- le=le,
122
- min_length=min_length,
123
- max_length=max_length,
124
- regex=regex,
125
- deprecated=deprecated,
126
- example=example,
127
- examples=examples,
128
- include_in_schema=include_in_schema,
129
- **extra,
130
- )
131
-
132
-
133
- class Query(Param):
134
- in_ = ParamTypes.query
135
-
136
- def __init__(
137
- self,
138
- default: Any = Undefined,
139
- *,
140
- alias: Optional[str] = None,
141
- title: Optional[str] = None,
142
- description: Optional[str] = None,
143
- gt: Optional[float] = None,
144
- ge: Optional[float] = None,
145
- lt: Optional[float] = None,
146
- le: Optional[float] = None,
147
- min_length: Optional[int] = None,
148
- max_length: Optional[int] = None,
149
- regex: Optional[str] = None,
150
- examples: Optional[List[Any]] = None,
151
- example: Annotated[
152
- Optional[Any],
153
- deprecated(
154
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
155
- "although still supported. Use examples instead."
156
- ),
157
- ] = Undefined,
158
- deprecated: Optional[bool] = None,
159
- include_in_schema: bool = True,
160
- **extra: Any,
161
- ):
162
- super().__init__(
163
- default=default,
164
- alias=alias,
165
- title=title,
166
- description=description,
167
- gt=gt,
168
- ge=ge,
169
- lt=lt,
170
- le=le,
171
- min_length=min_length,
172
- max_length=max_length,
173
- regex=regex,
174
- deprecated=deprecated,
175
- example=example,
176
- examples=examples,
177
- include_in_schema=include_in_schema,
178
- **extra,
179
- )
180
-
181
-
182
- class Header(Param):
183
- in_ = ParamTypes.header
184
-
185
- def __init__(
186
- self,
187
- default: Any = Undefined,
188
- *,
189
- alias: Optional[str] = None,
190
- convert_underscores: bool = True,
191
- title: Optional[str] = None,
192
- description: Optional[str] = None,
193
- gt: Optional[float] = None,
194
- ge: Optional[float] = None,
195
- lt: Optional[float] = None,
196
- le: Optional[float] = None,
197
- min_length: Optional[int] = None,
198
- max_length: Optional[int] = None,
199
- regex: Optional[str] = None,
200
- examples: Optional[List[Any]] = None,
201
- example: Annotated[
202
- Optional[Any],
203
- deprecated(
204
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
205
- "although still supported. Use examples instead."
206
- ),
207
- ] = Undefined,
208
- deprecated: Optional[bool] = None,
209
- include_in_schema: bool = True,
210
- **extra: Any,
211
- ):
212
- self.convert_underscores = convert_underscores
213
- super().__init__(
214
- default=default,
215
- alias=alias,
216
- title=title,
217
- description=description,
218
- gt=gt,
219
- ge=ge,
220
- lt=lt,
221
- le=le,
222
- min_length=min_length,
223
- max_length=max_length,
224
- regex=regex,
225
- deprecated=deprecated,
226
- example=example,
227
- examples=examples,
228
- include_in_schema=include_in_schema,
229
- **extra,
230
- )
231
-
232
-
233
- class Cookie(Param):
234
- in_ = ParamTypes.cookie
235
-
236
- def __init__(
237
- self,
238
- default: Any = Undefined,
239
- *,
240
- alias: Optional[str] = None,
241
- title: Optional[str] = None,
242
- description: Optional[str] = None,
243
- gt: Optional[float] = None,
244
- ge: Optional[float] = None,
245
- lt: Optional[float] = None,
246
- le: Optional[float] = None,
247
- min_length: Optional[int] = None,
248
- max_length: Optional[int] = None,
249
- regex: Optional[str] = None,
250
- examples: Optional[List[Any]] = None,
251
- example: Annotated[
252
- Optional[Any],
253
- deprecated(
254
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
255
- "although still supported. Use examples instead."
256
- ),
257
- ] = Undefined,
258
- deprecated: Optional[bool] = None,
259
- include_in_schema: bool = True,
260
- **extra: Any,
261
- ):
262
- super().__init__(
263
- default=default,
264
- alias=alias,
265
- title=title,
266
- description=description,
267
- gt=gt,
268
- ge=ge,
269
- lt=lt,
270
- le=le,
271
- min_length=min_length,
272
- max_length=max_length,
273
- regex=regex,
274
- deprecated=deprecated,
275
- example=example,
276
- examples=examples,
277
- include_in_schema=include_in_schema,
278
- **extra,
279
- )
280
-
281
-
282
- class Body(FieldInfo):
283
- def __init__(
284
- self,
285
- default: Any = Undefined,
286
- *,
287
- embed: bool = False,
288
- media_type: str = "application/json",
289
- alias: Optional[str] = None,
290
- title: Optional[str] = None,
291
- description: Optional[str] = None,
292
- gt: Optional[float] = None,
293
- ge: Optional[float] = None,
294
- lt: Optional[float] = None,
295
- le: Optional[float] = None,
296
- min_length: Optional[int] = None,
297
- max_length: Optional[int] = None,
298
- regex: Optional[str] = None,
299
- examples: Optional[List[Any]] = None,
300
- example: Annotated[
301
- Optional[Any],
302
- deprecated(
303
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
304
- "although still supported. Use examples instead."
305
- ),
306
- ] = Undefined,
307
- **extra: Any,
308
- ):
309
- self.embed = embed
310
- self.media_type = media_type
311
- if example is not Undefined:
312
- warnings.warn(
313
- "`example` has been depreacated, please use `examples` instead",
314
- category=DeprecationWarning,
315
- stacklevel=1,
316
- )
317
- self.example = example
318
- extra_kwargs = {**extra}
319
- if examples is not None:
320
- extra_kwargs["examples"] = examples
321
- super().__init__(
322
- default=default,
323
- alias=alias,
324
- title=title,
325
- description=description,
326
- gt=gt,
327
- ge=ge,
328
- lt=lt,
329
- le=le,
330
- min_length=min_length,
331
- max_length=max_length,
332
- regex=regex,
333
- **extra_kwargs,
334
- )
335
-
336
- def __repr__(self) -> str:
337
- return f"{self.__class__.__name__}({self.default})"
338
-
339
-
340
- class Form(Body):
341
- def __init__(
342
- self,
343
- default: Any = Undefined,
344
- *,
345
- media_type: str = "application/x-www-form-urlencoded",
346
- alias: Optional[str] = None,
347
- title: Optional[str] = None,
348
- description: Optional[str] = None,
349
- gt: Optional[float] = None,
350
- ge: Optional[float] = None,
351
- lt: Optional[float] = None,
352
- le: Optional[float] = None,
353
- min_length: Optional[int] = None,
354
- max_length: Optional[int] = None,
355
- regex: Optional[str] = None,
356
- examples: Optional[List[Any]] = None,
357
- example: Annotated[
358
- Optional[Any],
359
- deprecated(
360
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
361
- "although still supported. Use examples instead."
362
- ),
363
- ] = Undefined,
364
- **extra: Any,
365
- ):
366
- super().__init__(
367
- default=default,
368
- embed=True,
369
- media_type=media_type,
370
- alias=alias,
371
- title=title,
372
- description=description,
373
- gt=gt,
374
- ge=ge,
375
- lt=lt,
376
- le=le,
377
- min_length=min_length,
378
- max_length=max_length,
379
- regex=regex,
380
- example=example,
381
- examples=examples,
382
- **extra,
383
- )
384
-
385
-
386
- class File(Form):
387
- def __init__(
388
- self,
389
- default: Any = Undefined,
390
- *,
391
- media_type: str = "multipart/form-data",
392
- alias: Optional[str] = None,
393
- title: Optional[str] = None,
394
- description: Optional[str] = None,
395
- gt: Optional[float] = None,
396
- ge: Optional[float] = None,
397
- lt: Optional[float] = None,
398
- le: Optional[float] = None,
399
- min_length: Optional[int] = None,
400
- max_length: Optional[int] = None,
401
- regex: Optional[str] = None,
402
- examples: Optional[List[Any]] = None,
403
- example: Annotated[
404
- Optional[Any],
405
- deprecated(
406
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
407
- "although still supported. Use examples instead."
408
- ),
409
- ] = Undefined,
410
- **extra: Any,
411
- ):
412
- super().__init__(
413
- default=default,
414
- media_type=media_type,
415
- alias=alias,
416
- title=title,
417
- description=description,
418
- gt=gt,
419
- ge=ge,
420
- lt=lt,
421
- le=le,
422
- min_length=min_length,
423
- max_length=max_length,
424
- regex=regex,
425
- example=example,
426
- examples=examples,
427
- **extra,
428
- )
429
-
430
-
431
- class Depends:
432
- def __init__(
433
- self, dependency: Optional[Callable[..., Any]] = None, *, use_cache: bool = True
434
- ):
435
- self.dependency = dependency
436
- self.use_cache = use_cache
437
-
438
- def __repr__(self) -> str:
439
- attr = getattr(self.dependency, "__name__", type(self.dependency).__name__)
440
- cache = "" if self.use_cache else ", use_cache=False"
441
- return f"{self.__class__.__name__}({attr}{cache})"
442
-
443
-
444
- class Security(Depends):
445
- def __init__(
446
- self,
447
- dependency: Optional[Callable[..., Any]] = None,
448
- *,
449
- scopes: Optional[Sequence[str]] = None,
450
- use_cache: bool = True,
451
- ):
452
- super().__init__(dependency=dependency, use_cache=use_cache)
453
- self.scopes = scopes or []
@@ -1,4 +0,0 @@
1
- from prefect._vendor.starlette.requests import (
2
- HTTPConnection as HTTPConnection, # noqa: F401
3
- )
4
- from prefect._vendor.starlette.requests import Request as Request # noqa: F401
@@ -1,40 +0,0 @@
1
- from typing import Any
2
-
3
- from prefect._vendor.starlette.responses import FileResponse as FileResponse # noqa
4
- from prefect._vendor.starlette.responses import HTMLResponse as HTMLResponse # noqa
5
- from prefect._vendor.starlette.responses import JSONResponse as JSONResponse # noqa
6
- from prefect._vendor.starlette.responses import (
7
- PlainTextResponse as PlainTextResponse, # noqa
8
- )
9
- from prefect._vendor.starlette.responses import (
10
- RedirectResponse as RedirectResponse, # noqa
11
- )
12
- from prefect._vendor.starlette.responses import Response as Response # noqa
13
- from prefect._vendor.starlette.responses import (
14
- StreamingResponse as StreamingResponse, # noqa
15
- )
16
-
17
- try:
18
- import ujson
19
- except ImportError: # pragma: nocover
20
- ujson = None # type: ignore
21
-
22
-
23
- try:
24
- import orjson
25
- except ImportError: # pragma: nocover
26
- orjson = None # type: ignore
27
-
28
-
29
- class UJSONResponse(JSONResponse):
30
- def render(self, content: Any) -> bytes:
31
- assert ujson is not None, "ujson must be installed to use UJSONResponse"
32
- return ujson.dumps(content, ensure_ascii=False).encode("utf-8")
33
-
34
-
35
- class ORJSONResponse(JSONResponse):
36
- def render(self, content: Any) -> bytes:
37
- assert orjson is not None, "orjson must be installed to use ORJSONResponse"
38
- return orjson.dumps(
39
- content, option=orjson.OPT_NON_STR_KEYS | orjson.OPT_SERIALIZE_NUMPY
40
- )