polyaxon 2.4.0rc1__py3-none-any.whl → 2.6.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 (218) hide show
  1. polyaxon/_auxiliaries/default_scheduling.py +17 -7
  2. polyaxon/_auxiliaries/init.py +14 -6
  3. polyaxon/_auxiliaries/sidecar.py +10 -8
  4. polyaxon/_cli/dashboard.py +2 -5
  5. polyaxon/_cli/run.py +14 -0
  6. polyaxon/_cli/version.py +4 -1
  7. polyaxon/_compiler/contexts/contexts.py +4 -0
  8. polyaxon/_compiler/resolver/agent.py +10 -9
  9. polyaxon/_compiler/resolver/runtime.py +4 -0
  10. polyaxon/_constants/metadata.py +1 -0
  11. polyaxon/_contexts/keys.py +1 -0
  12. polyaxon/_deploy/schemas/auth.py +3 -3
  13. polyaxon/_deploy/schemas/celery.py +10 -8
  14. polyaxon/_deploy/schemas/deployment.py +148 -116
  15. polyaxon/_deploy/schemas/email.py +8 -8
  16. polyaxon/_deploy/schemas/ingress.py +7 -7
  17. polyaxon/_deploy/schemas/intervals.py +3 -1
  18. polyaxon/_deploy/schemas/operators.py +8 -8
  19. polyaxon/_deploy/schemas/proxy.py +9 -9
  20. polyaxon/_deploy/schemas/rbac.py +1 -1
  21. polyaxon/_deploy/schemas/root_user.py +5 -5
  22. polyaxon/_deploy/schemas/security_context.py +25 -15
  23. polyaxon/_deploy/schemas/service.py +73 -69
  24. polyaxon/_deploy/schemas/ssl.py +3 -3
  25. polyaxon/_deploy/schemas/ui.py +10 -6
  26. polyaxon/_docker/builder/builder.py +4 -1
  27. polyaxon/_docker/converter/base/containers.py +4 -7
  28. polyaxon/_docker/converter/base/env_vars.py +5 -5
  29. polyaxon/_docker/converter/base/mounts.py +2 -2
  30. polyaxon/_docker/docker_types.py +57 -30
  31. polyaxon/_env_vars/keys.py +2 -0
  32. polyaxon/_flow/__init__.py +3 -2
  33. polyaxon/_flow/builds/__init__.py +8 -8
  34. polyaxon/_flow/cache/__init__.py +4 -4
  35. polyaxon/_flow/component/base.py +25 -18
  36. polyaxon/_flow/component/component.py +4 -3
  37. polyaxon/_flow/early_stopping/__init__.py +1 -1
  38. polyaxon/_flow/early_stopping/policies.py +12 -10
  39. polyaxon/_flow/environment/__init__.py +42 -24
  40. polyaxon/_flow/events/__init__.py +1 -1
  41. polyaxon/_flow/hooks/__init__.py +11 -11
  42. polyaxon/_flow/init/__init__.py +41 -25
  43. polyaxon/_flow/io/io.py +57 -47
  44. polyaxon/_flow/joins/__init__.py +5 -5
  45. polyaxon/_flow/matrix/bayes.py +23 -17
  46. polyaxon/_flow/matrix/grid_search.py +16 -7
  47. polyaxon/_flow/matrix/hyperband.py +10 -10
  48. polyaxon/_flow/matrix/hyperopt.py +14 -9
  49. polyaxon/_flow/matrix/iterative.py +14 -8
  50. polyaxon/_flow/matrix/mapping.py +4 -4
  51. polyaxon/_flow/matrix/params.py +138 -77
  52. polyaxon/_flow/matrix/random_search.py +10 -5
  53. polyaxon/_flow/matrix/tuner.py +4 -4
  54. polyaxon/_flow/mounts/artifacts_mounts.py +1 -1
  55. polyaxon/_flow/notifications/__init__.py +1 -1
  56. polyaxon/_flow/operations/base.py +10 -8
  57. polyaxon/_flow/operations/compiled_operation.py +5 -4
  58. polyaxon/_flow/operations/operation.py +30 -22
  59. polyaxon/_flow/optimization/__init__.py +2 -2
  60. polyaxon/_flow/params/params.py +10 -9
  61. polyaxon/_flow/plugins/__init__.py +19 -13
  62. polyaxon/_flow/run/dag.py +12 -9
  63. polyaxon/_flow/run/dask/dask.py +4 -4
  64. polyaxon/_flow/run/dask/replica.py +17 -11
  65. polyaxon/_flow/run/job.py +17 -11
  66. polyaxon/_flow/run/kubeflow/mpi_job.py +10 -5
  67. polyaxon/_flow/run/kubeflow/mx_job.py +25 -9
  68. polyaxon/_flow/run/kubeflow/paddle_job.py +16 -9
  69. polyaxon/_flow/run/kubeflow/pytorch_job.py +24 -17
  70. polyaxon/_flow/run/kubeflow/replica.py +17 -11
  71. polyaxon/_flow/run/kubeflow/scheduling_policy.py +7 -5
  72. polyaxon/_flow/run/kubeflow/tf_job.py +15 -8
  73. polyaxon/_flow/run/kubeflow/xgboost_job.py +9 -4
  74. polyaxon/_flow/run/ray/ray.py +9 -6
  75. polyaxon/_flow/run/ray/replica.py +25 -16
  76. polyaxon/_flow/run/resources.py +14 -13
  77. polyaxon/_flow/run/service.py +4 -4
  78. polyaxon/_flow/schedules/cron.py +4 -4
  79. polyaxon/_flow/schedules/interval.py +4 -4
  80. polyaxon/_flow/templates/__init__.py +3 -3
  81. polyaxon/_flow/termination/__init__.py +3 -3
  82. polyaxon/_fs/async_manager.py +1 -1
  83. polyaxon/_fs/watcher.py +26 -27
  84. polyaxon/_k8s/k8s_validation.py +1 -1
  85. polyaxon/_k8s/logging/async_monitor.py +18 -3
  86. polyaxon/_local_process/converter/base/containers.py +4 -7
  87. polyaxon/_local_process/converter/base/env_vars.py +5 -5
  88. polyaxon/_local_process/process_types.py +15 -12
  89. polyaxon/_polyaxonfile/specs/compiled_operation.py +1 -1
  90. polyaxon/_polyaxonfile/specs/libs/parser.py +1 -1
  91. polyaxon/_polyaxonfile/specs/libs/validator.py +1 -1
  92. polyaxon/_polyaxonfile/specs/operation.py +1 -1
  93. polyaxon/_polyaxonfile/specs/sections.py +8 -0
  94. polyaxon/_runner/agent/async_agent.py +9 -6
  95. polyaxon/_runner/agent/base_agent.py +8 -5
  96. polyaxon/_runner/agent/sync_agent.py +8 -5
  97. polyaxon/_runner/converter/converter.py +12 -4
  98. polyaxon/_schemas/agent.py +69 -37
  99. polyaxon/_schemas/authentication.py +4 -4
  100. polyaxon/_schemas/base.py +26 -2
  101. polyaxon/_schemas/checks.py +3 -3
  102. polyaxon/_schemas/cli.py +4 -6
  103. polyaxon/_schemas/client.py +20 -18
  104. polyaxon/_schemas/compatibility.py +4 -4
  105. polyaxon/_schemas/container_resources.py +1 -1
  106. polyaxon/_schemas/home.py +3 -3
  107. polyaxon/_schemas/installation.py +13 -9
  108. polyaxon/_schemas/lifecycle.py +23 -23
  109. polyaxon/_schemas/log_handler.py +2 -2
  110. polyaxon/_schemas/services.py +26 -14
  111. polyaxon/_schemas/types/artifacts.py +3 -3
  112. polyaxon/_schemas/types/dockerfile.py +14 -12
  113. polyaxon/_schemas/types/event.py +2 -2
  114. polyaxon/_schemas/types/file.py +3 -3
  115. polyaxon/_schemas/types/git.py +12 -4
  116. polyaxon/_schemas/types/tensorboard.py +14 -8
  117. polyaxon/_schemas/user.py +3 -3
  118. polyaxon/_schemas/version.py +2 -2
  119. polyaxon/_sdk/api/agents_v1_api.py +45 -45
  120. polyaxon/_sdk/api/artifacts_stores_v1_api.py +3 -3
  121. polyaxon/_sdk/api/auth_v1_api.py +13 -13
  122. polyaxon/_sdk/api/connections_v1_api.py +15 -15
  123. polyaxon/_sdk/api/dashboards_v1_api.py +15 -15
  124. polyaxon/_sdk/api/organizations_v1_api.py +77 -77
  125. polyaxon/_sdk/api/presets_v1_api.py +15 -15
  126. polyaxon/_sdk/api/project_dashboards_v1_api.py +17 -17
  127. polyaxon/_sdk/api/project_searches_v1_api.py +17 -17
  128. polyaxon/_sdk/api/projects_v1_api.py +65 -65
  129. polyaxon/_sdk/api/queues_v1_api.py +19 -19
  130. polyaxon/_sdk/api/runs_v1_api.py +127 -127
  131. polyaxon/_sdk/api/searches_v1_api.py +15 -15
  132. polyaxon/_sdk/api/service_accounts_v1_api.py +27 -27
  133. polyaxon/_sdk/api/tags_v1_api.py +17 -17
  134. polyaxon/_sdk/api/teams_v1_api.py +51 -51
  135. polyaxon/_sdk/api/users_v1_api.py +25 -25
  136. polyaxon/_sdk/api/versions_v1_api.py +7 -7
  137. polyaxon/_sdk/schemas/v1_activity.py +8 -8
  138. polyaxon/_sdk/schemas/v1_agent.py +17 -16
  139. polyaxon/_sdk/schemas/v1_agent_state_response.py +4 -4
  140. polyaxon/_sdk/schemas/v1_agent_state_response_agent_state.py +10 -10
  141. polyaxon/_sdk/schemas/v1_agent_status_body_request.py +3 -3
  142. polyaxon/_sdk/schemas/v1_analytics_spec.py +4 -4
  143. polyaxon/_sdk/schemas/v1_artifact_tree.py +3 -3
  144. polyaxon/_sdk/schemas/v1_auth.py +1 -1
  145. polyaxon/_sdk/schemas/v1_cloning.py +3 -3
  146. polyaxon/_sdk/schemas/v1_connection_response.py +9 -9
  147. polyaxon/_sdk/schemas/v1_dashboard.py +9 -9
  148. polyaxon/_sdk/schemas/v1_dashboard_spec.py +5 -5
  149. polyaxon/_sdk/schemas/v1_entities_tags.py +2 -2
  150. polyaxon/_sdk/schemas/v1_entities_transfer.py +2 -2
  151. polyaxon/_sdk/schemas/v1_entity_notification_body.py +7 -7
  152. polyaxon/_sdk/schemas/v1_entity_stage_body_request.py +5 -5
  153. polyaxon/_sdk/schemas/v1_entity_status_body_request.py +5 -5
  154. polyaxon/_sdk/schemas/v1_events_response.py +2 -2
  155. polyaxon/_sdk/schemas/v1_list_activities_response.py +4 -4
  156. polyaxon/_sdk/schemas/v1_list_agents_response.py +4 -4
  157. polyaxon/_sdk/schemas/v1_list_bookmarks_response.py +4 -4
  158. polyaxon/_sdk/schemas/v1_list_connections_response.py +4 -4
  159. polyaxon/_sdk/schemas/v1_list_dashboards_response.py +4 -4
  160. polyaxon/_sdk/schemas/v1_list_organization_members_response.py +4 -4
  161. polyaxon/_sdk/schemas/v1_list_organizations_response.py +4 -4
  162. polyaxon/_sdk/schemas/v1_list_presets_response.py +4 -4
  163. polyaxon/_sdk/schemas/v1_list_project_versions_response.py +4 -4
  164. polyaxon/_sdk/schemas/v1_list_projects_response.py +4 -4
  165. polyaxon/_sdk/schemas/v1_list_queues_response.py +4 -4
  166. polyaxon/_sdk/schemas/v1_list_run_artifacts_response.py +4 -4
  167. polyaxon/_sdk/schemas/v1_list_run_connections_response.py +4 -4
  168. polyaxon/_sdk/schemas/v1_list_run_edges_response.py +4 -4
  169. polyaxon/_sdk/schemas/v1_list_runs_response.py +4 -4
  170. polyaxon/_sdk/schemas/v1_list_searches_response.py +4 -4
  171. polyaxon/_sdk/schemas/v1_list_service_accounts_response.py +4 -4
  172. polyaxon/_sdk/schemas/v1_list_tags_response.py +4 -4
  173. polyaxon/_sdk/schemas/v1_list_team_members_response.py +4 -4
  174. polyaxon/_sdk/schemas/v1_list_teams_response.py +4 -4
  175. polyaxon/_sdk/schemas/v1_list_token_response.py +4 -4
  176. polyaxon/_sdk/schemas/v1_operation_body.py +8 -8
  177. polyaxon/_sdk/schemas/v1_organization.py +16 -16
  178. polyaxon/_sdk/schemas/v1_organization_member.py +6 -6
  179. polyaxon/_sdk/schemas/v1_password_change.py +3 -3
  180. polyaxon/_sdk/schemas/v1_pipeline.py +3 -3
  181. polyaxon/_sdk/schemas/v1_preset.py +11 -12
  182. polyaxon/_sdk/schemas/v1_project.py +17 -17
  183. polyaxon/_sdk/schemas/v1_project_settings.py +11 -11
  184. polyaxon/_sdk/schemas/v1_project_version.py +20 -20
  185. polyaxon/_sdk/schemas/v1_queue.py +12 -12
  186. polyaxon/_sdk/schemas/v1_run.py +38 -38
  187. polyaxon/_sdk/schemas/v1_run_connection.py +3 -3
  188. polyaxon/_sdk/schemas/v1_run_edge.py +5 -5
  189. polyaxon/_sdk/schemas/v1_run_edge_lineage.py +3 -3
  190. polyaxon/_sdk/schemas/v1_run_edges_graph.py +1 -1
  191. polyaxon/_sdk/schemas/v1_run_reference_catalog.py +4 -4
  192. polyaxon/_sdk/schemas/v1_run_settings.py +9 -9
  193. polyaxon/_sdk/schemas/v1_search.py +10 -10
  194. polyaxon/_sdk/schemas/v1_search_spec.py +14 -14
  195. polyaxon/_sdk/schemas/v1_section_spec.py +12 -12
  196. polyaxon/_sdk/schemas/v1_service_account.py +9 -9
  197. polyaxon/_sdk/schemas/v1_settings_catalog.py +4 -4
  198. polyaxon/_sdk/schemas/v1_tag.py +6 -6
  199. polyaxon/_sdk/schemas/v1_team.py +11 -11
  200. polyaxon/_sdk/schemas/v1_team_member.py +6 -6
  201. polyaxon/_sdk/schemas/v1_team_settings.py +2 -2
  202. polyaxon/_sdk/schemas/v1_token.py +10 -10
  203. polyaxon/_sdk/schemas/v1_trial_start.py +6 -6
  204. polyaxon/_sdk/schemas/v1_user.py +6 -6
  205. polyaxon/_sdk/schemas/v1_user_access.py +7 -7
  206. polyaxon/_sdk/schemas/v1_user_email.py +1 -1
  207. polyaxon/_sdk/schemas/v1_user_singup.py +5 -5
  208. polyaxon/_sdk/schemas/v1_uuids.py +1 -1
  209. polyaxon/_sidecar/container/__init__.py +13 -8
  210. polyaxon/_utils/cli_constants.py +2 -0
  211. polyaxon/_utils/test_utils.py +2 -1
  212. polyaxon/pkg.py +1 -1
  213. {polyaxon-2.4.0rc1.dist-info → polyaxon-2.6.0.dist-info}/METADATA +13 -13
  214. {polyaxon-2.4.0rc1.dist-info → polyaxon-2.6.0.dist-info}/RECORD +218 -218
  215. {polyaxon-2.4.0rc1.dist-info → polyaxon-2.6.0.dist-info}/WHEEL +1 -1
  216. {polyaxon-2.4.0rc1.dist-info → polyaxon-2.6.0.dist-info}/LICENSE +0 -0
  217. {polyaxon-2.4.0rc1.dist-info → polyaxon-2.6.0.dist-info}/entry_points.txt +0 -0
  218. {polyaxon-2.4.0rc1.dist-info → polyaxon-2.6.0.dist-info}/top_level.txt +0 -0
