diff --git a/src/.relint.yml b/src/.relint.yml index 86684ad1040..2c9faa323a7 100644 --- a/src/.relint.yml +++ b/src/.relint.yml @@ -49,6 +49,6 @@ Hint: namespace package. Type import_statements("SOME_IDENTIFIER") to find a more specific import, Hint: or use 'sage --fiximports' to fix automatically in the source file. # Keep in sync with SAGE_ROOT/src/sage/misc/replace_dot_all.py - pattern: 'from\s+sage(|[.](arith|categories|combinat|ext|graphs(|[.]decompositions)|interfaces|libs|matrix|misc|numerical(|[.]backends)|rings|sets))[.]all\s+import' - filePattern: '.*[.](py|pyx|pxi)$' - error: false # Make this a warning instead of an error for now + pattern: 'from\s+sage(|[.](arith|categories|combinat|ext|graphs(|[.]decompositions)|interfaces|libs|matrix|misc|numerical(|[.]backends)|rings(|[.]finite_rings)|sets))[.]all\s+import' + # imports from .all are allowed in all.py; also allow in some modules that need sage.all + filePattern: '(.*/|)(?!(all|benchmark|dev_tools|parsing|sage_eval))[^/.]*[.](py|pyx|pxi)$' diff --git a/src/sage/algebras/affine_nil_temperley_lieb.py b/src/sage/algebras/affine_nil_temperley_lieb.py index 8aff4321abb..f7901ae314d 100644 --- a/src/sage/algebras/affine_nil_temperley_lieb.py +++ b/src/sage/algebras/affine_nil_temperley_lieb.py @@ -7,7 +7,7 @@ # Distributed under the terms of the GNU General Public License (GPL) # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.categories.all import AlgebrasWithBasis +from sage.categories.algebras_with_basis import AlgebrasWithBasis from sage.combinat.root_system.cartan_type import CartanType from sage.combinat.root_system.weyl_group import WeylGroup from sage.rings.ring import Ring diff --git a/src/sage/algebras/cluster_algebra.py b/src/sage/algebras/cluster_algebra.py index 62340be2072..eb005168275 100644 --- a/src/sage/algebras/cluster_algebra.py +++ b/src/sage/algebras/cluster_algebra.py @@ -354,7 +354,7 @@ from copy import copy -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.categories.homset import Hom from sage.categories.morphism import SetMorphism from sage.categories.rings import Rings diff --git a/src/sage/algebras/free_algebra.py b/src/sage/algebras/free_algebra.py index 7286f62ce27..3004878a378 100644 --- a/src/sage/algebras/free_algebra.py +++ b/src/sage/algebras/free_algebra.py @@ -149,7 +149,7 @@ from sage.structure.factory import UniqueFactory from sage.misc.cachefunc import cached_method -from sage.all import PolynomialRing +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.ring import Algebra from sage.categories.algebras_with_basis import AlgebrasWithBasis from sage.combinat.free_module import CombinatorialFreeModule @@ -282,7 +282,7 @@ def create_key(self, base_ring, arg1=None, arg2=None, PolRing = PolynomialRing(base_ring, *args, **kwds) if degrees is None: return (PolRing,) - from sage.all import TermOrder + from sage.rings.polynomial.term_order import TermOrder T = TermOrder(PolRing.term_order(), PolRing.ngens() + 1) varnames = list(PolRing.variable_names()) newname = 'x' diff --git a/src/sage/algebras/free_algebra_quotient.py b/src/sage/algebras/free_algebra_quotient.py index 4d5000b3df4..86e0cbfff32 100644 --- a/src/sage/algebras/free_algebra_quotient.py +++ b/src/sage/algebras/free_algebra_quotient.py @@ -359,7 +359,7 @@ def hamilton_quatalg(R): """ n = 3 from sage.algebras.free_algebra import FreeAlgebra - from sage.matrix.all import MatrixSpace + from sage.matrix.matrix_space import MatrixSpace A = FreeAlgebra(R, n, 'i') F = A.monoid() i, j, k = F.gens() diff --git a/src/sage/algebras/group_algebra.py b/src/sage/algebras/group_algebra.py index 6821a64f68f..c639106b239 100644 --- a/src/sage/algebras/group_algebra.py +++ b/src/sage/algebras/group_algebra.py @@ -35,8 +35,8 @@ # http://www.gnu.org/licenses/ #***************************************************************************** -from sage.rings.all import IntegerRing -from sage.categories.all import Rings +from sage.rings.integer_ring import IntegerRing +from sage.categories.rings import Rings from sage.categories.magmas import Magmas from sage.categories.additive_magmas import AdditiveMagmas from sage.categories.sets_cat import Sets diff --git a/src/sage/algebras/hecke_algebras/ariki_koike_algebra.py b/src/sage/algebras/hecke_algebras/ariki_koike_algebra.py index c1596761c99..5f21e1049b0 100644 --- a/src/sage/algebras/hecke_algebras/ariki_koike_algebra.py +++ b/src/sage/algebras/hecke_algebras/ariki_koike_algebra.py @@ -540,7 +540,7 @@ def dimension(self): sage: LT.dimension() 29160 """ - from sage.arith.all import factorial + from sage.arith.misc import factorial return self._r**self._n * factorial(self._n) def some_elements(self): diff --git a/src/sage/algebras/iwahori_hecke_algebra.py b/src/sage/algebras/iwahori_hecke_algebra.py index 6df42729b70..0b6696af043 100644 --- a/src/sage/algebras/iwahori_hecke_algebra.py +++ b/src/sage/algebras/iwahori_hecke_algebra.py @@ -30,10 +30,12 @@ from sage.structure.parent import Parent from sage.structure.unique_representation import UniqueRepresentation from sage.categories.realizations import Realizations, Category_realization_of_parent -from sage.categories.all import AlgebrasWithBasis, FiniteDimensionalAlgebrasWithBasis, CoxeterGroups +from sage.categories.algebras_with_basis import AlgebrasWithBasis +from sage.categories.finite_dimensional_algebras_with_basis import FiniteDimensionalAlgebrasWithBasis +from sage.categories.coxeter_groups import CoxeterGroups from sage.rings.integer_ring import ZZ from sage.rings.polynomial.laurent_polynomial_ring import LaurentPolynomialRing -from sage.arith.all import is_square +from sage.arith.misc import is_square from sage.combinat.root_system.coxeter_group import CoxeterGroup from sage.sets.family import Family from sage.combinat.free_module import CombinatorialFreeModule diff --git a/src/sage/algebras/lie_algebras/bch.py b/src/sage/algebras/lie_algebras/bch.py index 1cb3f0442cb..657b8c194a1 100644 --- a/src/sage/algebras/lie_algebras/bch.py +++ b/src/sage/algebras/lie_algebras/bch.py @@ -20,7 +20,7 @@ from sage.arith.misc import bernoulli from sage.categories.lie_algebras import LieAlgebras from sage.combinat.integer_vector import IntegerListsLex -from sage.arith.all import factorial +from sage.arith.misc import factorial from sage.rings.rational_field import QQ from sage.structure.element import canonical_coercion diff --git a/src/sage/algebras/lie_algebras/free_lie_algebra.py b/src/sage/algebras/lie_algebras/free_lie_algebra.py index af001d0fa57..207f8d63a8c 100644 --- a/src/sage/algebras/lie_algebras/free_lie_algebra.py +++ b/src/sage/algebras/lie_algebras/free_lie_algebra.py @@ -265,7 +265,7 @@ def graded_dimension(self, k): """ if k == 0: return 0 - from sage.arith.all import moebius + from sage.arith.misc import moebius s = len(self.lie_algebra_generators()) k = ZZ(k) # Make sure we have something that is in ZZ return sum(moebius(d) * s**(k // d) for d in k.divisors()) // k diff --git a/src/sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py b/src/sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py index c40e654e157..d10426501f2 100644 --- a/src/sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +++ b/src/sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py @@ -14,7 +14,7 @@ # (at your option) any later version. # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.arith.all import factorial +from sage.arith.misc import factorial from sage.misc.misc_c import prod from sage.misc.repr import repr_lincomb from sage.misc.latex import latex diff --git a/src/sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py b/src/sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py index b2cf3582793..46119ad45f1 100644 --- a/src/sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +++ b/src/sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py @@ -17,7 +17,7 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.sets.family import Family from .lie_conformal_algebra_element import LCAStructureCoefficientsElement from sage.categories.lie_conformal_algebras import LieConformalAlgebras diff --git a/src/sage/algebras/quatalg/quaternion_algebra.py b/src/sage/algebras/quatalg/quaternion_algebra.py index 58bc0da3d24..9a3128ccb31 100644 --- a/src/sage/algebras/quatalg/quaternion_algebra.py +++ b/src/sage/algebras/quatalg/quaternion_algebra.py @@ -35,9 +35,14 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.arith.all import (hilbert_conductor_inverse, hilbert_conductor, - factor, gcd, kronecker_symbol, valuation) -from sage.rings.all import RR, Integer +from sage.arith.misc import (hilbert_conductor_inverse, + hilbert_conductor, + factor, + gcd, + kronecker as kronecker_symbol, + valuation) +from sage.rings.real_mpfr import RR +from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.rational import Rational from sage.rings.finite_rings.finite_field_constructor import GF diff --git a/src/sage/algebras/schur_algebra.py b/src/sage/algebras/schur_algebra.py index b716db0ce94..ff960e56dd9 100644 --- a/src/sage/algebras/schur_algebra.py +++ b/src/sage/algebras/schur_algebra.py @@ -41,7 +41,7 @@ from sage.combinat.sf.sf import SymmetricFunctions from sage.combinat.symmetric_group_algebra import SymmetricGroupAlgebra from sage.combinat.tableau import SemistandardTableaux -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.matrix.constructor import Matrix from sage.misc.cachefunc import cached_method from sage.misc.flatten import flatten diff --git a/src/sage/algebras/shuffle_algebra.py b/src/sage/algebras/shuffle_algebra.py index 26c8a40f485..5d383f8dfab 100644 --- a/src/sage/algebras/shuffle_algebra.py +++ b/src/sage/algebras/shuffle_algebra.py @@ -972,7 +972,7 @@ def expansion_on_basis(self, w): sage: S.expansion_on_basis(Word('abab')) 2*B[aabb] + B[abab] """ - from sage.arith.all import factorial + from sage.arith.misc import factorial if not w: return self._alg.one() if len(w) == 1: diff --git a/src/sage/algebras/steenrod/steenrod_algebra.py b/src/sage/algebras/steenrod/steenrod_algebra.py index 49b281d9a49..978a3557a9d 100644 --- a/src/sage/algebras/steenrod/steenrod_algebra.py +++ b/src/sage/algebras/steenrod/steenrod_algebra.py @@ -455,7 +455,9 @@ from sage.combinat.free_module import CombinatorialFreeModule from sage.misc.lazy_attribute import lazy_attribute from sage.misc.cachefunc import cached_method -from sage.categories.all import ModulesWithBasis, tensor, Hom +from sage.categories.modules_with_basis import ModulesWithBasis +from sage.categories.tensor import tensor +from sage.categories.homset import Hom ###################################################### # the main class @@ -584,7 +586,7 @@ def __init__(self, p=2, basis='milnor', **kwds): sage: A1 == SteenrodAlgebra(2, profile=[2,1], basis='pst') False """ - from sage.arith.all import is_prime + from sage.arith.misc import is_prime from sage.categories.super_hopf_algebras_with_basis import SuperHopfAlgebrasWithBasis from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets diff --git a/src/sage/algebras/steenrod/steenrod_algebra_mult.py b/src/sage/algebras/steenrod/steenrod_algebra_mult.py index ec92c86fcc5..1fb52aba028 100644 --- a/src/sage/algebras/steenrod/steenrod_algebra_mult.py +++ b/src/sage/algebras/steenrod/steenrod_algebra_mult.py @@ -611,8 +611,9 @@ def multinomial_odd(list,p): sage: multinomial_odd([1,2,4], 107) 105 """ - from sage.rings.all import GF, Integer - from sage.arith.all import binomial + from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF + from sage.rings.integer import Integer + from sage.arith.misc import binomial n = sum(list) answer = 1 F = GF(p) diff --git a/src/sage/arith/multi_modular.pyx b/src/sage/arith/multi_modular.pyx index 2958315c346..766c9923404 100644 --- a/src/sage/arith/multi_modular.pyx +++ b/src/sage/arith/multi_modular.pyx @@ -16,7 +16,7 @@ from cysignals.memory cimport check_allocarray, check_reallocarray, sig_free from sage.libs.gmp.mpz cimport * from sage.rings.integer cimport Integer, smallInteger -from sage.arith.all import random_prime +from sage.arith.misc import random_prime from types import GeneratorType from sage.ext.stdsage cimport PY_NEW from cpython.object cimport PyObject_RichCompare diff --git a/src/sage/arith/numerical_approx.pyx b/src/sage/arith/numerical_approx.pyx index b53d7679099..005b88621c4 100644 --- a/src/sage/arith/numerical_approx.pyx +++ b/src/sage/arith/numerical_approx.pyx @@ -15,7 +15,9 @@ Generic numerical approximation function from sage.structure.parent cimport Parent from sage.structure.element cimport parent cdef Parent CDF -from sage.rings.all import RealField, ComplexField, CDF +from sage.rings.real_mpfr import RealField +from sage.rings.complex_mpfr import ComplexField +from sage.rings.complex_double import CDF def numerical_approx_generic(x, prec): diff --git a/src/sage/coding/bch_code.py b/src/sage/coding/bch_code.py index 1666c5c4380..96d4691e554 100644 --- a/src/sage/coding/bch_code.py +++ b/src/sage/coding/bch_code.py @@ -27,8 +27,8 @@ from sage.modules.free_module_element import vector from sage.misc.misc_c import prod from sage.categories.fields import Fields -from sage.arith.all import gcd -from sage.rings.all import Zmod +from sage.arith.misc import gcd +from sage.rings.finite_rings.integer_mod_ring import IntegerModRing as Zmod from .cyclic_code import CyclicCode from .grs_code import GeneralizedReedSolomonCode diff --git a/src/sage/coding/binary_code.pyx b/src/sage/coding/binary_code.pyx index 408c1f55634..630cba27f36 100644 --- a/src/sage/coding/binary_code.pyx +++ b/src/sage/coding/binary_code.pyx @@ -4103,7 +4103,7 @@ cdef class BinaryCodeClassifier: m = BinaryCode(matrix(ZZ, rs)) m_aut_gp_gens, m_labeling, m_size, m_base = self._aut_gp_and_can_label(m) - from sage.arith.all import factorial + from sage.arith.misc import factorial if True: # size*factorial(n-B.ncols) == m_size: if len(m_aut_gp_gens) == 0: diff --git a/src/sage/coding/code_bounds.py b/src/sage/coding/code_bounds.py index 430f3a44de1..766a8f266cf 100644 --- a/src/sage/coding/code_bounds.py +++ b/src/sage/coding/code_bounds.py @@ -173,11 +173,14 @@ # https://www.gnu.org/licenses/ # **************************************************************************** +from sage.arith.misc import binomial, is_prime_power from sage.libs.gap.libgap import libgap -from sage.rings.all import QQ, RR, ZZ, RDF -from sage.arith.misc import is_prime_power -from sage.arith.all import binomial from sage.misc.functional import sqrt, log +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ +from sage.rings.real_double import RDF +from sage.rings.real_mpfr import RR + from .delsarte_bounds import (delsarte_bound_hamming_space, delsarte_bound_additive_hamming_space) from sage.features.gap import GapPackage diff --git a/src/sage/coding/code_constructions.py b/src/sage/coding/code_constructions.py index ec50c75dd9c..812d5d88df9 100644 --- a/src/sage/coding/code_constructions.py +++ b/src/sage/coding/code_constructions.py @@ -40,20 +40,17 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.misc.misc_c import prod -from sage.arith.all import quadratic_residues, gcd - -from sage.structure.sequence import Sequence, Sequence_generic - -from sage.matrix.matrix_space import MatrixSpace +from sage.arith.misc import gcd, quadratic_residues from sage.matrix.constructor import matrix +from sage.matrix.matrix_space import MatrixSpace from sage.matrix.special import random_matrix - +from sage.misc.misc_c import prod from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF from sage.rings.finite_rings.integer_mod import Mod from sage.rings.finite_rings.integer_mod_ring import IntegerModRing -from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.integer import Integer +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.structure.sequence import Sequence, Sequence_generic from .linear_code import LinearCode @@ -753,7 +750,7 @@ def ToricCode(P,F): - David Joyner (07-2006) """ - from sage.combinat.all import Tuples + from sage.combinat.tuple import Tuples mset = [x for x in F if x != 0] d = len(P[0]) pts = Tuples(mset, d).list() diff --git a/src/sage/coding/cyclic_code.py b/src/sage/coding/cyclic_code.py index 93ce9730f49..77b72d4ba95 100644 --- a/src/sage/coding/cyclic_code.py +++ b/src/sage/coding/cyclic_code.py @@ -41,11 +41,11 @@ from copy import copy from sage.rings.integer import Integer from sage.categories.homset import Hom -from sage.arith.all import gcd +from sage.arith.misc import gcd from sage.modules.free_module_element import vector from sage.matrix.constructor import matrix from sage.misc.cachefunc import cached_method -from sage.rings.all import Zmod +from sage.rings.finite_rings.integer_mod_ring import IntegerModRing as Zmod def find_generator_polynomial(code, check=True): diff --git a/src/sage/coding/delsarte_bounds.py b/src/sage/coding/delsarte_bounds.py index 15d5ade7887..52eb8ce746c 100644 --- a/src/sage/coding/delsarte_bounds.py +++ b/src/sage/coding/delsarte_bounds.py @@ -102,7 +102,7 @@ def krawtchouk(n, q, l, x, check=True): ... TypeError: no conversion of this rational to integer """ - from sage.arith.all import binomial + from sage.arith.misc import binomial from sage.arith.srange import srange # Use the expression in equation (55) of MacWilliams & Sloane, pg 151 # We write jth term = some_factor * (j-1)th term @@ -171,7 +171,7 @@ def eberlein(n, w, k, u, check=True): TypeError: either m or x-m must be an integer """ - from sage.arith.all import binomial + from sage.arith.misc import binomial from sage.arith.srange import srange if 2*w > n: @@ -275,7 +275,7 @@ def _delsarte_cwc_LP_building(n, d, w, solver, isinteger): """ from sage.numerical.mip import MixedIntegerLinearProgram - from sage.arith.all import binomial + from sage.arith.misc import binomial p = MixedIntegerLinearProgram(maximization=True, solver=solver) A = p.new_variable(integer=isinteger, nonnegative=True) @@ -602,7 +602,6 @@ def _delsarte_Q_LP_building(q, d, solver, isinteger): EXAMPLES:: sage: from sage.coding.delsarte_bounds import _delsarte_Q_LP_building - sage: from sage.all import * sage: q = Matrix([[codes.bounds.krawtchouk(6,2,i,j) for j in range(7)] for i in range(7)]) sage: _, p = _delsarte_Q_LP_building(q, 2, "PPL", False) sage: p.show() diff --git a/src/sage/coding/information_set_decoder.py b/src/sage/coding/information_set_decoder.py index a2cbf94fc5e..499eeb44997 100644 --- a/src/sage/coding/information_set_decoder.py +++ b/src/sage/coding/information_set_decoder.py @@ -40,7 +40,11 @@ # http://www.gnu.org/licenses/ #****************************************************************************** -from sage.all import ZZ, Integer, vector, SageObject, binomial +from sage.rings.integer_ring import ZZ +from sage.rings.integer import Integer +from sage.modules.free_module_element import free_module_element as vector +from sage.structure.sage_object import SageObject +from sage.functions.other import binomial from .decoder import Decoder diff --git a/src/sage/coding/linear_code.py b/src/sage/coding/linear_code.py index a3ac3ca1547..f8d749b23c6 100644 --- a/src/sage/coding/linear_code.py +++ b/src/sage/coding/linear_code.py @@ -205,32 +205,33 @@ class should inherit from this class. Also ``AbstractLinearCode`` should never import os import subprocess -from io import StringIO from copy import copy +from io import StringIO -from sage.cpython.string import bytes_to_str +from sage.arith.misc import binomial, GCD from sage.categories.cartesian_product import cartesian_product from sage.categories.fields import Fields +from sage.coding.decoder import Decoder +from sage.coding.encoder import Encoder +from sage.coding.linear_code_no_metric import AbstractLinearCodeNoMetric +from sage.combinat.subset import Subsets +from sage.cpython.string import bytes_to_str +from sage.features.gap import GapPackage +from sage.groups.all import SymmetricGroup +from sage.groups.perm_gps.permgroup import PermutationGroup +from sage.interfaces.gap import gap from sage.matrix.matrix_space import MatrixSpace +from sage.misc.cachefunc import cached_method +from sage.misc.functional import is_even +from sage.misc.misc_c import prod +from sage.misc.randstate import current_randstate from sage.modules.free_module import VectorSpace from sage.modules.free_module_element import vector -from sage.arith.all import GCD, binomial -from sage.groups.all import SymmetricGroup -from sage.groups.perm_gps.permgroup import PermutationGroup -from sage.rings.rational_field import QQ +from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF +from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing -from sage.rings.integer import Integer -from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF -from sage.misc.misc_c import prod -from sage.misc.functional import is_even -from sage.misc.cachefunc import cached_method -from sage.misc.randstate import current_randstate -from sage.combinat.subset import Subsets -from sage.features.gap import GapPackage -from sage.coding.linear_code_no_metric import AbstractLinearCodeNoMetric -from .encoder import Encoder -from .decoder import Decoder +from sage.rings.rational_field import QQ # ***************************************************************************** # coding theory functions diff --git a/src/sage/combinat/affine_permutation.py b/src/sage/combinat/affine_permutation.py index 9ae5c240be1..dd3d1b3654b 100644 --- a/src/sage/combinat/affine_permutation.py +++ b/src/sage/combinat/affine_permutation.py @@ -23,7 +23,7 @@ from sage.rings.integer_ring import ZZ from sage.groups.perm_gps.permgroup_named import SymmetricGroup -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.combinat.root_system.cartan_type import CartanType from sage.combinat.root_system.weyl_group import WeylGroup from sage.combinat.composition import Composition diff --git a/src/sage/combinat/alternating_sign_matrix.py b/src/sage/combinat/alternating_sign_matrix.py index 921320fe22e..9ece92160e1 100644 --- a/src/sage/combinat/alternating_sign_matrix.py +++ b/src/sage/combinat/alternating_sign_matrix.py @@ -46,7 +46,7 @@ from sage.modules.free_module_element import zero_vector from sage.misc.cachefunc import cached_method from sage.rings.integer_ring import ZZ -from sage.arith.all import factorial +from sage.arith.misc import factorial from sage.rings.integer import Integer from sage.combinat.posets.lattices import LatticePoset from sage.combinat.gelfand_tsetlin_patterns import GelfandTsetlinPatternsTopRow diff --git a/src/sage/combinat/baxter_permutations.py b/src/sage/combinat/baxter_permutations.py index 3fe87a12842..c4f34c073f5 100644 --- a/src/sage/combinat/baxter_permutations.py +++ b/src/sage/combinat/baxter_permutations.py @@ -232,7 +232,7 @@ def cardinality(self): """ if self._n == 0: return 1 - from sage.arith.all import binomial + from sage.arith.misc import binomial return sum((binomial(self._n + 1, k) * binomial(self._n + 1, k + 1) * binomial(self._n + 1, k + 2)) // diff --git a/src/sage/combinat/binary_recurrence_sequences.py b/src/sage/combinat/binary_recurrence_sequences.py index a1f2d969c4c..8c244342712 100644 --- a/src/sage/combinat/binary_recurrence_sequences.py +++ b/src/sage/combinat/binary_recurrence_sequences.py @@ -65,7 +65,8 @@ from sage.rings.finite_rings.integer_mod_ring import Integers from sage.rings.finite_rings.finite_field_constructor import GF from sage.rings.integer import Integer -from sage.arith.all import lcm, next_prime, is_prime, next_prime_power, legendre_symbol +from sage.arith.functions import lcm +from sage.arith.misc import is_prime, next_prime, next_prime_power, legendre_symbol from sage.functions.log import log from sage.misc.functional import sqrt diff --git a/src/sage/combinat/blob_algebra.py b/src/sage/combinat/blob_algebra.py index c3d7037ae4c..95899fd66a6 100644 --- a/src/sage/combinat/blob_algebra.py +++ b/src/sage/combinat/blob_algebra.py @@ -24,7 +24,7 @@ #from sage.misc.inherit_comparison import InheritComparisonClasscallMetaclass from sage.misc.cachefunc import cached_method from sage.misc.misc import powerset -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.categories.algebras import Algebras from sage.combinat.diagram_algebras import (TemperleyLiebDiagrams, diagram_latex, diff --git a/src/sage/combinat/cluster_algebra_quiver/cluster_seed.py b/src/sage/combinat/cluster_algebra_quiver/cluster_seed.py index 283f4ab8985..114c85ae35d 100644 --- a/src/sage/combinat/cluster_algebra_quiver/cluster_seed.py +++ b/src/sage/combinat/cluster_algebra_quiver/cluster_seed.py @@ -43,13 +43,13 @@ from sage.rings.fraction_field import FractionField from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.fraction_field_element import FractionFieldElement -from sage.sets.all import Set +from sage.sets.set import Set from sage.graphs.digraph import DiGraph from sage.combinat.cluster_algebra_quiver.quiver_mutation_type import QuiverMutationType_Irreducible, QuiverMutationType_Reducible from sage.combinat.cluster_algebra_quiver.mutation_type import is_mutation_finite from random import randint from sage.misc.misc_c import prod -from sage.matrix.all import identity_matrix +from sage.matrix.special import identity_matrix from sage.matrix.constructor import matrix from sage.combinat.cluster_algebra_quiver.quiver import ClusterQuiver from sage.rings.integer import Integer @@ -3111,7 +3111,7 @@ def principal_extension(self): sage: T2 == T True """ - from sage.matrix.all import identity_matrix + from sage.matrix.special import identity_matrix if self._m != 0: raise ValueError("the b-matrix is not square") M = self._M.stack(identity_matrix(self._n)) @@ -4600,7 +4600,7 @@ def _bino(n, k): 0 """ if n >= 0: - from sage.arith.all import binomial + from sage.arith.misc import binomial return binomial(n, k) else: return 0 diff --git a/src/sage/combinat/cluster_algebra_quiver/quiver.py b/src/sage/combinat/cluster_algebra_quiver/quiver.py index ae459dd8838..5a34fed2294 100644 --- a/src/sage/combinat/cluster_algebra_quiver/quiver.py +++ b/src/sage/combinat/cluster_algebra_quiver/quiver.py @@ -558,7 +558,8 @@ def plot(self, circular=True, center=(0, 0), directed=True, mark=None, """ from sage.plot.colors import rainbow from sage.graphs.graph_generators import GraphGenerators - from sage.all import e, pi, I + from sage.symbolic.constants import e, pi + from sage.rings.imaginary_unit import I graphs = GraphGenerators() # returns positions for graph vertices on two concentric cycles with radius 1 and 2 diff --git a/src/sage/combinat/cluster_algebra_quiver/quiver_mutation_type.py b/src/sage/combinat/cluster_algebra_quiver/quiver_mutation_type.py index 80e66662a2e..13349acbb42 100644 --- a/src/sage/combinat/cluster_algebra_quiver/quiver_mutation_type.py +++ b/src/sage/combinat/cluster_algebra_quiver/quiver_mutation_type.py @@ -27,7 +27,7 @@ from sage.rings.infinity import infinity from sage.graphs.digraph import DiGraph from sage.graphs.graph import Graph -from sage.arith.all import binomial, euler_phi +from sage.arith.misc import binomial, euler_phi from sage.misc.misc_c import prod from sage.matrix.constructor import matrix diff --git a/src/sage/combinat/combinat.py b/src/sage/combinat/combinat.py index a4ad56b0170..845216c49a2 100644 --- a/src/sage/combinat/combinat.py +++ b/src/sage/combinat/combinat.py @@ -167,11 +167,11 @@ from __future__ import annotations from typing import Iterator +from sage.arith.misc import bernoulli, factorial from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ from sage.rings.integer import Integer from sage.rings.infinity import infinity -from sage.arith.all import bernoulli, factorial from sage.rings.polynomial.polynomial_element import Polynomial from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.libs.pari.all import pari diff --git a/src/sage/combinat/combination.py b/src/sage/combinat/combination.py index 810e55308ec..42e727c6877 100644 --- a/src/sage/combinat/combination.py +++ b/src/sage/combinat/combination.py @@ -28,7 +28,7 @@ from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ -from sage.arith.all import binomial +from sage.arith.misc import binomial from .integer_vector import IntegerVectors from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.structure.parent import Parent diff --git a/src/sage/combinat/composition_signed.py b/src/sage/combinat/composition_signed.py index 3ba592cd7ae..03e9acfe31e 100644 --- a/src/sage/combinat/composition_signed.py +++ b/src/sage/combinat/composition_signed.py @@ -20,7 +20,7 @@ from sage.rings.integer_ring import ZZ from .composition import Compositions_n, Composition from sage.rings.integer import Integer -from sage.arith.all import binomial +from sage.arith.misc import binomial class SignedCompositions(Compositions_n): diff --git a/src/sage/combinat/crystals/alcove_path.py b/src/sage/combinat/crystals/alcove_path.py index b60717a13ee..91923aee027 100644 --- a/src/sage/combinat/crystals/alcove_path.py +++ b/src/sage/combinat/crystals/alcove_path.py @@ -31,7 +31,7 @@ from sage.graphs.digraph import DiGraph from sage.combinat.root_system.cartan_type import CartanType from sage.combinat.root_system.root_system import RootSystem -from sage.all import vector +from sage.modules.free_module_element import free_module_element as vector from sage.rings.integer import Integer from sage.combinat.root_system.weyl_group import WeylGroup from sage.misc.misc_c import prod diff --git a/src/sage/combinat/cyclic_sieving_phenomenon.py b/src/sage/combinat/cyclic_sieving_phenomenon.py index e654a8fc94a..d09168791cb 100644 --- a/src/sage/combinat/cyclic_sieving_phenomenon.py +++ b/src/sage/combinat/cyclic_sieving_phenomenon.py @@ -26,7 +26,7 @@ # **************************************************************************** from __future__ import annotations from sage.rings.integer_ring import ZZ -from sage.arith.all import lcm +from sage.arith.functions import lcm from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing diff --git a/src/sage/combinat/decorated_permutation.py b/src/sage/combinat/decorated_permutation.py index 2ca513767c4..e7281b7d3bb 100644 --- a/src/sage/combinat/decorated_permutation.py +++ b/src/sage/combinat/decorated_permutation.py @@ -24,7 +24,7 @@ from sage.structure.unique_representation import UniqueRepresentation from sage.structure.parent import Parent from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets -from sage.arith.all import factorial +from sage.arith.misc import factorial from sage.rings.integer import Integer from sage.combinat.permutation import Permutations from sage.combinat.subset import Subsets diff --git a/src/sage/combinat/descent_algebra.py b/src/sage/combinat/descent_algebra.py index 1245a8d1d59..f34df107585 100644 --- a/src/sage/combinat/descent_algebra.py +++ b/src/sage/combinat/descent_algebra.py @@ -19,7 +19,7 @@ from sage.structure.unique_representation import UniqueRepresentation from sage.categories.algebras import Algebras from sage.categories.realizations import Realizations, Category_realization_of_parent -from sage.categories.all import FiniteDimensionalAlgebrasWithBasis +from sage.categories.finite_dimensional_algebras_with_basis import FiniteDimensionalAlgebrasWithBasis from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ from sage.arith.misc import factorial diff --git a/src/sage/combinat/designs/bibd.py b/src/sage/combinat/designs/bibd.py index 72be454ec63..ad25d270dfc 100644 --- a/src/sage/combinat/designs/bibd.py +++ b/src/sage/combinat/designs/bibd.py @@ -53,7 +53,7 @@ from sage.categories.sets_cat import EmptySetError from sage.misc.unknown import Unknown from .design_catalog import transversal_design # type:ignore -from sage.arith.all import binomial, is_prime_power +from sage.arith.misc import binomial, is_prime_power from .group_divisible_designs import GroupDivisibleDesign from .designs_pyx import is_pairwise_balanced_design diff --git a/src/sage/combinat/designs/block_design.py b/src/sage/combinat/designs/block_design.py index abdaca1e17b..6e1c58f0224 100644 --- a/src/sage/combinat/designs/block_design.py +++ b/src/sage/combinat/designs/block_design.py @@ -52,13 +52,13 @@ # (at your option) any later version. # https://www.gnu.org/licenses/ #***************************************************************************** +from sage.arith.misc import binomial, integer_floor, is_prime_power +from sage.categories.sets_cat import EmptySetError from sage.modules.free_module import VectorSpace from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ -from sage.arith.all import binomial, integer_floor, is_prime_power from .incidence_structures import IncidenceStructure from sage.rings.finite_rings.finite_field_constructor import FiniteField -from sage.categories.sets_cat import EmptySetError from sage.misc.unknown import Unknown from sage.matrix.matrix_space import MatrixSpace from sage.libs.gap.libgap import libgap diff --git a/src/sage/combinat/designs/covering_design.py b/src/sage/combinat/designs/covering_design.py index 1c0dfa47628..d87ddc6dfbd 100644 --- a/src/sage/combinat/designs/covering_design.py +++ b/src/sage/combinat/designs/covering_design.py @@ -51,7 +51,7 @@ from sage.misc.sage_eval import sage_eval from sage.structure.sage_object import SageObject from sage.rings.rational import Rational -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.combinat.combination import Combinations from sage.combinat.designs.incidence_structures import IncidenceStructure from sage.cpython.string import bytes_to_str diff --git a/src/sage/combinat/designs/difference_matrices.py b/src/sage/combinat/designs/difference_matrices.py index 03aeb966af5..9e27b4688c4 100644 --- a/src/sage/combinat/designs/difference_matrices.py +++ b/src/sage/combinat/designs/difference_matrices.py @@ -10,11 +10,11 @@ --------- """ +from sage.arith.misc import divisors, is_prime_power from sage.misc.unknown import Unknown from sage.misc.cachefunc import cached_function from sage.categories.sets_cat import EmptySetError from sage.rings.finite_rings.finite_field_constructor import FiniteField -from sage.arith.all import is_prime_power, divisors from .designs_pyx import is_difference_matrix from .database import DM as DM_constructions diff --git a/src/sage/combinat/designs/group_divisible_designs.py b/src/sage/combinat/designs/group_divisible_designs.py index 6bb032a793d..b6898358c45 100644 --- a/src/sage/combinat/designs/group_divisible_designs.py +++ b/src/sage/combinat/designs/group_divisible_designs.py @@ -31,7 +31,7 @@ # http://www.gnu.org/licenses/ #***************************************************************************** -from sage.arith.all import is_prime_power +from sage.arith.misc import is_prime_power from sage.misc.unknown import Unknown from .incidence_structures import IncidenceStructure diff --git a/src/sage/combinat/designs/incidence_structures.py b/src/sage/combinat/designs/incidence_structures.py index dfb6c90f652..774885a0363 100644 --- a/src/sage/combinat/designs/incidence_structures.py +++ b/src/sage/combinat/designs/incidence_structures.py @@ -1577,7 +1577,7 @@ def is_t_design(self, t=None, v=None, k=None, l=None, return_parameters=False): sage: I.is_t_design(return_parameters=True) (False, (0, 0, 0, 0)) """ - from sage.arith.all import binomial + from sage.arith.misc import binomial # Missing parameters ? if v is None: diff --git a/src/sage/combinat/designs/orthogonal_arrays_build_recursive.py b/src/sage/combinat/designs/orthogonal_arrays_build_recursive.py index 526487adb97..9716849b744 100644 --- a/src/sage/combinat/designs/orthogonal_arrays_build_recursive.py +++ b/src/sage/combinat/designs/orthogonal_arrays_build_recursive.py @@ -365,7 +365,7 @@ def OA_and_oval(q, *, solver=None, integrality_tolerance=1e-3): sage: _ = OA_and_oval """ - from sage.arith.all import is_prime_power + from sage.arith.misc import is_prime_power from sage.combinat.designs.block_design import projective_plane from .orthogonal_arrays import OA_relabel @@ -683,7 +683,7 @@ def thwart_lemma_3_5(k,n,m,a,b,c,d=0,complement=False,explain_construction=False Charles J.Colbourn, Jeffrey H. Dinitz, Mieczyslaw Wojtas. Designs, Codes and Cryptography 5, no. 3 (1995): 189-197. """ - from sage.arith.all import is_prime_power + from sage.arith.misc import is_prime_power from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF if complement: @@ -797,7 +797,7 @@ def thwart_lemma_4_1(k,n,m,explain_construction=False): Canad. Math. Bull vol7 num.4 (1964) """ from sage.rings.finite_rings.finite_field_constructor import FiniteField - from sage.arith.all import is_prime_power + from sage.arith.misc import is_prime_power from .block_design import DesarguesianProjectivePlaneDesign from itertools import chain @@ -1387,7 +1387,7 @@ def brouwer_separable_design(k,t,q,x,check=False,verbose=False,explain_construct from sage.combinat.designs.orthogonal_arrays import OA_from_PBD from .difference_family import difference_family from .orthogonal_arrays import incomplete_orthogonal_array - from sage.arith.all import is_prime_power + from sage.arith.misc import is_prime_power if explain_construction: return ("Brouwer's separable design construction with t={},q={},x={} from:\n"+ diff --git a/src/sage/combinat/designs/orthogonal_arrays_find_recursive.pyx b/src/sage/combinat/designs/orthogonal_arrays_find_recursive.pyx index d1d4eb10828..3fee26e2a22 100644 --- a/src/sage/combinat/designs/orthogonal_arrays_find_recursive.pyx +++ b/src/sage/combinat/designs/orthogonal_arrays_find_recursive.pyx @@ -48,7 +48,7 @@ Functions from sage.misc.cachefunc import cached_function from .orthogonal_arrays import orthogonal_array from sage.rings.integer cimport Integer, smallInteger -from sage.arith.all import prime_powers +from sage.arith.misc import prime_powers @cached_function def find_recursive_construction(k, n): diff --git a/src/sage/combinat/designs/resolvable_bibd.py b/src/sage/combinat/designs/resolvable_bibd.py index 7085e2d9ab1..944a1b6d4a7 100644 --- a/src/sage/combinat/designs/resolvable_bibd.py +++ b/src/sage/combinat/designs/resolvable_bibd.py @@ -48,7 +48,7 @@ --------- """ from itertools import repeat -from sage.arith.all import is_prime_power +from sage.arith.misc import is_prime_power from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign from sage.categories.sets_cat import EmptySetError from .bibd import balanced_incomplete_block_design diff --git a/src/sage/combinat/dyck_word.py b/src/sage/combinat/dyck_word.py index beb6b4404f6..83baa7a0f5e 100644 --- a/src/sage/combinat/dyck_word.py +++ b/src/sage/combinat/dyck_word.py @@ -89,7 +89,7 @@ from sage.structure.unique_representation import UniqueRepresentation from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets -from sage.categories.all import Posets +from sage.categories.posets import Posets from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ @@ -1979,7 +1979,7 @@ def number_of_parking_functions(self) -> int: sage: DyckWord(area_sequence=[0,0,0]).number_of_parking_functions() 6 """ - from sage.arith.all import multinomial + from sage.arith.misc import multinomial return multinomial(self.rise_composition()) def list_parking_functions(self): @@ -3778,7 +3778,7 @@ def cardinality(self) -> int: ....: for p in range(7)) True """ - from sage.arith.all import binomial + from sage.arith.misc import binomial return (self.k1 - self.k2 + 1) * binomial(self.k1 + self.k2, self.k2) // (self.k1 + 1) ################################################################ diff --git a/src/sage/combinat/free_module.py b/src/sage/combinat/free_module.py index c8269e5f96f..0d59caabd55 100644 --- a/src/sage/combinat/free_module.py +++ b/src/sage/combinat/free_module.py @@ -24,7 +24,10 @@ from sage.misc.cachefunc import cached_method from sage.misc.lazy_attribute import lazy_attribute from sage.categories.morphism import SetMorphism -from sage.categories.all import Category, Sets, ModulesWithBasis, GradedAlgebrasWithBasis +from sage.categories.category import Category +from sage.categories.sets_cat import Sets +from sage.categories.modules_with_basis import ModulesWithBasis +from sage.categories.graded_algebras_with_basis import GradedAlgebrasWithBasis from sage.categories.tensor import tensor import sage.data_structures.blas_dict as blas from sage.typeset.ascii_art import AsciiArt, ascii_art diff --git a/src/sage/combinat/fully_packed_loop.py b/src/sage/combinat/fully_packed_loop.py index b24d6e19ce1..ed007d0a27e 100644 --- a/src/sage/combinat/fully_packed_loop.py +++ b/src/sage/combinat/fully_packed_loop.py @@ -38,7 +38,7 @@ from sage.misc.decorators import options from sage.matrix.constructor import matrix -from sage.arith.all import factorial +from sage.arith.misc import factorial from sage.rings.integer import Integer from sage.misc.misc_c import prod diff --git a/src/sage/combinat/integer_vector.py b/src/sage/combinat/integer_vector.py index 82d4886f100..94a5010f445 100644 --- a/src/sage/combinat/integer_vector.py +++ b/src/sage/combinat/integer_vector.py @@ -42,7 +42,7 @@ from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.rings.infinity import PlusInfinity -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.rings.integer_ring import ZZ from sage.rings.semirings.non_negative_integer_semiring import NN from sage.rings.integer import Integer diff --git a/src/sage/combinat/integer_vector_weighted.py b/src/sage/combinat/integer_vector_weighted.py index a03314b6bf7..1b110c34140 100644 --- a/src/sage/combinat/integer_vector_weighted.py +++ b/src/sage/combinat/integer_vector_weighted.py @@ -282,7 +282,8 @@ def __init__(self, weight): sage: TestSuite(C).run() """ self._weights = weight - from sage.sets.all import Family, NonNegativeIntegers + from sage.sets.family import Family + from sage.sets.non_negative_integers import NonNegativeIntegers # Use "partial" to make the basis function (with the weights # argument specified) pickleable. Otherwise, it seems to # cause problems... diff --git a/src/sage/combinat/interval_posets.py b/src/sage/combinat/interval_posets.py index e8168802800..0dff0188cda 100644 --- a/src/sage/combinat/interval_posets.py +++ b/src/sage/combinat/interval_posets.py @@ -36,7 +36,7 @@ from sage.categories.enumerated_sets import EnumeratedSets from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.categories.posets import Posets -from sage.categories.all import Monoids +from sage.categories.monoids import Monoids from sage.combinat.posets.posets import Poset, FinitePoset from sage.categories.finite_posets import FinitePosets from sage.combinat.binary_tree import BinaryTrees @@ -3709,7 +3709,7 @@ def cardinality(self) -> Integer: sage: [TamariIntervalPosets(i).cardinality() for i in range(6)] [1, 1, 3, 13, 68, 399] """ - from sage.arith.all import binomial + from sage.arith.misc import binomial n = self._size if n == 0: return Integer(1) diff --git a/src/sage/combinat/matrices/hadamard_matrix.py b/src/sage/combinat/matrices/hadamard_matrix.py index 0434d20d8c2..5be48c60ccb 100644 --- a/src/sage/combinat/matrices/hadamard_matrix.py +++ b/src/sage/combinat/matrices/hadamard_matrix.py @@ -54,21 +54,27 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** +from math import sqrt from urllib.request import urlopen -from sage.combinat.designs.difference_family import get_fixed_relative_difference_set, relative_difference_set_from_homomorphism, skew_supplementary_difference_set +from sage.arith.misc import divisors, is_prime_power, is_square +from sage.combinat.designs.difference_family import (get_fixed_relative_difference_set, + relative_difference_set_from_homomorphism, + skew_supplementary_difference_set) +from sage.combinat.t_sequences import T_sequences_smallcases +from sage.cpython.string import bytes_to_str from sage.rings.integer_ring import ZZ -from sage.matrix.constructor import matrix, block_matrix, block_diagonal_matrix, diagonal_matrix -from sage.arith.all import is_square, is_prime_power, divisors -from math import sqrt -from sage.matrix.constructor import identity_matrix as I -from sage.matrix.constructor import ones_matrix as J -from sage.matrix.constructor import zero_matrix, matrix_method +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.matrix.constructor import (block_matrix, + block_diagonal_matrix, + diagonal_matrix, + identity_matrix as I, + ones_matrix as J, + matrix, + matrix_method, + zero_matrix) from sage.misc.unknown import Unknown -from sage.cpython.string import bytes_to_str from sage.modules.free_module_element import vector -from sage.combinat.t_sequences import T_sequences_smallcases -from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing def normalise_hadamard(H, skew=False): diff --git a/src/sage/combinat/matrices/latin.py b/src/sage/combinat/matrices/latin.py index 82e6ff65311..e36edf0fc82 100644 --- a/src/sage/combinat/matrices/latin.py +++ b/src/sage/combinat/matrices/latin.py @@ -139,7 +139,7 @@ from sage.combinat.permutation import Permutation from sage.interfaces.gap import gap from sage.groups.perm_gps.permgroup import PermutationGroup -from sage.arith.all import is_prime +from sage.arith.misc import is_prime from sage.rings.finite_rings.finite_field_constructor import FiniteField from sage.misc.flatten import flatten diff --git a/src/sage/combinat/multiset_partition_into_sets_ordered.py b/src/sage/combinat/multiset_partition_into_sets_ordered.py index 6f5495f36e9..283926a2c87 100755 --- a/src/sage/combinat/multiset_partition_into_sets_ordered.py +++ b/src/sage/combinat/multiset_partition_into_sets_ordered.py @@ -81,7 +81,7 @@ from sage.rings.infinity import infinity from sage.rings.integer_ring import ZZ from sage.rings.power_series_ring import PowerSeriesRing -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.combinat.subset import Subsets_sk from sage.combinat.composition import Composition, Compositions, composition_iterator_fast diff --git a/src/sage/combinat/ncsf_qsym/generic_basis_code.py b/src/sage/combinat/ncsf_qsym/generic_basis_code.py index 8763a8e1bee..270a79e1a46 100644 --- a/src/sage/combinat/ncsf_qsym/generic_basis_code.py +++ b/src/sage/combinat/ncsf_qsym/generic_basis_code.py @@ -34,7 +34,7 @@ from sage.combinat.partition import Partition from sage.combinat.permutation import Permutations from sage.rings.integer import Integer -from sage.categories.all import AlgebrasWithBasis +from sage.categories.algebras_with_basis import AlgebrasWithBasis from sage.misc.lazy_attribute import lazy_attribute from sage.misc.abstract_method import abstract_method from sage.categories.category_types import Category_over_base_ring diff --git a/src/sage/combinat/ncsf_qsym/ncsf.py b/src/sage/combinat/ncsf_qsym/ncsf.py index f1fd9622bae..a17d14b33d9 100644 --- a/src/sage/combinat/ncsf_qsym/ncsf.py +++ b/src/sage/combinat/ncsf_qsym/ncsf.py @@ -2254,7 +2254,7 @@ def coproduct(self): From: Non-Commutative Symmetric Functions over the Rational Field in the Complete basis To: Non-Commutative Symmetric Functions over the Rational Field in the Complete basis # Non-Commutative Symmetric Functions over the Rational Field in the Complete basis """ - from sage.categories.all import tensor + from sage.categories.tensor import tensor if hasattr(self, "coproduct_on_generators"): return self.algebra_morphism(self.coproduct_on_generators, codomain = tensor([self, self])) else: @@ -2500,7 +2500,7 @@ def coproduct_on_generators(self, i): if i < 1: raise ValueError("Not a positive integer: {}".format(i)) x = self.algebra_generators()[i] - from sage.categories.all import tensor + from sage.categories.tensor import tensor return tensor([self.one(), x]) + tensor([x, self.one()]) class Ribbon(CombinatorialFreeModule, BindableClass): diff --git a/src/sage/combinat/ncsf_qsym/qsym.py b/src/sage/combinat/ncsf_qsym/qsym.py index 08633d12c4e..8bdef2fa7dd 100644 --- a/src/sage/combinat/ncsf_qsym/qsym.py +++ b/src/sage/combinat/ncsf_qsym/qsym.py @@ -3688,7 +3688,7 @@ def _precompute_M(self, n): M = self.realization_of().M() if l <= n: from sage.misc.cachefunc import cached_function - from sage.arith.all import gcd + from sage.arith.misc import gcd @cached_function def monolambda(I): diff --git a/src/sage/combinat/ncsym/bases.py b/src/sage/combinat/ncsym/bases.py index 25f3bece38e..8b703487547 100644 --- a/src/sage/combinat/ncsym/bases.py +++ b/src/sage/combinat/ncsym/bases.py @@ -18,7 +18,9 @@ from sage.misc.bindable_class import BindableClass from sage.categories.graded_hopf_algebras import GradedHopfAlgebras from sage.categories.realizations import Category_realization_of_parent -from sage.categories.all import ModulesWithBasis, tensor, Hom +from sage.categories.modules_with_basis import ModulesWithBasis +from sage.categories.tensor import tensor +from sage.categories.homset import Hom from sage.combinat.set_partition import SetPartition, SetPartitions from sage.combinat.free_module import CombinatorialFreeModule diff --git a/src/sage/combinat/necklace.py b/src/sage/combinat/necklace.py index a065cabdd2c..bcfb0d45185 100644 --- a/src/sage/combinat/necklace.py +++ b/src/sage/combinat/necklace.py @@ -22,15 +22,15 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.combinat.composition import Composition +from sage.arith.misc import divisors, euler_phi, factorial, gcd from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets +from sage.combinat.composition import Composition +from sage.combinat.misc import DoublyLinkedList +from sage.misc.misc_c import prod +from sage.rings.integer import Integer +from sage.rings.integer_ring import ZZ from sage.structure.parent import Parent from sage.structure.unique_representation import UniqueRepresentation -from sage.arith.all import euler_phi, factorial, divisors, gcd -from sage.rings.integer_ring import ZZ -from sage.rings.integer import Integer -from sage.misc.misc_c import prod -from sage.combinat.misc import DoublyLinkedList def Necklaces(content): diff --git a/src/sage/combinat/partition.py b/src/sage/combinat/partition.py index cf1b0c2aee9..5dcea144623 100644 --- a/src/sage/combinat/partition.py +++ b/src/sage/combinat/partition.py @@ -283,10 +283,9 @@ from copy import copy from itertools import accumulate +from sage.arith.misc import binomial, factorial, gcd, multinomial from sage.libs.pari.all import pari from sage.libs.flint.arith import number_of_partitions as flint_number_of_partitions - -from sage.arith.misc import multinomial from sage.structure.global_options import GlobalOptions from sage.structure.parent import Parent from sage.structure.unique_representation import UniqueRepresentation @@ -308,7 +307,6 @@ from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ from sage.rings.semirings.non_negative_integer_semiring import NN -from sage.arith.all import factorial, gcd from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.integer import Integer from sage.rings.infinity import infinity @@ -326,7 +324,6 @@ from sage.combinat.combinatorial_map import combinatorial_map from sage.groups.perm_gps.permgroup import PermutationGroup from sage.graphs.dot2tex_utils import have_dot2tex -from sage.arith.all import binomial class Partition(CombinatorialElement): diff --git a/src/sage/combinat/partition_algebra.py b/src/sage/combinat/partition_algebra.py index fcece47fbf8..9136b682c59 100644 --- a/src/sage/combinat/partition_algebra.py +++ b/src/sage/combinat/partition_algebra.py @@ -15,18 +15,18 @@ # # https://www.gnu.org/licenses/ # **************************************************************************** -from .combinat import catalan_number -from sage.combinat.free_module import CombinatorialFreeModule +from sage.arith.misc import binomial, factorial from sage.categories.algebras_with_basis import AlgebrasWithBasis +from sage.combinat.combinat import catalan_number +from sage.combinat.free_module import CombinatorialFreeModule +from sage.combinat.permutation import Permutations from sage.combinat.set_partition import SetPartition, SetPartitions, SetPartitions_set -from sage.sets.set import Set, Set_generic +from sage.combinat.subset import Subsets +from sage.functions.all import ceil from sage.graphs.graph import Graph -from sage.arith.all import factorial, binomial -from .permutation import Permutations from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from .subset import Subsets -from sage.functions.all import ceil +from sage.sets.set import Set, Set_generic def _int_or_half_int(k): diff --git a/src/sage/combinat/path_tableaux/frieze.py b/src/sage/combinat/path_tableaux/frieze.py index 1706a5cd4e1..b1bbdab1ed7 100644 --- a/src/sage/combinat/path_tableaux/frieze.py +++ b/src/sage/combinat/path_tableaux/frieze.py @@ -327,7 +327,7 @@ def triangulation(self): from sage.plot.line import line from sage.plot.text import text from sage.functions.trig import sin, cos - from sage.all import pi + from sage.symbolic.constants import pi G = Graphics() G.set_aspect_ratio(1.0) diff --git a/src/sage/combinat/permutation.py b/src/sage/combinat/permutation.py index cd8d882a9d2..9783a367898 100644 --- a/src/sage/combinat/permutation.py +++ b/src/sage/combinat/permutation.py @@ -239,37 +239,37 @@ # **************************************************************************** from __future__ import annotations from typing import Iterator +import itertools -from sage.structure.parent import Parent -from sage.structure.unique_representation import UniqueRepresentation -from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets +from sage.arith.misc import factorial, multinomial from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets -from sage.categories.sets_with_grading import SetsWithGrading -from sage.categories.finite_weyl_groups import FiniteWeylGroups from sage.categories.finite_permutation_groups import FinitePermutationGroups -from sage.structure.list_clone import ClonableArray -from sage.structure.global_options import GlobalOptions +from sage.categories.finite_weyl_groups import FiniteWeylGroups +from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets +from sage.categories.sets_with_grading import SetsWithGrading +from sage.combinat.backtrack import GenericBacktracker +from sage.combinat.combinat import CombinatorialElement, catalan_number +from sage.combinat.combinatorial_map import combinatorial_map +from sage.combinat.composition import Composition +from sage.combinat.permutation_cython import (left_action_product, right_action_product, + left_action_same_n, right_action_same_n, + map_to_list, next_perm) +from sage.combinat.rsk import RSK, RSK_inverse +from sage.combinat.tools import transitive_ideal +from sage.graphs.digraph import DiGraph +from sage.groups.perm_gps.permgroup_element import PermutationGroupElement +from sage.groups.perm_gps.permgroup_named import SymmetricGroup from sage.libs.gap.libgap import libgap +from sage.matrix.matrix_space import MatrixSpace +from sage.misc.cachefunc import cached_method +from sage.misc.prandom import sample from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing -from sage.arith.all import factorial, multinomial -from sage.matrix.matrix_space import MatrixSpace -from sage.combinat.tools import transitive_ideal -from sage.combinat.composition import Composition -from sage.groups.perm_gps.permgroup_named import SymmetricGroup -from sage.groups.perm_gps.permgroup_element import PermutationGroupElement -from sage.misc.prandom import sample -from sage.graphs.digraph import DiGraph -import itertools -from .combinat import CombinatorialElement, catalan_number -from sage.misc.cachefunc import cached_method -from .backtrack import GenericBacktracker -from sage.combinat.combinatorial_map import combinatorial_map -from sage.combinat.rsk import RSK, RSK_inverse -from sage.combinat.permutation_cython import (left_action_product, - right_action_product, left_action_same_n, right_action_same_n, - map_to_list, next_perm) +from sage.structure.global_options import GlobalOptions +from sage.structure.list_clone import ClonableArray +from sage.structure.parent import Parent +from sage.structure.unique_representation import UniqueRepresentation class Permutation(CombinatorialElement): diff --git a/src/sage/combinat/posets/hasse_diagram.py b/src/sage/combinat/posets/hasse_diagram.py index 93990ee7cbc..fb7ad270b2b 100644 --- a/src/sage/combinat/posets/hasse_diagram.py +++ b/src/sage/combinat/posets/hasse_diagram.py @@ -23,7 +23,7 @@ from sage.rings.finite_rings.finite_field_constructor import GF from sage.misc.lazy_attribute import lazy_attribute from sage.misc.cachefunc import cached_method -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.misc.rest_index_of_methods import gen_rest_table_index from sage.combinat.posets.hasse_cython import (moebius_matrix_fast, coxeter_matrix_fast, diff --git a/src/sage/combinat/posets/posets.py b/src/sage/combinat/posets/posets.py index 239258cb42c..19627d360cb 100644 --- a/src/sage/combinat/posets/posets.py +++ b/src/sage/combinat/posets/posets.py @@ -292,7 +292,7 @@ from sage.misc.cachefunc import cached_method from sage.misc.lazy_attribute import lazy_attribute from sage.misc.misc_c import prod -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.categories.category import Category from sage.categories.sets_cat import Sets from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets diff --git a/src/sage/combinat/rigged_configurations/kleber_tree.py b/src/sage/combinat/rigged_configurations/kleber_tree.py index e6c73af4d50..82c99e8ad73 100644 --- a/src/sage/combinat/rigged_configurations/kleber_tree.py +++ b/src/sage/combinat/rigged_configurations/kleber_tree.py @@ -71,7 +71,7 @@ from sage.misc.cachefunc import cached_method from sage.misc.latex import latex from sage.misc.misc_c import prod -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.features import FeatureNotPresentError from sage.rings.integer import Integer diff --git a/src/sage/combinat/root_system/cartan_matrix.py b/src/sage/combinat/root_system/cartan_matrix.py index 2cf987db202..3a26227b4f1 100644 --- a/src/sage/combinat/root_system/cartan_matrix.py +++ b/src/sage/combinat/root_system/cartan_matrix.py @@ -489,7 +489,7 @@ def symmetrizer(self): iset = self.index_set() # The result from is_symmetrizable needs to be scaled # to integer coefficients - from sage.arith.all import LCM + from sage.arith.functions import lcm as LCM from sage.rings.rational_field import QQ scalar = LCM([QQ(x).denominator() for x in sym]) return Family( {iset[i]: ZZ(val*scalar) for i, val in enumerate(sym)} ) diff --git a/src/sage/combinat/root_system/coxeter_type.py b/src/sage/combinat/root_system/coxeter_type.py index 9c10c3c04db..39fa6ca0d01 100644 --- a/src/sage/combinat/root_system/coxeter_type.py +++ b/src/sage/combinat/root_system/coxeter_type.py @@ -23,7 +23,7 @@ from sage.combinat.root_system.cartan_type import CartanType import sage.rings.abc from sage.matrix.args import SparseEntry -from sage.matrix.all import Matrix +from sage.matrix.constructor import Matrix from sage.symbolic.ring import SR from sage.structure.unique_representation import UniqueRepresentation from sage.structure.sage_object import SageObject diff --git a/src/sage/combinat/root_system/reflection_group_complex.py b/src/sage/combinat/root_system/reflection_group_complex.py index 626c7e2c2a8..fe3eae18357 100644 --- a/src/sage/combinat/root_system/reflection_group_complex.py +++ b/src/sage/combinat/root_system/reflection_group_complex.py @@ -208,7 +208,8 @@ from sage.combinat.permutation import Permutation from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.matrix.all import Matrix, identity_matrix +from sage.matrix.constructor import Matrix +from sage.matrix.special import identity_matrix from sage.structure.element import is_Matrix from sage.interfaces.gap3 import gap3 from sage.rings.universal_cyclotomic_field import E @@ -1554,7 +1555,7 @@ def cartan_matrix(self): if self.is_crystallographic(): from sage.combinat.root_system.cartan_matrix import CartanMatrix as CartanMat else: - from sage.matrix.all import Matrix as CartanMat + from sage.matrix.constructor import Matrix as CartanMat return CartanMat(self._gap_group.CartanMat().sage()) def invariant_form(self, brute_force=False): diff --git a/src/sage/combinat/root_system/reflection_group_element.pyx b/src/sage/combinat/root_system/reflection_group_element.pyx index 02761726799..5d6efdf5a76 100644 --- a/src/sage/combinat/root_system/reflection_group_element.pyx +++ b/src/sage/combinat/root_system/reflection_group_element.pyx @@ -33,7 +33,8 @@ from sage.interfaces.gap3 import gap3 from sage.combinat.root_system.cartan_matrix import CartanMatrix from sage.misc.sage_eval import sage_eval from sage.combinat.root_system.reflection_group_c import reduced_word_c, reduce_in_coset -from sage.matrix.all import Matrix, identity_matrix +from sage.matrix.constructor import Matrix +from sage.matrix.special import identity_matrix cdef class ComplexReflectionGroupElement(PermutationGroupElement): diff --git a/src/sage/combinat/root_system/weyl_characters.py b/src/sage/combinat/root_system/weyl_characters.py index f306df7eddf..8d4fffe20fb 100644 --- a/src/sage/combinat/root_system/weyl_characters.py +++ b/src/sage/combinat/root_system/weyl_characters.py @@ -10,7 +10,8 @@ # **************************************************************************** import sage.combinat.root_system.branching_rules -from sage.categories.all import Algebras, AlgebrasWithBasis +from sage.categories.algebras import Algebras +from sage.categories.algebras_with_basis import AlgebrasWithBasis from sage.combinat.free_module import CombinatorialFreeModule from sage.combinat.root_system.cartan_type import CartanType from sage.combinat.root_system.root_system import RootSystem diff --git a/src/sage/combinat/root_system/weyl_group.py b/src/sage/combinat/root_system/weyl_group.py index d64d2c1f366..8ece3dd1a30 100644 --- a/src/sage/combinat/root_system/weyl_group.py +++ b/src/sage/combinat/root_system/weyl_group.py @@ -53,7 +53,9 @@ from sage.combinat.root_system.root_lattice_realizations import RootLatticeRealizations from sage.structure.unique_representation import UniqueRepresentation from sage.structure.richcmp import richcmp, richcmp_not_equal -from sage.categories.all import WeylGroups, FiniteWeylGroups, AffineWeylGroups +from sage.categories.weyl_groups import WeylGroups +from sage.categories.finite_weyl_groups import FiniteWeylGroups +from sage.categories.affine_weyl_groups import AffineWeylGroups from sage.categories.permutation_groups import PermutationGroups from sage.sets.family import Family from sage.matrix.constructor import Matrix diff --git a/src/sage/combinat/schubert_polynomial.py b/src/sage/combinat/schubert_polynomial.py index 89c857c8efc..17af9c9e57f 100644 --- a/src/sage/combinat/schubert_polynomial.py +++ b/src/sage/combinat/schubert_polynomial.py @@ -73,7 +73,8 @@ # # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.categories.all import GradedAlgebrasWithBasis + +from sage.categories.graded_algebras_with_basis import GradedAlgebrasWithBasis from sage.combinat.free_module import CombinatorialFreeModule from sage.combinat.key_polynomial import KeyPolynomial from sage.combinat.permutation import Permutations, Permutation diff --git a/src/sage/combinat/set_partition_ordered.py b/src/sage/combinat/set_partition_ordered.py index 268126d65ef..b883df5cb98 100644 --- a/src/sage/combinat/set_partition_ordered.py +++ b/src/sage/combinat/set_partition_ordered.py @@ -24,7 +24,7 @@ # # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.arith.all import factorial, multinomial +from sage.arith.misc import factorial, multinomial from sage.categories.cartesian_product import cartesian_product from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets diff --git a/src/sage/combinat/sf/character.py b/src/sage/combinat/sf/character.py index c3b2ba786ce..eda80d2d1c3 100644 --- a/src/sage/combinat/sf/character.py +++ b/src/sage/combinat/sf/character.py @@ -27,11 +27,11 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.combinat.sf.sfa import SymmetricFunctionAlgebra_generic as SFA_generic -from sage.misc.cachefunc import cached_method +from sage.arith.misc import binomial, divisors, moebius from sage.categories.homset import Hom from sage.categories.morphism import SetMorphism -from sage.arith.all import divisors, moebius, binomial +from sage.combinat.sf.sfa import SymmetricFunctionAlgebra_generic as SFA_generic +from sage.misc.cachefunc import cached_method from sage.rings.integer import Integer diff --git a/src/sage/combinat/sf/elementary.py b/src/sage/combinat/sf/elementary.py index 8ec26324de0..8d242f55b84 100644 --- a/src/sage/combinat/sf/elementary.py +++ b/src/sage/combinat/sf/elementary.py @@ -17,12 +17,13 @@ # # http://www.gnu.org/licenses/ #***************************************************************************** -from . import multiplicative, classical +from sage.arith.misc import binomial, factorial from sage.combinat.partition import Partition +from sage.combinat.sf import multiplicative, classical from sage.misc.misc_c import prod -from sage.arith.all import factorial, binomial from sage.rings.infinity import infinity + ################################### # # # Elementary Symmetric Functions # diff --git a/src/sage/combinat/sf/homogeneous.py b/src/sage/combinat/sf/homogeneous.py index d339118ccc7..b97bfae074c 100644 --- a/src/sage/combinat/sf/homogeneous.py +++ b/src/sage/combinat/sf/homogeneous.py @@ -25,11 +25,11 @@ # Homogeneous Symmetric Functions # # # #################################### -from . import multiplicative, classical +from sage.arith.misc import binomial, factorial from sage.combinat.partition import Partition -from sage.rings.infinity import infinity +from sage.combinat.sf import multiplicative, classical from sage.misc.misc_c import prod -from sage.arith.all import factorial, binomial +from sage.rings.infinity import infinity class SymmetricFunctionAlgebra_homogeneous(multiplicative.SymmetricFunctionAlgebra_multiplicative): diff --git a/src/sage/combinat/sf/jack.py b/src/sage/combinat/sf/jack.py index 617f31f7f1d..7c067bcdf03 100644 --- a/src/sage/combinat/sf/jack.py +++ b/src/sage/combinat/sf/jack.py @@ -33,7 +33,8 @@ import sage.categories.all from sage.rings.integer import Integer from sage.rings.rational_field import QQ -from sage.arith.all import gcd, lcm +from sage.arith.misc import gcd +from sage.arith.functions import lcm from sage.rings.fraction_field import is_FractionField from sage.misc.misc_c import prod from sage.categories.morphism import SetMorphism diff --git a/src/sage/combinat/sf/k_dual.py b/src/sage/combinat/sf/k_dual.py index 84577daf725..391fb488943 100644 --- a/src/sage/combinat/sf/k_dual.py +++ b/src/sage/combinat/sf/k_dual.py @@ -31,7 +31,7 @@ from sage.structure.parent import Parent from sage.structure.unique_representation import UniqueRepresentation -from sage.categories.all import GradedHopfAlgebras +from sage.categories.graded_hopf_algebras import GradedHopfAlgebras from sage.combinat.partition import Partition, Partitions, Partitions_all_bounded, PartitionsGreatestLE from sage.combinat.free_module import CombinatorialFreeModule from sage.categories.realizations import Realizations, Category_realization_of_parent diff --git a/src/sage/combinat/sf/macdonald.py b/src/sage/combinat/sf/macdonald.py index 5702e469658..99c9a00ca5b 100644 --- a/src/sage/combinat/sf/macdonald.py +++ b/src/sage/combinat/sf/macdonald.py @@ -53,7 +53,7 @@ from sage.categories.modules_with_basis import ModulesWithBasis from . import sfa from sage.combinat.partition import Partitions_n, _Partitions -from sage.matrix.all import MatrixSpace +from sage.matrix.matrix_space import MatrixSpace from sage.rings.rational_field import QQ from sage.misc.misc_c import prod from sage.misc.cachefunc import cached_function diff --git a/src/sage/combinat/sf/powersum.py b/src/sage/combinat/sf/powersum.py index ab216cf3e84..22a277b1ef8 100644 --- a/src/sage/combinat/sf/powersum.py +++ b/src/sage/combinat/sf/powersum.py @@ -19,7 +19,7 @@ #***************************************************************************** from . import sfa, multiplicative, classical from sage.combinat.partition import Partition -from sage.arith.all import divisors +from sage.arith.misc import divisors from sage.rings.infinity import infinity from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.misc.misc_c import prod diff --git a/src/sage/combinat/sf/sfa.py b/src/sage/combinat/sf/sfa.py index 45d3427a7cd..a833b1f5d81 100644 --- a/src/sage/combinat/sf/sfa.py +++ b/src/sage/combinat/sf/sfa.py @@ -1015,7 +1015,7 @@ def gessel_reutenauer(self, lam): m = lam.to_exp_dict() # == {i: m_i | i occurs in lam} p = self.realization_of().power() h = self.realization_of().complete() - from sage.arith.all import moebius, squarefree_divisors + from sage.arith.misc import moebius, squarefree_divisors mu = moebius def component(i, g): # == h_g[L_i] @@ -1809,7 +1809,7 @@ def __init__(self, Sym, basis_name=None, prefix=None, graded=True): sage: TestSuite(s).run() """ R = Sym.base_ring() - from sage.categories.all import CommutativeRings + from sage.categories.commutative_rings import CommutativeRings if R not in CommutativeRings(): raise TypeError("argument R must be a commutative ring") try: @@ -4711,7 +4711,8 @@ def arithmetic_product(self, x): parent = self.parent() if parent.has_coerce_map_from(QQ): from sage.combinat.partition import Partition - from sage.arith.all import gcd, lcm + from sage.arith.misc import gcd + from sage.arith.functions import lcm from itertools import product, repeat, chain p = parent.realization_of().power() diff --git a/src/sage/combinat/sf/witt.py b/src/sage/combinat/sf/witt.py index a129a267229..cceebed7889 100644 --- a/src/sage/combinat/sf/witt.py +++ b/src/sage/combinat/sf/witt.py @@ -757,7 +757,7 @@ def _precompute_p(self, n): """ l = len(self._p_transition_matrices) if l <= n: - from sage.arith.all import divisors + from sage.arith.misc import divisors from sage.combinat.partition import Partition from sage.misc.cachefunc import cached_function @@ -1149,7 +1149,7 @@ def wsum(m): # expansion of h_m in w-basis, for m > 0 return result if parent_name == "powersum": - from sage.arith.all import divisors + from sage.arith.misc import divisors from sage.combinat.partition import Partition @cached_function diff --git a/src/sage/combinat/similarity_class_type.py b/src/sage/combinat/similarity_class_type.py index cf32b79905c..923dc64cb0d 100644 --- a/src/sage/combinat/similarity_class_type.py +++ b/src/sage/combinat/similarity_class_type.py @@ -189,22 +189,22 @@ class type, it is also possible to compute the number of classes of that type # **************************************************************************** from itertools import chain, product -from sage.misc.misc_c import prod -from sage.arith.misc import factorial -from sage.arith.all import moebius, divisors -from sage.misc.inherit_comparison import InheritComparisonClasscallMetaclass -from sage.structure.element import Element, is_Matrix -from sage.structure.parent import Parent -from sage.structure.unique_representation import UniqueRepresentation + +from sage.arith.misc import divisors, factorial, moebius from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.combinat.combinat import CombinatorialElement +from sage.combinat.misc import IterableFunctionCall from sage.combinat.partition import Partitions, Partition +from sage.misc.cachefunc import cached_in_parent_method, cached_function +from sage.misc.inherit_comparison import InheritComparisonClasscallMetaclass +from sage.misc.misc_c import prod from sage.rings.fraction_field import FractionField from sage.rings.integer_ring import ZZ -from sage.rings.rational_field import QQ -from sage.misc.cachefunc import cached_in_parent_method, cached_function -from sage.combinat.misc import IterableFunctionCall from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.rings.rational_field import QQ +from sage.structure.element import Element, is_Matrix +from sage.structure.parent import Parent +from sage.structure.unique_representation import UniqueRepresentation @cached_function diff --git a/src/sage/combinat/skew_tableau.py b/src/sage/combinat/skew_tableau.py index 66c0a410f8f..8c1d5566667 100644 --- a/src/sage/combinat/skew_tableau.py +++ b/src/sage/combinat/skew_tableau.py @@ -36,9 +36,9 @@ from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.arith.all import factorial +from sage.arith.misc import factorial from sage.rings.infinity import PlusInfinity -from sage.matrix.all import zero_matrix +from sage.matrix.special import zero_matrix from sage.structure.list_clone import ClonableList from sage.combinat.partition import Partition diff --git a/src/sage/combinat/species/cycle_species.py b/src/sage/combinat/species/cycle_species.py index a0afba3b1d0..20d89a770db 100644 --- a/src/sage/combinat/species/cycle_species.py +++ b/src/sage/combinat/species/cycle_species.py @@ -12,11 +12,11 @@ # http://www.gnu.org/licenses/ #***************************************************************************** -from .species import GenericCombinatorialSpecies -from .structure import GenericSpeciesStructure -from sage.structure.unique_representation import UniqueRepresentation -from sage.arith.all import divisors, euler_phi +from sage.arith.misc import divisors, euler_phi from sage.combinat.species.misc import accept_size +from sage.combinat.species.species import GenericCombinatorialSpecies +from sage.combinat.species.structure import GenericSpeciesStructure +from sage.structure.unique_representation import UniqueRepresentation class CycleSpeciesStructure(GenericSpeciesStructure): diff --git a/src/sage/combinat/species/generating_series.py b/src/sage/combinat/species/generating_series.py index 7f2d1f27c38..9d63ce27691 100644 --- a/src/sage/combinat/species/generating_series.py +++ b/src/sage/combinat/species/generating_series.py @@ -53,7 +53,7 @@ from sage.rings.lazy_series_ring import LazyPowerSeriesRing, LazySymmetricFunctions from sage.rings.integer import Integer from sage.rings.rational_field import QQ -from sage.arith.all import divisors +from sage.arith.misc import divisors from sage.combinat.partition import Partition, Partitions from sage.combinat.sf.sf import SymmetricFunctions from sage.misc.cachefunc import cached_function diff --git a/src/sage/combinat/subset.py b/src/sage/combinat/subset.py index 9505b1d4ced..c27b1eb04ed 100644 --- a/src/sage/combinat/subset.py +++ b/src/sage/combinat/subset.py @@ -38,7 +38,7 @@ from sage.structure.element import Element from sage.sets.set import Set, Set_object_enumerated -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.misc.misc import _stable_uniq as uniq from sage.rings.integer_ring import ZZ from sage.rings.integer import Integer @@ -1062,7 +1062,7 @@ def cardinality(self): sage: len(S.list()) 24 """ - from sage.all import prod + from sage.misc.misc_c import prod return Integer(prod(k + 1 for k in self._d.values())) def random_element(self): diff --git a/src/sage/combinat/symmetric_group_algebra.py b/src/sage/combinat/symmetric_group_algebra.py index b8a0bebab44..2b7df01dd0a 100644 --- a/src/sage/combinat/symmetric_group_algebra.py +++ b/src/sage/combinat/symmetric_group_algebra.py @@ -21,7 +21,7 @@ from sage.categories.weyl_groups import WeylGroups from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.rational_field import QQ -from sage.arith.all import factorial +from sage.arith.misc import factorial from sage.matrix.constructor import matrix from sage.modules.free_module_element import vector from sage.groups.perm_gps.permgroup_element import PermutationGroupElement diff --git a/src/sage/combinat/tableau.py b/src/sage/combinat/tableau.py index ae5e93682cc..00c840fda90 100644 --- a/src/sage/combinat/tableau.py +++ b/src/sage/combinat/tableau.py @@ -85,35 +85,35 @@ # https://www.gnu.org/licenses/ # **************************************************************************** from itertools import repeat -from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets -from sage.sets.family import Family -from sage.sets.non_negative_integers import NonNegativeIntegers -from sage.structure.global_options import GlobalOptions -from sage.structure.unique_representation import UniqueRepresentation -from sage.structure.list_clone import ClonableList -from sage.structure.parent import Parent -from sage.structure.richcmp import richcmp, richcmp_method -from sage.misc.persist import register_unpickle_override -from sage.misc.inherit_comparison import InheritComparisonClasscallMetaclass -from sage.rings.finite_rings.integer_mod_ring import IntegerModRing -from sage.rings.infinity import PlusInfinity -from sage.arith.all import factorial, binomial -from sage.arith.misc import multinomial -from sage.rings.integer import Integer -from sage.combinat.composition import Composition, Compositions -from sage.combinat.integer_vector import IntegerVectors, integer_vectors_nk_fast_iter + import sage.libs.symmetrica.all as symmetrica import sage.misc.prandom as random -from sage.combinat import permutation -from sage.groups.perm_gps.permgroup import PermutationGroup -from sage.misc.misc_c import prod -from sage.misc.misc import powerset + +from sage.arith.misc import binomial, factorial, multinomial from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets from sage.categories.sets_cat import Sets - +from sage.combinat import permutation from sage.combinat.combinatorial_map import combinatorial_map +from sage.combinat.composition import Composition, Compositions +from sage.combinat.integer_vector import IntegerVectors, integer_vectors_nk_fast_iter from sage.combinat.posets.posets import Poset +from sage.groups.perm_gps.permgroup import PermutationGroup +from sage.misc.inherit_comparison import InheritComparisonClasscallMetaclass +from sage.misc.misc import powerset +from sage.misc.misc_c import prod +from sage.misc.persist import register_unpickle_override +from sage.rings.finite_rings.integer_mod_ring import IntegerModRing +from sage.rings.infinity import PlusInfinity +from sage.rings.integer import Integer +from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets +from sage.sets.family import Family +from sage.sets.non_negative_integers import NonNegativeIntegers +from sage.structure.global_options import GlobalOptions +from sage.structure.list_clone import ClonableList +from sage.structure.parent import Parent +from sage.structure.richcmp import richcmp, richcmp_method +from sage.structure.unique_representation import UniqueRepresentation @richcmp_method diff --git a/src/sage/combinat/tableau_tuple.py b/src/sage/combinat/tableau_tuple.py index 8b9af538b00..85a8555ee9b 100644 --- a/src/sage/combinat/tableau_tuple.py +++ b/src/sage/combinat/tableau_tuple.py @@ -228,7 +228,7 @@ from sage.misc.lazy_attribute import lazy_attribute from sage.misc.misc_c import prod from sage.misc.prandom import randint -from sage.arith.all import factorial +from sage.arith.misc import factorial from sage.rings.finite_rings.integer_mod_ring import IntegerModRing from sage.rings.integer import Integer from sage.rings.semirings.non_negative_integer_semiring import NN diff --git a/src/sage/combinat/tamari_lattices.py b/src/sage/combinat/tamari_lattices.py index c08b1348e44..6ef7dd06cdc 100644 --- a/src/sage/combinat/tamari_lattices.py +++ b/src/sage/combinat/tamari_lattices.py @@ -48,7 +48,7 @@ # **************************************************************************** from __future__ import annotations from sage.combinat.posets.lattices import LatticePoset, MeetSemilattice -from sage.arith.all import gcd +from sage.arith.misc import gcd def paths_in_triangle(i, j, a, b) -> list[tuple[int, ...]]: diff --git a/src/sage/combinat/words/lyndon_word.py b/src/sage/combinat/words/lyndon_word.py index ca271c5a114..6adb96421e5 100644 --- a/src/sage/combinat/words/lyndon_word.py +++ b/src/sage/combinat/words/lyndon_word.py @@ -12,17 +12,15 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.structure.unique_representation import UniqueRepresentation -from sage.structure.parent import Parent - +from sage.arith.misc import divisors, gcd, moebius, multinomial +from sage.combinat.combinat_cython import lyndon_word_iterator from sage.combinat.composition import Composition, Compositions -from sage.rings.integer import Integer -from sage.arith.all import divisors, gcd, moebius, multinomial - from sage.combinat.necklace import _sfc -from sage.combinat.words.words import FiniteWords from sage.combinat.words.finite_word import FiniteWord_class -from sage.combinat.combinat_cython import lyndon_word_iterator +from sage.combinat.words.words import FiniteWords +from sage.rings.integer import Integer +from sage.structure.parent import Parent +from sage.structure.unique_representation import UniqueRepresentation def LyndonWords(e=None, k=None): diff --git a/src/sage/combinat/words/morphism.py b/src/sage/combinat/words/morphism.py index 5b302a34742..da112663af2 100644 --- a/src/sage/combinat/words/morphism.py +++ b/src/sage/combinat/words/morphism.py @@ -3003,7 +3003,7 @@ def rauzy_fractal_plot(self, n=None, exchange=False, eig=None, # 1D plots if dim_fractal == 1: - from sage.all import plot + from sage.plot.plot import plot for a in col_dict: # We plot only the points with a color in col_dict and with positive opacity if (a in col_dict) and (opacity[a] > 0): diff --git a/src/sage/combinat/words/paths.py b/src/sage/combinat/words/paths.py index b579aeae1ae..0c8dbb324a3 100644 --- a/src/sage/combinat/words/paths.py +++ b/src/sage/combinat/words/paths.py @@ -1226,7 +1226,7 @@ def tikz_trajectory(self): '(0.000, 0.000) -- (1.00, 0.000) -- (1.50, 0.866) -- (1.00, 1.73) -- (0.000, 1.73) -- (-0.500, 0.866)' """ - from sage.all import n + from sage.misc.functional import N as n f = lambda x: n(x,digits=3) l = [str(tuple(map(f, pt))) for pt in self.points()] return ' -- '.join(l) diff --git a/src/sage/combinat/words/shuffle_product.py b/src/sage/combinat/words/shuffle_product.py index 101e7ca695c..7363d642126 100644 --- a/src/sage/combinat/words/shuffle_product.py +++ b/src/sage/combinat/words/shuffle_product.py @@ -22,7 +22,7 @@ # https://www.gnu.org/licenses/ # **************************************************************************** from sage.combinat.words.word import Word_class, Word -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.combinat.integer_vector import IntegerVectors from sage.combinat.composition import Composition diff --git a/src/sage/combinat/words/word_generators.py b/src/sage/combinat/words/word_generators.py index b485205878f..66c5f25eda7 100644 --- a/src/sage/combinat/words/word_generators.py +++ b/src/sage/combinat/words/word_generators.py @@ -66,7 +66,7 @@ from sage.combinat.words.finite_word import FiniteWord_class, Factorization from sage.combinat.words.words import FiniteWords, InfiniteWords from sage.combinat.words.morphism import WordMorphism -from sage.arith.all import gcd +from sage.arith.misc import gcd from sage.misc.decorators import rename_keyword diff --git a/src/sage/crypto/boolean_function.pyx b/src/sage/crypto/boolean_function.pyx index 13b8a1c82a1..adb2405457e 100644 --- a/src/sage/crypto/boolean_function.pyx +++ b/src/sage/crypto/boolean_function.pyx @@ -38,8 +38,7 @@ from sage.rings.integer_ring import ZZ from sage.rings.integer cimport Integer from sage.rings.finite_rings.finite_field_constructor import GF from sage.rings.polynomial.pbori.pbori import BooleanPolynomial -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField -from sage.rings.finite_rings.finite_field_givaro import FiniteField_givaro +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.polynomial.polynomial_element import Polynomial from sage.misc.superseded import deprecated_function_alias @@ -329,11 +328,15 @@ cdef class BooleanFunction(SageObject): elif isinstance(x, Polynomial): K = x.base_ring() - if is_FiniteField(K) and K.characteristic() == 2: + if isinstance(K, FiniteField) and K.characteristic() == 2: self._nvariables = K.degree() bitset_init(self._truth_table, (1< = CC[] - sage: f = z^5 - 1 + sage: f = z^5 - 1 sage: general_julia(f) 500x500px 24-bit RGB image """ diff --git a/src/sage/finance/fractal.pyx b/src/sage/finance/fractal.pyx index a3323bc6c3c..ed67ade8181 100644 --- a/src/sage/finance/fractal.pyx +++ b/src/sage/finance/fractal.pyx @@ -21,7 +21,9 @@ AUTHOR: - William Stein (2008) """ -from sage.rings.all import RDF, CDF, Integer +from sage.rings.real_double import RDF +from sage.rings.complex_double import CDF +from sage.rings.integer import Integer from sage.modules.free_module_element import vector I = CDF.gen() diff --git a/src/sage/functions/hypergeometric.py b/src/sage/functions/hypergeometric.py index 50c60b25638..752b8422fc6 100644 --- a/src/sage/functions/hypergeometric.py +++ b/src/sage/functions/hypergeometric.py @@ -162,27 +162,27 @@ # https://www.gnu.org/licenses/ # **************************************************************************** +from functools import reduce + +from sage.arith.misc import binomial, factorial, rising_factorial +from sage.calculus.functional import derivative +from sage.functions.error import erf +from sage.functions.gamma import gamma +from sage.functions.hyperbolic import cosh, sinh +from sage.functions.log import exp, log +from sage.functions.other import sqrt, real_part +from sage.libs.mpmath import utils as mpmath_utils +from sage.misc.latex import latex +from sage.misc.misc_c import prod +from sage.rings.infinity import Infinity from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.rings.infinity import Infinity -from sage.arith.all import binomial, rising_factorial, factorial +from sage.structure.element import get_coercion_model from sage.symbolic.constants import pi +from sage.symbolic.expression import Expression from sage.symbolic.function import BuiltinFunction from sage.symbolic.ring import SR -from sage.structure.element import get_coercion_model -from sage.misc.latex import latex -from sage.misc.misc_c import prod -from sage.libs.mpmath import utils as mpmath_utils -from sage.symbolic.expression import Expression -from sage.calculus.functional import derivative -from functools import reduce - -from .gamma import gamma -from .other import sqrt, real_part -from .log import exp, log -from .hyperbolic import cosh, sinh -from .error import erf def rational_param_as_tuple(x): diff --git a/src/sage/functions/piecewise.py b/src/sage/functions/piecewise.py index 10d82e3709a..f73b016555c 100644 --- a/src/sage/functions/piecewise.py +++ b/src/sage/functions/piecewise.py @@ -1089,7 +1089,9 @@ def laplace(self, parameters, variable, x='x', s='t'): sage: f.laplace(t,s) (s + 1)*e^(-s)/s^2 + 2*e^(-s)/s - 1/s^2 """ - from sage.all import assume, exp, forget + from sage.symbolic.assumptions import assume, forget + from sage.functions.log import exp + x = SR.var(x) s = SR.var(s) assume(s>0) @@ -1180,7 +1182,8 @@ def fourier_series_cosine_coefficient(self, parameters, -3/5/pi """ - from sage.all import cos, pi + from sage.functions.trig import cos + from sage.symbolic.constants import pi L0 = (self.domain().sup() - self.domain().inf()) / 2 if not L: L = L0 @@ -1270,7 +1273,8 @@ def fourier_series_sine_coefficient(self, parameters, variable, 4/3/pi """ - from sage.all import sin, pi + from sage.functions.trig import sin + from sage.symbolic.constants import pi L0 = (self.domain().sup() - self.domain().inf()) / 2 if not L: L = L0 @@ -1358,7 +1362,10 @@ def fourier_series_partial_sum(self, parameters, variable, N, - 4/9*sin(3*pi*x)/pi^2 + 4*sin(pi*x)/pi^2 + 1/4 """ - from sage.all import pi, sin, cos, srange + from sage.symbolic.constants import pi + from sage.functions.trig import cos, sin + from sage.arith.srange import srange + if not L: L = (self.domain().sup() - self.domain().inf()) / 2 x = self.default_variable() diff --git a/src/sage/groups/abelian_gps/abelian_group.py b/src/sage/groups/abelian_gps/abelian_group.py index a56ae71d8bd..41b0e2c9eca 100644 --- a/src/sage/groups/abelian_gps/abelian_group.py +++ b/src/sage/groups/abelian_gps/abelian_group.py @@ -202,21 +202,22 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.rings.integer import Integer -from sage.rings.integer_ring import ZZ -from sage.structure.category_object import normalize_names -from sage.structure.unique_representation import UniqueRepresentation -from sage.rings.infinity import infinity -from sage.arith.all import divisors, gcd, lcm +from sage.arith.functions import lcm +from sage.arith.misc import divisors, gcd +from sage.categories.groups import Groups from sage.groups.abelian_gps.abelian_group_element import AbelianGroupElement -from sage.misc.cachefunc import cached_method -from sage.misc.misc_c import prod -from sage.misc.mrange import mrange, cartesian_product_iterator from sage.groups.group import AbelianGroup as AbelianGroupBase -from sage.categories.groups import Groups from sage.matrix.constructor import matrix from sage.matrix.special import diagonal_matrix +from sage.misc.cachefunc import cached_method +from sage.misc.misc_c import prod +from sage.misc.mrange import cartesian_product_iterator, mrange from sage.modules.free_module_element import vector +from sage.rings.infinity import infinity +from sage.rings.integer import Integer +from sage.rings.integer_ring import ZZ +from sage.structure.category_object import normalize_names +from sage.structure.unique_representation import UniqueRepresentation # TODO: this uses perm groups - the AbelianGroupElement instance method diff --git a/src/sage/groups/abelian_gps/dual_abelian_group_element.py b/src/sage/groups/abelian_gps/dual_abelian_group_element.py index 18fac135c94..685e4355780 100644 --- a/src/sage/groups/abelian_gps/dual_abelian_group_element.py +++ b/src/sage/groups/abelian_gps/dual_abelian_group_element.py @@ -52,7 +52,7 @@ # (at your option) any later version. # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.arith.all import LCM +from sage.arith.functions import lcm as LCM from sage.groups.abelian_gps.element_base import AbelianGroupElementBase diff --git a/src/sage/groups/abelian_gps/element_base.py b/src/sage/groups/abelian_gps/element_base.py index c1eec7ecb1f..cb31fe18d37 100644 --- a/src/sage/groups/abelian_gps/element_base.py +++ b/src/sage/groups/abelian_gps/element_base.py @@ -20,7 +20,8 @@ from sage.structure.element import MultiplicativeGroupElement from sage.misc.cachefunc import cached_method -from sage.arith.all import GCD, LCM +from sage.arith.misc import GCD +from sage.arith.functions import lcm as LCM from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.infinity import infinity diff --git a/src/sage/groups/affine_gps/affine_group.py b/src/sage/groups/affine_gps/affine_group.py index cef1788deea..44d6bf94900 100644 --- a/src/sage/groups/affine_gps/affine_group.py +++ b/src/sage/groups/affine_gps/affine_group.py @@ -21,7 +21,7 @@ from sage.categories.groups import Groups from sage.groups.matrix_gps.linear import GL from sage.categories.rings import Rings -from sage.matrix.all import MatrixSpace +from sage.matrix.matrix_space import MatrixSpace from sage.modules.all import FreeModule from sage.structure.unique_representation import UniqueRepresentation from sage.misc.cachefunc import cached_method diff --git a/src/sage/groups/class_function.py b/src/sage/groups/class_function.py index 56be7eedb29..f8ba10a4c2a 100644 --- a/src/sage/groups/class_function.py +++ b/src/sage/groups/class_function.py @@ -27,7 +27,7 @@ from sage.structure.richcmp import richcmp, richcmp_method from sage.interfaces.gap import gap from sage.rings.integer import Integer -from sage.rings.all import CyclotomicField +from sage.rings.number_field.number_field import CyclotomicField from sage.libs.gap.element import GapElement from sage.libs.gap.libgap import libgap from sage.libs.gap.element import GapElement as LibGapElement diff --git a/src/sage/groups/cubic_braid.py b/src/sage/groups/cubic_braid.py index a9465ef2b3d..206eedb1856 100644 --- a/src/sage/groups/cubic_braid.py +++ b/src/sage/groups/cubic_braid.py @@ -1543,10 +1543,10 @@ def as_matrix_group(self, root_bur=None, domain=None, characteristic=None, var=' self._classical_invariant_form = herm_form if unitary: - from sage.rings.finite_rings.finite_field_base import is_FiniteField + from sage.rings.finite_rings.finite_field_base import FiniteField from sage.groups.matrix_gps.unitary import GU d, d = herm_form.dimensions() - if is_FiniteField(domain): + if isinstance(domain, FiniteField): base_group = GU(d, domain, var=domain.gen(), invariant_form=herm_form) else: base_group = GU(d, domain, invariant_form=herm_form) diff --git a/src/sage/groups/generic.py b/src/sage/groups/generic.py index d5823ebf9e0..33e92d43ca5 100644 --- a/src/sage/groups/generic.py +++ b/src/sage/groups/generic.py @@ -935,7 +935,7 @@ def discrete_log(a, base, ord=None, bounds=None, operation='*', identity=None, i if running_mod > bound: break # we have log%running_mod. if we know that log 0 and self.cardinality() % q): - from sage.all import Matrix + from sage.matrix.constructor import Matrix try: elements = [g.matrix() for g in self.list()] except (TypeError, ValueError): diff --git a/src/sage/groups/matrix_gps/group_element.pyx b/src/sage/groups/matrix_gps/group_element.pyx index 777b141beb0..4d0312efdf9 100644 --- a/src/sage/groups/matrix_gps/group_element.pyx +++ b/src/sage/groups/matrix_gps/group_element.pyx @@ -687,7 +687,7 @@ cdef class MatrixGroupElement_gap(ElementLibGAP): return order.sage() else: assert order.IsInfinity() - from sage.rings.all import Infinity + from sage.rings.infinity import Infinity return Infinity def word_problem(self, gens=None): diff --git a/src/sage/groups/matrix_gps/orthogonal.py b/src/sage/groups/matrix_gps/orthogonal.py index 8ff96051a8b..242c3f42529 100644 --- a/src/sage/groups/matrix_gps/orthogonal.py +++ b/src/sage/groups/matrix_gps/orthogonal.py @@ -85,7 +85,7 @@ # **************************************************************************** from sage.rings.integer_ring import ZZ -from sage.rings.finite_rings.finite_field_base import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.misc.latex import latex from sage.misc.cachefunc import cached_method from sage.groups.matrix_gps.named_group import ( @@ -127,7 +127,7 @@ def normalize_args_e(degree, ring, e): ... ValueError: must have e=-1 or e=1 for even degree """ - if is_FiniteField(ring) and degree%2 == 0: + if isinstance(ring, FiniteField) and degree%2 == 0: if e not in (-1, +1): raise ValueError('must have e=-1 or e=1 for even degree') else: @@ -171,7 +171,7 @@ def _OG(n, R, special, e=0, var='a', invariant_form=None): e = normalize_args_e(degree, ring, e) if invariant_form is not None: - if is_FiniteField(ring): + if isinstance(ring, FiniteField): raise NotImplementedError("invariant_form for finite groups is fixed by GAP") if e == 0: @@ -202,7 +202,7 @@ def _OG(n, R, special, e=0, var='a', invariant_form=None): latex(ring), '+' if e == 1 else '-') - if is_FiniteField(ring): + if isinstance(ring, FiniteField): cmd = '{0}O({1}, {2}, {3})'.format(ltx_prefix, e, degree, ring.order()) return OrthogonalMatrixGroup_gap(degree, ring, False, name, ltx, cmd) else: diff --git a/src/sage/groups/matrix_gps/symplectic.py b/src/sage/groups/matrix_gps/symplectic.py index 3715f531913..8dd041af286 100644 --- a/src/sage/groups/matrix_gps/symplectic.py +++ b/src/sage/groups/matrix_gps/symplectic.py @@ -42,7 +42,7 @@ from sage.misc.latex import latex from sage.misc.cachefunc import cached_method -from sage.rings.finite_rings.finite_field_base import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.groups.matrix_gps.named_group import ( normalize_args_vectorspace, normalize_args_invariant_form, NamedMatrixGroup_generic, NamedMatrixGroup_gap) @@ -145,7 +145,7 @@ def Sp(n, R, var='a', invariant_form=None): raise ValueError('the degree must be even') if invariant_form is not None: - if is_FiniteField(ring): + if isinstance(ring, FiniteField): raise NotImplementedError("invariant_form for finite groups is fixed by GAP") invariant_form = normalize_args_invariant_form(ring, degree, invariant_form) diff --git a/src/sage/groups/matrix_gps/unitary.py b/src/sage/groups/matrix_gps/unitary.py index f4d8df525be..d8919f82695 100644 --- a/src/sage/groups/matrix_gps/unitary.py +++ b/src/sage/groups/matrix_gps/unitary.py @@ -50,7 +50,7 @@ # **************************************************************************** from sage.rings.finite_rings.finite_field_constructor import GF -from sage.rings.finite_rings.finite_field_base import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.misc.latex import latex from sage.misc.cachefunc import cached_method from sage.groups.matrix_gps.named_group import ( @@ -77,7 +77,7 @@ def finite_field_sqrt(ring): sage: finite_field_sqrt(GF(4, 'a')) 2 """ - if not is_FiniteField(ring): + if not isinstance(ring, FiniteField): raise ValueError('not a finite field') q, rem = ring.cardinality().sqrtrem() if rem: @@ -107,7 +107,7 @@ def _UG(n, R, special, var='a', invariant_form=None): latex_prefix ='S' degree, ring = normalize_args_vectorspace(n, R, var=var) - if is_FiniteField(ring): + if isinstance(ring, FiniteField): q = ring.cardinality() ring = GF(q**2, name=var) if invariant_form is not None: @@ -134,7 +134,7 @@ def _UG(n, R, special, var='a', invariant_form=None): name = '{0} Unitary Group of degree {1} over {2}'.format(prefix, degree, ring) ltx = r'\text{{{0}U}}_{{{1}}}({2})'.format(latex_prefix, degree, latex(ring)) - if is_FiniteField(ring): + if isinstance(ring, FiniteField): cmd = '{0}U({1}, {2})'.format(latex_prefix, degree, q) return UnitaryMatrixGroup_gap(degree, ring, special, name, ltx, cmd) else: diff --git a/src/sage/groups/perm_gps/partn_ref/data_structures.pyx b/src/sage/groups/perm_gps/partn_ref/data_structures.pyx index 74065fe1fec..841368e81e8 100644 --- a/src/sage/groups/perm_gps/partn_ref/data_structures.pyx +++ b/src/sage/groups/perm_gps/partn_ref/data_structures.pyx @@ -1411,7 +1411,7 @@ def SC_test_list_perms(list L, int n, int limit, bint gap, bint limit_complain, if SC_is_giant(n, len(L), perm, 0.9, giant_support): giant = True m = bitset_len(giant_support) - from sage.arith.all import factorial + from sage.arith.misc import factorial if not (order == factorial(m) or order == factorial(m)/2): print("SC_is_giant failed: %s %s"%(str(L), order)) raise AssertionError @@ -1530,7 +1530,7 @@ def SC_test_list_perms(list L, int n, int limit, bint gap, bint limit_complain, perm[n*j + i] = Lperm[i] j += 1 if SC_is_giant(n, len(L), perm, 0.9, giant_support): - from sage.arith.all import factorial + from sage.arith.misc import factorial m = bitset_len(giant_support) if order != factorial(m) and order != factorial(m)/2: print("SC_is_giant failed: %s %s"%(str(L), order)) diff --git a/src/sage/groups/perm_gps/partn_ref/refinement_matrices.pyx b/src/sage/groups/perm_gps/partn_ref/refinement_matrices.pyx index 736659318d6..71f09ccc90f 100644 --- a/src/sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +++ b/src/sage/groups/perm_gps/partn_ref/refinement_matrices.pyx @@ -337,7 +337,7 @@ def random_tests(n=10, nrows_max=50, ncols_max=50, nsymbols_max=10, perms_per_ma from sage.combinat.permutation import Permutations from sage.matrix.constructor import random_matrix, matrix from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF - from sage.arith.all import next_prime + from sage.arith.misc import next_prime cdef int h, i, j, nrows, k, num_tests = 0, num_matrices = 0 cdef MatrixStruct M, N for m in range(n): diff --git a/src/sage/groups/perm_gps/permgroup.py b/src/sage/groups/perm_gps/permgroup.py index be5e3372d6f..89c36ca2579 100644 --- a/src/sage/groups/perm_gps/permgroup.py +++ b/src/sage/groups/perm_gps/permgroup.py @@ -141,7 +141,8 @@ from sage.misc.randstate import current_randstate from sage.groups.group import FiniteGroup -from sage.rings.all import QQ, Integer +from sage.rings.rational_field import QQ +from sage.rings.integer import Integer from sage.interfaces.abc import ExpectElement, GapElement from sage.libs.gap.libgap import libgap from sage.libs.gap.element import GapElement as LibGapElement @@ -151,7 +152,7 @@ from sage.misc.cachefunc import cached_method from sage.groups.class_function import ClassFunction_libgap from sage.sets.finite_enumerated_set import FiniteEnumeratedSet -from sage.categories.all import FiniteEnumeratedSets +from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.groups.conjugacy_classes import ConjugacyClassGAP from sage.structure.richcmp import (richcmp_method, richcmp, rich_to_bool, op_EQ, op_NE) @@ -195,7 +196,7 @@ def hap_decorator(f): @wraps(f) def wrapped(self, n, p=0): load_hap() - from sage.arith.all import is_prime + from sage.arith.misc import is_prime if not (p == 0 or is_prime(p)): raise ValueError("p must be 0 or prime") @@ -3421,13 +3422,13 @@ def character_table(self): irrG = G.Irr() ct = [[irrG[i, j] for j in range(n)] for i in range(n)] - from sage.rings.all import CyclotomicField + from sage.rings.number_field.number_field import CyclotomicField e = irrG.Flat().Conductor() K = CyclotomicField(e) ct = [[K(x) for x in v] for v in ct] # Finally return the result as a matrix. - from sage.matrix.all import MatrixSpace + from sage.matrix.matrix_space import MatrixSpace MS = MatrixSpace(K, n) return MS(ct) @@ -4742,7 +4743,7 @@ def poincare_series(self, p=2, n=10): """ load_hap() - from sage.arith.all import is_prime + from sage.arith.misc import is_prime if not (p == 0 or is_prime(p)): raise ValueError("p must be 0 or prime") diff --git a/src/sage/groups/perm_gps/permgroup_element.pyx b/src/sage/groups/perm_gps/permgroup_element.pyx index d81fe55f5e7..1ea9a767fe7 100644 --- a/src/sage/groups/perm_gps/permgroup_element.pyx +++ b/src/sage/groups/perm_gps/permgroup_element.pyx @@ -121,11 +121,12 @@ from cpython.list cimport * from cypari2.gen cimport Gen from sage.ext.stdsage cimport HAS_DICTIONARY -from sage.rings.all import ZZ, Integer -from sage.rings.polynomial.polynomial_element import Polynomial +from sage.rings.integer_ring import ZZ +from sage.rings.integer import Integer from sage.rings.polynomial.multi_polynomial import MPolynomial +from sage.rings.polynomial.polynomial_element import Polynomial from sage.structure.element import is_Matrix -from sage.matrix.all import MatrixSpace +from sage.matrix.matrix_space import MatrixSpace from sage.sets.finite_enumerated_set import FiniteEnumeratedSet import sage.structure.coerce as coerce from sage.structure.richcmp cimport richcmp_not_equal, rich_to_bool diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py index 4fb4a094244..d5f9aeaf9ab 100644 --- a/src/sage/groups/perm_gps/permgroup_named.py +++ b/src/sage/groups/perm_gps/permgroup_named.py @@ -86,24 +86,24 @@ # **************************************************************************** from pathlib import Path -from sage.rings.all import Integer -from sage.libs.gap.libgap import libgap -from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF -from sage.arith.all import factor, valuation +from sage.arith.misc import factor, valuation +from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets from sage.groups.abelian_gps.abelian_group import AbelianGroup -from sage.misc.functional import is_even -from sage.misc.cachefunc import cached_method, weak_cached_function from sage.groups.perm_gps.permgroup import PermutationGroup_generic from sage.groups.perm_gps.permgroup_element import SymmetricGroupElement -from sage.structure.unique_representation import CachedRepresentation -from sage.structure.parent import Parent -from sage.structure.richcmp import richcmp -from sage.categories.finite_enumerated_sets import FiniteEnumeratedSets -from sage.sets.finite_enumerated_set import FiniteEnumeratedSet +from sage.libs.gap.libgap import libgap +from sage.misc.cachefunc import cached_method, weak_cached_function +from sage.misc.functional import is_even +from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF +from sage.rings.integer import Integer from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets -from sage.sets.non_negative_integers import NonNegativeIntegers from sage.sets.family import Family +from sage.sets.finite_enumerated_set import FiniteEnumeratedSet +from sage.sets.non_negative_integers import NonNegativeIntegers from sage.sets.primes import Primes +from sage.structure.parent import Parent +from sage.structure.richcmp import richcmp +from sage.structure.unique_representation import CachedRepresentation class PermutationGroup_unique(CachedRepresentation, PermutationGroup_generic): diff --git a/src/sage/homology/chain_complex.py b/src/sage/homology/chain_complex.py index b7392642cd4..08e9158e590 100644 --- a/src/sage/homology/chain_complex.py +++ b/src/sage/homology/chain_complex.py @@ -62,7 +62,8 @@ from sage.matrix.constructor import matrix from sage.misc.latex import latex from sage.misc.superseded import deprecation -from sage.rings.all import GF, prime_range +from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF +from sage.rings.fast_arith import prime_range from sage.homology.homology_group import HomologyGroup diff --git a/src/sage/homology/koszul_complex.py b/src/sage/homology/koszul_complex.py index 858d5a71283..af480a9c8db 100644 --- a/src/sage/homology/koszul_complex.py +++ b/src/sage/homology/koszul_complex.py @@ -14,7 +14,7 @@ from sage.structure.unique_representation import UniqueRepresentation from sage.structure.parent import Parent from sage.combinat.combination import rank -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.rings.integer_ring import ZZ from sage.matrix.constructor import matrix from sage.homology.chain_complex import ChainComplex_class diff --git a/src/sage/interacts/library.py b/src/sage/interacts/library.py index d806c2b5ab3..b340ddc930a 100644 --- a/src/sage/interacts/library.py +++ b/src/sage/interacts/library.py @@ -161,7 +161,7 @@ def html(obj): sage: html("

