Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sage.schemes: Modularization fixes (imports) #38142

Merged
merged 11 commits into from
Jul 24, 2024
6 changes: 3 additions & 3 deletions src/sage/schemes/affine/affine_homset.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@

from sage.misc.verbose import verbose
from sage.rings.integer_ring import ZZ
from sage.rings.real_mpfr import RR
from sage.rings.cc import CC
from sage.rings.rational_field import RationalField
from sage.categories.fields import Fields
from sage.categories.number_fields import NumberFields
Expand Down Expand Up @@ -268,6 +266,7 @@
if hasattr(X.base_ring(), 'precision'):
numerical = True
verbose("Warning: computations in the numerical fields are inexact;points may be computed partially or incorrectly.", level=0)
from sage.rings.real_mpfr import RR
zero_tol = RR(kwds.pop('zero_tolerance', 10**(-10)))
if zero_tol <= 0:
raise ValueError("tolerance must be positive")
Expand Down Expand Up @@ -438,7 +437,7 @@
"""
from sage.schemes.affine.affine_space import AffineSpace_generic
if F is None:
F = CC
from sage.rings.cc import CC as F

Check warning on line 440 in src/sage/schemes/affine/affine_homset.py

View check run for this annotation

Codecov / codecov/patch

src/sage/schemes/affine/affine_homset.py#L440

Added line #L440 was not covered by tests
if F not in Fields() or not hasattr(F, 'precision'):
raise TypeError('F must be a numerical field')
X = self.codomain()
Expand All @@ -455,6 +454,7 @@
return []

# if X zero-dimensional
from sage.rings.real_mpfr import RR
zero_tol = RR(kwds.pop('zero_tolerance', 10**(-10)))
if zero_tol <= 0:
raise ValueError("tolerance must be positive")
Expand Down
5 changes: 3 additions & 2 deletions src/sage/schemes/affine/affine_morphism.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@

import sage.rings.abc

from sage.calculus.functions import jacobian

from sage.categories.homset import Hom, End
from sage.categories.fields import Fields

Expand Down Expand Up @@ -896,6 +894,9 @@ def jacobian(self):
return self.__jacobian
except AttributeError:
pass

from sage.calculus.functions import jacobian

self.__jacobian = jacobian(list(self), self.domain().ambient_space().gens())
return self.__jacobian

Expand Down
2 changes: 1 addition & 1 deletion src/sage/schemes/affine/affine_point.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ def global_height(self, prec=None):
else:
R = RealField(prec)
H = max([self[i].abs() for i in range(self.codomain().ambient_space().dimension_relative())])
return R(max(H,1)).log()
return R(max(H, 1)).log()
if self.domain().base_ring() in _NumberFields or isinstance(self.domain().base_ring(), sage.rings.abc.Order):
return max([self[i].global_height(prec) for i in range(self.codomain().ambient_space().dimension_relative())])
else:
Expand Down
7 changes: 5 additions & 2 deletions src/sage/schemes/affine/affine_subscheme.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
# ****************************************************************************

from sage.categories.fields import Fields
from sage.interfaces.singular import singular
from sage.modules.free_module_element import vector
from sage.schemes.generic.algebraic_scheme import AlgebraicScheme_subscheme

from .affine_morphism import SchemeMorphism_polynomial_affine_subscheme_field
Expand Down Expand Up @@ -418,6 +416,7 @@ def intersection_multiplicity(self, X, P):
Iloc = R.ideal([f(chng_coords) for f in I.gens()])
Jloc = R.ideal([f(chng_coords) for f in J.gens()])
# compute the intersection multiplicity with Serre's Tor formula using Singular
from sage.interfaces.singular import singular
singular.lib("homolog.lib")
i = 0
s = 0
Expand Down Expand Up @@ -492,6 +491,8 @@ def multiplicity(self, P):
except TypeError:
raise TypeError("(=%s) is not a point on (=%s)" % (P, self))

from sage.interfaces.singular import singular

# Apply a linear change of coordinates to self so that P is sent to the origin
# and then compute the multiplicity of the local ring of the translated subscheme
# corresponding to the point (0,...,0)
Expand Down Expand Up @@ -578,6 +579,8 @@ def tangent_space(self, p):
sage: _.dimension()
1
"""
from sage.modules.free_module_element import vector

