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
@@ -3,65 +3,46 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, TypeVar, Union
3
3
  from uuid import UUID, uuid4
4
4
 
5
5
  import jsonschema
6
-
7
- from prefect._internal.compatibility.deprecated import DeprecatedInfraOverridesField
8
- from prefect._internal.pydantic import HAS_PYDANTIC_V2
9
-
10
- if HAS_PYDANTIC_V2:
11
- from pydantic.v1 import Field, root_validator, validator
12
- else:
13
- from pydantic import Field, root_validator, validator
6
+ from pydantic import Field, field_validator, model_validator
7
+ from pydantic_extra_types.pendulum_dt import DateTime
14
8
 
15
9
  import prefect.client.schemas.objects as objects
16
10
  from prefect._internal.schemas.bases import ActionBaseModel
17
- from prefect._internal.schemas.fields import DateTimeTZ
18
- from prefect._internal.schemas.serializers import orjson_dumps_extra_compatible
19
11
  from prefect._internal.schemas.validators import (
20
- raise_on_name_alphanumeric_dashes_only,
21
- raise_on_name_alphanumeric_underscores_only,
22
- raise_on_name_with_banned_characters,
12
+ convert_to_strings,
23
13
  remove_old_deployment_fields,
24
- return_none_schedule,
14
+ validate_artifact_key,
15
+ validate_block_document_name,
16
+ validate_block_type_slug,
25
17
  validate_message_template_variables,
26
18
  validate_name_present_on_nonanonymous_blocks,
27
19
  validate_schedule_max_scheduled_runs,
20
+ validate_variable_name,
21
+ )
22
+ from prefect.client.schemas.objects import (
23
+ StateDetails,
24
+ StateType,
28
25
  )
29
- from prefect.client.schemas.objects import StateDetails, StateType
30
26
  from prefect.client.schemas.schedules import SCHEDULE_TYPES
31
27
  from prefect.settings import PREFECT_DEPLOYMENT_SCHEDULE_MAX_SCHEDULED_RUNS
32
- from prefect.types import NonNegativeFloat, NonNegativeInteger, PositiveInteger
28
+ from prefect.types import (
29
+ MAX_VARIABLE_NAME_LENGTH,
30
+ Name,
31
+ NonEmptyishName,
32
+ NonNegativeFloat,
33
+ NonNegativeInteger,
34
+ PositiveInteger,
35
+ StrictVariableValue,
36
+ )
33
37
  from prefect.utilities.collections import listrepr
34
38
  from prefect.utilities.pydantic import get_class_fields_only
35
39
 
36
40
  if TYPE_CHECKING:
37
- from prefect.deprecated.data_documents import DataDocument
38
41
  from prefect.results import BaseResult
39
42
 
40
43
  R = TypeVar("R")
41
44
 
42
45
 
43
- def validate_block_type_slug(value):
44
- raise_on_name_alphanumeric_dashes_only(value, field_name="Block type slug")
45
- return value
46
-
47
-
48
- def validate_block_document_name(value):
49
- if value is not None:
50
- raise_on_name_alphanumeric_dashes_only(value, field_name="Block document name")
51
- return value
52
-
53
-
54
- def validate_artifact_key(value):
55
- raise_on_name_alphanumeric_dashes_only(value, field_name="Artifact key")
56
- return value
57
-
58
-
59
- def validate_variable_name(value):
60
- if value is not None:
61
- raise_on_name_alphanumeric_underscores_only(value, field_name="Variable name")
62
- return value
63
-
64
-
65
46
  class StateCreate(ActionBaseModel):
66
47
  """Data used by the Prefect REST API to create a new state."""
67
48
 
@@ -69,7 +50,7 @@ class StateCreate(ActionBaseModel):
69
50
  name: Optional[str] = Field(default=None)
70
51
  message: Optional[str] = Field(default=None, examples=["Run started"])
71
52
  state_details: StateDetails = Field(default_factory=StateDetails)
