import os from dataclasses import dataclass, field from os import getenv from typing import Any, Dict, List, Optional, Tuple, Union import rich.align import rich.highlighter import rich.padding import rich.style import rich.table from typing_extensions import Literal from rich_click.utils import truthy def force_terminal_default() -> Optional[bool]: """Use as the default factory for `force_terminal`.""" env_vars = {"GITHUB_ACTIONS", "FORCE_COLOR", "PY_COLORS"} if all(i not in os.environ for i in env_vars): return None else: return any(truthy(getenv(i)) for i in env_vars) def terminal_width_default() -> Optional[int]: """Use as the default factory for `width` and `max_width`.""" width = getenv("TERMINAL_WIDTH") if width: try: return int(width) except ValueError: import warnings warnings.warn("Environment variable `TERMINAL_WIDTH` cannot be cast to an integer.", UserWarning) return None return None class OptionHighlighter(rich.highlighter.RegexHighlighter): """Highlights our special options.""" highlights = [ r"(^|\W)(?P\-\w+)(?![a-zA-Z0-9])", r"(^|\W)(?P