Just wanted to stress a note for this one:

*apache-airflow-providers-fab==1.0.2b0 must be installed alongside*
*this snapshot for Airflow to work.*

(we will improve it in the next release)
J.


On Thu, Mar 21, 2024 at 1:12 PM Ephraim Anierobi <ephraimanier...@apache.org>
wrote:

> Hey fellow Airflowers,
>
> We have cut Airflow 2.9.0b1 now that all the main features have been
> included.
>
> Note: apache-airflow-providers-fab==1.0.2b0 must be installed alongside
> this snapshot for Airflow to work.
>
> 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.0b1 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.0b1 is available at:
> https://dist.apache.org/repos/dist/dev/airflow/2.9.0b1/
>
> *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://pypi.org/project/apache-airflow/2.9.0b1/
> and can be installed by running the following command:
>
> pip install 'apache-airflow==2.9.0b1'
>
> *Constraints files* are available at
> https://github.com/apache/airflow/tree/constraints-2.9.0b1
>
> Release Notes:
> https://github.com/apache/airflow/blob/2.9.0b1/RELEASE_NOTES.rst
>
> *Changes since 2.8.4rc1:*
>
> *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.
>
> *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)
> - 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 ``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)
> - Remove ``daskexcutor`` provider from Airflow code (#36269)
>
> Cheers,
> Ephraim
>

Reply via email to