'Transforms a Python dictionary to an Input object.
Note:
Optionally, this method can also serialize a Cryptoconditions-
Fulfillment that is not yet signed.
Args:
data (dict): The Input to be transformed.
Returns:
:class:`~bigchaindb.common.transaction.Input`
Raises:
InvalidSignature: If an Input\'s URI couldn\'t be parsed.'

@classmethod
def from_dict(cls, data):

    fulfillment = data['fulfillment']
    if (not isinstance(fulfillment, Fulfillment)):
        try:
            fulfillment = Fulfillment.from_uri(data['fulfillment'])
        except ASN1DecodeError:
            raise InvalidSignature("Fulfillment    URI    couldn't    been    parsed")
        except TypeError:
            fulfillment = _fulfillment_from_details(data['fulfillment'])
    fulfills = TransactionLink.from_dict(data['fulfills'])
    return cls(fulfillment, data['owners_before'], fulfills)