@@ -5,8 +5,10 @@ from clipped.compact.pydantic import (
5
5
  Field,
6
6
  PositiveInt,
7
7
  StrictInt,
8
- root_validator,
9
- validator,
8
+ field_validator,
9
+ model_validator,
10
+ validation_after,
11
+ validation_always,
10
12
  )
11
13
  from clipped.config.schema import skip_partial
12
14
  from clipped.types.ref_or_obj import RefField
@@ -60,19 +62,21 @@ class UtilityFunctionConfig(BaseSchemaModel): # TODO: Rename to V1UtilityFuncti
60
62
  acquisition_function: Optional[AcquisitionFunctions] = Field(
61
63
  default=AcquisitionFunctions.UCB, alias="acquisitionFunction"
62
64
  )
63
- gaussian_process: Optional[GaussianProcessConfig] = Field(alias="gaussianProcess")
64
- kappa: Optional[float]
65
- eps: Optional[float]
66
- num_warmup: Optional[int] = Field(alias="numWarmup")
67
- num_iterations: Optional[int] = Field(alias="numIterations")
65
+ gaussian_process: Optional[GaussianProcessConfig] = Field(
66
+ alias="gaussianProcess", default=None
67
+ )
68
+ kappa: Optional[float] = None
69
+ eps: Optional[float] = None
70
+ num_warmup: Optional[int] = Field(alias="numWarmup", default=None)
71
+ num_iterations: Optional[int] = Field(alias="numIterations", default=None)
68
72
 
