There is also an existing hard-coded list of function names that are
actually what's used for dir() and tab-completion, completely separate
from this module.  AFAICT this all_documented_functions module isn't
really used anywhere in Sage, and doesn't turn up much in the
documentation.  As Alex  Konovalov pointed out to me, the "example" in
all_documented_functions of doing `from
sage.libs.gaps.all_documented_functions import *` is probably not a
good idea in most cases anyways.  For example:

sage: DihedralGroup(8)
Dihedral group of order 16 as a permutation group
sage: type(_)
<class 'sage.groups.perm_gps.permgroup_named.DihedralGroup_with_category'>
sage: from sage.libs.gap.all_documented_functions import *
sage: DihedralGroup(8)
<pc group of size 8 with 3 generators>
sage: type(_)
<type 'sage.libs.gap.element.GapElement'>

Oops, this clobbers multiple existing built-ins in Sage.  Alex also
suggested that using IsDocumentedWord like this was perhaps
ill-considered in the first place.

Given that it isn't actually used anywhere in Sage, and is not
particularly documented, and mostly seems to cause problems, it would
be best just to remove this?  Does anyone use it?

On Tue, Dec 11, 2018 at 4:52 PM Volker Braun <vbraun.n...@gmail.com> wrote:
>
> This is basically the tab completion list in the Sage/libgap interface. As 
> you found out, creating it on the fly is way too slow. Hence we cache a 
> reasonable list of names.
>
>
>
>
> On Tuesday, December 11, 2018 at 9:52:53 AM UTC-5, E. Madison Bray wrote:
>>
>> In the sage.libs.gap package, in the assigned_names.py module, there
>> is a function called just list_functions() [1] which is documented to
>> "Return the GAP documented global functions".
>>
>> This is used in the all_documented_functions.py [2] module to create
>> Python wrappers for "all documented GAP functions, they can be thought
>> of as the official API of GAP".
>>
>> This turns out to create a bit of a problem: The GAP function
>> IsDocumentedWord, which this code uses to determine if a function is
>> "documented", works by searching for the function's name in all
>> documentation known to GAP.  By default this is just the standard GAP
>> reference docs.  However, if you have any GAP packages installed, it
>> will *also* search the docs for those packages.
>>
>> If you have lots of packages installed that means this is *extremely*
>> slow, even if we're just searching for terms that we only care about
>> being in the main GAP docs.
>>
>> Though perhaps it is a faulty assumption that this is "the official
>> API of GAP" in the first place.  Or at the very least, perhaps we
>> don't really need to care about whether or not the function is
>> "documented", and that just returning all global functions is good
>> enough for a first pass.
>>
>> But I'm not sure.  Volker wrote this code originally so he would know
>> best.  But what do we want to present as the "API" provided by Sage's
>> GAP interface?
>>
>>
>>
>>
>>
>>
>> [1] 
>> https://gitlab.com/sagemath/sage/blob/master/src/sage/libs/gap/assigned_names.py#L118
>> [2] 
>> https://gitlab.com/sagemath/sage/blob/master/src/sage/libs/gap/all_documented_functions.py
>
> --
> 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.

-- 
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