seleniumbase 4.33.3__py3-none-any.whl → 4.33.4__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.3"
2
+ __version__ = "4.33.4"
@@ -120,7 +120,7 @@ def main():
120
120
 
121
121
  data = []
122
122
  data.append("[pytest]")
123
- data.append("addopts = --capture=no -p no:cacheprovider")
123
+ data.append("addopts = --capture=tee-sys -p no:cacheprovider")
124
124
  data.append("norecursedirs = .* build dist recordings temp assets")
125
125
  data.append("filterwarnings =")
126
126
  data.append(" ignore::pytest.PytestWarning")
@@ -97,6 +97,13 @@ 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
+
100
107
  def make_executable(file_path):
101
108
  # Set permissions to: "If you can read it, you can execute it."
102
109
  mode = os.stat(file_path).st_mode
@@ -815,6 +822,13 @@ def install_pyautogui_if_missing(driver):
815
822
  pip_find_lock = fasteners.InterProcessLock(
816
823
  constants.PipInstall.FINDLOCK
817
824
  )
825
+ try:
826
+ with pip_find_lock:
827
+ pass
828
+ except Exception:
829
+ # Need write permissions
830
+ with suppress(Exception):
831
+ make_writable(constants.PipInstall.FINDLOCK)
818
832
  with pip_find_lock: # Prevent issues with multiple processes
819
833
  try:
820
834
  import pyautogui
@@ -13983,6 +13983,15 @@ class BaseCase(unittest.TestCase):
13983
13983
  pip_find_lock = fasteners.InterProcessLock(
13984
13984
  constants.PipInstall.FINDLOCK
13985
13985
  )
13986
+ try:
13987
+ with pip_find_lock:
13988
+ pass
13989
+ except Exception:
13990
+ # Need write permissions
13991
+ with suppress(Exception):
13992
+ mode = os.stat(constants.PipInstall.FINDLOCK).st_mode
13993
+ mode |= (mode & 0o444) >> 1 # copy R bits to W
13994
+ os.chmod(constants.PipInstall.FINDLOCK, mode)
13986
13995
  with pip_find_lock: # Prevent issues with multiple processes
13987
13996
  if self.undetectable and not (self.headless or self.headless2):
13988
13997
  import Xlib.display
@@ -17,6 +17,7 @@ if sys.version_info >= (3, 11):
17
17
  python3_11_or_newer = True
18
18
  py311_patch2 = constants.PatchPy311.PATCH
19
19
  sys_argv = sys.argv
20
+ full_time = None
20
21
  pytest_plugins = ["pytester"] # Adds the "testdir" fixture
21
22
 
22
23
 
@@ -2038,6 +2039,7 @@ def pytest_runtest_teardown(item):
2038
2039
  if (
2039
2040
  "-s" in sys_argv
2040
2041
  or "--capture=no" in sys_argv
2042
+ or "--capture=tee-sys" in sys_argv
2041
2043
  or (
2042
2044
  hasattr(sb_config.pytest_config, "invocation_params")
2043
2045
  and (
@@ -2045,6 +2047,9 @@ def pytest_runtest_teardown(item):
2045
2047
  or "--capture=no" in (
2046
2048
  sb_config.pytest_config.invocation_params.args
2047
2049
  )
2050
+ or "--capture=tee-sys" in (
2051
+ sb_config.pytest_config.invocation_params.args
2052
+ )
2048
2053
  )
2049
2054
  )
2050
2055
  ):
@@ -2053,6 +2058,10 @@ def pytest_runtest_teardown(item):
2053
2058
  sys.stdout.write("\n=> Fail Page: %s\n" % sb_config._fail_page)
2054
2059
 
2055
2060
 
2061
+ def pytest_html_duration_format(duration):
2062
+ return "%.2f" % duration
2063
+
2064
+
2056
2065
  def pytest_sessionfinish(session):
2057
2066
  pass
2058
2067
 
@@ -2103,9 +2112,11 @@ def pytest_terminal_summary(terminalreporter):
2103
2112
  )
2104
2113
 
2105
2114
 
2106
- def _perform_pytest_unconfigure_():
2115
+ def _perform_pytest_unconfigure_(config):
2107
2116
  from seleniumbase.core import proxy_helper
2108
2117
 
