in common/memory.py [0:0]
def str_to_memory(mem_repr: str) -> Memory:
"""
Input Examples: "100mb", "22gb", "8tb", "0", "8.5 TB"
"""
mem_repr = mem_repr.upper().strip()
if mem_repr == "0":
return Memory(0, unit=MemoryUnit.B)
units = [
MemoryUnit.TB,
MemoryUnit.GB,
MemoryUnit.MB,
MemoryUnit.KB,
MemoryUnit.B, # Bytes must go last, b/c every other unit ends in B
]
for unit in units:
if mem_repr.endswith(unit.value):
try:
digit = mem_repr[: -len(unit.value)].strip()
value = float(digit)
except ValueError:
raise InvalidMemoryInput(f"Memory value is not a number: {digit}")
return Memory(value, unit)
raise InvalidMemoryInput(f"Invalid memory units. Input: {mem_repr}")