A = self.ambient_space()
R = A.coordinate_ring()
gens = R.gens()
Expand Down
18 changes: 10 additions & 8 deletions src/sage/schemes/berkovich/berkovich_cp_element.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,19 @@
# https://www.gnu.org/licenses/
# *****************************************************************************

from sage.structure.element import Element
from sage.structure.element import Expression
import sage.rings.abc

from sage.misc.lazy_import import lazy_import
from sage.rings.infinity import Infinity
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.real_mpfr import RR, RealNumber
from sage.rings.padics.padic_generic_element import pAdicGenericElement
from sage.rings.padics.padic_base_generic import pAdicBaseGeneric
from sage.schemes.projective.projective_space import ProjectiveSpace
from sage.schemes.projective.projective_point import SchemeMorphism_point_projective_field
from sage.rings.rational_field import QQ
from sage.rings.integer_ring import ZZ
from sage.rings.infinity import Infinity
from sage.schemes.projective.projective_space import ProjectiveSpace
from sage.structure.element import Element, Expression

lazy_import('sage.rings.padics.padic_generic_element', 'pAdicGenericElement')
lazy_import('sage.rings.padics.padic_base_generic', 'pAdicBaseGeneric')


class Berkovich_Element(Element):
Expand Down
19 changes: 11 additions & 8 deletions src/sage/schemes/berkovich/berkovich_space.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,21 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

import sage.rings.abc

from sage.categories.number_fields import NumberFields
from sage.categories.topological_spaces import TopologicalSpaces
from sage.misc.lazy_import import lazy_import
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.schemes.affine.affine_space import AffineSpace_generic
from sage.schemes.berkovich.berkovich_cp_element import (Berkovich_Element_Cp_Affine,
Berkovich_Element_Cp_Projective)
from sage.structure.parent import Parent
from sage.schemes.affine.affine_space import AffineSpace_generic
from sage.schemes.projective.projective_space import ProjectiveSpace_ring, ProjectiveSpace
from sage.structure.parent import Parent
from sage.structure.unique_representation import UniqueRepresentation
from sage.categories.number_fields import NumberFields
import sage.rings.abc
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.number_field.number_field_ideal import NumberFieldFractionalIdeal
from sage.categories.topological_spaces import TopologicalSpaces

lazy_import('sage.rings.number_field.number_field_ideal', 'NumberFieldFractionalIdeal')


def is_Berkovich(space) -> bool:
Expand Down
21 changes: 9 additions & 12 deletions src/sage/schemes/curves/affine_curve.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,26 +124,21 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

import sage.rings.abc
from builtins import sum as add

from sage.misc.lazy_attribute import lazy_attribute
from sage.misc.cachefunc import cached_method
import sage.rings.abc

from sage.arith.misc import binomial
from sage.interfaces.singular import singular
from builtins import sum as add

from sage.categories.fields import Fields
from sage.categories.finite_fields import FiniteFields
from sage.categories.homset import Hom, End, hom
from sage.categories.number_fields import NumberFields

from sage.matrix.constructor import matrix

from sage.misc.cachefunc import cached_method
from sage.misc.lazy_attribute import lazy_attribute
from sage.misc.lazy_import import lazy_import

from sage.rings.infinity import infinity
from sage.rings.polynomial.multi_polynomial_element import degree_lowest_rational_function
from sage.rings.number_field.number_field import NumberField
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.rings.rational_field import RationalField
from sage.rings.infinity import infinity
Expand All @@ -152,6 +147,10 @@
from sage.schemes.affine.affine_subscheme import (AlgebraicScheme_subscheme_affine,
AlgebraicScheme_subscheme_affine_field)

lazy_import('sage.interfaces.singular', 'singular')
lazy_import('sage.rings.number_field.number_field', 'NumberField')
lazy_import('sage.rings.qqbar', 'number_field_elements_from_algebraics')

