sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.41k stars 475 forks source link

random_element methods should all accept *args and **kwds #3893

Closed malb closed 14 years ago

malb commented 16 years ago

Because:

Apply

Component: basic arithmetic

Keywords: random_element, args, kwds

Author: Niles Johnson

Reviewer: Martin Albrecht

Merged: sage-4.6.alpha3

Issue created by migration from https://trac.sagemath.org/ticket/3893

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago
comment:1

I've reinterpreted this ticket as "random_element methods which call other random_element methods should pass on *args and **kwds". This applies mostly to sage.rings, but also a few other cases. The list below shows the output of sage: search_src("def random_element"), annotated by the changes this patch makes.

make ptestlong passes all tests, and documentation builds without errors or warnings. Details below.

Note that #9481 fixes random_element for univariate power series rings, and I've ignored padics since there is a large revision in process: e.g. #6084 and #5075.

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago

Author: Niles Johnson

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago

Attachment: trac_3893_args_kwds_for_random_element.patch.gz

malb commented 14 years ago
comment:2

Attachment: trac_3893_args_kwds_for_random_element-rebased-to-4.5.3.alpha2.patch.gz

I rebased the patch to 4.5.3.alpha2 and ran long doctests: all passed. The patch also looks good, the only issue I'd have: I'd either move the lines "Trac#3893 ..." to the TESTS:: section or remove that line completely. I understand that people want to point out where something changed, but that docstring is saying nothing to a user since it is developer information.

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago
comment:3

Thanks for taking a look!

Somewhere I gained the impression that doctests for a ticket should mention the ticket number--is that not necessarily the case? I don't really have a strong opinion, but since it may be non-obvious functionality I'm in favor of keeping these tests in the EXAMPLES:: section. How about rewording the description to something like the following?

Passes extra positional or keyword arguments through (Trac #3893)::

malb commented 14 years ago

Reviewer: Martin Albrecht

malb commented 14 years ago
comment:4

Replying to @nilesjohnson:

Thanks for taking a look! Somewhere I gained the impression that doctests for a ticket should mention the ticket number--is that not necessarily the case? I don't really have a strong opinion, but since it may be non-obvious functionality I'm in favor of keeping these tests in the EXAMPLES:: section. How about rewording the description to something like the following? Passes extra positional or keyword arguments through (Trac #3893)::

I'm not sure what the official policy is, but I'd say it would be a bit odd when in a few years time the docstring is cluttered with trac ticket numbers, what information do they communicate that is relevant? I am very much in favour of having "Passes extra positional or keyword arguments through::". I leave it up to you, so you have a positive review, i.e. toggle it yourself if you don't want to change it.

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago

Attachment: trac_3893_args_kwds_for_random_element-rebased-to-4.5.3.alpha2-clarified-docstring.patch.gz

clarified docstrings

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago
comment:5

Replying to @malb:

I'm not sure what the official policy is, but I'd say it would be a bit odd when in a few years time the docstring is cluttered with trac ticket numbers

fair enough; I also can't find any mention of a policy like this in the developer guide, so I've changed the docstring as you suggested. Since I don't have 4.5.3a2 installed, will you re-verify that the patch applies cleanly before hitting "positive review"? (Since the changes were easy, I just made them directly to the rebased patch file itself.)

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago

Attachment: trac_3893_args_kwds_for_random_element-rebased-to-4.5.3.patch.gz

rebased to 4.5.3

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago
comment:6

rebased patch applies cleanly to 4.5.3; switching to positive review, as per Martin's recommendation

e14f4152-4982-4ace-8c95-73a0599b109b commented 14 years ago
comment:7

With the latest patch applied to a trial 4.6.alpha2, I get two doctest failures:

sage -t -long "devel/sage/sage/rings/contfrac.py"           
**********************************************************************
File "/mnt/usb1/scratch/mpatel/tmp/sage-4.6.alpha1-working/devel/sage/sage/rings/contfrac.py", line 40:
    sage: a
Expected:
    [    [-1, 2] [-1, 1, 94]      [0, 2]       [-12]]
    [       [-1]      [0, 2]  [-1, 1, 3]   [0, 1, 2]]
    [    [-3, 2]   [0, 1, 2]        [-1]         [1]]
    [       [-1]      [0, 3]         [1]        [-1]]
Got:
    [    [-1, 2] [-1, 1, 94]      [0, 2]       [-12]]
    [       [-1]      [0, 2]  [-1, 1, 3]   [0, 1, 2]]
    [    [-3, 2]         [0]   [0, 1, 2]        [-1]]
    [        [1]        [-1]      [0, 3]         [1]]
**********************************************************************
File "/mnt/usb1/scratch/mpatel/tmp/sage-4.6.alpha1-working/devel/sage/sage/rings/contfrac.py", line 46:
    sage: f
Expected:
    [1]*x^4 + [2]*x^3 + ([-12, 1, 14, 7, 1, 1, 7])*x^2 + ([-40, 2, 32, 2, 1, 1, 2])*x + [8, 1, 5, 2, 14, 1, 1, 3]
Got:
    [1]*x^4 + ([-2, 3])*x^3 + [14, 1, 1, 1, 9, 1, 8]*x^2 + ([-13, 4, 1, 2, 1, 1, 1, 1, 1, 2, 2])*x + [-6, 1, 5, 9, 1, 5]
**********************************************************************

Perhaps there's an interaction with one of the already merged tickets?

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago

addressed interaction with #8955

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago

Description changed:

--- 
+++ 
@@ -2,3 +2,9 @@
 * some more highlevel `random_element` functions pass thru `*args` and `**kwds`
 * it unifies the interface to some extend 
 * it allows the user to pass thru parameters
+
+
+## Apply
+
+* patches from #8955
+* [attachment: trac_3893_args_kwds_for_random_element_4.6.alpha2.patch](https://github.com/sagemath/sage-prod/files/10641704/trac_3893_args_kwds_for_random_element_4.6.alpha2.patch.gz)
9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago

Changed keywords from none to random_element, args, kwds

9343d2e0-59ba-4406-bd4f-c78e4cf1230e commented 14 years ago
comment:9

Attachment: trac_3893_args_kwds_for_random_element_4.6.alpha2.patch.gz

Indeed; the interaction seems to be with #8955: after applying those patches, I get exactly the same doctest failures, with exactly the same "Got" output. I just uploaded a fixed patch which passes all doctests after applying #8955.

e14f4152-4982-4ace-8c95-73a0599b109b commented 14 years ago
comment:10

Martin, could you review the latest patch? If it's OK, I'll merge it into 4.6.alpha3.

malb commented 14 years ago
comment:11

The updated patch applies with some fuzz, but it applies. Doctests pass. I trust only doctest failures were addressed and thus I give this a positive review.

e14f4152-4982-4ace-8c95-73a0599b109b commented 14 years ago

Merged: sage-4.6.alpha3