Skip to content

Commit

Permalink
sagemathgh-39265: Replace pari.all imports by direct imports from p…
Browse files Browse the repository at this point in the history
…ari and cypari

    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->



### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#39265
Reported by: Tobias Diez
Reviewer(s):
  • Loading branch information
Release Manager committed Jan 29, 2025
2 parents 6225a67 + e846307 commit ac797c3
Show file tree
Hide file tree
Showing 80 changed files with 122 additions and 101 deletions.
20 changes: 10 additions & 10 deletions src/sage/arith/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ def norm(v):
raise NotImplementedError("proof and height bound only implemented for real and complex numbers")

else:
from sage.libs.pari.all import pari
from sage.libs.pari import pari
y = pari(z)
f = y.algdep(degree)

Expand Down Expand Up @@ -378,7 +378,7 @@ def bernoulli(n, algorithm='default', num_threads=1):
from sage.libs.flint.arith_sage import bernoulli_number as flint_bernoulli
return flint_bernoulli(n)
elif algorithm == 'pari' or algorithm == 'gp':
from sage.libs.pari.all import pari
from sage.libs.pari import pari
x = pari(n).bernfrac() # Use the PARI C library
return Rational(x)
elif algorithm == 'gap':
Expand Down Expand Up @@ -470,7 +470,7 @@ def factorial(n, algorithm='gmp'):
if algorithm == 'gmp':
return ZZ(n).factorial()
elif algorithm == 'pari':
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return pari.factorial(n)
else:
raise ValueError('unknown algorithm')
Expand Down Expand Up @@ -3165,7 +3165,7 @@ def __call__(self, n):
return ZZ.zero()
if n <= 2:
return ZZ.one()
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return ZZ(pari(n).eulerphi())

