[mypy] add stubs for color functions (#12217)

This commit is contained in:
Bénédikt Tran 2024-04-01 13:45:47 +02:00 committed by GitHub
parent f5fc408e2a
commit cb8a28dd7e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 57 additions and 50 deletions

View File

@ -557,7 +557,6 @@ exclude = [
"sphinx/util/requests.py", "sphinx/util/requests.py",
"sphinx/util/docstrings.py", "sphinx/util/docstrings.py",
"sphinx/util/rst.py", "sphinx/util/rst.py",
"sphinx/util/console.py",
"sphinx/util/i18n.py", "sphinx/util/i18n.py",
"sphinx/util/fileutil.py", "sphinx/util/fileutil.py",
"sphinx/util/png.py", "sphinx/util/png.py",

View File

@ -33,7 +33,7 @@ from sphinx.registry import SphinxComponentRegistry
from sphinx.util import docutils, logging from sphinx.util import docutils, logging
from sphinx.util._pathlib import _StrPath from sphinx.util._pathlib import _StrPath
from sphinx.util.build_phase import BuildPhase from sphinx.util.build_phase import BuildPhase
from sphinx.util.console import bold # type: ignore[attr-defined] from sphinx.util.console import bold
from sphinx.util.display import progress_message from sphinx.util.display import progress_message
from sphinx.util.i18n import CatalogRepository from sphinx.util.i18n import CatalogRepository
from sphinx.util.logging import prefixed_warnings from sphinx.util.logging import prefixed_warnings

View File

@ -17,7 +17,7 @@ from sphinx.errors import SphinxError
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util import UnicodeDecodeErrorHandler, get_filetype, import_object, logging, rst from sphinx.util import UnicodeDecodeErrorHandler, get_filetype, import_object, logging, rst
from sphinx.util.build_phase import BuildPhase from sphinx.util.build_phase import BuildPhase
from sphinx.util.console import bold # type: ignore[attr-defined] from sphinx.util.console import bold
from sphinx.util.display import progress_message, status_iterator from sphinx.util.display import progress_message, status_iterator
from sphinx.util.docutils import sphinx_domains from sphinx.util.docutils import sphinx_domains
from sphinx.util.i18n import CatalogInfo, CatalogRepository, docname_to_domain from sphinx.util.i18n import CatalogInfo, CatalogRepository, docname_to_domain

View File

@ -12,7 +12,7 @@ from sphinx.domains.changeset import ChangeSetDomain
from sphinx.locale import _, __ from sphinx.locale import _, __
from sphinx.theming import HTMLThemeFactory from sphinx.theming import HTMLThemeFactory
from sphinx.util import logging from sphinx.util import logging
from sphinx.util.console import bold # type: ignore[attr-defined] from sphinx.util.console import bold
from sphinx.util.fileutil import copy_asset_file from sphinx.util.fileutil import copy_asset_file
from sphinx.util.osutil import ensuredir, os_path from sphinx.util.osutil import ensuredir, os_path

View File

@ -16,7 +16,7 @@ from sphinx.builders import Builder
from sphinx.errors import ThemeError from sphinx.errors import ThemeError
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util import logging from sphinx.util import logging
from sphinx.util.console import bold # type: ignore[attr-defined] from sphinx.util.console import bold
from sphinx.util.display import status_iterator from sphinx.util.display import status_iterator
from sphinx.util.i18n import CatalogInfo, docname_to_domain from sphinx.util.i18n import CatalogInfo, docname_to_domain
from sphinx.util.index_entries import split_index_msg from sphinx.util.index_entries import split_index_msg

View File

@ -20,7 +20,7 @@ from sphinx.environment.adapters.asset import ImageAdapter
from sphinx.errors import NoUri, SphinxError from sphinx.errors import NoUri, SphinxError
from sphinx.locale import _, __ from sphinx.locale import _, __
from sphinx.util import logging, texescape from sphinx.util import logging, texescape
from sphinx.util.console import bold, darkgreen # type: ignore[attr-defined] from sphinx.util.console import bold, darkgreen
from sphinx.util.display import progress_message, status_iterator from sphinx.util.display import progress_message, status_iterator
from sphinx.util.docutils import SphinxFileOutput, new_document from sphinx.util.docutils import SphinxFileOutput, new_document
from sphinx.util.fileutil import copy_asset_file from sphinx.util.fileutil import copy_asset_file

View File

@ -24,13 +24,7 @@ from sphinx.deprecation import RemovedInSphinx80Warning
from sphinx.locale import __ from sphinx.locale import __
from sphinx.transforms.post_transforms import SphinxPostTransform from sphinx.transforms.post_transforms import SphinxPostTransform
from sphinx.util import encode_uri, logging, requests from sphinx.util import encode_uri, logging, requests
from sphinx.util.console import ( # type: ignore[attr-defined] from sphinx.util.console import darkgray, darkgreen, purple, red, turquoise
darkgray,
darkgreen,
purple,
red,
turquoise,
)
from sphinx.util.http_date import rfc1123_to_epoch from sphinx.util.http_date import rfc1123_to_epoch
from sphinx.util.nodes import get_node_line from sphinx.util.nodes import get_node_line

View File

@ -13,7 +13,7 @@ from sphinx import addnodes
from sphinx.builders import Builder from sphinx.builders import Builder
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util import logging from sphinx.util import logging
from sphinx.util.console import darkgreen # type: ignore[attr-defined] from sphinx.util.console import darkgreen
from sphinx.util.display import progress_message from sphinx.util.display import progress_message
from sphinx.util.nodes import inline_all_toctrees from sphinx.util.nodes import inline_all_toctrees
from sphinx.util.osutil import ensuredir, make_filename_from_project from sphinx.util.osutil import ensuredir, make_filename_from_project

View File

@ -11,7 +11,7 @@ from sphinx.builders.html import StandaloneHTMLBuilder
from sphinx.environment.adapters.toctree import global_toctree_for_doc from sphinx.environment.adapters.toctree import global_toctree_for_doc
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util import logging from sphinx.util import logging
from sphinx.util.console import darkgreen # type: ignore[attr-defined] from sphinx.util.console import darkgreen
from sphinx.util.display import progress_message from sphinx.util.display import progress_message
from sphinx.util.nodes import inline_all_toctrees from sphinx.util.nodes import inline_all_toctrees

View File

@ -17,7 +17,7 @@ from sphinx.environment.adapters.asset import ImageAdapter
from sphinx.errors import NoUri from sphinx.errors import NoUri
from sphinx.locale import _, __ from sphinx.locale import _, __
from sphinx.util import logging from sphinx.util import logging
from sphinx.util.console import darkgreen # type: ignore[attr-defined] from sphinx.util.console import darkgreen
from sphinx.util.display import progress_message, status_iterator from sphinx.util.display import progress_message, status_iterator
from sphinx.util.docutils import new_document from sphinx.util.docutils import new_document
from sphinx.util.fileutil import copy_asset_file from sphinx.util.fileutil import copy_asset_file

View File

@ -22,12 +22,7 @@ from sphinx.application import Sphinx
from sphinx.errors import SphinxError, SphinxParallelError from sphinx.errors import SphinxError, SphinxParallelError
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util._io import TeeStripANSI from sphinx.util._io import TeeStripANSI
from sphinx.util.console import ( # type: ignore[attr-defined] from sphinx.util.console import color_terminal, nocolor, red, terminal_safe
color_terminal,
nocolor,
red,
terminal_safe,
)
from sphinx.util.docutils import docutils_namespace, patch_docutils from sphinx.util.docutils import docutils_namespace, patch_docutils
from sphinx.util.exceptions import format_exception_cut_frames, save_traceback from sphinx.util.exceptions import format_exception_cut_frames, save_traceback
from sphinx.util.osutil import ensuredir from sphinx.util.osutil import ensuredir

View File

@ -17,12 +17,7 @@ from typing import TYPE_CHECKING
import sphinx import sphinx
from sphinx.cmd.build import build_main from sphinx.cmd.build import build_main
from sphinx.util.console import ( # type: ignore[attr-defined] from sphinx.util.console import blue, bold, color_terminal, nocolor
blue,
bold,
color_terminal,
nocolor,
)
from sphinx.util.osutil import rmtree from sphinx.util.osutil import rmtree
if sys.version_info >= (3, 11): if sys.version_info >= (3, 11):

View File

@ -31,13 +31,7 @@ from docutils.utils import column_width
import sphinx.locale import sphinx.locale
from sphinx import __display_version__, package_dir from sphinx import __display_version__, package_dir
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util.console import ( # type: ignore[attr-defined] from sphinx.util.console import bold, color_terminal, colorize, nocolor, red
bold,
color_terminal,
colorize,
nocolor,
red,
)
from sphinx.util.osutil import ensuredir from sphinx.util.osutil import ensuredir
from sphinx.util.template import SphinxRenderer from sphinx.util.template import SphinxRenderer

View File

@ -19,7 +19,7 @@ import sphinx
from sphinx.builders import Builder from sphinx.builders import Builder
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util import logging from sphinx.util import logging
from sphinx.util.console import red # type: ignore[attr-defined] from sphinx.util.console import red
from sphinx.util.inspect import safe_getattr from sphinx.util.inspect import safe_getattr
if TYPE_CHECKING: if TYPE_CHECKING:

View File

@ -22,7 +22,7 @@ import sphinx
from sphinx.builders import Builder from sphinx.builders import Builder
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util import logging from sphinx.util import logging
from sphinx.util.console import bold # type: ignore[attr-defined] from sphinx.util.console import bold
from sphinx.util.docutils import SphinxDirective from sphinx.util.docutils import SphinxDirective
from sphinx.util.osutil import relpath from sphinx.util.osutil import relpath

View File

@ -11,6 +11,33 @@ from typing import TYPE_CHECKING
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Final from typing import Final
# fmt: off
def reset(text: str) -> str: ... # NoQA: E704
def bold(text: str) -> str: ... # NoQA: E704
def faint(text: str) -> str: ... # NoQA: E704
def standout(text: str) -> str: ... # NoQA: E704
def underline(text: str) -> str: ... # NoQA: E704
def blink(text: str) -> str: ... # NoQA: E704
def black(text: str) -> str: ... # NoQA: E704
def white(text: str) -> str: ... # NoQA: E704
def red(text: str) -> str: ... # NoQA: E704
def green(text: str) -> str: ... # NoQA: E704
def yellow(text: str) -> str: ... # NoQA: E704
def blue(text: str) -> str: ... # NoQA: E704
def fuchsia(text: str) -> str: ... # NoQA: E704
def teal(text: str) -> str: ... # NoQA: E704
def darkgray(text: str) -> str: ... # NoQA: E704
def lightgray(text: str) -> str: ... # NoQA: E704
def darkred(text: str) -> str: ... # NoQA: E704
def darkgreen(text: str) -> str: ... # NoQA: E704
def brown(text: str) -> str: ... # NoQA: E704
def darkblue(text: str) -> str: ... # NoQA: E704
def purple(text: str) -> str: ... # NoQA: E704
def turquoise(text: str) -> str: ... # NoQA: E704
# fmt: on
try: try:
# check if colorama is installed to support color on Windows # check if colorama is installed to support color on Windows
import colorama import colorama
@ -20,13 +47,15 @@ except ImportError:
_CSI = re.escape('\x1b[') # 'ESC [': Control Sequence Introducer _CSI = re.escape('\x1b[') # 'ESC [': Control Sequence Introducer
_ansi_re: re.Pattern[str] = re.compile( _ansi_re: re.Pattern[str] = re.compile(
_CSI + r""" _CSI
+ r"""
( (
(\d\d;){0,2}\d\dm # ANSI colour code (\d\d;){0,2}\d\dm # ANSI colour code
| |
\dK # ANSI Erase in Line \dK # ANSI Erase in Line
)""", )""",
re.VERBOSE | re.ASCII) re.VERBOSE | re.ASCII,
)
_ansi_color_re: Final[re.Pattern[str]] = re.compile('\x1b.*?m') _ansi_color_re: Final[re.Pattern[str]] = re.compile('\x1b.*?m')
codes: dict[str, str] = {} codes: dict[str, str] = {}
@ -109,28 +138,29 @@ def _strip_escape_sequences(s: str) -> str:
def create_color_func(name: str) -> None: def create_color_func(name: str) -> None:
def inner(text: str) -> str: def inner(text: str) -> str:
return colorize(name, text) return colorize(name, text)
globals()[name] = inner globals()[name] = inner
_attrs = { _attrs = {
'reset': '39;49;00m', 'reset': '39;49;00m',
'bold': '01m', 'bold': '01m',
'faint': '02m', 'faint': '02m',
'standout': '03m', 'standout': '03m',
'underline': '04m', 'underline': '04m',
'blink': '05m', 'blink': '05m',
} }
for _name, _value in _attrs.items(): for _name, _value in _attrs.items():
codes[_name] = '\x1b[' + _value codes[_name] = '\x1b[' + _value
_colors = [ _colors = [
('black', 'darkgray'), ('black', 'darkgray'),
('darkred', 'red'), ('darkred', 'red'),
('darkgreen', 'green'), ('darkgreen', 'green'),
('brown', 'yellow'), ('brown', 'yellow'),
('darkblue', 'blue'), ('darkblue', 'blue'),
('purple', 'fuchsia'), ('purple', 'fuchsia'),
('turquoise', 'teal'), ('turquoise', 'teal'),
('lightgray', 'white'), ('lightgray', 'white'),
] ]

View File

@ -5,7 +5,7 @@ from typing import Any, Callable, TypeVar
from sphinx.locale import __ from sphinx.locale import __
from sphinx.util import logging from sphinx.util import logging
from sphinx.util.console import bold, color_terminal # type: ignore[attr-defined] from sphinx.util.console import bold, color_terminal
if False: if False:
from collections.abc import Iterable, Iterator from collections.abc import Iterable, Iterator