Skip to content

Commit ca09f58

Browse files
authored
Merge pull request #1635 from seleniumbase/context-manager-improvements
SB Context Manager improvements
2 parents 023dbdb + 92fc976 commit ca09f58

File tree

11 files changed

+181
-61
lines changed

11 files changed

+181
-61
lines changed

examples/verify_undetected.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def test_browser_is_undetected(self):
1111
self.open("https://nowsecure.nl/#relax")
1212
try:
1313
self.assert_text("OH YEAH, you passed!", "h1", timeout=6.75)
14-
self.post_message("Selenium wasn't detected!", duration=1.6)
14+
self.post_message("Selenium wasn't detected!", duration=2.8)
1515
self._print("\n Success! Website did not detect Selenium! ")
1616
except Exception:
1717
self.fail('Selenium was detected! Try using: "pytest --uc"')

mkdocs_build/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ importlib-metadata==5.1.0
2020
bleach==5.0.1
2121
jsmin==3.0.1
2222
lunr==0.6.2
23-
nltk==3.7
23+
nltk==3.8
2424
tornado==6.2
2525
watchdog==2.2.0
2626
cairocffi==1.4.0

requirements.txt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ pip>=20.3.4;python_version<"3.6"
22
pip>=21.3.1;python_version>="3.6" and python_version<"3.7"
33
pip>=22.3.1;python_version>="3.7"
44
packaging>=20.9;python_version<"3.6"
5-
packaging>=21.3;python_version>="3.6"
5+
packaging>=21.3;python_version>="3.6" and python_version<"3.7"
6+
packaging>=22.0;python_version>="3.7"
67
setuptools>=44.1.1;python_version<"3.6"
78
setuptools>=59.6.0;python_version>="3.6" and python_version<"3.7"
89
setuptools>=65.6.3;python_version>="3.7"
@@ -15,7 +16,7 @@ attrs>=21.4.0;python_version<"3.6"
1516
attrs>=22.1.0;python_version>="3.6"
1617
PyYAML>=6.0;python_version>="3.6"
1718
certifi>=2021.10.8;python_version<"3.6"
18-
certifi>=2022.9.24;python_version>="3.6"
19+
certifi>=2022.12.7;python_version>="3.6"
1920
filelock>=3.2.1;python_version<"3.6"
2021
filelock>=3.4.1;python_version>="3.6" and python_version<"3.7"
2122
filelock>=3.8.2;python_version>="3.7"
@@ -98,7 +99,7 @@ pygments==2.13.0;python_version>="3.6"
9899
pyreadline==2.1;platform_system=="Windows" and python_version<"3.6"
99100
pyreadline3==3.4.1;platform_system=="Windows" and python_version>="3.6"
100101
tabcompleter==1.1.0
101-
pdbp==1.2.5
102+
pdbp==1.2.6
102103
colorama==0.4.6;python_version<"3.6"
103104
colorama==0.4.5;python_version>="3.6" and python_version<"3.7"
104105
colorama==0.4.6;python_version>="3.7"
@@ -107,11 +108,12 @@ importlib-metadata==2.1.3;python_version<"3.6"
107108
importlib-metadata==4.2.0;python_version>="3.6" and python_version<"3.8"
108109
pycparser==2.21
109110
pyotp==2.3.0;python_version<"3.6"
110-
pyotp==2.7.0;python_version>="3.6"
111+
pyotp==2.7.0;python_version>="3.6" and python_version<"3.7"
112+
pyotp==2.8.0;python_version>="3.7"
111113
cffi==1.15.1
112114
typing-extensions==3.10.0.2;python_version<"3.6"
113115
typing-extensions==4.1.1;python_version>="3.6" and python_version<"3.7"
114-
typing-extensions==4.2.0;python_version>="3.7" and python_version<"3.9"
116+
typing-extensions==4.4.0;python_version>="3.7" and python_version<"3.9"
115117
rich==12.6.0;python_version>="3.6" and python_version<"4.0"
116118