69
- @root_validator
73
+ @model_validator(**validation_after)
70
74
  @skip_partial
71
75
  def validate_utility_function(cls, values):
72
76
  validate_utility_function(
73
- acquisition_function=values.get("acquisition_function"),
74
- kappa=values.get("kappa"),
75
- eps=values.get("eps"),
77
+ acquisition_function=cls.get_value_for_key("acquisition_function", values),
78
+ kappa=cls.get_value_for_key("kappa", values),
79
+ eps=cls.get_value_for_key("eps", values),
76
80
  )
77
81
  return values
78
82
 
@@ -393,16 +397,18 @@ class V1Bayes(BaseSearchConfig):
393
397
  _IDENTIFIER = V1MatrixKind.BAYES
394
398
 
395
399
  kind: Literal[_IDENTIFIER] = _IDENTIFIER
396
- utility_function: Optional[UtilityFunctionConfig] = Field(alias="utilityFunction")
400
+ utility_function: Optional[UtilityFunctionConfig] = Field(
401
+ alias="utilityFunction", default=None
402
+ )
397
403
  num_initial_runs: Union[PositiveInt, RefField] = Field(alias="numInitialRuns")
398
404
  max_iterations: Union[PositiveInt, RefField] = Field(alias="maxIterations")
399
405
  metric: V1OptimizationMetric
