FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

[3.13] gh-69371: Fix pydoc for modules whose path contains undecodable bytes (GH-155239) by miss-islington · Pull Request #156610 · python/cpython · GitHub

Repository navigation

[3.13] gh-69371: Fix pydoc for modules whose path contains undecodable bytes (GH-155239) - #156610

Merged
serhiy-storchaka merged 2 commits into
python:3.13from
miss-islington:backport-c8ca336-3.13
Sep 13, 2026
Merged

serhiy-storchaka merged 2 commits into
python:3.13from
miss-islington:backport-c8ca336-3.13

Conversation

miss-islington commented Aug 29, 2026 •
edited by bedevere-app Bot
Loading

Copy link
Copy Markdown
Contributor

"python -m pydoc -w" and the pydoc HTTP server failed with
UnicodeEncodeError. The file URL is now created with
urllib.request.pathname2url(), which percent-encodes the path using the
filesystem encoding, and characters unencodable in the generated UTF-8
page are escaped with backslashes.
(cherry picked from commit c8ca336)

Co-authored-by: Serhiy Storchaka storchaka@gmail.com
Co-authored-by: Claude Opus 5 (1M context) noreply@anthropic.com

… bytes (pythonGH-155239)

"python -m pydoc -w" and the pydoc HTTP server failed with
UnicodeEncodeError.  The file URL is now created with
urllib.request.pathname2url(), which percent-encodes the path using the
filesystem encoding, and characters unencodable in the generated UTF-8
page are escaped with backslashes.
(cherry picked from commit c8ca336)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

hugovk commented Aug 30, 2026

Copy link
Copy Markdown
Member

Windows is failing with UnicodeEncodeError:

======================================================================
ERROR: test_html_doc_undecodable_path (test.test_pydoc.test_pydoc.PydocDocTest.test_html_doc_undecodable_path)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\a\cpython\cpython\Lib\test\test_pydoc\test_pydoc.py", line 1022, in test_html_doc_undecodable_path
    doc = pydoc.HTMLDoc().docmodule(mod)
  File "D:\a\cpython\cpython\Lib\pydoc.py", line 849, in docmodule
    url = urllib.request.pathname2url(path)
  File "D:\a\cpython\cpython\Lib\nturl2path.py", line 68, in pathname2url
    tail = urllib.parse.quote(comp[1])
  File "D:\a\cpython\cpython\Lib\urllib\parse.py", line 923, in quote
    string = string.encode(encoding, errors)
UnicodeEncodeError: 'utf-8' codec can't encode character '\udd00' in position 65: surrogates not allowed

Copy link
Copy Markdown
Member

CC @serhiy-storchaka (see Hugo's comment above).

Copy link
Copy Markdown
Member

This is a little complicated. pathname2url() was fixed in #85168 only on Posix. Then #125866 deprecated nturl2path and stopped using nturl2path.pathname2url() in favor of general implementation in 3.14. This is why the test was passed on 3.14+.

Applying the similar fix on nturl2path.pathname2url() and backporting it will fix the test.

serhiy-storchaka enabled auto-merge (squash) September 13, 2026 13:21

Copy link
Copy Markdown
Member

nturl2path.pathname2url() was fixed in #156713.

serhiy-storchaka merged commit 50f66bf into python:3.13 Sep 13, 2026
77 of 79 checks passed
miss-islington deleted the backport-c8ca336-3.13 branch September 13, 2026 14:18
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type-bug An unexpected behavior, bug, or error

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants


Back | FazBrowse Home | New Git URL