loguru/loguru/_colorama.py

68 lines
1.7 KiB
Python

import builtins
import os
import sys
def should_colorize(stream):
if stream is None:
return False
if getattr(builtins, "__IPYTHON__", False) and (stream is sys.stdout or stream is sys.stderr):
try:
import ipykernel
import IPython
ipython = IPython.get_ipython()
is_jupyter_stream = isinstance(stream, ipykernel.iostream.OutStream)
is_jupyter_shell = isinstance(ipython, ipykernel.zmqshell.ZMQInteractiveShell)
except Exception:
pass
else:
if is_jupyter_stream and is_jupyter_shell:
return True
if stream is sys.__stdout__ or stream is sys.__stderr__:
if "CI" in os.environ and any(
ci in os.environ
for ci in ["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS"]
):
return True
if "PYCHARM_HOSTED" in os.environ:
return True
if os.name == "nt" and "TERM" in os.environ:
return True
try:
return stream.isatty()
except Exception:
return False
def should_wrap(stream):
if os.name != "nt":
return False
if stream is not sys.__stdout__ and stream is not sys.__stderr__:
return False
from colorama.win32 import winapi_test
if not winapi_test():
return False
try:
from colorama.winterm import enable_vt_processing
except ImportError:
return True
try:
return not enable_vt_processing(stream.fileno())
except Exception:
return True
def wrap(stream):
from colorama import AnsiToWin32
return AnsiToWin32(stream, convert=True, strip=True, autoreset=False).stream