Emanuel Barry added the comment: Yes, `metatype == &PyType_Type` makes sure that only `type` itself is valid for the one-argument part, whereas subclasses can also do so right now. I clarified that in a comment in the new patch, so that someone doesn't accidentally revert this, thinking PyType_CheckExact is fine.
Before the patch: >>> type(1, 2, 3) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: type() argument 1 must be str, not int After the patch: >>> type(1, 2, 3) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: type.__new__() argument 1 must be str, not int >>> class X(type): pass ... >>> X(1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: type.__new__() argument 1 must be str, not int ---------- Added file: http://bugs.python.org/file43056/type_one_argument_2.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27157> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com