400
406
  params: Union[Dict[str, V1HpParam], RefField]
401
- seed: Optional[Union[StrictInt, RefField]]
402
- concurrency: Optional[Union[PositiveInt, RefField]]
403
- tuner: Optional[Union[V1Tuner, RefField]]
407
+ seed: Optional[Union[StrictInt, RefField]] = None
408
+ concurrency: Optional[Union[PositiveInt, RefField]] = None
409
+ tuner: Optional[Union[V1Tuner, RefField]] = None
404
410
  early_stopping: Optional[Union[List[V1EarlyStopping], RefField]] = Field(
405
- alias="earlyStopping"
411
+ alias="earlyStopping", default=None
406
412
  )
407
413
 
408
414
  def create_iteration(self, iteration: Optional[int] = None) -> int:
@@ -414,7 +420,7 @@ class V1Bayes(BaseSearchConfig):
414
420
  """Return a boolean to indicate if we need to reschedule another iteration."""
415
421
  return iteration < self.max_iterations
416
422
 
417
- @validator("params", always=True)
423
+ @field_validator("params", **validation_always)
418
424
  @skip_partial
419
425
  def validate_matrix(cls, params):
420
426
  return validate_matrix(params)
@@ -1,7 +1,13 @@
1
1
  from typing import Dict, List, Optional, Union
