summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSrinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి) <thatiparthysreenivas@gmail.com>2021-07-08 07:16:08 (GMT)
committerGitHub <noreply@github.com>2021-07-08 07:16:08 (GMT)
commit58248d94379b202ccce3e45b1d1830ca47683273 (patch)
treee96253619faf7e782cff59a7b1e9b9173ef22782
parentfed2fc4443235fa9669b73817827fd6da88e3417 (diff)
downloadcpython-58248d94379b202ccce3e45b1d1830ca47683273.zip
cpython-58248d94379b202ccce3e45b1d1830ca47683273.tar.gz
cpython-58248d94379b202ccce3e45b1d1830ca47683273.tar.bz2
bpo-41137: Use utf-8 encoding while reading .pdbrc files (GH-21263)
-rw-r--r--Doc/library/pdb.rst12
-rw-r--r--Doc/whatsnew/3.11.rst3
-rwxr-xr-xLib/pdb.py4
-rw-r--r--Lib/test/test_pdb.py34
-rw-r--r--Misc/NEWS.d/next/Library/2020-07-01-17-42-41.bpo-41137.AnqbP-.rst1
5 files changed, 48 insertions, 6 deletions
diff --git a/Doc/library/pdb.rst b/Doc/library/pdb.rst
index ed1e971..6d1dba1 100644
--- a/Doc/library/pdb.rst
+++ b/Doc/library/pdb.rst
@@ -241,10 +241,14 @@ middle of a quoted string.
triple: debugger; configuration; file
If a file :file:`.pdbrc` exists in the user's home directory or in the current
-directory, it is read in and executed as if it had been typed at the debugger
-prompt. This is particularly useful for aliases. If both files exist, the one
-in the home directory is read first and aliases defined there can be overridden
-by the local file.
+directory, it is read with ``'utf-8'`` encoding and executed as if it had been
+typed at the debugger prompt. This is particularly useful for aliases. If both
+files exist, the one in the home directory is read first and aliases defined there
+can be overridden by the local file.
+
+.. versionchanged:: 3.11
+ :file:`.pdbrc` is now read with ``'utf-8'`` encoding. Previously, it was read
+ with the system locale encoding.
.. versionchanged:: 3.2
:file:`.pdbrc` can now contain commands that continue debugging, such as
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index 5b51273..5b58ef6 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -151,6 +151,9 @@ Optimizations
(Contributed by Ken Jin and Mark Shannon in :issue:`26110`, based on ideas
implemented in PyPy.)
+* :file:`.pdbrc` is now read with ``'utf-8'`` encoding.
+
+
CPython bytecode changes
========================
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 1b4ff54..72ebd71 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -166,12 +166,12 @@ class Pdb(bdb.Bdb, cmd.Cmd):
self.rcLines = []
if readrc:
try:
- with open(os.path.expanduser('~/.pdbrc')) as rcFile:
+ with open(os.path.expanduser('~/.pdbrc'), encoding='utf-8') as rcFile:
self.rcLines.extend(rcFile)
except OSError:
pass
try:
- with open(".pdbrc") as rcFile:
+ with open(".pdbrc", encoding='utf-8') as rcFile:
self.rcLines.extend(rcFile)
except OSError:
pass
diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
index 63afb81..17634c7 100644
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -1627,6 +1627,40 @@ def bœr():
if save_home is not None:
os.environ["HOME"] = save_home
+ def test_read_pdbrc_with_ascii_encoding(self):
+ script = textwrap.dedent("""
+ import pdb; pdb.Pdb().set_trace()
+ print('hello')
+ """)
+ save_home = os.environ.pop('HOME', None)
+ try:
+ with os_helper.temp_cwd():
+ with open('.pdbrc', 'w', encoding='utf-8') as f:
+ f.write("Fran\u00E7ais")
+
+ with open('main.py', 'w', encoding='utf-8') as f:
+ f.write(script)
+
+ cmd = [sys.executable, 'main.py']
+ env = {'PYTHONIOENCODING': 'ascii'}
+ if sys.platform == 'win32':
+ env['PYTHONLEGACYWINDOWSSTDIO'] = 'non-empty-string'
+ proc = subprocess.Popen(
+ cmd,
+ stdout=subprocess.PIPE,
+ stdin=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ env={**os.environ, **env}
+ )
+ with proc:
+ stdout, stderr = proc.communicate(b'c\n')
+ self.assertIn(b"UnicodeEncodeError: \'ascii\' codec can\'t encode character "
+ b"\'\\xe7\' in position 21: ordinal not in range(128)", stderr)
+
+ finally:
+ if save_home is not None:
+ os.environ['HOME'] = save_home
+
def test_header(self):
stdout = StringIO()
header = 'Nobody expects... blah, blah, blah'
diff --git a/Misc/NEWS.d/next/Library/2020-07-01-17-42-41.bpo-41137.AnqbP-.rst b/Misc/NEWS.d/next/Library/2020-07-01-17-42-41.bpo-41137.AnqbP-.rst
new file mode 100644
index 0000000..f91b47d
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-07-01-17-42-41.bpo-41137.AnqbP-.rst
@@ -0,0 +1 @@
+Use utf-8 encoding while reading .pdbrc files. Patch by Srinivas Reddy Thatiparthy \ No newline at end of file