docs: def fetched_records(self, max_records=None):
          """Returns previously fetched records and updates consumed offsets.
  
          Arguments:
              max_records (int): Maximum number of records returned. Defaults
                  to max_poll_records configuration.
  
          Raises:
              OffsetOutOfRangeError: if no subscription offset_reset_strategy
              CorruptRecordException: if message crc validation fails (check_crcs
                  must be set to True)
              RecordTooLargeError: if a message is larger than the currently
                  configured max_partition_fetch_bytes
              TopicAuthorizationError: if consumer is not authorized to fetch
                  messages from the topic
  
          Returns: (records (dict), partial (bool))
              records: {TopicPartition: [messages]}
              partial: True if records returned did not fully drain any pending
                  partition requests. This may be useful for choosing when to
                  pipeline additional fetch requests.
          """
          if max_records is None:
              max_records = self.config['max_poll_records']
          assert max_records > 0
  
          drained = collections.defaultdict(list)
          records_remaining = max_records
  
          while records_remaining > 0:
              if not self._next_partition_records:
                  if not self._completed_fetches:
                      break
                  completion = self._completed_fetches.popleft()
                  self._next_partition_records = self._parse_fetched_data(completion)
              else:
                  records_remaining -= self._append(drained,
                                                    self._next_partition_records,
                                                    records_remaining)
          return dict(drained), bool(self._completed_fetches)