diff --git a/AUTHORS b/AUTHORS index c57f9eafe5..943274b19a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -195,6 +195,7 @@ answer newbie questions, and generally made Django that much better: Sung-Jin Hong Richard House Robert Rock Howard + John Huddleston Rob Hudson Jason Huggins Hyun Mi Ae diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py index 818731ba04..5837c3d236 100644 --- a/django/utils/datastructures.py +++ b/django/utils/datastructures.py @@ -54,6 +54,11 @@ class SortedDict(dict): """ A dictionary that keeps its keys in the order in which they're inserted. """ + def __new__(cls, *args, **kwargs): + instance = super(SortedDict, cls).__new__(cls, *args, **kwargs) + instance.keyOrder = [] + return instance + def __init__(self, data=None): if data is None: data = {} diff --git a/tests/regressiontests/datastructures/tests.py b/tests/regressiontests/datastructures/tests.py index f5d5b91d3d..9404a0a792 100644 --- a/tests/regressiontests/datastructures/tests.py +++ b/tests/regressiontests/datastructures/tests.py @@ -1,6 +1,7 @@ """ # Tests for stuff in django.utils.datastructures. +>>> import pickle >>> from django.utils.datastructures import * ### MergeDict ################################################################# @@ -103,13 +104,16 @@ Init from sequence of tuples >>> print repr(d) {1: 'one', 0: 'zero', 2: 'two'} +>>> pickle.loads(pickle.dumps(d, 2)) +{1: 'one', 0: 'zero', 2: 'two'} + >>> d.clear() >>> d {} >>> d.keyOrder [] -### DotExpandedDict ############################################################ +### DotExpandedDict ########################################################## >>> d = DotExpandedDict({'person.1.firstname': ['Simon'], 'person.1.lastname': ['Willison'], 'person.2.firstname': ['Adrian'], 'person.2.lastname': ['Holovaty']}) >>> d['person']['1']['lastname'] @@ -119,7 +123,7 @@ Init from sequence of tuples >>> d['person']['2']['firstname'] ['Adrian'] -### ImmutableList ################################################################ +### ImmutableList ############################################################ >>> d = ImmutableList(range(10)) >>> d.sort() Traceback (most recent call last):