code: def one(iterable, too_short=None, too_long=None):
      
      it = iter(iterable)
  
      try:
          value = next(it)
      except StopIteration:
          raise too_short or ValueError('too few items in iterable (expected 1)')
  
      try:
          next(it)
      except StopIteration:
          pass
      else:
          raise too_long or ValueError('too many items in iterable (expected 1)')
  
      return value
docs: Return the first item from *iterable*, which is expected to contain only
      that item. Raise an exception if *iterable* is empty or has more than one
      item.
  
      :func:`one` is useful for ensuring that an iterable contains only one item.
      For example, it can be used to retrieve the result of a database query
      that is expected to return a single row.
  
      If *iterable* is empty, ``ValueError`` will be raised. You may specify a
      different exception with the *too_short* keyword:
  
          >>> it = []
          >>> one(it)  # doctest: +IGNORE_EXCEPTION_DETAIL
          Traceback (most recent call last):
          ...
          ValueError: too many items in iterable (expected 1)'
          >>> too_short = IndexError('too few items')
          >>> one(it, too_short=too_short)  # doctest: +IGNORE_EXCEPTION_DETAIL
          Traceback (most recent call last):
          ...
          IndexError: too few items
  
      Similarly, if *iterable* contains more than one item, ``ValueError`` will
      be raised. You may specify a different exception with the *too_long*
      keyword:
  
          >>> it = ['too', 'many']
          >>> one(it)  # doctest: +IGNORE_EXCEPTION_DETAIL
          Traceback (most recent call last):
          ...
          ValueError: too many items in iterable (expected 1)'
          >>> too_long = RuntimeError
          >>> one(it, too_long=too_long)  # doctest: +IGNORE_EXCEPTION_DETAIL
          Traceback (most recent call last):
          ...
          RuntimeError
  
      Note that :func:`one` attempts to advance *iterable* twice to ensure there
      is only one item. See :func:`spy` or :func:`peekable` to check iterable
      contents less destructively.