Opened 5 years ago
Closed 5 years ago
#19795 closed defect (fixed)
GAP3 does not have IsIdenticalObject
Reported by: | vbraun | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-7.0 |
Component: | packages: standard | Keywords: | gap |
Cc: | jaanos, tscrim, aschilling | Merged in: | |
Authors: | Travis Scrimshaw, Janoš Vidali | Reviewers: | Anne Schilling |
Report Upstream: | N/A | Work issues: | |
Branch: | efdffd5 (Commits) | Commit: | efdffd54d63ab56936a143481cd5b47086b1200a |
Dependencies: | Stopgaps: |
Description
Looks like a regression introduced in #19585. Reported at https://groups.google.com/d/msg/sage-devel/MrXp43v3WP4/ju2LwTuvBAAJ
sage: gap=Gap3('/Applications/gap3r4p4/bin/gap') sage: gap.RequirePackage('"specht"') --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-22-c539883f0214> in <module>() ----> 1 gap.RequirePackage('"specht"') /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/interface.pyc in __call__(self, *args, **kwds) 605 606 def __call__(self, *args, **kwds): --> 607 return self._parent.function_call(self._name, list(args), kwds) 608 609 def _sage_doc_(self): /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/gap.pyc in function_call(self, function, args, kwds) 919 self.eval(marker) 920 res = self.eval(cmd) --> 921 if self.eval('IsIdenticalObj(last,__SAGE_LAST__)') != 'true': 922 return self.new('last2;') 923 else: /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/gap.pyc in eval(self, x, newlines, strip, split_lines, **kwds) 567 if not input_line.endswith(';'): 568 input_line += ';' --> 569 result = Expect.eval(self, input_line, **kwds) 570 if not newlines: 571 result = result.replace("\\\n","") /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc in eval(self, code, strip, synchronize, locals, allow_use_file, split_lines, **kwds) 1237 elif split_lines: 1238 return '\n'.join([self._eval_line(L, allow_use_file=allow_use_file, **kwds) -> 1239 for L in code.split('\n') if L != '']) 1240 else: 1241 return self._eval_line(code, allow_use_file=allow_use_file, **kwds) /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/gap.pyc in _eval_line(self, line, allow_use_file, wait_for_prompt, restart_if_needed) 765 return '' 766 else: --> 767 raise RuntimeError(message) 768 769 except KeyboardInterrupt: RuntimeError: Gap3 produced error output Error, Variable: 'IsIdenticalObj' must have a value executing IsIdenticalObj(last,__SAGE_LAST__);
Change History (13)
comment:1 Changed 5 years ago by
- Cc aschilling added
comment:2 follow-up: ↓ 3 Changed 5 years ago by
comment:3 in reply to: ↑ 2 ; follow-up: ↓ 4 Changed 5 years ago by
Hi!
- a subclass of the GAP interpreter for backwards compatibility with GAP3 which just has the one difference in
function_call()
,
There already is a separate class for GAP3 which inherits from Gap_generic
. The cleanest solution IMO would be to have a method _identical_function
in Gap_generic
(parallel to _equality_symbol
etc.), say:
def _identical_function(self): return "IsIdenticalObj"
and then have it overridden in Gap3
.
comment:4 in reply to: ↑ 3 ; follow-up: ↓ 5 Changed 5 years ago by
- Branch set to public/interfaces/fix_gap3-19795
- Commit set to 8ff1fe8c5e9a3c1a3eaff48c4ef6b38333d5a82d
- Status changed from new to needs_review
Replying to jaanos:
- a subclass of the GAP interpreter for backwards compatibility with GAP3 which just has the one difference in
function_call()
,There already is a separate class for GAP3 which inherits from
Gap_generic
.
Good; let us use that.
The cleanest solution IMO would be to have a method
_identical_function
inGap_generic
(parallel to_equality_symbol
etc.), say:def _identical_function(self): return "IsIdenticalObj"and then have it overridden in
Gap3
.
I think it should be a class-level attribute instead of a method because it speed cost and a method is IMO somewhat overkill (because no work is done).
Anne, can you check to see if this works?
New commits:
8ff1fe8 | Adding an identical function class attribute.
|
comment:5 in reply to: ↑ 4 Changed 5 years ago by
Replying to tscrim:
Replying to jaanos:
- a subclass of the GAP interpreter for backwards compatibility with GAP3 which just has the one difference in
function_call()
,There already is a separate class for GAP3 which inherits from
Gap_generic
.Good; let us use that.
The cleanest solution IMO would be to have a method
_identical_function
inGap_generic
(parallel to_equality_symbol
etc.), say:def _identical_function(self): return "IsIdenticalObj"and then have it overridden in
Gap3
.I think it should be a class-level attribute instead of a method because it speed cost and a method is IMO somewhat overkill (because no work is done).
Anne, can you check to see if this works?
New commits:
8ff1fe8 Adding an identical function class attribute.
With this branch applied, I still get an error
sage: gap=Gap3('/Applications/gap3r4p4/bin/gap') sage: gap.RequirePackage('"specht"') --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-2-c539883f0214> in <module>() ----> 1 gap.RequirePackage('"specht"') /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/interface.pyc in __call__(self, *args, **kwds) 605 606 def __call__(self, *args, **kwds): --> 607 return self._parent.function_call(self._name, list(args), kwds) 608 609 def _sage_doc_(self): /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/gap.pyc in function_call(self, function, args, kwds) 920 self.eval(marker) 921 res = self.eval(cmd) --> 922 if self.eval(self._identical_function + '(last,__SAGE_LAST__)') != 'true': 923 return self.new('last2;') 924 else: /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/gap.pyc in eval(self, x, newlines, strip, split_lines, **kwds) 568 if not input_line.endswith(';'): 569 input_line += ';' --> 570 result = Expect.eval(self, input_line, **kwds) 571 if not newlines: 572 result = result.replace("\\\n","") /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc in eval(self, code, strip, synchronize, locals, allow_use_file, split_lines, **kwds) 1237 elif split_lines: 1238 return '\n'.join([self._eval_line(L, allow_use_file=allow_use_file, **kwds) -> 1239 for L in code.split('\n') if L != '']) 1240 else: 1241 return self._eval_line(code, allow_use_file=allow_use_file, **kwds) /Applications/sage/local/lib/python2.7/site-packages/sage/interfaces/gap.pyc in _eval_line(self, line, allow_use_file, wait_for_prompt, restart_if_needed) 766 return '' 767 else: --> 768 raise RuntimeError(message) 769 770 except KeyboardInterrupt: RuntimeError: Gap3 produced error output Error, Variable: 'IsIdenticalObj' must have a value executing IsIdenticalObj(last,__SAGE_LAST__);
I will be traveling for at least 15 hours now and won't have any internet on the plane ....
comment:6 Changed 5 years ago by
- Commit changed from 8ff1fe8c5e9a3c1a3eaff48c4ef6b38333d5a82d to efdffd54d63ab56936a143481cd5b47086b1200a
Branch pushed to git repo; I updated commit sha1. New commits:
efdffd5 | Putting the class attribute in the correct place.
|
comment:7 follow-up: ↓ 8 Changed 5 years ago by
Whoops. I put it in the wrong place. Try it now.
Have a great flight!
comment:8 in reply to: ↑ 7 Changed 5 years ago by
Replying to tscrim:
Whoops. I put it in the wrong place. Try it now.
Yes, now it works!
sage: gap=Gap3('/Applications/gap3r4p4/bin/gap') sage: gap.RequirePackage('"specht"') ------------------------------------------------------ SPECHT 3.1 - development edition A package for calculating decomposition numbers of Hecke algebras of the symmetric groups and q-Schur algebras. This is an unofficial release of SPECHT. There are a significant number of *undocumented* functions in this version. Fewer old bugs, and more new bugs are also included. (C) Andrew Mathas mathas@maths.usyd.edu.au Sydney ------------------------------------------------------
comment:9 follow-up: ↓ 12 Changed 5 years ago by
Can we consider that a positive review then?
comment:10 Changed 5 years ago by
- Reviewers set to Anne Schilling
- Status changed from needs_review to positive_review
comment:11 Changed 5 years ago by
- Keywords gap added
comment:12 in reply to: ↑ 9 Changed 5 years ago by
Replying to tscrim:
Can we consider that a positive review then?
Thank you for fixing this! Happy New Year!
comment:13 Changed 5 years ago by
- Branch changed from public/interfaces/fix_gap3-19795 to efdffd54d63ab56936a143481cd5b47086b1200a
- Resolution set to fixed
- Status changed from positive_review to closed
So GAP3 has
IsIdentical
, which was changed toIsIdenticalObj
in GAP4b3. I think what we need to do is either:function_call()
,__init__
and set some private attribute which gets used infunction_call()
, orif
statement infunction_call()
.@aschilling For now you should be able to make that one line change mentioned above to
sage.interfaces.gap.function_call
(but I haven't tested it).