Skip to content

Commit 77659d9

Browse files
author
Release Manager
committed
sagemathgh-38210: `sage.rings`: Modularization fixes (imports), `# needs` <!-- ^ 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". --> - Cherry-picked from sagemath#35095 ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [ ] The description explains in detail what this PR is about. - [x] 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#38210 Reported by: Matthias Köppe Reviewer(s): Kwankyu Lee, Matthias Köppe
2 parents e65b8b8 + ede0e92 commit 77659d9

29 files changed

+191
-156
lines changed

src/sage/rings/function_field/differential.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# sage.doctest: optional - sage.modules
1+
# sage.doctest: needs sage.modules
22
"""
33
Differentials of function fields
44

src/sage/rings/function_field/divisor.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# sage.doctest: optional - sage.rings.finite_rings (because all doctests use finite fields)
2-
# sage.doctest: optional - sage.rings.function_field (because almost all doctests use function field extensions)
1+
# sage.doctest: needs sage.rings.finite_rings (because all doctests use finite fields)
2+
# sage.doctest: needs sage.rings.function_field (because almost all doctests use function field extensions)
33
"""
44
Divisors of function fields
55

src/sage/rings/function_field/drinfeld_modules/action.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# sage.doctest: optional - sage.rings.finite_rings
1+
# sage.doctest: needs sage.rings.finite_rings
22
r"""
33
The module action induced by a Drinfeld module
44

src/sage/rings/function_field/drinfeld_modules/drinfeld_module.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# sage.doctest: optional - sage.rings.finite_rings
1+
# sage.doctest: needs sage.rings.finite_rings
22
r"""
33
Drinfeld modules
44

src/sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# sage.doctest: optional - sage.rings.finite_rings
1+
# sage.doctest: needs sage.rings.finite_rings
22
r"""
33
Finite Drinfeld modules
44

src/sage/rings/function_field/drinfeld_modules/homset.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# sage.doctest: optional - sage.rings.finite_rings
1+
# sage.doctest: needs sage.rings.finite_rings
22
r"""
33
Set of morphisms between two Drinfeld modules
44

