diff options
| author | Alex Gaynor <alex.gaynor@gmail.com> | 2012-10-20 20:39:49 -0700 |
|---|---|---|
| committer | Alex Gaynor <alex.gaynor@gmail.com> | 2012-10-20 20:39:49 -0700 |
| commit | 6b3d2bc9810153506620c7794a7a87ade29e3a97 (patch) | |
| tree | 900b142afd4ce79b196057f6a069c9d18ce16d08 | |
| parent | 6b0d93df18a5c265f87ee6e64dbdffbdecfcea4f (diff) | |
| parent | 2811e543c648a0669c88185a4d117eeb8ff09689 (diff) | |
Merge pull request #444 from mitar/patch-2
Allow reversed iteration over SortedDict.
| -rw-r--r-- | django/utils/datastructures.py | 3 | ||||
| -rw-r--r-- | tests/regressiontests/utils/datastructures.py | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py index ad17573104..d94a05dfb4 100644 --- a/django/utils/datastructures.py +++ b/django/utils/datastructures.py @@ -160,6 +160,9 @@ class SortedDict(dict): def __iter__(self): return iter(self.keyOrder) + def __reversed__(self): + return reversed(self.keyOrder) + def pop(self, k, *args): result = super(SortedDict, self).pop(k, *args) try: diff --git a/tests/regressiontests/utils/datastructures.py b/tests/regressiontests/utils/datastructures.py index dbc65d37a8..7c81ccd172 100644 --- a/tests/regressiontests/utils/datastructures.py +++ b/tests/regressiontests/utils/datastructures.py @@ -128,6 +128,12 @@ class SortedDictTests(SimpleTestCase): self.assertEqual(self.d1, {}) self.assertEqual(self.d1.keyOrder, []) + def test_reversed(self): + self.assertEqual(list(self.d1), [7, 1, 9]) + self.assertEqual(list(self.d2), [1, 9, 0, 7]) + self.assertEqual(list(reversed(self.d1)), [9, 1, 7]) + self.assertEqual(list(reversed(self.d2)), [7, 0, 9, 1]) + def test_insert(self): d = SortedDict() with warnings.catch_warnings(record=True) as w: |
