Skip to content

Commit b82f457

Browse files
author
Release Manager
committed
gh-35106: sage.{arith,crypto,databases,dynamics,lfunctions,quadratic_forms}: Replace imports from sage.*.all for namespace packages <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes #1234" use "Introduce new method to calculate 1+1" --> ### 📚 Description Fixes #34955 <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> <!-- If it resolves an open issue, please link to the issue here. For example "Closes #1337" --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [ ] I have made sure that the title is self-explanatory and the description concisely explains the PR. - [x] I have linked an issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open pull requests that this PR logically depends on --> <!-- - #xyz: short description why this is a dependency - #abc: ... --> Depends on #35119 URL: #35106 Reported by: Matthias Köppe Reviewer(s): Dima Pasechnik, Matthias Köppe, Tobias Diez
2 parents 308cdec + a9d9420 commit b82f457

File tree

88 files changed

+364
-285
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+364
-285
lines changed

src/.relint.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@
4949
Hint: namespace package. Type import_statements("SOME_IDENTIFIER") to find a more specific import,
5050
Hint: or use 'sage --fiximports' to fix automatically in the source file.
5151
# Keep in sync with SAGE_ROOT/src/sage/misc/replace_dot_all.py
52-
pattern: 'from\s+sage(|[.](arith|categories|combinat|ext|graphs(|[.]decompositions)|interfaces|libs|matrix|misc|numerical(|[.]backends)|rings|sets))[.]all\s+import'
52+
pattern: 'from\s+sage(|[.](arith|categories|combinat|ext|graphs(|[.]decompositions)|interfaces|libs|matrix|misc|numerical(|[.]backends)|rings(|[.]finite_rings)|sets))[.]all\s+import'
5353
filePattern: '.*[.](py|pyx|pxi)$'
5454
error: false # Make this a warning instead of an error for now

src/sage/arith/multi_modular.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ from cysignals.memory cimport check_allocarray, check_reallocarray, sig_free
1616

1717
from sage.libs.gmp.mpz cimport *
1818
from sage.rings.integer cimport Integer, smallInteger
19-
from sage.arith.all import random_prime
19+
from sage.arith.misc import random_prime
2020
from types import GeneratorType
2121
from sage.ext.stdsage cimport PY_NEW
2222
from cpython.object cimport PyObject_RichCompare

src/sage/arith/numerical_approx.pyx

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ Generic numerical approximation function
1515
from sage.structure.parent cimport Parent
1616
from sage.structure.element cimport parent
1717
cdef Parent CDF
18-
from sage.rings.all import RealField, ComplexField, CDF
18+
from sage.rings.real_mpfr import RealField
19+
from sage.rings.complex_mpfr import ComplexField
20+
from sage.rings.complex_double import CDF
1921

2022

2123
def numerical_approx_generic(x, prec):

src/sage/crypto/boolean_function.pyx

+8-5
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ from sage.rings.integer_ring import ZZ
3838
from sage.rings.integer cimport Integer
3939
from sage.rings.finite_rings.finite_field_constructor import GF
4040
from sage.rings.polynomial.pbori.pbori import BooleanPolynomial
41-
from sage.rings.finite_rings.finite_field_constructor import is_FiniteField
42-
from sage.rings.finite_rings.finite_field_givaro import FiniteField_givaro
41+
from sage.rings.finite_rings.finite_field_base import FiniteField
4342
from sage.rings.polynomial.polynomial_element import Polynomial
4443

4544
from sage.misc.superseded import deprecated_function_alias
@@ -329,11 +328,15 @@ cdef class BooleanFunction(SageObject):
329328

330329
elif isinstance(x, Polynomial):
331330
K = x.base_ring()
332-
if is_FiniteField(K) and K.characteristic() == 2:
331+
if isinstance(K, FiniteField) and K.characteristic() == 2:
333332
self._nvariables = K.degree()
334333
bitset_init(self._truth_table, <mp_bitcnt_t> (1<<self._nvariables))
335334
bitset_zero(self._truth_table)
336-
if isinstance(K,FiniteField_givaro): #the ordering is not the same in this case
335+
try:
336+
from sage.rings.finite_rings.finite_field_givaro import FiniteField_givaro
337+
except ImportError:
338+
FiniteField_givaro = ()
339+
if isinstance(K, FiniteField_givaro): # the ordering is not the same in this case
337340
for u in K:
338341
bitset_set_to(self._truth_table, ZZ(u._vector_().list(),2) , (x(u)).trace())
339342
else:
@@ -1008,7 +1011,7 @@ cdef class BooleanFunction(SageObject):
10081011
from sage.misc.misc_c import prod
10091012

