from sage.misc.lazy_import import lazy_import

from .misc import (algdep, bernoulli, is_prime, is_prime_power,
    is_pseudoprime, is_pseudoprime_power,
    prime_powers, primes_first_n, eratosthenes, primes,
    next_prime_power, next_probable_prime, next_prime,
    previous_prime, previous_prime_power, random_prime,
    divisors, sigma, gcd, GCD, xlcm, xgcd, xkcd,
    inverse_mod, get_gcd, get_inverse_mod, power_mod,
    rational_reconstruction, mqrr_rational_reconstruction,
    trial_division, factor, prime_divisors, odd_part, prime_to_m_part,
    is_square, is_squarefree, euler_phi, crt, CRT, CRT_list, CRT_basis,
    CRT_vectors, multinomial, multinomial_coefficients,
    binomial, factorial, kronecker_symbol, kronecker, legendre_symbol,
    primitive_root, nth_prime, quadratic_residues, moebius,
    continuant, number_of_divisors, hilbert_symbol, hilbert_conductor,
    hilbert_conductor_inverse, falling_factorial, rising_factorial,
    integer_ceil, integer_floor,
    two_squares, three_squares, four_squares, sum_of_k_squares,
    subfactorial, is_power_of_two, differences,
    sort_complex_numbers_for_display,
    fundamental_discriminant, squarefree_divisors,
    radical, binomial_coefficients, jacobi_symbol,
    dedekind_sum,
    prime_factors, prime_range, valuation)

lazy_import('sage.arith.misc', ('Sigma', 'Moebius', 'Euler_Phi'), deprecation=30322)

from .functions import lcm
LCM = lcm

from .srange import xsrange, srange, ellipsis_iter, ellipsis_range
sxrange = xsrange

σ = sigma
