code: def collect_one(self, *args, **kwargs):
          
          generator = self.collect(*args, **kwargs)
          try:
              value = next(generator)
          except StopIteration:
              raise Exception("Expected exactly one value don't have any")
          try:
              next(generator)
          except StopIteration:
              return value
          raise Exception('Expected exactly one value but have more')
docs: Same as `collect` but expects to have only one result.
  
          :return: the only result directly, not the generator like `collect`.