summaryrefslogtreecommitdiffstats
path: root/Lib/pydoc.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-05-05 17:12:19 (GMT)
committerGitHub <noreply@github.com>2018-05-05 17:12:19 (GMT)
commit0ba812b1bee65a6cad16f153a7f5074bc271e0e5 (patch)
treeeb9f9beb08aac9418df72d388ec31736fe6cd06a /Lib/pydoc.py
parenteb5abdc70815c4207829551ede4a7dc302d56c19 (diff)
downloadcpython-0ba812b1bee65a6cad16f153a7f5074bc271e0e5.zip
cpython-0ba812b1bee65a6cad16f153a7f5074bc271e0e5.tar.gz
cpython-0ba812b1bee65a6cad16f153a7f5074bc271e0e5.tar.bz2
bpo-33422: Fix quotation marks getting deleted when looking up byte/string literals on pydoc. (GH-6701)
Also update the list of string prefixes. (cherry picked from commit b2043bbe6034b53f5ad337887f4741b74b70b00d) Co-authored-by: Andrés Delfino <adelfino@gmail.com>
Diffstat (limited to 'Lib/pydoc.py')
-rw-r--r--Lib/pydoc.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index 34e2fab..40ee760 100644
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -1716,8 +1716,9 @@ class Helper:
}
# Either add symbols to this dictionary or to the symbols dictionary
# directly: Whichever is easier. They are merged later.
+ _strprefixes = [p + q for p in ('b', 'f', 'r', 'u') for q in ("'", '"')]
_symbols_inverse = {
- 'STRINGS' : ("'", "'''", "r'", "b'", '"""', '"', 'r"', 'b"'),
+ 'STRINGS' : ("'", "'''", '"', '"""', *_strprefixes),
'OPERATORS' : ('+', '-', '*', '**', '/', '//', '%', '<<', '>>', '&',
'|', '^', '~', '<', '>', '<=', '>=', '==', '!=', '<>'),
'COMPARISON' : ('<', '>', '<=', '>=', '==', '!=', '<>'),
@@ -1874,7 +1875,13 @@ has the same effect as typing a particular string at the help> prompt.
if not request: break
except (KeyboardInterrupt, EOFError):
break
- request = replace(request, '"', '', "'", '').strip()
+ request = request.strip()
+
+ # Make sure significant trailing quoting marks of literals don't
+ # get deleted while cleaning input
+ if (len(request) > 2 and request[0] == request[-1] in ("'", '"')
+ and request[0] not in request[1:-1]):
+ request = request[1:-1]
if request.lower() in ('q', 'quit'): break
if request == 'help':
self.intro()