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

Replace relative imports by absolute ones in modules #36597

Merged
merged 6 commits into from
Dec 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 20 additions & 13 deletions src/sage/modules/all.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#*****************************************************************************
# *****************************************************************************
# Copyright (C) 2005 William Stein <wstein@gmail.com>
#
# Distributed under the terms of the GNU General Public License (GPL)
Expand All @@ -11,23 +11,30 @@
# The full text of the GPL is available at:
#
# http://www.gnu.org/licenses/
#*****************************************************************************
# *****************************************************************************

from .free_module import FreeModule, VectorSpace, span
from sage.modules.free_module import FreeModule, VectorSpace, span

from .free_quadratic_module import (FreeQuadraticModule, QuadraticSpace,
InnerProductSpace)
from sage.modules.free_quadratic_module import (
FreeQuadraticModule,
QuadraticSpace,
InnerProductSpace,
)

from .free_module_element import (vector, free_module_element, zero_vector,
random_vector)
from sage.modules.free_module_element import (
vector,
free_module_element,
zero_vector,
random_vector,
)

from .vector_space_morphism import linear_transformation
from sage.modules.vector_space_morphism import linear_transformation

from .with_basis.all import *
from sage.modules.with_basis.all import *

from sage.misc.lazy_import import lazy_import

lazy_import('sage.modules.filtered_vector_space', 'FilteredVectorSpace')
lazy_import('sage.modules.multi_filtered_vector_space', 'MultiFilteredVectorSpace')
lazy_import('sage.modules.free_quadratic_module_integer_symmetric', 'IntegralLattice')
lazy_import('sage.modules.torsion_quadratic_module', 'TorsionQuadraticForm')
lazy_import("sage.modules.filtered_vector_space", "FilteredVectorSpace")
lazy_import("sage.modules.multi_filtered_vector_space", "MultiFilteredVectorSpace")
lazy_import("sage.modules.free_quadratic_module_integer_symmetric", "IntegralLattice")
lazy_import("sage.modules.torsion_quadratic_module", "TorsionQuadraticForm")
2 changes: 1 addition & 1 deletion src/sage/modules/complex_double_vector.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@
# http://www.gnu.org/licenses/
###############################################################################

from .vector_complex_double_dense import Vector_complex_double_dense
from sage.modules.vector_complex_double_dense import Vector_complex_double_dense

ComplexDoubleVectorSpaceElement = Vector_complex_double_dense
92 changes: 56 additions & 36 deletions src/sage/modules/free_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,33 +177,41 @@
###########################################################################

import itertools
from warnings import warn

from . import free_module_element
import sage.matrix.matrix_space
import sage.misc.latex as latex

from sage.modules.module import Module
import sage.rings.ring as ring
import sage.rings.abc
import sage.rings.integer_ring
import sage.rings.rational_field
import sage.rings.infinity
import sage.rings.integer
from sage.categories.principal_ideal_domains import PrincipalIdealDomains
from sage.categories.integral_domains import IntegralDomains
import sage.rings.integer_ring
import sage.rings.rational_field
import sage.rings.ring as ring
from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
from sage.categories.integral_domains import IntegralDomains
from sage.categories.principal_ideal_domains import PrincipalIdealDomains
from sage.misc.cachefunc import cached_method
from sage.misc.lazy_attribute import lazy_attribute
from sage.misc.lazy_import import LazyImport
from sage.misc.randstate import current_randstate
from sage.modules import free_module_element
from sage.modules.module import Module
from sage.rings.finite_rings.finite_field_base import FiniteField
from sage.structure.factory import UniqueFactory
from sage.structure.richcmp import (
op_EQ,
op_GE,
op_GT,
op_LE,
op_LT,
op_NE,
revop,
rich_to_bool,
richcmp,
richcmp_method,
richcmp_not_equal,
)
from sage.structure.sequence import Sequence
from sage.structure.richcmp import (richcmp_method, rich_to_bool, richcmp,
richcmp_not_equal, revop,
op_LT,op_LE,op_EQ,op_NE,op_GT,op_GE)
from sage.misc.cachefunc import cached_method
from sage.misc.lazy_import import LazyImport

