seleniumbase 4.33.3__py3-none-any.whl → 4.33.4__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,,