code: def sign_transaction(self, tx_data, unspents=None):  # pragma: no cover
          
          try:  # Json-tx-data from :func:`~bit.Key.prepare_transaction`
              data = json.loads(tx_data)
              assert(unspents is None)
  
              unspents = [Unspent.from_dict(unspent) for unspent in data['unspents']]
              outputs = data['outputs']
  
              return create_new_transaction(self, unspents, outputs)
          except:  # May be hex-encoded transaction using batching:
              try:
                  unspents = unspents or self.get_unspents()
              except ConnectionError:
                  raise ConnectionError(
                      'All APIs are unreachable. Please provide the unspent '
                      'inputs as unspents directly to sign this transaction.')
  
              tx_data = deserialize(tx_data)
              return sign_tx(self, tx_data, unspents=unspents)
docs: Creates a signed P2PKH transaction using previously prepared
          transaction data.
  
          :param tx_data: Hex-encoded transaction or output of :func:`~bit.Key.prepare_transaction`.
          :type tx_data: ``str``
          :param unspents: The UTXOs to use as the inputs. By default Bit will
                           communicate with the blockchain itself.
          :type unspents: ``list`` of :class:`~bit.network.meta.Unspent`
          :returns: The signed transaction as hex.
          :rtype: ``str``