From 764fb1af8e1afb1b6453d9c48a1a617bfc493b0f Mon Sep 17 00:00:00 2001 From: TyYan03 Date: Fri, 8 Dec 2023 17:53:33 -0500 Subject: [PATCH] terminalwriter: Create styling class for 256 Formatter. --- src/_pytest/_io/terminalwriter.py | 49 +++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/_pytest/_io/terminalwriter.py b/src/_pytest/_io/terminalwriter.py index 7f04c0553..ba244ca7c 100644 --- a/src/_pytest/_io/terminalwriter.py +++ b/src/_pytest/_io/terminalwriter.py @@ -215,13 +215,56 @@ class TerminalWriter: return source else: try: - from pygments.formatters.terminal256 import TerminalTrueColorFormatter - from pygments.formatters.terminal256 import Terminal256Formatter + from pygments.style import Style + from pygments.token import ( + Token, + Comment, + Keyword, + Name, + String, + Error, + Generic, + Number, + Operator, + ) + from pygments.formatters.terminal256 import TerminalTrueColorFormatter + + # Set the terminal formatter to better performing formatters is user environement allows for it if os.environ.get('COLORTERM','') in ('truecolor', '24bit'): terminal_formatter = TerminalTrueColorFormatter() elif '256' in os.environ.get('TERM', ''): - terminal_formatter = Terminal256Formatter() + # Create new styling for 256 Formatter + class Updated256Style(Style): + # Set color values for the 256 Formatter + styles = { + Token: (""), + Comment: ("ansigray"), + Comment.Preproc: ("ansicyan"), + Keyword: ("ansiblue"), + Keyword.Type: ("ansicyan"), + Operator.Word: ("ansimagenta"), + Name.Builtin: ("ansicyan"), + Name.Function: ("ansigreen"), + Name.Namespace: ("ansicyan"), + Name.Class: ("ansigreen"), + Name.Exception: ("ansicyan"), + Name.Decorator: ("ansibrightblack"), + Name.Variable: ("ansired"), + Name.Constant: ("ansired"), + Name.Attribute: ("ansicyan"), + Name.Tag: ("ansibrightblue"), + String: ("ansiyellow"), + Number: ("ansiblue"), + Generic.Deleted: ("ansibrightred"), + Generic.Inserted: ("ansigreen"), + Generic.Subheading: ("ansimagenta"), + Generic.Error: ("ansibrightred"), + Error: ("ansibrightred"), + } + + from pygments.formatters.terminal256 import Terminal256Formatter + terminal_formatter = Terminal256Formatter(style=Updated256Style) else: terminal_formatter = TerminalFormatter( bg=os.getenv("PYTEST_THEME_MODE", "dark"),