code: def bitpos(self, key, bit, start=None, end=None):
          
          if bit not in (1, 0):
              raise ValueError("bit argument must be either 1 or 0")
          bytes_range = []
          if start is not None:
              bytes_range.append(start)
          if end is not None:
              if start is None:
                  bytes_range = [0, end]
              else:
                  bytes_range.append(end)
          return self.execute(b'BITPOS', key, bit, *bytes_range)
docs: Find first bit set or clear in a string.
  
          :raises ValueError: if bit is not 0 or 1