mirror of
https://github.com/python/cpython.git
synced 2026-05-06 12:49:07 -04:00
gh-141510: support frozendict's in the C decimal module (gh-145165)
This commit is contained in:
committed by
GitHub
parent
c2d3d6b0dd
commit
f3a381e54f
@@ -3963,15 +3963,21 @@ class ContextFlags:
|
||||
d.update(c.flags)
|
||||
self.assertEqual(d, c.flags)
|
||||
self.assertEqual(c.flags, d)
|
||||
self.assertEqual(frozendict(d), c.flags)
|
||||
self.assertEqual(c.flags, frozendict(d))
|
||||
|
||||
d[Inexact] = True
|
||||
self.assertNotEqual(d, c.flags)
|
||||
self.assertNotEqual(c.flags, d)
|
||||
self.assertNotEqual(frozendict(d), c.flags)
|
||||
self.assertNotEqual(c.flags, frozendict(d))
|
||||
|
||||
# Invalid SignalDict
|
||||
d = {Inexact:False}
|
||||
self.assertNotEqual(d, c.flags)
|
||||
self.assertNotEqual(c.flags, d)
|
||||
self.assertNotEqual(frozendict(d), c.flags)
|
||||
self.assertNotEqual(c.flags, frozendict(d))
|
||||
|
||||
d = ["xyz"]
|
||||
self.assertNotEqual(d, c.flags)
|
||||
|
||||
@@ -552,7 +552,7 @@ dict_as_flags(decimal_state *state, PyObject *val)
|
||||
uint32_t flags = 0;
|
||||
int x;
|
||||
|
||||
if (!PyDict_Check(val)) {
|
||||
if (!PyAnyDict_Check(val)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"argument must be a signal dict");
|
||||
return DEC_INVALID_SIGNALS;
|
||||
@@ -802,7 +802,7 @@ signaldict_richcompare(PyObject *v, PyObject *w, int op)
|
||||
if (PyDecSignalDict_Check(state, w)) {
|
||||
res = (SdFlags(v)==SdFlags(w)) ^ (op==Py_NE) ? Py_True : Py_False;
|
||||
}
|
||||
else if (PyDict_Check(w)) {
|
||||
else if (PyAnyDict_Check(w)) {
|
||||
uint32_t flags = dict_as_flags(state, w);
|
||||
if (flags & DEC_ERRORS) {
|
||||
if (flags & DEC_INVALID_SIGNALS) {
|
||||
|
||||
Reference in New Issue
Block a user