]> granicus.if.org Git - python/commitdiff
Issue #21942: Fixed source file viewing in pydoc's server mode on Windows.
authorZachary Ware <zachary.ware@gmail.com>
Thu, 10 Jul 2014 16:18:00 +0000 (11:18 -0500)
committerZachary Ware <zachary.ware@gmail.com>
Thu, 10 Jul 2014 16:18:00 +0000 (11:18 -0500)
Lib/pydoc.py
Lib/test/test_pydoc.py
Misc/NEWS

index cc43684f191442f5f31d36e45b2caeaa02cadf0b..37abf67063bbcbafbd06a831b4bf53b59598ecea 100755 (executable)
@@ -64,6 +64,7 @@ import re
 import sys
 import time
 import tokenize
+import urllib.parse
 import warnings
 from collections import deque
 from reprlib import Repr
@@ -648,10 +649,7 @@ class HTMLDoc(Doc):
         head = '<big><big><strong>%s</strong></big></big>' % 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 _url_handler(url, content_type="text/html"):
 
     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 = '<pre>%s</pre>' % lines
index 3bce66e82867c742c7d113336ef26611ff1534a4..a513fa6c23feab892ca45fbc343ef6306ba6ad67 100644 (file)
@@ -14,6 +14,7 @@ import test.support
 import time
 import types
 import unittest
+import urllib.parse
 import xml.etree
 import textwrap
 from io import StringIO
@@ -406,11 +407,7 @@ class PydocDocTest(unittest.TestCase):
     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)
index 907e1401a40d31d20a192c725d7919b60bad5ed8..e5869d921499cf905f1a8b29c8901c84e305f3d8 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -27,6 +27,8 @@ Core and Builtins
 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.