Skip to content

Commit

Permalink
Trac #34192: Remove imports from sage.rings.all in sage.calculus, fun…
Browse files Browse the repository at this point in the history
…ctions, symbolic

URL: https://trac.sagemath.org/34192
Reported by: mkoeppe
Ticket author(s): Matthias Koeppe
Reviewer(s): Kwankyu Lee
  • Loading branch information
Release Manager committed Aug 30, 2022
2 parents 9cafd35 + 9d3577e commit 735daa4
Show file tree
Hide file tree
Showing 16 changed files with 48 additions and 30 deletions.
2 changes: 1 addition & 1 deletion src/sage/calculus/calculus.py
Original file line number Diff line number Diff line change
Expand Up @@ -1140,7 +1140,7 @@ def minpoly(ex, var='x', algorithm=None, bits=None, degree=None, epsilon=0):
raise ValueError("Could not find minimal polynomial (%s bits, degree %s)." % (bits, degree))

if algorithm is None or algorithm == 'algebraic':
from sage.rings.all import QQbar
from sage.rings.qqbar import QQbar
return QQ[var](QQbar(ex).minpoly())

raise ValueError("Unknown algorithm: %s" % algorithm)
Expand Down
2 changes: 1 addition & 1 deletion src/sage/calculus/riemann.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ from sage.misc.decorators import options

from sage.ext.fast_callable import fast_callable

from sage.rings.all import CDF
from sage.rings.complex_double import CDF

from sage.arith.srange import srange

Expand Down
4 changes: 3 additions & 1 deletion src/sage/functions/bessel.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,9 @@
from sage.functions.trig import sin, cos
from sage.libs.mpmath import utils as mpmath_utils
from sage.misc.latex import latex
from sage.rings.all import Integer, ZZ, QQ
from sage.rings.integer import Integer
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.structure.element import get_coercion_model
from sage.symbolic.constants import pi
from sage.symbolic.ring import SR
Expand Down
3 changes: 2 additions & 1 deletion src/sage/functions/gamma.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
from sage.symbolic.function import GinacFunction, BuiltinFunction
from sage.symbolic.expression import register_symbol, symbol_table
from sage.structure.all import parent as s_parent
from sage.rings.all import Rational, ComplexField
from sage.rings.complex_mpfr import ComplexField
from sage.rings.rational import Rational
from sage.functions.exp_integral import Ei
from sage.libs.mpmath import utils as mpmath_utils
from .log import exp
Expand Down
3 changes: 2 additions & 1 deletion src/sage/functions/generalized.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@
##############################################################################

from sage.symbolic.function import (BuiltinFunction, GinacFunction)
from sage.rings.all import ComplexIntervalField, ZZ
from sage.rings.complex_interval_field import ComplexIntervalField
from sage.rings.integer_ring import ZZ


class FunctionDiracDelta(BuiltinFunction):
Expand Down
2 changes: 1 addition & 1 deletion src/sage/functions/orthogonal_polys.py
Original file line number Diff line number Diff line change
Expand Up @@ -2565,7 +2565,7 @@ def _eval_special_values_(self, n, a, x):
if a == 0:
return laguerre(n, x)
if x == 0:
from sage.arith.all import binomial
from sage.arith.misc import binomial
return binomial(n+a, n)

def _pol_gen_laguerre(self, n, a, x):
Expand Down
4 changes: 2 additions & 2 deletions src/sage/functions/other.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

from sage.functions.trig import arctan2

from sage.arith.all import binomial as arith_binomial
from sage.arith.misc import binomial as arith_binomial

from sage.misc.functional import sqrt

Expand Down Expand Up @@ -220,7 +220,7 @@ def _eval_floor_ceil(self, x, method, bits=0, **kwds):
# The strategy is to first reduce the absolute diameter of the
# interval until its size is at most 10^(-6). Then we check for
# (B) by simplifying the expression.
from sage.rings.all import RealIntervalField
from sage.rings.real_mpfi import RealIntervalField

