Skip to content

Commit f44e081

Browse files
committed
Fix LazyImport
1 parent 94fe540 commit f44e081

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/sage/misc/lazy_import.pyx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,23 @@ that (s)he can remove the flag::
3636
UserWarning: Option ``at_startup=True`` for lazy import ZZ not needed anymore
3737
Integer Ring
3838
39+
.. WARNING::
40+
41+
After the first usage, the imported object is directly injected into the
42+
namespace; however, before that, the :class:`LazyImport` object
43+
is not exactly equivalent to the actual imported object. For example::
44+
45+
sage: from sage.misc.lazy_import import LazyImport
46+
sage: my_qqbar = LazyImport('sage.rings.qqbar', 'QQbar')
47+
sage: my_qqbar(5) == QQbar(5) # good
48+
True
49+
sage: isinstance(QQbar, Parent)
50+
True
51+
sage: isinstance(my_qqbar, Parent) # fails!
52+
False
53+
54+
To avoid this issue, you may execute the import inside the function instead.
55+
3956
.. SEEALSO:: :func:`lazy_import`, :class:`LazyImport`
4057
4158
AUTHOR:

src/sage/schemes/curves/projective_curve.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@
159159

160160
lazy_import('sage.interfaces.singular', 'singular')
161161
lazy_import('sage.rings.number_field.number_field', 'NumberField')
162-
lazy_import('sage.rings.qqbar', ['number_field_elements_from_algebraics', 'QQbar'])
163162

164163
from .curve import Curve_generic
165164

@@ -1452,6 +1451,7 @@ def ordinary_model(self):
14521451
"""
14531452
# helper function for extending the base field
14541453

1454+
from sage.rings.qqbar import number_field_elements_from_algebraics, QQbar
14551455
def extension(self):
14561456
F = self.base_ring()
14571457
pts = self.change_ring(F.embeddings(QQbar)[0]).rational_points()

0 commit comments

Comments
 (0)