libgap.* and gap.* are different interfaces. We are in transition away from gap.* interface, please don't use it in new code.
And don't mix them up in your code. On Wed, 5 Apr 2023, 11:07 Hongyi Zhao, <[email protected]> wrote: > > > On Wednesday, April 5, 2023 at 5:49:20 PM UTC+8 Hongyi Zhao wrote: > > On Wednesday, April 5, 2023 at 5:45:13 PM UTC+8 Hongyi Zhao wrote: > > On Wednesday, April 5, 2023 at 5:15:05 PM UTC+8 Jan Groenewald wrote: > > Hi > > > On Wed, 5 Apr 2023 at 10:03, Hongyi Zhao <[email protected]> wrote: > > But other alternatives didn't work either: > > sage: import sage.interfaces.gap as ggap > sage: ggap.gap_cmd="~/.local/bin/gap" > sage: ggap.console() > --------------------------------------------------------------------------- > AttributeError Traceback (most recent call last) > Cell In [3], line 1 > ----> 1 ggap.console() > > AttributeError: module 'sage.interfaces.gap' has no attribute 'console' > > > Try gap_console instead of console? > > 0 jan@dinna-latitude:~$sage > ┌────────────────────────────────────────────────────────────────────┐ > │ SageMath version 9.2, Release Date: 2020-10-24 │ > │ Using Python 3.9.2. Type "help()" for help. │ > └────────────────────────────────────────────────────────────────────┘ > > sage: import sage.interfaces.gap as ggap > sage: *ggap.console()* > --------------------------------------------------------------------------- > AttributeError Traceback (most recent call last) > <ipython-input-2-c7b46a1a6ef6> in <module> > > ----> 1 ggap.console() > > AttributeError: module 'sage.interfaces.gap' has no attribute 'console' > sage: *ggap.gap_console()* > ┌───────┐ GAP 4.11.0 of 29-Feb-2020 > │ GAP │ https://www.gap-system.org > └───────┘ Architecture: x86_64-pc-linux-gnu-default64-kv7 > Configuration: gmp 6.2.1, GASMAN, readline > Loading the library and packages ... > Packages: Alnuth 3.1.2, AtlasRep 2.1.0, AutPGrp 1.10.2, CTblLib 1.3.1, > FactInt 1.6.3, GAPDoc 1.6.3, IO 4.7.0, Polycyclic 2.15.1, > PrimGrp 3.4.0, SmallGrp 1.4.1, TomLib 1.2.9, TransGrp 2.0.6 > Try '??help' for help. See also '?copyright', '?cite' and '?authors' > gap> > > > > Yep. This way, even the following still works, which is inconsistent with > the comments given by Dima previously in this discussion: > > > Dima is correct, as checked below: > > sage: n = gap(20062006); n > 20062006 > > sage: import sage.interfaces.gap as gap > sage: n = gap(20062006); n > --------------------------------------------------------------------------- > TypeError Traceback (most recent call last) > > Cell In [3], line 1 > ----> 1 n = gap(Integer(20062006)); n > > TypeError: 'module' object is not callable > > > Then, I try to do some further testing as follows, but failed: > > sage: SmallGroup = libgap.SmallGroup > sage: g1 = SmallGroup(8,1) > sage: g2 = gap.SmallGroup(8,1) > ....: > sage: g1==g2 > --------------------------------------------------------------------------- > GAPError Traceback (most recent call last) > Cell In [18], line 1 > ----> 1 g1==g2 > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/structure/element.pyx:1111, in > sage.structure.element.Element.__richcmp__() > 1109 return (<Element>self)._richcmp_(other, op) > 1110 else: > -> 1111 return coercion_model.richcmp(self, other, op) > 1112 > 1113 cpdef _richcmp_(left, right, int op): > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/structure/coerce.pyx:1973, in > sage.structure.coerce.CoercionModel.richcmp() > 1971 # Coerce to a common parent > 1972 try: > -> 1973 x, y = self.canonical_coercion(x, y) > 1974 except (TypeError, NotImplementedError): > 1975 pass > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/structure/coerce.pyx:1315, in > sage.structure.coerce.CoercionModel.canonical_coercion() > 1313 x_elt = x > 1314 if y_map is not None: > -> 1315 y_elt = (<Map>y_map)._call_(y) > 1316 else: > 1317 y_elt = y > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/structure/coerce_maps.pyx:161, in > sage.structure.coerce_maps.DefaultConvertMap_unique._call_() > 159 print(type(C), C) > 160 print(type(C._element_constructor), > C._element_constructor) > --> 161 raise > 162 > 163 cpdef Element _call_with_args(self, x, args=(), kwds={}): > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/structure/coerce_maps.pyx:156, in > sage.structure.coerce_maps.DefaultConvertMap_unique._call_() > 154 cdef Parent C = self._codomain > 155 try: > --> 156 return C._element_constructor(x) > 157 except Exception: > 158 if print_warnings: > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/libs/gap/libgap.pyx:318, in > sage.libs.gap.libgap.Gap._element_constructor_() > 316 else: > 317 try: > --> 318 return x._libgap_() > 319 except AttributeError: > 320 pass > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/structure/sage_object.pyx:731, in > sage.structure.sage_object.SageObject._libgap_() > 729 def _libgap_(self): > 730 from sage.libs.gap.libgap import libgap > --> 731 return libgap.eval(self._libgap_init_()) > 732 > 733 def _libgap_init_(self): > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/libs/gap/libgap.pyx:404, in > sage.libs.gap.libgap.Gap.eval() > 402 > 403 initialize() > --> 404 elem = make_any_gap_element(self, gap_eval(gap_command)) > 405 > 406 # If the element is NULL just return None instead > > File ~/Public/repo/ > github.com/sagemath/sage.git/src/sage/libs/gap/util.pyx:367, in > sage.libs.gap.util.gap_eval() > 365 try: > 366 GAP_Enter() > --> 367 result = GAP_EvalString(cmd) > 368 # We can assume that the result object is a GAP PList (plain > list) > 369 # and we should use functions for PLists directly for now; see > > GAPError: Error, Variable: 'f1' must have a value > > > OTOH, it seems that either of the following method works: > > libgap.SmallGroup(8,1) > gap.SmallGroup(8,1) > > So, which is the more recommended usage? > > Best, > Zhao > > > > > > sage: import sage.interfaces.gap as gap > sage: gap.gap_cmd="~/.local/bin/gap" > sage: gap.gap_console() > ....: > ┌───────┐ GAP 4.13dev-346-g577dcec built on 2023-03-15 07:28:54+0800 > │ GAP │ https://www.gap-system.org > └───────┘ Architecture: x86_64-pc-linux-gnu-default64-kv8 > > Configuration: gmp 6.2.1, GASMAN, readline > Loading the library and packages ... > Packages: AClib 1.3.2, Alnuth 3.2.1, AtlasRep 2.1.6, AutPGrp 1.11, > Browse 1.8.18, CaratInterface 2.3.4, > CRISP 1.4.5, Cryst 4.1.25, CrystCat 1.1.10, CrystKit 0.1, > CTblLib 1.3.4, curlInterface 2.3.1, > FactInt 1.6.3, FGA 1.4.0, Forms 1.2.9, GAPDoc 1.6.6, genss > 1.6.8, IO 4.8.0, IRREDSOL 1.4.4, > LAGUNA 3.9.5, orb 4.9.0, Polenta 1.3.10, Polycyclic 2.16, > PrimGrp 3.4.2, RadiRoot 2.9, > recog 1.4.2, ResClasses 4.7.3, SmallGrp 1.5.1, Sophus 1.27, > SpinSym 1.5.2, TomLib 1.2.9, > TransGrp 3.6.3, utils 0.81 > > Try '??help' for help. See also '?copyright', '?cite' and '?authors' > gap> > > > > Regards, > Jan > > -- > You received this message because you are subscribed to the Google Groups > "sage-support" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sage-support/0dfb01d1-db72-4b4c-8007-6ae81c5a4aa1n%40googlegroups.com > <https://groups.google.com/d/msgid/sage-support/0dfb01d1-db72-4b4c-8007-6ae81c5a4aa1n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/CAAWYfq2JeMT_N6uQyNWtZDiCzYzw6NK1r%3D7L%2BxN%2BuG5BVLVw%2BQ%40mail.gmail.com.
