seleniumbase 4.33.5__py3-none-any.whl → 4.33.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.33.5"
2
+ __version__ = "4.33.7"
@@ -97,26 +97,12 @@ def log_d(message):
97
97
  print(message)
98
98
 
99
99
 
100
- def make_writable(file_path):
101
- # Set permissions to: "If you can read it, you can write it."
102
- mode = os.stat(file_path).st_mode
103
- mode |= (mode & 0o444) >> 1 # copy R bits to W
104
- os.chmod(file_path, mode)
105
-
106
-
107
- def make_executable(file_path):
108
- # Set permissions to: "If you can read it, you can execute it."
109
- mode = os.stat(file_path).st_mode
110
- mode |= (mode & 0o444) >> 2 # copy R bits to X
111
- os.chmod(file_path, mode)
112
-
113
-
114
100
  def make_driver_executable_if_not(driver_path):
115
101
  # Verify driver has executable permissions. If not, add them.
116
102
  permissions = oct(os.stat(driver_path)[0])[-3:]
117
103
  if "4" in permissions or "6" in permissions:
118
104
  # We want at least a '5' or '7' to make sure it's executable
119
- make_executable(driver_path)
105
+ shared_utils.make_executable(driver_path)
120
106
 
121
107
 
122
108
  def extend_driver(driver):
@@ -566,6 +552,10 @@ def uc_open_with_cdp_mode(driver, url=None):
566
552
  for tab in driver.cdp_base.tabs[-1::-1]:
567
553
  if "chrome-extension://" not in str(tab):
568
554
  with gui_lock:
555
+ with suppress(Exception):
556
+ shared_utils.make_writable(
557
+ constants.MultiBrowser.PYAUTOGUILOCK
558
+ )
569
559
  loop.run_until_complete(tab.activate())
570
560
  break
571
561
 
@@ -580,11 +570,17 @@ def uc_open_with_cdp_mode(driver, url=None):
580
570
  if page_tab:
581
571
  loop.run_until_complete(page_tab.aopen())
582
572
  with gui_lock:
573
+ with suppress(Exception):
574
+ shared_utils.make_writable(
575
+ constants.MultiBrowser.PYAUTOGUILOCK
576
+ )
583
577
  loop.run_until_complete(page_tab.activate())
584
578
 
585
579
  loop.run_until_complete(driver.cdp_base.update_targets())
586
580
  page = loop.run_until_complete(driver.cdp_base.get(url))
587
581
  with gui_lock:
582
+ with suppress(Exception):
583
+ shared_utils.make_writable(constants.MultiBrowser.PYAUTOGUILOCK)
588
584
  loop.run_until_complete(page.activate())
589
585
  loop.run_until_complete(page.wait())
590
586
  if not safe_url:
@@ -883,17 +879,12 @@ def install_pyautogui_if_missing(driver):
883
879
  with pip_find_lock:
884
880
  pass
885
881
  except Exception:
886
- # Need write permissions
887
- with suppress(Exception):
888
- make_writable(constants.PipInstall.FINDLOCK)
889
- try:
890
- with pip_find_lock:
891
- pass
892
- except Exception:
893
- # Since missing permissions, skip the locks
894
- __install_pyautogui_if_missing()
895
- return
882
+ # Since missing permissions, skip the locks
883
+ __install_pyautogui_if_missing()
884
+ return
896
885
  with pip_find_lock: # Prevent issues with multiple processes
886
+ with suppress(Exception):
887
+ shared_utils.make_writable(constants.PipInstall.FINDLOCK)
897
888
  __install_pyautogui_if_missing()
898
889
 
899
890
 
@@ -1422,7 +1413,7 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
1422
1413
  ctype = "cf_t"
1423
1414
  else:
1424
1415
  return
1425
- if not driver.is_connected():
1416
+ if not driver.is_connected() and not __is_cdp_swap_needed(driver):
1426
1417
  driver.connect()
1427
1418
  time.sleep(2)
1428
1419
  install_pyautogui_if_missing(driver)
@@ -1434,7 +1425,10 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
1434
1425
  )
1435
1426
  with gui_lock: # Prevent issues with multiple processes
1436
1427
  needs_switch = False
