Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Bug report
When you call a function with incorrect key arguments, you get a TypeError. But it is not always so with the_replace() method of a named tuple class created bycollections.namedtuple().
>>> from collections import namedtuple>>> P = namedtuple('P', 'x y')>>> p = P(1, 2)>>> p._replace(z=3)Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/serhiy/py/cpython/Lib/collections/__init__.py", line 460, in _replace raise ValueError(f'Got unexpected field names: {list(kwds)!r}')ValueError: Got unexpected field names: ['z']It is not even consistent with constructor which raises TypeError:
>>> P(x=1, y=2, z=3)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: P.__new__() got an unexpected keyword argument 'z'I think that_replace() also should raise TypeError for unexpected keyword arguments.