# Might it be needed to simplify x? This only applies for
# elements of SR (or its subrings)
Expand Down
2 changes: 1 addition & 1 deletion src/sage/functions/prime_pi.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ cdef class PrimePi(BuiltinFunction):
return plot_step_function([(xmin,0),(xmax,0)], **kwds)
y = self(xmin)
v = [(xmin, y)]
from sage.rings.all import prime_range
from sage.rings.fast_arith import prime_range
for p in prime_range(xmin+1, xmax+1, py_ints=True):
y += 1
v.append((p,y))
Expand Down
2 changes: 1 addition & 1 deletion src/sage/symbolic/callable.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ def __init__(self, arguments):
CallableSymbolicExpressionFunctor(x, y)
"""
self._arguments = arguments
from sage.categories.all import Rings
from sage.categories.rings import Rings
self.rank = 3
ConstructionFunctor.__init__(self, Rings(), Rings())

Expand Down
17 changes: 12 additions & 5 deletions src/sage/symbolic/expression.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,8 @@ More sanity tests::
from cysignals.signals cimport sig_on, sig_off
from sage.ext.cplusplus cimport ccrepr, ccreadstr

from copy import copy

import operator
import sage.rings.integer
import sage.rings.rational
Expand Down Expand Up @@ -2548,8 +2550,9 @@ cdef class Expression(Expression_abc):
sage: SR(1.2).is_algebraic()
False
"""
from sage.rings.qqbar import QQbar
try:
ex = sage.rings.all.QQbar(self)
ex = QQbar(self)
except (TypeError, ValueError, NotImplementedError):
return False
return True
Expand Down Expand Up @@ -7798,7 +7801,7 @@ cdef class Expression(Expression_abc):
if len(v) != 1:
raise ValueError("self must be a polynomial in one variable but it is in the variables %s" % tuple([v]))
f = self.polynomial(base_ring)
from sage.rings.all import PowerSeriesRing
from sage.rings.power_series_ring import PowerSeriesRing
R = PowerSeriesRing(base_ring, names=f.parent().variable_names())
return R(f, f.degree()+1)

Expand Down Expand Up @@ -11792,13 +11795,14 @@ cdef class Expression(Expression_abc):
from sage.symbolic.operators import add_vararg as opadd, \
mul_vararg as opmul
from sage.misc.misc_c import prod
from sage.symbolic.ring import SR

def treat_term(op, term, args):
l = sage.all.copy(args)
l = copy(args)
l.insert(0, term)
return op(*l)

if self.parent() is not sage.all.SR:
if self.parent() is not SR:
return self

op = self.operator()
Expand Down Expand Up @@ -13731,7 +13735,10 @@ cpdef new_Expression(parent, x):
from sage.misc.misc_c import prod
return prod([SR(p)**e for p,e in x], SR(x.unit()))
elif x in Sets():
from sage.rings.all import NN, ZZ, QQ, AA
from sage.rings.integer_ring import ZZ
from sage.rings.qqbar import AA
from sage.rings.rational_field import QQ
from sage.rings.semirings.non_negative_integer_semiring import NN
from sage.sets.real_set import RealSet
if (x.is_finite() or x in (NN, ZZ, QQ, AA)
or isinstance(x, RealSet)):
Expand Down
8 changes: 5 additions & 3 deletions src/sage/symbolic/expression_conversions.py
Original file line number Diff line number Diff line change
Expand Up @@ -1200,7 +1200,7 @@ def arithmetic(self, ex, operator):
# root is selected).
try:
if operator is _operator.pow:
from sage.rings.all import Rational
from sage.rings.rational import Rational
base, expt = ex.operands()
base = self.field(base)
expt = Rational(expt)
Expand Down Expand Up @@ -1636,7 +1636,7 @@ def __init__(self, ex, base_ring=None, ring=None):
super().__init__(ex, base_ring, ring)

if ring is None and base_ring is not None:
from sage.rings.all import LaurentPolynomialRing
from sage.rings.polynomial.laurent_polynomial_ring import LaurentPolynomialRing
self.ring = LaurentPolynomialRing(self.base_ring,
names=self.varnames)

Expand Down Expand Up @@ -1945,7 +1945,9 @@ def arithmetic(self, ex, operator):

operands = ex.operands()
if operator is _operator.pow:
from sage.all import Integer, Rational
from sage.rings.integer import Integer
from sage.rings.rational import Rational