2118
+ reporter = config.pluginmanager.get_plugin("terminalreporter")
2119
+ duration = time.time() - reporter._sessionstarttime
2109
2120
  if (
2110
2121
  (hasattr(sb_config, "multi_proxy") and not sb_config.multi_proxy)
2111
2122
  or not hasattr(sb_config, "multi_proxy")
@@ -2133,6 +2144,63 @@ def _perform_pytest_unconfigure_():
2133
2144
  log_helper.clear_empty_logs()
2134
2145
  # Dashboard post-processing: Disable time-based refresh and stamp complete
2135
2146
  if not hasattr(sb_config, "dashboard") or not sb_config.dashboard:
2147
+ html_report_path = None
2148
+ the_html_r = None
2149
+ abs_path = os.path.abspath(".")
2150
+ if sb_config._html_report_name:
2151
+ html_report_path = os.path.join(
2152
+ abs_path, sb_config._html_report_name
2153
+ )
2154
+ if (
2155
+ sb_config._using_html_report
2156
+ and html_report_path
2157
+ and os.path.exists(html_report_path)
2158
+ ):
2159
+ with open(html_report_path, "r", encoding="utf-8") as f:
2160
+ the_html_r = f.read()
2161
+ assets_chunk = "if (assets.length === 1) {"
2162
+ remove_media = "container.classList.remove('media-container')"
2163
+ rm_n_left = '<div class="media-container__nav--left"><</div>'
2164
+ rm_n_right = '<div class="media-container__nav--right">></div>'
2165
+ the_html_r = the_html_r.replace(
2166
+ assets_chunk,
2167
+ "%s %s" % (assets_chunk, remove_media),
2168
+ )
2169
+ the_html_r = the_html_r.replace(rm_n_left, "")
2170
+ the_html_r = the_html_r.replace(rm_n_right, "")
2171
+ the_html_r = the_html_r.replace("<ul>$", "$")
2172
+ the_html_r = the_html_r.replace("}<ul>", "}")
2173
+ the_html_r = the_html_r.replace(
2174
+ "<li>${val}</li>", "${val},&nbsp;&nbsp;"
2175
+ )
2176
+ the_html_r = the_html_r.replace(
2177
+ "<div>${value}</div>", "<span>${value}</span"
2178
+ )
2179
+ ph_link = '<a href="https://pypi.python.org/pypi/pytest-html">'
2180
+ sb_link = (
2181
+ '<a href="https://github.com/seleniumbase/SeleniumBase">'
2182
+ 'SeleniumBase</a>'
2183
+ )
2184
+ the_html_r = the_html_r.replace(
2185
+ ph_link, "%s and %s" % (sb_link, ph_link)
2186
+ )
2187
+ the_html_r = the_html_r.replace(
2188
+ "mediaName.innerText", "//mediaName.innerText"
2189
+ )
2190
+ the_html_r = the_html_r.replace(
2191
+ "counter.innerText", "//counter.innerText"
2192
+ )
2193
+ run_count = '<p class="run-count">'
2194
+ run_c_loc = the_html_r.find(run_count)
2195
+ rc_loc = the_html_r.find(" took ", run_c_loc)
2196
+ end_rc_loc = the_html_r.find(".</p>", rc_loc)
2197
+ run_time = "%.2f" % duration
2198
+ new_time = " ran in %s seconds" % run_time
2199
+ the_html_r = (
2200
+ the_html_r[:rc_loc] + new_time + the_html_r[end_rc_loc:]
2201
+ )
2202
+ with open(html_report_path, "w", encoding="utf-8") as f:
2203
+ f.write(the_html_r) # Finalize the HTML report
2136
2204
  # Done with "pytest_unconfigure" unless using the Dashboard
2137
2205
  return
2138
2206
  stamp = ""
@@ -2237,7 +2305,7 @@ def _perform_pytest_unconfigure_():
2237
2305
  elif "\\" in h_r_name and h_r_name.endswith(".html"):
2238
2306
  h_r_name = h_r_name.split("\\")[-1]
2239
2307
  the_html_r = the_html_r.replace(
2240
- "<h1>%s</h1>" % h_r_name,
2308
+ '<h1 id="title">%s</h1>' % h_r_name,
2241
2309
  sb_config._saved_dashboard_pie,
2242
2310
  )
2243
2311
  the_html_r = the_html_r.replace(
@@ -2247,6 +2315,47 @@ def _perform_pytest_unconfigure_():
2247
2315
  )
2248
2316
  if sb_config._dash_final_summary:
2249
2317
  the_html_r += sb_config._dash_final_summary
2318
+ assets_chunk = "if (assets.length === 1) {"
2319
+ remove_media = "container.classList.remove('media-container')"
2320
+ rm_n_left = '<div class="media-container__nav--left"><</div>'
2321
+ rm_n_right = '<div class="media-container__nav--right">></div>'
2322
+ the_html_r = the_html_r.replace(
2323
+ assets_chunk,
2324
+ "%s %s" % (assets_chunk, remove_media),
2325
+ )
2326
+ the_html_r = the_html_r.replace(rm_n_left, "")
2327
+ the_html_r = the_html_r.replace(rm_n_right, "")
2328
+ the_html_r = the_html_r.replace("<ul>$", "$")
2329
+ the_html_r = the_html_r.replace("}<ul>", "}")
2330
+ the_html_r = the_html_r.replace(
2331
+ "<li>${val}</li>", "${val},&nbsp;&nbsp;"
2332
+ )
2333
+ the_html_r = the_html_r.replace(
2334
+ "<div>${value}</div>", "<span>${value}</span"
2335
+ )
2336
+ ph_link = '<a href="https://pypi.python.org/pypi/pytest-html">'
2337
+ sb_link = (
2338
+ '<a href="https://github.com/seleniumbase/SeleniumBase">'
2339
+ 'SeleniumBase</a>'
2340
+ )
2341
+ the_html_r = the_html_r.replace(
2342
+ ph_link, "%s and %s" % (sb_link, ph_link)
2343
+ )
2344
+ the_html_r = the_html_r.replace(
2345
+ "mediaName.innerText", "//mediaName.innerText"
2346
+ )
2347
+ the_html_r = the_html_r.replace(
2348
+ "counter.innerText", "//counter.innerText"
2349
+ )
2350
+ run_count = '<p class="run-count">'
2351
+ run_c_loc = the_html_r.find(run_count)
2352
+ rc_loc = the_html_r.find(" took ", run_c_loc)
2353
+ end_rc_loc = the_html_r.find(".</p>", rc_loc)
2354
+ run_time = "%.2f" % duration
2355
+ new_time = " ran in %s seconds" % run_time
2356
+ the_html_r = (
2357
+ the_html_r[:rc_loc] + new_time + the_html_r[end_rc_loc:]
2358
+ )
2250
2359
  with open(html_report_path, "w", encoding="utf-8") as f:
2251
2360
  f.write(the_html_r) # Finalize the HTML report
2252
2361
  except KeyboardInterrupt:
@@ -2281,19 +2390,19 @@ def pytest_unconfigure(config):
2281
2390
  with open(dashboard_path, "w", encoding="utf-8") as f:
2282
2391
  f.write(sb_config._dash_html)
2283
2392
  # Dashboard Multithreaded
2284
- _perform_pytest_unconfigure_()
2393
+ _perform_pytest_unconfigure_(config)
2285
2394
  return
2286
2395
  else:
2287
2396
  # Dash Lock is missing
2288
- _perform_pytest_unconfigure_()
2397
+ _perform_pytest_unconfigure_(config)
2289
2398
  return
2290
2399
  with dash_lock:
2291
2400
  # Multi-threaded tests
2292
- _perform_pytest_unconfigure_()
2401
+ _perform_pytest_unconfigure_(config)
2293
2402
  return
2294
2403
  else:
2295
2404
  # Single-threaded tests
2296
- _perform_pytest_unconfigure_()
2405
+ _perform_pytest_unconfigure_(config)
2297
2406
  return
2298
2407
 
2299
2408
 
@@ -2442,7 +2551,7 @@ def pytest_runtest_makereport(item, call):
2442
2551
  return
2443
2552
  extra = getattr(report, "extra", [])
2444
2553
  if len(extra_report) > 1 and extra_report[1]["content"]:
2445
- report.extra = extra + extra_report
2554
+ report.extras = extra + extra_report
2446
2555
  if sb_config._dash_is_html_report:
2447
2556
  # If the Dashboard URL is the same as the HTML Report URL,
2448
2557
  # have the html report refresh back to a dashboard on update.
@@ -2450,4 +2559,4 @@ def pytest_runtest_makereport(item, call):
2450
2559
  '<script type="text/javascript" src="%s">'
2451
2560
  "</script>" % constants.Dashboard.LIVE_JS
2452
2561
  )