72
- data: Union["BaseResult[R]", "DataDocument[R]", Any] = Field(
53
+ data: Union["BaseResult[R]", Any] = Field(
73
54
  default=None,
74
55
  )
75
56
 
@@ -117,7 +98,8 @@ class DeploymentScheduleCreate(ActionBaseModel):
117
98
  description="Whether or not a worker should catch up on Late runs for the schedule.",
118
99
  )
119
100
 
120
- @validator("max_scheduled_runs")
101
+ @field_validator("max_scheduled_runs")
102
+ @classmethod
121
103
  def validate_max_scheduled_runs(cls, v):
122
104
  return validate_schedule_max_scheduled_runs(
123
105
  v, PREFECT_DEPLOYMENT_SCHEDULE_MAX_SCHEDULED_RUNS.value()
@@ -147,35 +129,45 @@ class DeploymentScheduleUpdate(ActionBaseModel):
147
129
  description="Whether or not a worker should catch up on Late runs for the schedule.",
148
130
  )
149
131
 
150
- @validator("max_scheduled_runs")
132
+ @field_validator("max_scheduled_runs")
133
+ @classmethod
151
134
  def validate_max_scheduled_runs(cls, v):
152
135
  return validate_schedule_max_scheduled_runs(
153
136
  v, PREFECT_DEPLOYMENT_SCHEDULE_MAX_SCHEDULED_RUNS.value()
154
137
  )
155
138
 
156
139
 
157
- class DeploymentCreate(DeprecatedInfraOverridesField, ActionBaseModel):
140
+ class DeploymentCreate(ActionBaseModel):
158
141
  """Data used by the Prefect REST API to create a deployment."""
159
142
 
160
- @root_validator(pre=True)
143
+ @model_validator(mode="before")
144
+ @classmethod
161
145
  def remove_old_fields(cls, values):
162
146
  return remove_old_deployment_fields(values)
163
147
 
148
+ @field_validator("description", "tags", mode="before")
149
+ @classmethod
150
+ def convert_to_strings(cls, values):
151
+ return convert_to_strings(values)
152
+
164
153
  name: str = Field(..., description="The name of the deployment.")
165
154
  flow_id: UUID = Field(..., description="The ID of the flow to deploy.")
166
- is_schedule_active: Optional[bool] = Field(None)
167
155
  paused: Optional[bool] = Field(None)
168
156
  schedules: List[DeploymentScheduleCreate] = Field(
169
157
  default_factory=list,
170
158
  description="A list of schedules for the deployment.",
171
159
  )
160
+ concurrency_limit: Optional[int] = Field(
161
+ default=None,
162
+ description="The concurrency limit for the deployment.",
163
+ )
172
164
  enforce_parameter_schema: Optional[bool] = Field(
173
165
  default=None,
174
166
  description=(
175
167
  "Whether or not the deployment should enforce the parameter schema."
176
168
  ),
177
169
  )