base, expt = operands

if expt == Rational(((1,2))):
Expand Down
4 changes: 3 additions & 1 deletion src/sage/symbolic/function.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -1060,7 +1060,9 @@ cdef class BuiltinFunction(Function):
return res

p = res.parent()
from sage.rings.all import ZZ, RDF, CDF
from sage.rings.complex_double import CDF
from sage.rings.integer_ring import ZZ
from sage.rings.real_double import RDF
if ZZ.has_coerce_map_from(p):
return int(res)
elif RDF.has_coerce_map_from(p):
Expand Down
9 changes: 6 additions & 3 deletions src/sage/symbolic/relation.py
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@ def string_to_list_of_solutions(s):
sage: sage.symbolic.relation.string_to_list_of_solutions(s)
[x == -1/2*a - 1/2*sqrt(a^2 - 4*b), x == -1/2*a + 1/2*sqrt(a^2 - 4*b)]
"""
from sage.categories.all import Objects
from sage.categories.objects import Objects
from sage.structure.sequence import Sequence
from sage.calculus.calculus import symbolic_expression_from_maxima_string
v = symbolic_expression_from_maxima_string(s, equals_sub=True)
Expand Down Expand Up @@ -1570,7 +1570,9 @@ def solve_mod(eqns, modulus, solution_dict=False):
"""
from sage.rings.all import Integer, Integers, crt_basis
from sage.rings.finite_rings.integer_mod_ring import Integers
from sage.rings.integer import Integer
from sage.rings.integer_ring import crt_basis
from sage.structure.element import Expression
from sage.misc.mrange import cartesian_product_iterator
from sage.modules.free_module_element import vector
Expand Down Expand Up @@ -1686,7 +1688,8 @@ def _solve_mod_prime_power(eqns, p, m, vars):
13241296179, 19473547571, 2263241296179]
"""
from sage.rings.all import Integers, PolynomialRing
from sage.rings.finite_rings.integer_mod_ring import Integers
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.modules.free_module_element import vector
from sage.misc.mrange import cartesian_product_iterator

Expand Down
10 changes: 4 additions & 6 deletions src/sage/symbolic/ring.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -214,11 +214,9 @@ cdef class SymbolicRing(sage.rings.abc.SymbolicRing):
from sage.rings.polynomial.polynomial_ring import is_PolynomialRing
from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing
from sage.rings.polynomial.laurent_polynomial_ring import is_LaurentPolynomialRing

from sage.rings.all import (ComplexField,
RLF, CLF,
InfinityRing,
UnsignedInfinityRing)
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.interfaces.maxima import Maxima
Expand Down Expand Up @@ -1225,7 +1223,7 @@ cdef class NumpyToSRMorphism(Morphism):
from sage.rings.real_double import RDF
self._intermediate_ring = RDF
elif issubclass(numpy_type, numpy.complexfloating):
from sage.rings.all import CDF
from sage.rings.complex_double import CDF
self._intermediate_ring = CDF
else:
raise TypeError("{} is not a numpy number type".format(numpy_type))
Expand Down
2 changes: 1 addition & 1 deletion src/sage/symbolic/series_impl.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,6 @@ cdef class SymbolicSeries(Expression):
sage: g.parent()
Power Series Ring in x over Symbolic Ring
"""
from sage.rings.all import PowerSeriesRing
from sage.rings.power_series_ring import PowerSeriesRing
R = PowerSeriesRing(base_ring, names=str(self.default_variable()))
return R(self.list(), self.degree(self.default_variable()))
4 changes: 3 additions & 1 deletion src/sage/symbolic/subring.py
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,9 @@ def _coerce_map_from_(self, P):
# Workaround; can be deleted once #19231 is fixed
return False

from sage.rings.all import RLF, CLF, AA, QQbar, InfinityRing
from sage.rings.infinity import InfinityRing
from sage.rings.qqbar import AA, QQbar
from sage.rings.real_lazy import RLF, CLF

if isinstance(P, type):
return SR._coerce_map_from_(P)
Expand Down

0 comments on commit 735daa4

Please sign in to comment.