docs: def make_trigrams(i: Iterable[T]) \
          -> Iterable[Tuple[Optional[T], Optional[T], Optional[T]]]:
      """
      Compute all trigrams of an iterable and yield them. You probably want
      to do something like:
  
      >>> t = set(make_trigrams('hi there'))
      """
      q = deque([None, None, None])
  
      def nxt():
          q.append(x)
          q.popleft()
          return tuple(c if c is not None else ' ' for c in q)
  
      for x in i:
          yield nxt()
  
      if q[-1] is not None:
          x = None
          yield nxt()