#11817: Use sage_getdoc in sage interpreter when doing "?"
------------------------------------------------+--------------------------
       Reporter:  SimonKing                     |        Owner:  jason
           Type:  enhancement                   |       Status:  closed
       Priority:  major                         |    Milestone:  sage-5.1
      Component:  misc                          |   Resolution:  fixed
       Keywords:  sage_getdoc format embedding  |    Merged in:
        Authors:  Simon King                    |  sage-5.1.beta1
Report Upstream:  N/A                           |    Reviewers:  Volker
         Branch:                                |  Braun
   Dependencies:  #11815                        |  Work issues:
                                                |       Commit:
                                                |     Stopgaps:
------------------------------------------------+--------------------------
Description changed by chapoton:

Old description:

> The purpose of this ticket is to fix two bugs.
>
> '''__First problem__'''
>
> Theere is a bug in `sage.misc.sagedoc.format`, that ironically makes that
> `format?` does not show the documentation of `format`.
> {{{
> sage: from sage.misc.sagedoc import format
> sage: format.__doc__
> '\n    Format Sage documentation ``s`` for viewing with IPython.\n\n
> This calls ``detex`` on ``s`` to convert LaTeX commands to plain\n
> text, and if ``s`` contains a string of the form "<<<obj>>>",\n    then
> it replaces it with the docstring for "obj".\n\n    INPUT:\n\n    - ``s``
> - string\n    - ``embedded`` - boolean (optional, default False)\n\n
> OUTPUT: string\n\n    Set ``embedded`` equal to True if formatting for
> use in the\n    notebook; this just gets passed as an argument to
> ``detex``.\n\n    EXAMPLES::\n\n        sage: from sage.misc.sagedoc
> import format\n        sage:
> identity_matrix(2).rook_vector.__doc__[115:184]\n        \'Let `A` be a
> general `m` by `n`\\n        (0,1)-matrix with `m \\\\le n`. \'\n
> sage: format(identity_matrix(2).rook_vector.__doc__[115:184])\n
> \'Let A be a general m by n\\n   (0,1)-matrix with m <= n.\\n\'\n\n    If
> the first line of the string is \'nodetex\', remove \'nodetex\' but\n
> don\'t modify any TeX commands::\n    \n        sage:
> format("nodetex\\n`x \\\\geq y`")\n        \'\\n`x \\\\geq y`\'\n\n
> Testing a string enclosed in triple angle brackets::\n\n        sage:
> format(\'<<<identity_matrix\')\n        \'<<<identity_matrix\\n\'\n
> sage: format(\'identity_matrix>>>\')\n        \'identity_matrix>>>\\n\'\n
> sage: format(\'<<<identity_matrix>>>\')[:28]\n        \'Definition:
> identity_matrix(\'\n    '
> sage: format?
> Type:           function
> Base Class:     <type 'function'>
> String Form:    <function format at 0xcc8a28>
> Namespace:      Interactive
> File:           /mnt/local/king/SAGE/broken/local/lib/python2.6/site-
> packages/sage/misc/sagedoc.py
> Definition:     format(s, embedded=False)
> Docstring:
>     <no docstring>
> }}}
>
> The problem is that the doc string contains `<<<obj>>>`, which means that
> it is attempted to find and insert documentation for `obj` (which does
> not exist).
>
> '''__Suggestion__'''
>
> Introduce a new directive `noreplace`, that avoids replacement of
> `<<<obj>>>`. Or perhaps a better suggestion: Catch the error, and do not
> replace if there is an error.
>
> '''__Second problem__'''
>
> If sage.misc.sagedoc.my_doc is applied to an object with a `_sage_doc_`
> method then it uses it, without formatting. That means: No tex code is
> turned into ascii art, and embedding information is not stripped.
>
> '''__Suggestion__'''
>
> Consequently use `sage.misc.sageinspect.sage_getdoc`.
>

> Apply [attachment:trac11817_question_mark_using_sage_getdoc.2.patch]

New description:

 The purpose of this ticket is to fix two bugs.

 '''__First problem__'''

 Theere is a bug in `sage.misc.sagedoc.format`, that ironically makes that
 `format?` does not show the documentation of `format`.
 {{{
 sage: from sage.misc.sagedoc import format
 sage: format.__doc__
 '\n    Format Sage documentation ``s`` for viewing with IPython.\n\n
 This calls ``detex`` on ``s`` to convert LaTeX commands to plain\n
 text, and if ``s`` contains a string of the form "<<<obj>>>",\n    then it
 replaces it with the docstring for "obj".\n\n    INPUT:\n\n    - ``s`` -
 string\n    - ``embedded`` - boolean (optional, default False)\n\n
 OUTPUT: string\n\n    Set ``embedded`` equal to True if formatting for use
 in the\n    notebook; this just gets passed as an argument to
 ``detex``.\n\n    EXAMPLES::\n\n        sage: from sage.misc.sagedoc
 import format\n        sage:
 identity_matrix(2).rook_vector.__doc__[115:184]\n        \'Let `A` be a
 general `m` by `n`\\n        (0,1)-matrix with `m \\\\le n`. \'\n
 sage: format(identity_matrix(2).rook_vector.__doc__[115:184])\n
 \'Let A be a general m by n\\n   (0,1)-matrix with m <= n.\\n\'\n\n    If
 the first line of the string is \'nodetex\', remove \'nodetex\' but\n
 don\'t modify any TeX commands::\n    \n        sage: format("nodetex\\n`x
 \\\\geq y`")\n        \'\\n`x \\\\geq y`\'\n\n    Testing a string
 enclosed in triple angle brackets::\n\n        sage:
 format(\'<<<identity_matrix\')\n        \'<<<identity_matrix\\n\'\n
 sage: format(\'identity_matrix>>>\')\n        \'identity_matrix>>>\\n\'\n
 sage: format(\'<<<identity_matrix>>>\')[:28]\n        \'Definition:
 identity_matrix(\'\n    '
 sage: format?
 Type:function
 Base Class:<type 'function'>
 String Form:<function format at 0xcc8a28>
 Namespace:Interactive
 File:/mnt/local/king/SAGE/broken/local/lib/python2.6/site-
 packages/sage/misc/sagedoc.py
 Definition:format(s, embedded=False)
 Docstring:
     <no docstring>
 }}}

 The problem is that the doc string contains `<<<obj>>>`, which means that
 it is attempted to find and insert documentation for `obj` (which does not
 exist).

 '''__Suggestion__'''

 Introduce a new directive `noreplace`, that avoids replacement of
 `<<<obj>>>`. Or perhaps a better suggestion: Catch the error, and do not
 replace if there is an error.

 '''__Second problem__'''

 If sage.misc.sagedoc.my_doc is applied to an object with a `_sage_doc_`
 method then it uses it, without formatting. That means: No tex code is
 turned into ascii art, and embedding information is not stripped.

 '''__Suggestion__'''

 Consequently use `sage.misc.sageinspect.sage_getdoc`.


 Apply [attachment:trac11817_question_mark_using_sage_getdoc.2.patch]

--

--
Ticket URL: <http://trac.sagemath.org/ticket/11817#comment:8>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to