code: def get_output(self, transaction_hash, output_index):
          
          cached_output = yield from self._cache.get(transaction_hash, output_index)
  
          if cached_output is not None:
              return cached_output
  
          transaction = yield from self._transaction_provider(transaction_hash)
  
          if transaction is None:
              raise ValueError('Transaction {0} could not be retrieved'.format(bitcoin.core.b2lx(transaction_hash)))
  
          colored_outputs = yield from self.color_transaction(transaction)
  
          for index, output in enumerate(colored_outputs):
              yield from self._cache.put(transaction_hash, index, output)
  
          return colored_outputs[output_index]
docs: Gets an output and information about its asset ID and asset quantity.
  
          :param bytes transaction_hash: The hash of the transaction containing the output.
          :param int output_index: The index of the output.
          :return: An object containing the output as well as its asset ID and asset quantity.
          :rtype: Future[TransactionOutput]