| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -328,14 +328,14 @@ def __ior__(self, other): | |||
| 328 | 328 | return self | |
| 329 | 329 | ||
| 330 | 330 | def __or__(self, other): | |
| 331 | - if not isinstance(other, dict): | ||
| 331 | + if not isinstance(other, (dict, frozendict)): | ||
| 332 | 332 | return NotImplemented | |
| 333 | 333 | new = self.__class__(self) | |
| 334 | 334 | new.update(other) | |
| 335 | 335 | return new | |
| 336 | 336 | ||
| 337 | 337 | def __ror__(self, other): | |
| 338 | - if not isinstance(other, dict): | ||
| 338 | + if not isinstance(other, (dict, frozendict)): | ||
| 339 | 339 | return NotImplemented | |
| 340 | 340 | new = self.__class__(other) | |
| 341 | 341 | new.update(self) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -698,6 +698,7 @@ def test_merge_operator(self): | |||
| 698 | 698 | d |= list(b.items()) | |
| 699 | 699 | expected = OrderedDict({0: 0, 1: 1, 2: 2, 3: 3}) | |
| 700 | 700 | self.assertEqual(a | dict(b), expected) | |
| 701 | + self.assertEqual(a | frozendict(b), expected) | ||
| 701 | 702 | self.assertEqual(a | b, expected) | |
| 702 | 703 | self.assertEqual(c, expected) | |
| 703 | 704 | self.assertEqual(d, expected) | |
@@ -706,12 +707,15 @@ def test_merge_operator(self): | |||
| 706 | 707 | c |= a | |
| 707 | 708 | expected = OrderedDict({1: 1, 2: 1, 3: 3, 0: 0}) | |
| 708 | 709 | self.assertEqual(dict(b) | a, expected) | |
| 710 | + self.assertEqual(frozendict(b) | a, expected) | ||
| 709 | 711 | self.assertEqual(b | a, expected) | |
| 710 | 712 | self.assertEqual(c, expected) | |
| 711 | 713 | ||
| 712 | 714 | self.assertIs(type(a | b), OrderedDict) | |
| 713 | 715 | self.assertIs(type(dict(a) | b), OrderedDict) | |
| 716 | + self.assertIs(type(frozendict(a) | b), frozendict) | ||
| 714 | 717 | self.assertIs(type(a | dict(b)), OrderedDict) | |
| 718 | + self.assertIs(type(a | frozendict(b)), OrderedDict) | ||
| 715 | 719 | ||
| 716 | 720 | expected = a.copy() | |
| 717 | 721 | a |= () | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1 @@ | |||
| 1 | + Fix merging of :class:`collections.OrderedDict` and :class:`frozendict`. | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -906,7 +906,7 @@ odict_or(PyObject *left, PyObject *right) | |||
| 906 | 906 | type = Py_TYPE(right); | |
| 907 | 907 | other = left; | |
| 908 | 908 | } | |
| 909 | - if (!PyDict_Check(other)) { | ||
| 909 | + if (!PyAnyDict_Check(other)) { | ||
| 910 | 910 | Py_RETURN_NOTIMPLEMENTED; | |
| 911 | 911 | } | |
| 912 | 912 | PyObject *new = PyObject_CallOneArg((PyObject*)type, left); | |
@@ -2271,7 +2271,7 @@ static int | |||
| 2271 | 2271 | mutablemapping_update_arg(PyObject *self, PyObject *arg) | |
| 2272 | 2272 | { | |
| 2273 | 2273 | int res = 0; | |
| 2274 | - if (PyDict_CheckExact(arg)) { | ||
| 2274 | + if (PyAnyDict_CheckExact(arg)) { | ||
| 2275 | 2275 | PyObject *items = PyDict_Items(arg); | |
| 2276 | 2276 | if (items == NULL) { | |
| 2277 | 2277 | return -1; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments