def attempt_magnitude_cast(self, other): if self.differs_only_in_magnitude(other): factor = UnitTypeSymbol.get_conversion_factor(self.astropy_unit, other.astropy_unit) other.referenced_object.set_implicit_conversion_factor(factor) code, message = Messages.get_implicit_magnitude_conversion(self, other, factor) Logger.log_message(code=code, message=message, error_position=self.referenced_object.get_source_position(), log_level=LoggingLevel.WARNING) return self else: return self.binary_operation_not_defined_error('+/-', other)
def do_magnitude_conversion_rhs_to_lhs(_rhs_type_symbol, _lhs_type_symbol, _containing_expression): """ determine conversion factor from rhs to lhs, register it with the relevant expression, drop warning """ _containing_expression.set_implicit_conversion_factor( UnitTypeSymbol.get_conversion_factor(_lhs_type_symbol.astropy_unit, _rhs_type_symbol.astropy_unit)) _containing_expression.type = _lhs_type_symbol code, message = Messages.get_implicit_magnitude_conversion(_lhs_type_symbol, _rhs_type_symbol, _containing_expression.get_implicit_conversion_factor()) Logger.log_message(code=code, message=message, error_position=_containing_expression.get_source_position(), log_level=LoggingLevel.WARNING)