11# SPDX-License-Identifier: BSD-2-Clause
2- import enum
32import re
4- from typing import Dict , List , Optional , Union , Literal , Any
3+ from typing import Dict , Optional , Literal , Any
54
6- from pydantic import BaseModel , Field , model_validator , ValidationInfo , field_validator
5+ from pydantic import BaseModel , model_validator , ValidationInfo , field_validator
76
87from .platforms .utils import Process
98
@@ -19,7 +18,7 @@ def validate_loc_format(self):
1918 if not re .match (r"^[NSWE]?[0-9]+$" , self .loc ):
2019 raise ValueError (f"Invalid location format: { self .loc } , expected format: [NSWE]?[0-9]+" )
2120 return self
22-
21+
2322 @classmethod
2423 def validate_pad_dict (cls , v : dict , info : ValidationInfo ):
2524 """Custom validation for pad dicts from TOML that may not have all fields."""
@@ -28,11 +27,11 @@ def validate_pad_dict(cls, v: dict, info: ValidationInfo):
2827 if 'loc' in v and 'type' not in v :
2928 if info .field_name == 'power' :
3029 v ['type' ] = 'power'
31-
30+
3231 # Map legacy 'clk' type to 'clock' to match our enum
3332 if 'type' in v and v ['type' ] == 'clk' :
3433 v ['type' ] = 'clock'
35-
34+
3635 return v
3736 return v
3837
@@ -44,7 +43,7 @@ class SiliconConfig(BaseModel):
4443 pads : Dict [str , PadConfig ] = {}
4544 power : Dict [str , PadConfig ] = {}
4645 debug : Optional [Dict [str , bool ]] = None
47-
46+
4847 @field_validator ('pads' , 'power' , mode = 'before' )
4948 @classmethod
5049 def validate_pad_dicts (cls , v , info : ValidationInfo ):
0 commit comments