This is an automated email from the ASF dual-hosted git repository. kaxilnaik pushed a commit to branch fix-code-block-syntax-highlighting in repository https://gitbox.apache.org/repos/asf/airflow-site.git
commit b83bf369c843b98ee6a2ee8c6af4ffa8697f730b Author: Kaxil Naik <[email protected]> AuthorDate: Thu Apr 16 16:26:56 2026 +0100 Fix code block syntax highlighting broken by #1421 PR #1421 replaced `pre span { @extend .monotext--brownish-grey }` with `pre span { color: var(--bs-body-color) }`, which broke CSS inheritance for Pygments tokens without explicit class rules — they got --bs-body-color instead of inheriting from .highlight's theme color. It also removed .nn (Name.Namespace) from the dark theme. This commit: - Removes the blanket `pre span { color }` rule so tokens properly inherit from `.highlight { color: ... }` via the CSS cascade - Adds .nn override in both light/dark themes to render namespace tokens (module paths in imports) as plain text color instead of keyword-colored, matching how GitHub.com actually renders Python - Adds explicit `color: #212529` to .highlight in the light theme for a stable default text color - Removes duplicate `@import "pygments/dark"` from _rst-content.scss that produced dead double-nested CSS selectors - Adds a richer Python code example to the demo playground for testing --- landing-pages/site/assets/scss/_highlights.scss | 4 ---- landing-pages/site/assets/scss/_rst-content.scss | 6 +----- landing-pages/site/assets/scss/pygments/_dark.scss | 4 ++++ landing-pages/site/assets/scss/pygments/_light.scss | 3 ++- sphinx_airflow_theme/.theme_files_hash | 2 +- sphinx_airflow_theme/LATEST_VERSION.txt | 2 +- sphinx_airflow_theme/demo/playground.rst | 19 +++++++++++++++++++ sphinx_airflow_theme/sphinx_airflow_theme/__init__.py | 2 +- 8 files changed, 29 insertions(+), 13 deletions(-) diff --git a/landing-pages/site/assets/scss/_highlights.scss b/landing-pages/site/assets/scss/_highlights.scss index f8186e63da..88288e769a 100644 --- a/landing-pages/site/assets/scss/_highlights.scss +++ b/landing-pages/site/assets/scss/_highlights.scss @@ -121,10 +121,6 @@ pre { border: solid 1px map-get($colors, very-light-pink); border-radius: 5px; width: 100%; - - span { - color: var(--bs-body-color); - } } [data-bs-theme="dark"] { diff --git a/landing-pages/site/assets/scss/_rst-content.scss b/landing-pages/site/assets/scss/_rst-content.scss index f20d114f6c..2686873718 100644 --- a/landing-pages/site/assets/scss/_rst-content.scss +++ b/landing-pages/site/assets/scss/_rst-content.scss @@ -646,12 +646,8 @@ body { color: var(--bs-code-color); } - // Syntax highlighting for code blocks in dark mode - // Generated via: cd sphinx_airflow_theme/demo && uv run pygmentize -S github-dark -f html -a ".highlight" > ../../landing-pages/site/assets/scss/pygments/_dark.scss - // To change theme: replace "github-dark" with another Pygments style (run: uv run pygmentize -L styles) - @import "pygments/dark"; - // Override background to use Bootstrap variables for consistency + // (Pygments dark theme is imported via _highlights.scss) .highlight { background: var(--bs-secondary-bg) !important; diff --git a/landing-pages/site/assets/scss/pygments/_dark.scss b/landing-pages/site/assets/scss/pygments/_dark.scss index 50a1d41dff..26eb84fc10 100644 --- a/landing-pages/site/assets/scss/pygments/_dark.scss +++ b/landing-pages/site/assets/scss/pygments/_dark.scss @@ -235,6 +235,10 @@ font-weight: bold; } /* Name.Label */ + .highlight .nn { + color: #e6edf3; + font-weight: normal; + } /* Name.Namespace — match GitHub: plain text, not keyword-colored */ .highlight .nx { color: #e6edf3; } /* Name.Other */ diff --git a/landing-pages/site/assets/scss/pygments/_light.scss b/landing-pages/site/assets/scss/pygments/_light.scss index c57a955491..9d391faff7 100644 --- a/landing-pages/site/assets/scss/pygments/_light.scss +++ b/landing-pages/site/assets/scss/pygments/_light.scss @@ -44,7 +44,7 @@ td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } - .highlight { background: #ffffff; } + .highlight { background: #ffffff; color: #212529; } .highlight .c { color: #008000 } /* Comment */ .highlight .err { border: 1px solid #F00 } /* Error */ .highlight .k { color: #00F } /* Keyword */ @@ -68,6 +68,7 @@ .highlight .kt { color: #2B91AF } /* Keyword.Type */ .highlight .s { color: #A31515 } /* Literal.String */ .highlight .nc { color: #2B91AF } /* Name.Class */ + .highlight .nn { color: #212529; font-weight: normal } /* Name.Namespace — match GitHub: plain text, not keyword-colored */ .highlight .ow { color: #00F } /* Operator.Word */ .highlight .sa { color: #A31515 } /* Literal.String.Affix */ .highlight .sb { color: #A31515 } /* Literal.String.Backtick */ diff --git a/sphinx_airflow_theme/.theme_files_hash b/sphinx_airflow_theme/.theme_files_hash index 769bd07882..6230a61de3 100644 --- a/sphinx_airflow_theme/.theme_files_hash +++ b/sphinx_airflow_theme/.theme_files_hash @@ -1 +1 @@ -f46dbcb27d4a704f9be5ce49eec3ec283353e17a0f233b0e4f5945a012b0b38f +4345a53e36a58c393d6db74876bbdbab814e22b399046866a0926c3b1adad1bd diff --git a/sphinx_airflow_theme/LATEST_VERSION.txt b/sphinx_airflow_theme/LATEST_VERSION.txt index 0f82685331..6678432209 100644 --- a/sphinx_airflow_theme/LATEST_VERSION.txt +++ b/sphinx_airflow_theme/LATEST_VERSION.txt @@ -1 +1 @@ -0.3.7 +0.3.8 diff --git a/sphinx_airflow_theme/demo/playground.rst b/sphinx_airflow_theme/demo/playground.rst index 27d251d991..f3d8b4e136 100644 --- a/sphinx_airflow_theme/demo/playground.rst +++ b/sphinx_airflow_theme/demo/playground.rst @@ -319,6 +319,25 @@ Sidebar Code """" +.. code-block:: python + + from datetime import datetime + + from airflow.sdk import DAG, task + from airflow.providers.standard.operators.bash import BashOperator + + # A DAG represents a workflow, a collection of tasks + with DAG(dag_id="demo", start_date=datetime(2022, 1, 1), schedule="0 0 * * *") as dag: + # Tasks are represented as operators + hello = BashOperator(task_id="hello", bash_command="echo hello") + + @task() + def airflow(): + print("airflow") + + # Set dependencies between tasks + hello >> airflow() + .. code:: python def my_function(): diff --git a/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py b/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py index 5b4336f16f..52f973197c 100644 --- a/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py +++ b/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py @@ -18,7 +18,7 @@ from os import path from sphinx.application import Sphinx -__version__ = '0.3.7' +__version__ = '0.3.8' __version_full__ = __version__
