Fixed #23664 -- Provided a consistent definition for OrderedSet.__bool__

This also defines QuerySet.__bool__ for consistency though this should not have any consequence as bool(qs) used to fallback on QuerySet.__len__ in Py3.
This commit is contained in:
Thomas Chaumeny 2014-10-16 12:43:46 +02:00 committed by Baptiste Mispelon
parent 2e5b2c612e
commit b962653060
3 changed files with 19 additions and 3 deletions

View File

@ -162,10 +162,13 @@ class QuerySet(object):
self._fetch_all()
return iter(self._result_cache)
def __nonzero__(self):
def __bool__(self):
self._fetch_all()
return bool(self._result_cache)
def __nonzero__(self): # Python 2 compatibility
return type(self).__bool__(self)
def __getitem__(self, k):
"""
Retrieves an item or slice from the set of results.

View File

@ -271,9 +271,12 @@ class OrderedSet(object):
def __contains__(self, item):
return item in self.dict
def __nonzero__(self):
def __bool__(self):
return bool(self.dict)
def __nonzero__(self): # Python 2 compatibility
return type(self).__bool__(self)
class MultiValueDictKeyError(KeyError):
pass

View File

@ -8,7 +8,7 @@ import pickle
from django.test import SimpleTestCase
from django.test.utils import IgnoreDeprecationWarningsMixin
from django.utils.datastructures import (DictWrapper, ImmutableList,
MultiValueDict, MultiValueDictKeyError, MergeDict, SortedDict)
MultiValueDict, MultiValueDictKeyError, MergeDict, OrderedSet, SortedDict)
from django.utils import six
@ -206,6 +206,16 @@ class MergeDictTests(IgnoreDeprecationWarningsMixin, SimpleTestCase):
d1['key2']
class OrderedSetTests(SimpleTestCase):
def test_bool(self):
# Refs #23664
s = OrderedSet()
self.assertFalse(s)
s.add(1)
self.assertTrue(s)
class MultiValueDictTests(SimpleTestCase):
def test_multivaluedict(self):