Opened 7 years ago

Closed 7 years ago

#14722 closed enhancement (fixed)

Add at_startup flag to lazy_import

Reported by: nthiery Owned by: jason
Priority: major Milestone: sage-5.12
Component: misc Keywords:
Cc: rishi, jason, rlm, mhansen, SimonKing Merged in: sage-5.12.beta1
Authors: Nicolas M. Thiéry Reviewers: Travis Scrimshaw
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

Lazy imports have two main use cases: (a) Delaying imports that are not always needed for a faster Sage startup (b) Resolving import loops

This ticket introduce an option "at_startup" to allow for lazy imports that are known to be resolved at startup time. The main use case is (b) in the context of #10963. E.g. the categories Magmas and Semigroups import each other reciprocally (because Magmas.Associative points to Semigroups). It is natural to resolve this by defining Magmas.Associative using a lazy import; one can then play with Magmas() without having to load Semigroups. However Semigroups() is later constructed during Sage's startup (and this is unlikely to change).

This option could also be used as an intermediate step toward (a), when a module is used in several places and some of those places can already afford to lazy import the module but not yet others. As a bonus, a lazy import that is marked as "at_startup" will print a message if it is actually resolved after the startup, so that the developer know that (s)he can remove the flag.

Attachments (1)

trac_14722-lazy_import_at_startup-nt.patch (5.8 KB) - added by nthiery 7 years ago.

Download all attachments as: .zip

Change History (6)

Changed 7 years ago by nthiery

comment:1 Changed 7 years ago by nthiery

  • Cc rishi jason rlm mhansen SimonKing added; sage-combinat removed
  • Status changed from new to needs_review

comment:2 Changed 7 years ago by tscrim

I'm happy with the patch; are there any objections?

Best,
Travis

comment:3 Changed 7 years ago by tscrim

  • Reviewers set to Travis Scrimshaw
  • Status changed from needs_review to positive_review

Since there are no objections, I'm setting this to positive review.

comment:4 Changed 7 years ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:5 Changed 7 years ago by jdemeyer

  • Merged in set to sage-5.12.beta1
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.