178
- parameter_openapi_schema: Optional[Dict[str, Any]] = Field(None)
170
+ parameter_openapi_schema: Optional[Dict[str, Any]] = Field(default_factory=dict)
179
171
  parameters: Dict[str, Any] = Field(
180
172
  default_factory=dict,
181
173
  description="Parameters for flow runs scheduled by the deployment.",
@@ -183,7 +175,6 @@ class DeploymentCreate(DeprecatedInfraOverridesField, ActionBaseModel):
183
175
  tags: List[str] = Field(default_factory=list)
184
176
  pull_steps: Optional[List[dict]] = Field(None)
185
177
 
186
- manifest_path: Optional[str] = Field(None)
187
178
  work_queue_name: Optional[str] = Field(None)
188
179
  work_pool_name: Optional[str] = Field(
189
180
  default=None,
@@ -192,12 +183,11 @@ class DeploymentCreate(DeprecatedInfraOverridesField, ActionBaseModel):
192
183
  )
193
184
  storage_document_id: Optional[UUID] = Field(None)
194
185
  infrastructure_document_id: Optional[UUID] = Field(None)
195
- schedule: Optional[SCHEDULE_TYPES] = Field(None)
196
186
  description: Optional[str] = Field(None)
197
187
  path: Optional[str] = Field(None)
198
188
  version: Optional[str] = Field(None)
199
189
  entrypoint: Optional[str] = Field(None)
200
- job_variables: Optional[Dict[str, Any]] = Field(
190
+ job_variables: Dict[str, Any] = Field(
201
191
  default_factory=dict,
202
192
  description="Overrides to apply to flow run infrastructure at runtime.",
203
193
  )
@@ -222,25 +212,31 @@ class DeploymentCreate(DeprecatedInfraOverridesField, ActionBaseModel):
222
212
  jsonschema.validate(self.job_variables, variables_schema)
223
213
 
224
214
 
225
- class DeploymentUpdate(DeprecatedInfraOverridesField, ActionBaseModel):
215
+ class DeploymentUpdate(ActionBaseModel):
226
216
  """Data used by the Prefect REST API to update a deployment."""
227
217
 
228
- @root_validator(pre=True)
218
+ @model_validator(mode="before")
219
+ @classmethod
229
220
  def remove_old_fields(cls, values):
230
221
  return remove_old_deployment_fields(values)
231
222
 
232
- @validator("schedule")
233
- def validate_none_schedule(cls, v):
234
- return return_none_schedule(v)
235
-
236
223
  version: Optional[str] = Field(None)
237
- schedule: Optional[SCHEDULE_TYPES] = Field(None)
238
224
  description: Optional[str] = Field(None)
239
- is_schedule_active: bool = Field(None)
240
225
  parameters: Optional[Dict[str, Any]] = Field(
241
226
  default=None,
242
227
  description="Parameters for flow runs scheduled by the deployment.",
243
228
  )
229
+ paused: Optional[bool] = Field(
230
+ default=None, description="Whether or not the deployment is paused."
231
+ )
232
+ schedules: Optional[List[DeploymentScheduleCreate]] = Field(
233
+ default=None,
234
+ description="A list of schedules for the deployment.",
235
+ )
236
+ concurrency_limit: Optional[int] = Field(
237
+ default=None,
238
+ description="The concurrency limit for the deployment.",
239
+ )
244
240
  tags: List[str] = Field(default_factory=list)
245
241
  work_queue_name: Optional[str] = Field(None)
246
242
  work_pool_name: Optional[str] = Field(
@@ -254,7 +250,6 @@ class DeploymentUpdate(DeprecatedInfraOverridesField, ActionBaseModel):
254
250
  description="Overrides to apply to flow run infrastructure at runtime.",
255
251
  )
256
252
  entrypoint: Optional[str] = Field(None)
257
- manifest_path: Optional[str] = Field(None)
258
253
  storage_document_id: Optional[UUID] = Field(None)
259
254
  infrastructure_document_id: Optional[UUID] = Field(None)
260
255
  enforce_parameter_schema: Optional[bool] = Field(
@@ -290,7 +285,7 @@ class FlowRunUpdate(ActionBaseModel):
290
285
 
291
286
  name: Optional[str] = Field(None)
292
287
  flow_version: Optional[str] = Field(None)
293
- parameters: Optional[Dict[str, Any]] = Field(None)
288
+ parameters: Optional[Dict[str, Any]] = Field(default_factory=dict)
294
289
  empirical_policy: objects.FlowRunPolicy = Field(
295
290
  default_factory=objects.FlowRunPolicy
296
291
  )
@@ -302,6 +297,7 @@ class FlowRunUpdate(ActionBaseModel):
302
297
  class TaskRunCreate(ActionBaseModel):
303
298
  """Data used by the Prefect REST API to create a task run"""
304
299
 
300
+ id: Optional[UUID] = Field(None, description="The ID to assign to the task run")
305
301
  # TaskRunCreate states must be provided as StateCreate objects
306
302
  state: Optional[StateCreate] = Field(
307
303
  default=None, description="The state of the task run to create"
@@ -323,7 +319,7 @@ class TaskRunCreate(ActionBaseModel):
323
319
  ),
324
320
  )
325
321
  cache_key: Optional[str] = Field(None)
326
- cache_expiration: Optional[objects.DateTimeTZ] = Field(None)
322
+ cache_expiration: Optional[objects.DateTime] = Field(None)
327
323
  task_version: Optional[str] = Field(None)
328
324
  empirical_policy: objects.TaskRunPolicy = Field(
329
325
  default_factory=objects.TaskRunPolicy,
@@ -373,9 +369,6 @@ class FlowRunCreate(ActionBaseModel):
373
369
  tags: List[str] = Field(default_factory=list)
374
370
  idempotency_key: Optional[str] = Field(None)
375
371
 
376
- class Config(ActionBaseModel.Config):
377
- json_dumps = orjson_dumps_extra_compatible
378
-
379
372
 
380
373
  class DeploymentFlowRunCreate(ActionBaseModel):
381
374
  """Data used by the Prefect REST API to create a flow run from a deployment."""
@@ -389,6 +382,10 @@ class DeploymentFlowRunCreate(ActionBaseModel):
389
382
  parameters: Dict[str, Any] = Field(
390
383
  default_factory=dict, description="The parameters for the flow run."
391
384
  )
385
+ enforce_parameter_schema: Optional[bool] = Field(
386
+ default=None,
387
+ description="Whether or not to enforce the parameter schema on this run.",
388
+ )
392
389
  context: Dict[str, Any] = Field(
393
390
  default_factory=dict, description="The context for the flow run."
394
391
  )
@@ -421,6 +418,37 @@ class ConcurrencyLimitCreate(ActionBaseModel):
421
418
  concurrency_limit: int = Field(default=..., description="The concurrency limit.")
422
419
 
423
420
 
421
+ class ConcurrencyLimitV2Create(ActionBaseModel):
422
+ """Data used by the Prefect REST API to create a v2 concurrency limit."""
423
+
424
+ active: bool = Field(
425
+ default=True, description="Whether the concurrency limit is active."
426
+ )
427
+ name: Name = Field(default=..., description="The name of the concurrency limit.")
428
+ limit: NonNegativeInteger = Field(default=..., description="The concurrency limit.")
429
+ active_slots: NonNegativeInteger = Field(
430
+ default=0, description="The number of active slots."
431
+ )
432
+ denied_slots: NonNegativeInteger = Field(
433
+ default=0, description="The number of denied slots."
434
+ )
435
+ slot_decay_per_second: NonNegativeFloat = Field(
436
+ default=0,
437
+ description="The decay rate for active slots when used as a rate limit.",
438
+ )
439
+
440
+
441
+ class ConcurrencyLimitV2Update(ActionBaseModel):
442
+ """Data used by the Prefect REST API to update a v2 concurrency limit."""
443
+
444
+ active: Optional[bool] = Field(None)
445
+ name: Optional[Name] = Field(None)
446
+ limit: Optional[NonNegativeInteger] = Field(None)
447
+ active_slots: Optional[NonNegativeInteger] = Field(None)
448
+ denied_slots: Optional[NonNegativeInteger] = Field(None)
449
+ slot_decay_per_second: Optional[NonNegativeFloat] = Field(None)
450
+
451
+
424
452
  class BlockTypeCreate(ActionBaseModel):
425
453
  """Data used by the Prefect REST API to create a block type."""
426
454
 
@@ -442,9 +470,7 @@ class BlockTypeCreate(ActionBaseModel):
442
470
  )
443
471
 
444
472
  # validators
445
- _validate_slug_format = validator("slug", allow_reuse=True)(
446
- validate_block_type_slug
447
- )
473
+ _validate_slug_format = field_validator("slug")(validate_block_type_slug)
448
474
 
449
475
 
450
476
  class BlockTypeUpdate(ActionBaseModel):
@@ -480,7 +506,7 @@ class BlockSchemaCreate(ActionBaseModel):
480
506
  class BlockDocumentCreate(ActionBaseModel):
481
507
  """Data used by the Prefect REST API to create a block document."""
482
508
 
483
- name: Optional[str] = Field(
509
+ name: Optional[Name] = Field(
484
510
  default=None, description="The name of the block document"
485
511
  )
486
512
  data: Dict[str, Any] = Field(
@@ -500,11 +526,9 @@ class BlockDocumentCreate(ActionBaseModel):
500
526
  ),
501
527
  )
502
528
 
503
- _validate_name_format = validator("name", allow_reuse=True)(
504
- validate_block_document_name
505
- )
529
+ _validate_name_format = field_validator("name")(validate_block_document_name)
506
530
 
507
- @root_validator
531
+ @model_validator(mode="before")
508
532
  def validate_name_is_present_if_not_anonymous(cls, values):
509
533
  return validate_name_present_on_nonanonymous_blocks(values)
510
534
 
@@ -545,7 +569,7 @@ class LogCreate(ActionBaseModel):
545
569
  name: str = Field(default=..., description="The logger name.")
546
570
  level: int = Field(default=..., description="The log level.")
547
571
  message: str = Field(default=..., description="The log message.")
548
- timestamp: DateTimeTZ = Field(default=..., description="The log timestamp.")
572
+ timestamp: DateTime = Field(default=..., description="The log timestamp.")
549
573
  flow_run_id: Optional[UUID] = Field(None)
550
574
  task_run_id: Optional[UUID] = Field(None)
551
575
 
@@ -553,7 +577,7 @@ class LogCreate(ActionBaseModel):
553
577
  class WorkPoolCreate(ActionBaseModel):
554
578
  """Data used by the Prefect REST API to create a work pool."""
555
579
 
556
- name: str = Field(
580
+ name: NonEmptyishName = Field(
557
581
  description="The name of the work pool.",
558
582
  )
559
583
  description: Optional[str] = Field(None)
@@ -591,11 +615,11 @@ class WorkQueueCreate(ActionBaseModel):
591
615
  default=False,
592
616
  description="Whether the work queue is paused.",
593
617
  )
594
- concurrency_limit: Optional[int] = Field(
618
+ concurrency_limit: Optional[NonNegativeInteger] = Field(
595
619
  default=None,
596
620
  description="A concurrency limit for the work queue.",
597
621
  )
598
- priority: Optional[int] = Field(
622
+ priority: Optional[PositiveInteger] = Field(
599
623
  default=None,
600
624
  description=(
601
625
  "The queue's priority. Lower values are higher priority (1 is the highest)."
@@ -619,9 +643,11 @@ class WorkQueueUpdate(ActionBaseModel):
619
643
  is_paused: bool = Field(
620
644
  default=False, description="Whether or not the work queue is paused."
621
645
  )
622
- concurrency_limit: Optional[int] = Field(None)
623
- priority: Optional[int] = Field(None)
624
- last_polled: Optional[DateTimeTZ] = Field(None)
646
+ concurrency_limit: Optional[NonNegativeInteger] = Field(None)
647
+ priority: Optional[PositiveInteger] = Field(
648
+ None, description="The queue's priority."
649
+ )
650
+ last_polled: Optional[DateTime] = Field(None)
625
651
 
626
652
  # DEPRECATED
627
653
 
@@ -661,7 +687,8 @@ class FlowRunNotificationPolicyCreate(ActionBaseModel):
661
687
  ],
662
688
  )
663
689
 
664
- @validator("message_template")
690
+ @field_validator("message_template")
691
+ @classmethod
665
692
  def validate_message_template_variables(cls, v):
666
693
  return validate_message_template_variables(v)
667
694
 
@@ -687,9 +714,7 @@ class ArtifactCreate(ActionBaseModel):
687
714
  flow_run_id: Optional[UUID] = Field(None)
688
715
  task_run_id: Optional[UUID] = Field(None)
689
716
 
690
- _validate_artifact_format = validator("key", allow_reuse=True)(
691
- validate_artifact_key
692
- )
717
+ _validate_artifact_format = field_validator("key")(validate_artifact_key)
693
718
 
694
719
 
695
720
  class ArtifactUpdate(ActionBaseModel):
@@ -707,18 +732,17 @@ class VariableCreate(ActionBaseModel):
707
732
  default=...,
708
733
  description="The name of the variable",
709
734
  examples=["my_variable"],
710
- max_length=objects.MAX_VARIABLE_NAME_LENGTH,
735
+ max_length=MAX_VARIABLE_NAME_LENGTH,
711
736
  )
712
- value: str = Field(
737
+ value: StrictVariableValue = Field(
713
738
  default=...,
714
739
  description="The value of the variable",
715
740
  examples=["my-value"],
716
- max_length=objects.MAX_VARIABLE_VALUE_LENGTH,
717
741
  )
718
742
  tags: Optional[List[str]] = Field(default=None)
719
743
 
720
744
  # validators
721
- _validate_name_format = validator("name", allow_reuse=True)(validate_variable_name)
745
+ _validate_name_format = field_validator("name")(validate_variable_name)
722
746
 
723
747
 
724
748
  class VariableUpdate(ActionBaseModel):
@@ -728,24 +752,23 @@ class VariableUpdate(ActionBaseModel):
728
752
  default=None,
729
753
  description="The name of the variable",
730
754
  examples=["my_variable"],
731
- max_length=objects.MAX_VARIABLE_NAME_LENGTH,
755
+ max_length=MAX_VARIABLE_NAME_LENGTH,
732
756
  )
733
- value: Optional[str] = Field(
757
+ value: StrictVariableValue = Field(
734
758
  default=None,
735
759
  description="The value of the variable",
736
760
  examples=["my-value"],
737
- max_length=objects.MAX_VARIABLE_NAME_LENGTH,
738
761
  )
739
762
  tags: Optional[List[str]] = Field(default=None)
740
763
 
741
764
  # validators
742
- _validate_name_format = validator("name", allow_reuse=True)(validate_variable_name)
765
+ _validate_name_format = field_validator("name")(validate_variable_name)
743
766
 
744
767
 
745
768
  class GlobalConcurrencyLimitCreate(ActionBaseModel):
746
769
  """Data used by the Prefect REST API to create a global concurrency limit."""
747
770
 
748
- name: str = Field(description="The name of the global concurrency limit.")
771
+ name: Name = Field(description="The name of the global concurrency limit.")
749
772
  limit: NonNegativeInteger = Field(
750
773
  description=(
751
774
  "The maximum number of slots that can be occupied on this concurrency"
@@ -768,20 +791,12 @@ class GlobalConcurrencyLimitCreate(ActionBaseModel):
768
791
  ),
769
792
  )
770
793
 
771
- @validator("name", check_fields=False)
772
- def validate_name_characters(cls, v):
773
- return raise_on_name_with_banned_characters(v)
774
-
775
794
 
776
795
  class GlobalConcurrencyLimitUpdate(ActionBaseModel):
777
796
  """Data used by the Prefect REST API to update a global concurrency limit."""
778
797
 
779
- name: Optional[str] = Field(None)
798
+ name: Optional[Name] = Field(None)
780
799
  limit: Optional[NonNegativeInteger] = Field(None)
781
800
  active: Optional[bool] = Field(None)
782
801
  active_slots: Optional[NonNegativeInteger] = Field(None)
783
802
  slot_decay_per_second: Optional[NonNegativeFloat] = Field(None)
784
-
785
- @validator("name", check_fields=False)
786
- def validate_name_characters(cls, v):
787
- return raise_on_name_with_banned_characters(v)