Kaydet (Commit) 0aa12da0 authored tarafından Russell Keith-Magee's avatar Russell Keith-Magee

Fixed #12476 -- Forced the rollout of generators passed to SortedDict so that…

Fixed #12476 -- Forced the rollout of generators passed to SortedDict so that the data source can be read twice. Thanks to gsf for the report, and Alex for the patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12064 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst f45ac2ff
from types import GeneratorType
from django.utils.copycompat import deepcopy
......@@ -65,6 +67,11 @@ class SortedDict(dict):
def __init__(self, data=None):
if data is None:
data = {}
elif isinstance(data, GeneratorType):
# Unfortunately we need to be able to read a generator twice. Once
# to get the data into self with our super().__init__ call and a
# second time to setup keyOrder correctly
data = list(data)
super(SortedDict, self).__init__(data)
if isinstance(data, dict):
self.keyOrder = data.keys()
......
......@@ -95,6 +95,9 @@ True
>>> d.pop('one', 'missing')
'missing'
>>> SortedDict((i, i) for i in xrange(3))
{0: 0, 1: 1, 2: 2}
We don't know which item will be popped in popitem(), so we'll just check that
the number of keys has decreased.
>>> l = len(d)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment