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,480 +0,0 @@
1
- from enum import Enum
2
- from typing import Any, Callable, Dict, Iterable, List, Optional, Set, Union
3
-
4
- from prefect._vendor.fastapi.logger import logger
5
-
6
- from prefect._internal.pydantic import HAS_PYDANTIC_V2
7
-
8
- if HAS_PYDANTIC_V2:
9
- from pydantic.v1 import AnyUrl, BaseModel, Field
10
- else:
11
- from pydantic import AnyUrl, BaseModel, Field
12
-
13
- from typing_extensions import Annotated, Literal
14
- from typing_extensions import deprecated as typing_deprecated
15
-
16
- try:
17
- import email_validator # type: ignore
18
-
19
- assert email_validator # make autoflake ignore the unused import
20
-
21
- if HAS_PYDANTIC_V2:
22
- from pydantic.v1 import EmailStr
23
- else:
24
- from pydantic import EmailStr
25
-
26
- except ImportError: # pragma: no cover
27
-
28
- class EmailStr(str): # type: ignore
29
- @classmethod
30
- def __get_validators__(cls) -> Iterable[Callable[..., Any]]:
31
- yield cls.validate
32
-
33
- @classmethod
34
- def validate(cls, v: Any) -> str:
35
- logger.warning(
36
- "email-validator not installed, email fields will be treated as str.\n"
37
- "To install, run: pip install email-validator"
38
- )
39
- return str(v)
40
-
41
-
42
- class Contact(BaseModel):
43
- name: Optional[str] = None
44
- url: Optional[AnyUrl] = None
45
- email: Optional[EmailStr] = None
46
-
47
- class Config:
48
- extra = "allow"
49
-
50
-
51
- class License(BaseModel):
52
- name: str
53
- identifier: Optional[str] = None
54
- url: Optional[AnyUrl] = None
55
-
56
- class Config:
57
- extra = "allow"
58
-
59
-
60
- class Info(BaseModel):
61
- title: str
62
- summary: Optional[str] = None
63
- description: Optional[str] = None
64
- termsOfService: Optional[str] = None
65
- contact: Optional[Contact] = None
66
- license: Optional[License] = None
67
- version: str
68
-
69
- class Config:
70
- extra = "allow"
71
-
72
-
73
- class ServerVariable(BaseModel):
74
- enum: Annotated[Optional[List[str]], Field(min_items=1)] = None
75
- default: str
76
- description: Optional[str] = None
77
-
78
- class Config:
79
- extra = "allow"
80
-
81
-
82
- class Server(BaseModel):
83
- url: Union[AnyUrl, str]
84
- description: Optional[str] = None
85
- variables: Optional[Dict[str, ServerVariable]] = None
86
-
87
- class Config:
88
- extra = "allow"
89
-
90
-
91
- class Reference(BaseModel):
92
- ref: str = Field(alias="$ref")
93
-
94
-
95
- class Discriminator(BaseModel):
96
- propertyName: str
97
- mapping: Optional[Dict[str, str]] = None
98
-
99
-
100
- class XML(BaseModel):
101
- name: Optional[str] = None
102
- namespace: Optional[str] = None
103
- prefix: Optional[str] = None
104
- attribute: Optional[bool] = None
105
- wrapped: Optional[bool] = None
106
-
107
- class Config:
108
- extra = "allow"
109
-
110
-
111
- class ExternalDocumentation(BaseModel):
112
- description: Optional[str] = None
113
- url: AnyUrl
114
-
115
- class Config:
116
- extra = "allow"
117
-
118
-
119
- class Schema(BaseModel):
120
- # Ref: JSON Schema 2020-12: https://json-schema.org/draft/2020-12/json-schema-core.html#name-the-json-schema-core-vocabu
121
- # Core Vocabulary
122
- schema_: Optional[str] = Field(default=None, alias="$schema")
123
- vocabulary: Optional[str] = Field(default=None, alias="$vocabulary")
124
- id: Optional[str] = Field(default=None, alias="$id")
125
- anchor: Optional[str] = Field(default=None, alias="$anchor")
126
- dynamicAnchor: Optional[str] = Field(default=None, alias="$dynamicAnchor")
127
- ref: Optional[str] = Field(default=None, alias="$ref")
128
- dynamicRef: Optional[str] = Field(default=None, alias="$dynamicRef")
129
- defs: Optional[Dict[str, "SchemaOrBool"]] = Field(default=None, alias="$defs")
130
- comment: Optional[str] = Field(default=None, alias="$comment")
131
- # Ref: JSON Schema 2020-12: https://json-schema.org/draft/2020-12/json-schema-core.html#name-a-vocabulary-for-applying-s
132
- # A Vocabulary for Applying Subschemas
133
- allOf: Optional[List["SchemaOrBool"]] = None
134
- anyOf: Optional[List["SchemaOrBool"]] = None
135
- oneOf: Optional[List["SchemaOrBool"]] = None
136
- not_: Optional["SchemaOrBool"] = Field(default=None, alias="not")
137
- if_: Optional["SchemaOrBool"] = Field(default=None, alias="if")
138
- then: Optional["SchemaOrBool"] = None
139
- else_: Optional["SchemaOrBool"] = Field(default=None, alias="else")
140
- dependentSchemas: Optional[Dict[str, "SchemaOrBool"]] = None
141
- prefixItems: Optional[List["SchemaOrBool"]] = None
142
- # TODO: uncomment and remove below when deprecating Pydantic v1
143
- # It generales a list of schemas for tuples, before prefixItems was available
144
- # items: Optional["SchemaOrBool"] = None
145
- items: Optional[Union["SchemaOrBool", List["SchemaOrBool"]]] = None
146
- contains: Optional["SchemaOrBool"] = None
147
- properties: Optional[Dict[str, "SchemaOrBool"]] = None
148
- patternProperties: Optional[Dict[str, "SchemaOrBool"]] = None
149
- additionalProperties: Optional["SchemaOrBool"] = None
150
- propertyNames: Optional["SchemaOrBool"] = None
151
- unevaluatedItems: Optional["SchemaOrBool"] = None
152
- unevaluatedProperties: Optional["SchemaOrBool"] = None
153
- # Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-structural
154
- # A Vocabulary for Structural Validation
155
- type: Optional[str] = None
156
- enum: Optional[List[Any]] = None
157
- const: Optional[Any] = None
158
- multipleOf: Optional[float] = Field(default=None, gt=0)
159
- maximum: Optional[float] = None
160
- exclusiveMaximum: Optional[float] = None
161
- minimum: Optional[float] = None
162
- exclusiveMinimum: Optional[float] = None
163
- maxLength: Optional[int] = Field(default=None, ge=0)
164
- minLength: Optional[int] = Field(default=None, ge=0)
165
- pattern: Optional[str] = None
166
- maxItems: Optional[int] = Field(default=None, ge=0)
167
- minItems: Optional[int] = Field(default=None, ge=0)
168
- uniqueItems: Optional[bool] = None
169
- maxContains: Optional[int] = Field(default=None, ge=0)
170
- minContains: Optional[int] = Field(default=None, ge=0)
171
- maxProperties: Optional[int] = Field(default=None, ge=0)
172
- minProperties: Optional[int] = Field(default=None, ge=0)
173
- required: Optional[List[str]] = None
174
- dependentRequired: Optional[Dict[str, Set[str]]] = None
175
- # Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-vocabularies-for-semantic-c
176
- # Vocabularies for Semantic Content With "format"
177
- format: Optional[str] = None
178
- # Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-the-conten
179
- # A Vocabulary for the Contents of String-Encoded Data
180
- contentEncoding: Optional[str] = None
181
- contentMediaType: Optional[str] = None
182
- contentSchema: Optional["SchemaOrBool"] = None
183
- # Ref: JSON Schema Validation 2020-12: https://json-schema.org/draft/2020-12/json-schema-validation.html#name-a-vocabulary-for-basic-meta
184
- # A Vocabulary for Basic Meta-Data Annotations
185
- title: Optional[str] = None
186
- description: Optional[str] = None
187
- default: Optional[Any] = None
188
- deprecated: Optional[bool] = None
189
- readOnly: Optional[bool] = None
190
- writeOnly: Optional[bool] = None
191
- examples: Optional[List[Any]] = None
192
- # Ref: OpenAPI 3.1.0: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object
193
- # Schema Object
194
- discriminator: Optional[Discriminator] = None
195
- xml: Optional[XML] = None
196
- externalDocs: Optional[ExternalDocumentation] = None
197
- example: Annotated[
198
- Optional[Any],
199
- typing_deprecated(
200
- "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
201
- "although still supported. Use examples instead."
202
- ),
203
- ] = None
204
-
205
- class Config:
206
- extra: str = "allow"
207
-
208
-
209
- # Ref: https://json-schema.org/draft/2020-12/json-schema-core.html#name-json-schema-documents
210
- # A JSON Schema MUST be an object or a boolean.
211
- SchemaOrBool = Union[Schema, bool]
212
-
213
-
214
- class Example(BaseModel):
215
- summary: Optional[str] = None
216
- description: Optional[str] = None
217
- value: Optional[Any] = None
218
- externalValue: Optional[AnyUrl] = None
219
-
220
- class Config:
221
- extra = "allow"
222
-
223
-
224
- class ParameterInType(Enum):
225
- query = "query"
226
- header = "header"
227
- path = "path"
228
- cookie = "cookie"
229
-
230
-
231
- class Encoding(BaseModel):
232
- contentType: Optional[str] = None
233
- headers: Optional[Dict[str, Union["Header", Reference]]] = None
234
- style: Optional[str] = None
235
- explode: Optional[bool] = None
236
- allowReserved: Optional[bool] = None
237
-
238
- class Config:
239
- extra = "allow"
240
-
241
-
242
- class MediaType(BaseModel):
243
- schema_: Optional[Union[Schema, Reference]] = Field(default=None, alias="schema")
244
- example: Optional[Any] = None
245
- examples: Optional[Dict[str, Union[Example, Reference]]] = None
246
- encoding: Optional[Dict[str, Encoding]] = None
247
-
248
- class Config:
249
- extra = "allow"
250
-
251
-
252
- class ParameterBase(BaseModel):
253
- description: Optional[str] = None
254
- required: Optional[bool] = None
255
- deprecated: Optional[bool] = None
256
- # Serialization rules for simple scenarios
257
- style: Optional[str] = None
258
- explode: Optional[bool] = None
259
- allowReserved: Optional[bool] = None
260
- schema_: Optional[Union[Schema, Reference]] = Field(default=None, alias="schema")
261
- example: Optional[Any] = None
262
- examples: Optional[Dict[str, Union[Example, Reference]]] = None
263
- # Serialization rules for more complex scenarios
264
- content: Optional[Dict[str, MediaType]] = None
265
-
266
- class Config:
267
- extra = "allow"
268
-
269
-
270
- class Parameter(ParameterBase):
271
- name: str
272
- in_: ParameterInType = Field(alias="in")
273
-
274
-
275
- class Header(ParameterBase):
276
- pass
277
-
278
-
279
- class RequestBody(BaseModel):
280
- description: Optional[str] = None
281
- content: Dict[str, MediaType]
282
- required: Optional[bool] = None
283
-
284
- class Config:
285
- extra = "allow"
286
-
287
-
288
- class Link(BaseModel):
289
- operationRef: Optional[str] = None
290
- operationId: Optional[str] = None
291
- parameters: Optional[Dict[str, Union[Any, str]]] = None
292
- requestBody: Optional[Union[Any, str]] = None
293
- description: Optional[str] = None
294
- server: Optional[Server] = None
295
-
296
- class Config:
297
- extra = "allow"
298
-
299
-
300
- class Response(BaseModel):
301
- description: str
302
- headers: Optional[Dict[str, Union[Header, Reference]]] = None
303
- content: Optional[Dict[str, MediaType]] = None
304
- links: Optional[Dict[str, Union[Link, Reference]]] = None
305
-
306
- class Config:
307
- extra = "allow"
308
-
309
-
310
- class Operation(BaseModel):
311
- tags: Optional[List[str]] = None
312
- summary: Optional[str] = None
313
- description: Optional[str] = None
314
- externalDocs: Optional[ExternalDocumentation] = None
315
- operationId: Optional[str] = None
316
- parameters: Optional[List[Union[Parameter, Reference]]] = None
317
- requestBody: Optional[Union[RequestBody, Reference]] = None
318
- # Using Any for Specification Extensions
319
- responses: Optional[Dict[str, Union[Response, Any]]] = None
320
- callbacks: Optional[Dict[str, Union[Dict[str, "PathItem"], Reference]]] = None
321
- deprecated: Optional[bool] = None
322
- security: Optional[List[Dict[str, List[str]]]] = None
323
- servers: Optional[List[Server]] = None
324
-
325
- class Config:
326
- extra = "allow"
327
-
328
-
329
- class PathItem(BaseModel):
330
- ref: Optional[str] = Field(default=None, alias="$ref")
331
- summary: Optional[str] = None
332
- description: Optional[str] = None
333
- get: Optional[Operation] = None
334
- put: Optional[Operation] = None
335
- post: Optional[Operation] = None
336
- delete: Optional[Operation] = None
337
- options: Optional[Operation] = None
338
- head: Optional[Operation] = None
339
- patch: Optional[Operation] = None
340
- trace: Optional[Operation] = None
341
- servers: Optional[List[Server]] = None
342
- parameters: Optional[List[Union[Parameter, Reference]]] = None
343
-
344
- class Config:
345
- extra = "allow"
346
-
347
-
348
- class SecuritySchemeType(Enum):
349
- apiKey = "apiKey"
350
- http = "http"
351
- oauth2 = "oauth2"
352
- openIdConnect = "openIdConnect"
353
-
354
-
355
- class SecurityBase(BaseModel):
356
- type_: SecuritySchemeType = Field(alias="type")
357
- description: Optional[str] = None
358
-
359
- class Config:
360
- extra = "allow"
361
-
362
-
363
- class APIKeyIn(Enum):
364
- query = "query"
365
- header = "header"
366
- cookie = "cookie"
367
-
368
-
369
- class APIKey(SecurityBase):
370
- type_: SecuritySchemeType = Field(default=SecuritySchemeType.apiKey, alias="type")
371
- in_: APIKeyIn = Field(alias="in")
372
- name: str
373
-
374
-
375
- class HTTPBase(SecurityBase):
376
- type_: SecuritySchemeType = Field(default=SecuritySchemeType.http, alias="type")
377
- scheme: str
378
-
379
-
380
- class HTTPBearer(HTTPBase):
381
- scheme: Literal["bearer"] = "bearer"
382
- bearerFormat: Optional[str] = None
383
-
384
-
385
- class OAuthFlow(BaseModel):
386
- refreshUrl: Optional[str] = None
387
- scopes: Dict[str, str] = {}
388
-
389
- class Config:
390
- extra = "allow"
391
-
392
-
393
- class OAuthFlowImplicit(OAuthFlow):
394
- authorizationUrl: str
395
-
396
-
397
- class OAuthFlowPassword(OAuthFlow):
398
- tokenUrl: str
399
-
400
-
401
- class OAuthFlowClientCredentials(OAuthFlow):
402
- tokenUrl: str
403
-
404
-
405
- class OAuthFlowAuthorizationCode(OAuthFlow):
406
- authorizationUrl: str
407
- tokenUrl: str
408
-
409
-
410
- class OAuthFlows(BaseModel):
411
- implicit: Optional[OAuthFlowImplicit] = None
412
- password: Optional[OAuthFlowPassword] = None
413
- clientCredentials: Optional[OAuthFlowClientCredentials] = None
414
- authorizationCode: Optional[OAuthFlowAuthorizationCode] = None
415
-
416
- class Config:
417
- extra = "allow"
418
-
419
-
420
- class OAuth2(SecurityBase):
421
- type_: SecuritySchemeType = Field(default=SecuritySchemeType.oauth2, alias="type")
422
- flows: OAuthFlows
423
-
424
-
425
- class OpenIdConnect(SecurityBase):
426
- type_: SecuritySchemeType = Field(
427
- default=SecuritySchemeType.openIdConnect, alias="type"
428
- )
429
- openIdConnectUrl: str
430
-
431
-
432
- SecurityScheme = Union[APIKey, HTTPBase, OAuth2, OpenIdConnect, HTTPBearer]
433
-
434
-
435
- class Components(BaseModel):
436
- schemas: Optional[Dict[str, Union[Schema, Reference]]] = None
437
- responses: Optional[Dict[str, Union[Response, Reference]]] = None
438
- parameters: Optional[Dict[str, Union[Parameter, Reference]]] = None
439
- examples: Optional[Dict[str, Union[Example, Reference]]] = None
440
- requestBodies: Optional[Dict[str, Union[RequestBody, Reference]]] = None
441
- headers: Optional[Dict[str, Union[Header, Reference]]] = None
442
- securitySchemes: Optional[Dict[str, Union[SecurityScheme, Reference]]] = None
443
- links: Optional[Dict[str, Union[Link, Reference]]] = None
444
- # Using Any for Specification Extensions
445
- callbacks: Optional[Dict[str, Union[Dict[str, PathItem], Reference, Any]]] = None
446
- pathItems: Optional[Dict[str, Union[PathItem, Reference]]] = None
447
-
448
- class Config:
449
- extra = "allow"
450
-
451
-
452
- class Tag(BaseModel):
453
- name: str
454
- description: Optional[str] = None
455
- externalDocs: Optional[ExternalDocumentation] = None
456
-
457
- class Config:
458
- extra = "allow"
459
-
460
-
461
- class OpenAPI(BaseModel):
462
- openapi: str
463
- info: Info
464
- jsonSchemaDialect: Optional[str] = None
465
- servers: Optional[List[Server]] = None
466
- # Using Any for Specification Extensions
467
- paths: Optional[Dict[str, Union[PathItem, Any]]] = None
468
- webhooks: Optional[Dict[str, Union[PathItem, Reference]]] = None
469
- components: Optional[Components] = None
470
- security: Optional[List[Dict[str, List[str]]]] = None
471
- tags: Optional[List[Tag]] = None
472
- externalDocs: Optional[ExternalDocumentation] = None
473
-
474
- class Config:
475
- extra = "allow"
476
-
477
-
478
- Schema.update_forward_refs()
479
- Operation.update_forward_refs()
480
- Encoding.update_forward_refs()