diff --git a/html2print/html2print.py b/html2print/html2print.py index 89db259..955b3d0 100644 --- a/html2print/html2print.py +++ b/html2print/html2print.py @@ -1,4 +1,3 @@ -# mypy: disable-error-code="no-untyped-call,no-untyped-def" import argparse import atexit import base64 @@ -39,8 +38,8 @@ class ChromeDriverManager: - def get_chrome_driver(self, path_to_cache_dir: str): - chrome_version = self.get_chrome_version() + def get_chrome_driver(self, path_to_cache_dir: str) -> str: + chrome_version: Optional[str] = self.get_chrome_version() # If Web Driver Manager cannot detect Chrome, it returns None. if chrome_version is None: @@ -104,11 +103,11 @@ def get_chrome_driver(self, path_to_cache_dir: str): @staticmethod def _download_chromedriver( - chrome_major_version, + chrome_major_version: str, os_type: str, - path_to_driver_cache_dir, - path_to_cached_chrome_driver, - ): + path_to_driver_cache_dir: str, + path_to_cached_chrome_driver: str, + ) -> str: url = "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json" response = ChromeDriverManager.send_http_get_request(url).json() @@ -160,14 +159,14 @@ def _download_chromedriver( return path_to_cached_chrome_driver @staticmethod - def send_http_get_request(url, params=None, **kwargs) -> Response: + def send_http_get_request(url: str) -> Response: last_error: Optional[Exception] = None for attempt in range(1, 4): print( # noqa: T201 f"html2print: sending GET request attempt {attempt}: {url}" ) try: - return requests.get(url, params, timeout=(5, 5), **kwargs) + return requests.get(url, timeout=(5, 5)) except requests.exceptions.ConnectTimeout as connect_timeout_: last_error = connect_timeout_ except requests.exceptions.ReadTimeout as read_timeout_: @@ -182,7 +181,7 @@ def send_http_get_request(url, params=None, **kwargs) -> Response: ) @staticmethod - def get_chrome_version(): + def get_chrome_version() -> Optional[str]: # Special case: GitHub Actions macOS CI machines have both # Google Chrome for Testing and normal Google Chrome installed, and # sometimes their versions are of different major version families. @@ -224,8 +223,8 @@ def get_chrome_version(): f"html2print: Error getting Google Chrome for Testing version: {e}" ) - os_manager = OperationSystemManager(os_type=None) - version = os_manager.get_browser_version_from_os(ChromeType.GOOGLE) + os_manager = OperationSystemManager(os_type=None) # type: ignore[no-untyped-call] + version: str = os_manager.get_browser_version_from_os(ChromeType.GOOGLE) # type: ignore[no-untyped-call] return version @@ -233,7 +232,7 @@ def get_inches_from_millimeters(mm: float) -> float: return mm / 25.4 -def get_pdf_from_html(driver, url) -> bytes: +def get_pdf_from_html(driver: webdriver.Chrome, url: str) -> bytes: print(f"html2print: opening URL with ChromeDriver: {url}") # noqa: T201 driver.get(url) @@ -272,7 +271,7 @@ class Done(Exception): logs: List[Dict[str, str]] = [] try: while True: - logs = driver.get_log("browser") + logs = driver.get_log("browser") # type: ignore[no-untyped-call] for entry_ in logs: if "HTML2PDF4DOC time" in entry_["message"]: print("success: HTML2PDF completed its job.") # noqa: T201 @@ -305,18 +304,20 @@ class Done(Exception): def create_webdriver( - chromedriver: Optional[str], + chromedriver_argument: Optional[str], path_to_cache_dir: str, page_load_timeout: int, debug: bool = False, ) -> webdriver.Chrome: print("html2print: creating ChromeDriver service.", flush=True) # noqa: T201 - if chromedriver is None: + + path_to_chrome: str + if chromedriver_argument is None: path_to_chrome = ChromeDriverManager().get_chrome_driver( path_to_cache_dir ) else: - path_to_chrome = chromedriver + path_to_chrome = chromedriver_argument print(f"html2print: ChromeDriver available at path: {path_to_chrome}") # noqa: T201 if debug: @@ -364,7 +365,7 @@ def create_webdriver( return driver -def main(): +def main() -> None: if not os.path.isfile(PATH_TO_HTML2PDF_JS): raise RuntimeError( f"Corrupted html2print package bundle. " @@ -461,7 +462,7 @@ def main(): path_to_cache_dir = ( args.cache_dir if args.cache_dir is not None else DEFAULT_CACHE_DIR ) - driver = create_webdriver( + driver: webdriver.Chrome = create_webdriver( args.chromedriver, path_to_cache_dir, page_load_timeout, @@ -469,7 +470,7 @@ def main(): ) @atexit.register - def exit_handler(): + def exit_handler() -> None: print("html2print: exit handler: quitting the ChromeDriver.") # noqa: T201 driver.quit()