Exemple #1
0
 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)