It is as we require pendulum 3 for python 3.12 support.

Sent from my iPhone

> On 28 Mar 2024, at 15:21, Nathan Hadfield <nathan.hadfi...@king.com> wrote:
> 
> Yes, there’s this issue (turned discussion) about it but it is not specific 
> to 2.9.
> 
> https://github.com/apache/airflow/discussions/37037
> 
> From: Bolke de Bruin <bdbr...@gmail.com>
> Date: Thursday, 28 March 2024 at 13:01
> To: dev@airflow.apache.org <dev@airflow.apache.org>
> Subject: Re: Apache Airflow 2.9.0b2 available for testing
> Pendulum 3 serializes ISO8601 slightly different (missing T) AFAIK. I thought 
> someone opened an issue for that (don't have it handy). Maybe it is something 
> we should at least mention in the release notes? Sent from my iPhone > On 28 
> Mar
> ZjQcmQRYFpfptBannerStart
> This Message Is From an External Sender
> This message came from outside your organization.
> 
> ZjQcmQRYFpfptBannerEnd
> 
> Pendulum 3 serializes ISO8601 slightly different (missing T) AFAIK. I thought 
> someone opened an issue for that (don't have it handy). Maybe it is something 
> we should at least mention in the release notes?
> 
> 
> 
> Sent from my iPhone
> 
> 
> 
>>> On 28 Mar 2024, at 00:54, Ephraim Anierobi <ephraimanier...@apache.org> 
>>> wrote:
>> 
>> 
> 
>> Hey fellow Airflowers,
> 
>> 
> 
>> We have cut Airflow 2.9.0b2 now that all the main features have been
> 
>> included.
> 
>> 
> 
>> This "snapshot" is intended for members of the Airflow developer community
> 
>> to test the build
> 
>> and allow early testing of 2.9.0. Please test this beta and create GitHub
> 
>> issues wherever possible if you encounter bugs, (use 2.9.0b2 in the version
> 
>> dropdown filter when creating the issue).
> 
>> 
> 
>> For clarity, this is not an official release of Apache Airflow either -
> 
>> that doesn't happen until we make a release candidate and then vote on that.
> 
>> 
> 
>> Airflow 2.9.0b2 is available at:
> 
>> https://urldefense.com/v3/__https://dist.apache.org/repos/dist/dev/airflow/2.9.0b2/__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK7f_zUkew$<https://urldefense.com/v3/__https:/dist.apache.org/repos/dist/dev/airflow/2.9.0b2/__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK7f_zUkew$>
> 
>> 
> 
>> *apache-airflow-2.9.0-source.tar.gz* is a source release that comes with
> 
>> INSTALL instructions.
> 
>> *apache-airflow-2.9.0.tar.gz* is the binary Python "sdist" release.
> 
>> *apache_airflow-2.9.0-py3-none-any.whl* is the binary Python wheel "binary"
> 
>> release.
> 
>> 
> 
>> This snapshot has been pushed to PyPI too at
> 
>> https://urldefense.com/v3/__https://pypi.org/project/apache-airflow/2.9.0b2/__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK4p9M91Pw$<https://urldefense.com/v3/__https:/pypi.org/project/apache-airflow/2.9.0b2/__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK4p9M91Pw$>
> 
>> and can be installed by running the following command:
> 
>> 
> 
>> pip install 'apache-airflow==2.9.0b2'
> 
>> 
> 
>> *Constraints files* are available at
> 
>> https://urldefense.com/v3/__https://github.com/apache/airflow/tree/constraints-2.9.0b2__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK7E1a75CQ$<https://urldefense.com/v3/__https:/github.com/apache/airflow/tree/constraints-2.9.0b2__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK7E1a75CQ$>
> 
>> 
> 
>> Release Notes:
> 
>> https://urldefense.com/v3/__https://github.com/apache/airflow/blob/2.9.0b2/RELEASE_NOTES.rst__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK6HLhPrSA$<https://urldefense.com/v3/__https:/github.com/apache/airflow/blob/2.9.0b2/RELEASE_NOTES.rst__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK6HLhPrSA$>
> 
>> 
> 
>> *Changes since 2.8.4:*
> 
>> 
> 
>> *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://urldefense.com/v3/__https://lists.apache.org/thread/r06j306hldg03g2my1pd4nyjxg78b3h4__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK5ggbfBpg$<https://urldefense.com/v3/__https:/lists.apache.org/thread/r06j306hldg03g2my1pd4nyjxg78b3h4__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK5ggbfBpg$>>`__
> 
>> and a `voting process <
> 
>> https://urldefense.com/v3/__https://lists.apache.org/thread/pgcgmhf6560k8jbsmz8nlyoxosvltph2__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK6bupIS6g$<https://urldefense.com/v3/__https:/lists.apache.org/thread/pgcgmhf6560k8jbsmz8nlyoxosvltph2__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK6bupIS6g$>>`__,
> 
>> 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://urldefense.com/v3/__https://github.com/apache/airflow-mssql-migration__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK6His75uw$<https://urldefense.com/v3/__https:/github.com/apache/airflow-mssql-migration__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK6His75uw$>>`_.
> 
>> 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://urldefense.com/v3/__https://airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/datasets.html__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK41dzhXtQ$<https://urldefense.com/v3/__https:/airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/datasets.html__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK41dzhXtQ$>>`_
> 
>> 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.
> 
>> 
> 
>> *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.
> 
>> 
> 
>> *Official support for 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://urldefense.com/v3/__https://pendulum.eustace.io/blog/announcing-pendulum-3-0-0.html__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK7Epl-RUw$<https://urldefense.com/v3/__https:/pendulum.eustace.io/blog/announcing-pendulum-3-0-0.html__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK7Epl-RUw$>>`_
> 
>> 
> 
>> * 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://urldefense.com/v3/__https://github.com/apache/beam/issues/29149__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK7iPXgkIw$<https://urldefense.com/v3/__https:/github.com/apache/beam/issues/29149__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK7iPXgkIw$>>`_
> 
>> * ``papermill`` - pending on Releasing Python 3.12 compatible papermill
> 
>> client version
> 
>>   `including this merged issue <
> 
>> https://urldefense.com/v3/__https://github.com/nteract/papermill/pull/771__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK5Uidvi2A$<https://urldefense.com/v3/__https:/github.com/nteract/papermill/pull/771__;!!Ci6f514n9QsL8ck!nDdmZt2BM4BAERowEi8OynoVSS90zEDxAT-yVVfksdVJPSKQfsZS8OWgT5yOKneeZp24s5p5IK5Uidvi2A$>>`_
> 
>> 
> 
>> *Prevent large string objects from being stored in the Rendered Template
> 
>> Fields (#38094)*
> 
>> 
> 
>> There's now a limit to the length of data that can be stored in the
> 
>> Rendered Template Fields.
> 
>> The limit is set to 4096 characters. If the data exceeds this limit, it
> 
>> will be truncated. You can change this limit
> 
>> by setting the ``[core]max_template_field_length`` configuration option in
> 
>> your airflow config.
> 
>> 
> 
>> *Change xcom table column value type to longblob for MySQL backend (#38401)*
> 
>> Xcom table column ``value`` type has changed from ``blob`` to ``longblob``.
> 
>> This will allow you to store relatively big data in Xcom but process can
> 
>> take a significant amount of time if you have a lot of large data stored in
> 
>> Xcom.
> 
>> 
> 
>> To downgrade from revision: ``b4078ac230a1``, ensure that you don't have
> 
>> Xcom values larger than 65,535 bytes. Otherwise, you'll need to clean those
> 
>> rows or run ``airflow db clean xcom`` to clean the Xcom table.
> 
>> 
> 
>> *New Features*
> 
>> - Allow users to write dag_id and task_id in their national characters,
> 
>> added display name for dag / task (v2) (#38446)
> 
>> - Prevent large objects from being stored in the RTIF (#38094)
> 
>> - Use current time to calculate duration when end date is not present.
> 
>> (#38375)
> 
>> - Add average duration mark line in task and dagrun duration charts.
> 
>> (#38214, #38434)
> 
>> - Add button to manually create dataset events (#38305)
> 
>> - 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`` 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*
> 
>> - Update Confirmation Logic for Config Changes on Sensitive Environments
> 
>> Like Production (#38299)
> 
>> - Improve datasets graph UX (#38476)
> 
>> - Only show latest dataset event timestamp after last run (#38340)
> 
>> - Add button to clear only failed tasks in a dagrun. (#38217)
> 
>> - Delete all old dag pages and redirect to grid view (#37988)
> 
>> - Check task attribute before use in sentry.add_tagging() (#37143)
> 
>> - Mysql change xcom value col type for MySQL backend (#38401)
> 
>> - ``ExternalPythonOperator`` use version from ``sys.version_info`` (#38377)
> 
>> - Replace too broad exceptions into the Core (#38344)
> 
>> - Add CLI support for bulk pause and resume of DAGs (#38265)
> 
>> - Implement methods on TaskInstancePydantic and DagRunPydantic (#38295,
> 
>> #38302, #38303, #38297)
> 
>> - 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)
> 
>> - 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*
> 
>> - Show abandoned tasks in Grid View (#38511)
> 
>> - Apply task instance mutation hook consistently (#38440)
> 
>> - Override ``chakra`` styles to keep ``dropdowns`` in filter bar (#38456)
> 
>> - Store duration in seconds and scale to handle case when a value in the
> 
>> series has a larger unit than the preceding durations. (#38374)
> 
>> - Don't allow defaults other than None in context parameters, and improve
> 
>> error message (#38015)
> 
>> - Make postgresql default engine args comply with SA 2.0 (#38362)
> 
>> - Add return statement to yield within a while loop in triggers (#38389)
> 
>> - Ensure ``__exit__`` is called in decorator context managers (#38383)
> 
>> - 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*
> 
>> - Use ``importlib_metadata`` with compat to Python 3.10/3.12 ``stdlib``
> 
>> (#38366)
> 
>> - Refactored ``__new__`` magic method of BaseOperatorMeta to avoid bad
> 
>> mixing classic and decorated operators (#37937)
> 
>> - Use ``sys.version_info`` for determine Python Major.Minor (#38372)
> 
>> - Add missing deprecated Fab auth manager (#38376)
> 
>> - Remove unused loop variable from airflow package (#38308)
> 
>> - Adding max consecutive failed dag runs info in UI (#38229)
> 
>> - 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 ``is_authorized_cluster_activity`` from auth manager (#36175)
> 
>> - Create FAB provider and move FAB auth manager in it (#35926)
> 
>> 
> 
>> *Doc Only Changes*
> 
>> - Removed/Updated Outdated UI screenshots from documentation (#38403,
> 
>> #38438, #38435)
> 
>> - Remove section as it's no longer true with dataset expressions PR (#38370)
> 
>> - 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)
> 
>> 
> 
>> Cheers,
> 
>> Ephraim
> 
> 
> 
> ---------------------------------------------------------------------
> 
> To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org
> 
> For additional commands, e-mail: dev-h...@airflow.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org
For additional commands, e-mail: dev-h...@airflow.apache.org

Reply via email to