from warnings import warn

###############################################################################
#
Expand All @@ -226,7 +234,7 @@ def create_key(self, base_ring, rank, sparse=False, inner_product_matrix=None):
"""
rank = int(sage.rings.integer.Integer(rank))

if not (inner_product_matrix is None):
if inner_product_matrix is not None:
inner_product_matrix = sage.matrix.matrix_space.MatrixSpace(base_ring, rank)(inner_product_matrix)
inner_product_matrix.set_immutable()

Expand All @@ -253,7 +261,7 @@ def create_object(self, version, key):
base_ring, rank, sparse, inner_product_matrix = key

if inner_product_matrix is not None:
from .free_quadratic_module import FreeQuadraticModule
from sage.modules.free_quadratic_module import FreeQuadraticModule
return FreeQuadraticModule(base_ring, rank, inner_product_matrix=inner_product_matrix, sparse=sparse)

if not isinstance(sparse,bool):
Expand Down Expand Up @@ -1784,7 +1792,7 @@ def quotient_module(self, sub, check=True):
sub = self.submodule(sub)
except (TypeError, ArithmeticError):
raise ArithmeticError("sub must be a subspace of self")
from .quotient_module import QuotientModule_free_ambient
from sage.modules.quotient_module import QuotientModule_free_ambient
return QuotientModule_free_ambient(self, sub)

def __truediv__(self, sub):
Expand Down Expand Up @@ -1821,7 +1829,9 @@ def free_resolution(self, *args, **kwds):
[ z x*z]
0 <-- C_0 <-------------- C_1 <-- 0
"""
from sage.rings.polynomial.multi_polynomial_libsingular import MPolynomialRing_libsingular
from sage.rings.polynomial.multi_polynomial_libsingular import (
MPolynomialRing_libsingular,
)
if isinstance(self.base_ring(), MPolynomialRing_libsingular):
from sage.homology.free_resolution import FiniteFreeResolution_singular
return FiniteFreeResolution_singular(self, *args, **kwds)
Expand Down Expand Up @@ -1854,13 +1864,19 @@ def graded_free_resolution(self, *args, **kwds):
sage: N.graded_free_resolution(degrees=[2, 1, 3], shifts=[2, 3]) # needs sage.libs.singular
S(-2)⊕S(-3) <-- S(-6)⊕S(-8) <-- 0
"""
from sage.rings.polynomial.multi_polynomial_libsingular import MPolynomialRing_libsingular
from sage.rings.polynomial.multi_polynomial_libsingular import (
MPolynomialRing_libsingular,
)
if isinstance(self.base_ring(), MPolynomialRing_libsingular):
from sage.homology.graded_resolution import GradedFiniteFreeResolution_singular
from sage.homology.graded_resolution import (
GradedFiniteFreeResolution_singular,
)
return GradedFiniteFreeResolution_singular(self, *args, **kwds)

if isinstance(self, FreeModule_generic):
from sage.homology.graded_resolution import GradedFiniteFreeResolution_free_module
from sage.homology.graded_resolution import (
GradedFiniteFreeResolution_free_module,
)
return GradedFiniteFreeResolution_free_module(self, *args, **kwds)

raise NotImplementedError("the module must be a free module or "
Expand Down Expand Up @@ -1991,7 +2007,7 @@ def construction(self):
# Should there be a category for free modules accepting it as hom space?
# See similar method for FreeModule_generic_field class
def _Hom_(self, Y, category):
from .free_module_homspace import FreeModuleHomspace
from sage.modules.free_module_homspace import FreeModuleHomspace
return FreeModuleHomspace(self, Y, category)

def dense_module(self):
Expand Down Expand Up @@ -4084,7 +4100,9 @@ def span_of_basis(self, basis, base_ring=None, check=True, already_echelonized=F
if base_ring is None or base_ring == self.base_ring():
try:
if self.is_dense():
from .free_module_integer import FreeModule_submodule_with_basis_integer
from sage.modules.free_module_integer import (
FreeModule_submodule_with_basis_integer,
)
return FreeModule_submodule_with_basis_integer(self.ambient_module(),
basis=basis, check=check,
already_echelonized=already_echelonized,
Expand Down Expand Up @@ -4299,7 +4317,7 @@ def quotient_module(self, sub, check=True, **kwds):
except (TypeError, ArithmeticError):
raise ArithmeticError("sub must be a subspace of self")
if self.base_ring() == sage.rings.integer_ring.ZZ:
from .fg_pid.fgp_module import FGP_Module
from sage.modules.fg_pid.fgp_module import FGP_Module
return FGP_Module(self, sub, check=False, **kwds)

raise NotImplementedError("quotients of modules over rings other than fields or ZZ is not fully implemented")
Expand Down Expand Up @@ -4376,9 +4394,9 @@ def _Hom_(self, Y, category):
(number fields and quotient fields and metric spaces)
"""
if Y.base_ring().is_field():
from . import vector_space_homspace
from sage.modules import vector_space_homspace
return vector_space_homspace.VectorSpaceHomspace(self, Y, category)
from . import free_module_homspace
from sage.modules import free_module_homspace
return free_module_homspace.FreeModuleHomspace(self, Y, category)

