37 lines
572 B
Python
37 lines
572 B
Python
from __future__ import annotations
|
|
|
|
import typing
|
|
from typing import IO, TextIO
|
|
|
|
|
|
class FalseMeta(type):
|
|
@classmethod
|
|
def __bool__(cls) -> bool: # pragma: no cover
|
|
return False
|
|
|
|
@classmethod
|
|
def __cmp__(cls, other: typing.Any) -> int: # pragma: no cover
|
|
return -1
|
|
|
|
__nonzero__ = __bool__
|
|
|
|
|
|
class UnknownLength(metaclass=FalseMeta):
|
|
pass
|
|
|
|
|
|
class Undefined(metaclass=FalseMeta):
|
|
pass
|
|
|
|
|
|
assert IO is not None
|
|
assert TextIO is not None
|
|
|
|
__all__ = (
|
|
'FalseMeta',
|
|
'UnknownLength',
|
|
'Undefined',
|
|
'IO',
|
|
'TextIO',
|
|
)
|