示例#1
0
文件: constructor.py 项目: LLNL/spack
 def construct_yaml_int(self, node):
     value = to_str(self.construct_scalar(node))
     value = value.replace('_', '')
     sign = +1
     if value[0] == '-':
         sign = -1
     if value[0] in '+-':
         value = value[1:]
     if value == '0':
         return 0
     elif value.startswith('0b'):
         return sign*int(value[2:], 2)
     elif value.startswith('0x'):
         return sign*int(value[2:], 16)
     elif value.startswith('0o'):
         return sign*int(value[2:], 8)
     elif self.processing_version != (1, 2) and value[0] == '0':
         return sign*int(value, 8)
     elif self.processing_version != (1, 2) and ':' in value:
         digits = [int(part) for part in value.split(':')]
         digits.reverse()
         base = 1
         value = 0
         for digit in digits:
             value += digit*base
             base *= 60
         return sign*value
     else:
         return sign*int(value)
示例#2
0
 def construct_yaml_int(self, node):
     """Add int fix."""
     value = to_str(self.construct_scalar(node))
     value = value.replace('_', '')
     sign = +1
     if value[0] == '-':
         sign = -1
     if value[0] in '+-':
         value = value[1:]
     if value == '0':
         return 0
     elif value.startswith('0b'):
         return sign * int(value[2:], 2)
     elif value.startswith('0x'):
         return sign * int(value[2:], 16)
     elif value.startswith('0o'):
         return sign * int(value[2:], 8)
     # elif value[0] == '0':
     #    return sign*int(value, 8)
     elif ':' in value:
         digits = [int(part) for part in value.split(':')]
         digits.reverse()
         base = 1
         int_value = 0
         for digit in digits:
             int_value += digit * base
             base *= 60
         return sign * int_value
     else:
         return sign * int(value)
示例#3
0
 def construct_yaml_int(self, node):
     value = to_str(self.construct_scalar(node))
     value = value.replace('_', '')
     sign = +1
     if value[0] == '-':
         sign = -1
     if value[0] in '+-':
         value = value[1:]
     if value == '0':
         return 0
     elif value.startswith('0b'):
         return sign * int(value[2:], 2)
     elif value.startswith('0x'):
         return sign * int(value[2:], 16)
     elif value.startswith('0o'):
         return sign * int(value[2:], 8)
     elif self.processing_version != (1, 2) and value[0] == '0':
         return sign * int(value, 8)
     elif self.processing_version != (1, 2) and ':' in value:
         digits = [int(part) for part in value.split(':')]
         digits.reverse()
         base = 1
         value = 0
         for digit in digits:
             value += digit * base
             base *= 60
         return sign * value
     else:
         return sign * int(value)
示例#4
0
文件: constructor.py 项目: LLNL/spack
 def construct_yaml_binary(self, node):
     value = self.construct_scalar(node)
     try:
         return to_str(value).decode('base64')
     except (binascii.Error, UnicodeEncodeError) as exc:
         raise ConstructorError(
             None, None,
             "failed to decode base64 data: %s" % exc, node.start_mark)
示例#5
0
 def construct_yaml_binary(self, node):
     value = self.construct_scalar(node)
     try:
         return to_str(value).decode('base64')
     except (binascii.Error, UnicodeEncodeError) as exc:
         raise ConstructorError(
             None, None, "failed to decode base64 data: %s" % exc,
             node.start_mark)
示例#6
0
文件: constructor.py 项目: LLNL/spack
 def construct_yaml_float(self, node):
     value = to_str(self.construct_scalar(node))
     value = value.replace('_', '').lower()
     sign = +1
     if value[0] == '-':
         sign = -1
     if value[0] in '+-':
         value = value[1:]
     if value == '.inf':
         return sign*self.inf_value
     elif value == '.nan':
         return self.nan_value
     elif ':' in value:
         digits = [float(part) for part in value.split(':')]
         digits.reverse()
         base = 1
         value = 0.0
         for digit in digits:
             value += digit*base
             base *= 60
         return sign*value
     else:
         return sign*float(value)
示例#7
0
 def construct_yaml_float(self, node):
     value = to_str(self.construct_scalar(node))
     value = value.replace('_', '').lower()
     sign = +1
     if value[0] == '-':
         sign = -1
     if value[0] in '+-':
         value = value[1:]
     if value == '.inf':
         return sign * self.inf_value
     elif value == '.nan':
         return self.nan_value
     elif ':' in value:
         digits = [float(part) for part in value.split(':')]
         digits.reverse()
         base = 1
         value = 0.0
         for digit in digits:
             value += digit * base
             base *= 60
         return sign * value
     else:
         return sign * float(value)