Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #7496 -- It's now possible to pickle SortedDicts with pickle pr…

…otocol 2

(used in caching). Thanks, John Huddleston.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8531 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 62b39322f30fc274de033441d652a0c6714f93d7 1 parent d62cfce
@malcolmt malcolmt authored
View
1  AUTHORS
@@ -195,6 +195,7 @@ answer newbie questions, and generally made Django that much better:
Sung-Jin Hong <serialx.net@gmail.com>
Richard House <Richard.House@i-logue.com>
Robert Rock Howard <http://djangomojo.com/>
+ John Huddleston <huddlej@wwu.edu>
Rob Hudson <http://rob.cogit8.org/>
Jason Huggins <http://www.jrandolph.com/blog/>
Hyun Mi Ae
View
5 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 = {}
View
8 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 @@
>>> 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 @@
>>> d['person']['2']['firstname']
['Adrian']
-### ImmutableList ################################################################
+### ImmutableList ############################################################
>>> d = ImmutableList(range(10))
>>> d.sort()
Traceback (most recent call last):
Please sign in to comment.
Something went wrong with that request. Please try again.