Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • pypy pypy
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 674
    • Issues 674
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 13
    • Merge requests 13
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • PyPyPyPy
  • pypypypy
  • Issues
  • #3652
Closed
Open
Issue created Jan 27, 2022 by Michał Górny@mgornyDeveloper

pypy3.9: regression in raw-unicode-escape handling of stray backslashes

Consider the following sample:

print(b'[:/?#[\\]@]'.decode('raw-unicode-escape'))

In CPython 3.9 and PyPy 3.8, it yields:

[:/?#[\]@]

In PyPy 3.9, it causes:

UnicodeDecodeError: 'rawunicodeescape' codec can't decode bytes in position 6-7: truncated \UXXXXXXXX escape

Unfortunately this breaks importing rfc3987 package, e.g.:

$ pip install rfc3987
$ pypy3 -c 'import rfc3987'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/venv/lib/pypy3.9/site-packages/rfc3987.py", line 357, in <module>
    upatterns_no_names = dict((k, _interpret_unicode_escapes(v)) for k,v
  File "/tmp/venv/lib/pypy3.9/site-packages/rfc3987.py", line 357, in <genexpr>
    upatterns_no_names = dict((k, _interpret_unicode_escapes(v)) for k,v
  File "/tmp/venv/lib/pypy3.9/site-packages/rfc3987.py", line 351, in _interpret_unicode_escapes
    return string.encode('ascii').decode('raw-unicode-escape')
UnicodeDecodeError: 'rawunicodeescape' codec can't decode bytes in position 6-7: truncated \UXXXXXXXX escape

Don't ask me why they do such crazy stuff…

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking