|
1 | 1 | """Pydantic models for validation Belay configuration. |
2 | 2 | """ |
3 | 3 |
|
4 | | -from functools import partial |
5 | 4 | from pathlib import Path |
6 | 5 | from typing import Dict, List, Optional |
7 | 6 |
|
8 | | -try: |
9 | | - from pydantic.v1 import BaseModel as PydanticBaseModel |
10 | | - from pydantic.v1 import validator |
11 | | -except ImportError: |
12 | | - from pydantic import BaseModel as PydanticBaseModel |
13 | | - from pydantic import validator |
14 | | - |
15 | | -validator_reuse = partial(validator, allow_reuse=True) |
16 | | -prevalidator_reuse = partial(validator_reuse, pre=True) |
| 7 | +from pydantic import BaseModel as PydanticBaseModel |
| 8 | +from pydantic import ConfigDict, field_validator |
17 | 9 |
|
18 | 10 |
|
19 | 11 | class BaseModel(PydanticBaseModel): |
20 | | - class Config: |
21 | | - allow_mutation = False |
| 12 | + model_config = ConfigDict(frozen=True) |
22 | 13 |
|
23 | 14 |
|
24 | 15 | class DependencySourceConfig(BaseModel): |
@@ -106,11 +97,19 @@ class GroupConfig(BaseModel): |
106 | 97 | ############## |
107 | 98 | # VALIDATORS # |
108 | 99 | ############## |
109 | | - _v_dependencies_preprocessor = prevalidator_reuse("dependencies")(_dependencies_preprocessor) |
110 | | - _v_dependencies_names = validator_reuse("dependencies")(_dependencies_name_validator) |
111 | | - |
112 | | - @validator("dependencies") |
113 | | - def max_1_rename_to_init(packages: dict): |
| 100 | + @field_validator("dependencies", mode="before") |
| 101 | + @classmethod |
| 102 | + def _v_dependencies_preprocessor(cls, v): |
| 103 | + return _dependencies_preprocessor(v) |
| 104 | + |
| 105 | + @field_validator("dependencies") |
| 106 | + @classmethod |
| 107 | + def _v_dependencies_names(cls, v): |
| 108 | + return _dependencies_name_validator(v) |
| 109 | + |
| 110 | + @field_validator("dependencies") |
| 111 | + @classmethod |
| 112 | + def max_1_rename_to_init(cls, packages: dict): |
114 | 113 | rename_to_init_count = {} |
115 | 114 | for package_name, dependency in walk_dependencies(packages): |
116 | 115 | rename_to_init_count.setdefault(package_name, 0) |
@@ -141,10 +140,18 @@ class BelayConfig(BaseModel): |
141 | 140 | ############## |
142 | 141 | # VALIDATORS # |
143 | 142 | ############## |
144 | | - _v_dependencies_preprocessor = prevalidator_reuse("dependencies")(_dependencies_preprocessor) |
145 | | - _v_dependencies_names = validator_reuse("dependencies")(_dependencies_name_validator) |
146 | | - |
147 | | - @validator("group") |
| 143 | + @field_validator("dependencies", mode="before") |
| 144 | + @classmethod |
| 145 | + def _v_dependencies_preprocessor(cls, v): |
| 146 | + return _dependencies_preprocessor(v) |
| 147 | + |
| 148 | + @field_validator("dependencies") |
| 149 | + @classmethod |
| 150 | + def _v_dependencies_names(cls, v): |
| 151 | + return _dependencies_name_validator(v) |
| 152 | + |
| 153 | + @field_validator("group") |
| 154 | + @classmethod |
148 | 155 | def main_not_in_group(cls, v): |
149 | 156 | if "main" in v: |
150 | 157 | raise ValueError( |
|
0 commit comments