ipywidgets
ipywidgets copied to clipboard
Issues with Python escaping in test_traits.py
Description
The test module test_traits.py has two issues with Python escaping:
test_traits.py, lines 60 and 61:
r'var(--my-color-\\1234)', # CSS variable escaped hex character
'var(--my-color-\.)', # CSS variable with escaped characters
Line 60 probably has the issue that \\ in a raw string results in two \ characters. I don't think this is what is intended here. The comment suggests the intention is to specify an escaped hex character, which would be:
r'var(--my-color-\x1234)', # CSS variable escaped hex character
Line 61 has the issue that \ in a non-raw string is interpreted as a Python escape, along with the following character .. This is obviously not a valid Python escape character, and Python issues a SyntaxWarning:
$ python
Python 3.12.7 (main, Oct 1 2024, 02:05:46) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> s = 'var(--my-color-\.)'
<stdin>:1: SyntaxWarning: invalid escape sequence '\.'
I don't think this is what is intended here, but I'm not sure what the solution would be. Maybe just specifying this as a raw string:
r'var(--my-color-\.)', # CSS variable with escaped characters
Reproduce
For reproducing the SyntaxWarning, see above.
I found this when checking for missing dependencies using the 'pip-missing-reqs' command from the 'pip-check-reqs' package:
- Create and activate a fresh Python virtual environment
mkvirtualenv ipy312 -p python3.12
- Create a dependencies file:
cat >deps.txt << EOF
ipywidgets
pip-check-reqs
jsonschema
pytest
traitlets
ipython
comm
ipykernel
EOF
- Install packages:
pip install -r deps.txt
- Check for missing dependencies:
pip-missing-reqs $(python -c "import ipywidgets as m, os; dm=os.path.dirname(m.__file__); print(dm)") --requirements-file=deps.txt
...../site-packages/ipywidgets/widgets/tests/test_traits.py:61: SyntaxWarning: invalid escape sequence '\.'
'var(--my-color-\.)', # CSS variable with escaped characters
Expected behavior
No SyntaxWarning
Context
- ipywidgets version: 8.1.5
- Operating System and version: macOS 14.7.2
- Browser and version: N/A
Troubleshoot Output
(ipywidgets312) maiera-mbp-3:ipywidgets maiera$ jupyter troubleshoot $PATH: /Users/maiera/virtualenvs/ipywidgets312/bin /Users/maiera/local/bin /opt/homebrew/bin /opt/homebrew/sbin /usr/local/bin /System/Cryptexes/App/usr/bin /usr/bin /bin /usr/sbin /sbin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/binsys.path: /Users/maiera/virtualenvs/ipywidgets312/bin /opt/homebrew/Cellar/[email protected]/3.12.7_1/Frameworks/Python.framework/Versions/3.12/lib/python312.zip /opt/homebrew/Cellar/[email protected]/3.12.7_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12 /opt/homebrew/Cellar/[email protected]/3.12.7_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/lib-dynload /Users/maiera/virtualenvs/ipywidgets312/lib/python3.12/site-packages
sys.executable: /Users/maiera/virtualenvs/ipywidgets312/bin/python
sys.version: 3.12.7 (main, Oct 1 2024, 02:05:46) [Clang 15.0.0 (clang-1500.3.9.4)]
platform.platform(): macOS-14.7.2-arm64-arm-64bit
which -a jupyter: /Users/maiera/virtualenvs/ipywidgets312/bin/jupyter
pip list: Package Version ------------------------- ----------- appnope 0.1.4 asttokens 3.0.0 attrs 25.1.0 comm 0.2.2 debugpy 1.8.12 decorator 5.1.1 executing 2.2.0 iniconfig 2.0.0 ipykernel 6.29.5 ipython 8.31.0 ipywidgets 8.1.5 jedi 0.19.2 jsonschema 4.23.0 jsonschema-specifications 2024.10.1 jupyter_client 8.6.3 jupyter_core 5.7.2 jupyterlab_widgets 3.0.13 matplotlib-inline 0.1.7 nest-asyncio 1.6.0 packaging 24.2 parso 0.8.4 pexpect 4.9.0 pip 24.3.1 pip-check-reqs 2.5.3 platformdirs 4.3.6 pluggy 1.5.0 prompt_toolkit 3.0.50 psutil 6.1.1 ptyprocess 0.7.0 pure_eval 0.2.3 Pygments 2.19.1 pytest 8.3.4 python-dateutil 2.9.0.post0 pyzmq 26.2.0 referencing 0.36.2 rpds-py 0.22.3 six 1.17.0 stack-data 0.6.3 tornado 6.4.2 traitlets 5.14.3 typing_extensions 4.12.2 wcwidth 0.2.13 widgetsnbextension 4.0.13
Command Line Output
N/A
Browser Output
N/A
If using JupyterLab
- JupyterLab version: N/A
Installed Labextensions
N/A