from .curve import Curve_generic

from .point import (AffineCurvePoint_field,
Expand All @@ -164,8 +163,6 @@

from .closed_point import IntegralAffineCurveClosedPoint

lazy_import('sage.rings.qqbar', 'number_field_elements_from_algebraics')


class AffineCurve(Curve_generic, AlgebraicScheme_subscheme_affine):
"""
Expand Down
25 changes: 11 additions & 14 deletions src/sage/schemes/curves/projective_curve.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,32 +136,30 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

from sage.misc.lazy_attribute import lazy_attribute
from sage.misc.cachefunc import cached_method
from builtins import sum as add

from sage.categories.fields import Fields
from sage.categories.homset import hom, Hom, End
from sage.categories.number_fields import NumberFields

from sage.interfaces.singular import singular
from sage.matrix.constructor import matrix
from builtins import sum as add
from sage.misc.cachefunc import cached_method
from sage.misc.lazy_attribute import lazy_attribute
from sage.misc.lazy_import import lazy_import
from sage.misc.persist import register_unpickle_override
from sage.misc.sage_eval import sage_eval

from sage.rings.polynomial.multi_polynomial_element import degree_lowest_rational_function
from sage.rings.integer import Integer
from sage.rings.integer_ring import IntegerRing
from sage.rings.number_field.number_field import NumberField
from sage.rings.polynomial.multi_polynomial_element import degree_lowest_rational_function
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.rings.qqbar import (number_field_elements_from_algebraics,
QQbar)
from sage.rings.rational_field import RationalField
from sage.rings.integer import Integer

from sage.schemes.projective.projective_space import ProjectiveSpace, ProjectiveSpace_ring

from sage.schemes.projective.projective_subscheme import (AlgebraicScheme_subscheme_projective,
AlgebraicScheme_subscheme_projective_field)

lazy_import('sage.interfaces.singular', 'singular')
lazy_import('sage.rings.number_field.number_field', 'NumberField')
lazy_import('sage.rings.qqbar', ['number_field_elements_from_algebraics', 'QQbar'])

from .curve import Curve_generic

from .point import (ProjectiveCurvePoint_field,
Expand All @@ -173,7 +171,6 @@
IntegralProjectivePlaneCurvePoint_finite_field)

from .closed_point import IntegralProjectiveCurveClosedPoint
from sage.misc.persist import register_unpickle_override


class ProjectiveCurve(Curve_generic, AlgebraicScheme_subscheme_projective):
Expand Down
9 changes: 6 additions & 3 deletions src/sage/schemes/curves/zariski_vankampen.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@
# https://www.gnu.org/licenses/
# ****************************************************************************
import itertools
from copy import copy

from copy import copy
from itertools import combinations

from sage.combinat.permutation import Permutation
from sage.functions.generalized import sign
from sage.geometry.voronoi_diagram import VoronoiDiagram
Expand All @@ -53,10 +54,10 @@
from sage.groups.finitely_presented import wrap_FpGroup
from sage.groups.free_group import FreeGroup
from sage.groups.perm_gps.permgroup_named import SymmetricGroup
from sage.libs.braiding import leftnormalform, rightnormalform
from sage.matrix.constructor import matrix
from sage.misc.cachefunc import cached_function
from sage.misc.flatten import flatten
from sage.misc.lazy_import import lazy_import
from sage.misc.misc_c import prod
from sage.parallel.decorate import parallel
from sage.rings.complex_interval_field import ComplexIntervalField
Expand All @@ -67,7 +68,9 @@
from sage.rings.qqbar import QQbar
from sage.rings.rational_field import QQ
from sage.rings.real_mpfr import RealField
from .constructor import Curve
from sage.schemes.curves.constructor import Curve

lazy_import('sage.libs.braiding', ['leftnormalform', 'rightnormalform'])

roots_interval_cache = {}

Expand Down
3 changes: 2 additions & 1 deletion src/sage/schemes/cyclic_covers/charpoly_frobenius.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
# https://www.gnu.org/licenses/
# *****************************************************************************
from sage.rings.integer_ring import ZZ
from sage.functions.log import log
from sage.misc.lazy_import import lazy_import
lazy_import("sage.functions.log", "log")


def charpoly_frobenius(frob_matrix, charpoly_prec, p, weight, a=1, known_factor=[1]):
Expand Down
21 changes: 11 additions & 10 deletions src/sage/schemes/cyclic_covers/cycliccover_finite_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,19 +66,20 @@
# https://www.gnu.org/licenses/
# *****************************************************************************


from sage.arith.misc import euler_phi
from sage.functions.other import ceil, binomial, floor
from sage.functions.log import log
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.rings.power_series_ring import PowerSeriesRing
from sage.rings.padics.factory import Zp, Zq, Qq
from sage.rings.integer_ring import ZZ
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
from sage.matrix.constructor import matrix, zero_matrix
from sage.modules.free_module_element import vector
from sage.schemes.hyperelliptic_curves.hypellfrob import interval_products
from sage.misc.cachefunc import cached_method
from sage.misc.lazy_import import lazy_import
from sage.modules.free_module_element import vector
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
from sage.rings.integer_ring import ZZ
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.rings.power_series_ring import PowerSeriesRing

lazy_import("sage.functions.log", "log")
lazy_import("sage.functions.other", ["ceil", "binomial", "floor"])
lazy_import('sage.rings.padics.factory', ['Zp', 'Zq', 'Qq'])
lazy_import('sage.schemes.hyperelliptic_curves.hypellfrob', 'interval_products')

from .charpoly_frobenius import charpoly_frobenius
from . import cycliccover_generic
Expand Down
8 changes: 5 additions & 3 deletions src/sage/schemes/elliptic_curves/BSD.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
"Birch and Swinnerton-Dyer formulas"

from sage.arith.misc import prime_divisors
from sage.misc.lazy_import import lazy_import
from sage.rings.infinity import Infinity
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.infinity import Infinity
from sage.rings.number_field.number_field import QuadraticField
from sage.functions.other import ceil

lazy_import("sage.functions.other", "ceil")
lazy_import("sage.rings.number_field.number_field", "QuadraticField")


class BSD_data:
Expand Down
3 changes: 1 addition & 2 deletions src/sage/schemes/elliptic_curves/cm.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,10 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

from sage.interfaces.magma import magma
from sage.rings.integer import Integer
from sage.rings.rational_field import QQ
from sage.rings.integer_ring import ZZ
from sage.rings.integer_ring import IntegerRing
from sage.rings.number_field.number_field import is_fundamental_discriminant
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing

from sage.misc.cachefunc import cached_function
Expand Down Expand Up @@ -121,6 +119,7 @@
return sage.libs.arb.arith.hilbert_class_polynomial(D)

if algorithm == "magma":
from sage.interfaces.magma import magma

Check warning on line 122 in src/sage/schemes/elliptic_curves/cm.py

View check run for this annotation

Codecov / codecov/patch

src/sage/schemes/elliptic_curves/cm.py#L122

Added line #L122 was not covered by tests
magma.eval("R<x> := PolynomialRing(IntegerRing())")
f = str(magma.eval("HilbertClassPolynomial(%s)" % D))
return IntegerRing()['x'](f)
Expand Down
2 changes: 1 addition & 1 deletion src/sage/schemes/elliptic_curves/ell_curve_isogeny.py
Original file line number Diff line number Diff line change
Expand Up @@ -2903,7 +2903,7 @@ def scaling_factor(self):

Check for :issue:`36638`::

sage: phi.scaling_factor().parent() # needs sage.rings.finite_rings
sage: phi.scaling_factor().parent() # needs sage.rings.finite_rings
Finite Field in z2 of size 257^2

ALGORITHM: The "inner" isogeny is normalized by construction,
Expand Down
2 changes: 1 addition & 1 deletion src/sage/schemes/elliptic_curves/ell_generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ def _latex_(self):
"""
Internal function. Return a latex string for this elliptic curve.

Users will normally use latex() instead.
Users will normally use :func:`latex` instead.

EXAMPLES::

Expand Down
Loading
Loading