1437
- is_in_frame = js_utils.is_in_frame(driver)
1428
+ if not __is_cdp_swap_needed(driver):
1429
+ is_in_frame = js_utils.is_in_frame(driver)
1430
+ else:
1431
+ is_in_frame = False
1438
1432
  selector = "#challenge-stage"
1439
1433
  if ctype == "g_rc":
1440
1434
  selector = "#recaptcha-token"
@@ -1442,7 +1436,7 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
1442
1436
  driver.switch_to.parent_frame()
1443
1437
  needs_switch = True
1444
1438
  is_in_frame = js_utils.is_in_frame(driver)
1445
- if not is_in_frame:
1439
+ if not is_in_frame and not __is_cdp_swap_needed(driver):
1446
1440
  # Make sure the window is on top
1447
1441
  page_actions.switch_to_window(
1448
1442
  driver, driver.current_window_handle, 2, uc_lock=False
@@ -1509,17 +1503,18 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
1509
1503
  and frame == "iframe"
1510
1504
  ):
1511
1505
  frame = 'iframe[title="reCAPTCHA"]'
1512
- if not is_in_frame or needs_switch:
1513
- # Currently not in frame (or nested frame outside CF one)
1514
- try:
1515
- if visible_iframe or ctype == "g_rc":
1516
- driver.switch_to_frame(frame)
1517
- except Exception:
1518
- if visible_iframe or ctype == "g_rc":
1519
- if driver.is_element_present("iframe"):
1520
- driver.switch_to_frame("iframe")
1521
- else:
1522
- return
1506
+ if not __is_cdp_swap_needed(driver):
1507
+ if not is_in_frame or needs_switch:
1508
+ # Currently not in frame (or nested frame outside CF one)
1509
+ try:
1510
+ if visible_iframe or ctype == "g_rc":
1511
+ driver.switch_to_frame(frame)
1512
+ except Exception:
1513
+ if visible_iframe or ctype == "g_rc":
1514
+ if driver.is_element_present("iframe"):
1515
+ driver.switch_to_frame("iframe")
1516
+ else:
1517
+ return
1523
1518
  try:
1524
1519
  selector = "div.cf-turnstile"
1525
1520
  if ctype == "g_rc":
@@ -1535,11 +1530,11 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
1535
1530
  tab_count += 1
1536
1531
  time.sleep(0.027)
1537
1532
  active_element_css = js_utils.get_active_element_css(driver)
1538
- print(active_element_css)
1539
1533
  if (
1540
1534
  active_element_css.startswith(selector)
1541
1535
  or active_element_css.endswith(" > div" * 2)
1542
1536
  or (special_form and active_element_css.endswith(" div"))
1537
+ or (ctype == "g_rc" and "frame[name" in active_element_css)
1543
1538
  ):
1544
1539
  found_checkbox = True
1545
1540
  sb_config._saved_cf_tab_count = tab_count
@@ -1559,6 +1554,7 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
1559
1554
  )
1560
1555
  and hasattr(sb_config, "_saved_cf_tab_count")
1561
1556
  and sb_config._saved_cf_tab_count
1557
+ and not __is_cdp_swap_needed(driver)
1562
1558
  ):
1563
1559
  driver.uc_open_with_disconnect(driver.current_url, 3.8)
1564
1560
  with suppress(Exception):
@@ -1773,22 +1769,34 @@ def _add_chrome_proxy_extension(
1773
1769
  ):
1774
1770
  # Single-threaded
1775
1771
  if zip_it:
1776
- proxy_helper.create_proxy_ext(
1777
- proxy_string, proxy_user, proxy_pass, bypass_list
1778
- )
1779
- proxy_zip = proxy_helper.PROXY_ZIP_PATH
1780
- chrome_options.add_extension(proxy_zip)
1772
+ proxy_zip_lock = fasteners.InterProcessLock(PROXY_ZIP_LOCK)
1773
+ with proxy_zip_lock:
1774
+ proxy_helper.create_proxy_ext(
1775
+ proxy_string, proxy_user, proxy_pass, bypass_list
1776
+ )
1777
+ proxy_zip = proxy_helper.PROXY_ZIP_PATH
1778
+ chrome_options.add_extension(proxy_zip)
1781
1779
  else:
