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 9c4b62c0569104772b7a6e73b94959a337e9103c
Author: Ephraim Anierobi <[email protected]>
AuthorDate: Wed Mar 20 13:37:10 2024 +0100

    Update RELEASE_NOTES.rst
---
 RELEASE_NOTES.rst                   | 269 ++++++++++++++++++++++++++++++++++++
 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, 271 insertions(+), 69 deletions(-)

diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index 93f3090d81..4bdae58a62 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -21,6 +21,275 @@
 
 .. 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.
+
+The method ``is_authorized_custom_view`` from ``BaseAuthManager`` is now 
abstract. All sub classes must implement this method. (#37915)
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+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 `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>`_
+
+
+New Features
+""""""""""""
+- 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)
+- Feature/add 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
+""""""""""""
+- 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)
+- Make current working directory as templated field in BashOperator (#37928)
+- 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
+"""""""""
+- 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)
+- Fix construct ``docker.TLSConfig`` for ``docker>=7`` (#37481)
+- 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)
+- Make ``hachicorp`` dependencies consistent between ``provider.yaml`` and 
``pyproject.toml`` (#36758)
+- Fix list dags command for get_dagmodel is None (#36739)
+- Load ``consuming_dags`` attr eagerly before dataset listener (#36247)
+
+
+Miscellaneous
+"""""""""""""
+- Lift the limit on importlib_resources library (#38294)
+- 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)
+- Switch from --user to venv for PROD image and enable uv (#37796)
+- Upgrade google-ads version (#37787)
+- Update build and install dependencies. (#37910)
+- Resolve G003: "Logging statement uses +" (#37848)
+- Bump sanitize-html from 2.11.0 to 2.12.1 in /airflow/www (#37833)
+- Fix "Exception statement has no effect" (#37722)
+- Update to latest installer versions. (#37754)
+- Deprecate smtp configs in airflow settings / local_settings (#37711)
+- Add smtp provider to prod image (#37739)
+- 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)
+- Enable PT014: Checks for duplicate test cases in ``pytest.mark.parametrize`` 
(#37383)
+- Enable D401 lint issues in airflow core (#37274, #37251,#37167)
+- 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)
+- Upgrade yarn stack in pre-commits (#37048)
+- Generate Python client in reproducible way (#36763)
+- Move config related to FAB auth manager to FAB provider (#36232)
+- Remove MSSQL support form Airflow core (#36514)
+- Modify SmtpNotifier to accept template with defaults (#36226)
+- Upgrade to just released ``pip`` 23.3.2 (#36271)
+- 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
+""""""""""""""""
+- Add Multi-Tenant architecture diagram (#37931)
+- Minor security model update (#37984)
+- Fix images in breeze docs (#37832)
+- Format improvements, URL fixes in contrib docs (#37820)
+- Refactor DatasetOrTimeSchedule timetable docs (#37771)
+- Migrate executor docs to respective providers (#37728)
+- Fixing contributing-docs/03_contributors_quick_start.rst for clarity. 
(#37719)
+- 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 more info to Docs README  (#36287)
+- 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..00666164d0 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: 85ec360279571625587968855f279303
+source-date-epoch: 1710938222
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>`_

Reply via email to