Skip to content

Commit c8efd4e

Browse files
committed
don't use type | None syntax because we support 3.9
1 parent a079206 commit c8efd4e

3 files changed

Lines changed: 21 additions & 18 deletions

File tree

requestium/requestium_mixin.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import functools
22
import time
33
import warnings
4+
from typing import Optional
45

56
import tldextract
67
from parsel.selector import Selector, SelectorList
@@ -90,31 +91,31 @@ def is_cookie_in_driver(self, cookie) -> bool:
9091
return True
9192
return False
9293

93-
def ensure_element_by_id(self, selector, state="present", timeout=None) -> WebElement | None:
94+
def ensure_element_by_id(self, selector, state="present", timeout=None) -> Optional[WebElement]:
9495
return self.ensure_element(By.ID, selector, state, timeout)
9596

96-
def ensure_element_by_name(self, selector, state="present", timeout=None) -> WebElement | None:
97+
def ensure_element_by_name(self, selector, state="present", timeout=None) -> Optional[WebElement]:
9798
return self.ensure_element(By.NAME, selector, state, timeout)
9899

99-
def ensure_element_by_xpath(self, selector, state="present", timeout=None) -> WebElement | None:
100+
def ensure_element_by_xpath(self, selector, state="present", timeout=None) -> Optional[WebElement]:
100101
return self.ensure_element(By.XPATH, selector, state, timeout)
101102

102-
def ensure_element_by_link_text(self, selector, state="present", timeout=None) -> WebElement | None:
103+
def ensure_element_by_link_text(self, selector, state="present", timeout=None) -> Optional[WebElement]:
103104
return self.ensure_element(By.LINK_TEXT, selector, state, timeout)
104105

105-
def ensure_element_by_partial_link_text(self, selector, state="present", timeout=None) -> WebElement | None:
106+
def ensure_element_by_partial_link_text(self, selector, state="present", timeout=None) -> Optional[WebElement]:
106107
return self.ensure_element(By.PARTIAL_LINK_TEXT, selector, state, timeout)
107108

108-
def ensure_element_by_tag_name(self, selector, state="present", timeout=None) -> WebElement | None:
109+
def ensure_element_by_tag_name(self, selector, state="present", timeout=None) -> Optional[WebElement]:
109110
return self.ensure_element(By.TAG_NAME, selector, state, timeout)
110111

111-
def ensure_element_by_class_name(self, selector, state="present", timeout=None) -> WebElement | None:
112+
def ensure_element_by_class_name(self, selector, state="present", timeout=None) -> Optional[WebElement]:
112113
return self.ensure_element(By.CLASS_NAME, selector, state, timeout)
113114

114-
def ensure_element_by_css_selector(self, selector, state="present", timeout=None) -> WebElement | None:
115+
def ensure_element_by_css_selector(self, selector, state="present", timeout=None) -> Optional[WebElement]:
115116
return self.ensure_element(By.CSS_SELECTOR, selector, state, timeout)
116117

117-
def ensure_element(self, locator: str, selector: str, state: str = "present", timeout=None) -> WebElement | None:
118+
def ensure_element(self, locator: str, selector: str, state: str = "present", timeout=None) -> Optional[WebElement]:
118119
"""This method allows us to wait till an element appears or disappears in the browser
119120
120121
The webdriver runs in parallel with our scripts, so we must wait for it everytime it
@@ -192,7 +193,7 @@ def css(self, *args, **kwargs) -> SelectorList[Selector]:
192193
def re(self, *args, **kwargs) -> list[str]:
193194
return self.selector.re(*args, **kwargs)
194195

195-
def re_first(self, *args, **kwargs) -> str | None:
196+
def re_first(self, *args, **kwargs) -> Optional[str]:
196197
return self.selector.re_first(*args, **kwargs)
197198

198199

requestium/requestium_response.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Optional
2+
13
import requests
24
from parsel.selector import Selector, SelectorList
35
from requests import Response
@@ -27,5 +29,5 @@ def css(self, *args, **kwargs) -> SelectorList[Selector]:
2729
def re(self, *args, **kwargs) -> list[str]:
2830
return self.selector.re(*args, **kwargs)
2931

30-
def re_first(self, *args, **kwargs) -> str | None:
32+
def re_first(self, *args, **kwargs) -> Optional[str]:
3133
return self.selector.re_first(*args, **kwargs)

requestium/requestium_session.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import functools
22
import types
33
from pathlib import Path
4-
from typing import Any
4+
from typing import Any, Optional, Union
55

66
import requests
77
from selenium import webdriver
@@ -30,10 +30,10 @@ class Session(requests.Session):
3030

3131
def __init__(
3232
self,
33-
webdriver_path: Path | str | None = None,
34-
headless: bool | None = None,
33+
webdriver_path: Optional[Union[Path | str]] = None,
34+
headless: Optional[bool] = None,
3535
default_timeout: float = 5,
36-
webdriver_options: dict[str, Any] | None = None,
36+
webdriver_options: Optional[dict[str, Any]] = None,
3737
driver=None,
3838
) -> None:
3939
super().__init__()
@@ -65,7 +65,7 @@ def driver(self):
6565
self._driver = self._driver_initializer()
6666
return self._driver
6767

68-
def _start_chrome_browser(self, headless: bool | None = False): # noqa C901
68+
def _start_chrome_browser(self, headless: Optional[bool] = False): # noqa C901
6969
# TODO transfer of proxies and headers: Not supported by chromedriver atm.
7070
# Choosing not to use plug-ins for this as I don't want to worry about the
7171
# extra dependencies and plug-ins don't work in headless mode. :-(
@@ -105,7 +105,7 @@ def _start_chrome_browser(self, headless: bool | None = False): # noqa C901
105105
service = ChromeService(executable_path=str(self.webdriver_path))
106106
return RequestiumChrome(service=service, options=chrome_options, default_timeout=self.default_timeout)
107107

108-
def transfer_session_cookies_to_driver(self, domain: str | None = None) -> None:
108+
def transfer_session_cookies_to_driver(self, domain: Optional[str] = None) -> None:
109109
"""Copies the Session's cookies into the webdriver
110110
111111
Using the 'domain' parameter we choose the cookies we wish to transfer, we only
@@ -125,7 +125,7 @@ def transfer_session_cookies_to_driver(self, domain: str | None = None) -> None:
125125

126126
self.driver.ensure_add_cookie({k: v for k, v in cookie.items() if v is not None})
127127

128-
def transfer_driver_cookies_to_session(self, copy_user_agent: bool | None = True) -> None:
128+
def transfer_driver_cookies_to_session(self, copy_user_agent: Optional[bool] = True) -> None:
129129
if copy_user_agent:
130130
self.copy_user_agent_from_driver()
131131

0 commit comments

Comments
 (0)