def scale(self, other):
Expand Down Expand Up @@ -5127,7 +5145,7 @@ def quotient_module(self, sub, check=True):
except (TypeError, ArithmeticError):
raise ArithmeticError("sub must be a subspace of self")
A, L = self.__quotient_matrices(sub)
from . import quotient_module
from sage.modules import quotient_module
return quotient_module.FreeModule_ambient_field_quotient(self, sub, A, L)

def __quotient_matrices(self, sub):
Expand Down Expand Up @@ -5370,8 +5388,8 @@ def _coerce_map_from_(self, M):
sage: V = QQ^2
sage: V.coerce_map_from(M)
"""
from sage.modules.submodule import Submodule_free_ambient
from sage.modules.quotient_module import FreeModule_ambient_field_quotient
from sage.modules.submodule import Submodule_free_ambient

if isinstance(M, FreeModule_ambient_field_quotient):
# No forgetful map.
Expand Down Expand Up @@ -5732,7 +5750,7 @@ def change_ring(self, R):
"""
if self.base_ring() is R:
return self
from .free_quadratic_module import is_FreeQuadraticModule
from sage.modules.free_quadratic_module import is_FreeQuadraticModule
if is_FreeQuadraticModule(self):
return FreeModule(R, self.rank(),
inner_product_matrix=self.inner_product_matrix(),
Expand Down Expand Up @@ -5989,8 +6007,8 @@ def _sympy_(self):
sage: (1, 2, 3) in sZZ3 # needs sympy
True
"""
from sympy import ProductSet
from sage.interfaces.sympy import sympy_init
from sympy import ProductSet
sympy_init()
return ProductSet(*([self.coordinate_ring()] * self.rank()))

Expand Down Expand Up @@ -8180,21 +8198,21 @@ def element_class(R, is_sparse):
"""
import sage.rings.integer_ring
if sage.rings.integer_ring.is_IntegerRing(R) and not is_sparse:
from .vector_integer_dense import Vector_integer_dense
from sage.modules.vector_integer_dense import Vector_integer_dense
return Vector_integer_dense
elif sage.rings.rational_field.is_RationalField(R) and not is_sparse:
from .vector_rational_dense import Vector_rational_dense
from sage.modules.vector_rational_dense import Vector_rational_dense
return Vector_rational_dense
elif isinstance(R, sage.rings.abc.IntegerModRing) and not is_sparse:
if R.order() == 2:
try:
from .vector_mod2_dense import Vector_mod2_dense
from sage.modules.vector_mod2_dense import Vector_mod2_dense
except ImportError:
pass
else:
return Vector_mod2_dense
try:
from .vector_modn_dense import Vector_modn_dense, MAX_MODULUS
from sage.modules.vector_modn_dense import MAX_MODULUS, Vector_modn_dense
except ImportError:
pass
else:
Expand All @@ -8210,7 +8228,9 @@ def element_class(R, is_sparse):
return Vector_real_double_dense
elif isinstance(R, sage.rings.abc.ComplexDoubleField) and not is_sparse:
try:
from sage.modules.vector_complex_double_dense import Vector_complex_double_dense
from sage.modules.vector_complex_double_dense import (
Vector_complex_double_dense,
)
except ImportError:
pass
else:
Expand Down
6 changes: 2 additions & 4 deletions src/sage/modules/free_module_morphism.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,10 @@
# be coercible into vector space of appropriate dimension.

import sage.modules.free_module as free_module
from . import matrix_morphism
from sage.categories.morphism import Morphism
from sage.modules import free_module_homspace, matrix_morphism
from sage.structure.richcmp import rich_to_bool, richcmp
from sage.structure.sequence import Sequence
from sage.structure.richcmp import richcmp, rich_to_bool

from . import free_module_homspace


def is_FreeModuleMorphism(x):
Expand Down
4 changes: 2 additions & 2 deletions src/sage/modules/free_quadratic_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
import sage.misc.latex as latex
import sage.rings.ring as ring
from sage.categories.principal_ideal_domains import PrincipalIdealDomains
from . import free_module
from sage.modules import free_module

# #############################################################################
#
Expand Down Expand Up @@ -154,7 +154,7 @@ def FreeQuadraticModule(base_ring, rank, inner_product_matrix,

if key in _cache:
M = _cache[key]()
if not (M is None):
if M is not None:
return M

if not base_ring.is_commutative():
Expand Down
9 changes: 5 additions & 4 deletions src/sage/modules/quotient_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

from .free_module import (Module_free_ambient,
FreeModule_ambient,
FreeModule_ambient_field)

from sage.modules.free_module import (
FreeModule_ambient,
FreeModule_ambient_field,
Module_free_ambient,
)

###############################################################################
#
Expand Down
2 changes: 1 addition & 1 deletion src/sage/modules/real_double_vector.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
# Distributed under the terms of the GNU General Public License (GPL)
# http://www.gnu.org/licenses/
###############################################################################
from .vector_real_double_dense import Vector_real_double_dense
from sage.modules.vector_real_double_dense import Vector_real_double_dense

RealDoubleVectorSpaceElement = Vector_real_double_dense
10 changes: 6 additions & 4 deletions src/sage/modules/submodule.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,12 @@
# https://www.gnu.org/licenses/
# ****************************************************************************

from sage.modules.free_module import (basis_seq,
Module_free_ambient,
FreeModule_ambient_domain)
from .quotient_module import QuotientModule_free_ambient
from sage.modules.free_module import (
FreeModule_ambient_domain,
Module_free_ambient,
basis_seq,
)
from sage.modules.quotient_module import QuotientModule_free_ambient


class Submodule_free_ambient(Module_free_ambient):
Expand Down
2 changes: 1 addition & 1 deletion src/sage/modules/vector_callable_symbolic_dense.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
# http://www.gnu.org/licenses/
#*****************************************************************************

from . import free_module_element
from sage.modules import free_module_element
from sage.symbolic.ring import SR


Expand Down
2 changes: 1 addition & 1 deletion src/sage/modules/vector_mod2_dense.pxd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from .free_module_element cimport FreeModuleElement
from sage.modules.free_module_element cimport FreeModuleElement
from sage.libs.m4ri cimport mzd_t


Expand Down
Loading