changeset: 91625:74c7a186ffdd branch: 3.4 parent: 91623:220d5fdbe22e user: Zachary Ware date: Thu Jul 10 11:18:00 2014 -0500 files: Lib/pydoc.py Lib/test/test_pydoc.py Misc/NEWS description: Issue #21942: Fixed source file viewing in pydoc's server mode on Windows. diff -r 220d5fdbe22e -r 74c7a186ffdd Lib/pydoc.py --- a/Lib/pydoc.py Thu Jul 10 01:16:49 2014 -0400 +++ b/Lib/pydoc.py Thu Jul 10 11:18:00 2014 -0500 @@ -64,6 +64,7 @@ import sys import time import tokenize +import urllib.parse import warnings from collections import deque from reprlib import Repr @@ -648,10 +649,7 @@ head = '%s' % linkedname try: path = inspect.getabsfile(object) - url = path - if sys.platform == 'win32': - import nturl2path - url = nturl2path.pathname2url(path) + url = urllib.parse.quote(path) filelink = self.filelink(url, path) except TypeError: filelink = '(built-in)' @@ -2353,7 +2351,7 @@ def html_getfile(path): """Get and display a source file listing safely.""" - path = path.replace('%20', ' ') + path = urllib.parse.unquote(path) with tokenize.open(path) as fp: lines = html.escape(fp.read()) body = '
%s
' % lines diff -r 220d5fdbe22e -r 74c7a186ffdd Lib/test/test_pydoc.py --- a/Lib/test/test_pydoc.py Thu Jul 10 01:16:49 2014 -0400 +++ b/Lib/test/test_pydoc.py Thu Jul 10 11:18:00 2014 -0500 @@ -14,6 +14,7 @@ import time import types import unittest +import urllib.parse import xml.etree import textwrap from io import StringIO @@ -406,11 +407,7 @@ def test_html_doc(self): result, doc_loc = get_pydoc_html(pydoc_mod) mod_file = inspect.getabsfile(pydoc_mod) - if sys.platform == 'win32': - import nturl2path - mod_url = nturl2path.pathname2url(mod_file) - else: - mod_url = mod_file + mod_url = urllib.parse.quote(mod_file) expected_html = expected_html_pattern % ( (mod_url, mod_file, doc_loc) + expected_html_data_docstrings) diff -r 220d5fdbe22e -r 74c7a186ffdd Misc/NEWS --- a/Misc/NEWS Thu Jul 10 01:16:49 2014 -0400 +++ b/Misc/NEWS Thu Jul 10 11:18:00 2014 -0500 @@ -27,6 +27,8 @@ Library ------- +- Issue #21942: Fixed source file viewing in pydoc's server mode on Windows. + - Issue #11259: asynchat.async_chat().set_terminator() now raises a ValueError if the number of received bytes is negative.