Replaced 'next' testing by collections.Iterator testing.

The new construct is also Python 3 compatible (where 'next' has
been renamed to '__next__').
This commit is contained in:
Claude Paroz 2012-05-22 20:26:46 +02:00
parent d5c7f9efc3
commit df7a65ac4b
2 changed files with 4 additions and 2 deletions

View File

@ -1,3 +1,4 @@
import collections
import copy
import datetime
import decimal
@ -436,7 +437,7 @@ class Field(object):
return bound_field_class(self, fieldmapping, original)
def _get_choices(self):
if hasattr(self._choices, 'next'):
if isinstance(self._choices, collections.Iterator):
choices, self._choices = tee(self._choices)
return choices
else:

View File

@ -4,6 +4,7 @@ Code to manage the creation and SQL rendering of 'where' constraints.
from __future__ import absolute_import
import collections
import datetime
from itertools import repeat
@ -49,7 +50,7 @@ class WhereNode(tree.Node):
return
obj, lookup_type, value = data
if hasattr(value, '__iter__') and hasattr(value, 'next'):
if isinstance(value, collections.Iterator):
# Consume any generators immediately, so that we can determine
# emptiness and transform any non-empty values correctly.
value = list(value)