2453
- report.extra.append(pytest_html.extras.html(refresh_updates))
2562
+ report.extras.append(pytest_html.extras.html(refresh_updates))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.33.3
3
+ Version: 4.33.4
4
4
  Summary: A complete web automation framework for end-to-end testing.
5
5
  Home-page: https://github.com/seleniumbase/SeleniumBase
6
6
  Author: Michael Mintz
@@ -76,7 +76,7 @@ Requires-Dist: pynose>=1.5.3
76
76
  Requires-Dist: platformdirs>=4.3.6
77
77
  Requires-Dist: typing-extensions>=4.12.2
78
78
  Requires-Dist: sbvirtualdisplay>=1.3.0
79
- Requires-Dist: six>=1.16.0
79
+ Requires-Dist: six>=1.17.0
80
80
  Requires-Dist: parse>=1.20.2
81
81
  Requires-Dist: parse-type>=0.6.4
82
82
  Requires-Dist: colorama>=0.4.6
@@ -104,9 +104,8 @@ Requires-Dist: sortedcontainers==2.4.0
104
104
  Requires-Dist: execnet==2.1.1
105
105
  Requires-Dist: iniconfig==2.0.0
106
106
  Requires-Dist: pluggy==1.5.0
107
- Requires-Dist: py==1.11.0
108
107
  Requires-Dist: pytest==8.3.4
