Skip to content

Commit 460b444

Browse files
committed
refactor(controllers): Improve type validation
1 parent 0fe04e4 commit 460b444

2 files changed

Lines changed: 12 additions & 13 deletions

File tree

scrapling/engines/_browsers/_controllers.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
Dict,
3333
Optional,
3434
Union,
35-
Iterable,
35+
List,
3636
Callable,
3737
SelectorWaitStates,
3838
)
@@ -98,7 +98,7 @@ def __init__(
9898
timeout: Union[int, float] = 30000,
9999
disable_resources: bool = False,
100100
wait_selector: Optional[str] = None,
101-
cookies: Optional[Iterable[Dict]] = None,
101+
cookies: Optional[List[Dict]] = None,
102102
network_idle: bool = False,
103103
wait_selector_state: SelectorWaitStates = "attached",
104104
adaptor_arguments: Optional[Dict] = None,
@@ -168,7 +168,7 @@ def __init__(
168168
self.extra_headers = config.extra_headers
169169
self.useragent = config.useragent
170170
self.timeout = config.timeout
171-
self.cookies = list(config.cookies) if config.cookies else []
171+
self.cookies = config.cookies
172172
self.disable_resources = config.disable_resources
173173
self.cdp_url = config.cdp_url
174174
self.network_idle = config.network_idle
@@ -180,7 +180,7 @@ def __init__(
180180
self.context: Optional[BrowserContext] = None
181181
self.page_pool = PagePool(self.max_pages)
182182
self._closed = False
183-
self.adaptor_arguments = config.adaptor_arguments or {}
183+
self.adaptor_arguments = config.adaptor_arguments
184184
self.page_action = config.page_action
185185
self.__initiate_browser_options__()
186186

@@ -392,7 +392,7 @@ def __init__(
392392
timeout: Union[int, float] = 30000,
393393
disable_resources: bool = False,
394394
wait_selector: Optional[str] = None,
395-
cookies: Optional[Iterable[Dict]] = None,
395+
cookies: Optional[List[Dict]] = None,
396396
network_idle: bool = False,
397397
wait_selector_state: SelectorWaitStates = "attached",
398398
adaptor_arguments: Optional[Dict] = None,

scrapling/engines/_browsers/_validators.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
Union,
77
Dict,
88
Callable,
9+
Literal,
10+
List,
911
Iterable,
1012
SelectorWaitStates,
1113
)
@@ -34,7 +36,7 @@ class PlaywrightConfig(Struct, kw_only=True, frozen=False):
3436
timeout: Union[int, float] = 30000
3537
disable_resources: bool = False
3638
wait_selector: Optional[str] = None
37-
cookies: Optional[Iterable[Dict]] = None
39+
cookies: Optional[List[Dict]] = None
3840
network_idle: bool = False
3941
wait_selector_state: SelectorWaitStates = "attached"
4042
adaptor_arguments: Optional[Dict] = None
@@ -43,13 +45,6 @@ def __post_init__(self):
4345
"""Custom validation after msgspec validation"""
4446
if self.max_pages < 1 or self.max_pages > 50:
4547
raise ValueError("max_pages must be between 1 and 50")
46-
if self.wait_selector_state not in (
47-
"attached",
48-
"detached",
49-
"hidden",
50-
"visible",
51-
):
52-
raise ValueError(f"Invalid wait_selector_state: {self.wait_selector_state}")
5348
if self.timeout < 0:
5449
raise ValueError("timeout must be >= 0")
5550
if self.page_action is not None and not callable(self.page_action):
@@ -60,6 +55,10 @@ def __post_init__(self):
6055
self.proxy = construct_proxy_dict(self.proxy, as_tuple=True)
6156
if self.cdp_url:
6257
self.__validate_cdp(self.cdp_url)
58+
if not self.cookies:
59+
self.cookies = []
60+
if not self.adaptor_arguments:
61+
self.adaptor_arguments = {}
6362

6463
@staticmethod
6564
def __validate_cdp(cdp_url):

0 commit comments

Comments
 (0)