From c90accef518b1dd0253bf43b639ce21f765d6794 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Sun, 1 Jun 2025 01:34:20 -0400 Subject: [PATCH] docs: color output for docs (#2407) * docs: color output for docs Signed-off-by: Henry Schreiner * fix: use asdf (python-build) * docs: try to fix colors Signed-off-by: Henry Schreiner * Update .pre-commit-config.yaml * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Signed-off-by: Henry Schreiner Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 3 ++- .readthedocs.yml | 6 +++--- docs/main.py | 16 +++++++++++++++- docs/options.md | 2 -- noxfile.py | 2 +- pyproject.toml | 1 + 6 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7831eae6..e86f0613 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -87,7 +87,8 @@ repos: - id: check-github-actions - id: check-github-workflows - id: check-gitlab-ci - - id: check-readthedocs + # Disabled due to schema issue for now: + # - id: check-readthedocs - id: check-travis - id: check-jsonschema name: Check projects diff --git a/.readthedocs.yml b/.readthedocs.yml index 60724f36..a2dc26bb 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -3,10 +3,10 @@ version: 2 build: - os: ubuntu-22.04 - tools: - python: "3.12" + os: ubuntu-24.04 commands: + - asdf install python 3.14-dev + - asdf global python 3.14-dev - asdf plugin add uv - asdf install uv latest - asdf global uv latest diff --git a/docs/main.py b/docs/main.py index 15d42cbb..11556dec 100644 --- a/docs/main.py +++ b/docs/main.py @@ -1,8 +1,12 @@ import os +import re import subprocess import sysconfig from typing import Any +import rich.console +import rich.text + def define_env(env: Any) -> None: "Hook function for mkdocs-macros" @@ -12,5 +16,15 @@ def define_env(env: Any) -> None: "Run a subprocess and return the stdout" env = os.environ.copy() scripts = sysconfig.get_path("scripts") + env.pop("NO_COLOR", None) env["PATH"] = f"{scripts}{os.pathsep}{env.get('PATH', '')}" - return subprocess.run(args, check=True, capture_output=True, text=True, env=env).stdout + env["PYTHON_COLORS"] = "1" + output = subprocess.run(args, check=True, capture_output=True, text=True, env=env).stdout + rich_text = rich.text.Text.from_ansi(output) + console = rich.console.Console(record=True, force_terminal=True) + console.print(rich_text) + page = console.export_html(inline_styles=True) + result = re.search(r"(.*?)", page, re.DOTALL | re.IGNORECASE) + assert result + txt = result.group(1).strip() + return txt.replace("code ", 'code class="nohighlight" ') diff --git a/docs/options.md b/docs/options.md index fcebb386..3a9abf55 100644 --- a/docs/options.md +++ b/docs/options.md @@ -1714,9 +1714,7 @@ Platform-specific environment variables are also available:
### Options -```text « subprocess_run("cibuildwheel", "--help") » -``` ### Return codes diff --git a/noxfile.py b/noxfile.py index a31c147f..d475c60e 100755 --- a/noxfile.py +++ b/noxfile.py @@ -173,7 +173,7 @@ def bump_version(session: nox.Session) -> None: session.install_and_run_script("bin/bump_version.py") -@nox.session(default=False, python="3.12") +@nox.session(default=False) def docs(session: nox.Session) -> None: """ Build the docs. Will serve unless --non-interactive diff --git a/pyproject.toml b/pyproject.toml index b52371de..4f3721c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,6 +76,7 @@ docs = [ "mkdocs-macros-plugin", "mkdocs==1.6.1", "pymdown-extensions", + "rich", ] test = [ "build",