10101013
from sage.matrix.constructor import Matrix
1011-
from sage.arith.all import binomial
1014+
from sage.arith.misc import binomial
10121015
M = Matrix(GF(2), sum(binomial(self._nvariables,i) for i in range(d+1)), len(s))
10131016

10141017
cdef long i

src/sage/crypto/classical.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
from sage.rings.integer import Integer
5656
from sage.rings.integer_ring import ZZ
5757
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
58-
from sage.arith.all import xgcd, inverse_mod
58+
from sage.arith.misc import inverse_mod, xgcd
5959
from random import randint
6060
from sage.matrix.matrix_space import MatrixSpace
6161

src/sage/crypto/lattice.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ def gen_lattice(type='modular', n=4, m=8, q=11, seed=None,
256256
A = A.stack(R.random_element().matrix())
257257

258258
elif type == 'cyclotomic':
259-
from sage.arith.all import euler_phi
259+
from sage.arith.misc import euler_phi
260260
from sage.misc.functional import cyclotomic_polynomial
261261

262262
# we assume that n+1 <= min( euler_phi^{-1}(n) ) <= 2*n

src/sage/crypto/lfsr.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,9 @@
128128
import copy
129129

130130
from sage.structure.all import Sequence
131-
from sage.rings.all import Integer, PolynomialRing
132-
from sage.rings.finite_rings.finite_field_constructor import is_FiniteField
131+
from sage.rings.finite_rings.finite_field_base import FiniteField
132+
from sage.rings.integer import Integer
133+
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
133134

134135

135136
def lfsr_sequence(key, fill, n):
@@ -179,7 +180,7 @@ def lfsr_sequence(key, fill, n):
179180
raise TypeError("key must be a list")
180181
key = Sequence(key)
181182
F = key.universe()
182-
if not is_FiniteField(F):
183+
if not isinstance(F, FiniteField):
183184
raise TypeError("universe of sequence must be a finite field")
184185

185186
s = fill

src/sage/crypto/lwe.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -91,23 +91,25 @@
9191
- [CGW2013]_
9292
"""
9393

94+
from sage.arith.misc import euler_phi, next_prime
9495
from sage.functions.log import log
9596
from sage.functions.other import floor, ceil
96-
from sage.misc.functional import sqrt
9797
from sage.misc.functional import cyclotomic_polynomial, round
98-
from sage.misc.randstate import set_random_seed
98+
from sage.misc.functional import sqrt
9999
from sage.misc.prandom import randint
100+
from sage.misc.randstate import set_random_seed
100101
from sage.modules.free_module import FreeModule
101102
from sage.modules.free_module_element import random_vector, vector
102103
from sage.numerical.optimize import find_root
103-
from sage.rings.all import ZZ, IntegerModRing, RR
104-
from sage.arith.all import next_prime, euler_phi
104+
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
105+
from sage.rings.integer_ring import ZZ
106+
from sage.rings.real_mpfr import RR
107+
from sage.stats.distributions.discrete_gaussian_integer import DiscreteGaussianDistributionIntegerSampler
108+
from sage.stats.distributions.discrete_gaussian_polynomial import DiscreteGaussianDistributionPolynomialSampler
105109
from sage.structure.element import parent
106110
from sage.structure.sage_object import SageObject
107111
from sage.symbolic.constants import pi
108112
from sage.symbolic.ring import SR
109-
from sage.stats.distributions.discrete_gaussian_integer import DiscreteGaussianDistributionIntegerSampler
110-
from sage.stats.distributions.discrete_gaussian_polynomial import DiscreteGaussianDistributionPolynomialSampler
111113

112114

113115
class UniformSampler(SageObject):

src/sage/crypto/mq/rijndael_gf.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,8 @@
424424

425425
from sage.matrix.constructor import matrix
426426
from sage.matrix.constructor import column_matrix
427-
from sage.structure.element import Matrix
427+
from sage.structure.element import Element, Matrix
428+
from sage.rings.finite_rings.finite_field_base import FiniteField as FiniteField_base
428429
from sage.rings.finite_rings.finite_field_constructor import FiniteField
429430
from sage.structure.sage_object import SageObject
430431
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
@@ -757,10 +758,9 @@ def _GF_to_hex(self, GF):
757758
sage: rgf._GF_to_hex(output)
758759
'e142cd5fcd9d6d94a3340793034391b5'
759760
"""
760-
from sage.rings.finite_rings.element_base import is_FiniteFieldElement
761761
if not isinstance(GF, Matrix) and \
762762
not isinstance(GF, list) and \
763-
not is_FiniteFieldElement(GF):
763+
not (isinstance(GF, Element) and isinstance(GF.parent(), FiniteField_base)):
764764
msg = ("keyword 'GF' must be a matrix over {0}, a list of "
765765
"elements from {0}, or a single element from {0}")
766766
raise TypeError(msg.format(self._F))
@@ -883,10 +883,9 @@ def _GF_to_bin(self, GF):
883883
sage: rgf._GF_to_bin(output)
884884
'11011000000111111111100000011011110110000001111111111000000110111101100000011111111110000001101111011000000111111111100000011011'
885885
"""
886-
from sage.rings.finite_rings.element_base import is_FiniteFieldElement
887886
if not isinstance(GF, Matrix) and \
888887
not isinstance(GF, list) and \
889-
not is_FiniteFieldElement(GF):
888+
not (isinstance(GF, Element) and isinstance(GF.parent(), FiniteField_base)):
890889
msg = ("keyword 'GF' must be a matrix over {0}, a list of "
891890
"elements from {0}, or a single element from {0}")
892891
raise TypeError(msg.format(self))

src/sage/crypto/public_key/blum_goldwasser.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,16 @@
3030

3131
from operator import xor
3232

33+
from sage.arith.misc import gcd, power_mod, xgcd
3334
from sage.crypto.cryptosystem import PublicKeyCryptosystem
34-
from sage.crypto.util import is_blum_prime
35-
from sage.crypto.util import least_significant_bits
36-
from sage.crypto.util import random_blum_prime
35+
from sage.crypto.util import is_blum_prime, least_significant_bits, random_blum_prime
3736
from sage.functions.log import log
3837
from sage.functions.other import Function_floor
3938
from sage.monoids.string_monoid import BinaryStrings
40-
from sage.arith.all import gcd, power_mod, xgcd
4139
from sage.rings.finite_rings.integer_mod import Mod as mod
4240
from sage.rings.finite_rings.integer_mod_ring import IntegerModFactory
4341

42+
4443
floor = Function_floor()
4544
IntegerModRing = IntegerModFactory("IntegerModRing")
4645

src/sage/crypto/sbox.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ from sage.misc.functional import is_even
1717
from sage.misc.misc_c import prod as mul
1818
from sage.misc.superseded import deprecated_function_alias
1919
from sage.modules.free_module_element import vector
20-
from sage.rings.finite_rings.element_base import is_FiniteFieldElement
20+
from sage.rings.finite_rings.finite_field_base import FiniteField
2121
from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF
2222
from sage.rings.ideal import FieldIdeal, Ideal
2323
from sage.rings.integer_ring import ZZ
@@ -195,7 +195,7 @@ cdef class SBox(SageObject):
195195

196196
_S_list = []
197197
for e in S:
198-
if is_FiniteFieldElement(e):
198+
if isinstance(e, Element) and isinstance(e.parent(), FiniteField):
199199
e = e.polynomial().change_ring(ZZ).subs(e.parent().characteristic())
200200
_S_list.append(e)
201201
S = _S_list

src/sage/crypto/stream.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,11 @@
1212
# http://www.gnu.org/licenses/
1313
#*****************************************************************************
1414

15-
from .cryptosystem import SymmetricKeyCryptosystem
16-
from .stream_cipher import LFSRCipher, ShrinkingGeneratorCipher
17-
15+
from sage.arith.misc import gcd, power_mod
16+
from sage.crypto.cryptosystem import SymmetricKeyCryptosystem
17+
from sage.crypto.stream_cipher import LFSRCipher, ShrinkingGeneratorCipher
1818
from sage.crypto.util import random_blum_prime
1919
from sage.monoids.string_monoid import BinaryStrings
20-
from sage.arith.all import gcd, power_mod
2120
from sage.rings.finite_rings.finite_field_constructor import FiniteField
2221
from sage.rings.finite_rings.integer_mod_ring import IntegerModFactory
2322
from sage.rings.polynomial.polynomial_element import Polynomial

src/sage/crypto/util.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,16 @@
2020
# http://www.gnu.org/licenses/
2121
#*****************************************************************************
2222

23+
from sage.arith.functions import lcm
24+
from sage.arith.misc import is_prime, primes, random_prime
25+
from sage.misc.lazy_import import lazy_import
2326
from sage.monoids.string_monoid import BinaryStrings
24-
from sage.arith.all import is_prime, lcm, primes, random_prime
25-
from sage.rings.integer import Integer
2627
from sage.rings.finite_rings.integer_mod import Mod as mod
28+
from sage.rings.integer import Integer
2729

28-
from sage.misc.lazy_import import lazy_import
2930
lazy_import('sage.arith.misc', ('carmichael_lambda'), deprecation=34719)
3031

32+
3133
def ascii_integer(B):
3234
r"""
3335
Return the ASCII integer corresponding to the binary string ``B``.

src/sage/databases/findstat.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1499,7 +1499,8 @@ def __call__(self, elt):
14991499
from sage.repl.preparse import preparse
15001500
try:
15011501
l = {}
1502-
code = "from sage.all import *\n" + preparse(self.sage_code())
1502+
environment = 'sage.all'
1503+
code = f"from {environment} import *\n" + preparse(self.sage_code())
15031504
exec(code, l)
15041505
except SyntaxError:
15051506
raise ValueError("could not execute verified code for %s" % self)

src/sage/databases/jones.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@
6868

6969
import os
7070

71-
from sage.rings.all import NumberField, RationalField, PolynomialRing
71+
from sage.rings.number_field.number_field import NumberField
72+
from sage.rings.rational_field import RationalField
73+
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
7274
from sage.misc.misc import powerset
7375
from sage.env import SAGE_SHARE
7476

src/sage/dynamics/arithmetic_dynamics/affine_ds.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ class initialization directly.
4343
from sage.misc.cachefunc import cached_method
4444
from sage.misc.classcall_metaclass import typecall
4545
from sage.rings.integer import Integer
46-
from sage.rings.finite_rings.finite_field_constructor import is_PrimeFiniteField
47-
from sage.rings.finite_rings.finite_field_constructor import is_FiniteField
46+
from sage.rings.finite_rings.finite_field_base import FiniteField
4847
from sage.rings.fraction_field import FractionField
4948
from sage.rings.fraction_field import is_FractionField
5049
from sage.rings.quotient_ring import is_QuotientRing
@@ -251,7 +250,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None):
251250
raise ValueError('domain and codomain do not agree')
252251
if R not in Fields():
253252
return typecall(cls, polys, domain)
254-
if is_FiniteField(R):
253+
if isinstance(R, FiniteField):
255254
return DynamicalSystem_affine_finite_field(polys, domain)
256255
return DynamicalSystem_affine_field(polys, domain)
257256
elif isinstance(morphism_or_polys,(list, tuple)):
@@ -299,7 +298,7 @@ def __classcall_private__(cls, morphism_or_polys, domain=None):
299298

