mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
bpo-46565: del loop vars that are leaking into module namespaces (GH-30993)
This commit is contained in:
parent
6394e981ad
commit
0cbdd21311
14 changed files with 21 additions and 8 deletions
|
|
@ -249,3 +249,4 @@
|
||||||
|
|
||||||
for excname in PYTHON3_IMPORTERROR_EXCEPTIONS:
|
for excname in PYTHON3_IMPORTERROR_EXCEPTIONS:
|
||||||
REVERSE_NAME_MAPPING[('builtins', excname)] = ('exceptions', 'ImportError')
|
REVERSE_NAME_MAPPING[('builtins', excname)] = ('exceptions', 'ImportError')
|
||||||
|
del excname
|
||||||
|
|
|
||||||
|
|
@ -72,12 +72,14 @@ def get_non_text_content(msg):
|
||||||
return msg.get_payload(decode=True)
|
return msg.get_payload(decode=True)
|
||||||
for maintype in 'audio image video application'.split():
|
for maintype in 'audio image video application'.split():
|
||||||
raw_data_manager.add_get_handler(maintype, get_non_text_content)
|
raw_data_manager.add_get_handler(maintype, get_non_text_content)
|
||||||
|
del maintype
|
||||||
|
|
||||||
|
|
||||||
def get_message_content(msg):
|
def get_message_content(msg):
|
||||||
return msg.get_payload(0)
|
return msg.get_payload(0)
|
||||||
for subtype in 'rfc822 external-body'.split():
|
for subtype in 'rfc822 external-body'.split():
|
||||||
raw_data_manager.add_get_handler('message/'+subtype, get_message_content)
|
raw_data_manager.add_get_handler('message/'+subtype, get_message_content)
|
||||||
|
del subtype
|
||||||
|
|
||||||
|
|
||||||
def get_and_fixup_unknown_message_content(msg):
|
def get_and_fixup_unknown_message_content(msg):
|
||||||
|
|
@ -246,3 +248,4 @@ def set_bytes_content(msg, data, maintype, subtype, cte='base64',
|
||||||
_finalize_set(msg, disposition, filename, cid, params)
|
_finalize_set(msg, disposition, filename, cid, params)
|
||||||
for typ in (bytes, bytearray, memoryview):
|
for typ in (bytes, bytearray, memoryview):
|
||||||
raw_data_manager.add_set_handler(typ, set_bytes_content)
|
raw_data_manager.add_set_handler(typ, set_bytes_content)
|
||||||
|
del typ
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,7 @@ def header_encode(header_bytes, charset='iso-8859-1'):
|
||||||
_QUOPRI_BODY_ENCODE_MAP = _QUOPRI_BODY_MAP[:]
|
_QUOPRI_BODY_ENCODE_MAP = _QUOPRI_BODY_MAP[:]
|
||||||
for c in b'\r\n':
|
for c in b'\r\n':
|
||||||
_QUOPRI_BODY_ENCODE_MAP[c] = chr(c)
|
_QUOPRI_BODY_ENCODE_MAP[c] = chr(c)
|
||||||
|
del c
|
||||||
|
|
||||||
def body_encode(body, maxlinelen=76, eol=NL):
|
def body_encode(body, maxlinelen=76, eol=NL):
|
||||||
"""Encode with quoted-printable, wrapping at maxlinelen characters.
|
"""Encode with quoted-printable, wrapping at maxlinelen characters.
|
||||||
|
|
|
||||||
|
|
@ -89,8 +89,7 @@ def _timegm(tt):
|
||||||
DAYS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
DAYS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
||||||
MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
||||||
MONTHS_LOWER = []
|
MONTHS_LOWER = [month.lower() for month in MONTHS]
|
||||||
for month in MONTHS: MONTHS_LOWER.append(month.lower())
|
|
||||||
|
|
||||||
def time2isoz(t=None):
|
def time2isoz(t=None):
|
||||||
"""Return a string representing time in seconds since epoch, t.
|
"""Return a string representing time in seconds since epoch, t.
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,7 @@
|
||||||
mod_dict = globals()
|
mod_dict = globals()
|
||||||
for k, v in dis.COMPILER_FLAG_NAMES.items():
|
for k, v in dis.COMPILER_FLAG_NAMES.items():
|
||||||
mod_dict["CO_" + v] = k
|
mod_dict["CO_" + v] = k
|
||||||
|
del k, v, mod_dict
|
||||||
|
|
||||||
# See Include/object.h
|
# See Include/object.h
|
||||||
TPFLAGS_IS_ABSTRACT = 1 << 20
|
TPFLAGS_IS_ABSTRACT = 1 << 20
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@
|
||||||
for i in range(0x20):
|
for i in range(0x20):
|
||||||
ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i))
|
ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i))
|
||||||
#ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,))
|
#ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,))
|
||||||
|
del i
|
||||||
|
|
||||||
INFINITY = float('inf')
|
INFINITY = float('inf')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -186,3 +186,4 @@ def report(self):
|
||||||
if line:
|
if line:
|
||||||
op, name = line.split()
|
op, name = line.split()
|
||||||
opmap[op] = getattr(token, name)
|
opmap[op] = getattr(token, name)
|
||||||
|
del line, op, name
|
||||||
|
|
|
||||||
|
|
@ -746,6 +746,7 @@ def getpreferredencoding(do_setlocale=True):
|
||||||
for k, v in sorted(locale_encoding_alias.items()):
|
for k, v in sorted(locale_encoding_alias.items()):
|
||||||
k = k.replace('_', '')
|
k = k.replace('_', '')
|
||||||
locale_encoding_alias.setdefault(k, v)
|
locale_encoding_alias.setdefault(k, v)
|
||||||
|
del k, v
|
||||||
|
|
||||||
#
|
#
|
||||||
# The locale_alias table maps lowercase alias names to C locale names
|
# The locale_alias table maps lowercase alias names to C locale names
|
||||||
|
|
|
||||||
|
|
@ -49,11 +49,11 @@ def reduce_array(a):
|
||||||
reduction.register(array.array, reduce_array)
|
reduction.register(array.array, reduce_array)
|
||||||
|
|
||||||
view_types = [type(getattr({}, name)()) for name in ('items','keys','values')]
|
view_types = [type(getattr({}, name)()) for name in ('items','keys','values')]
|
||||||
if view_types[0] is not list: # only needed in Py3.0
|
def rebuild_as_list(obj):
|
||||||
def rebuild_as_list(obj):
|
return list, (list(obj),)
|
||||||
return list, (list(obj),)
|
for view_type in view_types:
|
||||||
for view_type in view_types:
|
reduction.register(view_type, rebuild_as_list)
|
||||||
reduction.register(view_type, rebuild_as_list)
|
del view_type, view_types
|
||||||
|
|
||||||
#
|
#
|
||||||
# Type for identifying shared objects
|
# Type for identifying shared objects
|
||||||
|
|
|
||||||
|
|
@ -427,6 +427,7 @@ def close(self):
|
||||||
for name, signum in list(signal.__dict__.items()):
|
for name, signum in list(signal.__dict__.items()):
|
||||||
if name[:3]=='SIG' and '_' not in name:
|
if name[:3]=='SIG' and '_' not in name:
|
||||||
_exitcode_to_name[-signum] = f'-{name}'
|
_exitcode_to_name[-signum] = f'-{name}'
|
||||||
|
del name, signum
|
||||||
|
|
||||||
# For debug and leak testing
|
# For debug and leak testing
|
||||||
_dangling = WeakSet()
|
_dangling = WeakSet()
|
||||||
|
|
|
||||||
|
|
@ -192,6 +192,7 @@ def is_python_build(check_home=False):
|
||||||
scheme['headers'] = scheme['include']
|
scheme['headers'] = scheme['include']
|
||||||
scheme['include'] = '{srcdir}/Include'
|
scheme['include'] = '{srcdir}/Include'
|
||||||
scheme['platinclude'] = '{projectbase}/.'
|
scheme['platinclude'] = '{projectbase}/.'
|
||||||
|
del scheme
|
||||||
|
|
||||||
|
|
||||||
def _subst_vars(s, local_vars):
|
def _subst_vars(s, local_vars):
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ def istest(self, predicate, exp):
|
||||||
self.assertFalse(other(obj), 'not %s(%s)' % (other.__name__, exp))
|
self.assertFalse(other(obj), 'not %s(%s)' % (other.__name__, exp))
|
||||||
|
|
||||||
def test__all__(self):
|
def test__all__(self):
|
||||||
support.check__all__(self, inspect, not_exported=("k", "v", "mod_dict", "modulesbyfile"))
|
support.check__all__(self, inspect, not_exported=("modulesbyfile",))
|
||||||
|
|
||||||
def generator_function_example(self):
|
def generator_function_example(self):
|
||||||
for i in range(2):
|
for i in range(2):
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,7 @@ def _compile(expr):
|
||||||
endpats[_prefix + '"'] = Double
|
endpats[_prefix + '"'] = Double
|
||||||
endpats[_prefix + "'''"] = Single3
|
endpats[_prefix + "'''"] = Single3
|
||||||
endpats[_prefix + '"""'] = Double3
|
endpats[_prefix + '"""'] = Double3
|
||||||
|
del _prefix
|
||||||
|
|
||||||
# A set of all of the single and triple quoted string prefixes,
|
# A set of all of the single and triple quoted string prefixes,
|
||||||
# including the opening quotes.
|
# including the opening quotes.
|
||||||
|
|
@ -153,6 +154,7 @@ def _compile(expr):
|
||||||
single_quoted.add(u)
|
single_quoted.add(u)
|
||||||
for u in (t + '"""', t + "'''"):
|
for u in (t + '"""', t + "'''"):
|
||||||
triple_quoted.add(u)
|
triple_quoted.add(u)
|
||||||
|
del t, u
|
||||||
|
|
||||||
tabsize = 8
|
tabsize = 8
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Remove loop variables that are leaking into modules' namespaces.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue