diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py index ddd5afdcf2dab0..b4575d5a8d5385 100644 --- a/Lib/encodings/__init__.py +++ b/Lib/encodings/__init__.py @@ -35,7 +35,7 @@ _cache = {} _unknown = '--unknown--' _import_tail = ['*'] -_aliases = aliases.aliases + class CodecRegistryError(LookupError, SystemError): pass @@ -82,8 +82,8 @@ def search_function(encoding): # try in the encodings package, then at top-level. # norm_encoding = normalize_encoding(encoding) - aliased_encoding = _aliases.get(norm_encoding) or \ - _aliases.get(norm_encoding.replace('.', '_')) + aliased_encoding = aliases.aliases.get(norm_encoding) or \ + aliases.aliases.get(norm_encoding.replace('.', '_')) if aliased_encoding is not None: modnames = [aliased_encoding, norm_encoding] @@ -145,8 +145,8 @@ def search_function(encoding): pass else: for alias in codecaliases: - if alias not in _aliases: - _aliases[alias] = modname + if alias not in aliases.aliases: + aliases.aliases[alias] = modname # Return the registry entry return entry diff --git a/Misc/NEWS.d/next/Library/2020-08-16-11-11-30.bpo-1635741.Q5Zrx3.rst b/Misc/NEWS.d/next/Library/2020-08-16-11-11-30.bpo-1635741.Q5Zrx3.rst new file mode 100644 index 00000000000000..ef49d2580f3cb1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-08-16-11-11-30.bpo-1635741.Q5Zrx3.rst @@ -0,0 +1,2 @@ +Fix refleaks of `encodings.aliases` by using `encodings.aliases` directly in +:func:`encodings.search_function`.