ipywidgets icon indicating copy to clipboard operation
ipywidgets copied to clipboard

Issues with Python escaping in test_traits.py

Open andy-maier opened this issue 9 months ago • 0 comments
trafficstars

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:

  1. Create and activate a fresh Python virtual environment
mkvirtualenv ipy312 -p python3.12
  1. Create a dependencies file:
cat >deps.txt << EOF
ipywidgets
pip-check-reqs
jsonschema
pytest
traitlets
ipython
comm
ipykernel
EOF
  1. Install packages:
pip install -r deps.txt
  1. 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/bin

sys.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

andy-maier avatar Jan 27 '25 07:01 andy-maier