release notes
release notes
Published 2/26/2024
PatchContains new featuresallowed_deserialization_classes flag now follows a glob pattern (#36147).For example if one wants to add the class airflow.tests.custom_class to the
allowed_deserialization_classes list, it can be done by writing the full class
name (airflow.tests.custom_class) or a pattern such as the ones used in glob
search (e.g., airflow.*, airflow.tests.*).
If you currently use a custom regexp path make sure to rewrite it as a glob pattern.
Alternatively, if you still wish to match it as a regexp pattern, add it under the new
list allowed_deserialization_classes_regexp instead.
This was done under the policy that we do not want users like Viewer, Ops, and other users apart from Admin to have access to audit_logs. The intention behind this change is to restrict users with less permissions from viewing user details like First Name, Email etc. from the audit_logs when they are not permitted to.
The impact of this change is that the existing users with non admin rights won't be able to view or access the audit_logs, both from the Browse tab or from the DAG run.
AirflowTimeoutError is no longer except by default through Exception (#35653).The AirflowTimeoutError is now inheriting BaseException instead of
AirflowException->Exception.
See https://docs.python.org/3/library/exceptions.html#exception-hierarchy
This prevents code catching Exception from accidentally
catching AirflowTimeoutError and continuing to run.
AirflowTimeoutError is an explicit intent to cancel the task, and should not
be caught in attempts to handle the error and return some default value.
Catching AirflowTimeoutError is still possible by explicitly excepting
AirflowTimeoutError or BaseException.
This is discouraged, as it may allow the code to continue running even after
such cancellation requests.
Code that previously depended on performing strict cleanup in every situation
after catching Exception is advised to use finally blocks or
context managers. To perform only the cleanup and then automatically
re-raise the exception.
See similar considerations about catching KeyboardInterrupt in
https://docs.python.org/3/library/exceptions.html#KeyboardInterrupt
IMPORT_ERROR from DAG related permissions to view related permissions (#37292)AirflowTaskTimeout to inherit BaseException (#35653)namedtuple (#37168)Treeview function (#37162)access_entity is specified (#37290)dateTimeAttrFormat constant (#37285)[@Sentry](https://github.com/Sentry).enrich_errors (#37002)dryrun auto-fetch (#36941)/variables endpoint (#36820)pendulum.from_timestamp usage (#37160)CLI instead of specific one (#37651)undici from 5.26.3 to 5.28.3 in /airflow/www (#37493)3.12 exclusions in providers/pyproject.toml (#37404)markdown from core dependencies (#37396)pageSize method. (#37319)Python 3.11 and 3.12 deprecations (#37478)airflow_pre_installed_providers.txt into sdist distribution (#37388)universal-pathlib to < 0.2.0 (#37311)queue_when (#36997)config.yml for environment variable sql_alchemy_connect_args (#36526)Alembic to 1.13.1 (#36928)flask-session to <0.6 (#36895)CLI flags available (#37231)otel config descriptions (#37229)Objectstore tutorial with prereqs section (#36983)package/module names (#36927)__init__ of operators automatically (#33786)release notes
Published 2/26/2024
PatchContains new featuresallowed_deserialization_classes flag now follows a glob pattern (#36147).For example if one wants to add the class airflow.tests.custom_class to the
allowed_deserialization_classes list, it can be done by writing the full class
name (airflow.tests.custom_class) or a pattern such as the ones used in glob
search (e.g., airflow.*, airflow.tests.*).
If you currently use a custom regexp path make sure to rewrite it as a glob pattern.
Alternatively, if you still wish to match it as a regexp pattern, add it under the new
list allowed_deserialization_classes_regexp instead.
This was done under the policy that we do not want users like Viewer, Ops, and other users apart from Admin to have access to audit_logs. The intention behind this change is to restrict users with less permissions from viewing user details like First Name, Email etc. from the audit_logs when they are not permitted to.
The impact of this change is that the existing users with non admin rights won't be able to view or access the audit_logs, both from the Browse tab or from the DAG run.
AirflowTimeoutError is no longer except by default through Exception (#35653).The AirflowTimeoutError is now inheriting BaseException instead of
AirflowException->Exception.
See https://docs.python.org/3/library/exceptions.html#exception-hierarchy
This prevents code catching Exception from accidentally
catching AirflowTimeoutError and continuing to run.
AirflowTimeoutError is an explicit intent to cancel the task, and should not
be caught in attempts to handle the error and return some default value.
Catching AirflowTimeoutError is still possible by explicitly excepting
AirflowTimeoutError or BaseException.
This is discouraged, as it may allow the code to continue running even after
such cancellation requests.
Code that previously depended on performing strict cleanup in every situation
after catching Exception is advised to use finally blocks or
context managers. To perform only the cleanup and then automatically
re-raise the exception.
See similar considerations about catching KeyboardInterrupt in
https://docs.python.org/3/library/exceptions.html#KeyboardInterrupt
IMPORT_ERROR from DAG related permissions to view related permissions (#37292)AirflowTaskTimeout to inherit BaseException (#35653)namedtuple (#37168)Treeview function (#37162)access_entity is specified (#37290)dateTimeAttrFormat constant (#37285)[@Sentry](https://github.com/Sentry).enrich_errors (#37002)dryrun auto-fetch (#36941)/variables endpoint (#36820)pendulum.from_timestamp usage (#37160)CLI instead of specific one (#37651)undici from 5.26.3 to 5.28.3 in /airflow/www (#37493)3.12 exclusions in providers/pyproject.toml (#37404)markdown from core dependencies (#37396)pageSize method. (#37319)Python 3.11 and 3.12 deprecations (#37478)airflow_pre_installed_providers.txt into sdist distribution (#37388)universal-pathlib to < 0.2.0 (#37311)queue_when (#36997)config.yml for environment variable sql_alchemy_connect_args (#36526)Alembic to 1.13.1 (#36928)flask-session to <0.6 (#36895)CLI flags available (#37231)otel config descriptions (#37229)Objectstore tutorial with prereqs section (#36983)package/module names (#36927)__init__ of operators automatically (#33786)Apache Airflow - A platform to programmatically author, schedule, and monitor workflows