On Sun, Sep 23, 2018 at 9:57 AM, Simon King <simon.k...@uni-jena.de> wrote:
> Hi Andy,
>
> On 2018-09-23, Andy Howell <a...@gamubaru.com> wrote:
>> I'd guess the word "tricks" was objectionable. What I meant was
>> techniques like locating the source using funcName? Now that I know that
>> exists, I can add it to my "practice". Discovering those though google
>> searches takes time. I'd rather have a catalog of them in a known place.
>> Sadly my memory is not getting better with age. Having one place to
>> check speeds the process.
>
> Searching for the sources should actually be easy: Put ?? after the
> object you want to study, and hit return (or shift-return in a
> notebook). This is supposed to show you the source code of the object.
>
> Also, if you want to directly *edit* the source code, it is possible to do
>     edit(object_you_are_investigating, 'vim')
> (where the string 'vim' is supposed to be the name of your favourite editor 
> ;-)
> That said, I am hardly using edit(...) myself, usually I just look up
> what file is relevant (by ??) and open it in geany.
>
> Of course, after altering the source code, you'd need to run "sage -b"
> (or "sage -br") to build the changes (or build the changes and restart
> sage).
>
> Note that you'll find introspection stuff in sage.misc.sageinspect, such as
> this:
>   sage: from sage.misc.sageinspect import sage_getfile
>   sage: P.<x,y,z> = QQ[]
>   sage: sage_getfile(P)
>   
> '/home/king/Sage/git/sage/local/lib/python2.7/site-packages/sage/rings/polynomial/multi_polynomial_libsingular.pyx'
>   sage: sage_getfile(x)
>   
> '/home/king/Sage/git/sage/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx'
>
> However, be warned: I just notice that the anser of sage_getfile(P) is
> wrong (the source file is NOT in local/lib/..., but of course in
> src/sage/rings/... Only the anser for sage_getfile(x) is correct.

+1 to pointing this out. People have been confused about

 
'/home/king/Sage/git/sage/local/lib/python2.7/site-packages/sage/rings/polynomial/multi_polynomial_libsingular.pyx'

versus

'/home/king/Sage/git/sage/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx'

probably thousands of times (with both sage and python in general).
Setuptools has a "python setup.py develop" mode
that sometimes fixes this, but we don't use it...

 -- William

>
> Question to all: Is there already a ticket for the wrong behaviour of
> sage_getfile?
>
>>>     How to I find the code being called?
>>>
>>>
>>> %prun is reasonably good for that. The foo?? is also very useful for
>>> looking at a particular block of code.
>
> If the code isn't pure python, %crun might also be useful (for
> performance analysis), although you need to install gperftools to make
> it work.
>
> Best regards,
> Simon
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sage-devel+unsubscr...@googlegroups.com.
> To post to this group, send email to sage-devel@googlegroups.com.
> Visit this group at https://groups.google.com/group/sage-devel.
> For more options, visit https://groups.google.com/d/optout.



-- 
William (http://wstein.org)

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

Reply via email to