src/sage/rings/function_field/drinfeld_modules/morphism.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# sage.doctest: optional - sage.rings.finite_rings
1+
# sage.doctest: needs sage.rings.finite_rings
22
r"""
33
Drinfeld module morphisms
44

src/sage/rings/function_field/element.pyx

+39-34
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ cdef class FunctionFieldElement(FieldElement):
187187
188188
Now an example in a nontrivial extension of a rational function field::
189189
190-
sage: # needs sage.modules sage.rings.function_field
190+
sage: # needs sage.rings.function_field
191191
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
192192
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3)
193193
sage: y.matrix()
@@ -199,7 +199,7 @@ cdef class FunctionFieldElement(FieldElement):
199199
An example in a relative extension, where neither function
200200
field is rational::
201201
202-
sage: # needs sage.modules sage.rings.function_field
202+
sage: # needs sage.rings.function_field
203203
sage: K.<x> = FunctionField(QQ)
204204
sage: R.<y> = K[]
205205
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3)
@@ -222,7 +222,7 @@ cdef class FunctionFieldElement(FieldElement):
222222
We show that this matrix does indeed work as expected when making a
223223
vector space from a function field::
224224
225-
sage: # needs sage.modules sage.rings.function_field
225+
sage: # needs sage.rings.function_field
226226
sage: K.<x> = FunctionField(QQ)
227227
sage: R.<y> = K[]
228228
sage: L.<y> = K.extension(y^5 - (x^3 + 2*x*y + 1/x))
@@ -254,7 +254,7 @@ cdef class FunctionFieldElement(FieldElement):
254254
255255
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
256256
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) # needs sage.rings.function_field
257-
sage: y.trace() # needs sage.modules sage.rings.function_field
257+
sage: y.trace() # needs sage.rings.function_field
258258
x
259259
"""
260260
return self.matrix().trace()
@@ -267,17 +267,17 @@ cdef class FunctionFieldElement(FieldElement):
267267
268268
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
269269
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) # needs sage.rings.function_field
270-
sage: y.norm() # needs sage.modules sage.rings.function_field
270+
sage: y.norm() # needs sage.rings.function_field
271271
4*x^3
272272
273273
The norm is relative::
274274
275275
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
276276
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3); R.<z> = L[] # needs sage.rings.function_field
277277
sage: M.<z> = L.extension(z^3 - y^2*z + x) # needs sage.rings.function_field
278-
sage: z.norm() # needs sage.modules sage.rings.function_field
278+
sage: z.norm() # needs sage.rings.function_field
279279
-x
280-
sage: z.norm().parent() # needs sage.modules sage.rings.function_field
280+
sage: z.norm().parent() # needs sage.rings.function_field
281281
Function field in y defined by y^2 - x*y + 4*x^3
282282
"""
283283
return self.matrix().determinant()
@@ -326,13 +326,15 @@ cdef class FunctionFieldElement(FieldElement):
326326
EXAMPLES::
327327
328328
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
329-
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3); R.<z> = L[] # needs sage.rings.function_field
330-
sage: M.<z> = L.extension(z^3 - y^2*z + x) # needs sage.rings.function_field
331329
sage: x.characteristic_polynomial('W') # needs sage.modules
332330
W - x
333-
sage: y.characteristic_polynomial('W') # needs sage.modules sage.rings.function_field
331+
332+
sage: # needs sage.rings.function_field
333+
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3); R.<z> = L[]
334+
sage: M.<z> = L.extension(z^3 - y^2*z + x)
335+
sage: y.characteristic_polynomial('W')
334336
W^2 - x*W + 4*x^3
335-
sage: z.characteristic_polynomial('W') # needs sage.modules sage.rings.function_field
337+
sage: z.characteristic_polynomial('W')
336338
W^3 + (-x*y + 4*x^3)*W + x
337339
"""
338340
return self.matrix().characteristic_polynomial(*args, **kwds)
@@ -347,13 +349,15 @@ cdef class FunctionFieldElement(FieldElement):
347349
EXAMPLES::
348350
349351
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
350-
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3); R.<z> = L[] # needs sage.rings.function_field
351-
sage: M.<z> = L.extension(z^3 - y^2*z + x) # needs sage.rings.function_field
352352
sage: x.minimal_polynomial('W') # needs sage.modules
353353
W - x
354-
sage: y.minimal_polynomial('W') # needs sage.modules sage.rings.function_field
354+
355+
sage: # needs sage.rings.function_field
356+
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3); R.<z> = L[]
357+
sage: M.<z> = L.extension(z^3 - y^2*z + x)
358+
sage: y.minimal_polynomial('W')
355359
W^2 - x*W + 4*x^3
356-
sage: z.minimal_polynomial('W') # needs sage.modules sage.rings.function_field
360+
sage: z.minimal_polynomial('W')
357361
W^3 + (-x*y + 4*x^3)*W + x
358362
"""
359363
return self.matrix().minimal_polynomial(*args, **kwds)
@@ -366,7 +370,7 @@ cdef class FunctionFieldElement(FieldElement):
366370
367371
EXAMPLES::
368372
369-
sage: # needs sage.modules sage.rings.function_field
373+
sage: # needs sage.rings.function_field
370374
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
371375
sage: L.<y> = K.extension(y^2 - x*y + 4*x^3)
372376
sage: y.is_integral()
@@ -396,24 +400,25 @@ cdef class FunctionFieldElement(FieldElement):
396400
397401
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
398402
sage: L.<y> = K.extension(Y^2 + Y + x +1/x) # needs sage.rings.finite_rings sage.rings.function_field
399-
sage: (y^3 + x).differential() # needs sage.modules sage.rings.finite_rings sage.rings.function_field
403+
sage: (y^3 + x).differential() # needs sage.rings.finite_rings sage.rings.function_field
400404
(((x^2 + 1)/x^2)*y + (x^4 + x^3 + 1)/x^3) d(x)
401405
402406
TESTS:
403407
404408
Verify that :issue:`27712` is resolved::
405409
406410
sage: K.<x> = FunctionField(GF(31))
407-
sage: R.<y> = K[]
408-
sage: L.<y> = K.extension(y^2 - x) # needs sage.rings.function_field
409-
sage: R.<z> = L[] # needs sage.rings.function_field
410-
sage: M.<z> = L.extension(z^2 - y) # needs sage.rings.function_field
411-
412411
sage: x.differential() # needs sage.modules
413412
d(x)
414-
sage: y.differential() # needs sage.modules sage.rings.function_field
413+
414+
sage: # needs sage.rings.function_field
415+
sage: R.<y> = K[]
416+
sage: L.<y> = K.extension(y^2 - x)
417+
sage: R.<z> = L[]
418+
sage: M.<z> = L.extension(z^2 - y)
419+
sage: y.differential()
415420
(16/x*y) d(x)
416-
sage: z.differential() # needs sage.modules sage.rings.function_field
421+
sage: z.differential()
417422
(8/x*z) d(x)
418423
"""
419424
F = self.parent()
@@ -436,7 +441,7 @@ cdef class FunctionFieldElement(FieldElement):
436441
437442
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
438443
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.finite_rings sage.rings.function_field
439-
sage: (y^3 + x).derivative() # needs sage.modules sage.rings.finite_rings sage.rings.function_field
444+
sage: (y^3 + x).derivative() # needs sage.rings.finite_rings sage.rings.function_field
440445
((x^2 + 1)/x^2)*y + (x^4 + x^3 + 1)/x^3
441446
"""
442447
D = self.parent().derivation()
@@ -458,14 +463,14 @@ cdef class FunctionFieldElement(FieldElement):
458463
459464
sage: K.<t> = FunctionField(GF(2))
460465
sage: f = t^2
461-
sage: f.higher_derivative(2) # needs sage.modules sage.rings.function_field
466+
sage: f.higher_derivative(2) # needs sage.rings.function_field
462467
1
463468
464469
::
465470
466471
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
467472
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.finite_rings sage.rings.function_field
468-
sage: (y^3 + x).higher_derivative(2) # needs sage.modules sage.rings.finite_rings sage.rings.function_field
473+
sage: (y^3 + x).higher_derivative(2) # needs sage.rings.finite_rings sage.rings.function_field
469474
1/x^3*y + (x^6 + x^4 + x^3 + x^2 + x + 1)/x^5
470475
"""
471476
D = self.parent().higher_derivation()
@@ -489,7 +494,7 @@ cdef class FunctionFieldElement(FieldElement):
489494
490495
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
491496
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.function_field
492-
sage: y.divisor() # needs sage.modules sage.rings.function_field
497+
sage: y.divisor() # needs sage.rings.function_field
493498
- Place (1/x, 1/x*y)
494499
- Place (x, x*y)
495500
+ 2*Place (x + 1, x*y)
@@ -517,7 +522,7 @@ cdef class FunctionFieldElement(FieldElement):
517522
518523
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
519524
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.finite_rings sage.rings.function_field
520-
sage: (x/y).divisor_of_zeros() # needs sage.modules sage.rings.finite_rings sage.rings.function_field
525+
sage: (x/y).divisor_of_zeros() # needs sage.rings.finite_rings sage.rings.function_field
521526
3*Place (x, x*y)
522527
"""
523528
if self.is_zero():
@@ -544,7 +549,7 @@ cdef class FunctionFieldElement(FieldElement):
544549
545550
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
546551
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.finite_rings sage.rings.function_field
547-
sage: (x/y).divisor_of_poles() # needs sage.modules sage.rings.finite_rings sage.rings.function_field
552+
sage: (x/y).divisor_of_poles() # needs sage.rings.finite_rings sage.rings.function_field
548553
Place (1/x, 1/x*y) + 2*Place (x + 1, x*y)
549554
"""
550555
if self.is_zero():
@@ -570,7 +575,7 @@ cdef class FunctionFieldElement(FieldElement):
570575
571576
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
572577
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.finite_rings sage.rings.function_field
573-
sage: (x/y).zeros() # needs sage.modules sage.rings.finite_rings sage.rings.function_field
578+
sage: (x/y).zeros() # needs sage.rings.finite_rings sage.rings.function_field
574579
[Place (x, x*y)]
575580
"""
576581
return self.divisor_of_zeros().support()
@@ -590,7 +595,7 @@ cdef class FunctionFieldElement(FieldElement):
590595
591596
sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] # needs sage.rings.finite_rings
592597
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.finite_rings sage.rings.function_field
593-
sage: (x/y).poles() # needs sage.modules sage.rings.finite_rings sage.rings.function_field
598+
sage: (x/y).poles() # needs sage.rings.finite_rings sage.rings.function_field
594599
[Place (1/x, 1/x*y), Place (x + 1, x*y)]
595600
"""
596601
return self.divisor_of_poles().support()
@@ -607,8 +612,8 @@ cdef class FunctionFieldElement(FieldElement):
607612
608613
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
609614
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.function_field
610-
sage: p = L.places_infinite()[0] # needs sage.modules sage.rings.function_field
611-
sage: y.valuation(p) # needs sage.modules sage.rings.function_field
615+
sage: p = L.places_infinite()[0] # needs sage.rings.function_field
616+
sage: y.valuation(p) # needs sage.rings.function_field
612617
-1
613618
614619
::

