#10963: More functorial constructions
-------------------------------------+-------------------------------------
Reporter: nthiery | Owner: stumpc5
Type: enhancement | Status: needs_work
Priority: major | Milestone: sage-6.1
Component: categories | Resolution:
Keywords: days54 | Merged in:
Authors: Nicolas M. Thiéry | Reviewers: Simon King, Frédéric
Report Upstream: N/A | Chapoton
Branch: | Work issues: Detect and fix
public/ticket/10963 | Heisenbugs
Dependencies: #11224, #8327, | Commit:
#10193, #12895, #14516, #14722, | 5ccf253b17c151d8e773037ac634a64f84f03075
#13589, #14471, #15069, #15094, | Stopgaps:
#11688, #13394, #15150, #15506 |
-------------------------------------+-------------------------------------
Comment (by nbruin):
A little further experimenting shows that the recursion occurs in the
`assert` statement in the fragment
{{{
base_module =
importlib.import_module("sage.categories."+base_module_name)
base_category_class = getattr(base_module, base_name)
assert getattr(base_category_class, axiom, None) is cls, \
"Missing (lazy import) link for %s to %s for axiom
%s?"%(base_category_class, cls, axiom)
return base_category_class, axiom
}}}
So my guess is that the recursions happen when the relevant module has to
be actually (lazily) imported. The `getattr` on an object defined in the
module triggers the actual loading of the module and the initialization
code of the module triggers the execution of the same
`base_category_class_and_axiom` incantation. This is a cached method, but
since it is still running through its first call the cache isn't there
yet, so another call happens. The surprising thing is that the code
finishes at all. It wouldn't surprise me if this is just another
incarnation of a circular import problem.
--
Ticket URL: <http://trac.sagemath.org/ticket/10963#comment:245>
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/groups/opt_out.