From e8bf3a7ec565ea3a4e9102a598959083de6f9bcd Mon Sep 17 00:00:00 2001 From: ShaharNaveh <50263213+ShaharNaveh@users.noreply.github.com> Date: Wed, 16 Jul 2025 13:59:35 +0300 Subject: [PATCH 1/3] Update `_colorize.py` from 3.13.5 --- Lib/_colorize.py | 61 +++++++++++++++++++++++++++++++++----- Lib/test/test__colorize.py | 3 +- 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/Lib/_colorize.py b/Lib/_colorize.py index 70acfd4ad0..9eb6f0933b 100644 --- a/Lib/_colorize.py +++ b/Lib/_colorize.py @@ -1,21 +1,64 @@ +from __future__ import annotations import io import os import sys COLORIZE = True +# types +if False: + from typing import IO + class ANSIColors: - BOLD_GREEN = "\x1b[1;32m" - BOLD_MAGENTA = "\x1b[1;35m" - BOLD_RED = "\x1b[1;31m" + RESET = "\x1b[0m" + + BLACK = "\x1b[30m" + BLUE = "\x1b[34m" + CYAN = "\x1b[36m" GREEN = "\x1b[32m" - GREY = "\x1b[90m" MAGENTA = "\x1b[35m" RED = "\x1b[31m" - RESET = "\x1b[0m" + WHITE = "\x1b[37m" # more like LIGHT GRAY YELLOW = "\x1b[33m" + BOLD_BLACK = "\x1b[1;30m" # DARK GRAY + BOLD_BLUE = "\x1b[1;34m" + BOLD_CYAN = "\x1b[1;36m" + BOLD_GREEN = "\x1b[1;32m" + BOLD_MAGENTA = "\x1b[1;35m" + BOLD_RED = "\x1b[1;31m" + BOLD_WHITE = "\x1b[1;37m" # actual WHITE + BOLD_YELLOW = "\x1b[1;33m" + + # intense = like bold but without being bold + INTENSE_BLACK = "\x1b[90m" + INTENSE_BLUE = "\x1b[94m" + INTENSE_CYAN = "\x1b[96m" + INTENSE_GREEN = "\x1b[92m" + INTENSE_MAGENTA = "\x1b[95m" + INTENSE_RED = "\x1b[91m" + INTENSE_WHITE = "\x1b[97m" + INTENSE_YELLOW = "\x1b[93m" + + BACKGROUND_BLACK = "\x1b[40m" + BACKGROUND_BLUE = "\x1b[44m" + BACKGROUND_CYAN = "\x1b[46m" + BACKGROUND_GREEN = "\x1b[42m" + BACKGROUND_MAGENTA = "\x1b[45m" + BACKGROUND_RED = "\x1b[41m" + BACKGROUND_WHITE = "\x1b[47m" + BACKGROUND_YELLOW = "\x1b[43m" + + INTENSE_BACKGROUND_BLACK = "\x1b[100m" + INTENSE_BACKGROUND_BLUE = "\x1b[104m" + INTENSE_BACKGROUND_CYAN = "\x1b[106m" + INTENSE_BACKGROUND_GREEN = "\x1b[102m" + INTENSE_BACKGROUND_MAGENTA = "\x1b[105m" + INTENSE_BACKGROUND_RED = "\x1b[101m" + INTENSE_BACKGROUND_WHITE = "\x1b[107m" + INTENSE_BACKGROUND_YELLOW = "\x1b[103m" + NoColors = ANSIColors() @@ -24,14 +67,16 @@ class ANSIColors: setattr(NoColors, attr, "") -def get_colors(colorize: bool = False, *, file=None) -> ANSIColors: +def get_colors( + colorize: bool = False, *, file: IO[str] | IO[bytes] | None = None +) -> ANSIColors: if colorize or can_colorize(file=file): return ANSIColors() else: return NoColors -def can_colorize(*, file=None) -> bool: +def can_colorize(*, file: IO[str] | IO[bytes] | None = None) -> bool: if file is None: file = sys.stdout @@ -64,4 +109,4 @@ def can_colorize(*, file=None) -> bool: try: return os.isatty(file.fileno()) except io.UnsupportedOperation: - return file.isatty() + return hasattr(file, "isatty") and file.isatty() diff --git a/Lib/test/test__colorize.py b/Lib/test/test__colorize.py index 056a5306ce..b2f0bb1386 100644 --- a/Lib/test/test__colorize.py +++ b/Lib/test/test__colorize.py @@ -10,8 +10,7 @@ @contextlib.contextmanager def clear_env(): with EnvironmentVarGuard() as mock_env: - for var in "FORCE_COLOR", "NO_COLOR", "PYTHON_COLORS": - mock_env.unset(var) + mock_env.unset("FORCE_COLOR", "NO_COLOR", "PYTHON_COLORS", "TERM") yield mock_env From c3c8fca3dbcd71ee3d28108f4387466a38251423 Mon Sep 17 00:00:00 2001 From: ShaharNaveh <50263213+ShaharNaveh@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:42:22 +0300 Subject: [PATCH 2/3] Trigger CI From 8ab7bdd8480436cf64336100569b2fb55966f5e8 Mon Sep 17 00:00:00 2001 From: ShaharNaveh <50263213+ShaharNaveh@users.noreply.github.com> Date: Wed, 16 Jul 2025 19:29:36 +0300 Subject: [PATCH 3/3] Trigger CI