Fixed #7496 -- It's now possible to pickle SortedDicts with pickle protocol 2
(used in caching). Thanks, John Huddleston. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8531 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
d62cfce213
commit
62b39322f3
1
AUTHORS
1
AUTHORS
|
@ -195,6 +195,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
Sung-Jin Hong <serialx.net@gmail.com>
|
Sung-Jin Hong <serialx.net@gmail.com>
|
||||||
Richard House <Richard.House@i-logue.com>
|
Richard House <Richard.House@i-logue.com>
|
||||||
Robert Rock Howard <http://djangomojo.com/>
|
Robert Rock Howard <http://djangomojo.com/>
|
||||||
|
John Huddleston <huddlej@wwu.edu>
|
||||||
Rob Hudson <http://rob.cogit8.org/>
|
Rob Hudson <http://rob.cogit8.org/>
|
||||||
Jason Huggins <http://www.jrandolph.com/blog/>
|
Jason Huggins <http://www.jrandolph.com/blog/>
|
||||||
Hyun Mi Ae
|
Hyun Mi Ae
|
||||||
|
|
|
@ -54,6 +54,11 @@ class SortedDict(dict):
|
||||||
"""
|
"""
|
||||||
A dictionary that keeps its keys in the order in which they're inserted.
|
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):
|
def __init__(self, data=None):
|
||||||
if data is None:
|
if data is None:
|
||||||
data = {}
|
data = {}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
# Tests for stuff in django.utils.datastructures.
|
# Tests for stuff in django.utils.datastructures.
|
||||||
|
|
||||||
|
>>> import pickle
|
||||||
>>> from django.utils.datastructures import *
|
>>> from django.utils.datastructures import *
|
||||||
|
|
||||||
### MergeDict #################################################################
|
### MergeDict #################################################################
|
||||||
|
@ -103,13 +104,16 @@ Init from sequence of tuples
|
||||||
>>> print repr(d)
|
>>> print repr(d)
|
||||||
{1: 'one', 0: 'zero', 2: 'two'}
|
{1: 'one', 0: 'zero', 2: 'two'}
|
||||||
|
|
||||||
|
>>> pickle.loads(pickle.dumps(d, 2))
|
||||||
|
{1: 'one', 0: 'zero', 2: 'two'}
|
||||||
|
|
||||||
>>> d.clear()
|
>>> d.clear()
|
||||||
>>> d
|
>>> d
|
||||||
{}
|
{}
|
||||||
>>> d.keyOrder
|
>>> d.keyOrder
|
||||||
[]
|
[]
|
||||||
|
|
||||||
### DotExpandedDict ############################################################
|
### DotExpandedDict ##########################################################
|
||||||
|
|
||||||
>>> d = DotExpandedDict({'person.1.firstname': ['Simon'], 'person.1.lastname': ['Willison'], 'person.2.firstname': ['Adrian'], 'person.2.lastname': ['Holovaty']})
|
>>> d = DotExpandedDict({'person.1.firstname': ['Simon'], 'person.1.lastname': ['Willison'], 'person.2.firstname': ['Adrian'], 'person.2.lastname': ['Holovaty']})
|
||||||
>>> d['person']['1']['lastname']
|
>>> d['person']['1']['lastname']
|
||||||
|
@ -119,7 +123,7 @@ Init from sequence of tuples
|
||||||
>>> d['person']['2']['firstname']
|
>>> d['person']['2']['firstname']
|
||||||
['Adrian']
|
['Adrian']
|
||||||
|
|
||||||
### ImmutableList ################################################################
|
### ImmutableList ############################################################
|
||||||
>>> d = ImmutableList(range(10))
|
>>> d = ImmutableList(range(10))
|
||||||
>>> d.sort()
|
>>> d.sort()
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
|
|
Loading…
Reference in New Issue