-
-
Notifications
You must be signed in to change notification settings - Fork 32.1k
gh-101410: customize error messages for 1-arg math functions #129497
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 8 commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
77a643c
gh-101410: customize error messages for 1-arg math functions
skirpichev d88b55f
+ news
skirpichev b99661e
Update Lib/test/test_math.py
skirpichev d57a640
Merge branch 'master' into math-err-msg/101410
skirpichev 81ae026
address review: correct gamma/lgamma error msgs
skirpichev 11365cb
Update Misc/NEWS.d/next/Library/2023-02-01-16-41-31.gh-issue-101410.D…
skirpichev 53b68c2
address review: fix typo in news & gamma/lgamma error messages
skirpichev 4cb7c0f
Merge branch 'master' into math-err-msg/101410
skirpichev 465f881
Merge branch 'master' into math-err-msg/101410
skirpichev 8edc47d
add news to whatsnew
skirpichev 8939f2b
Update Doc/whatsnew/3.14.rst
skirpichev 513a6d9
Merge branch 'master' into math-err-msg/101410
skirpichev 769173e
Merge branch 'master' into math-err-msg/101410
skirpichev d7dd946
Merge branch 'main' into math-err-msg/101410
skirpichev File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
Misc/NEWS.d/next/Library/2025-02-12-16-37-34.gh-issue-101410.0GInct.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Added more detailed messages for domain errors in the :mod:`math` module. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1089,17 +1089,20 @@ math_2(PyObject *const *args, Py_ssize_t nargs, | |
}\ | ||
PyDoc_STRVAR(math_##funcname##_doc, docstring); | ||
|
||
FUNC1(acos, acos, 0, | ||
FUNC1D(acos, acos, 0, | ||
"acos($module, x, /)\n--\n\n" | ||
"Return the arc cosine (measured in radians) of x.\n\n" | ||
"The result is between 0 and pi.") | ||
FUNC1(acosh, acosh, 0, | ||
"The result is between 0 and pi.", | ||
"expected a number in range from -1 up to 1, got %s") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could say "a number in the interval [-1, 1]" though I'm a bit worried about the notation that may not be understood (for non mathematicians). Otherwise shouldn't we say "in the range from -1 up to 1" ? (I'm not sure here for the English part so @AA-Turner could help us) |
||
FUNC1D(acosh, acosh, 0, | ||
"acosh($module, x, /)\n--\n\n" | ||
"Return the inverse hyperbolic cosine of x.") | ||
FUNC1(asin, asin, 0, | ||
"Return the inverse hyperbolic cosine of x.", | ||
"expected argument value not less than 1, got %s") | ||
FUNC1D(asin, asin, 0, | ||
"asin($module, x, /)\n--\n\n" | ||
"Return the arc sine (measured in radians) of x.\n\n" | ||
"The result is between -pi/2 and pi/2.") | ||
"The result is between -pi/2 and pi/2.", | ||
"expected a number in range from -1 up to 1, got %s") | ||
FUNC1(asinh, asinh, 0, | ||
"asinh($module, x, /)\n--\n\n" | ||
"Return the inverse hyperbolic sine of x.") | ||
|
@@ -1161,9 +1164,10 @@ FUNC2(copysign, copysign, | |
"Return a float with the magnitude (absolute value) of x but the sign of y.\n\n" | ||
"On platforms that support signed zeros, copysign(1.0, -0.0)\n" | ||
"returns -1.0.\n") | ||
FUNC1(cos, cos, 0, | ||
FUNC1D(cos, cos, 0, | ||
"cos($module, x, /)\n--\n\n" | ||
"Return the cosine of x (measured in radians).") | ||
"Return the cosine of x (measured in radians).", | ||
"expected a finite input, got %s") | ||
skirpichev marked this conversation as resolved.
Show resolved
Hide resolved
|
||
FUNC1(cosh, cosh, 1, | ||
"cosh($module, x, /)\n--\n\n" | ||
"Return the hyperbolic cosine of x.") | ||
|
@@ -1228,33 +1232,37 @@ math_floor(PyObject *module, PyObject *number) | |
FUNC1AD(gamma, m_tgamma, | ||
"gamma($module, x, /)\n--\n\n" | ||
"Gamma function at x.", | ||
"expected a float or nonnegative integer, got %s") | ||
FUNC1A(lgamma, m_lgamma, | ||
"expected a noninteger or positive integer, got %s") | ||
FUNC1AD(lgamma, m_lgamma, | ||
"lgamma($module, x, /)\n--\n\n" | ||
"Natural logarithm of absolute value of Gamma function at x.") | ||
FUNC1(log1p, m_log1p, 0, | ||
"Natural logarithm of absolute value of Gamma function at x.", | ||
"expected a noninteger or positive integer, got %s") | ||
FUNC1D(log1p, m_log1p, 0, | ||
"log1p($module, x, /)\n--\n\n" | ||
"Return the natural logarithm of 1+x (base e).\n\n" | ||
"The result is computed in a way which is accurate for x near zero.") | ||
"The result is computed in a way which is accurate for x near zero.", | ||
"expected argument value > -1, got %s") | ||
FUNC2(remainder, m_remainder, | ||
"remainder($module, x, y, /)\n--\n\n" | ||
"Difference between x and the closest integer multiple of y.\n\n" | ||
"Return x - n*y where n*y is the closest integer multiple of y.\n" | ||
"In the case where x is exactly halfway between two multiples of\n" | ||
"y, the nearest even value of n is used. The result is always exact.") | ||
FUNC1(sin, sin, 0, | ||
FUNC1D(sin, sin, 0, | ||
"sin($module, x, /)\n--\n\n" | ||
"Return the sine of x (measured in radians).") | ||
"Return the sine of x (measured in radians).", | ||
"expected a finite input, got %s") | ||
FUNC1(sinh, sinh, 1, | ||
"sinh($module, x, /)\n--\n\n" | ||
"Return the hyperbolic sine of x.") | ||
FUNC1D(sqrt, sqrt, 0, | ||
"sqrt($module, x, /)\n--\n\n" | ||
"Return the square root of x.", | ||
"expected a nonnegative input, got %s") | ||
FUNC1(tan, tan, 0, | ||
FUNC1D(tan, tan, 0, | ||
"tan($module, x, /)\n--\n\n" | ||
"Return the tangent of x (measured in radians).") | ||
"Return the tangent of x (measured in radians).", | ||
"expected a finite input, got %s") | ||
FUNC1(tanh, tanh, 0, | ||
"tanh($module, x, /)\n--\n\n" | ||
"Return the hyperbolic tangent of x.") | ||
|
@@ -2232,8 +2240,10 @@ loghelper(PyObject* arg, double (*func)(double)) | |
|
||
/* Negative or zero inputs give a ValueError. */ | ||
if (!_PyLong_IsPositive((PyLongObject *)arg)) { | ||
PyErr_Format(PyExc_ValueError, | ||
"expected a positive input, got %S", arg); | ||
/* The input can be an arbitrary large integer, so we | ||
don't include it's value in the error message. */ | ||
PyErr_SetString(PyExc_ValueError, | ||
"expected a positive input"); | ||
return NULL; | ||
} | ||
|
||
|
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.