You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ep...@apache.org on 2024/03/20 18:32:29 UTC

(airflow) branch v2-9-test updated (5995c74055 -> a8f154d6ff)

This is an automated email from the ASF dual-hosted git repository.

ephraimanierobi pushed a change to branch v2-9-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


    omit 5995c74055 Apply suggestions from code review
    omit fca671adec Update RELEASE_NOTES.rst
    omit b954d0fa6c Update version to 2.9.0
     new 7e46acb11c Update version to 2.9.0
     new a8f154d6ff Update RELEASE_NOTES.rst

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (5995c74055)
            \
             N -- N -- N   refs/heads/v2-9-test (a8f154d6ff)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.md                       |  2 +-
 RELEASE_NOTES.rst               | 20 +-------------------
 airflow/reproducible_build.yaml |  4 ++--
 generated/PYPI_README.md        |  2 +-
 4 files changed, 5 insertions(+), 23 deletions(-)


(airflow) 01/02: Update version to 2.9.0

Posted by ep...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ephraimanierobi pushed a commit to branch v2-9-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 7e46acb11c21bf944ad77b0293258fdb932197da
Author: Ephraim Anierobi <sp...@gmail.com>
AuthorDate: Wed Mar 20 16:59:27 2024 +0100

    Update version to 2.9.0
---
 README.md                                                  | 14 +++++++-------
 airflow/__init__.py                                        |  2 +-
 airflow/api_connexion/openapi/v1.yaml                      |  2 +-
 dev/breeze/doc/images/output_ci-image_build.txt            |  2 +-
 dev/breeze/doc/images/output_ci_selective-check.svg        |  4 ++--
 dev/breeze/doc/images/output_ci_selective-check.txt        |  2 +-
 dev/breeze/doc/images/output_prod-image_build.txt          |  2 +-
 ...output_release-management_install-provider-packages.txt |  2 +-
 .../output_release-management_verify-provider-packages.txt |  2 +-
 dev/breeze/doc/images/output_shell.txt                     |  2 +-
 dev/breeze/doc/images/output_start-airflow.txt             |  2 +-
 docs/apache-airflow/installation/supported-versions.rst    |  2 +-
 docs/docker-stack/README.md                                | 10 +++++-----
 .../extending/add-airflow-configuration/Dockerfile         |  2 +-
 .../docker-examples/extending/add-apt-packages/Dockerfile  |  2 +-
 .../extending/add-build-essential-extend/Dockerfile        |  2 +-
 .../docker-examples/extending/add-providers/Dockerfile     |  2 +-
 .../extending/add-pypi-packages-constraints/Dockerfile     |  2 +-
 .../extending/add-pypi-packages-uv/Dockerfile              |  2 +-
 .../docker-examples/extending/add-pypi-packages/Dockerfile |  2 +-
 .../extending/add-requirement-packages/Dockerfile          |  2 +-
 .../docker-examples/extending/custom-providers/Dockerfile  |  2 +-
 .../docker-examples/extending/embedding-dags/Dockerfile    |  2 +-
 .../extending/writable-directory/Dockerfile                |  2 +-
 docs/docker-stack/entrypoint.rst                           | 14 +++++++-------
 generated/PYPI_README.md                                   | 12 ++++++------
 scripts/ci/pre_commit/pre_commit_supported_versions.py     |  2 +-
 27 files changed, 49 insertions(+), 49 deletions(-)

diff --git a/README.md b/README.md
index 422168355a..609553c6e9 100644
--- a/README.md
+++ b/README.md
@@ -98,9 +98,9 @@ Airflow is not a streaming solution, but it is often used to process real-time d
 
 Apache Airflow is tested with:
 
-|             | Main version (dev)           | Stable version (2.8.3)      |
+|             | Main version (dev)           | Stable version (2.9.0)      |
 |-------------|------------------------------|-----------------------------|
-| Python      | 3.8, 3.9, 3.10, 3.11, 3.12   | 3.8, 3.9, 3.10, 3.11        |
+| Python      | 3.8, 3.9, 3.10, 3.11, 3.12   | 3.8, 3.9, 3.10, 3.11, 3.12  |
 | Platform    | AMD64/ARM64(\*)              | AMD64/ARM64(\*)             |
 | Kubernetes  | 1.25, 1.26, 1.27, 1.28, 1.29 | 1.25, 1.26, 1.27, 1.28, 1.29|
 | PostgreSQL  | 12, 13, 14, 15, 16           | 12, 13, 14, 15, 16          |
@@ -180,15 +180,15 @@ them to the appropriate format and workflow that your tool requires.
 
 
 ```bash
-pip install 'apache-airflow==2.8.3' \
- --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.3/constraints-3.8.txt"
+pip install 'apache-airflow==2.9.0' \
+ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"
 ```
 
 2. Installing with extras (i.e., postgres, google)
 
 ```bash
-pip install 'apache-airflow[postgres,google]==2.8.3' \
- --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.3/constraints-3.8.txt"
+pip install 'apache-airflow[postgres,google]==2.9.0' \
+ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"
 ```
 
 For information on installing provider packages, check
@@ -293,7 +293,7 @@ Apache Airflow version life cycle:
 
 | Version   | Current Patch/Minor   | State     | First Release   | Limited Support   | EOL/Terminated   |
 |-----------|-----------------------|-----------|-----------------|-------------------|------------------|
-| 2         | 2.8.3                 | Supported | Dec 17, 2020    | TBD               | TBD              |
+| 2         | 2.9.0                 | Supported | Dec 17, 2020    | TBD               | TBD              |
 | 1.10      | 1.10.15               | EOL       | Aug 27, 2018    | Dec 17, 2020      | June 17, 2021    |
 | 1.9       | 1.9.0                 | EOL       | Jan 03, 2018    | Aug 27, 2018      | Aug 27, 2018     |
 | 1.8       | 1.8.2                 | EOL       | Mar 19, 2017    | Jan 03, 2018      | Jan 03, 2018     |
diff --git a/airflow/__init__.py b/airflow/__init__.py
index 6b06293876..f3aa6c3277 100644
--- a/airflow/__init__.py
+++ b/airflow/__init__.py
@@ -17,7 +17,7 @@
 # under the License.
 from __future__ import annotations
 
-__version__ = "2.9.0.dev0"
+__version__ = "2.9.0"
 
 import os
 import sys
