code: def zrevrangebyscore(self, key, max=float('inf'), min=float('-inf'),
                           *, exclude=None, withscores=False,
                           offset=None, count=None, encoding=_NOTSET):
          
          if not isinstance(min, (int, float)):
              raise TypeError("min argument must be int or float")
          if not isinstance(max, (int, float)):
              raise TypeError("max argument must be int or float")
  
          if (offset is not None and count is None) or \
                  (count is not None and offset is None):
              raise TypeError("offset and count must both be specified")
          if offset is not None and not isinstance(offset, int):
              raise TypeError("offset argument must be int")
          if count is not None and not isinstance(count, int):
              raise TypeError("count argument must be int")
  
          min, max = _encode_min_max(exclude, min, max)
  
          args = []
          if withscores:
              args = [b'WITHSCORES']
          if offset is not None and count is not None:
              args.extend([b'LIMIT', offset, count])
          fut = self.execute(b'ZREVRANGEBYSCORE', key, max, min, *args,
                             encoding=encoding)
          if withscores:
              return wait_convert(fut, pairs_int_or_float)
          return fut
docs: Return a range of members in a sorted set, by score,
          with scores ordered from high to low.
  
          :raises TypeError: if min or max is not float or int
          :raises TypeError: if both offset and count are not specified
          :raises TypeError: if offset is not int
          :raises TypeError: if count is not int