109
- Requires-Dist: pytest-html==2.0.1
108
+ Requires-Dist: pytest-html==4.1.1
110
109
  Requires-Dist: pytest-metadata==3.1.1
111
110
  Requires-Dist: pytest-ordering==0.6
112
111
  Requires-Dist: pytest-rerunfailures==14.0; python_version < "3.9"
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
3
3
  sbase/steps.py,sha256=_WvAjydKqZfTdnZW9LPKkRty-g-lfdUPmLqnZj6ulcs,43013
4
4
  seleniumbase/__init__.py,sha256=OtJh8nGKL4xtZpw8KPqmn7Q6R-86t4cWUDyVF5MbMTo,2398
5
5
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
6
- seleniumbase/__version__.py,sha256=b9CFhb2bSkJaSVPoCfXxUM8ff_Ki-2b4bCUxhDAADOc,46
6
+ seleniumbase/__version__.py,sha256=3t809dk9kzj5i3a3T_akotf68UIRPSs5JEuU9DUeAJs,46
7
7
  seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  seleniumbase/behave/behave_helper.py,sha256=elkl8P9eLulRAioLstE9baYNM9N_PHBmAOcajX-pH_Y,24198
9
9
  seleniumbase/behave/behave_sb.py,sha256=-hza7Nx2U41mSObYiPMi48v3JlPh3sJO3yzP0kqZ1Gk,59174
@@ -27,7 +27,7 @@ seleniumbase/console_scripts/sb_caseplans.py,sha256=qlmvjQ49bOBE1Q29fVmabimkVibC
27
27
  seleniumbase/console_scripts/sb_commander.py,sha256=yqoAK211OE6x5AWL2IAo8WojHtdkVj0AWqfoJ-ewmyo,13329
28
28
  seleniumbase/console_scripts/sb_install.py,sha256=y84Zk-rcp554kcF_g97Xwl0Rn38pyH9wO5OKHX879RI,45831
29
29
  seleniumbase/console_scripts/sb_mkchart.py,sha256=ep9g-9CSIwaOJKVxhB3xjRQpfsuApyN8-Dr129cNXwQ,10941
30
- seleniumbase/console_scripts/sb_mkdir.py,sha256=csqyWGEUdT2slLnQU3p9gnu5qE26TSVi_ZE3wttH_SQ,29778
30
+ seleniumbase/console_scripts/sb_mkdir.py,sha256=8BFbKc9ES35ruI2PlNnxADa8Ur3SMkvKu_tr85T0gyA,29783
31
31
  seleniumbase/console_scripts/sb_mkfile.py,sha256=OWYd4yFccmjrd-gNn1t1una-HDRU2_N2-r4Tg3nHsj0,17744
32
32
  seleniumbase/console_scripts/sb_mkpres.py,sha256=EWFRVacjYTX49y-fEiYTZacM9_01IxuuaO4nMjHrIGo,11015