diff --git a/airflow/api_connexion/openapi/v1.yaml b/airflow/api_connexion/openapi/v1.yaml
index 4d8a48e04f..6a9c64ad14 100644
--- a/airflow/api_connexion/openapi/v1.yaml
+++ b/airflow/api_connexion/openapi/v1.yaml
@@ -231,7 +231,7 @@ info:
     This means that the server encountered an unexpected condition that prevented it from
     fulfilling the request.
 
-  version: "2.9.0.dev0"
+  version: "2.9.0"
   license:
     name: Apache 2.0
     url: http://www.apache.org/licenses/LICENSE-2.0.html
diff --git a/dev/breeze/doc/images/output_ci-image_build.txt b/dev/breeze/doc/images/output_ci-image_build.txt
index 782ff33f9c..2982deaaf5 100644
--- a/dev/breeze/doc/images/output_ci-image_build.txt
+++ b/dev/breeze/doc/images/output_ci-image_build.txt
@@ -1 +1 @@
-eeb71cb74afe5c0a59ea3236626c79e6
+1bed239404de42d2ba8e4d1cf398af78
diff --git a/dev/breeze/doc/images/output_ci_selective-check.svg b/dev/breeze/doc/images/output_ci_selective-check.svg
index 2ec3ba6a04..cd4a7188a2 100644
--- a/dev/breeze/doc/images/output_ci_selective-check.svg
+++ b/dev/breeze/doc/images/output_ci_selective-check.svg
@@ -140,9 +140,9 @@
 </text><text class="breeze-ci-selective-check-r5" x="0" y="142" textLength="24.4" clip-path="url(#breeze-ci-selective-check-line-5)">╭─</text><text class="breeze-ci-selective-check-r5" x="24.4" y="142" textLength="280.6" clip-path="url(#breeze-ci-selective-check-line-5)">&#160;Selective&#160;check&#160;flags&#160;</text><text class="breeze-ci-selective-check-r5" x="305" y="142" textLength="1134.6" clip-path="url(#breeze-ci-selective-check-line-5)">──────────────────────────────────────── [...]
 </text><text class="breeze-ci-selective-check-r5" x="0" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-6)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="166.4" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-6)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="166.4" textLength="85.4" clip-path="url(#breeze-ci-selective-check-line-6)">-commit</text><text class="breeze-ci-selective-check-r4" x="122" y="166.4" text [...]
 </text><text class="breeze-ci-selective-check-r5" x="0" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-7)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="190.8" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-7)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="190.8" textLength="36.6" clip-path="url(#breeze-ci-selective-check-line-7)">-pr</text><text class="breeze-ci-selective-check-r4" x="73.2" y="190.8" textLen [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-8)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-8)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="215.2" textLength="97.6" clip-path="url(#breeze-ci-selective-check-line-8)">-default</text><text class="breeze-ci-selective-check-r4" x="134.2" y="215.2" t [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-8)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="215.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-8)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="215.2" textLength="97.6" clip-path="url(#breeze-ci-selective-check-line-8)">-default</text><text class="breeze-ci-selective-check-r4" x="134.2" y="215.2" t [...]
 </text><text class="breeze-ci-selective-check-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-9)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="239.6" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-9)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="239.6" textLength="97.6" clip-path="url(#breeze-ci-selective-check-line-9)">-default</text><text class="breeze-ci-selective-check-r4" x="134.2" y="239.6" t [...]
-</text><text class="breeze-ci-selective-check-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-10)">│</text><text class="breeze-ci-selective-check-r5" x="414.8" y="264" textLength="646.6" clip-path="url(#breeze-ci-selective-check-line-10)">[default:&#160;constraints-main]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breeze-ci- [...]
+</text><text class="breeze-ci-selective-check-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-10)">│</text><text class="breeze-ci-selective-check-r5" x="414.8" y="264" textLength="646.6" clip-path="url(#breeze-ci-selective-check-line-10)">[default:&#160;constraints-2-9]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="breez [...]
 </text><text class="breeze-ci-selective-check-r5" x="0" y="288.4" textLength="1464" clip-path="url(#breeze-ci-selective-check-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="breeze-ci-selective-check-r1" x="1464" y="288.4" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-11)">
 </text><text class="breeze-ci-selective-check-r5" x="0" y="312.8" textLength="24.4" clip-path="url(#breeze-ci-selective-check-line-12)">╭─</text><text class="breeze-ci-selective-check-r5" x="24.4" y="312.8" textLength="231.8" clip-path="url(#breeze-ci-selective-check-line-12)">&#160;Github&#160;parameters&#160;</text><text class="breeze-ci-selective-check-r5" x="256.2" y="312.8" textLength="1183.4" clip-path="url(#breeze-ci-selective-check-line-12)">────────────────────────────────────── [...]
 </text><text class="breeze-ci-selective-check-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-13)">│</text><text class="breeze-ci-selective-check-r4" x="24.4" y="337.2" textLength="12.2" clip-path="url(#breeze-ci-selective-check-line-13)">-</text><text class="breeze-ci-selective-check-r4" x="36.6" y="337.2" textLength="85.4" clip-path="url(#breeze-ci-selective-check-line-13)">-github</text><text class="breeze-ci-selective-check-r4" x="122" y="337.2" t [...]
diff --git a/dev/breeze/doc/images/output_ci_selective-check.txt b/dev/breeze/doc/images/output_ci_selective-check.txt
index 22984f7955..119fc2273f 100644
--- a/dev/breeze/doc/images/output_ci_selective-check.txt
+++ b/dev/breeze/doc/images/output_ci_selective-check.txt
@@ -1 +1 @@
-6657ed5d42affb7264b5efcc86f17a2a
+9df6450427d6d8b92c127264451656e1
diff --git a/dev/breeze/doc/images/output_prod-image_build.txt b/dev/breeze/doc/images/output_prod-image_build.txt
index 69f3356375..fa87fd26d5 100644
--- a/dev/breeze/doc/images/output_prod-image_build.txt
+++ b/dev/breeze/doc/images/output_prod-image_build.txt
@@ -1 +1 @@
-02caedd41d15c13971d75d87a57498df
+eb74e3b9fad64035090e6b945455213c
diff --git a/dev/breeze/doc/images/output_release-management_install-provider-packages.txt b/dev/breeze/doc/images/output_release-management_install-provider-packages.txt
index 0126dd0c7a..e62d7f2825 100644
--- a/dev/breeze/doc/images/output_release-management_install-provider-packages.txt
+++ b/dev/breeze/doc/images/output_release-management_install-provider-packages.txt
@@ -1 +1 @@
-5074c71f3f66e53ed0d5cb923a50663d
+13bb55b2124b0b267174e85a3d5f01df
diff --git a/dev/breeze/doc/images/output_release-management_verify-provider-packages.txt b/dev/breeze/doc/images/output_release-management_verify-provider-packages.txt
index 5b620200a7..a786e91bb5 100644
--- a/dev/breeze/doc/images/output_release-management_verify-provider-packages.txt
+++ b/dev/breeze/doc/images/output_release-management_verify-provider-packages.txt
@@ -1 +1 @@
-e86b7f1c3009f696b1ad9f027682d483
+e4668795fa584334051313815882a330
diff --git a/dev/breeze/doc/images/output_shell.txt b/dev/breeze/doc/images/output_shell.txt
index f51fc212f7..1b0181c602 100644
--- a/dev/breeze/doc/images/output_shell.txt
+++ b/dev/breeze/doc/images/output_shell.txt
@@ -1 +1 @@
-e2155a551cbd0ac33b7e1f3ddfed34f4
+54d6f9976022a728cfd41f351e3db280
diff --git a/dev/breeze/doc/images/output_start-airflow.txt b/dev/breeze/doc/images/output_start-airflow.txt
index 2d01e3ec61..f303517fef 100644
--- a/dev/breeze/doc/images/output_start-airflow.txt
+++ b/dev/breeze/doc/images/output_start-airflow.txt
@@ -1 +1 @@
-bdc07b607fe352a291f387be297e78c7
+105c0d2fc4501f94e22e50317b258bb9
diff --git a/docs/apache-airflow/installation/supported-versions.rst b/docs/apache-airflow/installation/supported-versions.rst
index 2d53aa8bb7..e105909838 100644
--- a/docs/apache-airflow/installation/supported-versions.rst
+++ b/docs/apache-airflow/installation/supported-versions.rst
@@ -29,7 +29,7 @@ Apache Airflow™ version life cycle:
 =========  =====================  =========  ===============  =================  ================
 Version    Current Patch/Minor    State      First Release    Limited Support    EOL/Terminated
 =========  =====================  =========  ===============  =================  ================
-2          2.8.3                  Supported  Dec 17, 2020     TBD                TBD
+2          2.9.0                  Supported  Dec 17, 2020     TBD                TBD
 1.10       1.10.15                EOL        Aug 27, 2018     Dec 17, 2020       June 17, 2021
 1.9        1.9.0                  EOL        Jan 03, 2018     Aug 27, 2018       Aug 27, 2018
 1.8        1.8.2                  EOL        Mar 19, 2017     Jan 03, 2018       Jan 03, 2018
diff --git a/docs/docker-stack/README.md b/docs/docker-stack/README.md
index 9b58311ad1..0a52bcabaa 100644
--- a/docs/docker-stack/README.md
+++ b/docs/docker-stack/README.md
@@ -31,12 +31,12 @@ Every time a new version of Airflow is released, the images are prepared in the
 [apache/airflow DockerHub](https://hub.docker.com/r/apache/airflow)
 for all the supported Python versions.
 
-You can find the following images there (Assuming Airflow version `2.9.0.dev0`):
+You can find the following images there (Assuming Airflow version `2.9.0`):
 
 * `apache/airflow:latest` - the latest released Airflow image with default Python version (3.8 currently)
 * `apache/airflow:latest-pythonX.Y` - the latest released Airflow image with specific Python version
-* `apache/airflow:2.9.0.dev0` - the versioned Airflow image with default Python version (3.8 currently)
-* `apache/airflow:2.9.0.dev0-pythonX.Y` - the versioned Airflow image with specific Python version
+* `apache/airflow:2.9.0` - the versioned Airflow image with default Python version (3.8 currently)
+* `apache/airflow:2.9.0-pythonX.Y` - the versioned Airflow image with specific Python version
 
 Those are "reference" regular images. They contain the most common set of extras, dependencies and providers that are
 often used by the users and they are good to "try-things-out" when you want to just take Airflow for a spin,
@@ -47,8 +47,8 @@ via [Building the image](https://airflow.apache.org/docs/docker-stack/build.html
 
 * `apache/airflow:slim-latest`              - the latest released Airflow image with default Python version (3.8 currently)
 * `apache/airflow:slim-latest-pythonX.Y`    - the latest released Airflow image with specific Python version
-* `apache/airflow:slim-2.9.0.dev0`           - the versioned Airflow image with default Python version (3.8 currently)
-* `apache/airflow:slim-2.9.0.dev0-pythonX.Y` - the versioned Airflow image with specific Python version
+* `apache/airflow:slim-2.9.0`           - the versioned Airflow image with default Python version (3.8 currently)
+* `apache/airflow:slim-2.9.0-pythonX.Y` - the versioned Airflow image with specific Python version
 
 The Apache Airflow image provided as convenience package is optimized for size, and
 it provides just a bare minimal set of the extras and dependencies installed and in most cases
diff --git a/docs/docker-stack/docker-examples/extending/add-airflow-configuration/Dockerfile b/docs/docker-stack/docker-examples/extending/add-airflow-configuration/Dockerfile
index a4a61f2431..ad059586bc 100644
--- a/docs/docker-stack/docker-examples/extending/add-airflow-configuration/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/add-airflow-configuration/Dockerfile
@@ -15,7 +15,7 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 ENV AIRFLOW__CORE__LOAD_EXAMPLES=True
 ENV AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=my_conn_string
 # [END Dockerfile]
diff --git a/docs/docker-stack/docker-examples/extending/add-apt-packages/Dockerfile b/docs/docker-stack/docker-examples/extending/add-apt-packages/Dockerfile
index 9636b7004a..30da6ab8bb 100644
--- a/docs/docker-stack/docker-examples/extending/add-apt-packages/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/add-apt-packages/Dockerfile
@@ -15,7 +15,7 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 USER root
 RUN apt-get update \
   && apt-get install -y --no-install-recommends \
diff --git a/docs/docker-stack/docker-examples/extending/add-build-essential-extend/Dockerfile b/docs/docker-stack/docker-examples/extending/add-build-essential-extend/Dockerfile
index 43a885c1d7..bf6f91a40d 100644
--- a/docs/docker-stack/docker-examples/extending/add-build-essential-extend/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/add-build-essential-extend/Dockerfile
@@ -15,7 +15,7 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 USER root
 RUN apt-get update \
   && apt-get install -y --no-install-recommends \
diff --git a/docs/docker-stack/docker-examples/extending/add-providers/Dockerfile b/docs/docker-stack/docker-examples/extending/add-providers/Dockerfile
index d64f793de1..f247a5ed2f 100644
--- a/docs/docker-stack/docker-examples/extending/add-providers/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/add-providers/Dockerfile
@@ -15,7 +15,7 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 USER root
 RUN apt-get update \
   && apt-get install -y --no-install-recommends \
diff --git a/docs/docker-stack/docker-examples/extending/add-pypi-packages-constraints/Dockerfile b/docs/docker-stack/docker-examples/extending/add-pypi-packages-constraints/Dockerfile
index cd7baf973c..7eb7663f74 100644
--- a/docs/docker-stack/docker-examples/extending/add-pypi-packages-constraints/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/add-pypi-packages-constraints/Dockerfile
@@ -15,6 +15,6 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" lxml --constraint "${HOME}/constraints.txt"
 # [END Dockerfile]
diff --git a/docs/docker-stack/docker-examples/extending/add-pypi-packages-uv/Dockerfile b/docs/docker-stack/docker-examples/extending/add-pypi-packages-uv/Dockerfile
index 7cf6066842..f90581b5ff 100644
--- a/docs/docker-stack/docker-examples/extending/add-pypi-packages-uv/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/add-pypi-packages-uv/Dockerfile
@@ -15,7 +15,7 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 
 # The `uv` tools is Rust packaging tool that is much faster than `pip` and other installer
 # Support for uv as installation tool is experimental
diff --git a/docs/docker-stack/docker-examples/extending/add-pypi-packages/Dockerfile b/docs/docker-stack/docker-examples/extending/add-pypi-packages/Dockerfile
index 46858d6414..b6f85bee16 100644
--- a/docs/docker-stack/docker-examples/extending/add-pypi-packages/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/add-pypi-packages/Dockerfile
@@ -15,6 +15,6 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" lxml
 # [END Dockerfile]
diff --git a/docs/docker-stack/docker-examples/extending/add-requirement-packages/Dockerfile b/docs/docker-stack/docker-examples/extending/add-requirement-packages/Dockerfile
index bbaac1e979..4c8383985b 100644
--- a/docs/docker-stack/docker-examples/extending/add-requirement-packages/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/add-requirement-packages/Dockerfile
@@ -15,7 +15,7 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 COPY requirements.txt /
 RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" -r /requirements.txt
 # [END Dockerfile]
diff --git a/docs/docker-stack/docker-examples/extending/custom-providers/Dockerfile b/docs/docker-stack/docker-examples/extending/custom-providers/Dockerfile
index a2752b25a6..7662b5946a 100644
--- a/docs/docker-stack/docker-examples/extending/custom-providers/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/custom-providers/Dockerfile
@@ -15,6 +15,6 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 RUN pip install "apache-airflow==${AIRFLOW_VERSION}" --no-cache-dir apache-airflow-providers-docker==2.5.1
 # [END Dockerfile]
diff --git a/docs/docker-stack/docker-examples/extending/embedding-dags/Dockerfile b/docs/docker-stack/docker-examples/extending/embedding-dags/Dockerfile
index 7b79a5a7ba..89bdec1feb 100644
--- a/docs/docker-stack/docker-examples/extending/embedding-dags/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/embedding-dags/Dockerfile
@@ -15,7 +15,7 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 
 COPY --chown=airflow:root test_dag.py /opt/airflow/dags
 
diff --git a/docs/docker-stack/docker-examples/extending/writable-directory/Dockerfile b/docs/docker-stack/docker-examples/extending/writable-directory/Dockerfile
index 1f7c0caab2..9ef25916ea 100644
--- a/docs/docker-stack/docker-examples/extending/writable-directory/Dockerfile
+++ b/docs/docker-stack/docker-examples/extending/writable-directory/Dockerfile
@@ -15,7 +15,7 @@
 
 # This is an example Dockerfile. It is not intended for PRODUCTION use
 # [START Dockerfile]
-FROM apache/airflow:2.9.0.dev0
+FROM apache/airflow:2.9.0
 RUN umask 0002; \
     mkdir -p ~/writeable-directory
 # [END Dockerfile]
diff --git a/docs/docker-stack/entrypoint.rst b/docs/docker-stack/entrypoint.rst
index c35b940bb2..e039bc8b56 100644
--- a/docs/docker-stack/entrypoint.rst
+++ b/docs/docker-stack/entrypoint.rst
@@ -132,7 +132,7 @@ if you specify extra arguments. For example:
 
 .. code-block:: bash
 
-  docker run -it apache/airflow:2.9.0.dev0-python3.8 bash -c "ls -la"
+  docker run -it apache/airflow:2.9.0-python3.8 bash -c "ls -la"
   total 16
   drwxr-xr-x 4 airflow root 4096 Jun  5 18:12 .
   drwxr-xr-x 1 root    root 4096 Jun  5 18:12 ..
@@ -144,7 +144,7 @@ you pass extra parameters. For example:
 
 .. code-block:: bash
 
-  > docker run -it apache/airflow:2.9.0.dev0-python3.8 python -c "print('test')"
+  > docker run -it apache/airflow:2.9.0-python3.8 python -c "print('test')"
   test
 
 If first argument equals to "airflow" - the rest of the arguments is treated as an airflow command
@@ -152,13 +152,13 @@ to execute. Example:
 
 .. code-block:: bash
 
-   docker run -it apache/airflow:2.9.0.dev0-python3.8 airflow webserver
+   docker run -it apache/airflow:2.9.0-python3.8 airflow webserver
 
 If there are any other arguments - they are simply passed to the "airflow" command
 
 .. code-block:: bash
 
-  > docker run -it apache/airflow:2.9.0.dev0-python3.8 help
+  > docker run -it apache/airflow:2.9.0-python3.8 help
     usage: airflow [-h] GROUP_OR_COMMAND ...
 
     positional arguments:
@@ -363,7 +363,7 @@ database and creating an ``admin/admin`` Admin user with the following command:
     --env "_AIRFLOW_DB_MIGRATE=true" \
     --env "_AIRFLOW_WWW_USER_CREATE=true" \
     --env "_AIRFLOW_WWW_USER_PASSWORD=admin" \
-      apache/airflow:2.9.0.dev0-python3.8 webserver
+      apache/airflow:2.9.0-python3.8 webserver
 
 
 .. code-block:: bash
@@ -372,7 +372,7 @@ database and creating an ``admin/admin`` Admin user with the following command:
     --env "_AIRFLOW_DB_MIGRATE=true" \
     --env "_AIRFLOW_WWW_USER_CREATE=true" \
     --env "_AIRFLOW_WWW_USER_PASSWORD_CMD=echo admin" \
-      apache/airflow:2.9.0.dev0-python3.8 webserver
+      apache/airflow:2.9.0-python3.8 webserver
 
 The commands above perform initialization of the SQLite database, create admin user with admin password
 and Admin role. They also forward local port ``8080`` to the webserver port and finally start the webserver.
@@ -412,6 +412,6 @@ Example:
     --env "_AIRFLOW_DB_MIGRATE=true" \
     --env "_AIRFLOW_WWW_USER_CREATE=true" \
     --env "_AIRFLOW_WWW_USER_PASSWORD_CMD=echo admin" \
-      apache/airflow:2.9.0.dev0-python3.8 webserver
+      apache/airflow:2.9.0-python3.8 webserver
 
 This method is only available starting from Docker image of Airflow 2.1.1 and above.
diff --git a/generated/PYPI_README.md b/generated/PYPI_README.md
index f1e81bec8e..b5c2d4af70 100644
--- a/generated/PYPI_README.md
+++ b/generated/PYPI_README.md
@@ -54,9 +54,9 @@ Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The
 
 Apache Airflow is tested with:
 
-|             | Main version (dev)           | Stable version (2.8.3)      |
+|             | Main version (dev)           | Stable version (2.9.0)      |
 |-------------|------------------------------|-----------------------------|
-| Python      | 3.8, 3.9, 3.10, 3.11, 3.12   | 3.8, 3.9, 3.10, 3.11        |
+| Python      | 3.8, 3.9, 3.10, 3.11, 3.12   | 3.8, 3.9, 3.10, 3.11, 3.12  |
 | Platform    | AMD64/ARM64(\*)              | AMD64/ARM64(\*)             |
 | Kubernetes  | 1.25, 1.26, 1.27, 1.28, 1.29 | 1.25, 1.26, 1.27, 1.28, 1.29|
 | PostgreSQL  | 12, 13, 14, 15, 16           | 12, 13, 14, 15, 16          |
@@ -132,15 +132,15 @@ them to the appropriate format and workflow that your tool requires.
 
 
 ```bash
-pip install 'apache-airflow==2.8.3' \
- --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.3/constraints-3.8.txt"
+pip install 'apache-airflow==2.9.0' \
+ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"
 ```
 
 2. Installing with extras (i.e., postgres, google)
 
 ```bash
-pip install 'apache-airflow[postgres,google]==2.8.3' \
- --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.3/constraints-3.8.txt"
+pip install 'apache-airflow[postgres,google]==2.9.0' \
+ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"
 ```
 
 For information on installing provider packages, check
diff --git a/scripts/ci/pre_commit/pre_commit_supported_versions.py b/scripts/ci/pre_commit/pre_commit_supported_versions.py
index 78f863519a..3354af2cfe 100755
--- a/scripts/ci/pre_commit/pre_commit_supported_versions.py
+++ b/scripts/ci/pre_commit/pre_commit_supported_versions.py
@@ -27,7 +27,7 @@ AIRFLOW_SOURCES = Path(__file__).resolve().parent.parent.parent.parent
 HEADERS = ("Version", "Current Patch/Minor", "State", "First Release", "Limited Support", "EOL/Terminated")
 
 SUPPORTED_VERSIONS = (
-    ("2", "2.8.3", "Supported", "Dec 17, 2020", "TBD", "TBD"),
+    ("2", "2.9.0", "Supported", "Dec 17, 2020", "TBD", "TBD"),
     ("1.10", "1.10.15", "EOL", "Aug 27, 2018", "Dec 17, 2020", "June 17, 2021"),
     ("1.9", "1.9.0", "EOL", "Jan 03, 2018", "Aug 27, 2018", "Aug 27, 2018"),
     ("1.8", "1.8.2", "EOL", "Mar 19, 2017", "Jan 03, 2018", "Jan 03, 2018"),


(airflow) 02/02: Update RELEASE_NOTES.rst

Posted by ep...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ephraimanierobi pushed a commit to branch v2-9-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit a8f154d6ffc4be0e88a674b08c397ebd6d46c192
Author: Ephraim Anierobi <sp...@gmail.com>
AuthorDate: Wed Mar 20 17:00:37 2024 +0100

    Update RELEASE_NOTES.rst
---
 RELEASE_NOTES.rst                   | 247 ++++++++++++++++++++++++++++++++++++
 airflow/reproducible_build.yaml     |   4 +-
 newsfragments/36376.significant.rst |  18 ---
 newsfragments/36514.significant.rst |  13 --
 newsfragments/37005.significant.rst |  10 --
 newsfragments/37176.significant.rst |   1 -
 newsfragments/37627.significant.rst |   1 -
 newsfragments/37734.significant.rst |   3 -
 newsfragments/37915.significant.rst |   1 -
 newsfragments/37925.bugfix          |   1 -
 newsfragments/38025.significant.rst |  19 ---
 11 files changed, 249 insertions(+), 69 deletions(-)

diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index 93f3090d81..6e992895d9 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -21,6 +21,253 @@
 
 .. towncrier release notes start
 
+Airflow 2.9.0 (2024-03-28)
+--------------------------
+
+Significant Changes
+^^^^^^^^^^^^^^^^^^^
+
+
+Following Listener API methods are considered stable and can be used for production system (were experimental feature in older Airflow versions) (#36376):
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+Lifecycle events:
+
+- ``on_starting``
+- ``before_stopping``
+
+DagRun State Change Events:
+
+- ``on_dag_run_running``
+- ``on_dag_run_success``
+- ``on_dag_run_failed``
+
+TaskInstance State Change Events:
+
+- ``on_task_instance_running``
+- ``on_task_instance_success``
+- ``on_task_instance_failed``
+
+Support for Microsoft SQL-Server for Airflow Meta Database has been removed (#36514)
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+After `discussion <https://lists.apache.org/thread/r06j306hldg03g2my1pd4nyjxg78b3h4>`__
+and a `voting process <https://lists.apache.org/thread/pgcgmhf6560k8jbsmz8nlyoxosvltph2>`__,
+the Airflow's PMC and Committers have reached a resolution to no longer maintain MsSQL as a supported Database Backend.
+
+As of Airflow 2.9.0 support of MsSQL has been removed for Airflow Database Backend.
+
+A migration script which can help migrating the database *before* upgrading to Airflow 2.9.0 is available in
+`airflow-mssql-migration repo on Github <https://github.com/apache/airflow-mssql-migration>`_.
+Note that the migration script is provided without support and warranty.
+
+This does not affect the existing provider packages (operators and hooks), DAGs can still access and process data from MsSQL.
+
+Dataset URIs are now validated on input (#37005)
+""""""""""""""""""""""""""""""""""""""""""""""""
+
+Datasets must use a URI that conform to rules laid down in AIP-60, and the value
+will be automatically normalized when the DAG file is parsed. See
+`documentation on Datasets <https://airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/datasets.html>`_ for
+a more detailed description on the rules.
+
+You may need to change your Dataset identifiers if they look like a URI, but are
+used in a less mainstream way, such as relying on the URI's auth section, or
+have a case-sensitive protocol name.
+
+To use the API delete methods of ``queuedEvent`` endpoints,  apache-airflow-providers-fab version 1.1.0 or higher is required. This version adds permission to delete a dataset. (#37176)
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+The method ``get_permitted_menu_items`` in ``BaseAuthManager`` has been renamed ``filter_permitted_menu_items`` (#37627)
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+Add REST API actions to Audit Log events (#37734)
+"""""""""""""""""""""""""""""""""""""""""""""""""
+
+The Audit Log ``event`` name for REST API events will be prepended with ``api.`` or ``ui.``, depending on if it came from the Airflow UI or externally.
+
+Airflow 2.9.0 is the first release that officially supports Python 3.12 (#38025)
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+There are a few caveats though:
+
+* Pendulum2 does not support Python 3.12. For Python 3.12 you need to use
+  `Pendulum 3 <https://pendulum.eustace.io/blog/announcing-pendulum-3-0-0.html>`_
+
+* Minimum SQLAlchemy version supported when Pandas is installed for Python 3.12 is ``1.4.36`` released in
+  April 2022. Airflow 2.9.0 increases the minimum supported version of SQLAlchemy to ``1.4.36`` for all
+  Python versions.
+
+Not all Providers support Python 3.12. At the initial release of Airflow 2.9.0 the following providers
+are released without support for Python 3.12:
+
+  * ``apache.beam`` - pending on `Apache Beam support for 3.12 <https://github.com/apache/beam/issues/29149>`_
+  * ``papermill`` - pending on Releasing Python 3.12 compatible papermill client version
+    `including this merged issue <https://github.com/nteract/papermill/pull/771>`_
+
+
+New Features
+""""""""""""
+- Add ``Matomo`` as an option for analytics_tool. (#38221)
+- Experimental: Support custom weight_rule implementation to calculate the TI priority_weight (#38222)
+- Adding ability to automatically set DAG to off after X times it failed sequentially (#36935)
+- Add dataset conditions to next run datasets modal (#38123)
+- Add task log grouping to UI (#38021)
+- Add dataset_expression to grid dag details (#38121)
+- Introduce mechanism to support multiple executor configuration (#37635)
+- Add color formatting for ANSI chars in logs from task executions (#37985)
+- Add the dataset_expression as part of DagModel and DAGDetailSchema (#37826)
+- Add TaskFail entries to Gantt chart (#37918)
+- Allow longer rendered_map_index (#37798)
+- Inherit the run_ordering from DatasetTriggeredTimetable for DatasetOrTimeSchedule (#37775)
+- Implement AIP-60 Dataset URI formats (#37005)
+- Introducing Logical Operators for dataset conditional logic (#37101)
+- Add post endpoint for dataset events (#37570)
+- Show custom instance names for a mapped task in UI (#36797)
+- Add excluded/included events to get_event_logs api (#37641)
+- Add datasets to dag graph (#37604)
+- Show dataset events above task/run details in grid view (#37603)
+- Introduce new config variable to control whether DAG processor outputs to stdout (#37439)
+- Make Datasets ``hashable`` (#37465)
+- Add conditional logic for dataset triggering (#37016)
+- Implement task duration page in react. (#35863)
+- Add ``queuedEvent`` endpoint to get/delete DatasetDagRunQueue (#37176)
+- Support multiple XCom output in the BaseOperator (#37297)
+- AIP-58: Add object storage backend for xcom (#37058)
+- Introduce ``DatasetOrTimeSchedule`` (#36710)
+- Add ``on_skipped_callback`` in to ``BaseOperator`` (#36374)
+- Allow override of hovered navbar colors (#36631)
+- Create new Metrics with Tagging (#36528)
+- Add support for openlineage to AFS and common.io (#36410)
+- Introduce ``@task.bash`` TaskFlow decorator (#30176, #37875)
+- Added functionality to automatically ingest custom airflow.cfg file upon startup (#36289)
+
+
+Improvements
+""""""""""""
+- Implement methods on TaskInstancePydantic and DagRunPydantic (#38295, #38302, #38303)
+- Made filters bar collapsible and add a full screen toggle (#38296)
+- Encrypt all trigger attributes (#38233)
+- Upgrade react-table package. Use with Audit Log table (#38092)
+- Make the method ``BaseAuthManager.is_authorized_custom_view`` abstract (#37915)
+- Show if dag page filters are active (#38080)
+- Add try number to mapped instance (#38097)
+- Add retries to job heartbeat (#37541)
+- Add REST API events to Audit Log (#37734)
+- Make current working directory as templated field in BashOperator (#37968)
+- Add calendar view to react (#37909)
+- Add ``run_id`` column to log table (#37731)
+- Add ``tryNumber`` to grid task instance tooltip (#37911)
+- Session is not used in _do_render_template_fields (#37856)
+- Improve MappedOperator property types (#37870)
+- Remove provide_session decorator from TaskInstancePydantic methods (#37853)
+- Ensure the "airflow.task" logger used for TaskInstancePydantic and TaskInstance (#37857)
+- Better error message for internal api call error (#37852)
+- Increase tooltip size of dag grid view (#37782) (#37805)
+- Use named loggers instead of root logger (#37801)
+- Add Run Duration in React (#37735)
+- Avoid non-recommended usage of logging (#37792)
+- Improve DateTimeTrigger typing (#37694)
+- Make sure all unique run_ids render a task duration bar (#37717)
+- Add Dag Audit Log to React (#37682)
+- Add log event for auto pause (#38243)
+- Better message for exception for templated base operator fields (#37668)
+- Clean up webserver endpoints adding to audit log (#37580)
+- Filter datasets graph by dag_id (#37464)
+- Use new exception type inheriting BaseException for SIGTERMs (#37613)
+- Refactor dataset class inheritance (#37590)
+- Simplify checks for package versions (#37585)
+- Filter Datasets by associated dag_ids (GET /datasets) (#37512)
+- Enable "airflow tasks test" to run deferrable operator (#37542)
+- Make datasets list/graph width adjustable (#37425)
+- Speedup determine installed airflow version in ``ExternalPythonOperator`` (#37409)
+- Add more task details from rest api (#37394)
+- Add confirmation dialog box for DAG run actions (#35393)
+- Added shutdown color to the STATE_COLORS (#37295)
+- Remove legacy dag details page and redirect to grid (#37232)
+- Order XCom entries by map index in API (#37086)
+- Add data_interval_start and data_interval_end in dagrun create API endpoint (#36630)
+- Making links in task logs as hyperlinks by preventing HTML injection (#36829)
+- Improve ExternalTaskSensor Async Implementation (#36916)
+- Make Datasets ``Pathlike`` (#36947)
+- Simplify query for orphaned tasks (#36566)
+- Add deferrable param in FileSensor (#36840)
+- Run Trigger Page: Configurable number of recent configs (#36878)
+- Merge ``nowait`` and skip_locked into with_row_locks (#36889)
+- Return the specified field when get ``dag/dagRun`` in the REST API (#36641)
+- Only iterate over the items if debug is enabled for DagFileProcessorManager (#36761)
+- Add a fuzzy/regex pattern-matching for metric allow and block list (#36250)
+- Allow custom columns in cli dags list (#35250)
+- Make it possible to change the default cron timetable (#34851)
+- Some improvements to Airflow IO code (#36259)
+- Improve TaskInstance typing hints (#36487)
+- Remove dependency of ``Connexion`` from auth manager interface (#36209)
+- Refactor ExternalDagLink to not create ad hoc TaskInstances (#36135)
+
+Bug Fixes
+"""""""""
+- Make the method ``BaseAuthManager.is_authorized_custom_view`` abstract (#37915)
+- Add upper limit to planned calendar events calculation (#38310)
+- Fix Scheduler in daemon mode doesn't create PID at the specified location (#38117)
+- Properly serialize TaskInstancePydantic and DagRunPydantic (#37855)
+- Fix graph task state border color (#38084)
+- Add back methods removed in security manager (#37997)
+- Don't log "403" from worker serve-logs as "Unknown error". (#37933)
+- Fix execution data validation error in ``/get_logs_with_metadata`` endpoint (#37756)
+- Fix task duration selection (#37630)
+- Refrain from passing ``encoding`` to the SQL engine in SQLAlchemy v2 (#37545)
+- Fix 'implicitly coercing SELECT object to scalar subquery' in latest dag run statement (#37505)
+- Clean up typing with max_execution_date query builder (#36958)
+- Optimize max_execution_date query in single dag case (#33242)
+- Fix list dags command for get_dagmodel is None (#36739)
+- Load ``consuming_dags`` attr eagerly before dataset listener (#36247)
+
+
+Miscellaneous
+"""""""""""""
+- Bump minimum version of ``blinker`` add where it requires (#38140)
+- Bump follow-redirects from 1.15.4 to 1.15.6 in /airflow/www (#38156)
+- Bump Cryptography to > 39.0.0 (#38112)
+- Add Python 3.12 support (#36755, #38025, #36595)
+- Avoid use of ``assert`` outside of the tests (#37718)
+- Update ObjectStoragePath for universal_pathlib>=v0.2.2 (#37930)
+- Resolve G004: Logging statement uses f-string (#37873)
+- Update build and install dependencies. (#37910)
+- Bump sanitize-html from 2.11.0 to 2.12.1 in /airflow/www (#37833)
+- Update to latest installer versions. (#37754)
+- Deprecate smtp configs in airflow settings / local_settings (#37711)
+- Deprecate PY* constants into the airflow module (#37575)
+- Remove usage of deprecated ``flask._request_ctx_stack`` (#37522)
+- Remove redundant ``login`` attribute in ``airflow.__init__.py`` (#37565)
+- Upgrade to FAB 4.3.11 (#37233)
+- Remove SCHEDULED_DEPS which is no longer used anywhere since 2.0.0 (#37140)
+- Replace ``datetime.datetime.utcnow`` by ``airflow.utils.timezone.utcnow`` in core (#35448)
+- Bump aiohttp min version to avoid CVE-2024-23829 and CVE-2024-23334 (#37110)
+- Move config related to FAB auth manager to FAB provider (#36232)
+- Remove MSSQL support form Airflow core (#36514)
+- Remove ``daskexcutor`` provider from Airflow code (#36269)
+- Remove ``is_authorized_cluster_activity`` from auth manager (#36175)
+- Create FAB provider and move FAB auth manager in it (#35926)
+
+Doc Only Changes
+""""""""""""""""
+- Refactor DatasetOrTimeSchedule timetable docs (#37771)
+- Migrate executor docs to respective providers (#37728)
+- Add directive to render a list of URI schemes (#37700)
+- Add doc page with providers deprecations (#37075)
+- Add a cross reference to security policy (#37004)
+- Improve AIRFLOW__WEBSERVER__BASE_URL docs (#37003)
+- Update faq.rst with (hopefully) clearer description of start_date (#36846)
+- Update public interface doc re operators (#36767)
+- Add ``exception`` to templates ref list (#36656)
+- Add auth manager interface as public interface (#36312)
+- Reference fab provider documentation in Airflow documentation (#36310)
+- Create auth manager documentation (#36211)
+- Update permission docs (#36120)
+- Docstring improvement to _covers_every_hour (#36081)
+- Add note that task instance, dag and lifecycle listeners are non-experimental (#36376)
+
+
+
+
 Airflow 2.8.3 (2024-03-11)
 --------------------------
 
diff --git a/airflow/reproducible_build.yaml b/airflow/reproducible_build.yaml
index 767edf12eb..0f253ad4ce 100644
--- a/airflow/reproducible_build.yaml
+++ b/airflow/reproducible_build.yaml
@@ -1,2 +1,2 @@
-release-notes-hash: ba2e7a8d91504ba2db3292dd184cfd5c
-source-date-epoch: 1709800692
+release-notes-hash: 6087e170937f373b4eb5defccaf94d46
+source-date-epoch: 1710959317
diff --git a/newsfragments/36376.significant.rst b/newsfragments/36376.significant.rst
deleted file mode 100644
index 6c37a8a8eb..0000000000
--- a/newsfragments/36376.significant.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-Following Listener API methods are considered stable and can be used for production system (were experimental feature in older Airflow versions):
-
-Lifecycle events:
-
-- ``on_starting``
-- ``before_stopping``
-
-DagRun State Change Events:
-
-- ``on_dag_run_running``
-- ``on_dag_run_success``
-- ``on_dag_run_failed``
-
-TaskInstance State Change Events:
-
-- ``on_task_instance_running``
-- ``on_task_instance_success``
-- ``on_task_instance_failed``
diff --git a/newsfragments/36514.significant.rst b/newsfragments/36514.significant.rst
deleted file mode 100644
index e40c3b4820..0000000000
--- a/newsfragments/36514.significant.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-Support for Microsoft SQL-Server for Airflow Meta Database has been removed
-
-After `discussion <https://lists.apache.org/thread/r06j306hldg03g2my1pd4nyjxg78b3h4>`__
-and a `voting process <https://lists.apache.org/thread/pgcgmhf6560k8jbsmz8nlyoxosvltph2>`__,
-the Airflow's PMC and Committers have reached a resolution to no longer maintain MsSQL as a supported Database Backend.
-
-As of Airflow 2.9.0 support of MsSQL has been removed for Airflow Database Backend.
-
-A migration script which can help migrating the database *before* upgrading to Airflow 2.9.0 is available in
-`airflow-mssql-migration repo on Github <https://github.com/apache/airflow-mssql-migration>`_.
-Note that the migration script is provided without support and warranty.
-
-This does not affect the existing provider packages (operators and hooks), DAGs can still access and process data from MsSQL.
diff --git a/newsfragments/37005.significant.rst b/newsfragments/37005.significant.rst
deleted file mode 100644
index 927c8ef848..0000000000
--- a/newsfragments/37005.significant.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-Dataset URIs are now validated on input
-
-Datasets must use a URI that conform to rules laid down in AIP-60, and the value
-will be automatically normalised when the DAG file is parsed. See
-:doc:`documentation on Datasets </authoring-and-scheduling/datasets.rst>` for
-a more detailed description on the rules.
-
-You may need to change your Dataset identifiers if they look like a URI, but are
-used in a less mainstream way, such as relying on the URI's auth section, or
-have a case-sensitive protocol name.
diff --git a/newsfragments/37176.significant.rst b/newsfragments/37176.significant.rst
deleted file mode 100644
index e8d57da288..0000000000
--- a/newsfragments/37176.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-To use the API delete methods of queuedEvent endpoints,  apache-airflow-providers-fab version 1.1.0 or higher is required. This version adds permission to delete a dataset.
diff --git a/newsfragments/37627.significant.rst b/newsfragments/37627.significant.rst
deleted file mode 100644
index 886b3e25a0..0000000000
--- a/newsfragments/37627.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-The method ``get_permitted_menu_items`` in ``BaseAuthManager`` has been renamed ``filter_permitted_menu_items``
diff --git a/newsfragments/37734.significant.rst b/newsfragments/37734.significant.rst
deleted file mode 100644
index e31ef22d19..0000000000
--- a/newsfragments/37734.significant.rst
+++ /dev/null
@@ -1,3 +0,0 @@
-Add REST API actions to Audit Log events
-
-The Audit Log ``event`` name for REST API events will be prepended with ``api.`` or ``ui.``, depending on if it came from the Airflow UI or externally.
diff --git a/newsfragments/37915.significant.rst b/newsfragments/37915.significant.rst
deleted file mode 100644
index 27702fd77f..0000000000
--- a/newsfragments/37915.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-The method ``is_authorized_custom_view`` from ``BaseAuthManager`` is now abstract. All sub classes must implement this method.
diff --git a/newsfragments/37925.bugfix b/newsfragments/37925.bugfix
deleted file mode 100644
index b0511a3905..0000000000
--- a/newsfragments/37925.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Restores `delegate_to` argument of Google Cloud to Google Drive Transfer Operators, to only be used in the Drive Hook
diff --git a/newsfragments/38025.significant.rst b/newsfragments/38025.significant.rst
deleted file mode 100644
index 6a26397f60..0000000000
--- a/newsfragments/38025.significant.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-Airflow 2.9.0 is the first release that officially supports Python 3.12.
-
-There are a few caveats though:
-
-* Pendulum2 does not support Python 3.12. For Python 3.12 you need to use
-  `Pendulum 3 <https://pendulum.eustace.io/blog/announcing-pendulum-3-0-0.html>`_
-
-* Minimum SQLAlchemy version supported when Pandas is installed for Python 3.12 is ``1.4.36`` released in
-  April 2022. Airflow 2.9.0 increases the minimum supported version of SQLAlchemy to ``1.4.36`` for all
-  Python versions.
-
-Not all Providers support Python 3.12. At the initial release of Airflow 2.9.0 the following providers
-are released without support for Python 3.12:
-
-  * ``apache.beam`` - pending on `Implementing <https://github.com/apache/beam/issues/29149>`_
-  * ``apache.cassandra`` - pending on `Cassandra driver releasing binary driver with libev support <https://datastax-oss.atlassian.net/browse/PYTHON-1378>`_
-    or `Promoting asyncio reactor to be production ready in cassandra driver <https://datastax-oss.atlassian.net/browse/PYTHON-1375>`_
-  * ``papermill`` - pending on Releasing Python 3.12 compatible papermill client version
-    `including this merged issue <https://github.com/nteract/papermill/pull/771>`_