This is an automated email from the ASF dual-hosted git repository.
kaxil pushed a commit to branch v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-4-test by this push:
new c2563f04074 [v3-4-test] Fix docs pages listing their sections as
separate pages in the sidebar (#75478) (#75481)
c2563f04074 is described below
commit c2563f04074f02637578479a21a8cda3d705c482
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Oct 23 15:28:03 2026 +0100
[v3-4-test] Fix docs pages listing their sections as separate pages in the
sidebar (#75478) (#75481)
Eight pages underlined a later section like the page title, so Sphinx
treated it as another top-level title and listed it in the sidebar as
its own page. Demote each extra title and its subsections one level.
metric_tables.rst is included under Metric Descriptions and shares its
heading levels, so the generator now writes its headings one level
deeper to stay nested.
(cherry picked from commit b7dfaf64261afdb653c0dc95f9c96bef360bf603)
Co-authored-by: Kaxil Naik <[email protected]>
---
.../dagfile-processing.rst | 12 ++++++------
.../logging-monitoring/metrics.rst | 2 +-
airflow-core/docs/core-concepts/debug.rst | 2 +-
.../docs/howto/create-custom-decorator.rst | 2 +-
airflow-core/docs/howto/custom-view-plugin.rst | 22 +++++++++++-----------
airflow-core/docs/howto/customize-ui.rst | 12 ++++++------
airflow-core/docs/howto/notifications.rst | 2 +-
airflow-core/docs/howto/set-config.rst | 2 +-
.../observability/metrics/metrics_registry.py | 6 +++---
9 files changed, 31 insertions(+), 31 deletions(-)
diff --git
a/airflow-core/docs/administration-and-deployment/dagfile-processing.rst
b/airflow-core/docs/administration-and-deployment/dagfile-processing.rst
index f27289f00a5..bb1d9992a2e 100644
--- a/airflow-core/docs/administration-and-deployment/dagfile-processing.rst
+++ b/airflow-core/docs/administration-and-deployment/dagfile-processing.rst
@@ -46,10 +46,10 @@ The ``DagFileProcessorManager`` coordinates this work but
never runs user code i
Fine-tuning your Dag processor performance
-------------------------------------------
+""""""""""""""""""""""""""""""""""""""""""
What impacts Dag processor's performance
-""""""""""""""""""""""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The Dag processor is responsible for continuously parsing Dag files and
synchronizing with the Dag in the database.
In order to fine-tune your Dag processor, you need to include a number of
factors:
@@ -77,7 +77,7 @@ In order to fine-tune your Dag processor, you need to include
a number of factor
* How many callbacks you run per Dag processor loop
How to approach Dag processor's fine-tuning
-"""""""""""""""""""""""""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Airflow gives you a lot of "knobs" to turn to fine tune the performance but
it's a separate task,
depending on your particular deployment, your Dag structure, hardware
availability and expectations,
@@ -104,7 +104,7 @@ to observe and monitor your systems):
the observation of your performance, bottlenecks. Performance improvement is
an iterative process.
What resources might limit Dag processor's performance
-""""""""""""""""""""""""""""""""""""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There are several areas of resource usage that you should pay attention to:
@@ -153,7 +153,7 @@ There are several areas of resource usage that you should
pay attention to:
on your deployment) rather than ``total memory used``.
What can you do, to improve Dag processor's performance
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When you know what your resource usage is, the improvements that you can
consider might be:
@@ -179,7 +179,7 @@ When you know what your resource usage is, the improvements
that you can conside
in order to get better fine-tuned results for your particular deployment.
Dag processor Configuration options
-"""""""""""""""""""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following config settings can be used to control aspects of the Dag
processor.
However, you can also look at other non-performance-related Dag processor
configuration parameters available at
diff --git
a/airflow-core/docs/administration-and-deployment/logging-monitoring/metrics.rst
b/airflow-core/docs/administration-and-deployment/logging-monitoring/metrics.rst
index 09491659968..00c77d3b72e 100644
---
a/airflow-core/docs/administration-and-deployment/logging-monitoring/metrics.rst
+++
b/airflow-core/docs/administration-and-deployment/logging-monitoring/metrics.rst
@@ -347,6 +347,6 @@ Other Configuration Options
Metric Descriptions
-===================
+-------------------
.. include:: metric_tables.rst
diff --git a/airflow-core/docs/core-concepts/debug.rst
b/airflow-core/docs/core-concepts/debug.rst
index d6287e87092..aa115c250d9 100644
--- a/airflow-core/docs/core-concepts/debug.rst
+++ b/airflow-core/docs/core-concepts/debug.rst
@@ -84,7 +84,7 @@ is manually ingested. The cleanup step is also skipped,
making the intermediate
Debugging Airflow Dags on the command line
-==========================================
+------------------------------------------
With the same two line addition as mentioned in the above section, you can now
easily debug a Dag using pdb as well.
Run ``python -m pdb <path to Dag file>.py`` for an interactive debugging
experience on the command line.
diff --git a/airflow-core/docs/howto/create-custom-decorator.rst
b/airflow-core/docs/howto/create-custom-decorator.rst
index 32942393de9..98fc3055281 100644
--- a/airflow-core/docs/howto/create-custom-decorator.rst
+++ b/airflow-core/docs/howto/create-custom-decorator.rst
@@ -87,7 +87,7 @@ tasks. The steps to create and register ``@task.foo`` are:
Please note that the ``name`` must be a valid python identifier.
(Optional) Adding IDE auto-completion support
-=============================================
+---------------------------------------------
.. note::
diff --git a/airflow-core/docs/howto/custom-view-plugin.rst
b/airflow-core/docs/howto/custom-view-plugin.rst
index dcab538833e..9d97a2129fe 100644
--- a/airflow-core/docs/howto/custom-view-plugin.rst
+++ b/airflow-core/docs/howto/custom-view-plugin.rst
@@ -52,7 +52,7 @@ Information and code samples to register ``fastapi_apps``,
``fastapi_root_middle
available in :doc:`plugin </administration-and-deployment/plugins>`.
Developing React Applications with the Bootstrap Tool
-=====================================================
+-----------------------------------------------------
.. warning::
React applications are new in Airflow 3.1 and should be considered
experimental. The feature may be
@@ -66,7 +66,7 @@ and recommended way to customize the Airflow UI.
This tool generates a complete React project structure that builds as a
library compatible with dynamic imports and shares React instances with the
host Airflow application.
Creating a New React Plugin Project
------------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The bootstrap tool is located in ``dev/react-plugin-tools/`` and provides a
simple CLI to generate new React plugin projects:
@@ -89,7 +89,7 @@ This generates a complete React project with Vite,
TypeScript, Chakra UI integra
React and React-DOM are shared dependencies with the host application and
need to have compatible versions.
React Development Workflow
----------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
Once your project is generated, refer to the ``README.md`` file in your
project directory for complete development instructions, including:
@@ -102,7 +102,7 @@ Once your project is generated, refer to the ``README.md``
file in your project
The generated project is pre-configured with all necessary tools and follows
Airflow's UI development patterns.
Integrating with Airflow
--------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~
To integrate your React application with Airflow, you need to:
@@ -110,7 +110,7 @@ To integrate your React application with Airflow, you need
to:
2. **Register the React app** using ``react_apps`` plugin configuration
Example Plugin Implementation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create an Airflow plugin that serves your React application:
@@ -161,13 +161,13 @@ Create an Airflow plugin that serves your React
application:
]
Plugin Configuration Options
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
React apps support several configuration options, you can take a look at
:doc:`plugin </administration-and-deployment/plugins>` for more details.
Integration Best Practices
----------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
The generated template follows these best practices for Airflow integration:
@@ -177,10 +177,10 @@ The generated template follows these best practices for
Airflow integration:
4. **MIME Types**: Proper JavaScript MIME type handling for ``.cjs`` files
because FastAPI serves them as plain text by default
Deployment Strategies
----------------------
+~~~~~~~~~~~~~~~~~~~~~
External Hosting
-~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^
You can also host assets on external infrastructure:
@@ -196,7 +196,7 @@ You can also host assets on external infrastructure:
]
Troubleshooting Integration Issues
------------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Common integration issues and solutions:
@@ -210,7 +210,7 @@ Common integration issues and solutions:
Refer to the ``README.md`` file generated with your project for detailed
troubleshooting of React-specific development issues.
Support for Airflow 2 plugins
-=============================
+-----------------------------
Airflow 2 plugins are still supported with some limitations. More information
on such
plugins can be found in the Airflow 2 documentation.
diff --git a/airflow-core/docs/howto/customize-ui.rst
b/airflow-core/docs/howto/customize-ui.rst
index acfe8557302..ef445461882 100644
--- a/airflow-core/docs/howto/customize-ui.rst
+++ b/airflow-core/docs/howto/customize-ui.rst
@@ -258,13 +258,13 @@ You can replace the default Airflow icon in the
navigation bar by providing an `
|
Adding Dashboard Alert Messages
-===============================
+-------------------------------
Extra alert messages can be shown on the Airflow dashboard. This can be useful
for warning about setup issues, announcing changes
to end users, or providing real-time status information. Dashboard alerts
support both static and dynamic content.
Basic Static Alerts
--------------------
+^^^^^^^^^^^^^^^^^^^
To add static alert messages that remain constant until the webserver is
restarted:
@@ -287,7 +287,7 @@ To add static alert messages that remain constant until the
webserver is restart
3. Restart the Airflow webserver, and you should now see the alert message
displayed on the dashboard.
Alert Categories
-----------------
+^^^^^^^^^^^^^^^^
You can control the category of the alert message. Available categories
include:
@@ -308,7 +308,7 @@ You can control the category of the alert message.
Available categories include:
.. image:: ../img/ui-alert-message.png
Markdown Content in Alerts
---------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^
Markdown can be included in alert messages for richer formatting. In the
following example, we show an alert
message of heading 2 with a link included:
@@ -324,7 +324,7 @@ message of heading 2 with a link included:
.. image:: ../img/ui-alert-message-markdown.png
Dynamic Dashboard Alerts
-------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^
Dashboard alerts support dynamic content that updates each time the dashboard
page is refreshed. This allows for real-time
status updates without requiring webserver restarts. Dynamic alerts must be
defined as an instance of an iterable object.
@@ -345,7 +345,7 @@ Dynamic alerts are particularly useful for:
- **External service status**: Show the availability of dependent services or
APIs
Creating Dynamic Alerts
-^^^^^^^^^^^^^^^^^^^^^^^
+"""""""""""""""""""""""
To create dynamic alerts, define ``DASHBOARD_UIALERTS`` as an instance of a
class that subclasses ``list``
and implements the ``__iter__`` method. The UI will iterate over any number
``UIAlert`` instances yielded by
diff --git a/airflow-core/docs/howto/notifications.rst
b/airflow-core/docs/howto/notifications.rst
index 14a35d962a6..98f1901e5c4 100644
--- a/airflow-core/docs/howto/notifications.rst
+++ b/airflow-core/docs/howto/notifications.rst
@@ -56,6 +56,6 @@ Here's an example of how you can create a Notifier class:
For a list of community-managed notifiers, see
:doc:`apache-airflow-providers:core-extensions/notifications`.
Using Notifiers
-===============
+---------------
For using Notifiers in event-based Dag callbacks, see
:doc:`../administration-and-deployment/logging-monitoring/callbacks`.
diff --git a/airflow-core/docs/howto/set-config.rst
b/airflow-core/docs/howto/set-config.rst
index b4fcf0559c2..2ac40953bb4 100644
--- a/airflow-core/docs/howto/set-config.rst
+++ b/airflow-core/docs/howto/set-config.rst
@@ -175,7 +175,7 @@ the example below.
.. _set-config:configuring-local-settings:
Configuring local settings
-==========================
+--------------------------
Some Airflow configuration is configured via local setting, because they
require changes in the
code that is executed when Airflow is initialized. Usually it is mentioned in
the detailed documentation
diff --git
a/shared/observability/src/airflow_shared/observability/metrics/metrics_registry.py
b/shared/observability/src/airflow_shared/observability/metrics/metrics_registry.py
index 1aa49e731fd..117161ed003 100644
---
a/shared/observability/src/airflow_shared/observability/metrics/metrics_registry.py
+++
b/shared/observability/src/airflow_shared/observability/metrics/metrics_registry.py
@@ -81,7 +81,7 @@ def convert_to_rst_tables(metrics: list) -> str:
# Counters section
if counters:
output.append("Counters")
- output.append("--------")
+ output.append("^^^^^^^^")
output.append("")
output.append(tabulate(counters, headers=headers, tablefmt="rst"))
output.append("")
@@ -89,7 +89,7 @@ def convert_to_rst_tables(metrics: list) -> str:
# Gauges section
if gauges:
output.append("Gauges")
- output.append("------")
+ output.append("^^^^^^")
output.append("")
output.append(tabulate(gauges, headers=headers, tablefmt="rst"))
output.append("")
@@ -97,7 +97,7 @@ def convert_to_rst_tables(metrics: list) -> str:
# Timers section
if timers:
output.append("Timers")
- output.append("------")
+ output.append("^^^^^^")
output.append("")
output.append(tabulate(timers, headers=headers, tablefmt="rst"))
output.append("")