From c933b1a9ce51cc942e6a58270261d2bd6a5298f7 Mon Sep 17 00:00:00 2001 From: Hai Shi Date: Sun, 16 Aug 2020 02:18:36 +0800 Subject: [PATCH 1/4] remove encodings._aliases to search_function --- Lib/encodings/__init__.py | 3 ++- .../next/Library/2020-08-16-11-11-30.bpo-1635741.Q5Zrx3.rst | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2020-08-16-11-11-30.bpo-1635741.Q5Zrx3.rst diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py index ddd5afdcf2dab0..268e508e5429c6 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 @@ -69,6 +69,7 @@ def normalize_encoding(encoding): def search_function(encoding): + _aliases = aliases.aliases # Cache lookup entry = _cache.get(encoding, _unknown) if entry is not _unknown: 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..7f98ff8913e84b --- /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 Moving `encodings._aliases` to +:func:`encodings.search_function`. From 4dd90d4e48371c19ea89e5d242430d3220d34ebc Mon Sep 17 00:00:00 2001 From: Hai Shi Date: Sun, 16 Aug 2020 22:12:53 +0800 Subject: [PATCH 2/4] deleting the _aliases in encodings module --- Lib/encodings/__init__.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py index 268e508e5429c6..b4575d5a8d5385 100644 --- a/Lib/encodings/__init__.py +++ b/Lib/encodings/__init__.py @@ -69,7 +69,6 @@ def normalize_encoding(encoding): def search_function(encoding): - _aliases = aliases.aliases # Cache lookup entry = _cache.get(encoding, _unknown) if entry is not _unknown: @@ -83,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] @@ -146,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 From 1dc9733056205ef0794fe51ceadda24d196e8a4d Mon Sep 17 00:00:00 2001 From: Hai Shi Date: Sun, 16 Aug 2020 22:15:15 +0800 Subject: [PATCH 3/4] update news --- .../next/Library/2020-08-16-11-11-30.bpo-1635741.Q5Zrx3.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 7f98ff8913e84b..ce8543af09534c 100644 --- 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 @@ -1,2 +1,2 @@ -Fix refleaks of `encodings.aliases` by Moving `encodings._aliases` to +Fix refleaks of `encodings.aliases` by Using `encodings.aliases` directly in :func:`encodings.search_function`. From 9cc86b144ecabd0583d0e4f2be67b846aa84cd45 Mon Sep 17 00:00:00 2001 From: Hai Shi Date: Sun, 16 Aug 2020 22:53:05 +0800 Subject: [PATCH 4/4] Fix typo --- .../next/Library/2020-08-16-11-11-30.bpo-1635741.Q5Zrx3.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index ce8543af09534c..ef49d2580f3cb1 100644 --- 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 @@ -1,2 +1,2 @@ -Fix refleaks of `encodings.aliases` by Using `encodings.aliases` directly in +Fix refleaks of `encodings.aliases` by using `encodings.aliases` directly in :func:`encodings.search_function`.