Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_invalid_iadd():
# Add to free unlocked balance with different instrument
wallet = Wallet(exchange, 10000 * USD)
with pytest.raises(IncompatibleInstrumentOperation):
wallet += 500 * BTC
def _bool_operation(left: Union['Quantity', float, int],
right: Union['Quantity', float, int],
bool_op: operator) -> bool:
right_size = right
if isinstance(right, Quantity):
if left.instrument != right.instrument:
raise IncompatibleInstrumentOperation(left, right)
right_size = right.size
if not isinstance(right_size, Number):
raise InvalidNonNumericQuantity(right_size)
boolean = bool_op(left.size, right_size)
if not isinstance(boolean, bool):
raise Exception("`bool_op` cannot return a non-bool type ({}).".format(boolean))
return boolean
def _math_operation(left: Union['Quantity', float, int],
right: Union['Quantity', float, int],
op: operator) -> 'Quantity':
right_size = right
if isinstance(right, Quantity):
if left.instrument != right.instrument:
raise IncompatibleInstrumentOperation(left, right)
if left.path_id and right.path_id:
if left._path_id != right._path_id:
raise QuantityOpPathMismatch(left.path_id, right.path_id)
right_size = right.size
if not isinstance(right_size, Number):
raise InvalidNonNumericQuantity(right_size)
size = op(left.size, right_size)
return Quantity(instrument=left.instrument, size=size, path_id=left.path_id)