Hello world

")

Hello world

""" - from sage.all import html + from sage.misc.html import html pretty_print(html(obj)) @@ -1301,7 +1301,7 @@ def simpson_integration( else: interval = interval_g[0] def parabola(a, b, c): - from sage.all import solve + from sage.symbolic.relation import solve A, B, C = SR.var("A, B, C") K = solve([A*a[0]**2+B*a[0]+C==a[1], A*b[0]**2+B*b[0]+C==b[1], A*c[0]**2+B*c[0]+C==c[1]], [A, B, C], solution_dict=True)[0] f = K[A]*x**2+K[B]*x+K[C] diff --git a/src/sage/interfaces/axiom.py b/src/sage/interfaces/axiom.py index 2ec63939630..a015ffc67e5 100644 --- a/src/sage/interfaces/axiom.py +++ b/src/sage/interfaces/axiom.py @@ -836,7 +836,8 @@ def _sage_(self): return self._sage_domain() if type == "Float": - from sage.rings.all import RealField, ZZ + from sage.rings.real_mpfr import RealField + from sage.rings.integer_ring import ZZ prec = max(self.mantissa().length()._sage_(), 53) R = RealField(prec) x,e,b = self.unparsed_input_form().lstrip('float(').rstrip(')').split(',') diff --git a/src/sage/interfaces/fricas.py b/src/sage/interfaces/fricas.py index 202a756b0ef..9e39c9b6e45 100644 --- a/src/sage/interfaces/fricas.py +++ b/src/sage/interfaces/fricas.py @@ -1217,7 +1217,9 @@ def _get_sage_type(self, domain): sage: fricas(0)._get_sage_type(m) # optional - fricas Univariate Polynomial Ring in y over Univariate Polynomial Ring in x over Algebraic Field """ - from sage.rings.all import QQbar, RDF, PolynomialRing + from sage.rings.qqbar import QQbar + from sage.rings.real_double import RDF + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.fraction_field import FractionField from sage.rings.finite_rings.integer_mod_ring import Integers from sage.rings.finite_rings.finite_field_constructor import FiniteField @@ -1730,7 +1732,8 @@ def convert_rootOf(x, y): ex, _ = FriCASElement._parse_and_eval(fricas_InputForm) # postprocessing of rootOf - from sage.rings.all import QQbar, PolynomialRing + from sage.rings.qqbar import QQbar + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing while rootOf: for var, poly in rootOf.items(): pvars = poly.variables() diff --git a/src/sage/interfaces/gap.py b/src/sage/interfaces/gap.py index a38d2bd6d02..a87decbabbb 100644 --- a/src/sage/interfaces/gap.py +++ b/src/sage/interfaces/gap.py @@ -1753,7 +1753,7 @@ def intmod_gap_to_sage(x): sage: b.parent() Ring of integers modulo 65537 """ - from sage.rings.finite_rings.all import FiniteField + from sage.rings.finite_rings.finite_field_constructor import FiniteField from sage.rings.finite_rings.integer_mod import Mod from sage.rings.integer import Integer s = str(x) diff --git a/src/sage/interfaces/genus2reduction.py b/src/sage/interfaces/genus2reduction.py index 7a4794daf22..6fa64b68cca 100644 --- a/src/sage/interfaces/genus2reduction.py +++ b/src/sage/interfaces/genus2reduction.py @@ -34,7 +34,9 @@ # **************************************************************************** from sage.structure.sage_object import SageObject -from sage.rings.all import ZZ, QQ, PolynomialRing +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.libs.pari.all import pari roman_numeral = ["", "I", "II", "III", "IV", "V", "VI", "VII"] diff --git a/src/sage/interfaces/maxima_abstract.py b/src/sage/interfaces/maxima_abstract.py index cc1d88160bb..544e3b678a3 100644 --- a/src/sage/interfaces/maxima_abstract.py +++ b/src/sage/interfaces/maxima_abstract.py @@ -1846,7 +1846,7 @@ def _matrix_(self, R): [ 3 3/2 1 3/4] [ 4 2 4/3 1] """ - from sage.matrix.all import MatrixSpace + from sage.matrix.matrix_space import MatrixSpace self._check_valid() P = self.parent() nrows = int(P.eval('length(%s)'%self.name())) diff --git a/src/sage/interfaces/octave.py b/src/sage/interfaces/octave.py index 81d48cf3c10..f8f426c67e6 100644 --- a/src/sage/interfaces/octave.py +++ b/src/sage/interfaces/octave.py @@ -508,7 +508,7 @@ def solve_linear_system(self, A, b): m = A.nrows() if m != len(b): raise ValueError("dimensions of A and b must be compatible") - from sage.matrix.all import MatrixSpace + from sage.matrix.matrix_space import MatrixSpace from sage.rings.rational_field import QQ MS = MatrixSpace(QQ,m,1) b = MS(list(b)) # converted b to a "column vector" @@ -707,7 +707,7 @@ def _matrix_(self, R=None): if self.iscomplex(): w = [[to_complex(x,R) for x in row] for row in w] - from sage.matrix.all import MatrixSpace + from sage.matrix.matrix_space import MatrixSpace return MatrixSpace(R, nrows, ncols)(w) def _vector_(self, R=None): diff --git a/src/sage/interfaces/sage0.py b/src/sage/interfaces/sage0.py index a43a059e0ec..9eddb7019f7 100644 --- a/src/sage/interfaces/sage0.py +++ b/src/sage/interfaces/sage0.py @@ -159,7 +159,8 @@ def __init__(self, if python: command = 'python -u' prompt = re.compile(b'>>> ') - init_code.append('from sage.all import *') + environment = 'sage.all' + init_code.append(f'from {environment} import *') else: command = ' '.join([ 'sage-ipython', diff --git a/src/sage/interfaces/scilab.py b/src/sage/interfaces/scilab.py index 8349739633c..75ab263a53e 100644 --- a/src/sage/interfaces/scilab.py +++ b/src/sage/interfaces/scilab.py @@ -486,7 +486,7 @@ def _matrix_(self, R): [1.00000000000000 2.00000000000000] [3.00000000000000 4.50000000000000] """ - from sage.matrix.all import MatrixSpace + from sage.matrix.matrix_space import MatrixSpace s = str(self).strip() v = s.split('\n ') nrows = len(v) diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py index 0518caaa9b2..2a127cfe482 100644 --- a/src/sage/interfaces/singular.py +++ b/src/sage/interfaces/singular.py @@ -1656,15 +1656,19 @@ def sage_global_ring(self): br = ZZ is_extension = False elif charstr[0] in ['0', 'QQ']: - from sage.all import QQ + from sage.rings.rational_field import QQ br = QQ elif charstr[0].startswith('Float'): - from sage.all import RealField, ceil, log + from sage.rings.real_mpfr import RealField + from sage.functions.other import ceil + from sage.misc.functional import log prec = singular.eval('ringlist(basering)[1][2][1]') br = RealField(ceil((ZZ(prec)+1)/log(2,10))) is_extension = False elif charstr[0]=='complex': - from sage.all import ComplexField, ceil, log + from sage.rings.complex_mpfr import ComplexField + from sage.functions.other import ceil + from sage.misc.functional import log prec = singular.eval('ringlist(basering)[1][2][1]') br = ComplexField(ceil((ZZ(prec)+1)/log(2,10))) is_extension = False @@ -1684,7 +1688,7 @@ def sage_global_ring(self): if is_extension: minpoly = singular.eval('minpoly') if minpoly == '0': - from sage.all import Frac + from sage.rings.fraction_field import FractionField as Frac BR = Frac(br[charstr[1]]) else: is_short = singular.eval('short') @@ -1701,7 +1705,7 @@ def sage_global_ring(self): # Now, we form the polynomial ring over BR with the given variables, # using Singular's term order from sage.rings.polynomial.term_order import termorder_from_singular - from sage.all import PolynomialRing + from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing # Meanwhile Singulars quotient rings are also of 'ring' type, not 'qring' as it was in the past. # To find out if a singular ring is a quotient ring or not checking for ring type does not help # and instead of that we check if the quotient ring is zero or not: diff --git a/src/sage/interfaces/sympy.py b/src/sage/interfaces/sympy.py index 2c847d56892..aca0a43fa67 100644 --- a/src/sage/interfaces/sympy.py +++ b/src/sage/interfaces/sympy.py @@ -453,7 +453,7 @@ def _sympysage_rf(self): sage: assert rising_factorial(x,y)._sympy_() == rfxy.rewrite('gamma', piecewise=False) sage: assert rising_factorial(x,y) == rfxy._sage_() """ - from sage.arith.all import rising_factorial + from sage.arith.misc import rising_factorial return rising_factorial(self.args[0]._sage_(), self.args[1]._sage_()) def _sympysage_ff(self): @@ -466,7 +466,7 @@ def _sympysage_ff(self): sage: assert falling_factorial(x,y)._sympy_() == ffxy.rewrite('gamma') # known bug sage: assert falling_factorial(x,y) == ffxy._sage_() """ - from sage.arith.all import falling_factorial + from sage.arith.misc import falling_factorial return falling_factorial(self.args[0]._sage_(), self.args[1]._sage_()) def _sympysage_lgamma(self): diff --git a/src/sage/lfunctions/dokchitser.py b/src/sage/lfunctions/dokchitser.py index c526b9321a4..58499396d6c 100644 --- a/src/sage/lfunctions/dokchitser.py +++ b/src/sage/lfunctions/dokchitser.py @@ -33,7 +33,7 @@ import string from sage.structure.sage_object import SageObject -from sage.rings.all import ComplexField +from sage.rings.complex_mpfr import ComplexField from sage.rings.integer import Integer from sage.misc.sage_eval import sage_eval from sage.misc.verbose import verbose diff --git a/src/sage/lfunctions/pari.py b/src/sage/lfunctions/pari.py index f75b232e595..bbf289aa21c 100644 --- a/src/sage/lfunctions/pari.py +++ b/src/sage/lfunctions/pari.py @@ -22,7 +22,10 @@ from cypari2.gen import Gen from sage.libs.pari import pari from sage.structure.sage_object import SageObject -from sage.rings.all import (ZZ, RealField, ComplexField, PowerSeriesRing) +from sage.rings.integer_ring import ZZ +from sage.rings.real_mpfr import RealField +from sage.rings.complex_mpfr import ComplexField +from sage.rings.power_series_ring import PowerSeriesRing class lfun_generic(): diff --git a/src/sage/lfunctions/zero_sums.pyx b/src/sage/lfunctions/zero_sums.pyx index 2b0ca332b2a..1b584caec25 100644 --- a/src/sage/lfunctions/zero_sums.pyx +++ b/src/sage/lfunctions/zero_sums.pyx @@ -18,20 +18,21 @@ AUTHORS: # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.structure.sage_object cimport SageObject -from sage.rings.integer_ring import ZZ -from sage.rings.real_double import RDF -from sage.rings.complex_double import CDF -from sage.rings.infinity import PlusInfinity -from sage.arith.all import prime_powers, next_prime +from sage.arith.misc import next_prime, prime_powers from sage.functions.log import log, exp from sage.functions.other import real, imag -from sage.symbolic.constants import pi, euler_gamma +from sage.libs.flint.ulong_extras cimport n_is_prime from sage.libs.pari.all import pari from sage.misc.verbose import verbose from sage.parallel.decorate import parallel from sage.parallel.ncpus import ncpus as num_cpus -from sage.libs.flint.ulong_extras cimport n_is_prime +from sage.rings.complex_double import CDF +from sage.rings.infinity import PlusInfinity +from sage.rings.integer_ring import ZZ +from sage.rings.real_double import RDF +from sage.structure.sage_object cimport SageObject +from sage.symbolic.constants import euler_gamma, pi + cdef extern from "": double c_exp "exp"(double) diff --git a/src/sage/libs/arb/arb_version.pyx b/src/sage/libs/arb/arb_version.pyx index 6ad567e67ce..55736c392e9 100644 --- a/src/sage/libs/arb/arb_version.pyx +++ b/src/sage/libs/arb/arb_version.pyx @@ -1,5 +1,5 @@ # -*- coding: utf-8 -from sage.libs.arb.arb cimport arb_version +from sage.libs.arb.arb cimport arb_version from sage.cpython.string cimport char_to_str def version(): diff --git a/src/sage/libs/coxeter3/coxeter_group.py b/src/sage/libs/coxeter3/coxeter_group.py index 7588e6805ea..ab8dfb2ae0c 100644 --- a/src/sage/libs/coxeter3/coxeter_group.py +++ b/src/sage/libs/coxeter3/coxeter_group.py @@ -15,7 +15,7 @@ from sage.structure.unique_representation import UniqueRepresentation from sage.structure.element_wrapper import ElementWrapper from sage.structure.richcmp import richcmp -from sage.categories.all import CoxeterGroups +from sage.categories.coxeter_groups import CoxeterGroups from sage.structure.parent import Parent from sage.combinat.root_system.coxeter_matrix import CoxeterMatrix @@ -37,7 +37,7 @@ def __classcall__(cls, cartan_type, *args, **options): Coxeter group of type ['B', 3] relabelled by {1: 3, 2: 2, 3: 1} implemented by Coxeter3 """ - from sage.combinat.all import CartanType + from sage.combinat.root_system.cartan_type import CartanType ct = CartanType(cartan_type) return super().__classcall__(cls, ct, *args, **options) diff --git a/src/sage/libs/eclib/homspace.pyx b/src/sage/libs/eclib/homspace.pyx index 3feea84fda7..090fa3b693d 100644 --- a/src/sage/libs/eclib/homspace.pyx +++ b/src/sage/libs/eclib/homspace.pyx @@ -8,7 +8,7 @@ from libcpp.map cimport map from ..eclib cimport vec, svec, mat, smat from .mat cimport MatrixFactory -from sage.matrix.all import MatrixSpace +from sage.matrix.matrix_space import MatrixSpace from sage.matrix.matrix_integer_sparse cimport Matrix_integer_sparse from sage.rings.integer_ring import ZZ from sage.rings.integer cimport Integer diff --git a/src/sage/libs/eclib/mat.pyx b/src/sage/libs/eclib/mat.pyx index 2ad3474b221..39dee4afc94 100644 --- a/src/sage/libs/eclib/mat.pyx +++ b/src/sage/libs/eclib/mat.pyx @@ -4,7 +4,7 @@ Cremona matrices from ..eclib cimport scalar, addscalar -from sage.matrix.all import MatrixSpace +from sage.matrix.matrix_space import MatrixSpace from sage.rings.integer_ring import ZZ from sage.matrix.matrix_integer_sparse cimport Matrix_integer_sparse diff --git a/src/sage/libs/eclib/mwrank.pyx b/src/sage/libs/eclib/mwrank.pyx index 119d4d49dd4..4fa12cc10dd 100644 --- a/src/sage/libs/eclib/mwrank.pyx +++ b/src/sage/libs/eclib/mwrank.pyx @@ -593,9 +593,9 @@ cdef class _mw: Reducing saturation bound from given value 20 to computed index bound 3 Tamagawa index primes are [ 2 ] Checking saturation at [ 2 3 ] - Checking 2-saturation + Checking 2-saturation Points were proved 2-saturated (max q used = 7) - Checking 3-saturation + Checking 3-saturation Points were proved 3-saturated (max q used = 7) done P2 = [-2:3:1] is generator number 2 @@ -603,10 +603,10 @@ cdef class _mw: Reducing saturation bound from given value 20 to computed index bound 4 Tamagawa index primes are [ 2 ] Checking saturation at [ 2 3 ] - Checking 2-saturation + Checking 2-saturation possible kernel vector = [1,1] This point may be in 2E(Q): [14:-52:1] - ...and it is! + ...and it is! Replacing old generator #1 with new generator [1:-1:1] Reducing index bound from 4 to 2 Points have successfully been 2-saturated (max q used = 7) @@ -618,9 +618,9 @@ cdef class _mw: Reducing saturation bound from given value 20 to computed index bound 3 Tamagawa index primes are [ 2 ] Checking saturation at [ 2 3 ] - Checking 2-saturation + Checking 2-saturation Points were proved 2-saturated (max q used = 11) - Checking 3-saturation + Checking 3-saturation Points were proved 3-saturated (max q used = 13) done, index = 1. P4 = [-1:3:1] = -1*P1 + -1*P2 + -1*P3 (mod torsion) diff --git a/src/sage/libs/gap/element.pyx b/src/sage/libs/gap/element.pyx index c555ea0333c..5df52f23be4 100644 --- a/src/sage/libs/gap/element.pyx +++ b/src/sage/libs/gap/element.pyx @@ -27,7 +27,9 @@ from sage.cpython.string cimport str_to_bytes, char_to_str from sage.misc.cachefunc import cached_method from sage.structure.sage_object cimport SageObject from sage.structure.parent import Parent -from sage.rings.all import ZZ, QQ, RDF +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ +from sage.rings.real_double import RDF from sage.groups.perm_gps.permgroup_element cimport PermutationGroupElement from sage.combinat.permutation import Permutation diff --git a/src/sage/libs/giac/giac.pyx b/src/sage/libs/giac/giac.pyx index 990114fb4a5..a01e52d6163 100644 --- a/src/sage/libs/giac/giac.pyx +++ b/src/sage/libs/giac/giac.pyx @@ -154,7 +154,9 @@ from sage.ext.stdsage cimport PY_NEW from sage.libs.gmp.mpz cimport mpz_t, mpz_init_set -from sage.rings.all import ZZ, QQ, IntegerModRing +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ +from sage.rings.finite_rings.integer_mod_ring import IntegerModRing from sage.rings.integer cimport Integer from sage.rings.rational cimport Rational from sage.structure.element cimport Matrix diff --git a/src/sage/libs/lcalc/lcalc_Lfunction.pyx b/src/sage/libs/lcalc/lcalc_Lfunction.pyx index efb738714cc..a59a2207867 100644 --- a/src/sage/libs/lcalc/lcalc_Lfunction.pyx +++ b/src/sage/libs/lcalc/lcalc_Lfunction.pyx @@ -272,7 +272,7 @@ cdef class Lfunction: def find_zeros(self, T1, T2, stepsize): """ - Finds zeros on critical line between ``T1`` and ``T2`` using step size + Finds zeros on critical line between ``T1`` and ``T2`` using step size of stepsize. This function might miss zeros if step size is too large. This function computes the zeros of the L-function by using change in signs of areal valued function whose zeros coincide with diff --git a/src/sage/libs/linkages/padics/API.pxi b/src/sage/libs/linkages/padics/API.pxi index 41db95ef8ae..529fc49a95b 100644 --- a/src/sage/libs/linkages/padics/API.pxi +++ b/src/sage/libs/linkages/padics/API.pxi @@ -201,8 +201,8 @@ cdef inline long cremove(celement out, celement a, long prec, PowComputer_class - ``a`` -- the element whose valuation and unit are desired. - ``prec`` -- a long, used if `a = 0`. - ``prime_pow`` -- the PowComputer for the ring. - - ``reduce_relative`` -- a bint: whether the final result - should be reduced at precision ``prec`` (case ``False``) + - ``reduce_relative`` -- a bint: whether the final result + should be reduced at precision ``prec`` (case ``False``) or ``prec - valuation`` (case ``True``) OUTPUT: diff --git a/src/sage/libs/linkages/padics/Polynomial_shared.pxi b/src/sage/libs/linkages/padics/Polynomial_shared.pxi index 738ab9bf457..495dc6b0848 100644 --- a/src/sage/libs/linkages/padics/Polynomial_shared.pxi +++ b/src/sage/libs/linkages/padics/Polynomial_shared.pxi @@ -128,14 +128,14 @@ cdef inline long cremove(celement out, celement a, long prec, PowComputer_ prime INPUT: - ``out`` -- a ``celement`` to store the unit part - + - ``a`` -- the ``celement`` whose valuation and unit are desired - + - ``prec`` -- a ``long``, the return value if ``a`` is zero - + - ``prime_pow`` -- the ``PowComputer`` for the ring - - ``reduce_relative`` -- a bint: whether the final result + - ``reduce_relative`` -- a bint: whether the final result should be reduced at precision ``prec`` (case ``False``) or ``prec - valuation`` (case ``True``) diff --git a/src/sage/libs/linkages/padics/fmpz_poly_unram.pxi b/src/sage/libs/linkages/padics/fmpz_poly_unram.pxi index 60fb9439388..8b1b80cf0a9 100644 --- a/src/sage/libs/linkages/padics/fmpz_poly_unram.pxi +++ b/src/sage/libs/linkages/padics/fmpz_poly_unram.pxi @@ -194,7 +194,7 @@ cdef inline long cremove(celement out, celement a, long prec, PowComputer_ prime - ``a`` -- the element whose valuation and unit are desired. - ``prec`` -- a long, used if `a = 0`. - ``prime_pow`` -- the PowComputer for the ring. - - ``reduce_relative`` -- a bint: whether the final result + - ``reduce_relative`` -- a bint: whether the final result should be reduced at precision ``prec`` (case ``False``) or ``prec - valuation`` (case ``True``) diff --git a/src/sage/libs/linkages/padics/mpz.pxi b/src/sage/libs/linkages/padics/mpz.pxi index a7200b0c4fa..2844a3934f5 100644 --- a/src/sage/libs/linkages/padics/mpz.pxi +++ b/src/sage/libs/linkages/padics/mpz.pxi @@ -367,7 +367,7 @@ cdef inline int csetone(mpz_t out, PowComputer_ prime_pow) except -1: - ``prime_pow`` -- the PowComputer for the ring. """ mpz_set_ui(out, 1) - + cdef inline int csetzero(mpz_t out, PowComputer_ prime_pow) except -1: """ Sets to 0. @@ -378,7 +378,7 @@ cdef inline int csetzero(mpz_t out, PowComputer_ prime_pow) except -1: - ``prime_pow`` -- the PowComputer for the ring. """ mpz_set_ui(out, 0) - + cdef inline bint cisone(mpz_t out, PowComputer_ prime_pow) except -1: """ Returns whether this element is equal to 1. diff --git a/src/sage/libs/linkages/padics/relaxed/API.pxi b/src/sage/libs/linkages/padics/relaxed/API.pxi index 29a051b808c..4e9ea075bb2 100644 --- a/src/sage/libs/linkages/padics/relaxed/API.pxi +++ b/src/sage/libs/linkages/padics/relaxed/API.pxi @@ -362,7 +362,7 @@ cdef inline void element_get_slice(celement res, celement x, long start, long le .. NOTE:: This function only sets up a pointer to the requested slice - (the slice is not copied). Hence any future modification + (the slice is not copied). Hence any future modification of the slice ``res`` will affect the container ``x``. """ pass diff --git a/src/sage/libs/pari/convert_sage.pyx b/src/sage/libs/pari/convert_sage.pyx index 96bce94ad5f..1d1db834f6e 100644 --- a/src/sage/libs/pari/convert_sage.pyx +++ b/src/sage/libs/pari/convert_sage.pyx @@ -30,7 +30,9 @@ from sage.ext.stdsage cimport PY_NEW from sage.libs.gmp.mpz cimport mpz_fits_slong_p, mpz_sgn, mpz_get_ui, mpz_set, mpz_set_si, mpz_set_ui from sage.libs.gmp.mpq cimport mpq_denref, mpq_numref from sage.rings.integer cimport smallInteger -from sage.rings.all import RealField, ComplexField, QuadraticField +from sage.rings.real_mpfr import RealField +from sage.rings.complex_mpfr import ComplexField +from sage.rings.number_field.number_field import QuadraticField from sage.matrix.args cimport (MatrixArgs, MA_ENTRIES_SEQ_SEQ, MA_ENTRIES_SEQ_FLAT, MA_ENTRIES_CALLABLE, MA_ENTRIES_UNKNOWN, MA_ENTRIES_SCALAR) diff --git a/src/sage/matrix/matrix_space.py b/src/sage/matrix/matrix_space.py index afd06c9db20..3a48b7bccbe 100644 --- a/src/sage/matrix/matrix_space.py +++ b/src/sage/matrix/matrix_space.py @@ -43,7 +43,7 @@ from sage.structure.parent import Parent from sage.structure.unique_representation import UniqueRepresentation import sage.rings.integer as integer -import sage.rings.finite_rings.finite_field_constructor +from sage.rings.finite_rings.finite_field_base import FiniteField import sage.misc.latex as latex import sage.modules.free_module @@ -223,7 +223,7 @@ def get_matrix_class(R, nrows, ncols, sparse, implementation): else: return matrix_complex_double_dense.Matrix_complex_double_dense - elif sage.rings.finite_rings.finite_field_constructor.is_FiniteField(R): + elif isinstance(R, FiniteField): if R.order() == 2: try: from . import matrix_mod2_dense diff --git a/src/sage/matroids/basis_matroid.pyx b/src/sage/matroids/basis_matroid.pyx index ff70add1ce2..042f529fedc 100644 --- a/src/sage/matroids/basis_matroid.pyx +++ b/src/sage/matroids/basis_matroid.pyx @@ -79,7 +79,7 @@ from .basis_exchange_matroid cimport BasisExchangeMatroid from .set_system cimport SetSystem from cpython.object cimport Py_EQ, Py_NE -from sage.arith.all import binomial +from sage.arith.misc import binomial from itertools import permutations, combinations diff --git a/src/sage/matroids/constructor.py b/src/sage/matroids/constructor.py index dc5610f1536..99580562e96 100644 --- a/src/sage/matroids/constructor.py +++ b/src/sage/matroids/constructor.py @@ -107,7 +107,8 @@ from sage.structure.element import is_Matrix from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.categories.all import Fields, Rings +from sage.categories.fields import Fields +from sage.categories.rings import Rings from sage.rings.finite_rings.finite_field_base import FiniteField import sage.matroids.matroid import sage.matroids.basis_exchange_matroid diff --git a/src/sage/matroids/extension.pyx b/src/sage/matroids/extension.pyx index 0408e60f86e..04ccf9ec61f 100644 --- a/src/sage/matroids/extension.pyx +++ b/src/sage/matroids/extension.pyx @@ -31,7 +31,7 @@ Methods from sage.data_structures.bitset_base cimport * from .basis_matroid cimport BasisMatroid -from sage.arith.all import binomial +from sage.arith.misc import binomial cdef class CutNode: diff --git a/src/sage/matroids/lean_matrix.pyx b/src/sage/matroids/lean_matrix.pyx index 6b3cf27bcf2..70510e53797 100644 --- a/src/sage/matroids/lean_matrix.pyx +++ b/src/sage/matroids/lean_matrix.pyx @@ -37,7 +37,10 @@ from cysignals.signals cimport sig_on, sig_off from sage.data_structures.bitset_base cimport * from sage.matrix.matrix2 cimport Matrix -from sage.rings.all import ZZ, FiniteField, GF, QQ +from sage.rings.integer_ring import ZZ +from sage.rings.finite_rings.finite_field_constructor import FiniteField +from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF +from sage.rings.rational_field import QQ from sage.rings.integer cimport Integer from sage.rings.rational cimport Rational from sage.libs.gmp.mpq cimport * diff --git a/src/sage/matroids/linear_matroid.pyx b/src/sage/matroids/linear_matroid.pyx index 0c9b0a1baff..5c697a696b4 100644 --- a/src/sage/matroids/linear_matroid.pyx +++ b/src/sage/matroids/linear_matroid.pyx @@ -111,27 +111,27 @@ Methods # https://www.gnu.org/licenses/ # **************************************************************************** +from copy import copy, deepcopy +from itertools import combinations, product + from cpython.object cimport Py_EQ, Py_NE from sage.data_structures.bitset_base cimport * -from sage.structure.richcmp cimport rich_to_bool -from sage.matroids.matroid cimport Matroid -from sage.matroids.basis_exchange_matroid cimport BasisExchangeMatroid -from .lean_matrix cimport (LeanMatrix, GenericMatrix, BinaryMatrix, - TernaryMatrix, QuaternaryMatrix, PlusMinusOneMatrix, - RationalMatrix, generic_identity) -from .set_system cimport SetSystem -from .utilities import newlabel, spanning_stars, spanning_forest, lift_cross_ratios -from sage.graphs.spanning_tree import kruskal from sage.graphs.graph import Graph - -from sage.matrix.matrix2 cimport Matrix -import sage.matrix.constructor +from sage.graphs.spanning_tree import kruskal from sage.matrix.constructor import matrix -from copy import copy, deepcopy -from sage.rings.all import ZZ, QQ, FiniteField, GF -import itertools -from itertools import combinations, product +from sage.matrix.matrix2 cimport Matrix +from sage.matroids.basis_exchange_matroid cimport BasisExchangeMatroid +from sage.matroids.lean_matrix cimport (LeanMatrix, GenericMatrix, BinaryMatrix, + TernaryMatrix, QuaternaryMatrix, PlusMinusOneMatrix, + RationalMatrix, generic_identity) +from sage.matroids.matroid cimport Matroid +from sage.matroids.set_system cimport SetSystem +from sage.matroids.utilities import newlabel, spanning_stars, spanning_forest, lift_cross_ratios +from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ +from sage.structure.richcmp cimport rich_to_bool cdef bint GF2_not_defined = True cdef GF2, GF2_one, GF2_zero diff --git a/src/sage/modules/free_module.py b/src/sage/modules/free_module.py index 743fc2fbbcc..41bd5633503 100644 --- a/src/sage/modules/free_module.py +++ b/src/sage/modules/free_module.py @@ -183,7 +183,6 @@ import sage.misc.latex as latex from sage.modules.module import Module -import sage.rings.finite_rings.finite_field_constructor as finite_field import sage.rings.ring as ring import sage.rings.abc import sage.rings.integer_ring @@ -195,6 +194,7 @@ from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets from sage.misc.lazy_attribute import lazy_attribute from sage.misc.randstate import current_randstate +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.structure.factory import UniqueFactory from sage.structure.sequence import Sequence from sage.structure.richcmp import (richcmp_method, rich_to_bool, richcmp, @@ -6348,7 +6348,7 @@ def _element_constructor_(self, e, *args, **kwds): """ try: k = e.parent() - if finite_field.is_FiniteField(k) and k.base_ring() == self.base_ring() and k.degree() == self.degree(): + if isinstance(k, FiniteField) and k.base_ring() == self.base_ring() and k.degree() == self.degree(): return self(e._vector_()) except AttributeError: pass diff --git a/src/sage/numerical/backends/cvxopt_backend.pyx b/src/sage/numerical/backends/cvxopt_backend.pyx index 10358c3a8f9..22bdfd20ea6 100644 --- a/src/sage/numerical/backends/cvxopt_backend.pyx +++ b/src/sage/numerical/backends/cvxopt_backend.pyx @@ -137,7 +137,7 @@ cdef class CVXOPTBackend(GenericBackend): This amounts to adding a new column to the matrix. By default, the variable is both positive and real. Variable types are always continuous, and thus the parameters - ``binary``, ``integer``, and ``continuous`` have no effect. + ``binary``, ``integer``, and ``continuous`` have no effect. INPUT: diff --git a/src/sage/numerical/backends/cvxopt_sdp_backend.pyx b/src/sage/numerical/backends/cvxopt_sdp_backend.pyx index c654f7f21a2..bb999559ee2 100644 --- a/src/sage/numerical/backends/cvxopt_sdp_backend.pyx +++ b/src/sage/numerical/backends/cvxopt_sdp_backend.pyx @@ -20,7 +20,7 @@ AUTHORS: #***************************************************************************** from sage.numerical.sdp import SDPSolverException -from sage.matrix.all import Matrix +from sage.matrix.constructor import Matrix from .matrix_sdp_backend cimport MatrixSDPBackend diff --git a/src/sage/numerical/backends/generic_backend.pyx b/src/sage/numerical/backends/generic_backend.pyx index 4ba33af08b7..9331b01733e 100644 --- a/src/sage/numerical/backends/generic_backend.pyx +++ b/src/sage/numerical/backends/generic_backend.pyx @@ -1555,7 +1555,7 @@ def default_mip_solver(solver=None): - a string indicating one of the available solvers (see :class:`MixedIntegerLinearProgram`); - - a callable (typically a subclass of + - a callable (typically a subclass of :class:`sage.numerical.backends.generic_backend.GenericBackend`); - ``None`` (default), in which case the current default solver @@ -1759,7 +1759,8 @@ cpdef GenericBackend get_solver(constraint_generation = False, solver = None, ba if base_ring is not None: base_ring = base_ring.fraction_field() - from sage.rings.all import QQ, RDF + from sage.rings.rational_field import QQ + from sage.rings.real_double import RDF if base_ring is QQ: solver = "Ppl" elif solver in ["Interactivelp", "Ppl"] and not base_ring.is_exact(): diff --git a/src/sage/numerical/backends/matrix_sdp_backend.pyx b/src/sage/numerical/backends/matrix_sdp_backend.pyx index 52f5ae602e0..7668c64ecc1 100644 --- a/src/sage/numerical/backends/matrix_sdp_backend.pyx +++ b/src/sage/numerical/backends/matrix_sdp_backend.pyx @@ -20,7 +20,7 @@ other classes implementing solvers. # http://www.gnu.org/licenses/ #***************************************************************************** -from sage.matrix.all import Matrix +from sage.matrix.constructor import Matrix from .generic_sdp_backend cimport GenericSDPBackend cdef class MatrixSDPBackend(GenericSDPBackend): diff --git a/src/sage/numerical/gauss_legendre.pyx b/src/sage/numerical/gauss_legendre.pyx index 0b8dd4361e3..034131d9c22 100644 --- a/src/sage/numerical/gauss_legendre.pyx +++ b/src/sage/numerical/gauss_legendre.pyx @@ -63,7 +63,7 @@ def nodes_uncached(degree, prec): - ``degree`` -- integer. The number of nodes. Must be 3 or even. - - ``prec`` -- integer (minimal value 53). Binary precision with which the + - ``prec`` -- integer (minimal value 53). Binary precision with which the nodes and weights are computed. OUTPUT: @@ -166,13 +166,13 @@ def nodes(degree, prec): Compute the integration nodes and weights for the Gauss-Legendre quadrature scheme, caching the output - Works by calling ``nodes_uncached``. + Works by calling ``nodes_uncached``. INPUT: - ``degree`` -- integer. The number of nodes. Must be 3 or even. - - ``prec`` -- integer (minimal value 53). Binary precision with which the + - ``prec`` -- integer (minimal value 53). Binary precision with which the nodes and weights are computed. OUTPUT: @@ -271,10 +271,10 @@ def integrate_vector_N(f, prec, N=3): Integrate a one-argument vector-valued function numerically using Gauss-Legendre, setting the number of nodes. - This function uses the Gauss-Legendre quadrature scheme to approximate the + This function uses the Gauss-Legendre quadrature scheme to approximate the integral `\int_0^1 f(t) \, dt`. It is different from ``integrate_vector`` by using a specific number of nodes rather than targeting a specified error - bound on the result. + bound on the result. INPUT: @@ -284,9 +284,9 @@ def integrate_vector_N(f, prec, N=3): - ``N`` -- integer (default: 3). Number of nodes to use. - OUTPUT: + OUTPUT: - Vector approximating value of the integral. + Vector approximating value of the integral. EXAMPLES:: @@ -300,14 +300,14 @@ def integrate_vector_N(f, prec, N=3): .. NOTE:: - The nodes and weights are calculated in the real field with ``prec`` + The nodes and weights are calculated in the real field with ``prec`` bits of precision. If the vector space in which ``f`` takes values is over a field which is incompatible with this field (e.g. a finite - field) then a TypeError occurs. + field) then a TypeError occurs. """ - # We use nodes_uncached, because caching takes up memory, and numerics in - # Bruin-DisneyHogg-Gao suggest that caching provides little benefit in the - # use in the Riemann surfaces module. + # We use nodes_uncached, because caching takes up memory, and numerics in + # Bruin-DisneyHogg-Gao suggest that caching provides little benefit in the + # use in the Riemann surfaces module. nodelist = nodes_uncached(N, prec) I = nodelist[0][1]*f(nodelist[0][0]) for i in range(1,len(nodelist)): diff --git a/src/sage/numerical/interactive_simplex_method.py b/src/sage/numerical/interactive_simplex_method.py index c61817f6a02..b8ab50b1e45 100644 --- a/src/sage/numerical/interactive_simplex_method.py +++ b/src/sage/numerical/interactive_simplex_method.py @@ -183,10 +183,10 @@ from sage.misc.abstract_method import abstract_method from sage.geometry.all import Polyhedron -from sage.matrix.all import (column_matrix, - identity_matrix, - matrix, - random_matrix) +from sage.matrix.special import column_matrix +from sage.matrix.special import identity_matrix +from sage.matrix.constructor import Matrix as matrix +from sage.matrix.special import random_matrix from sage.misc.latex import LatexExpr, latex from sage.misc.cachefunc import cached_function, cached_method from sage.misc.prandom import randint, random @@ -195,7 +195,11 @@ from sage.modules.all import random_vector, vector from sage.misc.lazy_import import lazy_import lazy_import("sage.plot.all", ["Graphics", "arrow", "line", "point", "rainbow", "text"]) -from sage.rings.all import Infinity, PolynomialRing, QQ, RDF, ZZ +from sage.rings.infinity import Infinity +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing +from sage.rings.rational_field import QQ +from sage.rings.real_double import RDF +from sage.rings.integer_ring import ZZ from sage.structure.all import SageObject from sage.symbolic.ring import SR diff --git a/src/sage/numerical/linear_functions.pyx b/src/sage/numerical/linear_functions.pyx index a5c0c0336d0..5549ff436f5 100644 --- a/src/sage/numerical/linear_functions.pyx +++ b/src/sage/numerical/linear_functions.pyx @@ -1064,7 +1064,7 @@ cdef class LinearFunction(LinearFunctionOrConstraint): sage: f._coeff_formatter(sqrt5) 'sqrt5*' - sage: from sage.rings.all import AA + sage: from sage.rings.qqbar import AA sage: sqrt5 = AA(5).sqrt() sage: p = MixedIntegerLinearProgram(solver='interactivelp', base_ring=AA) sage: LF = p.linear_functions_parent() diff --git a/src/sage/numerical/linear_tensor_element.pyx b/src/sage/numerical/linear_tensor_element.pyx index f04949d6c02..c77aa290e21 100644 --- a/src/sage/numerical/linear_tensor_element.pyx +++ b/src/sage/numerical/linear_tensor_element.pyx @@ -54,10 +54,10 @@ cdef class LinearTensor(ModuleElement): Constructor taking a dictionary as its argument. INPUT: - + - ``parent`` -- the parent :class:`~sage.numerical.linear_tensor.LinearTensorParent_class`. - + - ``f`` -- A linear function tensored by a free module is represented as a dictionary. The values are the coefficient (free module elements) of the variable represented by the @@ -70,7 +70,7 @@ cdef class LinearTensor(ModuleElement): sage: LT = MixedIntegerLinearProgram().linear_functions_parent().tensor(RDF^2) sage: LT({0: [1,2], 3: [-7,-8]}) (1.0, 2.0)*x_0 + (-7.0, -8.0)*x_3 - + sage: TestSuite(LT).run(skip=['_test_an_element', '_test_elements_eq_reflexive', ....: '_test_elements_eq_symmetric', '_test_elements_eq_transitive', ....: '_test_elements_neq', '_test_additive_associativity', @@ -191,7 +191,7 @@ cdef class LinearTensor(ModuleElement): OUTPUT: String. - + EXAMPLES:: sage: from sage.numerical.linear_functions import LinearFunctionsParent @@ -221,7 +221,7 @@ cdef class LinearTensor(ModuleElement): term = '{1}*x_{0}'.format(key, coeff) terms.append(term) return ' + '.join(terms) - + def _repr_matrix(self): """ Return a matrix-like string representation. @@ -266,7 +266,7 @@ cdef class LinearTensor(ModuleElement): Return sum. INPUT: - + - ``b`` -- a :class:`LinearTensor`. OUTPUT: @@ -310,7 +310,7 @@ cdef class LinearTensor(ModuleElement): Return difference. INPUT: - + - ``b`` -- a :class:`LinearTensor`. OUTPUT: @@ -402,7 +402,7 @@ cdef class LinearTensor(ModuleElement): Arithmetic performed after coercions. Result lives in Tensor product of Vector space of dimension 2 over Real Double Field and Linear functions over Real Double Field Tensor product of Vector space of dimension 2 over Real Double Field and Linear functions over Real Double Field - + sage: operator.le(10, lt) (10.0, 10.0) <= (1.0, 2.0)*x_0 sage: lt <= 1 diff --git a/src/sage/numerical/sdp.pyx b/src/sage/numerical/sdp.pyx index 207298d7ece..6350afb4eb6 100644 --- a/src/sage/numerical/sdp.pyx +++ b/src/sage/numerical/sdp.pyx @@ -231,7 +231,7 @@ from sage.structure.parent cimport Parent from sage.structure.element cimport Element from sage.misc.cachefunc import cached_method from sage.numerical.linear_functions import is_LinearFunction, is_LinearConstraint -from sage.matrix.all import Matrix +from sage.matrix.constructor import Matrix from sage.structure.element import is_Matrix diff --git a/src/sage/quadratic_forms/binary_qf.py b/src/sage/quadratic_forms/binary_qf.py index 6eebe6f0c46..4b85ad40ed7 100755 --- a/src/sage/quadratic_forms/binary_qf.py +++ b/src/sage/quadratic_forms/binary_qf.py @@ -52,8 +52,9 @@ from functools import total_ordering from sage.libs.pari.all import pari_gen -from sage.rings.all import ZZ, is_fundamental_discriminant -from sage.arith.all import gcd +from sage.rings.integer_ring import ZZ +from sage.rings.number_field.number_field import is_fundamental_discriminant +from sage.arith.misc import gcd from sage.structure.sage_object import SageObject from sage.matrix.matrix_space import MatrixSpace from sage.matrix.constructor import Matrix @@ -1528,7 +1529,7 @@ def small_prime_value(self, Bmax=1000): sage: [Q.small_prime_value() for Q in BinaryQF_reduced_representatives(-47, primitive_only=True)] [47, 2, 2, 3, 3] """ - from sage.sets.all import Set + from sage.sets.set import Set from sage.arith.srange import xsrange B = 10 while True: diff --git a/src/sage/quadratic_forms/count_local_2.pyx b/src/sage/quadratic_forms/count_local_2.pyx index 36b6b9d593c..299554de655 100644 --- a/src/sage/quadratic_forms/count_local_2.pyx +++ b/src/sage/quadratic_forms/count_local_2.pyx @@ -2,13 +2,11 @@ r""" Optimized counting of congruence solutions """ -from sage.arith.all import valuation, kronecker_symbol, is_prime +from sage.arith.misc import is_prime, kronecker as kronecker_symbol, valuation +from sage.rings.finite_rings.integer_mod cimport IntegerMod_gmp from sage.rings.finite_rings.integer_mod import Mod from sage.rings.finite_rings.integer_mod_ring import IntegerModRing - from sage.rings.integer_ring import ZZ - -from sage.rings.finite_rings.integer_mod cimport IntegerMod_gmp from sage.sets.set import Set diff --git a/src/sage/quadratic_forms/extras.py b/src/sage/quadratic_forms/extras.py index be7f05b0439..e042d3c037f 100644 --- a/src/sage/quadratic_forms/extras.py +++ b/src/sage/quadratic_forms/extras.py @@ -4,7 +4,7 @@ from sage.matrix.constructor import matrix from sage.structure.element import is_Matrix -from sage.arith.all import legendre_symbol +from sage.arith.misc import legendre_symbol from sage.rings.integer_ring import ZZ diff --git a/src/sage/quadratic_forms/genera/genus.py b/src/sage/quadratic_forms/genera/genus.py index 5451df7ae29..51d4b82d339 100644 --- a/src/sage/quadratic_forms/genera/genus.py +++ b/src/sage/quadratic_forms/genera/genus.py @@ -22,7 +22,8 @@ from sage.misc.lazy_import import lazy_import from sage.misc.misc_c import prod from sage.misc.cachefunc import cached_method -from sage.arith.all import LCM, fundamental_discriminant +from sage.arith.functions import lcm as LCM +from sage.arith.misc import fundamental_discriminant from sage.matrix.matrix_space import MatrixSpace from sage.matrix.constructor import matrix from sage.rings.integer_ring import IntegerRing, ZZ diff --git a/src/sage/quadratic_forms/genera/normal_form.py b/src/sage/quadratic_forms/genera/normal_form.py index bebd2478ec4..616cc5c516b 100644 --- a/src/sage/quadratic_forms/genera/normal_form.py +++ b/src/sage/quadratic_forms/genera/normal_form.py @@ -87,7 +87,9 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.rings.all import Zp, ZZ, GF +from sage.rings.padics.factory import Zp +from sage.rings.integer_ring import ZZ +from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF from sage.matrix.constructor import Matrix from copy import copy from sage.rings.finite_rings.integer_mod import mod diff --git a/src/sage/quadratic_forms/genera/spinor_genus.py b/src/sage/quadratic_forms/genera/spinor_genus.py index e42e4b6e361..8e77961b864 100644 --- a/src/sage/quadratic_forms/genera/spinor_genus.py +++ b/src/sage/quadratic_forms/genera/spinor_genus.py @@ -27,7 +27,8 @@ from sage.groups.abelian_gps.abelian_group_gap import (AbelianGroupGap, AbelianGroupElement_gap) -from sage.rings.all import ZZ, QQ +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ class SpinorOperator(AbelianGroupElement_gap): diff --git a/src/sage/quadratic_forms/qfsolve.py b/src/sage/quadratic_forms/qfsolve.py index d5e15d9f83e..82b22328818 100644 --- a/src/sage/quadratic_forms/qfsolve.py +++ b/src/sage/quadratic_forms/qfsolve.py @@ -26,7 +26,9 @@ # http://www.gnu.org/licenses/ #***************************************************************************** -from sage.rings.all import ZZ, QQ, Integer +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ +from sage.rings.integer import Integer from sage.modules.free_module_element import vector from sage.matrix.constructor import Matrix diff --git a/src/sage/quadratic_forms/quadratic_form.py b/src/sage/quadratic_forms/quadratic_form.py index 47f3d8be23e..4541759d86c 100644 --- a/src/sage/quadratic_forms/quadratic_form.py +++ b/src/sage/quadratic_forms/quadratic_form.py @@ -27,8 +27,10 @@ from sage.rings.integer_ring import IntegerRing, ZZ from sage.rings.ring import Ring from sage.misc.functional import denominator, is_even -from sage.arith.all import GCD, LCM -from sage.rings.all import Ideal, QQ +from sage.arith.misc import GCD +from sage.arith.functions import lcm as LCM +from sage.rings.ideal import Ideal +from sage.rings.rational_field import QQ from sage.rings.ring import is_Ring, PrincipalIdealDomain from sage.structure.element import is_Vector from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing diff --git a/src/sage/quadratic_forms/quadratic_form__automorphisms.py b/src/sage/quadratic_forms/quadratic_form__automorphisms.py index 3d72cf3be11..48a473f44c4 100644 --- a/src/sage/quadratic_forms/quadratic_form__automorphisms.py +++ b/src/sage/quadratic_forms/quadratic_form__automorphisms.py @@ -14,7 +14,7 @@ from sage.modules.all import FreeModule from sage.modules.free_module_element import vector -from sage.arith.all import GCD +from sage.arith.misc import GCD @cached_method diff --git a/src/sage/quadratic_forms/quadratic_form__equivalence_testing.py b/src/sage/quadratic_forms/quadratic_form__equivalence_testing.py index b69bb6abf9d..3175126556d 100644 --- a/src/sage/quadratic_forms/quadratic_form__equivalence_testing.py +++ b/src/sage/quadratic_forms/quadratic_form__equivalence_testing.py @@ -5,11 +5,16 @@ - Anna Haensch (2014-12-01): added test for rational isometry """ -from sage.arith.all import hilbert_symbol, prime_divisors, is_prime, valuation, GCD, legendre_symbol -from sage.rings.integer_ring import ZZ -from sage.rings.rational_field import QQ +from sage.arith.misc import (hilbert_symbol, + GCD, + is_prime, + legendre_symbol, + prime_divisors, + valuation) from sage.quadratic_forms.quadratic_form import is_QuadraticForm +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ ############################################################################## diff --git a/src/sage/quadratic_forms/quadratic_form__genus.py b/src/sage/quadratic_forms/quadratic_form__genus.py index 18a02061029..30bd73145f9 100644 --- a/src/sage/quadratic_forms/quadratic_form__genus.py +++ b/src/sage/quadratic_forms/quadratic_form__genus.py @@ -7,9 +7,9 @@ # # ############################################################# +from sage.arith.misc import is_prime, prime_divisors from sage.quadratic_forms.genera.genus import Genus, LocalGenusSymbol from sage.rings.integer_ring import ZZ -from sage.arith.all import is_prime, prime_divisors def global_genus_symbol(self): diff --git a/src/sage/quadratic_forms/quadratic_form__local_density_congruence.py b/src/sage/quadratic_forms/quadratic_form__local_density_congruence.py index 71872a37b8e..bf09113ae73 100644 --- a/src/sage/quadratic_forms/quadratic_form__local_density_congruence.py +++ b/src/sage/quadratic_forms/quadratic_form__local_density_congruence.py @@ -10,7 +10,7 @@ from sage.sets.set import Set from sage.rings.rational_field import QQ -from sage.arith.all import valuation +from sage.arith.misc import valuation from sage.misc.verbose import verbose from sage.quadratic_forms.count_local_2 import count_modp__by_gauss_sum diff --git a/src/sage/quadratic_forms/quadratic_form__local_density_interfaces.py b/src/sage/quadratic_forms/quadratic_form__local_density_interfaces.py index aa4fb04ad63..2b8c1a455a4 100644 --- a/src/sage/quadratic_forms/quadratic_form__local_density_interfaces.py +++ b/src/sage/quadratic_forms/quadratic_form__local_density_interfaces.py @@ -4,7 +4,7 @@ # // This is needed in the filter for primitivity... # #include "../max-min.h" -from sage.arith.all import valuation +from sage.arith.misc import valuation from sage.rings.rational_field import QQ diff --git a/src/sage/quadratic_forms/quadratic_form__local_field_invariants.py b/src/sage/quadratic_forms/quadratic_form__local_field_invariants.py index 3556c101705..cf0589872a6 100644 --- a/src/sage/quadratic_forms/quadratic_form__local_field_invariants.py +++ b/src/sage/quadratic_forms/quadratic_form__local_field_invariants.py @@ -21,15 +21,15 @@ # places, is_semi_definite, and support for number fields. ########################################################################### - from copy import deepcopy -from sage.rings.integer_ring import ZZ -from sage.rings.rational_field import QQ -from sage.rings.real_mpfr import RR -from sage.arith.all import prime_divisors, hilbert_symbol + +from sage.arith.misc import hilbert_symbol, prime_divisors from sage.functions.all import sgn from sage.matrix.matrix_space import MatrixSpace from sage.misc.cachefunc import cached_method +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ +from sage.rings.real_mpfr import RR def rational_diagonal_form(self, return_matrix=False): diff --git a/src/sage/quadratic_forms/quadratic_form__local_normal_form.py b/src/sage/quadratic_forms/quadratic_form__local_normal_form.py index 429c7c68896..2eb5839306d 100644 --- a/src/sage/quadratic_forms/quadratic_form__local_normal_form.py +++ b/src/sage/quadratic_forms/quadratic_form__local_normal_form.py @@ -21,7 +21,9 @@ from sage.rings.infinity import Infinity from sage.rings.integer_ring import IntegerRing, ZZ from sage.rings.rational_field import QQ -from sage.arith.all import GCD, valuation, is_prime +from sage.arith.misc import GCD +from sage.arith.misc import valuation +from sage.arith.misc import is_prime def find_entry_with_minimal_scale_at_prime(self, p): diff --git a/src/sage/quadratic_forms/quadratic_form__local_representation_conditions.py b/src/sage/quadratic_forms/quadratic_form__local_representation_conditions.py index 5d39650ecb4..661078d8788 100644 --- a/src/sage/quadratic_forms/quadratic_form__local_representation_conditions.py +++ b/src/sage/quadratic_forms/quadratic_form__local_representation_conditions.py @@ -8,7 +8,7 @@ from __future__ import annotations from copy import deepcopy -from sage.arith.all import prime_divisors, valuation, is_square +from sage.arith.misc import is_square, prime_divisors, valuation from sage.misc.functional import numerator, denominator from sage.quadratic_forms.extras import least_quadratic_nonresidue from sage.rings.infinity import infinity diff --git a/src/sage/quadratic_forms/quadratic_form__mass__Conway_Sloane_masses.py b/src/sage/quadratic_forms/quadratic_form__mass__Conway_Sloane_masses.py index 65c524db39a..551354251ce 100644 --- a/src/sage/quadratic_forms/quadratic_form__mass__Conway_Sloane_masses.py +++ b/src/sage/quadratic_forms/quadratic_form__mass__Conway_Sloane_masses.py @@ -1,12 +1,16 @@ """ Conway-Sloane masses """ +from sage.arith.misc import (fundamental_discriminant, + is_prime, + kronecker as kronecker_symbol, + legendre_symbol, + prime_divisors) +from sage.misc.misc_c import prod +from sage.quadratic_forms.special_values import gamma__exact, zeta__exact, quadratic_L_function__exact from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.arith.all import kronecker_symbol, legendre_symbol, prime_divisors, is_prime, fundamental_discriminant from sage.symbolic.constants import pi -from sage.misc.misc_c import prod -from sage.quadratic_forms.special_values import gamma__exact, zeta__exact, quadratic_L_function__exact def parity(self, allow_rescaling_flag=True): diff --git a/src/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py b/src/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py index 97b07023060..08b388d4285 100644 --- a/src/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py +++ b/src/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py @@ -12,17 +12,17 @@ import copy +from sage.arith.misc import kronecker, legendre_symbol, prime_divisors +from sage.functions.all import sgn +from sage.matrix.matrix_space import MatrixSpace +from sage.misc.functional import squarefree_part from sage.misc.misc_c import prod from sage.misc.mrange import mrange -from sage.rings.integer_ring import ZZ +from sage.quadratic_forms.special_values import gamma__exact, zeta__exact, quadratic_L_function__exact from sage.rings.finite_rings.integer_mod_ring import IntegerModRing +from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.arith.all import legendre_symbol, kronecker, prime_divisors -from sage.functions.all import sgn -from sage.quadratic_forms.special_values import gamma__exact, zeta__exact, quadratic_L_function__exact -from sage.misc.functional import squarefree_part from sage.symbolic.constants import pi -from sage.matrix.matrix_space import MatrixSpace def mass__by_Siegel_densities(self, odd_algorithm="Pall", even_algorithm="Watson"): diff --git a/src/sage/quadratic_forms/quadratic_form__neighbors.py b/src/sage/quadratic_forms/quadratic_form__neighbors.py index 96a5203101d..11065d861aa 100644 --- a/src/sage/quadratic_forms/quadratic_form__neighbors.py +++ b/src/sage/quadratic_forms/quadratic_form__neighbors.py @@ -4,7 +4,8 @@ from sage.modules.free_module_element import vector from sage.rings.integer_ring import ZZ -from sage.rings.all import GF, QQ +from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF +from sage.rings.rational_field import QQ from copy import deepcopy from sage.matrix.constructor import matrix diff --git a/src/sage/quadratic_forms/quadratic_form__siegel_product.py b/src/sage/quadratic_forms/quadratic_form__siegel_product.py index 1cf72a23745..6c5118309c9 100644 --- a/src/sage/quadratic_forms/quadratic_form__siegel_product.py +++ b/src/sage/quadratic_forms/quadratic_form__siegel_product.py @@ -10,15 +10,15 @@ # http://www.gnu.org/licenses/ #***************************************************************************** -from sage.rings.integer_ring import ZZ -from sage.rings.rational_field import QQ -from sage.arith.all import kronecker_symbol, bernoulli, prime_divisors, fundamental_discriminant +from sage.arith.misc import (bernoulli, + fundamental_discriminant, + kronecker as kronecker_symbol, + prime_divisors) from sage.misc.functional import sqrt -from sage.quadratic_forms.special_values import QuadraticBernoulliNumber - - from sage.misc.verbose import verbose - +from sage.quadratic_forms.special_values import QuadraticBernoulliNumber +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ #/*! \brief Computes the product of all local densities for comparison with independently computed Eisenstein coefficients. diff --git a/src/sage/quadratic_forms/quadratic_form__split_local_covering.py b/src/sage/quadratic_forms/quadratic_form__split_local_covering.py index 2fc02f60e56..4078e6fede8 100644 --- a/src/sage/quadratic_forms/quadratic_form__split_local_covering.py +++ b/src/sage/quadratic_forms/quadratic_form__split_local_covering.py @@ -18,7 +18,7 @@ from sage.matrix.constructor import matrix from sage.functions.all import floor from sage.rings.integer_ring import ZZ -from sage.arith.all import GCD +from sage.arith.misc import GCD def cholesky_decomposition(self, bit_prec = 53): diff --git a/src/sage/quadratic_forms/quadratic_form__ternary_Tornaria.py b/src/sage/quadratic_forms/quadratic_form__ternary_Tornaria.py index 22334a8e857..ff1476c32d9 100644 --- a/src/sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +++ b/src/sage/quadratic_forms/quadratic_form__ternary_Tornaria.py @@ -11,17 +11,19 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.rings.integer_ring import ZZ -from sage.misc.functional import is_odd - +from sage.arith.misc import (CRT_vectors, + factor, + gcd, + hilbert_symbol, + kronecker as kronecker_symbol, + prime_to_m_part) from sage.libs.pari.all import pari +from sage.misc.functional import is_odd from sage.misc.misc_c import prod -from sage.arith.all import (factor, gcd, prime_to_m_part, CRT_vectors, - hilbert_symbol, kronecker_symbol) - -from sage.quadratic_forms.quadratic_form import QuadraticForm__constructor as QuadraticForm from sage.modules.free_module import FreeModule from sage.modules.free_module_element import vector +from sage.quadratic_forms.quadratic_form import QuadraticForm__constructor as QuadraticForm +from sage.rings.integer_ring import ZZ # TO DO -- Add second argument diff --git a/src/sage/quadratic_forms/special_values.py b/src/sage/quadratic_forms/special_values.py index af80989032e..dbfad45e31e 100644 --- a/src/sage/quadratic_forms/special_values.py +++ b/src/sage/quadratic_forms/special_values.py @@ -7,16 +7,21 @@ - :func:`quadratic_L_function__numerical` -- Numerical values of the Dirichlet L-functions of quadratic characters in the domain of convergence """ +import sage.rings.abc + +from sage.arith.misc import (bernoulli, + factorial, + fundamental_discriminant, + kronecker as kronecker_symbol) from sage.combinat.combinat import bernoulli_polynomial from sage.misc.functional import denominator -from sage.arith.all import kronecker_symbol, bernoulli, factorial, fundamental_discriminant from sage.rings.infinity import infinity from sage.rings.integer_ring import ZZ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.rational_field import QQ -import sage.rings.abc from sage.symbolic.constants import pi, I + # ---------------- The Gamma Function ------------------ def gamma__exact(n): @@ -60,7 +65,7 @@ def gamma__exact(n): ... TypeError: you must give an integer or half-integer argument """ - from sage.all import sqrt + from sage.misc.functional import sqrt n = QQ(n) if denominator(n) == 1: @@ -213,7 +218,8 @@ def quadratic_L_function__exact(n, d): - [IR1990]_ - [Was1997]_ """ - from sage.all import SR, sqrt + from sage.symbolic.ring import SR + from sage.misc.functional import sqrt if n <= 0: return QuadraticBernoulliNumber(1-n,d)/(n-1) elif n >= 1: diff --git a/src/sage/quadratic_forms/ternary.pyx b/src/sage/quadratic_forms/ternary.pyx index 168ef3392bb..727b31ce080 100644 --- a/src/sage/quadratic_forms/ternary.pyx +++ b/src/sage/quadratic_forms/ternary.pyx @@ -12,13 +12,13 @@ Helper code for ternary quadratic forms # http://www.gnu.org/licenses/ #***************************************************************************** -from sage.rings.integer_ring import ZZ +from sage.arith.misc import gcd, inverse_mod, xgcd from sage.matrix.constructor import matrix, identity_matrix, diagonal_matrix +from sage.misc.prandom import randint from sage.modules.free_module_element import vector -from sage.arith.all import inverse_mod, xgcd, gcd from sage.quadratic_forms.extras import extend_to_primitive from sage.rings.finite_rings.integer_mod import mod -from sage.misc.prandom import randint +from sage.rings.integer_ring import ZZ def red_mfact(a,b): diff --git a/src/sage/quadratic_forms/ternary_qf.py b/src/sage/quadratic_forms/ternary_qf.py index 7932c432779..bb98b11cb30 100644 --- a/src/sage/quadratic_forms/ternary_qf.py +++ b/src/sage/quadratic_forms/ternary_qf.py @@ -26,19 +26,25 @@ # https://www.gnu.org/licenses/ # **************************************************************************** -from sage.structure.sage_object import SageObject -from sage.rings.integer_ring import ZZ -from sage.arith.all import gcd, kronecker_symbol -from sage.quadratic_forms.quadratic_form import QuadraticForm +from sage.arith.misc import gcd, kronecker as kronecker_symbol from sage.matrix.constructor import matrix, identity_matrix -from sage.structure.element import is_Vector, is_Matrix -from sage.quadratic_forms.ternary import _reduced_ternary_form_eisenstein_with_matrix -from sage.quadratic_forms.ternary import _reduced_ternary_form_eisenstein_without_matrix, _find_zeros_mod_p_odd, _find_zeros_mod_p_2, _find_p_neighbor_from_vec, _basic_lemma -from sage.quadratic_forms.ternary import _find_all_ternary_qf_by_level_disc, _find_a_ternary_qf_by_level_disc from sage.misc.prandom import randint +from sage.quadratic_forms.quadratic_form import QuadraticForm +from sage.quadratic_forms.ternary import (_basic_lemma, + _find_a_ternary_qf_by_level_disc, + _find_all_ternary_qf_by_level_disc, + _find_p_neighbor_from_vec, + _find_zeros_mod_p_2, + _find_zeros_mod_p_odd, + _reduced_ternary_form_eisenstein_with_matrix, + _reduced_ternary_form_eisenstein_without_matrix) + from sage.rings.finite_rings.integer_mod import mod -from sage.rings.ring import is_Ring +from sage.rings.integer_ring import ZZ from sage.rings.polynomial.polynomial_ring import polygens +from sage.rings.ring import is_Ring +from sage.structure.element import is_Vector, is_Matrix +from sage.structure.sage_object import SageObject class TernaryQF(SageObject): diff --git a/src/sage/rings/algebraic_closure_finite_field.py b/src/sage/rings/algebraic_closure_finite_field.py index d45c3ec2cb0..273610c0afd 100644 --- a/src/sage/rings/algebraic_closure_finite_field.py +++ b/src/sage/rings/algebraic_closure_finite_field.py @@ -57,10 +57,9 @@ from sage.misc.abstract_method import abstract_method from sage.misc.fast_methods import WithEqualityById -from sage.rings.finite_rings.element_base import is_FiniteFieldElement -from sage.rings.finite_rings.finite_field_base import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.ring import Field -from sage.structure.element import FieldElement +from sage.structure.element import Element, FieldElement from sage.structure.richcmp import richcmp @@ -91,7 +90,7 @@ def __init__(self, parent, value): and ``loads(dumps(x))``. """ - if is_FiniteFieldElement(value): + if isinstance(value, Element) and isinstance(value.parent(), FiniteField): n = value.parent().degree() else: from sage.rings.integer import Integer @@ -659,7 +658,7 @@ def _coerce_map_from_(self, other): """ if other is self: return True - elif is_FiniteField(other) and self._subfield(other.degree()) is other: + elif isinstance(other, FiniteField) and self._subfield(other.degree()) is other: return True elif self._subfield(1).has_coerce_map_from(other): return True @@ -1092,7 +1091,7 @@ def __init__(self, base_ring, name, category=None, lattice=None, use_database=Tr :meth:`AlgebraicClosureFiniteFieldElement.__init__`. """ - if not (is_FiniteField(base_ring) and base_ring.is_prime_field()): + if not (isinstance(base_ring, FiniteField) and base_ring.is_prime_field()): raise NotImplementedError('algebraic closures of finite fields are only implemented for prime fields') from sage.rings.finite_rings.conway_polynomials import PseudoConwayLattice p = base_ring.characteristic() diff --git a/src/sage/rings/finite_rings/__init__.py b/src/sage/rings/finite_rings/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/sage/rings/finite_rings/element_base.pyx b/src/sage/rings/finite_rings/element_base.pyx index 29ab05dd8ba..4f785ebf181 100755 --- a/src/sage/rings/finite_rings/element_base.pyx +++ b/src/sage/rings/finite_rings/element_base.pyx @@ -25,20 +25,27 @@ from sage.misc.superseded import deprecated_function_alias def is_FiniteFieldElement(x): """ - Returns if x is a finite field element. + Return True if ``x`` is a finite field element. + + This function is deprecated. EXAMPLES:: sage: from sage.rings.finite_rings.element_base import is_FiniteFieldElement sage: is_FiniteFieldElement(1) + doctest:...: DeprecationWarning: the function is_FiniteFieldElement is deprecated; use isinstance(x, sage.structure.element.FieldElement) and x.parent().is_finite() instead + See https://github.com/sagemath/sage/issues/32664 for details. False sage: is_FiniteFieldElement(IntegerRing()) False sage: is_FiniteFieldElement(GF(5)(2)) True """ - from sage.rings.finite_rings.finite_field_base import is_FiniteField - return isinstance(x, Element) and is_FiniteField(x.parent()) + from sage.misc.superseded import deprecation + deprecation(32664, "the function is_FiniteFieldElement is deprecated; use isinstance(x, sage.structure.element.FieldElement) and x.parent().is_finite() instead") + + from sage.rings.finite_rings.finite_field_base import FiniteField + return isinstance(x, Element) and isinstance(x.parent(), FiniteField) cdef class FiniteRingElement(CommutativeRingElement): diff --git a/src/sage/rings/finite_rings/finite_field_base.pyx b/src/sage/rings/finite_rings/finite_field_base.pyx index 8a2d0ce94fa..06e57a04952 100644 --- a/src/sage/rings/finite_rings/finite_field_base.pyx +++ b/src/sage/rings/finite_rings/finite_field_base.pyx @@ -930,7 +930,7 @@ cdef class FiniteField(Field): sage: GF(3, 'a').is_prime_field() True """ - return self.degree()==1 + return self.degree() == 1 def modulus(self): r""" @@ -1356,7 +1356,7 @@ cdef class FiniteField(Field): return True if isinstance(R, sage.rings.abc.IntegerModRing) and self.characteristic().divides(R.characteristic()): return R.hom((self.one(),), check=False) - if is_FiniteField(R): + if isinstance(R, FiniteField): if R is self: return True from .residue_field import ResidueField_generic @@ -2115,10 +2115,14 @@ def is_FiniteField(R): Return whether the implementation of ``R`` has the interface provided by the standard finite field implementation. + This function is deprecated. + EXAMPLES:: sage: from sage.rings.finite_rings.finite_field_base import is_FiniteField sage: is_FiniteField(GF(9,'a')) + doctest:...: DeprecationWarning: the function is_FiniteField is deprecated; use isinstance(x, sage.rings.finite_rings.finite_field_base.FiniteField) instead + See https://github.com/sagemath/sage/issues/32664 for details. True sage: is_FiniteField(GF(next_prime(10^10))) True @@ -2128,4 +2132,6 @@ def is_FiniteField(R): sage: is_FiniteField(Integers(7)) False """ + from sage.misc.superseded import deprecation + deprecation(32664, "the function is_FiniteField is deprecated; use isinstance(x, sage.rings.finite_rings.finite_field_base.FiniteField) instead") return isinstance(R, FiniteField) diff --git a/src/sage/rings/finite_rings/finite_field_constructor.py b/src/sage/rings/finite_rings/finite_field_constructor.py index 8b51fd37b2e..048da483147 100644 --- a/src/sage/rings/finite_rings/finite_field_constructor.py +++ b/src/sage/rings/finite_rings/finite_field_constructor.py @@ -791,24 +791,32 @@ def create_object(self, version, key, **kwds): def is_PrimeFiniteField(x): """ - Returns True if x is a prime finite field. + Returns True if ``x`` is a prime finite field. + + This function is deprecated. EXAMPLES:: sage: from sage.rings.finite_rings.finite_field_constructor import is_PrimeFiniteField sage: is_PrimeFiniteField(QQ) + doctest:...: DeprecationWarning: the function is_PrimeFiniteField is deprecated; use isinstance(x, sage.rings.finite_rings.finite_field_base.FiniteField) and x.is_prime_field() instead + See https://github.com/sagemath/sage/issues/32664 for details. False sage: is_PrimeFiniteField(GF(7)) True - sage: is_PrimeFiniteField(GF(7^2,'a')) + sage: is_PrimeFiniteField(GF(7^2, 'a')) False - sage: is_PrimeFiniteField(GF(next_prime(10^90,proof=False))) + sage: is_PrimeFiniteField(GF(next_prime(10^90, proof=False))) True """ + from sage.misc.superseded import deprecation + deprecation(32664, "the function is_PrimeFiniteField is deprecated; use isinstance(x, sage.rings.finite_rings.finite_field_base.FiniteField) and x.is_prime_field() instead") + from .finite_field_prime_modn import FiniteField_prime_modn from sage.rings.finite_rings.finite_field_base import FiniteField as FiniteField_generic return isinstance(x, FiniteField_prime_modn) or \ (isinstance(x, FiniteField_generic) and x.degree() == 1) + zech_log_bound = 2**16 diff --git a/src/sage/rings/finite_rings/finite_field_ntl_gf2e.py b/src/sage/rings/finite_rings/finite_field_ntl_gf2e.py index e750f2fef5e..33ea3d1bcfc 100644 --- a/src/sage/rings/finite_rings/finite_field_ntl_gf2e.py +++ b/src/sage/rings/finite_rings/finite_field_ntl_gf2e.py @@ -52,6 +52,7 @@ def late_import(): import sage.rings.polynomial.polynomial_element is_Polynomial = sage.rings.polynomial.polynomial_element.is_Polynomial + class FiniteField_ntl_gf2e(FiniteField): """ Finite Field of characteristic 2 and order `2^n`. diff --git a/src/sage/rings/finite_rings/hom_finite_field.pyx b/src/sage/rings/finite_rings/hom_finite_field.pyx index 86d2401ceec..44dc3450be8 100644 --- a/src/sage/rings/finite_rings/hom_finite_field.pyx +++ b/src/sage/rings/finite_rings/hom_finite_field.pyx @@ -106,7 +106,7 @@ from sage.rings.integer cimport Integer from sage.categories.homset import Hom from sage.structure.element cimport Element -from sage.rings.finite_rings.finite_field_base import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField as FiniteField_base from sage.rings.morphism cimport RingHomomorphism, RingHomomorphism_im_gens, FrobeniusEndomorphism_generic from sage.rings.finite_rings.finite_field_constructor import FiniteField @@ -227,9 +227,9 @@ cdef class FiniteFieldHomomorphism_generic(RingHomomorphism_im_gens): """ domain = parent.domain() codomain = parent.codomain() - if not is_FiniteField(domain): + if not isinstance(domain, FiniteField_base): raise TypeError("The domain is not a finite field or does not provide the required interface for finite fields") - if not is_FiniteField(codomain): + if not isinstance(codomain, FiniteField_base): raise TypeError("The codomain is not a finite field or does not provide the required interface for finite fields") if domain.characteristic() != codomain.characteristic() or codomain.degree() % domain.degree() != 0: raise ValueError("No embedding of %s into %s" % (domain, codomain)) @@ -522,7 +522,7 @@ cdef class FrobeniusEndomorphism_finite_field(FrobeniusEndomorphism_generic): ... TypeError: The domain is not a finite field or does not provide the required interface for finite fields """ - if not is_FiniteField(domain): + if not isinstance(domain, FiniteField_base): raise TypeError("The domain is not a finite field or does not provide the required interface for finite fields") try: n = Integer(n) diff --git a/src/sage/rings/finite_rings/hom_prime_finite_field.pyx b/src/sage/rings/finite_rings/hom_prime_finite_field.pyx index b24c8bbfb3e..617595ea383 100644 --- a/src/sage/rings/finite_rings/hom_prime_finite_field.pyx +++ b/src/sage/rings/finite_rings/hom_prime_finite_field.pyx @@ -33,7 +33,7 @@ from .hom_finite_field cimport SectionFiniteFieldHomomorphism_generic from .hom_finite_field cimport FiniteFieldHomomorphism_generic from .hom_finite_field cimport FrobeniusEndomorphism_finite_field -from sage.rings.finite_rings.finite_field_base import FiniteField, is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.morphism cimport RingHomomorphism_im_gens @@ -71,7 +71,7 @@ cdef class FiniteFieldHomomorphism_prime(FiniteFieldHomomorphism_generic): TypeError: The domain is not a finite prime field """ domain = parent.domain() - if not is_FiniteField(domain) or not domain.is_prime_field(): + if not isinstance(domain, FiniteField) or not domain.is_prime_field(): raise TypeError("The domain is not a finite prime field") if section_class is None: section_class = SectionFiniteFieldHomomorphism_prime @@ -100,7 +100,7 @@ cdef class FrobeniusEndomorphism_prime(FrobeniusEndomorphism_finite_field): fields (i.e. identity map :-). """ def __init__(self, domain, power=1): - if not is_FiniteField(domain) or not domain.is_prime_field(): + if not isinstance(domain, FiniteField) or not domain.is_prime_field(): raise TypeError("The domain is not a finite prime field") FrobeniusEndomorphism_finite_field.__init__(self, Hom(domain, domain)) self._order = 1 diff --git a/src/sage/rings/finite_rings/homset.py b/src/sage/rings/finite_rings/homset.py index 0a7578a092e..ef629016983 100644 --- a/src/sage/rings/finite_rings/homset.py +++ b/src/sage/rings/finite_rings/homset.py @@ -37,7 +37,7 @@ from sage.rings.homset import RingHomset_generic from sage.rings.finite_rings.hom_finite_field import FiniteFieldHomomorphism_generic -from sage.rings.finite_rings.finite_field_base import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.integer import Integer from sage.rings.morphism import RingHomomorphism_im_gens from sage.structure.sequence import Sequence @@ -96,7 +96,7 @@ def __call__(self, im_gens, base_map=None, check=True): if self.domain().degree() == 1: from sage.rings.finite_rings.hom_prime_finite_field import FiniteFieldHomomorphism_prime return FiniteFieldHomomorphism_prime(self, im_gens, base_map=base_map, check=check) - if is_FiniteField(self.codomain()): + if isinstance(self.codomain(), FiniteField): return FiniteFieldHomomorphism_generic(self, im_gens, base_map=base_map, check=check) # Currently, FiniteFieldHomomorphism_generic does not work if # the codomain is not derived from the finite field base class; diff --git a/src/sage/rings/morphism.pyx b/src/sage/rings/morphism.pyx index f7f83974425..204e6ddf474 100644 --- a/src/sage/rings/morphism.pyx +++ b/src/sage/rings/morphism.pyx @@ -3160,7 +3160,7 @@ def _tensor_product_ring(B, A): ... ValueError: term ordering must be global """ - from .finite_rings.finite_field_base import is_FiniteField + from .finite_rings.finite_field_base import FiniteField from .number_field.number_field_base import is_NumberField from .polynomial.multi_polynomial_ring import is_MPolynomialRing from .polynomial.polynomial_quotient_ring import is_PolynomialQuotientRing @@ -3178,7 +3178,7 @@ def _tensor_product_ring(B, A): def term_order(A): # univariate rings do not have a term order if (is_PolynomialRing(A) or is_PolynomialQuotientRing(A) - or ((is_NumberField(A) or is_FiniteField(A)) + or ((is_NumberField(A) or isinstance(A, FiniteField)) and not A.is_prime_field())): return TermOrder('lex', 1) try: @@ -3201,7 +3201,7 @@ def _tensor_product_ring(B, A): elif is_QuotientRing(A): to_R = A.ambient().hom(R_gens_A, R, check=False) return list(to_R(A.defining_ideal()).gens()) - elif ((is_NumberField(A) or is_FiniteField(A)) + elif ((is_NumberField(A) or isinstance(A, FiniteField)) and not A.is_prime_field()): to_R = A.polynomial_ring().hom(R_gens_A, R, check=False) return [to_R(A.polynomial())] diff --git a/src/sage/rings/padics/padic_template_element.pxi b/src/sage/rings/padics/padic_template_element.pxi index ce9e7029002..a21494e5479 100644 --- a/src/sage/rings/padics/padic_template_element.pxi +++ b/src/sage/rings/padics/padic_template_element.pxi @@ -29,6 +29,7 @@ import sage.rings.finite_rings.integer_mod from cypari2.types cimport * from cypari2.gen cimport Gen as pari_gen from sage.libs.pari.convert_gmp cimport INT_to_mpz +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.padics.common_conversion cimport get_ordp, get_preccap from sage.rings.integer cimport Integer from sage.rings.infinity import infinity @@ -37,6 +38,7 @@ from sage.rings.padics.precision_error import PrecisionError from sage.rings.padics.misc import trim_zeros from sage.rings.polynomial.polynomial_element import Polynomial from sage.structure.element import canonical_coercion + import itertools cdef long maxordp = (1L << (sizeof(long) * 8 - 2)) - 1 @@ -145,7 +147,7 @@ cdef class pAdicTemplateElement(pAdicGenericElement): elif sage.rings.finite_rings.integer_mod.is_IntegerMod(x): if not Integer(self.prime_pow.prime).divides(x.parent().order()): raise TypeError("p does not divide modulus %s"%x.parent().order()) - elif sage.rings.finite_rings.element_base.is_FiniteFieldElement(x): + elif isinstance(x, Element) and isinstance(x.parent(), FiniteField): k = self.parent().residue_field() if not k.has_coerce_map_from(x.parent()): raise NotImplementedError("conversion from finite fields which do not embed into the residue field not implemented") diff --git a/src/sage/rings/polynomial/integer_valued_polynomials.py b/src/sage/rings/polynomial/integer_valued_polynomials.py index 603cdbf2e38..3df5a101dbc 100644 --- a/src/sage/rings/polynomial/integer_valued_polynomials.py +++ b/src/sage/rings/polynomial/integer_valued_polynomials.py @@ -13,8 +13,8 @@ # https://www.gnu.org/licenses/ # *************************************************************************** from sage.arith.misc import (binomial, factorial) +from sage.categories.algebras import Algebras from sage.categories.rings import Rings -from sage.categories.all import Algebras from sage.categories.realizations import Category_realization_of_parent from sage.combinat.free_module import CombinatorialFreeModule from sage.matrix.constructor import matrix diff --git a/src/sage/rings/polynomial/polynomial_element.pyx b/src/sage/rings/polynomial/polynomial_element.pyx index 88a25eae183..8b3a7549be1 100644 --- a/src/sage/rings/polynomial/polynomial_element.pyx +++ b/src/sage/rings/polynomial/polynomial_element.pyx @@ -4477,7 +4477,7 @@ cdef class Polynomial(CommutativePolynomial): if not (ch == 0 or is_prime(ch)): raise NotImplementedError("factorization of polynomials over rings with composite characteristic is not implemented") - from sage.rings.finite_rings.finite_field_constructor import is_FiniteField + from sage.rings.finite_rings.finite_field_base import FiniteField n = None @@ -4487,7 +4487,7 @@ cdef class Polynomial(CommutativePolynomial): except PariError: raise NotImplementedError - elif is_FiniteField(R): + elif isinstance(R, FiniteField): v = [x.__pari__("a") for x in self.list()] f = pari(v).Polrev() G = list(f.factor()) @@ -4755,7 +4755,7 @@ cdef class Polynomial(CommutativePolynomial): name = normalize_names(1, names)[0] from sage.rings.number_field.number_field_base import is_NumberField - from sage.rings.finite_rings.finite_field_base import is_FiniteField + from sage.rings.finite_rings.finite_field_base import FiniteField f = self.monic() # Given polynomial, made monic F = f.parent().base_ring() # Base field @@ -4766,7 +4766,7 @@ cdef class Polynomial(CommutativePolynomial): if is_NumberField(F): from sage.rings.number_field.splitting_field import splitting_field return splitting_field(f, name, map, **kwds) - elif is_FiniteField(F): + elif isinstance(F, FiniteField): degree = lcm([f.degree() for f, _ in self.factor()]) return F.extension(degree, name, map=map, **kwds) diff --git a/src/sage/rings/polynomial/polynomial_ring_constructor.py b/src/sage/rings/polynomial/polynomial_ring_constructor.py index 65e67cc3527..d2f03c205a3 100644 --- a/src/sage/rings/polynomial/polynomial_ring_constructor.py +++ b/src/sage/rings/polynomial/polynomial_ring_constructor.py @@ -26,7 +26,7 @@ import sage.rings.abc from sage.rings.integer import Integer -from sage.rings.finite_rings.finite_field_base import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.misc.cachefunc import weak_cached_function import sage.misc.weak_dict @@ -747,7 +747,7 @@ def _single_variate(base_ring, name, sparse=None, implementation=None, order=Non specialized = polynomial_ring.PolynomialRing_dense_mod_p elif n > 1: # Specialized code breaks for n == 1 specialized = polynomial_ring.PolynomialRing_dense_mod_n - elif is_FiniteField(base_ring): + elif isinstance(base_ring, FiniteField): specialized = polynomial_ring.PolynomialRing_dense_finite_field elif isinstance(base_ring, padic_base_leaves.pAdicFieldCappedRelative): specialized = polynomial_ring.PolynomialRing_dense_padic_field_capped_relative diff --git a/src/sage/rings/polynomial/polynomial_singular_interface.py b/src/sage/rings/polynomial/polynomial_singular_interface.py index 2b5bfd4bf94..f19415b34d3 100644 --- a/src/sage/rings/polynomial/polynomial_singular_interface.py +++ b/src/sage/rings/polynomial/polynomial_singular_interface.py @@ -44,7 +44,7 @@ from sage.interfaces.singular import singular from sage.rings.rational_field import is_RationalField from sage.rings.function_field.function_field import RationalFunctionField -from sage.rings.finite_rings.finite_field_base import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.integer_ring import ZZ import sage.rings.finite_rings.finite_field_constructor @@ -103,13 +103,13 @@ def _do_singular_init_(singular, base_ring, char, _vars, order): elif isinstance(base_ring, sage.rings.abc.IntegerModRing): char = base_ring.characteristic() - if sage.rings.finite_rings.finite_field_constructor.is_FiniteField(base_ring) and char <= 2147483647: + if isinstance(base_ring, FiniteField) and char <= 2147483647: return make_ring(str(char)), None if char.is_power_of(2): return make_ring(f"(integer,2,{char.nbits()-1})"), None return make_ring(f"(integer,{char})"), None - elif sage.rings.finite_rings.finite_field_constructor.is_FiniteField(base_ring): + elif isinstance(base_ring, FiniteField): # not the prime field! gen = str(base_ring.gen()) R = make_ring(f"({char},{gen})") @@ -148,7 +148,7 @@ def _do_singular_init_(singular, base_ring, char, _vars, order): if B.is_prime_field() or B is ZZ: return make_ring(f"({base_char},{gens})"), None - if is_FiniteField(B) and B.characteristic() <= 2147483647: + if isinstance(B, FiniteField) and B.characteristic() <= 2147483647: ext_gen = str(B.gen()) _vars = '(' + ext_gen + ', ' + _vars[1:] @@ -333,7 +333,7 @@ def _singular_(self, singular=singular): R._check_valid() if self.base_ring() is ZZ or self.base_ring().is_prime_field(): return R - if sage.rings.finite_rings.finite_field_constructor.is_FiniteField(self.base_ring()) or \ + if isinstance(self.base_ring(), FiniteField) or \ (number_field.number_field_base.is_NumberField(self.base_ring()) and self.base_ring().is_absolute()): R.set_ring() # sorry for that, but needed for minpoly if singular.eval('minpoly') != f"({self.__minpoly})": @@ -427,14 +427,14 @@ def can_convert_to_singular(R): sage.rings.abc.RealField, sage.rings.abc.ComplexField, sage.rings.abc.RealDoubleField, sage.rings.abc.ComplexDoubleField))): return True - elif sage.rings.finite_rings.finite_field_constructor.is_FiniteField(base_ring): + elif isinstance(base_ring, FiniteField): return base_ring.characteristic() <= 2147483647 elif number_field.number_field_base.is_NumberField(base_ring): return base_ring.is_absolute() elif sage.rings.fraction_field.is_FractionField(base_ring): B = base_ring.base_ring() return (B.is_prime_field() or B is ZZ - or (is_FiniteField(B) and B.characteristic() <= 2147483647)) + or (isinstance(B, FiniteField) and B.characteristic() <= 2147483647)) elif isinstance(base_ring, RationalFunctionField): return base_ring.constant_field().is_prime_field() else: diff --git a/src/sage/schemes/affine/affine_homset.py b/src/sage/schemes/affine/affine_homset.py index 98b3b3a8994..914e54f7148 100644 --- a/src/sage/schemes/affine/affine_homset.py +++ b/src/sage/schemes/affine/affine_homset.py @@ -41,7 +41,7 @@ from sage.rings.rational_field import is_RationalField from sage.categories.fields import Fields from sage.categories.number_fields import NumberFields -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.schemes.generic.homset import SchemeHomset_points, SchemeHomset_generic @@ -354,7 +354,7 @@ def points(self, **kwds): raise TypeError("a positive bound B (= %s) must be specified"%B) from sage.schemes.affine.affine_rational_point import enum_affine_number_field return enum_affine_number_field(self, bound=B, tolerance=tol, precision=prec) - elif is_FiniteField(R): + elif isinstance(R, FiniteField): from sage.schemes.affine.affine_rational_point import enum_affine_finite_field return enum_affine_finite_field(self) else: diff --git a/src/sage/schemes/affine/affine_morphism.py b/src/sage/schemes/affine/affine_morphism.py index 38b71556ba2..b61b011f979 100644 --- a/src/sage/schemes/affine/affine_morphism.py +++ b/src/sage/schemes/affine/affine_morphism.py @@ -62,12 +62,11 @@ from sage.arith.misc import GCD as gcd from sage.rings.integer import Integer -from sage.rings.finite_rings.finite_field_constructor import is_PrimeFiniteField from sage.rings.fraction_field import FractionField from sage.rings.fraction_field_element import FractionFieldElement from sage.rings.integer_ring import ZZ from sage.rings.rational_field import QQ -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.schemes.generic.morphism import SchemeMorphism_polynomial @@ -229,7 +228,8 @@ def __init__(self, parent, polys, check=True): SchemeMorphism_polynomial.__init__(self, parent, polys, check) # used in _fast_eval and _fastpolys - self._is_prime_finite_field = is_PrimeFiniteField(polys[0].base_ring()) + R = polys[0].base_ring() + self._is_prime_finite_field = isinstance(R, FiniteField) and R.is_prime_field() def __call__(self, x, check=True): """ @@ -683,7 +683,7 @@ def as_dynamical_system(self): R = self.base_ring() if R not in _Fields: return DynamicalSystem_affine(list(self), self.domain()) - if is_FiniteField(R): + if isinstance(R, FiniteField): return DynamicalSystem_affine_finite_field(list(self), self.domain()) return DynamicalSystem_affine_field(list(self), self.domain()) diff --git a/src/sage/schemes/affine/affine_space.py b/src/sage/schemes/affine/affine_space.py index ba56ef9fc8d..52c13b29068 100644 --- a/src/sage/schemes/affine/affine_space.py +++ b/src/sage/schemes/affine/affine_space.py @@ -17,7 +17,7 @@ from sage.rings.rational_field import is_RationalField from sage.rings.polynomial.polynomial_ring import is_PolynomialRing from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.categories.map import Map from sage.categories.fields import Fields from sage.categories.homset import Hom @@ -132,7 +132,7 @@ def AffineSpace(n, R=None, names=None, ambient_projective_space=None, from sage.schemes.projective.projective_space import ProjectiveSpace ambient_projective_space = ProjectiveSpace(n, R) if R in _Fields: - if is_FiniteField(R): + if isinstance(R, FiniteField): return AffineSpace_finite_field(n, R, names, ambient_projective_space, default_embedding_index) else: @@ -270,12 +270,12 @@ def rational_points(self, F=None): TypeError: second argument (= Integer Ring) must be a finite field """ if F is None: - if not is_FiniteField(self.base_ring()): - raise TypeError("base ring (= %s) must be a finite field"%self.base_ring()) - return [ P for P in self ] - elif not is_FiniteField(F): - raise TypeError("second argument (= %s) must be a finite field"%F) - return [ P for P in self.base_extend(F) ] + if not isinstance(self.base_ring(), FiniteField): + raise TypeError("base ring (= %s) must be a finite field" % self.base_ring()) + return [P for P in self] + elif not isinstance(F, FiniteField): + raise TypeError("second argument (= %s) must be a finite field" % F) + return [P for P in self.base_extend(F)] def __eq__(self, right): """ diff --git a/src/sage/schemes/curves/constructor.py b/src/sage/schemes/curves/constructor.py index c3ff0fa9a42..88f9b95701f 100644 --- a/src/sage/schemes/curves/constructor.py +++ b/src/sage/schemes/curves/constructor.py @@ -38,7 +38,7 @@ from sage.rings.polynomial.multi_polynomial import MPolynomial from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.rational_field import QQ @@ -294,7 +294,7 @@ def Curve(F, A=None): if is_AffineSpace(A): if n != 2: - if is_FiniteField(k): + if isinstance(k, FiniteField): if A.coordinate_ring().ideal(F).is_prime(): return IntegralAffineCurve_finite_field(A, F) if k in Fields(): @@ -307,7 +307,7 @@ def Curve(F, A=None): raise TypeError("need a single nonconstant polynomial to define a plane curve") F = F[0] - if is_FiniteField(k): + if isinstance(k, FiniteField): if _is_irreducible_and_reduced(F): return IntegralAffinePlaneCurve_finite_field(A, F) return AffinePlaneCurve_finite_field(A, F) @@ -321,7 +321,7 @@ def Curve(F, A=None): if n != 2: if not all(f.is_homogeneous() for f in F): raise TypeError("polynomials defining a curve in a projective space must be homogeneous") - if is_FiniteField(k): + if isinstance(k, FiniteField): if A.coordinate_ring().ideal(F).is_prime(): return IntegralProjectiveCurve_finite_field(A, F) if k in Fields(): @@ -339,7 +339,7 @@ def Curve(F, A=None): if not F.is_homogeneous(): raise TypeError("{} is not a homogeneous polynomial".format(F)) - if is_FiniteField(k): + if isinstance(k, FiniteField): if _is_irreducible_and_reduced(F): return IntegralProjectivePlaneCurve_finite_field(A, F) return ProjectivePlaneCurve_finite_field(A, F) diff --git a/src/sage/schemes/cyclic_covers/constructor.py b/src/sage/schemes/cyclic_covers/constructor.py index 32bdf239b99..0a8926d7db6 100644 --- a/src/sage/schemes/cyclic_covers/constructor.py +++ b/src/sage/schemes/cyclic_covers/constructor.py @@ -8,9 +8,10 @@ # https://www.gnu.org/licenses/ # ***************************************************************************** +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.polynomial.polynomial_element import Polynomial -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField from sage.schemes.affine.affine_space import AffineSpace + from .cycliccover_generic import CyclicCover_generic from .cycliccover_finite_field import CyclicCover_finite_field @@ -127,7 +128,7 @@ def CyclicCover(r, f, names=None, check_smooth=True): names = ["x", "y"] A2 = AffineSpace(2, R, names=names) - if is_FiniteField(R): + if isinstance(R, FiniteField): return CyclicCover_finite_field(A2, r, f, names=names) else: return CyclicCover_generic(A2, r, f, names=names) diff --git a/src/sage/schemes/elliptic_curves/constructor.py b/src/sage/schemes/elliptic_curves/constructor.py index d924bd8f45c..8d1a7ddf363 100644 --- a/src/sage/schemes/elliptic_curves/constructor.py +++ b/src/sage/schemes/elliptic_curves/constructor.py @@ -27,7 +27,7 @@ import sage.rings.abc from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.number_field.number_field import is_NumberField from sage.rings.polynomial.multi_polynomial import MPolynomial from sage.rings.ring import is_Ring @@ -477,7 +477,7 @@ def create_object(self, version, key, **kwds): elif isinstance(R, sage.rings.abc.pAdicField): from .ell_padic_field import EllipticCurve_padic_field return EllipticCurve_padic_field(R, x) - elif is_FiniteField(R) or (isinstance(R, sage.rings.abc.IntegerModRing) and R.characteristic().is_prime()): + elif isinstance(R, FiniteField) or (isinstance(R, sage.rings.abc.IntegerModRing) and R.characteristic().is_prime()): from .ell_finite_field import EllipticCurve_finite_field return EllipticCurve_finite_field(R, x) elif R in _Fields: diff --git a/src/sage/schemes/elliptic_curves/ell_finite_field.py b/src/sage/schemes/elliptic_curves/ell_finite_field.py index 9da8cc3acfd..d0279e553f1 100644 --- a/src/sage/schemes/elliptic_curves/ell_finite_field.py +++ b/src/sage/schemes/elliptic_curves/ell_finite_field.py @@ -31,7 +31,7 @@ from sage.arith.misc import binomial, GCD as gcd from sage.groups.additive_abelian.additive_abelian_wrapper import AdditiveAbelianGroupWrapper from sage.misc.cachefunc import cached_method -from sage.rings.finite_rings.element_base import is_FiniteFieldElement +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ @@ -39,6 +39,7 @@ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.schemes.curves.projective_curve import Hasse_bounds from sage.schemes.hyperelliptic_curves.hyperelliptic_finite_field import HyperellipticCurve_finite_field +from sage.structure.element import Element from . import ell_point from .constructor import EllipticCurve @@ -2102,7 +2103,7 @@ def is_j_supersingular(j, proof=True): sage: [p for p in prime_range(100) if is_j_supersingular(GF(p)(123456))] [2, 3, 59, 89] """ - if not is_FiniteFieldElement(j): + if not (isinstance(j, Element) and isinstance(j.parent(), FiniteField)): raise ValueError("%s must be an element of a finite field" % j) F = j.parent() diff --git a/src/sage/schemes/generic/algebraic_scheme.py b/src/sage/schemes/generic/algebraic_scheme.py index 9e1fe6b4b56..6391bc54eeb 100644 --- a/src/sage/schemes/generic/algebraic_scheme.py +++ b/src/sage/schemes/generic/algebraic_scheme.py @@ -132,7 +132,7 @@ from sage.rings.integer_ring import ZZ from sage.rings.qqbar import QQbar from sage.rings.rational_field import is_RationalField -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.number_field.order import is_NumberFieldOrder from sage.misc.latex import latex @@ -886,7 +886,7 @@ def rational_points(self, **kwds): if bound == 0: if is_RationalField(F): raise TypeError("A positive bound (= %s) must be specified."%bound) - if not is_FiniteField(F): + if not isinstance(F, FiniteField): raise TypeError("Argument F (= %s) must be a finite field."%F) pts = [] for P in self.ambient_space().rational_points(F): diff --git a/src/sage/schemes/hyperelliptic_curves/constructor.py b/src/sage/schemes/hyperelliptic_curves/constructor.py index e73efa85558..afd87af8cb3 100644 --- a/src/sage/schemes/hyperelliptic_curves/constructor.py +++ b/src/sage/schemes/hyperelliptic_curves/constructor.py @@ -23,10 +23,10 @@ from .hyperelliptic_g2 import HyperellipticCurve_g2 import sage.rings.abc -from sage.rings.rational_field import is_RationalField -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField -from sage.rings.polynomial.polynomial_element import Polynomial +from sage.rings.finite_rings.finite_field_base import FiniteField +from sage.rings.polynomial.polynomial_element import Polynomial +from sage.rings.rational_field import is_RationalField from sage.structure.dynamic_class import dynamic_class @@ -249,7 +249,11 @@ def HyperellipticCurve(f, h=0, names=None, PP=None, check_squarefree=True): genus_classes = {2: HyperellipticCurve_g2} - is_pAdicField = lambda x: isinstance(x, sage.rings.abc.pAdicField) + def is_FiniteField(x): + return isinstance(x, FiniteField) + + def is_pAdicField(x): + return isinstance(x, sage.rings.abc.pAdicField) fields = [ ("FiniteField", is_FiniteField, HyperellipticCurve_finite_field), diff --git a/src/sage/schemes/plane_conics/constructor.py b/src/sage/schemes/plane_conics/constructor.py index abff2935854..258476ca09c 100644 --- a/src/sage/schemes/plane_conics/constructor.py +++ b/src/sage/schemes/plane_conics/constructor.py @@ -27,20 +27,18 @@ from sage.matrix.constructor import Matrix from sage.modules.free_module_element import vector from sage.quadratic_forms.quadratic_form import is_QuadraticForm -from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing - from sage.rings.ring import IntegralDomain from sage.rings.rational_field import is_RationalField -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField -from sage.rings.polynomial.multi_polynomial import MPolynomial -from sage.rings.polynomial.polynomial_ring import is_PolynomialRing -from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.fraction_field import is_FractionField - from sage.rings.number_field.number_field import is_NumberField -from sage.schemes.projective.projective_space import ProjectiveSpace -from sage.schemes.projective.projective_point import SchemeMorphism_point_projective_field +from sage.rings.polynomial.multi_polynomial import MPolynomial +from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing +from sage.rings.polynomial.polynomial_ring import is_PolynomialRing +from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.schemes.affine.affine_point import SchemeMorphism_point_affine +from sage.schemes.projective.projective_point import SchemeMorphism_point_projective_field +from sage.schemes.projective.projective_space import ProjectiveSpace from sage.structure.all import Sequence from sage.structure.element import is_Matrix @@ -233,7 +231,7 @@ def Conic(base_field, F=None, names=None, unique=True): if F.parent().ngens() == 3: P2 = ProjectiveSpace(2, base_field, names) - if is_FiniteField(base_field): + if isinstance(base_field, FiniteField): return ProjectiveConic_finite_field(P2, F) if is_RationalField(base_field): return ProjectiveConic_rational_field(P2, F) diff --git a/src/sage/schemes/product_projective/homset.py b/src/sage/schemes/product_projective/homset.py index 28aa566bb73..b56eccb968e 100644 --- a/src/sage/schemes/product_projective/homset.py +++ b/src/sage/schemes/product_projective/homset.py @@ -22,7 +22,7 @@ from sage.categories.number_fields import NumberFields from sage.misc.mrange import xmrange from sage.misc.misc_c import prod -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.rational_field import is_RationalField from sage.schemes.generic.algebraic_scheme import AlgebraicScheme_subscheme from sage.schemes.generic.homset import SchemeHomset_points @@ -228,7 +228,7 @@ def points(self, **kwds): raise TypeError("a positive bound B (= %s) must be specified"%B) from sage.schemes.product_projective.rational_point import enum_product_projective_number_field return enum_product_projective_number_field(self, bound=B) - elif is_FiniteField(R): + elif isinstance(R, FiniteField): from sage.schemes.product_projective.rational_point import enum_product_projective_finite_field return enum_product_projective_finite_field(self) else: diff --git a/src/sage/schemes/product_projective/space.py b/src/sage/schemes/product_projective/space.py index 604adcc8a41..4597d1c3798 100644 --- a/src/sage/schemes/product_projective/space.py +++ b/src/sage/schemes/product_projective/space.py @@ -45,7 +45,7 @@ from sage.rings.integer import Integer from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.rational_field import QQ -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.categories.fields import Fields from sage.categories.commutative_rings import CommutativeRings from sage.rings.polynomial.polydict import ETuple @@ -137,7 +137,7 @@ def ProductProjectiveSpaces(n, R=None, names='x'): raise AttributeError("components must be over the same base ring") N.append(PS.dimension_relative()) names += PS.variable_names() - if is_FiniteField(R): + if isinstance(R, FiniteField): X = ProductProjectiveSpaces_finite_field(N, R, names) elif R in Fields(): X = ProductProjectiveSpaces_field(N, R, names) @@ -162,7 +162,7 @@ def ProductProjectiveSpaces(n, R=None, names='x'): else: n_vars = sum(1+d for d in n) names = normalize_names(n_vars, name_list) - if is_FiniteField(R): + if isinstance(R, FiniteField): X = ProductProjectiveSpaces_finite_field(n, R, names) elif R in Fields(): X = ProductProjectiveSpaces_field(n, R, names) @@ -1302,6 +1302,6 @@ def rational_points(self, F=None): """ if F is None: return list(self) - elif not is_FiniteField(F): + elif not isinstance(F, FiniteField): raise TypeError("second argument (= %s) must be a finite field"%F) return list(self.base_extend(F)) diff --git a/src/sage/schemes/projective/projective_homset.py b/src/sage/schemes/projective/projective_homset.py index 3ffd4a6b6e4..3ee0b78876e 100644 --- a/src/sage/schemes/projective/projective_homset.py +++ b/src/sage/schemes/projective/projective_homset.py @@ -47,7 +47,7 @@ from sage.rings.rational_field import is_RationalField from sage.categories.fields import Fields from sage.categories.number_fields import NumberFields -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.schemes.generic.algebraic_scheme import AlgebraicScheme_subscheme from copy import copy @@ -284,7 +284,7 @@ def points(self, **kwds): raise TypeError("a positive bound B (= %s) must be specified"%B) from sage.schemes.projective.projective_rational_point import enum_projective_number_field return enum_projective_number_field(self, bound=B, tolerance=tol, precision=prec) - elif is_FiniteField(R): + elif isinstance(R, FiniteField): from sage.schemes.projective.projective_rational_point import enum_projective_finite_field return enum_projective_finite_field(self.extended_codomain()) else: diff --git a/src/sage/schemes/projective/projective_morphism.py b/src/sage/schemes/projective/projective_morphism.py index facc90bb53d..9c608f67a48 100644 --- a/src/sage/schemes/projective/projective_morphism.py +++ b/src/sage/schemes/projective/projective_morphism.py @@ -73,8 +73,7 @@ import sage.rings.abc from sage.rings.integer import Integer from sage.rings.algebraic_closure_finite_field import AlgebraicClosureFiniteField_generic -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField -from sage.rings.finite_rings.finite_field_constructor import is_PrimeFiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.finite_rings.finite_field_constructor import GF from sage.rings.fraction_field import FractionField from sage.rings.integer_ring import ZZ @@ -275,7 +274,8 @@ def __init__(self, parent, polys, check=True): SchemeMorphism_polynomial.__init__(self, parent, polys, check) - self._is_prime_finite_field = is_PrimeFiniteField(polys[0].base_ring()) + R = polys[0].base_ring() + self._is_prime_finite_field = isinstance(R, FiniteField) and R.is_prime_field() def __call__(self, x, check=True): r""" @@ -728,7 +728,7 @@ def as_dynamical_system(self): R = self.base_ring() if R not in _Fields: return DynamicalSystem_projective(list(self), self.domain()) - if is_FiniteField(R): + if isinstance(R, FiniteField): return DynamicalSystem_projective_finite_field(list(self), self.domain()) return DynamicalSystem_projective_field(list(self), self.domain()) @@ -1007,7 +1007,7 @@ def normalize_coordinates(self, **kwds): # scales by 1/gcd of the coefficients. if R in _NumberFields: O = R.maximal_order() - elif is_FiniteField(R): + elif isinstance(R, FiniteField): O = R elif isinstance(R, QuotientRing_generic): O = R.ring() diff --git a/src/sage/schemes/projective/projective_space.py b/src/sage/schemes/projective/projective_space.py index 670304af237..e215da942e1 100644 --- a/src/sage/schemes/projective/projective_space.py +++ b/src/sage/schemes/projective/projective_space.py @@ -81,7 +81,7 @@ from sage.arith.misc import gcd, binomial -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.integer import Integer from sage.rings.integer_ring import ZZ from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing @@ -256,7 +256,7 @@ def ProjectiveSpace(n, R=None, names=None): if R is None: R = ZZ # default is the integers if R in _Fields: - if is_FiniteField(R): + if isinstance(R, FiniteField): return ProjectiveSpace_finite_field(n, R, names) if is_RationalField(R): return ProjectiveSpace_rational_field(n, R, names) @@ -2253,7 +2253,7 @@ def rational_points(self, F=None): """ if F is None: return [P for P in self] - elif not is_FiniteField(F): + elif not isinstance(F, FiniteField): raise TypeError("second argument (= %s) must be a finite field" % F) return [P for P in self.base_extend(F)] diff --git a/src/sage/schemes/projective/projective_subscheme.py b/src/sage/schemes/projective/projective_subscheme.py index 8a93cb30d83..4a178c53766 100644 --- a/src/sage/schemes/projective/projective_subscheme.py +++ b/src/sage/schemes/projective/projective_subscheme.py @@ -29,7 +29,7 @@ from sage.matrix.constructor import matrix from sage.rings.integer_ring import ZZ -from sage.rings.finite_rings.finite_field_constructor import is_FiniteField +from sage.rings.finite_rings.finite_field_base import FiniteField from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing from sage.rings.rational_field import is_RationalField @@ -982,7 +982,7 @@ def dual(self): from sage.libs.singular.function_factory import ff K = self.base_ring() - if not (is_RationalField(K) or is_FiniteField(K)): + if not (is_RationalField(K) or isinstance(K, FiniteField)): raise NotImplementedError("base ring must be QQ or a finite field") I = self.defining_ideal() m = I.ngens() diff --git a/src/sage/stats/distributions/discrete_gaussian_lattice.py b/src/sage/stats/distributions/discrete_gaussian_lattice.py index 695c8fc3615..766cb2d4a41 100644 --- a/src/sage/stats/distributions/discrete_gaussian_lattice.py +++ b/src/sage/stats/distributions/discrete_gaussian_lattice.py @@ -58,7 +58,10 @@ from sage.functions.log import exp from sage.functions.other import ceil -from sage.rings.all import RealField, RR, ZZ, QQ +from sage.rings.real_mpfr import RealField +from sage.rings.real_mpfr import RR +from sage.rings.integer_ring import ZZ +from sage.rings.rational_field import QQ from .discrete_gaussian_integer import DiscreteGaussianDistributionIntegerSampler from sage.structure.sage_object import SageObject from sage.matrix.constructor import matrix, identity_matrix diff --git a/src/sage/stats/distributions/discrete_gaussian_polynomial.py b/src/sage/stats/distributions/discrete_gaussian_polynomial.py index 698727f48d0..0f4e7e59361 100644 --- a/src/sage/stats/distributions/discrete_gaussian_polynomial.py +++ b/src/sage/stats/distributions/discrete_gaussian_polynomial.py @@ -54,7 +54,8 @@ # policies, either expressed or implied, of the FreeBSD Project. #*****************************************************************************/ -from sage.rings.all import RR, ZZ +from sage.rings.real_mpfr import RR +from sage.rings.integer_ring import ZZ from .discrete_gaussian_integer import DiscreteGaussianDistributionIntegerSampler from sage.structure.sage_object import SageObject diff --git a/src/sage/symbolic/pynac_impl.pxi b/src/sage/symbolic/pynac_impl.pxi index fe9451d668d..a610add5ef8 100644 --- a/src/sage/symbolic/pynac_impl.pxi +++ b/src/sage/symbolic/pynac_impl.pxi @@ -35,6 +35,9 @@ Pynac interface from cpython cimport * from libc cimport math +from sage.arith.misc import bernoulli, factorial, GCD as gcd, is_prime +from sage.arith.functions import lcm +from sage.cpython.string cimport str_to_bytes, char_to_str from sage.ext.stdsage cimport PY_NEW from sage.libs.gmp.all cimport * from sage.libs.gsl.types cimport * @@ -42,15 +45,7 @@ from sage.libs.gsl.complex cimport * from sage.libs.gsl.gamma cimport gsl_sf_lngamma_complex_e from sage.libs.mpmath import utils as mpmath_utils from sage.libs.pari.all import pari - -from sage.cpython.string cimport str_to_bytes, char_to_str - -from sage.arith.all import gcd, lcm, is_prime, factorial, bernoulli - -from sage.structure.coerce cimport coercion_model -from sage.structure.element cimport Element, parent from sage.misc.persist import loads, dumps - from sage.rings.integer_ring import ZZ from sage.rings.integer cimport Integer, smallInteger from sage.rings.rational cimport Rational @@ -58,7 +53,8 @@ from sage.rings.real_mpfr import RR, RealField from sage.rings.rational cimport rational_power_parts from sage.rings.real_double cimport RealDoubleElement from sage.rings.cc import CC - +from sage.structure.coerce cimport coercion_model +from sage.structure.element cimport Element, parent from sage.symbolic.function cimport Function @@ -2391,7 +2387,7 @@ def register_symbol(obj, conversions, nargs=None): this can be deduced automatically. EXAMPLES:: - + sage: from sage.symbolic.expression import register_symbol as rs sage: rs(SR(5),{'maxima':'five'}) sage: SR(maxima_calculus('five')) diff --git a/src/sage/symbolic/ring.pyx b/src/sage/symbolic/ring.pyx index 2bfb28f249e..f1547a92301 100644 --- a/src/sage/symbolic/ring.pyx +++ b/src/sage/symbolic/ring.pyx @@ -217,7 +217,7 @@ cdef class SymbolicRing(sage.rings.abc.SymbolicRing): from sage.rings.complex_mpfr import ComplexField from sage.rings.infinity import InfinityRing, UnsignedInfinityRing from sage.rings.real_lazy import RLF, CLF - from sage.rings.finite_rings.finite_field_base import is_FiniteField + from sage.rings.finite_rings.finite_field_base import FiniteField from sage.interfaces.maxima import Maxima @@ -234,8 +234,8 @@ cdef class SymbolicRing(sage.rings.abc.SymbolicRing): sage.rings.abc.ComplexIntervalField, sage.rings.abc.RealBallField, sage.rings.abc.ComplexBallField, - sage.rings.abc.IntegerModRing)) - or is_FiniteField(R)): + sage.rings.abc.IntegerModRing, + FiniteField))): return True elif isinstance(R, GenericSymbolicSubring): return True diff --git a/src/sage/symbolic/substitution_map_impl.pxi b/src/sage/symbolic/substitution_map_impl.pxi index d53b9971c6e..ea60e899d1a 100644 --- a/src/sage/symbolic/substitution_map_impl.pxi +++ b/src/sage/symbolic/substitution_map_impl.pxi @@ -29,13 +29,13 @@ cdef class SubstitutionMap(SageObject): Apply the substitution to a symbolic expression EXAMPLES:: - + sage: from sage.symbolic.expression import make_map sage: subs = make_map({x:x+1}) sage: subs.apply_to(x^2, 0) (x + 1)^2 """ - return new_Expression_from_GEx(expr._parent, + return new_Expression_from_GEx(expr._parent, expr._gobj.subs_map(self._gmapobj, options)) def _repr_(self): @@ -43,7 +43,7 @@ cdef class SubstitutionMap(SageObject): Return the string representation EXAMPLES:: - + sage: from sage.symbolic.expression import make_map sage: make_map({x:x+1}) SubsMap @@ -94,4 +94,4 @@ cpdef SubstitutionMap make_map(subs_dict): smap.insert(make_pair((k)._gobj, (v)._gobj)) return new_SubstitutionMap_from_GExMap(smap) - + diff --git a/src/sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py b/src/sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py index fae01daa748..42121f2f815 100644 --- a/src/sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py +++ b/src/sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py @@ -117,7 +117,7 @@ Sage example in ./premierspas.tex, line 1217:: - sage: from sage.all import pi + sage: from sage.symbolic.constants import pi Sage example in ./premierspas.tex, line 1224:: diff --git a/src/sage/topology/delta_complex.py b/src/sage/topology/delta_complex.py index 420fd2fad5a..bdc16265c68 100644 --- a/src/sage/topology/delta_complex.py +++ b/src/sage/topology/delta_complex.py @@ -59,7 +59,7 @@ from .simplicial_complex import Simplex, lattice_paths, SimplicialComplex from sage.homology.chain_complex import ChainComplex from sage.graphs.graph import Graph -from sage.arith.all import binomial +from sage.arith.misc import binomial from sage.misc.cachefunc import cached_method diff --git a/src/sage/topology/simplicial_complex.py b/src/sage/topology/simplicial_complex.py index 10ba66cf42a..9f3412543ec 100644 --- a/src/sage/topology/simplicial_complex.py +++ b/src/sage/topology/simplicial_complex.py @@ -1452,7 +1452,7 @@ def h_vector(self): sage: octa.h_vector() [1, 3, 3, 1] """ - from sage.arith.all import binomial + from sage.arith.misc import binomial d = self.dimension() f = self.f_vector() # indexed starting at 0, since it's a Python list h = [] @@ -1573,7 +1573,7 @@ def h_triangle(self): [0, 0, 4], [1, 2, -1, 0]] """ - from sage.arith.all import binomial + from sage.arith.misc import binomial ret = [[0]*(i+1) for i in range(self.dimension() + 2)] f = self.f_triangle() for i, row in enumerate(ret):