You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ka...@apache.org on 2026/04/16 15:27:11 UTC

(airflow-site) 01/01: Fix code block syntax highlighting broken by #1421

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 ec060d8a9fa632d99cccc387ac72fc615560999c
Author: Kaxil Naik <ka...@gmail.com>
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__