docs: def fetch_tuples(self, max_tuples=20, timeout=None):
          """
          Fetch a number of tuples from this view.
  
          Fetching of data must have been started with
          :py:meth:`start_data_fetch` before calling this method.
  
          If ``timeout`` is ``None`` then the returned list will
          contain ``max_tuples`` tuples. Otherwise if the timeout is reached
          the list may contain less than ``max_tuples`` tuples.
  
          Args:
              max_tuples(int): Maximum number of tuples to fetch.
              timeout(float): Maximum time to wait for ``max_tuples`` tuples.
  
          Returns:
              list: List of fetched tuples.
          .. versionadded:: 1.12
          """
          tuples = list()
          if timeout is None:
              while len(tuples) < max_tuples:
                  fetcher = self._data_fetcher
                  if not fetcher:
                      break
                  tuples.append(fetcher.items.get())
              return tuples
  
          timeout = float(timeout)
          end = time.time() + timeout
          while len(tuples) < max_tuples:
              qto = end - time.time()
              if qto <= 0:
                  break
              try:
                  fetcher = self._data_fetcher
                  if not fetcher:
                      break
                  tuples.append(fetcher.items.get(timeout=qto))
              except queue.Empty:
                  break
          return tuples