mirror of https://github.com/python/cpython
bpo-43102: Set namedtuple __new__'s internal builtins to a dict. (GH-24439)
This commit is contained in:
parent
196d4deaf4
commit
b6d68aa08b
|
@ -407,7 +407,7 @@ def namedtuple(typename, field_names, *, rename=False, defaults=None, module=Non
|
|||
|
||||
namespace = {
|
||||
'_tuple_new': tuple_new,
|
||||
'__builtins__': None,
|
||||
'__builtins__': {},
|
||||
'__name__': f'namedtuple_{typename}',
|
||||
}
|
||||
code = f'lambda _cls, {arg_list}: _tuple_new(_cls, ({arg_list}))'
|
||||
|
|
|
@ -681,6 +681,11 @@ class TestNamedTuple(unittest.TestCase):
|
|||
self.assertEqual(np.x, 1)
|
||||
self.assertEqual(np.y, 2)
|
||||
|
||||
def test_new_builtins_issue_43102(self):
|
||||
self.assertEqual(
|
||||
namedtuple('C', ()).__new__.__globals__['__builtins__'],
|
||||
{})
|
||||
|
||||
|
||||
################################################################################
|
||||
### Abstract Base Classes
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
The namedtuple __new__ method had its __builtins__ set to None instead
|
||||
of an actual dictionary. This created problems for introspection tools.
|
Loading…
Reference in New Issue