2
2
  from typing_extensions import Literal
3
3
 
4
- from clipped.compact.pydantic import Field, PositiveInt, validator
4
+ from clipped.compact.pydantic import (
5
+ Field,
6
+ PositiveInt,
7
+ field_validator,
8
+ validation_always,
9
+ validation_before,
10
+ )
5
11
  from clipped.config.schema import skip_partial
6
12
  from clipped.types.ref_or_obj import RefField
7
13
 
@@ -196,19 +202,22 @@ class V1GridSearch(BaseSearchConfig):
196
202
 
197
203
  kind: Literal[_IDENTIFIER] = _IDENTIFIER
198
204
  params: Union[Dict[str, V1HpParam], RefField]
199
- num_runs: Optional[Union[PositiveInt, RefField]] = Field(alias="numRuns")
200
- concurrency: Optional[Union[PositiveInt, RefField]]
205
+ num_runs: Optional[Union[PositiveInt, RefField]] = Field(
206
+ alias="numRuns", default=None
207
+ )
208
+ concurrency: Optional[Union[PositiveInt, RefField]] = None
201
209
  early_stopping: Optional[Union[List[V1EarlyStopping], RefField]] = Field(
202
- alias="earlyStopping"
210
+ alias="earlyStopping", default=None
203
211
  )
204
212
 
205
- @validator("num_runs", "concurrency", pre=True)
213
+ @field_validator("num_runs", "concurrency", **validation_before)
206
214
  def check_values(cls, v, field):
215
+ key = cls.get_field_name(field)
207
216
  if v and v < 1:
208
- raise ValueError(f"{field} must be greater than 1, received `{v}` instead.")
217
+ raise ValueError(f"{key} must be greater than 1, received `{v}` instead.")
209
218
  return v
210
219
 
211
- @validator("params", always=True)
220
+ @field_validator("params", **validation_always)
212
221
  @skip_partial
213
222
  def validate_matrix(cls, params):
214
223
  return validate_matrix(params)
@@ -313,17 +313,17 @@ class V1Hyperband(BaseSearchConfig):
313
313
  _IDENTIFIER = V1MatrixKind.HYPERBAND
314
314
 
315
315
  kind: Literal[_IDENTIFIER] = _IDENTIFIER
316
- params: Optional[Union[Dict[str, V1HpParam], RefField]]
317
- max_iterations: Optional[PositiveInt] = Field(alias="maxIterations")
318
- eta: Optional[Union[NonNegativeFloat, RefField]]
319
- resource: Optional[V1OptimizationResource]
320
- metric: Optional[V1OptimizationMetric]
321
- resume: Optional[BoolOrRef]
322
- seed: Optional[IntOrRef]
323
- concurrency: Optional[Union[PositiveInt, RefField]]
324
- tuner: Optional[V1Tuner]
316
+ params: Optional[Union[Dict[str, V1HpParam], RefField]] = None
317
+ max_iterations: Optional[PositiveInt] = Field(alias="maxIterations", default=None)
318
+ eta: Optional[Union[NonNegativeFloat, RefField]] = None
319
+ resource: Optional[V1OptimizationResource] = None
320
+ metric: Optional[V1OptimizationMetric] = None
321
+ resume: Optional[BoolOrRef] = None
322
+ seed: Optional[IntOrRef] = None
323
+ concurrency: Optional[Union[PositiveInt, RefField]] = None
324
+ tuner: Optional[V1Tuner] = None
325
325
  early_stopping: Optional[Union[List[V1EarlyStopping], RefField]] = Field(
326
- alias="earlyStopping"
326
+ alias="earlyStopping", default=None
327
327
  )
328
328
 
329
329
  _s_max: Optional[int] = PrivateAttr()
@@ -1,7 +1,12 @@
1
1
  from typing import Dict, List, Optional, Union
2
2
  from typing_extensions import Literal
3
3
 
4
- from clipped.compact.pydantic import Field, PositiveInt, validator
4
+ from clipped.compact.pydantic import (
5
+ Field,
6
+ PositiveInt,
7
+ field_validator,
8
+ validation_before,
9
+ )
5
10
  from clipped.types.ref_or_obj import IntOrRef, RefField
6
11
  from clipped.utils.enums import PEnum
7
12
 
@@ -212,19 +217,19 @@ class V1Hyperopt(BaseSearchConfig):
212
217
  _IDENTIFIER = V1MatrixKind.HYPEROPT
213
218
 
214
219
  kind: Literal[_IDENTIFIER] = _IDENTIFIER
215
- max_iterations: Optional[IntOrRef] = Field(alias="maxIterations")
220
+ max_iterations: Optional[IntOrRef] = Field(alias="maxIterations", default=None)
216
221
  metric: V1OptimizationMetric
217
- algorithm: Optional[V1HyperoptAlgorithms]
222
+ algorithm: Optional[V1HyperoptAlgorithms] = None
218
223
  params: Union[Dict[str, V1HpParam], RefField]
