Source code for mode.utils.compat
"""Compatibility utilities."""
from typing import IO, AnyStr
from .contexts import asyncnullcontext, nullcontext
from .futures import current_task
from .typing import AsyncContextManager, ChainMap, Counter, Deque, NoReturn
__all__ = [
"AsyncContextManager", # XXX moved to .typing
"ChainMap", # XXX moved to .typing
"Counter", # XXX moved to .typing
"Deque", # XXX moved to .typing
"NoReturn", # XXX moved to .typing
"DummyContext",
"OrderedDict",
"want_bytes",
"want_str",
"isatty",
"current_task", # XXX moved to .futures
]
#: Dictionaries are ordered by default in Python 3.6
OrderedDict = dict
def want_bytes(s: AnyStr) -> bytes:
"""Convert string to bytes."""
if isinstance(s, str):
return s.encode()
return s
def want_str(s: AnyStr) -> str:
"""Convert bytes to string."""
if isinstance(s, bytes):
return s.decode()
return s
[docs]def isatty(fh: IO) -> bool:
"""Return True if fh has a controlling terminal.
Notes:
Use with e.g. :data:`sys.stdin`.
"""
try:
return fh.isatty()
except AttributeError:
return False
class DummyContext(nullcontext, asyncnullcontext):
"""Context for with-statement doing nothing."""
# XXX deprecated, use nullcontext or asyncnullcontext