#14767: Fix import_statements for lazy imported objects
-------------------------------------+--------------------------------------
Reporter: tmonteil | Owner: jason
Type: defect | Status: positive_review
Priority: major | Milestone: sage-5.11
Component: misc | Resolution:
Keywords: days49 | Work issues:
Report Upstream: N/A | Reviewers: Nicolas M. ThiƩry
Authors: Vincent Delecroix | Merged in:
Dependencies: | Stopgaps:
-------------------------------------+--------------------------------------
Description changed by nthiery:
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: 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')
> }}}
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
}}}
A potential bonus feature would have been to set lazy=True by default for
lazy imported object:
{{{
sage: import_statements(NN)
lazy_import('from sage.rings.semirings.non_negative_integer_semiring',
'NN')
}}}
but the idea was dropped.
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14767#comment:11>
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.