1782
- proxy_helper.create_proxy_ext(
1783
- proxy_string, proxy_user, proxy_pass, bypass_list, zip_it=False
1784
- )
1785
- proxy_dir_path = proxy_helper.PROXY_DIR_PATH
1786
- chrome_options = add_chrome_ext_dir(chrome_options, proxy_dir_path)
1780
+ proxy_dir_lock = fasteners.InterProcessLock(PROXY_DIR_LOCK)
1781
+ with proxy_dir_lock:
1782
+ proxy_helper.create_proxy_ext(
1783
+ proxy_string,
1784
+ proxy_user,
1785
+ proxy_pass,
1786
+ bypass_list,
1787
+ zip_it=False,
1788
+ )
1789
+ proxy_dir_path = proxy_helper.PROXY_DIR_PATH
1790
+ chrome_options = add_chrome_ext_dir(
1791
+ chrome_options, proxy_dir_path
1792
+ )
1787
1793
  else:
1788
1794
  # Multi-threaded
1789
1795
  if zip_it:
1790
1796
  proxy_zip_lock = fasteners.InterProcessLock(PROXY_ZIP_LOCK)
1791
1797
  with proxy_zip_lock:
1798
+ with suppress(Exception):
1799
+ shared_utils.make_writable(PROXY_ZIP_LOCK)
1792
1800
  if multi_proxy:
1793
1801
  _set_proxy_filenames()
1794
1802
  if not os.path.exists(proxy_helper.PROXY_ZIP_PATH):
