bpo-43733: netrc try to use UTF-8 before using locale encoding. (GH-25781)

This commit is contained in:
Inada Naoki 2021-05-02 14:01:02 +09:00 committed by GitHub
parent 49b26fa517
commit fd0bc7e7f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 2 deletions

View file

@ -38,6 +38,10 @@ the Unix :program:`ftp` program and other FTP clients.
:func:`os.path.expanduser` is used to find the location of the
:file:`.netrc` file when *file* is not passed as argument.
.. versionchanged:: 3.10
:class:`netrc` try UTF-8 encoding before using locale specific
encoding.
.. exception:: NetrcParseError

View file

@ -26,8 +26,12 @@ def __init__(self, file=None):
file = os.path.join(os.path.expanduser("~"), ".netrc")
self.hosts = {}
self.macros = {}
with open(file) as fp:
self._parse(file, fp, default_netrc)
try:
with open(file, encoding="utf-8") as fp:
self._parse(file, fp, default_netrc)
except UnicodeDecodeError:
with open(file, encoding="locale") as fp:
self._parse(file, fp, default_netrc)
def _parse(self, file, fp, default_netrc):
lexer = shlex.shlex(fp)

View file

@ -0,0 +1,2 @@
Change :class:`netrc.netrc` to use UTF-8 encoding before using locale
encoding.