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
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))
|
|
|