1
- import json
2
1
import os
3
2
from pathlib import Path
4
3
from typing import Any , Literal , Mapping
11
10
StorageState ,
12
11
ViewportSize ,
13
12
)
14
- from pydantic import BaseModel , validator
13
+ from pydantic import BaseModel , field_validator
15
14
from stdl import fs
16
15
from stdl .st import FG , colored
17
16
@@ -143,31 +142,34 @@ def persistent_context_options(self) -> dict[str, Any]:
143
142
opts ["user_data_dir" ] = self .user_data_dir
144
143
return opts
145
144
146
- @validator ("browser" )
147
- def __validate_browser (cls , v : str ):
145
+ @field_validator ("browser" )
146
+ @classmethod
147
+ def validate_browser (cls , v : str ) -> str :
148
148
v = v .lower ().strip ()
149
149
if v == "chrome" :
150
150
v = "chromium"
151
151
if v not in BROWSERS :
152
152
raise ValueError (f"Possible values for 'browser' are { BROWSERS } " )
153
153
return v
154
154
155
- @validator ("permissions" , each_item = True )
156
- def __validate_permissions (cls , v ):
155
+ @field_validator ("permissions" , mode = "before" )
156
+ @classmethod
157
+ def validate_permissions (cls , v : T .Any ) -> T .Any :
157
158
if isinstance (v , str ):
158
159
v = v .lower ()
159
160
if v not in PERMISSIONS :
160
161
raise ValueError (v )
161
162
return v
162
163
163
- @validator ("viewport" , "screen" , "record_video_size" )
164
- def __validate_viewport_size (cls , v : ViewportSize ):
164
+ @field_validator ("viewport" , "screen" , "record_video_size" )
165
+ @classmethod
166
+ def validate_viewport_size (cls , v : dict [str , int ]) -> dict [str , int ]:
165
167
MIN_VIEWPORT_SIZE = 100
166
168
if v ["width" ] < MIN_VIEWPORT_SIZE or v ["height" ] < MIN_VIEWPORT_SIZE :
167
169
raise ValueError (v )
168
170
return v
169
171
170
- @validator (
172
+ @field_validator (
171
173
"user_data_dir" ,
172
174
"data_dir" ,
173
175
"executable_path" ,
@@ -177,7 +179,8 @@ def __validate_viewport_size(cls, v: ViewportSize):
177
179
"record_video_dir" ,
178
180
"storage_state" ,
179
181
)
180
- def __validate_path (cls , v ):
182
+ @classmethod
183
+ def validate_path (cls , v : Path ) -> str :
181
184
fs .ensure_paths_exist (v )
182
185
return os .path .abspath (str (v ))
183
186
0 commit comments