prefect-client 2.20.4__py3-none-any.whl → 3.0.0__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 (288) hide show
  1. prefect/__init__.py +74 -110
  2. prefect/_internal/compatibility/deprecated.py +6 -115
  3. prefect/_internal/compatibility/experimental.py +4 -79
  4. prefect/_internal/compatibility/migration.py +166 -0
  5. prefect/_internal/concurrency/__init__.py +2 -2
  6. prefect/_internal/concurrency/api.py +1 -35
  7. prefect/_internal/concurrency/calls.py +0 -6
  8. prefect/_internal/concurrency/cancellation.py +0 -3
  9. prefect/_internal/concurrency/event_loop.py +0 -20
  10. prefect/_internal/concurrency/inspection.py +3 -3
  11. prefect/_internal/concurrency/primitives.py +1 -0
  12. prefect/_internal/concurrency/services.py +23 -0
  13. prefect/_internal/concurrency/threads.py +35 -0
  14. prefect/_internal/concurrency/waiters.py +0 -28
  15. prefect/_internal/integrations.py +7 -0
  16. prefect/_internal/pydantic/__init__.py +0 -45
  17. prefect/_internal/pydantic/annotations/pendulum.py +2 -2
  18. prefect/_internal/pydantic/v1_schema.py +21 -22
  19. prefect/_internal/pydantic/v2_schema.py +0 -2
  20. prefect/_internal/pydantic/v2_validated_func.py +18 -23
  21. prefect/_internal/pytz.py +1 -1
  22. prefect/_internal/retries.py +61 -0
  23. prefect/_internal/schemas/bases.py +45 -177
  24. prefect/_internal/schemas/fields.py +1 -43
  25. prefect/_internal/schemas/validators.py +47 -233
  26. prefect/agent.py +3 -695
  27. prefect/artifacts.py +173 -14
  28. prefect/automations.py +39 -4
  29. prefect/blocks/abstract.py +1 -1
  30. prefect/blocks/core.py +405 -153
  31. prefect/blocks/fields.py +2 -57
  32. prefect/blocks/notifications.py +43 -28
  33. prefect/blocks/redis.py +168 -0
  34. prefect/blocks/system.py +67 -20
  35. prefect/blocks/webhook.py +2 -9
  36. prefect/cache_policies.py +239 -0
  37. prefect/client/__init__.py +4 -0
  38. prefect/client/base.py +33 -27
  39. prefect/client/cloud.py +65 -20
  40. prefect/client/collections.py +1 -1
  41. prefect/client/orchestration.py +650 -442
  42. prefect/client/schemas/actions.py +115 -100
  43. prefect/client/schemas/filters.py +46 -52
  44. prefect/client/schemas/objects.py +228 -178
  45. prefect/client/schemas/responses.py +18 -36
  46. prefect/client/schemas/schedules.py +55 -36
  47. prefect/client/schemas/sorting.py +2 -0
  48. prefect/client/subscriptions.py +8 -7
  49. prefect/client/types/flexible_schedule_list.py +11 -0
  50. prefect/client/utilities.py +9 -6
  51. prefect/concurrency/asyncio.py +60 -11
  52. prefect/concurrency/context.py +24 -0
  53. prefect/concurrency/events.py +2 -2
  54. prefect/concurrency/services.py +46 -16
  55. prefect/concurrency/sync.py +51 -7
  56. prefect/concurrency/v1/asyncio.py +143 -0
  57. prefect/concurrency/v1/context.py +27 -0
  58. prefect/concurrency/v1/events.py +61 -0
  59. prefect/concurrency/v1/services.py +116 -0
  60. prefect/concurrency/v1/sync.py +92 -0
  61. prefect/context.py +246 -149
  62. prefect/deployments/__init__.py +33 -18
  63. prefect/deployments/base.py +10 -15
  64. prefect/deployments/deployments.py +2 -1048
  65. prefect/deployments/flow_runs.py +178 -0
  66. prefect/deployments/runner.py +72 -173
  67. prefect/deployments/schedules.py +31 -25
  68. prefect/deployments/steps/__init__.py +0 -1
  69. prefect/deployments/steps/core.py +7 -0
  70. prefect/deployments/steps/pull.py +15 -21
  71. prefect/deployments/steps/utility.py +2 -1
  72. prefect/docker/__init__.py +20 -0
  73. prefect/docker/docker_image.py +82 -0
  74. prefect/engine.py +15 -2475
  75. prefect/events/actions.py +17 -23
  76. prefect/events/cli/automations.py +20 -7
  77. prefect/events/clients.py +142 -80
  78. prefect/events/filters.py +14 -18
  79. prefect/events/related.py +74 -75
  80. prefect/events/schemas/__init__.py +0 -5
  81. prefect/events/schemas/automations.py +55 -46
  82. prefect/events/schemas/deployment_triggers.py +7 -197
  83. prefect/events/schemas/events.py +46 -65
  84. prefect/events/schemas/labelling.py +10 -14
  85. prefect/events/utilities.py +4 -5
  86. prefect/events/worker.py +23 -8
  87. prefect/exceptions.py +15 -0
  88. prefect/filesystems.py +30 -529
  89. prefect/flow_engine.py +827 -0
  90. prefect/flow_runs.py +379 -7
  91. prefect/flows.py +470 -360
  92. prefect/futures.py +382 -331
  93. prefect/infrastructure/__init__.py +5 -26
  94. prefect/infrastructure/base.py +3 -320
  95. prefect/infrastructure/provisioners/__init__.py +5 -3
  96. prefect/infrastructure/provisioners/cloud_run.py +13 -8
  97. prefect/infrastructure/provisioners/container_instance.py +14 -9
  98. prefect/infrastructure/provisioners/ecs.py +10 -8
  99. prefect/infrastructure/provisioners/modal.py +8 -5
  100. prefect/input/__init__.py +4 -0
  101. prefect/input/actions.py +2 -4
  102. prefect/input/run_input.py +9 -9
  103. prefect/logging/formatters.py +2 -4
  104. prefect/logging/handlers.py +9 -14
  105. prefect/logging/loggers.py +5 -5
  106. prefect/main.py +72 -0
  107. prefect/plugins.py +2 -64
  108. prefect/profiles.toml +16 -2
  109. prefect/records/__init__.py +1 -0
  110. prefect/records/base.py +223 -0
  111. prefect/records/filesystem.py +207 -0
  112. prefect/records/memory.py +178 -0
  113. prefect/records/result_store.py +64 -0
  114. prefect/results.py +577 -504
  115. prefect/runner/runner.py +117 -47
  116. prefect/runner/server.py +32 -34
  117. prefect/runner/storage.py +3 -12
  118. prefect/runner/submit.py +2 -10
  119. prefect/runner/utils.py +2 -2
  120. prefect/runtime/__init__.py +1 -0
  121. prefect/runtime/deployment.py +1 -0
  122. prefect/runtime/flow_run.py +40 -5
  123. prefect/runtime/task_run.py +1 -0
  124. prefect/serializers.py +28 -39
  125. prefect/server/api/collections_data/views/aggregate-worker-metadata.json +5 -14
  126. prefect/settings.py +209 -332
  127. prefect/states.py +160 -63
  128. prefect/task_engine.py +1478 -57
  129. prefect/task_runners.py +383 -287
  130. prefect/task_runs.py +240 -0
  131. prefect/task_worker.py +463 -0
  132. prefect/tasks.py +684 -374
  133. prefect/transactions.py +410 -0
  134. prefect/types/__init__.py +72 -86
  135. prefect/types/entrypoint.py +13 -0
  136. prefect/utilities/annotations.py +4 -3
  137. prefect/utilities/asyncutils.py +227 -148
  138. prefect/utilities/callables.py +137 -45
  139. prefect/utilities/collections.py +134 -86
  140. prefect/utilities/dispatch.py +27 -14
  141. prefect/utilities/dockerutils.py +11 -4
  142. prefect/utilities/engine.py +186 -32
  143. prefect/utilities/filesystem.py +4 -5
  144. prefect/utilities/importtools.py +26 -27
  145. prefect/utilities/pydantic.py +128 -38
  146. prefect/utilities/schema_tools/hydration.py +18 -1
  147. prefect/utilities/schema_tools/validation.py +30 -0
  148. prefect/utilities/services.py +35 -9
  149. prefect/utilities/templating.py +12 -2
  150. prefect/utilities/timeout.py +20 -5
  151. prefect/utilities/urls.py +195 -0
  152. prefect/utilities/visualization.py +1 -0
  153. prefect/variables.py +78 -59
  154. prefect/workers/__init__.py +0 -1
  155. prefect/workers/base.py +237 -244
  156. prefect/workers/block.py +5 -226
  157. prefect/workers/cloud.py +6 -0
  158. prefect/workers/process.py +265 -12
  159. prefect/workers/server.py +29 -11
  160. {prefect_client-2.20.4.dist-info → prefect_client-3.0.0.dist-info}/METADATA +28 -24
  161. prefect_client-3.0.0.dist-info/RECORD +201 -0
  162. {prefect_client-2.20.4.dist-info → prefect_client-3.0.0.dist-info}/WHEEL +1 -1
  163. prefect/_internal/pydantic/_base_model.py +0 -51
  164. prefect/_internal/pydantic/_compat.py +0 -82
  165. prefect/_internal/pydantic/_flags.py +0 -20
  166. prefect/_internal/pydantic/_types.py +0 -8
  167. prefect/_internal/pydantic/utilities/config_dict.py +0 -72
  168. prefect/_internal/pydantic/utilities/field_validator.py +0 -150
  169. prefect/_internal/pydantic/utilities/model_construct.py +0 -56
  170. prefect/_internal/pydantic/utilities/model_copy.py +0 -55
  171. prefect/_internal/pydantic/utilities/model_dump.py +0 -136
  172. prefect/_internal/pydantic/utilities/model_dump_json.py +0 -112
  173. prefect/_internal/pydantic/utilities/model_fields.py +0 -50
  174. prefect/_internal/pydantic/utilities/model_fields_set.py +0 -29
  175. prefect/_internal/pydantic/utilities/model_json_schema.py +0 -82
  176. prefect/_internal/pydantic/utilities/model_rebuild.py +0 -80
  177. prefect/_internal/pydantic/utilities/model_validate.py +0 -75
  178. prefect/_internal/pydantic/utilities/model_validate_json.py +0 -68
  179. prefect/_internal/pydantic/utilities/model_validator.py +0 -87
  180. prefect/_internal/pydantic/utilities/type_adapter.py +0 -71
  181. prefect/_vendor/fastapi/__init__.py +0 -25
  182. prefect/_vendor/fastapi/applications.py +0 -946
  183. prefect/_vendor/fastapi/background.py +0 -3
  184. prefect/_vendor/fastapi/concurrency.py +0 -44
  185. prefect/_vendor/fastapi/datastructures.py +0 -58
  186. prefect/_vendor/fastapi/dependencies/__init__.py +0 -0
  187. prefect/_vendor/fastapi/dependencies/models.py +0 -64
  188. prefect/_vendor/fastapi/dependencies/utils.py +0 -877
  189. prefect/_vendor/fastapi/encoders.py +0 -177
  190. prefect/_vendor/fastapi/exception_handlers.py +0 -40
  191. prefect/_vendor/fastapi/exceptions.py +0 -46
  192. prefect/_vendor/fastapi/logger.py +0 -3
  193. prefect/_vendor/fastapi/middleware/__init__.py +0 -1
  194. prefect/_vendor/fastapi/middleware/asyncexitstack.py +0 -25
  195. prefect/_vendor/fastapi/middleware/cors.py +0 -3
  196. prefect/_vendor/fastapi/middleware/gzip.py +0 -3
  197. prefect/_vendor/fastapi/middleware/httpsredirect.py +0 -3
  198. prefect/_vendor/fastapi/middleware/trustedhost.py +0 -3
  199. prefect/_vendor/fastapi/middleware/wsgi.py +0 -3
  200. prefect/_vendor/fastapi/openapi/__init__.py +0 -0
  201. prefect/_vendor/fastapi/openapi/constants.py +0 -2
  202. prefect/_vendor/fastapi/openapi/docs.py +0 -203
  203. prefect/_vendor/fastapi/openapi/models.py +0 -480
  204. prefect/_vendor/fastapi/openapi/utils.py +0 -485
  205. prefect/_vendor/fastapi/param_functions.py +0 -340
  206. prefect/_vendor/fastapi/params.py +0 -453
  207. prefect/_vendor/fastapi/py.typed +0 -0
  208. prefect/_vendor/fastapi/requests.py +0 -4
  209. prefect/_vendor/fastapi/responses.py +0 -40
  210. prefect/_vendor/fastapi/routing.py +0 -1331
  211. prefect/_vendor/fastapi/security/__init__.py +0 -15
  212. prefect/_vendor/fastapi/security/api_key.py +0 -98
  213. prefect/_vendor/fastapi/security/base.py +0 -6
  214. prefect/_vendor/fastapi/security/http.py +0 -172
  215. prefect/_vendor/fastapi/security/oauth2.py +0 -227
  216. prefect/_vendor/fastapi/security/open_id_connect_url.py +0 -34
  217. prefect/_vendor/fastapi/security/utils.py +0 -10
  218. prefect/_vendor/fastapi/staticfiles.py +0 -1
  219. prefect/_vendor/fastapi/templating.py +0 -3
  220. prefect/_vendor/fastapi/testclient.py +0 -1
  221. prefect/_vendor/fastapi/types.py +0 -3
  222. prefect/_vendor/fastapi/utils.py +0 -235
  223. prefect/_vendor/fastapi/websockets.py +0 -7
  224. prefect/_vendor/starlette/__init__.py +0 -1
  225. prefect/_vendor/starlette/_compat.py +0 -28
  226. prefect/_vendor/starlette/_exception_handler.py +0 -80
  227. prefect/_vendor/starlette/_utils.py +0 -88
  228. prefect/_vendor/starlette/applications.py +0 -261
  229. prefect/_vendor/starlette/authentication.py +0 -159
  230. prefect/_vendor/starlette/background.py +0 -43
  231. prefect/_vendor/starlette/concurrency.py +0 -59
  232. prefect/_vendor/starlette/config.py +0 -151
  233. prefect/_vendor/starlette/convertors.py +0 -87
  234. prefect/_vendor/starlette/datastructures.py +0 -707
  235. prefect/_vendor/starlette/endpoints.py +0 -130
  236. prefect/_vendor/starlette/exceptions.py +0 -60
  237. prefect/_vendor/starlette/formparsers.py +0 -276
  238. prefect/_vendor/starlette/middleware/__init__.py +0 -17
  239. prefect/_vendor/starlette/middleware/authentication.py +0 -52
  240. prefect/_vendor/starlette/middleware/base.py +0 -220
  241. prefect/_vendor/starlette/middleware/cors.py +0 -176
  242. prefect/_vendor/starlette/middleware/errors.py +0 -265
  243. prefect/_vendor/starlette/middleware/exceptions.py +0 -74
  244. prefect/_vendor/starlette/middleware/gzip.py +0 -113
  245. prefect/_vendor/starlette/middleware/httpsredirect.py +0 -19
  246. prefect/_vendor/starlette/middleware/sessions.py +0 -82
  247. prefect/_vendor/starlette/middleware/trustedhost.py +0 -64
  248. prefect/_vendor/starlette/middleware/wsgi.py +0 -147
  249. prefect/_vendor/starlette/py.typed +0 -0
  250. prefect/_vendor/starlette/requests.py +0 -328
  251. prefect/_vendor/starlette/responses.py +0 -347
  252. prefect/_vendor/starlette/routing.py +0 -933
  253. prefect/_vendor/starlette/schemas.py +0 -154
  254. prefect/_vendor/starlette/staticfiles.py +0 -248
  255. prefect/_vendor/starlette/status.py +0 -199
  256. prefect/_vendor/starlette/templating.py +0 -231
  257. prefect/_vendor/starlette/testclient.py +0 -804
  258. prefect/_vendor/starlette/types.py +0 -30
  259. prefect/_vendor/starlette/websockets.py +0 -193
  260. prefect/blocks/kubernetes.py +0 -119
  261. prefect/deprecated/__init__.py +0 -0
  262. prefect/deprecated/data_documents.py +0 -350
  263. prefect/deprecated/packaging/__init__.py +0 -12
  264. prefect/deprecated/packaging/base.py +0 -96
  265. prefect/deprecated/packaging/docker.py +0 -146
  266. prefect/deprecated/packaging/file.py +0 -92
  267. prefect/deprecated/packaging/orion.py +0 -80
  268. prefect/deprecated/packaging/serializers.py +0 -171
  269. prefect/events/instrument.py +0 -135
  270. prefect/infrastructure/container.py +0 -824
  271. prefect/infrastructure/kubernetes.py +0 -920
  272. prefect/infrastructure/process.py +0 -289
  273. prefect/manifests.py +0 -20
  274. prefect/new_flow_engine.py +0 -449
  275. prefect/new_task_engine.py +0 -423
  276. prefect/pydantic/__init__.py +0 -76
  277. prefect/pydantic/main.py +0 -39
  278. prefect/software/__init__.py +0 -2
  279. prefect/software/base.py +0 -50
  280. prefect/software/conda.py +0 -199
  281. prefect/software/pip.py +0 -122
  282. prefect/software/python.py +0 -52
  283. prefect/task_server.py +0 -322
  284. prefect_client-2.20.4.dist-info/RECORD +0 -294
  285. /prefect/{_internal/pydantic/utilities → client/types}/__init__.py +0 -0
  286. /prefect/{_vendor → concurrency/v1}/__init__.py +0 -0
  287. {prefect_client-2.20.4.dist-info → prefect_client-3.0.0.dist-info}/LICENSE +0 -0
  288. {prefect_client-2.20.4.dist-info → prefect_client-3.0.0.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()