from typing import Any, NamedTuple

class SizeUnit(NamedTuple):
    divider: Any
    symbol: Any
    name: Any

class CombinedUnit(NamedTuple):
    decimal: Any
    binary: Any

disk_size_units: Any
length_size_units: Any
time_units: Any

def coerce_boolean(value): ...
def coerce_pattern(value, flags: int = ...): ...
def coerce_seconds(value): ...
def format_size(num_bytes, keep_width: bool = ..., binary: bool = ...): ...
def parse_size(size, binary: bool = ...): ...
def format_length(num_metres, keep_width: bool = ...): ...
def parse_length(length): ...
def format_number(number, num_decimals: int = ...): ...
def round_number(count, keep_width: bool = ...): ...
def format_timespan(num_seconds, detailed: bool = ..., max_units: int = ...): ...
def parse_timespan(timespan): ...
def parse_date(datestring): ...
def format_path(pathname): ...
def parse_path(pathname): ...

class Timer:
    monotonic: bool
    resumable: bool
    start_time: float
    total_time: float
    def __init__(self, start_time: Any | None = ..., resumable: bool = ...) -> None: ...
    def __enter__(self): ...
    def __exit__(self, exc_type: Any | None = ..., exc_value: Any | None = ..., traceback: Any | None = ...) -> None: ...
    def sleep(self, seconds) -> None: ...
    @property
    def elapsed_time(self): ...
    @property
    def rounded(self): ...

class InvalidDate(Exception): ...
class InvalidSize(Exception): ...
class InvalidLength(Exception): ...
class InvalidTimespan(Exception): ...
