New submission from Larry Hastings: Yury: In revision 9433b380ad33 you changed inspect.Signature so that it cannot handle builtin classes. Please fix it.
>>> import _pickle >>> import inspect >>> str(inspect.signature(_pickle.Pickler)) '()' >>> _pickle.Pickler.__text_signature__ '(file, protocol=None, fix_imports=True)' Those two strings should be the same. I don't know any guaranteed way to tell a builtin class from a user class. So if you pass in a class, the best approach is to do what it used to do: try from_builtin, and if it fails fail over to the isinstance(obj, type) code. You changed it to if _signature_is_builtin(obj): return Signature.from_builtin(obj) This unambiguously returns the result from from_builtin. Either find a way that you can determine a class is a builtin 100% reliably, or change this to *try* from_builtin but only return its result if it's successful. Your changes might have also caused #20471; that wasn't failing before. I'm still investigating. ---------- assignee: yselivanov messages: 209871 nosy: larry, yselivanov priority: normal severity: normal stage: needs patch status: open title: inspect.Signature no longer handles builtin classes correctly type: behavior versions: Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue20473> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com