Skip to content

Commit f8b3a91

Browse files
author
Release Manager
committed
gh-36109: Prepare for updating Cython to 3.0.0 <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes #1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes #12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> Here are the changes needed to get Sage compiled with Cython 3. This PR contains changes that do not break compatibility with old Cython, so they can be merged without actually upgrading Cython. Part of #29863. ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - #12345: short description why this is a dependency - #34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: #36109 Reported by: Yutao Yuan Reviewer(s): Gonzalo Tornaría, Yutao Yuan
2 parents 22446cb + 4b85613 commit f8b3a91

File tree

127 files changed

+1478
-1467
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+1478
-1467
lines changed

src/doc/en/thematic_tutorials/coercion_and_categories.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ This base class provides a lot more methods than a general parent::
106106

107107
sage: [p for p in dir(Field) if p not in dir(Parent)]
108108
['__fraction_field',
109-
'__ideal_monoid',
110109
'__iter__',
111110
'__len__',
112111
'__rxor__',
@@ -119,6 +118,7 @@ This base class provides a lot more methods than a general parent::
119118
'_default_category',
120119
'_gens',
121120
'_ideal_class_',
121+
'_ideal_monoid',
122122
'_latex_names',
123123
'_list',
124124
'_one_element',

src/doc/en/thematic_tutorials/tutorial-objects-and-classes.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ http://docs.python.org/library/ for a complete list. ::
298298
sage: el
299299
bla
300300
sage: el.__dict__
301-
{'__custom_name': 'bla', 'value': 42}
301+
{'_SageObject__custom_name': 'bla', 'value': 42}
302302

303303
Lots of Sage objects are not Python objects but compiled Cython
304304
objects. Python sees them as builtin objects and you do not have

src/sage/algebras/letterplace/free_algebra_letterplace.pxd

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,15 @@ cdef class FreeAlgebra_letterplace_libsingular():
2020
cdef ring* _lp_ring
2121
cdef MPolynomialRing_libsingular _commutative_ring
2222
cdef MPolynomialRing_libsingular _lp_ring_internal
23-
cdef object __ngens
23+
cdef object _ngens
2424

2525
cdef class FreeAlgebra_letterplace(Algebra):
2626
cdef MPolynomialRing_libsingular _commutative_ring
2727
cdef MPolynomialRing_libsingular _current_ring
2828
cdef int _degbound
29-
cdef int __ngens
29+
cdef int _ngens
3030
cdef int _nb_slackvars
3131
cdef object __monoid
32-
cdef public object __custom_name
3332
cdef str exponents_to_string(self, E)
3433
cdef str exponents_to_latex(self, E)
3534
cdef tuple _degrees

src/sage/algebras/letterplace/free_algebra_letterplace.pyx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
255255
"""
256256
if not isinstance(R, MPolynomialRing_libsingular):
257257
raise TypeError("a letterplace algebra must be provided by a polynomial ring of type %s" % MPolynomialRing_libsingular)
258-
self.__ngens = R.ngens()
258+
self._ngens = R.ngens()
259259
if degrees is None:
260260
varnames = R.variable_names()
261261
self._nb_slackvars = 0
@@ -269,12 +269,12 @@ cdef class FreeAlgebra_letterplace(Algebra):
269269
self._current_ring = make_letterplace_ring(R, 1)
270270
self._degbound = 1
271271
if degrees is None:
272-
self._degrees = tuple([int(1)] * self.__ngens)
272+
self._degrees = tuple([int(1)] * self._ngens)
273273
else:
274274
if (not isinstance(degrees, (tuple, list))) \
275-
or len(degrees) != self.__ngens - self._nb_slackvars \
275+
or len(degrees) != self._ngens - self._nb_slackvars \
276276
or any(i <= 0 for i in degrees):
277-
raise TypeError("the generator degrees must be given by a list or tuple of %d positive integers" % (self.__ngens - 1))
277+
raise TypeError("the generator degrees must be given by a list or tuple of %d positive integers" % (self._ngens - 1))
278278
self._degrees = tuple([int(i) for i in degrees])
279279
self.set_degbound(max(self._degrees))
280280
self._populate_coercion_lists_(coerce_list=[base_ring])
@@ -305,7 +305,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
305305
sage: F.ngens()
306306
3
307307
"""
308-
return self.__ngens - self._nb_slackvars
308+
return self._ngens - self._nb_slackvars
309309

310310
def gen(self, i):
311311
"""
@@ -327,17 +327,17 @@ cdef class FreeAlgebra_letterplace(Algebra):
327327
sage: F.gen(2)
328328
c
329329
"""
330-
if i >= self.__ngens - self._nb_slackvars:
331-
raise ValueError("this free algebra only has %d generators" % (self.__ngens - self._nb_slackvars))
330+
if i >= self._ngens - self._nb_slackvars:
331+
raise ValueError("this free algebra only has %d generators" % (self._ngens - self._nb_slackvars))
332332
if self._gens is not None:
333333
return self._gens[i]
334334
deg = self._degrees[i]
335335
# self.set_degbound(deg)
336336
p = self._current_ring.gen(i)
337337
cdef int n
338-
cdef int j = self.__ngens - 1
338+
cdef int j = self._ngens - 1
339339
for n in range(1, deg):
340-
j += self.__ngens
340+
j += self._ngens
341341
p *= self._current_ring.gen(j)
342342
return FreeAlgebraElement_letterplace(self, p)
343343

@@ -413,7 +413,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
413413
sage: FreeAlgebra(QQ, implementation='letterplace', names=['x']).is_commutative()
414414
True
415415
"""
416-
return self.__ngens - self._nb_slackvars <= 1
416+
return self._ngens - self._nb_slackvars <= 1
417417

418418
def is_field(self, proof=True):
419419
"""
@@ -430,7 +430,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
430430
sage: F.is_field()
431431
False
432432
"""
433-
return (not (self.__ngens - self._nb_slackvars)) and self._base.is_field(proof=proof)
433+
return (not (self._ngens - self._nb_slackvars)) and self._base.is_field(proof=proof)
434434

435435
def _repr_(self):
436436
"""
@@ -446,7 +446,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
446446
sage: F
447447
Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
448448
"""
449-
return "Free Associative Unital Algebra on %d generators %s over %s" % (self.__ngens - self._nb_slackvars, self.gens(), self._base)
449+
return "Free Associative Unital Algebra on %d generators %s over %s" % (self._ngens - self._nb_slackvars, self.gens(), self._base)
450450

451451
def _latex_(self):
452452
r"""
@@ -586,7 +586,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
586586
generated free abelian monoid.
587587
In principle, this is correct, but it is not implemented, yet.>
588588
"""
589-
cdef int ngens = self.__ngens
589+
cdef int ngens = self._ngens
590590
cdef int nblocks = len(E) // ngens
591591
cdef int i, j, base, exp, var_ind
592592
cdef list out = []
@@ -618,7 +618,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
618618
sage: latex(-(a*b*(z+1)-c)^2) # indirect doctest
619619
\left(2 z + 1\right) a b a b + \left(z + 1\right) a b c + \left(z + 1\right) c a b - c c
620620
"""
621-
cdef int ngens = self.__ngens
621+
cdef int ngens = self._ngens
622622
cdef int nblocks = len(E) // ngens
623623
cdef int i, j, base, exp, var_ind
624624
cdef list out = []
@@ -678,7 +678,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
678678
cdef list out = []
679679
C = self.current_ring()
680680
cdef FreeAlgebraElement_letterplace x
681-
ngens = self.__ngens
681+
ngens = self._ngens
682682
cdef list G = [C(x._poly) for x in g]
683683
from sage.groups.perm_gps.permgroup_named import CyclicPermutationGroup
684684
CG = CyclicPermutationGroup(C.ngens())
@@ -811,7 +811,7 @@ cdef class FreeAlgebra_letterplace(Algebra):
811811
l = len(e)
812812
break
813813
cdef dict out = {}
814-
self.set_degbound(l // self.__ngens)
814+
self.set_degbound(l // self._ngens)
815815
cdef Py_ssize_t n = self._current_ring.ngens()
816816
for e, c in D.iteritems():
817817
out[tuple(e) + (0,) * (n - l)] = c
@@ -896,7 +896,7 @@ cdef class FreeAlgebra_letterplace_libsingular():
896896
self._commutative_ring = commutative_ring
897897

898898
def __init__(self, commutative_ring, degbound):
899-
self.__ngens = commutative_ring.ngens() * degbound
899+
self._ngens = commutative_ring.ngens() * degbound
900900

901901
def __dealloc__(self):
902902
r"""

src/sage/algebras/quatalg/quaternion_algebra_element.pyx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1700,15 +1700,15 @@ cdef class QuaternionAlgebraElement_number_field(QuaternionAlgebraElement_abstra
17001700
x, y, z, w = v
17011701
cdef NumberFieldElement a = <NumberFieldElement>(parent._base(parent._a))
17021702
cdef NumberFieldElement b = <NumberFieldElement>(parent._base(parent._b))
1703-
fmpz_poly_set_ZZX(self.x, (<NumberFieldElement>x).__numerator)
1704-
fmpz_poly_set_ZZX(self.y, (<NumberFieldElement>y).__numerator)
1705-
fmpz_poly_set_ZZX(self.z, (<NumberFieldElement>z).__numerator)
1706-
fmpz_poly_set_ZZX(self.w, (<NumberFieldElement>w).__numerator)
1703+
fmpz_poly_set_ZZX(self.x, (<NumberFieldElement>x)._numerator)
1704+
fmpz_poly_set_ZZX(self.y, (<NumberFieldElement>y)._numerator)
1705+
fmpz_poly_set_ZZX(self.z, (<NumberFieldElement>z)._numerator)
1706+
fmpz_poly_set_ZZX(self.w, (<NumberFieldElement>w)._numerator)
17071707

1708-
ZZ_to_mpz(T1, &(<NumberFieldElement>x).__denominator)
1709-
ZZ_to_mpz(T2, &(<NumberFieldElement>y).__denominator)
1710-
ZZ_to_mpz(t3, &(<NumberFieldElement>z).__denominator)
1711-
ZZ_to_mpz(t4, &(<NumberFieldElement>w).__denominator)
1708+
ZZ_to_mpz(T1, &(<NumberFieldElement>x)._denominator)
1709+
ZZ_to_mpz(T2, &(<NumberFieldElement>y)._denominator)
1710+
ZZ_to_mpz(t3, &(<NumberFieldElement>z)._denominator)
1711+
ZZ_to_mpz(t4, &(<NumberFieldElement>w)._denominator)
17121712

17131713
mpz_lcm(self.d, T1, T2)
17141714
mpz_lcm(self.d, self.d, t3)
@@ -1724,10 +1724,10 @@ cdef class QuaternionAlgebraElement_number_field(QuaternionAlgebraElement_abstra
17241724
fmpz_poly_scalar_mul_mpz(self.z, self.z, t3)
17251725
fmpz_poly_scalar_mul_mpz(self.w, self.w, t4)
17261726

1727-
fmpz_poly_set_ZZX(self.a, a.__numerator) # we will assume that the denominator of a and b are 1
1728-
fmpz_poly_set_ZZX(self.b, b.__numerator)
1727+
fmpz_poly_set_ZZX(self.a, a._numerator) # we will assume that the denominator of a and b are 1
1728+
fmpz_poly_set_ZZX(self.b, b._numerator)
17291729

1730-
fmpz_poly_set_ZZX(self.modulus, (<NumberFieldElement>x).__fld_numerator.x) # and same for the modulus
1730+
fmpz_poly_set_ZZX(self.modulus, (<NumberFieldElement>x)._fld_numerator.x) # and same for the modulus
17311731

17321732
def __getitem__(self, int i):
17331733
"""
@@ -1756,17 +1756,17 @@ cdef class QuaternionAlgebraElement_number_field(QuaternionAlgebraElement_abstra
17561756
cdef NumberFieldElement item = el._new()
17571757

17581758
if i == 0:
1759-
fmpz_poly_get_ZZX(item.__numerator, self.x)
1759+
fmpz_poly_get_ZZX(item._numerator, self.x)
17601760
elif i == 1:
1761-
fmpz_poly_get_ZZX(item.__numerator, self.y)
1761+
fmpz_poly_get_ZZX(item._numerator, self.y)
17621762
elif i == 2:
1763-
fmpz_poly_get_ZZX(item.__numerator, self.z)
1763+
fmpz_poly_get_ZZX(item._numerator, self.z)
17641764
elif i == 3:
1765-
fmpz_poly_get_ZZX(item.__numerator, self.w)
1765+
fmpz_poly_get_ZZX(item._numerator, self.w)
17661766
else:
17671767
raise IndexError("quaternion element index out of range")
17681768

1769-
mpz_to_ZZ(&item.__denominator, self.d)
1769+
mpz_to_ZZ(&item._denominator, self.d)
17701770

17711771
return item
17721772

src/sage/categories/hopf_algebras_with_basis.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class HopfAlgebrasWithBasis(CategoryWithAxiom_over_base_ring):
3636
sage: A = C.example(); A # needs sage.groups
3737
An example of Hopf algebra with basis: the group algebra of the
3838
Dihedral group of order 6 as a permutation group over Rational Field
39-
sage: A.__custom_name = "A" # needs sage.groups
39+
sage: A.rename("A") # needs sage.groups
4040
sage: A.category() # needs sage.groups
4141
Category of finite dimensional hopf algebras with basis over Rational Field
4242

src/sage/categories/modules_with_basis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ class ModulesWithBasis(CategoryWithAxiom_over_base_ring):
6666
6767
Let `X` and `Y` be two modules with basis. We can build `Hom(X,Y)`::
6868
69-
sage: X = CombinatorialFreeModule(QQ, [1,2]); X.__custom_name = "X" # needs sage.modules
70-
sage: Y = CombinatorialFreeModule(QQ, [3,4]); Y.__custom_name = "Y" # needs sage.modules
69+
sage: X = CombinatorialFreeModule(QQ, [1,2]); X.rename("X") # needs sage.modules
70+
sage: Y = CombinatorialFreeModule(QQ, [3,4]); Y.rename("Y") # needs sage.modules
7171
sage: H = Hom(X, Y); H # needs sage.modules
7272
Set of Morphisms from X to Y
7373
in Category of finite dimensional vector spaces with basis over Rational Field

src/sage/combinat/cluster_complex.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,6 @@ def __init__(self, W, k, coxeter_element, algorithm):
222222
self._W = W
223223
self._w0 = w
224224
self._k = k
225-
if k == 1:
226-
self.__custom_name = 'Cluster complex'
227-
else:
228-
self.__custom_name = 'Multi-cluster complex'
229225

230226
self.set_immutable()
231227

@@ -271,7 +267,10 @@ def _repr_(self):
271267
sage: ClusterComplex(['A', 2])._repr_()
272268
"Cluster complex of type ['A', 2] with 5 vertices and 5 facets"
273269
"""
274-
name = self.__custom_name
270+
if self._k == 1:
271+
name = 'Cluster complex'
272+
else:
273+
name = 'Multi-cluster complex'
275274
name += (' of type %s with %s vertices and %s facets'
276275
% (self.cartan_type(), len(self.vertices()),
277276
len(self._facets)))

src/sage/combinat/integer_lists/base.pxd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ cdef class IntegerListsBackend():
1212
cdef readonly min_part, max_part
1313
cdef readonly min_slope, max_slope
1414
cdef readonly Envelope floor, ceiling
15-
cdef public dict __cached_methods # Support cached_method
15+
cdef public dict _cached_methods # Support cached_method

src/sage/combinat/subword_complex.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1131,7 +1131,6 @@ def __init__(self, Q, w, algorithm="inductive"):
11311131
SimplicialComplex.__init__(self, maximal_faces=Fs,
11321132
maximality_check=False,
11331133
category=cat)
1134-
self.__custom_name = 'Subword complex'
11351134
self._W = W
11361135
try:
11371136
T = W.coxeter_matrix().coxeter_type()

0 commit comments

Comments
 (0)