@@ -1800,6 +1808,8 @@ def _add_chrome_proxy_extension(
1800
1808
  else:
1801
1809
  proxy_dir_lock = fasteners.InterProcessLock(PROXY_DIR_LOCK)
1802
1810
  with proxy_dir_lock:
1811
+ with suppress(Exception):
1812
+ shared_utils.make_writable(PROXY_DIR_LOCK)
1803
1813
  if multi_proxy:
1804
1814
  _set_proxy_filenames()
1805
1815
  if not os.path.exists(proxy_helper.PROXY_DIR_PATH):
@@ -1808,7 +1818,7 @@ def _add_chrome_proxy_extension(
1808
1818
  proxy_user,
1809
1819
  proxy_pass,
1810
1820
  bypass_list,
1811
- False,
1821
+ zip_it=False,
1812
1822
  )
1813
1823
  chrome_options = add_chrome_ext_dir(
1814
1824
  chrome_options, proxy_helper.PROXY_DIR_PATH
@@ -1825,6 +1835,8 @@ def is_using_uc(undetectable, browser_name):
1825
1835
  def _unzip_to_new_folder(zip_file, folder):
1826
1836
  proxy_dir_lock = fasteners.InterProcessLock(PROXY_DIR_LOCK)
1827
1837
  with proxy_dir_lock:
1838
+ with suppress(Exception):
1839
+ shared_utils.make_writable(PROXY_DIR_LOCK)
1828
1840
  if not os.path.exists(folder):
1829
1841
  import zipfile
1830
1842
  zip_ref = zipfile.ZipFile(zip_file, "r")
@@ -2934,6 +2946,8 @@ def get_remote_driver(
2934
2946
  constants.PipInstall.FINDLOCK
2935
2947
  )
2936
2948
  with pip_find_lock: # Prevent issues with multiple processes
2949
+ with suppress(Exception):
2950
+ shared_utils.make_writable(constants.PipInstall.FINDLOCK)
2937
2951
  try:
2938
2952
  from seleniumwire import webdriver
2939
2953
  import blinker
@@ -3371,6 +3385,8 @@ def get_local_driver(
3371
3385
  constants.PipInstall.FINDLOCK
3372
3386
  )
3373
3387
  with pip_find_lock: # Prevent issues with multiple processes
3388
+ with suppress(Exception):
3389
+ shared_utils.make_writable(constants.PipInstall.FINDLOCK)
3374
3390
  try:
3375
3391
  from seleniumwire import webdriver
3376
3392
  import blinker
@@ -3434,6 +3450,10 @@ def get_local_driver(
3434
3450
  constants.MultiBrowser.DRIVER_FIXING_LOCK
3435
3451
  )
3436
3452
  with geckodriver_fixing_lock:
3453
+ with suppress(Exception):
3454
+ shared_utils.make_writable(
3455
+ constants.MultiBrowser.DRIVER_FIXING_LOCK
3456
+ )
3437
3457
  if not geckodriver_on_path():
3438
3458
  sys_args = sys.argv # Save a copy of sys args
3439
3459
  log_d(
@@ -3736,6 +3756,10 @@ def get_local_driver(
3736
3756
  constants.MultiBrowser.DRIVER_FIXING_LOCK
3737
3757
  )
3738
3758
  with edgedriver_fixing_lock:
3759
+ with suppress(Exception):
3760
+ shared_utils.make_writable(
3761
+ constants.MultiBrowser.DRIVER_FIXING_LOCK
3762
+ )
3739
3763
  msg = "Microsoft Edge Driver not found."
3740
3764
  if edgedriver_upgrade_needed:
3741
3765
  msg = "Microsoft Edge Driver update needed."
@@ -4119,6 +4143,10 @@ def get_local_driver(
4119
4143
  constants.MultiBrowser.DRIVER_FIXING_LOCK
4120
4144
  )
4121
4145
  with edgedriver_fixing_lock:
4146
+ with suppress(Exception):
4147
+ shared_utils.make_writable(
4148
+ constants.MultiBrowser.DRIVER_FIXING_LOCK
4149
+ )
4122
4150
  with suppress(Exception):
4123
4151
  if not _was_driver_repaired():
4124
4152
  _repair_edgedriver(edge_version)
@@ -4501,6 +4529,10 @@ def get_local_driver(
4501
4529
  constants.MultiBrowser.DRIVER_FIXING_LOCK
4502
4530
  )
4503
4531
  with chromedriver_fixing_lock:
4532
+ with suppress(Exception):
4533
+ shared_utils.make_writable(
4534
+ constants.MultiBrowser.DRIVER_FIXING_LOCK
4535
+ )
4504
4536
  msg = "chromedriver update needed. Getting it now:"
4505
4537
  if not path_chromedriver:
4506
4538
  msg = "chromedriver not found. Getting it now:"
@@ -4592,6 +4624,10 @@ def get_local_driver(
4592
4624
  constants.MultiBrowser.DRIVER_FIXING_LOCK
4593
4625
  )
4594
4626
  with uc_lock: # Avoid multithreaded issues
4627
+ with suppress(Exception):
4628
+ shared_utils.make_writable(
4629
+ constants.MultiBrowser.DRIVER_FIXING_LOCK
4630
+ )
4595
4631
  if make_uc_driver_from_chromedriver:
4596
4632
  if os.path.exists(LOCAL_CHROMEDRIVER):
4597
4633
  with suppress(Exception):
@@ -4824,7 +4860,12 @@ def get_local_driver(
4824
4860
  )
4825
4861
  uc_activated = True
4826
4862
  except URLError as e:
4827
- if cert in e.args[0] and IS_MAC:
4863
+ if (
4864
+ IS_MAC
4865
+ and hasattr(e, "args")
4866
+ and isinstance(e.args, (list, tuple))
4867
+ and cert in e.args[0]
4868
+ ):
4828
4869
  mac_certificate_error = True
4829
4870
  else:
4830
4871
  raise
@@ -4851,6 +4892,10 @@ def get_local_driver(
4851
4892
  if not os.path.exists(cf_lock_path):
4852
4893
  # Avoid multithreaded issues
4853
4894
  with cf_lock:
4895
+ with suppress(Exception):
4896
+ shared_utils.make_writable(
4897
+ cf_lock_path
4898
+ )
4854
4899
  # Install Python Certificates (MAC)
4855
4900
  os.system(
4856
4901
  r"bash /Applications/Python*/"
@@ -4994,6 +5039,10 @@ def get_local_driver(
4994
5039
  constants.MultiBrowser.DRIVER_FIXING_LOCK
4995
5040
  )
4996
5041
  with chromedriver_fixing_lock:
5042
+ with suppress(Exception):
5043
+ shared_utils.make_writable(
5044
+ constants.MultiBrowser.DRIVER_FIXING_LOCK
5045
+ )
4997
5046
  if not _was_driver_repaired():
4998
5047
  _repair_chromedriver(
4999
5048
  chrome_options, headless_options, mcv
@@ -5192,7 +5241,10 @@ def get_local_driver(
5192
5241
  chromedr_fixing_lock = fasteners.InterProcessLock(
5193
5242
  constants.MultiBrowser.DRIVER_FIXING_LOCK
5194
5243
  )
5244
+ D_F_L = constants.MultiBrowser.DRIVER_FIXING_LOCK
5195
5245
  with chromedr_fixing_lock:
5246
+ with suppress(Exception):
5247
+ shared_utils.make_writable(D_F_L)
5196
5248
  if not _was_driver_repaired():
5197
5249
  with suppress(Exception):
5198
5250
  _repair_chromedriver(
@@ -7,6 +7,7 @@ from contextlib import suppress
7
7
  from seleniumbase import config as sb_config
8
8
  from seleniumbase.config import settings
9
9
  from seleniumbase.fixtures import constants
10
+ from seleniumbase.fixtures import shared_utils
10
11
 
11
12
  python3_11_or_newer = False
12
13
  if sys.version_info >= (3, 11):
@@ -33,6 +34,8 @@ def log_screenshot(test_logpath, driver, screenshot=None, get=False):
33
34
  if screenshot != screenshot_warning:
34
35
  with open(screenshot_path, "wb") as file:
35
36
  file.write(screenshot)
37
+ with suppress(Exception):
38
+ shared_utils.make_writable(screenshot_path)
36
39
  else:
37
40
  print("WARNING: %s" % screenshot_warning)
38
41
  if get:
@@ -282,13 +285,14 @@ def log_test_failure_data(test, test_logpath, driver, browser, url=None):
282
285
  sb_config._report_time = the_time
283
286
  sb_config._report_traceback = traceback_message
284
287
  sb_config._report_exception = exc_message
285
- with suppress(Exception):
286
- if not os.path.exists(test_logpath):
288
+ if not os.path.exists(test_logpath):
289
+ with suppress(Exception):
287
290
  os.makedirs(test_logpath)
288
291
  with suppress(Exception):
289
292
  log_file = codecs.open(basic_file_path, "w+", encoding="utf-8")
290
293
  log_file.writelines("\r\n".join(data_to_save))
291
294
  log_file.close()
295
+ shared_utils.make_writable(basic_file_path)
292
296
 
293
297
 
294
298
  def log_skipped_test_data(test, test_logpath, driver, browser, reason):
@@ -339,9 +343,11 @@ def log_skipped_test_data(test, test_logpath, driver, browser, reason):
339
343
  data_to_save.append(" * Skip Reason: %s" % reason)
340
344
  data_to_save.append("")
341
345
  file_path = os.path.join(test_logpath, "skip_reason.txt")
342
- log_file = codecs.open(file_path, "w+", encoding="utf-8")
343
- log_file.writelines("\r\n".join(data_to_save))
344
- log_file.close()
346
+ with suppress(Exception):
347
+ log_file = codecs.open(file_path, "w+", encoding="utf-8")
348
+ log_file.writelines("\r\n".join(data_to_save))
349
+ log_file.close()
350
+ shared_utils.make_writable(file_path)
345
351
 
346
352
 
347
353
  def log_page_source(test_logpath, driver, source=None):
@@ -364,13 +370,15 @@ def log_page_source(test_logpath, driver, source=None):
364
370
  "unresponsive, or closed prematurely!</h4>"
365
371
  )
366
372
  )
367
- with suppress(Exception):
368
- if not os.path.exists(test_logpath):
373
+ if not os.path.exists(test_logpath):
374
+ with suppress(Exception):
369
375
  os.makedirs(test_logpath)
370
376
  html_file_path = os.path.join(test_logpath, html_file_name)
371
- html_file = codecs.open(html_file_path, "w+", encoding="utf-8")
372
- html_file.write(page_source)
373
- html_file.close()
377
+ with suppress(Exception):
378
+ html_file = codecs.open(html_file_path, "w+", encoding="utf-8")
379
+ html_file.write(page_source)
380
+ html_file.close()
381
+ shared_utils.make_writable(html_file_path)
374
382
 
375
383
 
376
384
  def get_test_id(test):
@@ -2,10 +2,12 @@ import os
2
2
  import re
3
3
  import warnings
4
4
  import zipfile
5
+ from contextlib import suppress
5
6
  from seleniumbase.config import proxy_list
6
7
  from seleniumbase.config import settings
7
8
  from seleniumbase.fixtures import constants
8
9
  from seleniumbase.fixtures import page_utils
10
+ from seleniumbase.fixtures import shared_utils
9
11
 
10
12
  DOWNLOADS_DIR = constants.Files.DOWNLOADS_FOLDER
11
13
  PROXY_ZIP_PATH = os.path.join(DOWNLOADS_DIR, "proxy.zip")
@@ -109,31 +111,35 @@ def create_proxy_ext(
109
111
  """"minimum_chrome_version":"22.0.0"\n"""
110
112
  """}"""
111
113
  )
112
- import threading
113
-
114
- lock = threading.RLock() # Support multi-threaded tests. Eg. "pytest -n=4"
115
- with lock:
116
- abs_path = os.path.abspath(".")
117
- downloads_path = os.path.join(abs_path, DOWNLOADS_DIR)
118
- if not os.path.exists(downloads_path):
119
- os.mkdir(downloads_path)
120
- if zip_it:
121
- zf = zipfile.ZipFile(PROXY_ZIP_PATH, mode="w")
122
- zf.writestr("background.js", background_js)
123
- zf.writestr("manifest.json", manifest_json)
124
- zf.close()
125
- else:
126
- proxy_ext_dir = PROXY_DIR_PATH
127
- if not os.path.exists(proxy_ext_dir):
128
- os.mkdir(proxy_ext_dir)
129
- manifest_file = os.path.join(proxy_ext_dir, "manifest.json")
130
- with open(manifest_file, mode="w") as f:
131
- f.write(manifest_json)
132
- proxy_host = proxy_string.split(":")[0]
133
- proxy_port = proxy_string.split(":")[1]
134
- background_file = os.path.join(proxy_ext_dir, "background.js")
135
- with open(background_file, mode="w") as f:
136
- f.write(background_js)
114
+ abs_path = os.path.abspath(".")
115
+ downloads_path = os.path.join(abs_path, DOWNLOADS_DIR)
116
+ if not os.path.exists(downloads_path):
117
+ os.mkdir(downloads_path)
118
+ if zip_it:
119
+ zf = zipfile.ZipFile(PROXY_ZIP_PATH, mode="w")
120
+ zf.writestr("background.js", background_js)
121
+ zf.writestr("manifest.json", manifest_json)
122
+ zf.close()
123
+ with suppress(Exception):
124
+ shared_utils.make_writable(PROXY_ZIP_PATH)
125
+ else:
126
+ proxy_ext_dir = PROXY_DIR_PATH
127
+ if not os.path.exists(proxy_ext_dir):
128
+ os.mkdir(proxy_ext_dir)
129
+ with suppress(Exception):
130
+ shared_utils.make_writable(proxy_ext_dir)
131
+ manifest_file = os.path.join(proxy_ext_dir, "manifest.json")
132
+ with open(manifest_file, mode="w") as f:
133
+ f.write(manifest_json)
134
+ with suppress(Exception):
135
+ shared_utils.make_writable(manifest_json)
136
+ proxy_host = proxy_string.split(":")[0]
137
+ proxy_port = proxy_string.split(":")[1]
138
+ background_file = os.path.join(proxy_ext_dir, "background.js")
139
+ with open(background_file, mode="w") as f:
140
+ f.write(background_js)
141
+ with suppress(Exception):
142
+ shared_utils.make_writable(background_js)
137
143
 
138
144
 
139
145
  def remove_proxy_zip_if_present():
@@ -141,13 +147,12 @@ def remove_proxy_zip_if_present():
141
147
  Used in the implementation of https://stackoverflow.com/a/35293284
142
148
  for https://stackoverflow.com/questions/12848327/
143
149
  """
144
- try:
145
- if os.path.exists(PROXY_ZIP_PATH):
150
+ if os.path.exists(PROXY_ZIP_PATH):
151
+ with suppress(Exception):
146
152
  os.remove(PROXY_ZIP_PATH)
147
- if os.path.exists(PROXY_ZIP_LOCK):
153
+ if os.path.exists(PROXY_ZIP_LOCK):
154
+ with suppress(Exception):
148
155
  os.remove(PROXY_ZIP_LOCK)
149
- except Exception:
150
- pass
151
156
 
152
157
 
153
158
  def validate_proxy_string(proxy_string):