https://github.com/python/cpython/commit/e03def8c233ead2e6d22fa6d91540d405b2bbeef
commit: e03def8c233ead2e6d22fa6d91540d405b2bbeef
branch: main
author: Pengyu Lee <[email protected]>
committer: JelleZijlstra <[email protected]>
date: 2026-10-23T12:54:38-07:00
summary:
Fix inaccurate wording in multiple decimal module docstrings (#155688)
files:
M Lib/_pydecimal.py
M Modules/_decimal/_decimal.c
M Modules/_decimal/clinic/_decimal.c.h
diff --git a/Lib/_pydecimal.py b/Lib/_pydecimal.py
index 39625a2921d323b..4b7bfd07887bd38 100644
--- a/Lib/_pydecimal.py
+++ b/Lib/_pydecimal.py
@@ -5172,8 +5172,8 @@ def number_class(self, a):
"""Returns an indication of the class of the operand.
The class is one of the following strings:
- -sNaN
- -NaN
+ sNaN
+ NaN
-Infinity
-Normal
-Subnormal
@@ -5682,8 +5682,9 @@ def to_integral_value(self, a):
When the operand has a negative exponent, the result is the same
as using the quantize() operation using the given operand as the
left-hand-operand, 1E+0 as the right-hand-operand, and the precision
- of the operand as the precision setting, except that no flags will
- be set. The rounding mode is taken from the context.
+ of the operand as the precision setting, except that the Inexact and
+ Rounded flags will not be set. The rounding mode is taken from the
+ context.
>>> ExtendedContext.to_integral_value(Decimal('2.1'))
Decimal('2')
diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c
index 5eaba2fdbdf2d6a..6a202e010ce2796 100644
--- a/Modules/_decimal/_decimal.c
+++ b/Modules/_decimal/_decimal.c
@@ -6789,7 +6789,7 @@ _decimal.Context.power
Compute a**b.
If 'a' is negative, then 'b' must be integral. The result will be
-inexact unless 'a' is integral and the result is finite and can be
+inexact unless 'b' is integral and the result is finite and can be
expressed exactly in 'precision' digits. In the Python version the
result is always correctly rounded, in the C version the result is
almost always correctly rounded.
@@ -6807,7 +6807,7 @@ restrictions hold:
static PyObject *
_decimal_Context_power_impl(PyObject *context, PyTypeObject *cls,
PyObject *base, PyObject *exp, PyObject *mod)
-/*[clinic end generated code: output=d06d40c37cdd69dc input=178a254468ec189b]*/
+/*[clinic end generated code: output=d06d40c37cdd69dc input=660210a6607ca4b0]*/
{
PyObject *a, *b, *c = NULL;
PyObject *result;
@@ -7067,13 +7067,19 @@ _decimal_Context_apply_impl(PyObject *context,
PyTypeObject *cls,
/*[clinic input]
_decimal.Context.canonical = _decimal.Context.is_normal
-Return a new instance of x.
+Returns the same Decimal object.
+
+As we do not have different encodings for the same number, the
+received object already is in its canonical form.
+
+>>> ExtendedContext.canonical(Decimal('2.50'))
+Decimal('2.50')
[clinic start generated code]*/
static PyObject *
_decimal_Context_canonical_impl(PyObject *context, PyTypeObject *cls,
PyObject *x)
-/*[clinic end generated code: output=f213e433e2032e5e input=025ecb106ac15bff]*/
+/*[clinic end generated code: output=f213e433e2032e5e input=d9f19ee3e7ed9433]*/
{
decimal_state *state = PyType_GetModuleState(cls);
if (!PyDec_Check(state, x)) {
diff --git a/Modules/_decimal/clinic/_decimal.c.h
b/Modules/_decimal/clinic/_decimal.c.h
index bbf5613848f13e0..6c8e0b84402b12e 100644
--- a/Modules/_decimal/clinic/_decimal.c.h
+++ b/Modules/_decimal/clinic/_decimal.c.h
@@ -5043,7 +5043,7 @@ PyDoc_STRVAR(_decimal_Context_power__doc__,
"Compute a**b.\n"
"\n"
"If \'a\' is negative, then \'b\' must be integral. The result will be\n"
-"inexact unless \'a\' is integral and the result is finite and can be\n"
+"inexact unless \'b\' is integral and the result is finite and can be\n"
"expressed exactly in \'precision\' digits. In the Python version the\n"
"result is always correctly rounded, in the C version the result is\n"
"almost always correctly rounded.\n"
@@ -5569,7 +5569,13 @@ PyDoc_STRVAR(_decimal_Context_canonical__doc__,
"canonical($self, x, /)\n"
"--\n"
"\n"
-"Return a new instance of x.");
+"Returns the same Decimal object.\n"
+"\n"
+"As we do not have different encodings for the same number, the\n"
+"received object already is in its canonical form.\n"
+"\n"
+">>> ExtendedContext.canonical(Decimal(\'2.50\'))\n"
+"Decimal(\'2.50\')");
#define _DECIMAL_CONTEXT_CANONICAL_METHODDEF \
{"canonical", _PyCFunction_CAST(_decimal_Context_canonical),
METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_canonical__doc__},
@@ -6283,4 +6289,4 @@ _decimal_Context_same_quantum(PyObject *context,
PyTypeObject *cls, PyObject *co
#ifndef _DECIMAL_CONTEXT_APPLY_METHODDEF
#define _DECIMAL_CONTEXT_APPLY_METHODDEF
#endif /* !defined(_DECIMAL_CONTEXT_APPLY_METHODDEF) */
-/*[clinic end generated code: output=783d0db339199a30 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=02f6a8f0e93bc9f8 input=a9049054013a1b77]*/
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]