src/sage/rings/function_field/element_polymod.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# sage.doctest: optional - sage.rings.function_field
1+
# sage.doctest: needs sage.rings.function_field
22
r"""
33
Elements of function fields: extension
44
"""

src/sage/rings/function_field/element_rational.pyx

+7-7
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,11 @@ cdef class FunctionFieldElement_rational(FunctionFieldElement):
7474
sage: K.<t> = FunctionField(GF(7))
7575
sage: t.element()
7676
t
77-
sage: type(t.element()) # needs sage.rings.finite_rings
77+
sage: type(t.element()) # needs sage.libs.ntl
7878
<... 'sage.rings.fraction_field_FpT.FpTElement'>
7979
80-
sage: K.<t> = FunctionField(GF(131101)) # needs sage.libs.pari
80+
sage: # needs sage.rings.finite_rings
81+
sage: K.<t> = FunctionField(GF(131101))
8182
sage: t.element()
8283
t
8384
sage: type(t.element())
@@ -392,9 +393,9 @@ cdef class FunctionFieldElement_rational(FunctionFieldElement):
392393
True
393394
sage: f.is_nth_power(3) # needs sage.modules
394395
False
395-
sage: (f^3).is_nth_power(3)
396+
sage: (f^3).is_nth_power(3) # needs sage.modules
396397
True
397-
sage: (f^9).is_nth_power(-9)
398+
sage: (f^9).is_nth_power(-9) # needs sage.modules
398399
True
399400
"""
400401
if n == 1:
@@ -437,7 +438,6 @@ cdef class FunctionFieldElement_rational(FunctionFieldElement):
437438
438439
EXAMPLES::
439440
440-
sage: # needs sage.rings.finite_rings
441441
sage: K.<x> = FunctionField(GF(3))
442442
sage: f = (x+1)/(x+2)
443443
sage: f.nth_root(1)
@@ -446,9 +446,9 @@ cdef class FunctionFieldElement_rational(FunctionFieldElement):
446446
Traceback (most recent call last):
447447
...
448448
ValueError: element is not an n-th power
449-
sage: (f^3).nth_root(3)
449+
sage: (f^3).nth_root(3) # needs sage.modules
450450
(x + 1)/(x + 2)
451-
sage: (f^9).nth_root(-9)
451+
sage: (f^9).nth_root(-9) # needs sage.modules
452452
(x + 2)/(x + 1)
453453
"""
454454
if n == 0:

0 commit comments

Comments
 (0)