bpo-37540: vectorcall: keyword names must be strings (GH-14682)
The fact that keyword names are strings is now part of the vectorcall and `METH_FASTCALL` protocols. The biggest concrete change is that `_PyStack_UnpackDict` now checks that and raises `TypeError` if not.
CC @markshannon @vstinner
https://bugs.python.org/issue37540
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
index 3cac3bd..d9dcb70 100644
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -237,7 +237,7 @@
>>> f(**{1:2})
Traceback (most recent call last):
...
- TypeError: f() keywords must be strings
+ TypeError: keywords must be strings
>>> h(**{'e': 2})
Traceback (most recent call last):
diff --git a/Lib/test/test_unpack_ex.py b/Lib/test/test_unpack_ex.py
index 45cf051..87fea59 100644
--- a/Lib/test/test_unpack_ex.py
+++ b/Lib/test/test_unpack_ex.py
@@ -256,7 +256,7 @@
>>> f(**{1: 3}, **{1: 5})
Traceback (most recent call last):
...
- TypeError: f() keywords must be strings
+ TypeError: f() got multiple values for keyword argument '1'
Unpacking non-sequence