Skip to content
This repository

Tooltip doesn't show constructor docstrings #1094

Closed
fperez opened this Issue December 03, 2011 · 4 comments

3 participants

Fernando Perez Matthias Bussonnier Bradley M. Froehle
Fernando Perez
Owner

Hey @Carreau, try this one in a notebook:

from IPython.core.display import Image
Image(<TAB HERE>

You get a 'no docstring', while doing Image? works. The reason is that in ?, we check if the object has no docstring but is a class, and in that case we display its constructor docstring, which is typically the most useful one. In fact, for classes that have both, we show both. Futhermore, for classes the signature that matters is the constructor one, since that's what people will actually be calling:

In [1]: class X:
   ...:     """class ds"""
   ...:     def __init__(self):
   ...:         "instance ds"
   ...:         

In [2]: 

In [2]: X?
Type:       classobj
String Form:__main__.X
Namespace:  Interactive
Docstring:  class ds
Constructor information:
 Definition:X(self)
 Docstring:     instance ds

Ideally, the tooltip would have the same semantics (not show the rest of what ? shows, but do the same regarding docstrings and call signatures).

I don't know how much time you have over the next few days (and you've already done great work!) but it would be great to ship the notebook with this in really solid shape.

Matthias Bussonnier Carreau referenced this issue from a commit December 04, 2011
Commit has since been removed from the repository and is no longer available.
Matthias Bussonnier
Collaborator

@bfroehle
I see that you've been faster than me, you might want to Initialize defstring with reply.call_def (I suppose this mean call_definition) to be coherent with the docstring logic .

@fperez sayed :

>  In fact, for classes that have both, we show both

So we might also want to append the differents *_docstrings maybe...

Bradley M. Froehle
Collaborator

For symmetry with qtconsole, etc, I guess we should reimplement IPython.core.oinspect.call_tip (and whatever it calls) in Javascript.

Bradley M. Froehle
Collaborator

In the Qtconsole we do NOT show both docstrings, only the one with the highest priority:

    # Now get docstring.
    # The priority is: call docstring, constructor docstring, main one.
    doc = oinfo.get('call_docstring')
    if doc is None:
        doc = oinfo.get('init_docstring')
    if doc is None:
        doc = oinfo.get('docstring','')
Bradley M. Froehle bfroehle referenced this issue from a commit December 07, 2011
Commit has since been removed from the repository and is no longer available.
Bradley M. Froehle bfroehle referenced this issue from a commit in bfroehle/ipython December 04, 2011
Bradley M. Froehle Show class init and call tooltips in notebook.
Closes #1094.
c6bcbb5
Fernando Perez fperez closed this in 9a36fc8 December 18, 2011
Fernando Perez
Owner

As mentioned when closing #1096, eventually a nice refactoring of these tools for better reuse and uniformity in output is needed.

Brian E. Granger ellisonbg referenced this issue from a commit January 10, 2012
Commit has since been removed from the repository and is no longer available.
Fernando Perez fperez referenced this issue from a commit January 10, 2012
Commit has since been removed from the repository and is no longer available.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.