Beispiel #1
0
    def __set__(self, instance, value):
        if super(FloatDescriptor, self).__set__(instance, value):  # the None handler...kinda hacky
            return

        try:
            iv = parse_float(value, self.name, instance)
        except Exception as e:
            logger.error(
                'Failed converting {} of type {} to `float`\n\t'
                'for field {} of class {} with exception {} - {}.\n\t'
                'Setting value to None, which may be against the standard'.format(
                    value, type(value), self.name, instance.__class__.__name__, type(e), e))
            self.data[instance] = None
            return

        if self._in_bounds(iv):
            self.data[instance] = iv
        else:
            msg = 'Attribute {} of class {}\n\t' \
                  'is required by standard to take value between {}.'.format(
                    self.name, instance.__class__.__name__, self.bounds)
            if self.strict:
                raise ValueError(msg)
            else:
                logger.info(msg)
            self.data[instance] = iv
Beispiel #2
0
 def RcvFMRate(self, value):
     if value is None:
         self._RcvFMRate = None
     else:
         try:
             self._RcvFMRate = parse_float(value, 'RcvFMRate', self)
         except Exception as e:
             logger.error(
                 'Failed parsing value {} for field RCVFMRate of type "float",\n\t'
                 'with error {} - {}.\n\t'
                 'The value has been set to None.'.format(value, type(e), e))
             self._RcvFMRate = None
Beispiel #3
0
    def __set__(self, instance, value):
        if super(FloatModularDescriptor, self).__set__(instance, value):  # the None handler...kinda hacky
            return

        try:
            val = parse_float(value, self.name, instance)
        except Exception as e:
            logger.error(
                'Failed converting {} of type {} to `float`\n\t'
                'for field {} of class {} with exception {} - {}.\n\t'
                'Setting value to None, which may be against the standard'.format(
                    value, type(value), self.name, instance.__class__.__name__, type(e), e))
            self.data[instance] = None
            return

        # do modular arithmetic manipulations
        val = (val % (2 * self.limit))  # NB: % and * have same precedence, so it can be super dumb
        self.data[instance] = val if val <= self.limit else val - 2 * self.limit