33
33
  seleniumbase/console_scripts/sb_mkrec.py,sha256=PrizjTmyrROYPO0yDm-zQS3QSfsZNeAmcJKKUvfgLhc,11966
@@ -36,7 +36,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=tNy-bMDgwHJO3bZxMpmo9weSE8uhbH0C
36
36
  seleniumbase/console_scripts/sb_recorder.py,sha256=fnHb5-kh11Hit-E9Ha-e4QXzqLcZvtij6mb5qNd4B1Q,11032
37
37
  seleniumbase/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  seleniumbase/core/application_manager.py,sha256=e_0sjtI8cjY5BNyZj1QBR0j6_oCScxGmSXYEpcYwuZE,576
39
- seleniumbase/core/browser_launcher.py,sha256=ua9a6UfYWzKMFG-R4Jvrk1gkh4RPt7IOTGyp_siCYjQ,221101
39
+ seleniumbase/core/browser_launcher.py,sha256=1JmvPcIHSgpvI74_E9xoAEjZe79OIOWKhot6DUTfkn0,221519
40
40
  seleniumbase/core/capabilities_parser.py,sha256=meIS2uHapTCq2ldfNAToC7r0cKmZDRXuYNKExM1GHDY,6038
41
41
  seleniumbase/core/colored_traceback.py,sha256=DrRWfg7XEnKcgY59Xj7Jdk09H-XqHYBSUpB-DiZt6iY,2020
42
42
  seleniumbase/core/create_db_tables.sql,sha256=VWPtrdiW_HQ6yETHjqTu-VIrTwvd8I8o1NfBeaVSHpU,972
@@ -65,7 +65,7 @@ seleniumbase/extensions/disable_csp.zip,sha256=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
65
65
  seleniumbase/extensions/recorder.zip,sha256=OOyzF-Ize2cSRu1CqhzSAq5vusI9hqLLd2OIApUHesI,11918
66
66
  seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
67
67
  seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- seleniumbase/fixtures/base_case.py,sha256=qitMs026hzMdVlWxhN9WNvqR2W9h6q2Ofmorycq4I-Q,717445
68
+ seleniumbase/fixtures/base_case.py,sha256=v6DxzikLVRBdTlw3diVOKAQX1bFEwCJ0sRE2MZwwao8,717844
69
69
  seleniumbase/fixtures/constants.py,sha256=e1LppavlrAcI4XBJMq7u5j8SffaQ7SPQps1y0YvZYfY,13649
70
70
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
71
71
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
@@ -88,7 +88,7 @@ seleniumbase/plugins/basic_test_info.py,sha256=8ov6n417gPbqqvrlT4zrch7l2XcRt-GF2
88
88
  seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
89
89
  seleniumbase/plugins/driver_manager.py,sha256=s20s0pJYaNrG0WNwyIC04oUMRVFjtm6V_nS1-EvFm7g,34492
90
90
  seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
91
- seleniumbase/plugins/pytest_plugin.py,sha256=Up96HY6q3hcPo4LQoEcKqt1hm2OmY5GZz_nMXTqDSXQ,97185
91
+ seleniumbase/plugins/pytest_plugin.py,sha256=8vOTHVdX0WxfULcjPpbfwke8PR41U_RgsEslwtEyUBI,102238
92
92
  seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
93
93
  seleniumbase/plugins/sb_manager.py,sha256=qCf6RAkAfziLTGgiJvB3V416RxWoTbRLm9wc-KsB8g8,54419
94
94
  seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
@@ -135,9 +135,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.bat,sha256=Ftq-GrAKRYH2ssDPr
135
135
  seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443QFK8PryBpDmKn5Gy0s4o0vDSM,106
136
136
  seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
137
  seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
138
- seleniumbase-4.33.3.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
- seleniumbase-4.33.3.dist-info/METADATA,sha256=3YY_YaHTz2H48ee9t80yTk55JOJY7pIuZwoucYGEx3U,86554
140
- seleniumbase-4.33.3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
141
- seleniumbase-4.33.3.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.33.3.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.33.3.dist-info/RECORD,,
138
+ seleniumbase-4.33.4.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
+ seleniumbase-4.33.4.dist-info/METADATA,sha256=3WfFr62LrmiR3YrgRwprGZ_dM9zYVM04ak2N1NXOdzY,86528
140
+ seleniumbase-4.33.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
141
+ seleniumbase-4.33.4.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.33.4.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.33.4.dist-info/RECORD,,