117119
# --- Testing Requirements --- #
@@ -123,10 +125,13 @@ coverage==6.5.0;python_version>="3.7"
123125
pytest-cov==2.12.1;python_version<"3.6"
124126
pytest-cov==4.0.0;python_version>="3.6"
125127
flake8==3.7.9;python_version<"3.6"
126-
flake8==5.0.4;python_version>="3.6"
128+
flake8==5.0.4;python_version>="3.6" and python_version<"3.9"
129+
flake8==6.0.0;python_version>="3.9"
127130
mccabe==0.6.1;python_version<"3.6"
128131
mccabe==0.7.0;python_version>="3.6"
129132
pyflakes==2.1.1;python_version<"3.6"
130-
pyflakes==2.5.0;python_version>="3.6"
133+
pyflakes==2.5.0;python_version>="3.6" and python_version<"3.9"
134+
pyflakes==3.0.1;python_version>="3.9"
131135
pycodestyle==2.5.0;python_version<"3.6"
132-
pycodestyle==2.9.1;python_version>="3.6"
136+
pycodestyle==2.9.1;python_version>="3.6" and python_version<"3.9"
137+
pycodestyle==2.10.0;python_version>="3.9"

seleniumbase/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.9.7"
2+
__version__ = "4.9.8"
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import sys
2+
3+
4+
def add_hook(always=False, style="default", debug=False):
5+
import os
6+
7+
if os.environ.get("NO_COLOR", ""):
8+
return # https://no-color.org
9+
isatty = getattr(sys.stderr, "isatty", lambda: False)
10+
if always or isatty():
11+
colorizer = Colorizer(style, debug)
12+
sys.excepthook = colorizer.colorize_traceback
13+
14+
15+
class Colorizer(object):
16+
def __init__(self, style, debug=False):
17+
self.style = style
18+
self.debug = debug
19+
20+
def colorize_traceback(self, type, value, tb):
21+
import traceback
22+
import pygments.lexers
23+
24+
tb_text = "".join(traceback.format_exception(type, value, tb))
25+
lexer_name = "pytb" if sys.version_info < (3, ) else "py3tb"
26+
lexer = pygments.lexers.get_lexer_by_name(lexer_name)
27+
tb_colored = pygments.highlight(tb_text, lexer, self.formatter)
28+
self.stream.write(tb_colored)
29+
30+
@property
31+
def formatter(self):
32+
from pygments.formatters import get_formatter_by_name
33+
import pygments.util
34+
35+
colors = _get_term_color_support()
36+
if self.debug:
37+
sys.stderr.write("Detected support for %s colors\n" % colors)
38+
if colors == 256:
39+
fmt_options = {"style": self.style}
40+
elif self.style in ("light", "dark"):
41+
fmt_options = {"bg": self.style}
42+
else:
43+
fmt_options = {"bg": "dark"}
44+
fmt_alias = "terminal256" if colors == 256 else "terminal"
45+
try:
46+
return get_formatter_by_name(fmt_alias, **fmt_options)
47+
except pygments.util.ClassNotFound as ex:
48+
if self.debug:
49+
sys.stderr.write(str(ex) + "\n")
50+
return get_formatter_by_name(fmt_alias)
51+
52+
@property
53+
def stream(self):
54+
try:
55+
import colorama
56+
except ImportError:
57+
return sys.stderr
58+
return colorama.AnsiToWin32(sys.stderr)
59+
60+
61+
def _get_term_color_support():
62+
try:
63+
import curses
64+
except ImportError:
65+
return 16
66+
curses.setupterm()
67+
return curses.tigetnum("colors")

seleniumbase/core/log_helper.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
from seleniumbase.config import settings
99
from seleniumbase.fixtures import constants
1010

11+
python3_11_or_newer = False
12+
if sys.version_info >= (3, 11):
13+
python3_11_or_newer = True
14+
1115

1216
def log_screenshot(test_logpath, driver, screenshot=None, get=False):
1317
screenshot_name = settings.SCREENSHOT_NAME
@@ -75,7 +79,7 @@ def get_master_time():
7579

7680

7781
def get_browser_version(driver):
78-
if sys.version_info >= (3, 11) and hasattr(sb_config, "_browser_version"):
82+
if python3_11_or_newer and hasattr(sb_config, "_browser_version"):
7983
return sb_config._browser_version
8084
driver_capabilities = driver.capabilities
8185
if "version" in driver_capabilities:

0 commit comments

Comments
 (0)