docs: def butlast(iterable):
      """Yield all items from ``iterable`` except the last one.
  
      >>> list(butlast(['spam', 'eggs', 'ham']))
      ['spam', 'eggs']
  
      >>> list(butlast(['spam']))
      []
  
      >>> list(butlast([]))
      []
      """
      iterable = iter(iterable)
      try:
          first = next(iterable)
      except StopIteration:
          return
      for second in iterable:
          yield first
          first = second