From 5a9da7b2c4a035d5cee4ef1f8f771d74ee968c07 Mon Sep 17 00:00:00 2001 From: hello123 Date: Tue, 18 Nov 2025 22:21:58 +0800 Subject: [PATCH] chore(highlighter): use ClassVar tuple for highlights; keep behavior identical --- rich/highlighter.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/rich/highlighter.py b/rich/highlighter.py index e4c462e2..722fdbee 100644 --- a/rich/highlighter.py +++ b/rich/highlighter.py @@ -1,6 +1,6 @@ import re from abc import ABC, abstractmethod -from typing import List, Union +from typing import ClassVar, List, Tuple, Union from .text import Span, Text @@ -61,7 +61,7 @@ class NullHighlighter(Highlighter): class RegexHighlighter(Highlighter): """Applies highlighting from a list of regular expressions.""" - highlights: List[str] = [] + highlights: ClassVar[Tuple[Union[str, "re.Pattern[str]"], ...]] = tuple() base_style: str = "" def highlight(self, text: Text) -> None: @@ -81,7 +81,7 @@ class ReprHighlighter(RegexHighlighter): """Highlights the text typically produced from ``__repr__`` methods.""" base_style = "repr." - highlights = [ + highlights: ClassVar[Tuple[Union[str, "re.Pattern[str]"], ...]] = ( r"(?P<)(?P[-\w.:|]*)(?P[\w\W]*)(?P>)", r'(?P[\w_]{1,50})=(?P"?[\w_]+"?)?', r"(?P[][{}()])", @@ -100,7 +100,7 @@ class ReprHighlighter(RegexHighlighter): r"(?b?'''.*?(?(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#~@]*)", ), - ] + ) class JSONHighlighter(RegexHighlighter): @@ -111,14 +111,14 @@ class JSONHighlighter(RegexHighlighter): JSON_WHITESPACE = {" ", "\n", "\r", "\t"} base_style = "json." - highlights = [ + highlights: ClassVar[Tuple[Union[str, "re.Pattern[str]"], ...]] = ( _combine_regex( r"(?P[\{\[\(\)\]\}])", r"\b(?Ptrue)\b|\b(?Pfalse)\b|\b(?Pnull)\b", r"(?P(? None: super().highlight(text) @@ -146,7 +146,7 @@ class ISO8601Highlighter(RegexHighlighter): """ base_style = "iso8601." - highlights = [ + highlights: ClassVar[Tuple[Union[str, "re.Pattern[str]"], ...]] = ( # # Dates # @@ -195,7 +195,7 @@ class ISO8601Highlighter(RegexHighlighter): # Date and time, with optional fractional seconds and time zone (e.g., 2008-08-30T01:45:36 or 2008-08-30T01:45:36.123Z). # This is the XML Schema 'dateTime' type r"^(?P(?P-?(?:[1-9][0-9]*)?[0-9]{4})-(?P1[0-2]|0[1-9])-(?P3[01]|0[1-9]|[12][0-9]))T(?P