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,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()