#14767: Fix import_statements for lazy imported objects
-------------------------------------+--------------------------------------
       Reporter:  tmonteil           |         Owner:  jason                    
   
           Type:  defect             |        Status:  needs_info               
   
       Priority:  major              |     Milestone:  sage-5.11                
   
      Component:  misc               |    Resolution:                           
   
       Keywords:  days49             |   Work issues:  Do we want the bonus 
feature
Report Upstream:  N/A                |     Reviewers:  Nicolas M. Thiéry        
   
        Authors:  Vincent Delecroix  |     Merged in:                           
   
   Dependencies:                     |      Stopgaps:                           
   
-------------------------------------+--------------------------------------
Changes (by {'newvalue': u'Vincent Delecroix', 'oldvalue': ''}):

  * status:  needs_review => needs_info
  * reviewer:  => Nicolas M. Thiéry
  * work_issues:  => Do we want the bonus feature
  * author:  => Vincent Delecroix


Old description:

> Here is an example:
> {{{
> sage: import_statements('NN')
> from sage.misc.lazy_import import NN
> sage: from sage.misc.lazy_import import NN
> ...
> ImportError: cannot import name NN
> }}}
>
> That's because `NN` is a not-yet-resolved lazy imported object.
>
> solution 1: the default value for ``lazy`` could possibly be set to True
> for lazy imported objects (original proposition of the ticket)
>
> solution 2: if the object is a `LazyImport` then get the corresponding
> object with `._get_object`
> (solution implemented in the ticket)
>
> With the patch applied
> {{{
> sage: import_statements(NN)
> from sage.rings.semirings.non_negative_integer_semiring import NN
> sage: import_statements('NN')
> from sage.rings.semirings.non_negative_integer_semiring import NN
> }}}

New description:

 Here is an example:
 {{{
 sage: import_statements('NN')
 from sage.misc.lazy_import import NN
 sage: from sage.misc.lazy_import import NN
 ...
 ImportError: cannot import name NN
 }}}

 That's because `NN` is a not-yet-resolved lazy imported object.

 Solution: if the object is a `LazyImport` then get the corresponding
 object with `._get_object`. With the patch applied:
 {{{
 sage: import_statements(NN)
 from sage.rings.semirings.non_negative_integer_semiring import NN
 sage: import_statements('NN')
 from sage.rings.semirings.non_negative_integer_semiring import NN
 }}}

 Potential bonus feature: set lazy=True by default for lazy imported
 object:
 {{{
 sage: import_statements(NN)
 lazy_import('from sage.rings.semirings.non_negative_integer_semiring',
 'NN')
 }}}

--

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14767#comment:6>
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