219
- num_runs: Union[PositiveInt, RefField] = Field(alias="numRuns")
220
- seed: Optional[IntOrRef]
221
- concurrency: Optional[Union[PositiveInt, RefField]]
222
- tuner: Optional[V1Tuner]
224
+ num_runs: Union[PositiveInt, RefField] = Field(alias="numRuns", default=None)
225
+ seed: Optional[IntOrRef] = None
226
+ concurrency: Optional[Union[PositiveInt, RefField]] = None
227
+ tuner: Optional[V1Tuner] = None
223
228
  early_stopping: Optional[Union[List[V1EarlyStopping], RefField]] = Field(
224
- alias="earlyStopping"
229
+ alias="earlyStopping", default=None
225
230
  )
226
231
 
227
- @validator("num_runs", "concurrency", pre=True)
232
+ @field_validator("num_runs", "concurrency", **validation_before)
228
233
  def check_values(cls, v, field):
229
234
  if v and v < 1:
230
235
  raise ValueError(f"{field} must be greater than 1, received `{v}` instead.")
@@ -1,7 +1,12 @@
1
1
  from typing import Dict, List, Optional, Union
2
2
  from typing_extensions import Literal
3
3
 
4
- from clipped.compact.pydantic import Field, PositiveInt, validator
4
+ from clipped.compact.pydantic import (
5
+ Field,
6
+ PositiveInt,
7
+ field_validator,
8
+ validation_before,
9
+ )
5
10
  from clipped.types.ref_or_obj import IntOrRef, RefField
6
11
 
7
12
  from polyaxon._flow.early_stopping import V1EarlyStopping
@@ -224,19 +229,20 @@ class V1Iterative(BaseSearchConfig):
224
229
  _IDENTIFIER = V1MatrixKind.ITERATIVE
225
230
 
226
231
  kind: Literal[_IDENTIFIER] = _IDENTIFIER
227
- params: Optional[Union[Dict[str, V1HpParam], RefField]]
232
+ params: Optional[Union[Dict[str, V1HpParam], RefField]] = None
228
233
  max_iterations: Union[PositiveInt, RefField] = Field(alias="maxIterations")
229
- seed: Optional[IntOrRef]
230
- concurrency: Optional[Union[PositiveInt, RefField]]
231
- tuner: Optional[V1Tuner]
234
+ seed: Optional[IntOrRef] = None
235
+ concurrency: Optional[Union[PositiveInt, RefField]] = None
236
+ tuner: Optional[V1Tuner] = None
232
237
  early_stopping: Optional[Union[List[V1EarlyStopping], RefField]] = Field(
233
- alias="earlyStopping"
238
+ alias="earlyStopping", default=None
234
239
  )
235
240
 
236
- @validator("max_iterations", "concurrency", pre=True)
241
+ @field_validator("max_iterations", "concurrency", **validation_before)
237
242
  def check_values(cls, v, field):
243
+ key = cls.get_field_name(field)
238
244
  if v and v < 1:
239
- raise ValueError(f"{field} must be greater than 1, received `{v}` instead.")
245
+ raise ValueError(f"{key} must be greater than 1, received `{v}` instead.")
240
246
  return v
241
247
 
242
248
  def create_iteration(self, iteration: Optional[int] = None) -> int:
@@ -1,7 +1,7 @@
1
1
  from typing import Dict, List, Optional, Union
2
2
  from typing_extensions import Literal
3
3
 
4
- from clipped.compact.pydantic import Field, PositiveInt, validator
4
+ from clipped.compact.pydantic import Field, PositiveInt, field_validator
5
5
  from clipped.types.ref_or_obj import RefField
6
6
 
7
7
  from polyaxon._contexts.params import is_template_ref
@@ -107,12 +107,12 @@ class V1Mapping(BaseSearchConfig):
107
107
 
108
108
  kind: Literal[_IDENTIFIER] = _IDENTIFIER
109
109
  values: Union[List[Dict], RefField]
110
- concurrency: Optional[Union[PositiveInt, RefField]]
110
+ concurrency: Optional[Union[PositiveInt, RefField]] = None
111
111
  early_stopping: Optional[Union[List[V1EarlyStopping], RefField]] = Field(
112
- alias="earlyStopping"
112
+ alias="earlyStopping", default=None
113
113
  )
114
114
 
115
- @validator("concurrency")
115
+ @field_validator("concurrency")
116
116
  def check_concurrency(cls, v):
117
117
  if v and v < 1:
118
118
  raise ValueError(