"""
Rings
"""
from ring import Ring, is_Ring
from commutative_ring import CommutativeRing, is_CommutativeRing
from integral_domain import IntegralDomain, is_IntegralDomain
from dedekind_domain import DedekindDomain, is_DedekindDomain
from principal_ideal_domain import PrincipalIdealDomain, is_PrincipalIdealDomain
from euclidean_domain import EuclideanDomain, is_EuclideanDomain
from field import Field, is_Field, is_PrimeField
from commutative_algebra_element import CommutativeAlgebraElement, is_CommutativeAlgebraElement
from ring_element import RingElement, is_RingElement
from commutative_ring_element import CommutativeRingElement, is_CommutativeRingElement
from integral_domain_element import IntegralDomainElement, is_IntegralDomainElement
from dedekind_domain_element import DedekindDomainElement, is_DedekindDomainElement
from principal_ideal_domain_element import PrincipalIdealDomainElement, is_PrincipalIdealDomainElement
from euclidean_domain_element import EuclideanDomainElement, is_EuclideanDomainElement
from field_element import FieldElement, is_FieldElement
from ideal import Ideal, is_Ideal
from quotient_ring import QuotientRing
from infinity import infinity, Infinity, is_Infinite, InfinityRing, unsigned_infinity, UnsignedInfinityRing
from integer_ring import IntegerRing, ZZ, crt_basis
from integer import Integer, is_Integer
from rational_field import RationalField, QQ, is_RationalField
from rational import Rational
Rationals = RationalField
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing, Zmod, is_IntegerModRing
from sage.rings.finite_rings.integer_mod import IntegerMod, Mod, mod, is_IntegerMod
Integers = IntegerModRing
from finite_rings.all import *
from number_field.all import *
from function_field.all import *
from padics.all import *
from padics.padic_printing import _printer_defaults as padic_printing
from semirings.all import *
from real_mpfr import (RealField, is_RealField, is_RealNumber, RR,
create_RealNumber as RealNumber)
Reals = RealField
from real_double import RealDoubleField, RDF, RealDoubleElement, is_RealDoubleElement
from real_lazy import RealLazyField, RLF, ComplexLazyField, CLF
from polynomial.all import *
from qqbar import (AlgebraicRealField, is_AlgebraicRealField, AA,
AlgebraicReal, is_AlgebraicReal,
AlgebraicField, is_AlgebraicField, QQbar,
AlgebraicNumber, is_AlgebraicNumber,
number_field_elements_from_algebraics)
from real_mpfi import (RealIntervalField, is_RealIntervalField,
is_RealIntervalFieldElement, RIF,
RealInterval)
from complex_field import ComplexField, is_ComplexField
from complex_number import (is_ComplexNumber, create_ComplexNumber as ComplexNumber)
Complexes = ComplexField
from complex_interval_field import ComplexIntervalField, is_ComplexIntervalField
from complex_interval import (is_ComplexIntervalFieldElement, create_ComplexIntervalFieldElement as ComplexIntervalFieldElement)
from complex_double import ComplexDoubleField, ComplexDoubleElement, CDF, is_ComplexDoubleElement
from power_series_ring import PowerSeriesRing, is_PowerSeriesRing
from power_series_ring_element import PowerSeries, is_PowerSeries
from laurent_series_ring import LaurentSeriesRing, is_LaurentSeriesRing
from laurent_series_ring_element import LaurentSeries, is_LaurentSeries
from pari_ring import PariRing, Pari
from big_oh import O
from fraction_field import FractionField, is_FractionField
Frac = FractionField
from fraction_field_element import is_FractionFieldElement
from contfrac import continued_fraction, CFF, ContinuedFractionField
from arith import *
from fast_arith import prime_range
from bernoulli_mod_p import bernoulli_mod_p, bernoulli_mod_p_single
from morphism import is_RingHomomorphism
from homset import is_RingHomset
from monomials import monomials
CC = ComplexField()
CIF = ComplexIntervalField()
I = CC.gen()
from residue_field import ResidueField
from misc import composite_field
import tests