You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test added in gh-104067 has an fstring with an invalid escape sequence #105784
In response to #104049, a fix and a new test were added in #104067 and related PRs. The test in test_httpserver.py uses an fstring with an escape sequence, but does not use r:
f'listing for {self.base_url}/\?x=123'
I think the code (in two places) should be include an r: fr'listing for ...
On PyPy this is causing the test___all__.py test to fail, since it emits a warning when compiling the *.py to *.pyc. I am not sure why CPython is not seeing a similar problem. Perhaps compileall is run first? Or the warning filter captures the compilation as well as the import?
Your environment
CPython versions tested on: PyPy3.9 HEAD using stdlib 3.9.17
@mattip CPython does not issue this warning SyntaxWarning: invalid escape sequence '\?' until 3.12, though only for normal strings. What warning is PyPy3.9 emitting? (Note: try to minimize reproducing examples, as I did below ;-)
@pablogsal In 3.12 and 3.13, f-strings are not warning about invalid escapes that get warnings in real strings. This seems like a bug.
Security patch #104067 was backported to 3.7, which is why it affects PyPy3.9.
@ethanfurman@JelleZijlstra Do the tests added in #104067 require invalid escapes without an 'r' prefix? Or could the escape be changed or the 'r' added?
Thanks. I see that was backported to 3.12. I am curious why not backport it to all versions that contain the test added in #104067 (maybe excepting ones that will no longer be released)? People running the test without precompiling pyc files will see a DeprecationWarning, no?
Edit: GAA, I didn't actually look at the fix: #105800 is not what I expected.
Try as I might, I cannot get CPython3.9 to emit a DeprecationWarning in the test_httpservers.py test. So I will add the r in the PyPy port of the stdlib tests. I am not sure why the test does not emit the warning on CPython3.9, since the f-string needs an r if run outside the test, but 🤷
$ python3.9 -Walways -c "abc = 'abc'; print(f'listing for {abc}/\?x=123')"
<string>:1: DeprecationWarning: invalid escape sequence \?
listing for abc/\?x=123
Activity
terryjreedy commentedon Jun 14, 2023
@mattip CPython does not issue this warning
SyntaxWarning: invalid escape sequence '\?'until 3.12, though only for normal strings. What warning is PyPy3.9 emitting? (Note: try to minimize reproducing examples, as I did below ;-)@pablogsal In 3.12 and 3.13, f-strings are not warning about invalid escapes that get warnings in real strings. This seems like a bug.
mattip commentedon Jun 14, 2023
On python3.9.17 from Ubuntu, I get this
mattip commentedon Jun 14, 2023
Adding an
rmakes it run without a warningterryjreedy commentedon Jun 14, 2023
Security patch #104067 was backported to 3.7, which is why it affects PyPy3.9.
@ethanfurman @JelleZijlstra Do the tests added in #104067 require invalid escapes without an 'r' prefix? Or could the escape be changed or the 'r' added?
pablogsal commentedon Jun 15, 2023
Fixed!
mattip commentedon Jun 15, 2023
Thanks. I see that was backported to 3.12. I am curious why not backport it to all versions that contain the test added in #104067 (maybe excepting ones that will no longer be released)? People running the test without precompiling pyc files will see a DeprecationWarning, no?Edit: GAA, I didn't actually look at the fix: #105800 is not what I expected.
mattip commentedon Jun 15, 2023
Try as I might, I cannot get CPython3.9 to emit a
DeprecationWarningin thetest_httpservers.pytest. So I will add therin the PyPy port of the stdlib tests. I am not sure why the test does not emit the warning on CPython3.9, since the f-string needs anrif run outside the test, but 🤷pablogsal commentedon Jun 15, 2023
Relevant: #105821
lysnikolaou commentedon Jun 20, 2023
This can be closed. @mattip An
rprefix has been added in #105822.lazka commentedon Jun 23, 2023
Here it only warned/failed when bytecompile was needed, so if there wasn't a .pyc file already for test_httpservers.