def plot(self, xmin=1, xmax=50, pointsize=30, rgbcolor=(0, 0, 1),
Expand Down Expand Up @@ -4426,7 +4426,7 @@ def primitive_root(n, check=True):
sage: primitive_root(mpz(-46)) # needs sage.libs.pari
5
"""
from sage.libs.pari.all import pari
from sage.libs.pari import pari
if not check:
return ZZ(pari(n).znprimroot())
n = ZZ(n).abs()
Expand Down Expand Up @@ -4483,7 +4483,7 @@ def nth_prime(n):
"""
if n <= 0:
raise ValueError("nth prime meaningless for nonpositive n (=%s)" % n)
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return ZZ(pari.prime(n))


Expand Down Expand Up @@ -4601,7 +4601,7 @@ def __call__(self, n):
# Use fast PARI algorithm
if n == 0:
return ZZ.zero()
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return ZZ(pari(n).moebius())

def __repr__(self):
Expand Down Expand Up @@ -4686,7 +4686,7 @@ def range(self, start, stop=None, step=None):
return self.range(start, 0, step) + [ZZ.zero()] +\
self.range(step, stop, step)

from sage.libs.pari.all import pari
from sage.libs.pari import pari

if step == 1:
v = pari('vector(%s, i, moebius(i-1+%s))' % (stop - start, start))
Expand Down Expand Up @@ -4816,7 +4816,7 @@ def number_of_divisors(n):
m = ZZ(n)
if m.is_zero():
raise ValueError("input must be nonzero")
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return ZZ(pari(m).numdiv())


Expand Down Expand Up @@ -4889,7 +4889,7 @@ def hilbert_symbol(a, b, p, algorithm='pari'):
if algorithm == "pari":
if p == -1:
p = 0
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return ZZ(pari(a).hilbert(b, p))

elif algorithm == 'direct':
Expand Down
2 changes: 1 addition & 1 deletion src/sage/combinat/combinat.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@
from sage.structure.element import Element

lazy_import('sage.interfaces.maxima_lib', 'maxima')
lazy_import('sage.libs.pari.all', 'pari')
lazy_import('sage.libs.pari', 'pari')
lazy_import('sage.misc.prandom', 'randint')


Expand Down
2 changes: 1 addition & 1 deletion src/sage/combinat/partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@
lazy_import('sage.combinat.skew_partition', 'SkewPartition')
lazy_import('sage.combinat.partition_tuple', 'PartitionTuple')
lazy_import('sage.combinat.root_system.weyl_group', 'WeylGroup')
lazy_import('sage.libs.pari.all', 'pari')
lazy_import('sage.libs.pari', 'pari')
lazy_import('sage.groups.perm_gps.permgroup', 'PermutationGroup')
lazy_import("sage.symbolic.ring", "var")

Expand Down
2 changes: 1 addition & 1 deletion src/sage/combinat/partition_tuple.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ class of modules for the algebras, which are generalisations of the Specht
from sage.structure.unique_representation import UniqueRepresentation

lazy_import('sage.groups.perm_gps.permgroup', 'PermutationGroup')
lazy_import('sage.libs.pari.all', 'pari')
lazy_import('sage.libs.pari', 'pari')

# -------------------------------------------------
# Partition tuple - element class
Expand Down
2 changes: 1 addition & 1 deletion src/sage/combinat/sloane_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -6796,7 +6796,7 @@ def _powerful_numbers_in_range(self, n, m):

n = max(n, 4)
# Use PARI directly -- much faster.
from sage.libs.pari.all import pari
from sage.libs.pari import pari
L = pari('v=listcreate(); for(i=%s,%s,if(vecmin(factor(i)[,2])>1,listput(v,i))); v' % (n, m))
return [ZZ(x) for x in L] # not very many, so not much overhead

Expand Down
4 changes: 2 additions & 2 deletions src/sage/databases/cremona.py
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,7 @@ def cremona_to_lmfdb(cremona_label, CDB=None):
sage: for label in ['438.c2','306.b','462.f3']:
....: assert(cremona_to_lmfdb(lmfdb_to_cremona(label)) == label)
"""
from sage.libs.pari.all import pari
from sage.libs.pari import pari
m = cremona_label_regex.match(cremona_label)
if m is None:
raise ValueError("Invalid Cremona label")
Expand Down Expand Up @@ -609,7 +609,7 @@ def lmfdb_to_cremona(lmfdb_label, CDB=None):
sage: cremona_to_lmfdb('990j1')
'990.h3'
"""
from sage.libs.pari.all import pari
from sage.libs.pari import pari
m = lmfdb_label_regex.match(lmfdb_label)
if m is None:
raise ValueError("Invalid LMFDB label")
Expand Down
2 changes: 1 addition & 1 deletion src/sage/dynamics/arithmetic_dynamics/projective_ds.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ class initialization directly.
lazy_import('sage.rings.padics.factory', 'Qp')
lazy_import('sage.rings.qqbar', 'number_field_elements_from_algebraics')

from sage.libs.pari.all import PariError
from cypari2.handle_error import PariError


class DynamicalSystem_projective(SchemeMorphism_polynomial_projective_space,
Expand Down
2 changes: 1 addition & 1 deletion src/sage/functions/special.py
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,7 @@ def elliptic_j(z, prec=53):
z = CC(z)
except ValueError:
raise ValueError("elliptic_j only defined for complex arguments.")
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return CC(pari(z).ellj())


Expand Down
2 changes: 1 addition & 1 deletion src/sage/groups/perm_gps/constructor.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
lazy_import('sage.combinat.permutation', ['Permutation', 'from_cycles'])

try:
from sage.libs.pari.all import pari_gen
from cypari2.gen import Gen as pari_gen
except ImportError:
pari_gen = ()

Expand Down
2 changes: 1 addition & 1 deletion src/sage/interfaces/genus2reduction.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
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
from sage.libs.pari import pari

roman_numeral = ["", "I", "II", "III", "IV", "V", "VI", "VII"]

Expand Down
2 changes: 1 addition & 1 deletion src/sage/interfaces/gp.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@

from sage.env import DOT_SAGE
from sage.interfaces.tab_completion import ExtraTabCompletion
from sage.libs.pari.all import pari
from sage.libs.pari import pari
from sage.misc.instancedoc import instancedoc
from sage.misc.lazy_import import lazy_import
from sage.misc.verbose import verbose
Expand Down
6 changes: 4 additions & 2 deletions src/sage/libs/pari/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,10 @@
3.605463601432652085915820564207726774810268996598024745444380641430 # 32-bit
"""

from cypari2 import Pari

from sage.ext.memory import init_memory_functions


def _get_pari_instance():
"""
Expand All @@ -180,14 +184,12 @@ def _get_pari_instance():
sage: pari # indirect doctest
Interface to the PARI C library
"""
from cypari2 import Pari
stack_initial = 1024 * 1024
stack_max = 1024 * stack_initial
P = Pari(stack_initial, stack_max)

# pari_init_opts() overrides MPIR's memory allocation functions,
# so we need to reset them.
from sage.ext.memory import init_memory_functions
init_memory_functions()

# PARI sets debugmem=1 by default but we do not want those warning
Expand Down
3 changes: 2 additions & 1 deletion src/sage/libs/pari/all.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from cypari2.gen import Gen as pari_gen
from cypari2 import PariError
from cypari2.gen import Gen as pari_gen

from sage.libs.pari import pari
2 changes: 1 addition & 1 deletion src/sage/matrix/matrix1.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ cdef class Matrix(Matrix0):
[1.000000000, 2.000000000; 3.000000000, 1.000000000] # 32-bit
[1.00000000000000, 2.00000000000000; 3.00000000000000, 1.00000000000000] # 64-bit
"""
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return pari.matrix(self._nrows, self._ncols, self._list())

def _gap_init_(self):
Expand Down
2 changes: 1 addition & 1 deletion src/sage/matrix/matrix_rational_dense.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ from sage.misc.verbose import verbose

# ########################################################
# PARI C library
from sage.libs.pari.all import PariError
from cypari2.handle_error import PariError
from sage.libs.pari.convert_gmp cimport INTFRAC_to_mpq
from sage.libs.pari.convert_flint cimport rational_matrix, _new_GEN_from_fmpq_mat_t
from cypari2.stack cimport clear_stack
Expand Down
2 changes: 1 addition & 1 deletion src/sage/misc/randstate.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -790,7 +790,7 @@ cdef class randstate:
"""
global _pari_seed_randstate
if _pari_seed_randstate is not self:
from sage.libs.pari.all import pari
from sage.libs.pari import pari

if self._pari_saved_seed is not None:
seed = self._pari_saved_seed
Expand Down
2 changes: 1 addition & 1 deletion src/sage/modular/btquotients/btquotient.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@

lazy_import('sage.algebras.quatalg.quaternion_algebra', 'QuaternionAlgebra')
lazy_import('sage.graphs.graph', 'Graph')
lazy_import('sage.libs.pari.all', 'pari')
lazy_import('sage.libs.pari', 'pari')
lazy_import('sage.plot.colors', 'rainbow')
lazy_import('sage.rings.number_field.number_field', 'NumberField')
lazy_import('sage.rings.padics.factory', ['Qp', 'Zp'])
Expand Down
3 changes: 2 additions & 1 deletion src/sage/modular/cusps.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@
from sage.structure.richcmp import richcmp

try:
from sage.libs.pari.all import pari, pari_gen
from sage.libs.pari import pari
from cypari2.gen import Gen as pari_gen
except ImportError:
pari_gen = ()

Expand Down
2 changes: 1 addition & 1 deletion src/sage/modular/multiple_zeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@
from sage.rings.rational_field import QQ
from sage.sets.positive_integers import PositiveIntegers

lazy_import('sage.libs.pari.all', 'pari')
lazy_import('sage.libs.pari', 'pari')


# multiplicative generators for weight <= 17
Expand Down
2 changes: 1 addition & 1 deletion src/sage/modular/ssmod/ssmod.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
from sage.structure.richcmp import richcmp_method, richcmp

lazy_import('sage.libs.pari.all', 'pari')
lazy_import('sage.libs.pari', 'pari')


ZZy = PolynomialRing(ZZ, 'y')
Expand Down
2 changes: 1 addition & 1 deletion src/sage/modules/free_module_element.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -1055,7 +1055,7 @@ cdef class FreeModuleElement(Vector): # abstract base class
sage: pari(L) # needs sage.libs.pari
[[0, 1, 2, 3], [0, 1, 8, 27], [0, 1, 32, 243]]
"""
from sage.libs.pari.all import pari
from sage.libs.pari import pari
return pari(self.list())

def _pari_init_(self):
Expand Down
3 changes: 2 additions & 1 deletion src/sage/quadratic_forms/binary_qf.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@


try:
from sage.libs.pari.all import pari_gen, pari
from sage.libs.pari import pari
from cypari2.gen import Gen as pari_gen
except ImportError:
pari_gen = ()

Expand Down
2 changes: 1 addition & 1 deletion src/sage/quadratic_forms/quadratic_form__automorphisms.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ def short_vector_list_up_to_length(self, len_bound, up_to_sign_flag=False):
raise ValueError("Quadratic form must be positive definite "
"in order to enumerate short vectors")

from sage.libs.pari.all import pari
from sage.libs.pari import pari

if len_bound <= 0:
return []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@ def representation_number_list(self, B):
sage: Q.representation_number_list(10) # needs sage.libs.pari
[1, 16, 112, 448, 1136, 2016, 3136, 5504, 9328, 12112]
"""
from sage.libs.pari.all import pari
from sage.libs.pari import pari

ans = pari(1).concat(self.__pari__().qfrep(B - 1, 1) * 2)
return ans.sage()
Expand Down
4 changes: 3 additions & 1 deletion src/sage/rings/complex_mpc.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ from sage.structure.richcmp cimport rich_to_bool
from sage.categories.map cimport Map

try:
from sage.libs.pari.all import pari, pari_gen, PariError
from sage.libs.pari import pari
from cypari2.handle_error import PariError
from cypari2.gen import Gen as pari_gen
except ImportError:
pari_gen = PariError = ()

Expand Down
11 changes: 6 additions & 5 deletions src/sage/rings/complex_mpfr.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,10 @@ cimport gmpy2
gmpy2.import_gmpy2()

try:
from sage.libs.pari.all import pari_gen
from cypari2.gen import Gen as pari_gen
from cypari2.handle_error import PariError
except ImportError:
pari_gen = ()
pari_gen = PariError = ()

# Some objects that are not imported at startup in order to break
# circular imports
Expand Down Expand Up @@ -1434,7 +1435,7 @@ cdef class ComplexNumber(sage.structure.element.FieldElement):
"""
if self.is_real():
return self.real().__pari__()
return sage.libs.pari.all.pari.complex(self.real() or 0, self.imag())
return sage.libs.pari.pari.complex(self.real() or 0, self.imag())

def __mpc__(self):
"""
Expand Down Expand Up @@ -2401,7 +2402,7 @@ cdef class ComplexNumber(sage.structure.element.FieldElement):
"""
try:
return self._parent(self.__pari__().eta(not omit_frac))
except sage.libs.pari.all.PariError:
except PariError:
raise ValueError("value must be in the upper half plane")

def sin(self):
Expand Down Expand Up @@ -2878,7 +2879,7 @@ cdef class ComplexNumber(sage.structure.element.FieldElement):
"""
try:
return self._parent(self.__pari__().gamma())
except sage.libs.pari.all.PariError:
except PariError:
from sage.rings.infinity import UnsignedInfinityRing
return UnsignedInfinityRing.gen()

Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/factorint_pari.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ AUTHORS:
# http://www.gnu.org/licenses/
#*****************************************************************************

from sage.libs.pari.all import pari
from sage.libs.pari import pari
from sage.rings.integer cimport Integer


Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/finite_rings/element_ntl_gf2e.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ from sage.structure.element cimport Vector

from sage.rings.finite_rings.finite_field_base cimport FiniteField

from sage.libs.pari.all import pari
from sage.libs.pari import pari
from cypari2.gen cimport Gen
from cypari2.stack cimport clear_stack

Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/finite_rings/finite_field_givaro.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
from sage.rings.finite_rings.finite_field_base import FiniteField
from sage.rings.integer import Integer
from sage.rings.finite_rings.element_givaro import Cache_givaro
from sage.libs.pari.all import pari
from sage.libs.pari import pari


class FiniteField_givaro(FiniteField):
Expand Down
Loading

0 comments on commit ac797c3

Please sign in to comment.