New GitHub issue #110275 from serhiy-storchaka:<br>

<hr>

<pre>
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 by `collections.namedtuple()`.

```pyshell
>>> 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:

```pyshell
>>> 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.

cc @rhettinger

</pre>

<hr>

<a href="https://github.com/python/cpython/issues/110275">View on GitHub</a>
<p>Labels: </p>
<p>Assignee: </p>