|  | @@ -601,8 +601,7 @@ class LimitedSet(object):
 | 
											
												
													
														|  |      You can also configure minlen, which is the minimal residual size
 |  |      You can also configure minlen, which is the minimal residual size
 | 
											
												
													
														|  |      of the set.
 |  |      of the set.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    All  arguments are optional, with exception of minlen, which must
 |  | 
 | 
											
												
													
														|  | -    be smaller than maxlen.  Unconfigured limits will not be enforced.
 |  | 
 | 
											
												
													
														|  | 
 |  | +    All arguments are optional, and no limits are enabled by default.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      :keyword maxlen: Optional max number of items.
 |  |      :keyword maxlen: Optional max number of items.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -611,11 +610,13 @@ class LimitedSet(object):
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      :keyword expires: TTL for all items.
 |  |      :keyword expires: TTL for all items.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        Items aging over expiration are purged as keys are inserted.
 |  | 
 | 
											
												
													
														|  | 
 |  | +        Expired items are purged as keys are inserted.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      :keyword minlen: Minimal residual size of this set.
 |  |      :keyword minlen: Minimal residual size of this set.
 | 
											
												
													
														|  |          .. versionadded:: 4.0
 |  |          .. versionadded:: 4.0
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +        Value must be less than ``maxlen`` if both are configured.
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |          Older expired items will be deleted, only after the set
 |  |          Older expired items will be deleted, only after the set
 | 
											
												
													
														|  |          exceeds minlen number of items.
 |  |          exceeds minlen number of items.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -693,7 +694,9 @@ class LimitedSet(object):
 | 
											
												
													
														|  |              self.purge()
 |  |              self.purge()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def update(self, other):
 |  |      def update(self, other):
 | 
											
												
													
														|  | -        """Update this LimitedSet from other LimitedSet, dict or iterable."""
 |  | 
 | 
											
												
													
														|  | 
 |  | +        """Update this set from other LimitedSet, dict or iterable."""
 | 
											
												
													
														|  | 
 |  | +        if not other:
 | 
											
												
													
														|  | 
 |  | +            return
 | 
											
												
													
														|  |          if isinstance(other, LimitedSet):
 |  |          if isinstance(other, LimitedSet):
 | 
											
												
													
														|  |              self._data.update(other._data)
 |  |              self._data.update(other._data)
 | 
											
												
													
														|  |              self._refresh_heap()
 |  |              self._refresh_heap()
 | 
											
										
											
												
													
														|  | @@ -701,7 +704,7 @@ class LimitedSet(object):
 | 
											
												
													
														|  |          elif isinstance(other, dict):
 |  |          elif isinstance(other, dict):
 | 
											
												
													
														|  |              # revokes are sent as a dict
 |  |              # revokes are sent as a dict
 | 
											
												
													
														|  |              for key, inserted in items(other):
 |  |              for key, inserted in items(other):
 | 
											
												
													
														|  | -                if isinstance(inserted, list):
 |  | 
 | 
											
												
													
														|  | 
 |  | +                if isinstance(inserted, (tuple, list)):
 | 
											
												
													
														|  |                      # in case someone uses ._data directly for sending update
 |  |                      # in case someone uses ._data directly for sending update
 | 
											
												
													
														|  |                      inserted = inserted[0]
 |  |                      inserted = inserted[0]
 | 
											
												
													
														|  |                  if not isinstance(inserted, float):
 |  |                  if not isinstance(inserted, float):
 | 
											
										
											
												
													
														|  | @@ -720,7 +723,6 @@ class LimitedSet(object):
 | 
											
												
													
														|  |          # mark an existing item as removed. If KeyError is not found, pass.
 |  |          # mark an existing item as removed. If KeyError is not found, pass.
 | 
											
												
													
														|  |          entry = self._data.pop(item, sentinel)
 |  |          entry = self._data.pop(item, sentinel)
 | 
											
												
													
														|  |          if entry is not sentinel:
 |  |          if entry is not sentinel:
 | 
											
												
													
														|  | -            entry[-1] = sentinel
 |  | 
 | 
											
												
													
														|  |              if self._heap_overload > self.max_heap_percent_overload:
 |  |              if self._heap_overload > self.max_heap_percent_overload:
 | 
											
												
													
														|  |                  self._refresh_heap()
 |  |                  self._refresh_heap()
 | 
											
												
													
														|  |      pop_value = discard
 |  |      pop_value = discard
 | 
											
										
											
												
													
														|  | @@ -794,6 +796,10 @@ class LimitedSet(object):
 | 
											
												
													
														|  |          return self.__class__, (
 |  |          return self.__class__, (
 | 
											
												
													
														|  |              self.maxlen, self.expires, self.as_dict(), self.minlen)
 |  |              self.maxlen, self.expires, self.as_dict(), self.minlen)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    def __bool__(self):
 | 
											
												
													
														|  | 
 |  | +        return bool(self._data)
 | 
											
												
													
														|  | 
 |  | +    __nonzero__ = __bool__  # Py2
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      @property
 |  |      @property
 | 
											
												
													
														|  |      def _heap_overload(self):
 |  |      def _heap_overload(self):
 | 
											
												
													
														|  |          """Compute how much is heap bigger than data [percents]."""
 |  |          """Compute how much is heap bigger than data [percents]."""
 |