1
- # mypy: disable-error-code="no-untyped-call,no-untyped-def"
2
1
import argparse
3
2
import atexit
4
3
import base64
39
38
40
39
41
40
class ChromeDriverManager :
42
- def get_chrome_driver (self , path_to_cache_dir : str ):
43
- chrome_version = self .get_chrome_version ()
41
+ def get_chrome_driver (self , path_to_cache_dir : str ) -> str :
42
+ chrome_version : Optional [ str ] = self .get_chrome_version ()
44
43
45
44
# If Web Driver Manager cannot detect Chrome, it returns None.
46
45
if chrome_version is None :
@@ -104,11 +103,11 @@ def get_chrome_driver(self, path_to_cache_dir: str):
104
103
105
104
@staticmethod
106
105
def _download_chromedriver (
107
- chrome_major_version ,
106
+ chrome_major_version : str ,
108
107
os_type : str ,
109
- path_to_driver_cache_dir ,
110
- path_to_cached_chrome_driver ,
111
- ):
108
+ path_to_driver_cache_dir : str ,
109
+ path_to_cached_chrome_driver : str ,
110
+ ) -> str :
112
111
url = "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json"
113
112
response = ChromeDriverManager .send_http_get_request (url ).json ()
114
113
@@ -160,14 +159,14 @@ def _download_chromedriver(
160
159
return path_to_cached_chrome_driver
161
160
162
161
@staticmethod
163
- def send_http_get_request (url , params = None , ** kwargs ) -> Response :
162
+ def send_http_get_request (url : str ) -> Response :
164
163
last_error : Optional [Exception ] = None
165
164
for attempt in range (1 , 4 ):
166
165
print ( # noqa: T201
167
166
f"html2print: sending GET request attempt { attempt } : { url } "
168
167
)
169
168
try :
170
- return requests .get (url , params , timeout = (5 , 5 ), ** kwargs )
169
+ return requests .get (url , timeout = (5 , 5 ))
171
170
except requests .exceptions .ConnectTimeout as connect_timeout_ :
172
171
last_error = connect_timeout_
173
172
except requests .exceptions .ReadTimeout as read_timeout_ :
@@ -182,7 +181,7 @@ def send_http_get_request(url, params=None, **kwargs) -> Response:
182
181
)
183
182
184
183
@staticmethod
185
- def get_chrome_version ():
184
+ def get_chrome_version () -> Optional [ str ] :
186
185
# Special case: GitHub Actions macOS CI machines have both
187
186
# Google Chrome for Testing and normal Google Chrome installed, and
188
187
# sometimes their versions are of different major version families.
@@ -224,16 +223,16 @@ def get_chrome_version():
224
223
f"html2print: Error getting Google Chrome for Testing version: { e } "
225
224
)
226
225
227
- os_manager = OperationSystemManager (os_type = None )
228
- version = os_manager .get_browser_version_from_os (ChromeType .GOOGLE )
226
+ os_manager = OperationSystemManager (os_type = None ) # type: ignore[no-untyped-call]
227
+ version : str = os_manager .get_browser_version_from_os (ChromeType .GOOGLE ) # type: ignore[no-untyped-call]
229
228
return version
230
229
231
230
232
231
def get_inches_from_millimeters (mm : float ) -> float :
233
232
return mm / 25.4
234
233
235
234
236
- def get_pdf_from_html (driver , url ) -> bytes :
235
+ def get_pdf_from_html (driver : webdriver . Chrome , url : str ) -> bytes :
237
236
print (f"html2print: opening URL with ChromeDriver: { url } " ) # noqa: T201
238
237
239
238
driver .get (url )
@@ -272,7 +271,7 @@ class Done(Exception):
272
271
logs : List [Dict [str , str ]] = []
273
272
try :
274
273
while True :
275
- logs = driver .get_log ("browser" )
274
+ logs = driver .get_log ("browser" ) # type: ignore[no-untyped-call]
276
275
for entry_ in logs :
277
276
if "HTML2PDF4DOC time" in entry_ ["message" ]:
278
277
print ("success: HTML2PDF completed its job." ) # noqa: T201
@@ -305,18 +304,20 @@ class Done(Exception):
305
304
306
305
307
306
def create_webdriver (
308
- chromedriver : Optional [str ],
307
+ chromedriver_argument : Optional [str ],
309
308
path_to_cache_dir : str ,
310
309
page_load_timeout : int ,
311
310
debug : bool = False ,
312
311
) -> webdriver .Chrome :
313
312
print ("html2print: creating ChromeDriver service." , flush = True ) # noqa: T201
314
- if chromedriver is None :
313
+
314
+ path_to_chrome : str
315
+ if chromedriver_argument is None :
315
316
path_to_chrome = ChromeDriverManager ().get_chrome_driver (
316
317
path_to_cache_dir
317
318
)
318
319
else :
319
- path_to_chrome = chromedriver
320
+ path_to_chrome = chromedriver_argument
320
321
print (f"html2print: ChromeDriver available at path: { path_to_chrome } " ) # noqa: T201
321
322
322
323
if debug :
@@ -364,7 +365,7 @@ def create_webdriver(
364
365
return driver
365
366
366
367
367
- def main ():
368
+ def main () -> None :
368
369
if not os .path .isfile (PATH_TO_HTML2PDF_JS ):
369
370
raise RuntimeError (
370
371
f"Corrupted html2print package bundle. "
@@ -461,15 +462,15 @@ def main():
461
462
path_to_cache_dir = (
462
463
args .cache_dir if args .cache_dir is not None else DEFAULT_CACHE_DIR
463
464
)
464
- driver = create_webdriver (
465
+ driver : webdriver . Chrome = create_webdriver (
465
466
args .chromedriver ,
466
467
path_to_cache_dir ,
467
468
page_load_timeout ,
468
469
debug = args .debug ,
469
470
)
470
471
471
472
@atexit .register
472
- def exit_handler ():
473
+ def exit_handler () -> None :
473
474
print ("html2print: exit handler: quitting the ChromeDriver." ) # noqa: T201
474
475
driver .quit ()
475
476
0 commit comments