code: async def xpending(self, name: str, group: str,
                         start='-', end='+', count=None, consumer=None) -> list:
          
          pieces = [name, group]
          if count is not None:
              pieces.extend([start, end, count])
              if consumer is not None:
                  pieces.append(str(consumer))
          # todo: may there be a parse function
          return await self.execute_command('XPENDING', *pieces)
docs: Available since 5.0.0.
  
          Time complexity:
          O(log(N)+M) with N being the number of elements in the consumer
          group pending entries list, and M the number of elements being returned.
          When the command returns just the summary it runs in O(1)
          time assuming the list of consumers is small,
          otherwise there is additional O(N) time needed to iterate every consumer.
  
          Fetching data from a stream via a consumer group,
          and not acknowledging such data,
          has the effect of creating pending entries.
          The XPENDING command is the interface to inspect the list of pending messages.
  
          :param name: name of the stream
          :param group: name of the consumer group
          :param start: first stream ID. defaults to '-',
                 meaning the earliest available.
          :param end: last stream ID. defaults to '+',
                  meaning the latest available.
          :param count: int, number of entries
                  [NOTICE] only when count is set to int,
                  start & end options will have effect
                  and detail of pending entries will be returned
          :param consumer: str, consumer of the stream in the group
                  [NOTICE] only when count is set to int,
                  this option can be appended to
                  query pending entries of given consumer