diff options
author | Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి) <thatiparthysreenivas@gmail.com> | 2021-07-08 07:16:08 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-08 07:16:08 (GMT) |
commit | 58248d94379b202ccce3e45b1d1830ca47683273 (patch) | |
tree | e96253619faf7e782cff59a7b1e9b9173ef22782 | |
parent | fed2fc4443235fa9669b73817827fd6da88e3417 (diff) | |
download | cpython-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.rst | 12 | ||||
-rw-r--r-- | Doc/whatsnew/3.11.rst | 3 | ||||
-rwxr-xr-x | Lib/pdb.py | 4 | ||||
-rw-r--r-- | Lib/test/test_pdb.py | 34 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2020-07-01-17-42-41.bpo-41137.AnqbP-.rst | 1 |
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 ======================== @@ -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 |