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

Reply via email to