On 29/05/2019 15.29, Petr Viktorin wrote: > 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.
You could add a check to PyType_Ready() and have it either return an error or fix tp_call. Christian _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com