21 lines
647 B
Python
21 lines
647 B
Python
from typing import Union
|
|
|
|
import humanfriendly
|
|
|
|
|
|
# FIXME: we don't need to compact for int
|
|
class Memory(int):
|
|
def __new__(cls, value: Union[str, int]) -> "Memory":
|
|
if isinstance(value, str):
|
|
parsed = humanfriendly.parse_size(value, binary=True)
|
|
return super().__new__(cls, parsed)
|
|
return super().__new__(cls, value)
|
|
|
|
|
|
class Time(int):
|
|
def __new__(cls, value: Union[str, int]) -> "Time":
|
|
if isinstance(value, str):
|
|
parsed = humanfriendly.parse_timespan(value) * 1_000_000_000 # ns
|
|
return super().__new__(cls, round(parsed))
|
|
return super().__new__(cls, value)
|