You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
865 B

import bitmath
class SpecsParser:
def __init__(self, exceptional_devices, allowed_unit=10):
self.exceptional_devices = exceptional_devices
self.allowed_unit = allowed_unit
def transform_specs(self, specs):
try:
for device in filter(lambda x: x not in self.exceptional_devices, specs):
parsed = bitmath.parse_string_unsafe(specs[device])
if parsed.base != self.allowed_unit:
return False
specs[device] = int(parsed.to_Byte())
return True
except ValueError as _:
return False
def get_allowed_units(self):
if self.allowed_unit == 10:
unit_prefix = bitmath.SI_PREFIXES
else:
unit_prefix = bitmath.NIST_PREFIXES
return list(map(lambda u: u.upper() + "B", unit_prefix))