Re: [Python-Dev] PEP 590: vectorcall without tp_call

2019年5月29日 06:31:53 -0700

On 5/29/19 2:25 PM, Jeroen Demeyer wrote:
Hello,
I have one implementation question about vectorcall which is not specified in PEP 590: what should happen if a type implements vectorcall (i.e. _Py_TPFLAGS_HAVE_VECTORCALL is set) but doesn't set tp_call (i.e. tp_call == NULL)? I see the following possibilities: 1. Ignore this problem/assume that it won't happen. This would be bad, since callable(obj) would be False even though obj() would succeed.
2. Raise SystemError.
3. Automatically set tp_call to PyVectorcall_Call.
I would vote for 3 since it's the most user-friendly option. There is also no way how it could be wrong: it ensures that tp_call and vectorcall are consistent.
That sounds like a good idea for PyType_FromSpec.
For static types I either wouldn't bother at all, or only check in debug builds and fail with Py_FatalError.
_______________________________________________
Python-Dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to