mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
bpo-34320: Fix dict(o) didn't copy order of dict subclass (GH-8624)
When dict subclass overrides order (`__iter__()`, `keys()`, and `items()`), `dict(o)` should use it instead of dict ordering. https://bugs.python.org/issue34320
This commit is contained in:
parent
d345bb4d9b
commit
2aaf98c16a
5 changed files with 60 additions and 1 deletions
|
|
@ -9,6 +9,23 @@ import struct
|
|||
import collections
|
||||
import itertools
|
||||
|
||||
|
||||
class FunctionCalls(unittest.TestCase):
|
||||
|
||||
def test_kwargs_order(self):
|
||||
# bpo-34320: **kwargs should preserve order of passed OrderedDict
|
||||
od = collections.OrderedDict([('a', 1), ('b', 2)])
|
||||
od.move_to_end('a')
|
||||
expected = list(od.items())
|
||||
|
||||
def fn(**kw):
|
||||
return kw
|
||||
|
||||
res = fn(**od)
|
||||
self.assertIsInstance(res, dict)
|
||||
self.assertEqual(list(res.items()), expected)
|
||||
|
||||
|
||||
# The test cases here cover several paths through the function calling
|
||||
# code. They depend on the METH_XXX flag that is used to define a C
|
||||
# function, which can't be verified from Python. If the METH_XXX decl
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue