[issue19674] Add introspection information for builtins
Nick Coghlan added the comment: +1 from me (I see this as the key benefit of argument clinic). For 3.5, we can look at ducktyping on the attribute, but for now I think it's worth keeping that text format internal to CPython. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Larry Hastings added the comment: Fresh patch attached. pydoc now uses inspect.signature instead of inspect.getfullargspec to generate the arguments for the function, and supports builtins. That's everything :D Planning on checking this in pretty soon, to get it in for beta (which hopefully still gets tagged today). -- Added file: http://bugs.python.org/file32815/larry.introspection.for.builtins.patch.4.txt ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Changes by Larry Hastings la...@hastings.org: -- resolution: - fixed stage: patch review - committed/rejected status: open - closed ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Roundup Robot added the comment: New changeset 78ec18f5cb45 by Larry Hastings in branch 'default': Issue #19674: inspect.signature() now produces a correct signature http://hg.python.org/cpython/rev/78ec18f5cb45 -- nosy: +python-dev ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Larry Hastings added the comment: Anybody have a better name for __textsig__ ? -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Brett Cannon added the comment: __signature_text__? __textsignature__? No need to abbreviate that much since there is no built-in function equivalent and people are not expected to work with it. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Larry Hastings added the comment: I went with __text_signature__. I also did some more polishing, and added / fixed the unit tests, and even added a Misc/NEWS. Is it good enough to go in before the beta? -- Added file: http://bugs.python.org/file32785/larry.introspection.for.builtins.patch.3.txt ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Serhiy Storchaka added the comment: Great! See also issue16842 and issue16638. -- nosy: +serhiy.storchaka ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Nick Coghlan added the comment: Sounds good to me (with either Larry's or Guido's spelling). We should ensure this still works with the config option that disables docstrings entirely. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Nick Coghlan added the comment: still works as in doesn't crash and the docstrings are still missing to save memory. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Changes by Larry Hastings la...@hastings.org: -- nosy: +barry ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Larry Hastings added the comment: I changed it to callablename(. Patch attached. Still works. -- Added file: http://bugs.python.org/file32763/larry.introspection.for.builtins.patch.2.txt ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Brett Cannon added the comment: For Nick: still works as in the metadata is still available without docstrings or still works as in it won't crash? -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
New submission from Larry Hastings: Let's see if we can get introspection information for builtins using the Clinic for 3.4. Georg suggested part of the approach while we were hanging out in Tokyo. I'd considered it previously before but dispensed with the idea because it seemed too loopy. Actually it seems to work great. The approach: * Clinic generates an extra first line for the docstring, that looks like def (...)\n. (Note: no function name!) * The PyCFunctionObject __doc__ getter detects this line and skips it if present. * Add a new getter to PyCFunctionObject, which I've called __textsig__, that returns this first line if present in the docstring. (It skips the def at the front, and clips it at the newline.) * inspect now notices if it's passed in a PyCFunctionObject. If it gets one, it checks to see if it has a valid __textsig__. If it does, it parses it (using ast.parse) and produces a valid signature. Advantages of this approach: * It was easy to do and took very few lines of code. * For signatures that are impossible to convert to Clinic, we can write the metadata by hand. Disadvantages of this approach: * Uh, nothing, really! The next step is probably to convert pydoc to use inspect.signature instead of the manky old methods it currently uses. After that, clean up the patch, and add a unit test or two. What do you think? -- assignee: larry components: Interpreter Core files: larry.introspection.for.builtins.patch.1.txt messages: 203549 nosy: brett.cannon, georg.brandl, gvanrossum, larry priority: normal severity: normal stage: patch review status: open title: Add introspection information for builtins type: behavior versions: Python 3.4 Added file: http://bugs.python.org/file32739/larry.introspection.for.builtins.patch.1.txt ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Larry Hastings added the comment: If you review, you can ignore the changes to the .c files, those only got touched because of the new autogenerated def ( lines in the docstrings. No other changes there. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Larry Hastings added the comment: (Well, except for Object/methodobject.c.) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Changes by Larry Hastings la...@hastings.org: -- nosy: +ncoghlan ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Guido van Rossum added the comment: I think there's a similar but slightly different convention in Sphinx autodoc -- the first line of the docstring can be name(...) . Isn't that better than def? -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue19674] Add introspection information for builtins
Larry Hastings added the comment: I was deliberately trying to avoid something that a person might do by accident. Also, def ( is consistently only five bytes, whereas pterodactyl ( or whatever will often be much longer, in case static data size is a concern. But I could switch it to that if you think that's better. Certainly it's a tiny amount more readable. (I don't think this would make the docstrings compatible with sphinx autodoc though.) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue19674 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com