From 21148e59393ea5c503f856074b59bd27e4cec156 Mon Sep 17 00:00:00 2001 From: Alex Chandler Date: Sun, 29 Jan 2023 14:15:16 -0800 Subject: [PATCH 1/4] sage -fiximports src/sage/{functions,interfaces,symbolic} --- src/sage/functions/hypergeometric.py | 4 +++- src/sage/functions/piecewise.py | 15 +++++++++++---- src/sage/interfaces/axiom.py | 3 ++- src/sage/interfaces/fricas.py | 7 +++++-- src/sage/interfaces/genus2reduction.py | 4 +++- src/sage/interfaces/maxima_abstract.py | 2 +- src/sage/interfaces/octave.py | 4 ++-- src/sage/interfaces/scilab.py | 2 +- src/sage/interfaces/singular.py | 14 +++++++++----- src/sage/interfaces/sympy.py | 4 ++-- src/sage/symbolic/pynac_impl.pxi | 8 ++++++-- src/sage/symbolic/substitution_map_impl.pxi | 8 ++++---- 12 files changed, 49 insertions(+), 26 deletions(-) diff --git a/src/sage/functions/hypergeometric.py b/src/sage/functions/hypergeometric.py index 50c60b25638..47bff45ecdd 100644 --- a/src/sage/functions/hypergeometric.py +++ b/src/sage/functions/hypergeometric.py @@ -166,7 +166,9 @@ 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.arith.misc import binomial +from sage.arith.misc import rising_factorial +from sage.arith.misc import factorial from sage.symbolic.constants import pi from sage.symbolic.function import BuiltinFunction from sage.symbolic.ring import SR diff --git a/src/sage/functions/piecewise.py b/src/sage/functions/piecewise.py index 10d82e3709a..dacd79f2326 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 + from sage.functions.log import exp + from sage.symbolic.assumptions import forget 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 sin + from sage.functions.trig import cos + 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/interfaces/axiom.py b/src/sage/interfaces/axiom.py index 160fbd84c54..7e741b85f7e 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 Z as 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 dc2ce71f26a..d3da7d796f2 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/genus2reduction.py b/src/sage/interfaces/genus2reduction.py index 56ae04b2357..ea3380196c6 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 Z as ZZ +from sage.rings.rational_field import Q as 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/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 cb93395125e..2305501a30d 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 Q as 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/symbolic/pynac_impl.pxi b/src/sage/symbolic/pynac_impl.pxi index 0af6aae7fe1..53e4884a91a 100644 --- a/src/sage/symbolic/pynac_impl.pxi +++ b/src/sage/symbolic/pynac_impl.pxi @@ -45,7 +45,11 @@ 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.arith.misc import GCD as gcd +from sage.arith.functions import lcm +from sage.arith.misc import is_prime +from sage.arith.misc import factorial +from sage.arith.misc import bernoulli from sage.structure.coerce cimport coercion_model from sage.structure.element cimport Element, parent @@ -2391,7 +2395,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/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) - + From 2870ffb3f904535c305a7b34a34b85d49c62ff97 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 29 Jan 2023 18:54:53 -0800 Subject: [PATCH 2/4] src/sage/interfaces/sage0.py: Hide a legitimate .all import from relint --- src/sage/interfaces/sage0.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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', From 70e5c66306eedd1ca0a6f45f6ba277916eb64743 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 29 Jan 2023 18:59:42 -0800 Subject: [PATCH 3/4] sage.{functions,interfaces,symbolic}: Consolidate imports from the same module --- src/sage/functions/hypergeometric.py | 27 +++++++++++++-------------- src/sage/functions/piecewise.py | 8 ++++---- src/sage/symbolic/pynac_impl.pxi | 18 +++++------------- 3 files changed, 22 insertions(+), 31 deletions(-) diff --git a/src/sage/functions/hypergeometric.py b/src/sage/functions/hypergeometric.py index 47bff45ecdd..04ea78910b0 100644 --- a/src/sage/functions/hypergeometric.py +++ b/src/sage/functions/hypergeometric.py @@ -162,29 +162,28 @@ # 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.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.misc import binomial -from sage.arith.misc import rising_factorial -from sage.arith.misc import 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 .error import erf from .gamma import gamma -from .other import sqrt, real_part -from .log import exp, log from .hyperbolic import cosh, sinh -from .error import erf +from .log import exp, log +from .other import sqrt, real_part def rational_param_as_tuple(x): diff --git a/src/sage/functions/piecewise.py b/src/sage/functions/piecewise.py index dacd79f2326..f73b016555c 100644 --- a/src/sage/functions/piecewise.py +++ b/src/sage/functions/piecewise.py @@ -1089,9 +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.symbolic.assumptions import assume + from sage.symbolic.assumptions import assume, forget from sage.functions.log import exp - from sage.symbolic.assumptions import forget + x = SR.var(x) s = SR.var(s) assume(s>0) @@ -1363,9 +1363,9 @@ def fourier_series_partial_sum(self, parameters, variable, N, """ from sage.symbolic.constants import pi - from sage.functions.trig import sin - from sage.functions.trig import cos + 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/symbolic/pynac_impl.pxi b/src/sage/symbolic/pynac_impl.pxi index 53e4884a91a..c89c5f81539 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,19 +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.misc import GCD as gcd -from sage.arith.functions import lcm -from sage.arith.misc import is_prime -from sage.arith.misc import factorial -from sage.arith.misc import 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 @@ -62,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 From 7305a7c18999526cb4f1238dec15cf7589225ee6 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 29 Jan 2023 18:59:53 -0800 Subject: [PATCH 4/4] git grep -l -E ' (Q as QQ|Z as ZZ)' | xargs sed -i.bak 's/ Q as QQ/ QQ/;s/ Z as ZZ/ ZZ/;' --- src/sage/interfaces/axiom.py | 2 +- src/sage/interfaces/genus2reduction.py | 4 ++-- src/sage/interfaces/singular.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sage/interfaces/axiom.py b/src/sage/interfaces/axiom.py index 7e741b85f7e..cd016fa1866 100644 --- a/src/sage/interfaces/axiom.py +++ b/src/sage/interfaces/axiom.py @@ -837,7 +837,7 @@ def _sage_(self): if type == "Float": from sage.rings.real_mpfr import RealField - from sage.rings.integer_ring import Z as ZZ + 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/genus2reduction.py b/src/sage/interfaces/genus2reduction.py index ea3380196c6..69d0513ca94 100644 --- a/src/sage/interfaces/genus2reduction.py +++ b/src/sage/interfaces/genus2reduction.py @@ -34,8 +34,8 @@ # **************************************************************************** from sage.structure.sage_object import SageObject -from sage.rings.integer_ring import Z as ZZ -from sage.rings.rational_field import Q as QQ +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 diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py index 2305501a30d..75629e5ced4 100644 --- a/src/sage/interfaces/singular.py +++ b/src/sage/interfaces/singular.py @@ -1656,7 +1656,7 @@ def sage_global_ring(self): br = ZZ is_extension = False elif charstr[0] in ['0', 'QQ']: - from sage.rings.rational_field import Q as QQ + from sage.rings.rational_field import QQ br = QQ elif charstr[0].startswith('Float'): from sage.rings.real_mpfr import RealField