summaryrefslogtreecommitdiffstats
path: root/Modules/_decimal
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/_decimal')
-rw-r--r--Modules/_decimal/_decimal.c17
-rw-r--r--Modules/_decimal/libmpdec/io.c11
-rw-r--r--Modules/_decimal/libmpdec/mpdecimal.h8
-rw-r--r--Modules/_decimal/tests/deccheck.py2
-rwxr-xr-xModules/_decimal/tests/runall.bat222
5 files changed, 136 insertions, 124 deletions
diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c
index ea5253e..f000887 100644
--- a/Modules/_decimal/_decimal.c
+++ b/Modules/_decimal/_decimal.c
@@ -39,8 +39,8 @@
#include "memory.h"
-#if MPD_MAJOR_VERSION != 2
- #error "libmpdec major version 2 required"
+#if !defined(MPD_VERSION_HEX) || MPD_VERSION_HEX < 0x02040100
+ #error "libmpdec version >= 2.4.1 required"
#endif
@@ -3542,7 +3542,7 @@ PyDec_Round(PyObject *dec, PyObject *args)
}
}
-static PyObject *DecimalTuple = NULL;
+static PyTypeObject *DecimalTuple = NULL;
/* Return the DecimalTuple representation of a PyDecObject. */
static PyObject *
PyDec_AsTuple(PyObject *dec, PyObject *dummy UNUSED)
@@ -3625,7 +3625,7 @@ PyDec_AsTuple(PyObject *dec, PyObject *dummy UNUSED)
}
}
- result = PyObject_CallFunctionObjArgs(DecimalTuple,
+ result = PyObject_CallFunctionObjArgs((PyObject *)DecimalTuple,
sign, coeff, expt, NULL);
out:
@@ -5562,9 +5562,14 @@ PyInit__decimal(void)
/* DecimalTuple */
ASSIGN_PTR(collections, PyImport_ImportModule("collections"));
- ASSIGN_PTR(DecimalTuple, PyObject_CallMethod(collections,
+ ASSIGN_PTR(DecimalTuple, (PyTypeObject *)PyObject_CallMethod(collections,
"namedtuple", "(ss)", "DecimalTuple",
"sign digits exponent"));
+
+ ASSIGN_PTR(obj, PyUnicode_FromString("decimal"));
+ CHECK_INT(PyDict_SetItemString(DecimalTuple->tp_dict, "__module__", obj));
+ Py_CLEAR(obj);
+
/* MutableMapping */
ASSIGN_PTR(MutableMapping, PyObject_GetAttrString(collections,
"MutableMapping"));
@@ -5591,7 +5596,7 @@ PyInit__decimal(void)
CHECK_INT(PyModule_AddObject(m, "Context",
(PyObject *)&PyDecContext_Type));
Py_INCREF(DecimalTuple);
- CHECK_INT(PyModule_AddObject(m, "DecimalTuple", DecimalTuple));
+ CHECK_INT(PyModule_AddObject(m, "DecimalTuple", (PyObject *)DecimalTuple));
/* Create top level exception */
diff --git a/Modules/_decimal/libmpdec/io.c b/Modules/_decimal/libmpdec/io.c
index b67324d..a45a429 100644
--- a/Modules/_decimal/libmpdec/io.c
+++ b/Modules/_decimal/libmpdec/io.c
@@ -446,7 +446,7 @@ _mpd_to_string(char **result, const mpd_t *dec, int flags, mpd_ssize_t dplace)
if (mpd_isspecial(dec)) {
- mem = sizeof "-Infinity";
+ mem = sizeof "-Infinity%";
if (mpd_isnan(dec) && dec->len > 0) {
/* diagnostic code */
mem += dec->digits;
@@ -609,10 +609,10 @@ _mpd_to_string(char **result, const mpd_t *dec, int flags, mpd_ssize_t dplace)
*cp++ = (flags&MPD_FMT_UPPER) ? 'E' : 'e';
cp = exp_to_string(cp, ldigits-dplace);
}
+ }
- if (flags&MPD_FMT_PERCENT) {
- *cp++ = '%';
- }
+ if (flags&MPD_FMT_PERCENT) {
+ *cp++ = '%';
}
assert(cp < decstring+mem);
@@ -1260,6 +1260,9 @@ mpd_qformat_spec(const mpd_t *dec, const mpd_spec_t *spec,
stackspec.align = '>';
spec = &stackspec;
}
+ if (type == '%') {
+ flags |= MPD_FMT_PERCENT;
+ }
}
else {
uint32_t workstatus = 0;
diff --git a/Modules/_decimal/libmpdec/mpdecimal.h b/Modules/_decimal/libmpdec/mpdecimal.h
index b43231c..5ca7413 100644
--- a/Modules/_decimal/libmpdec/mpdecimal.h
+++ b/Modules/_decimal/libmpdec/mpdecimal.h
@@ -108,9 +108,13 @@ MPD_PRAGMA(MPD_HIDE_SYMBOLS_START)
#define MPD_MAJOR_VERSION 2
#define MPD_MINOR_VERSION 4
-#define MPD_MICRO_VERSION 0
+#define MPD_MICRO_VERSION 1
-#define MPD_VERSION "2.4.0"
+#define MPD_VERSION "2.4.1"
+
+#define MPD_VERSION_HEX ((MPD_MAJOR_VERSION << 24) | \
+ (MPD_MINOR_VERSION << 16) | \
+ (MPD_MICRO_VERSION << 8))
const char *mpd_version(void);
diff --git a/Modules/_decimal/tests/deccheck.py b/Modules/_decimal/tests/deccheck.py
index c4c5a44..27137b2 100644
--- a/Modules/_decimal/tests/deccheck.py
+++ b/Modules/_decimal/tests/deccheck.py
@@ -126,7 +126,7 @@ ContextFunctions = {
# Functions that require a restricted exponent range for reasonable runtimes.
UnaryRestricted = [
- '__ceil__', '__floor__', '__int__', '__long__', '__trunc__',
+ '__ceil__', '__floor__', '__int__', '__trunc__',
'to_integral', 'to_integral_value'
]
diff --git a/Modules/_decimal/tests/runall.bat b/Modules/_decimal/tests/runall.bat
index 5bc872a..568f92f 100755
--- a/Modules/_decimal/tests/runall.bat
+++ b/Modules/_decimal/tests/runall.bat
@@ -1,111 +1,111 @@
-@ECHO OFF
-
-rem Test all machine configurations, pydebug, refleaks, release build.
-
-cd ..\..\..\
-
-
-echo.
-echo # ======================================================================
-echo # Building Python
-echo # ======================================================================
-echo.
-
-call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x64
-msbuild /noconsolelogger /target:clean PCbuild\pcbuild.sln /p:Configuration=Release /p:PlatformTarget=x64
-msbuild /noconsolelogger /target:clean PCbuild\pcbuild.sln /p:Configuration=Debug /p:PlatformTarget=x64
-msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=x64
-msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=x64
-
-call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86
-msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=Win32
-msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=Win32
-echo.
-echo.
-
-echo.
-echo # ======================================================================
-echo # test_decimal: platform=x64
-echo # ======================================================================
-echo.
-
-cd PCbuild\amd64
-
-echo # ==================== refleak tests =======================
-echo.
-python_d.exe -m test -uall -R 2:2 test_decimal
-echo.
-echo.
-
-echo # ==================== regular tests =======================
-echo.
-python.exe -m test -uall test_decimal
-echo.
-echo.
-
-cd ..
-
-echo.
-echo # ======================================================================
-echo # test_decimal: platform=x86
-echo # ======================================================================
-echo.
-
-echo # ==================== refleak tests =======================
-echo.
-python_d.exe -m test -uall -R 2:2 test_decimal
-echo.
-echo.
-
-echo # ==================== regular tests =======================
-echo.
-python.exe -m test -uall test_decimal
-echo.
-echo.
-
-cd amd64
-
-echo.
-echo # ======================================================================
-echo # deccheck: platform=x64
-echo # ======================================================================
-echo.
-
-echo # ==================== debug build =======================
-echo.
-python_d.exe ..\..\Modules\_decimal\tests\deccheck.py
-echo.
-echo.
-
-echo # =================== release build ======================
-echo.
-python.exe ..\..\Modules\_decimal\tests\deccheck.py
-echo.
-echo.
-
-cd ..
-
-echo.
-echo # ======================================================================
-echo # deccheck: platform=x86
-echo # ======================================================================
-echo.
-echo.
-
-echo # ==================== debug build =======================
-echo.
-python_d.exe ..\Modules\_decimal\tests\deccheck.py
-echo.
-echo.
-
-echo # =================== release build ======================
-echo.
-python.exe ..\Modules\_decimal\tests\deccheck.py
-echo.
-echo.
-
-
-cd ..\Modules\_decimal\tests
-
-
-
+@ECHO OFF
+
+rem Test all machine configurations, pydebug, refleaks, release build.
+
+cd ..\..\..\
+
+
+echo.
+echo # ======================================================================
+echo # Building Python
+echo # ======================================================================
+echo.
+
+call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x64
+msbuild /noconsolelogger /target:clean PCbuild\pcbuild.sln /p:Configuration=Release /p:PlatformTarget=x64
+msbuild /noconsolelogger /target:clean PCbuild\pcbuild.sln /p:Configuration=Debug /p:PlatformTarget=x64
+msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=x64
+msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=x64
+
+call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86
+msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=Win32
+msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=Win32
+echo.
+echo.
+
+echo.
+echo # ======================================================================
+echo # test_decimal: platform=x64
+echo # ======================================================================
+echo.
+
+cd PCbuild\amd64
+
+echo # ==================== refleak tests =======================
+echo.
+python_d.exe -m test -uall -R 2:2 test_decimal
+echo.
+echo.
+
+echo # ==================== regular tests =======================
+echo.
+python.exe -m test -uall test_decimal
+echo.
+echo.
+
+cd ..
+
+echo.
+echo # ======================================================================
+echo # test_decimal: platform=x86
+echo # ======================================================================
+echo.
+
+echo # ==================== refleak tests =======================
+echo.
+python_d.exe -m test -uall -R 2:2 test_decimal
+echo.
+echo.
+
+echo # ==================== regular tests =======================
+echo.
+python.exe -m test -uall test_decimal
+echo.
+echo.
+
+cd amd64
+
+echo.
+echo # ======================================================================
+echo # deccheck: platform=x64
+echo # ======================================================================
+echo.
+
+echo # ==================== debug build =======================
+echo.
+python_d.exe ..\..\Modules\_decimal\tests\deccheck.py
+echo.
+echo.
+
+echo # =================== release build ======================
+echo.
+python.exe ..\..\Modules\_decimal\tests\deccheck.py
+echo.
+echo.
+
+cd ..
+
+echo.
+echo # ======================================================================
+echo # deccheck: platform=x86
+echo # ======================================================================
+echo.
+echo.
+
+echo # ==================== debug build =======================
+echo.
+python_d.exe ..\Modules\_decimal\tests\deccheck.py
+echo.
+echo.
+
+echo # =================== release build ======================
+echo.
+python.exe ..\Modules\_decimal\tests\deccheck.py
+echo.
+echo.
+
+
+cd ..\Modules\_decimal\tests
+
+
+