300299
if R not in Fields():
301300
return typecall(cls, polys, domain)
302-
if is_FiniteField(R):
301+
if isinstance(R, FiniteField):
303302
return DynamicalSystem_affine_finite_field(polys, domain)
304303
return DynamicalSystem_affine_field(polys, domain)
305304

@@ -319,7 +318,8 @@ def __init__(self, polys_or_rat_fncts, domain):
319318
"""
320319
L = polys_or_rat_fncts
321320
# Next attribute needed for _fast_eval and _fastpolys
322-
self._is_prime_finite_field = is_PrimeFiniteField(L[0].base_ring())
321+
R = L[0].base_ring()
322+
self._is_prime_finite_field = isinstance(R, FiniteField) and R.is_prime_field()
323323
DynamicalSystem.__init__(self, L, domain)
324324

325325
def __copy__(self):

src/sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,23 @@
2222
from copy import copy, deepcopy
2323
from itertools import permutations, combinations, product
2424

25+
from sage.arith.functions import lcm
26+
from sage.arith.misc import CRT, divisors, gcd, is_square
27+
from sage.combinat.permutation import Arrangements
2528
from sage.combinat.subset import Subsets
26-
from sage.misc.functional import sqrt
2729
from sage.matrix.constructor import matrix
28-
from sage.structure.element import is_Matrix
30+
from sage.misc.functional import sqrt
2931
from sage.misc.misc_c import prod
32+
from sage.parallel.use_fork import p_iter_fork
3033
from sage.rings.finite_rings.finite_field_constructor import GF
3134
from sage.rings.finite_rings.integer_mod_ring import Integers
3235
from sage.rings.integer_ring import ZZ
3336
from sage.rings.number_field.number_field import NumberField
34-
from sage.arith.all import gcd, lcm, CRT, is_square, divisors
3537
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
3638
from sage.rings.rational_field import QQ
3739
from sage.sets.primes import Primes
3840
from sage.sets.set import Set
39-
from sage.combinat.permutation import Arrangements
40-
from sage.parallel.use_fork import p_iter_fork
41+
from sage.structure.element import is_Matrix
4142

4243

4344
def automorphism_group_QQ_fixedpoints(rational_function, return_functions=False, iso_type=False):

src/sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
from sage.rings.rational_field import QQ
3535
from sage.schemes.affine.affine_space import AffineSpace
3636
from sage.symbolic.constants import e
37-
from sage.arith.all import gcd
37+
from sage.arith.misc import gcd
3838
from copy import copy
3939

4040
def bCheck(c, v, p, b):

src/sage/dynamics/arithmetic_dynamics/generic_ds.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class initialization directly.
3333
from sage.schemes.affine.affine_space import is_AffineSpace
3434
from sage.schemes.affine.affine_subscheme import AlgebraicScheme_subscheme_affine
3535
from sage.rings.algebraic_closure_finite_field import AlgebraicClosureFiniteField_generic
36-
from sage.rings.finite_rings.finite_field_constructor import is_FiniteField
36+
from sage.rings.finite_rings.finite_field_base import FiniteField
3737
from sage.rings.qqbar import AlgebraicField_common
3838
from sage.schemes.berkovich.berkovich_space import is_Berkovich_Cp
3939
from sage.rings.rational_field import QQ
@@ -416,7 +416,7 @@ def field_of_definition_critical(self, return_embedding=False, simplify_all=Fals
416416
CR = CR.ring()
417417
x = CR.gen(0)
418418
poly = (g*CR(f).derivative(x) - f*CR(g).derivative(x)).univariate_polynomial()
419-
if is_FiniteField(ds.base_ring()):
419+
if isinstance(ds.base_ring(), FiniteField):
420420
return poly.splitting_field(names, map=return_embedding)
421421
else:
422422
K = poly.splitting_field(names, map=return_embedding, simplify_all=simplify_all)
@@ -536,7 +536,7 @@ def field_of_definition_periodic(self, n, formal=False, return_embedding=False,
536536
fn = ds.nth_iterate_map(n)
537537
f,g = fn[0].numerator(), fn[0].denominator()
538538
poly = (f - g*x).univariate_polynomial()
539-
if is_FiniteField(ds.base_ring()):
539+
if isinstance(ds.base_ring(), FiniteField):
540540
return poly.splitting_field(names, map=return_embedding)
541541
else:
542542
K = poly.splitting_field(names, map=return_embedding, simplify_all=simplify_all)
@@ -630,7 +630,7 @@ def field_of_definition_preimage(self, point, n, return_embedding=False, simplif
630630
#want the polynomial ring not the fraction field
631631
CR = CR.ring()
632632
poly = (f*point[1] - g*CR(point[0])).univariate_polynomial()
633-
if is_FiniteField(ds.base_ring()):
633+
if isinstance(ds.base_ring(), FiniteField):
634634
return poly.splitting_field(names, map=return_embedding)
635635
else:
636636
K = poly.splitting_field(names, map=return_embedding, simplify_all=simplify_all)

0 commit comments

Comments
 (0)