@@ -27,92 +27,170 @@ Airflow 2.8.1 (2024-01-19)
2727Significant Changes
2828^^^^^^^^^^^^^^^^^^^
2929
30- - Target version for core dependency ``pendulum`` package set to 3
31-
32- Support for pendulum 2.1.2 will be saved for a while, presumably until the next feature version of Airflow.
33- It is advised to upgrade user code to use pendulum 3 as soon as possible. (#36281)
34- - Airflow packaging specification follows modern Python packaging standards.
35-
36- We standardized Airflow dependency configuration to follow latest development in Python packaging by
37- using pyproject.toml. Airflow is now compliant with those accepted PEPs:
38-
39- * `PEP-440 Version Identification and Dependency Specification <https://www.python.org/dev/peps/pep-0440/>`__
40- * `PEP-517 A build-system independent format for source trees <https://www.python.org/dev/peps/pep-0517/>`__
41- * `PEP-518 Specifying Minimum Build System Requirements for Python Projects <https://www.python.org/dev/peps/pep-0518/>`__
42- * `PEP-561 Distributing and Packaging Type Information <https://www.python.org/dev/peps/pep-0561/>`__
43- * `PEP-621 Storing project metadata in pyproject.toml <https://www.python.org/dev/peps/pep-0621/>`__
44- * `PEP-660 Editable installs for pyproject.toml based builds (wheel based) <https://www.python.org/dev/peps/pep-0660/>`__
45- * `PEP-685 Comparison of extra names for optional distribution dependencies <https://www.python.org/dev/peps/pep-0685/>`__
46-
47- Also we implement multiple license files support coming from Draft, not yet accepted (but supported by hatchling) PEP:
48- * `PEP 639 Improving License Clarity with Better Package Metadata <https://peps.python.org/pep-0639/>`__
49-
50- This has almost no noticeable impact on users if they are using modern Python packaging and development tools, generally
51- speaking Airflow should behave as it did before when installing it from PyPI and it should be much easier to install
52- it for development purposes using ``pip install -e ".[devel]"``.
53-
54- The differences from the user side are:
55-
56- * Airflow extras now get extras normalized to ``-`` (following PEP-685) instead of ``_`` and ``.``
57- (as it was before in some extras). When you install airflow with such extras (for example ``dbt.core`` or
58- ``all_dbs``) you should use ``-`` instead of ``_`` and ``.``.
59-
60- In most modern tools this will work in backwards-compatible way, but in some old version of those tools you might need to
61- replace ``_`` and ``.`` with ``-``. You can also get warnings that the extra you are installing does not exist - but usually
62- this warning is harmless and the extra is installed anyway. It is, however, recommended to change to use ``-`` in extras in your dependency
63- specifications for all Airflow extras.
30+ Target version for core dependency ``pendulum`` package set to 3 (#36281).
31+ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
32+ Support for pendulum 2.1.2 will be saved for a while, presumably until the next feature version of Airflow.
33+ It is advised to upgrade user code to use pendulum 3 as soon as possible.
6434
65- * Released airflow package does not contain ``devel``, ``devel-*``, ``doc`` and ``doc-gen`` extras.
66- Those extras are only available when you install Airflow from sources in ``--editable`` mode. This is
67- because those extras are only used for development and documentation building purposes and are not needed
68- when you install Airflow for production use. Those dependencies had unspecified and varying behaviour for
69- released packages anyway and you were not supposed to use them in released packages.
35+ Airflow packaging specification follows modern Python packaging standards (#36537).
36+ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
37+ We standardized Airflow dependency configuration to follow latest development in Python packaging by
38+ using ``pyproject.toml``. Airflow is now compliant with those accepted PEPs:
39+
40+ * `PEP-440 Version Identification and Dependency Specification <https://www.python.org/dev/peps/pep-0440/>`__
41+ * `PEP-517 A build-system independent format for source trees <https://www.python.org/dev/peps/pep-0517/>`__
42+ * `PEP-518 Specifying Minimum Build System Requirements for Python Projects <https://www.python.org/dev/peps/pep-0518/>`__
43+ * `PEP-561 Distributing and Packaging Type Information <https://www.python.org/dev/peps/pep-0561/>`__
44+ * `PEP-621 Storing project metadata in pyproject.toml <https://www.python.org/dev/peps/pep-0621/>`__
45+ * `PEP-660 Editable installs for pyproject.toml based builds (wheel based) <https://www.python.org/dev/peps/pep-0660/>`__
46+ * `PEP-685 Comparison of extra names for optional distribution dependencies <https://www.python.org/dev/peps/pep-0685/>`__
47+
48+ Also we implement multiple license files support coming from Draft, not yet accepted (but supported by hatchling) PEP:
49+ * `PEP 639 Improving License Clarity with Better Package Metadata <https://peps.python.org/pep-0639/>`__
50+
51+ This has almost no noticeable impact on users if they are using modern Python packaging and development tools, generally
52+ speaking Airflow should behave as it did before when installing it from PyPI and it should be much easier to install
53+ it for development purposes using ``pip install -e ".[devel]"``.
54+
55+ The differences from the user side are:
56+
57+ * Airflow extras now get extras normalized to ``-`` (following PEP-685) instead of ``_`` and ``.``
58+ (as it was before in some extras). When you install airflow with such extras (for example ``dbt.core`` or
59+ ``all_dbs``) you should use ``-`` instead of ``_`` and ``.``.
60+
61+ In most modern tools this will work in backwards-compatible way, but in some old version of those tools you might need to
62+ replace ``_`` and ``.`` with ``-``. You can also get warnings that the extra you are installing does not exist - but usually
63+ this warning is harmless and the extra is installed anyway. It is, however, recommended to change to use ``-`` in extras in your dependency
64+ specifications for all Airflow extras.
65+
66+ * Released airflow package does not contain ``devel``, ``devel-*``, ``doc`` and ``doc-gen`` extras.
67+ Those extras are only available when you install Airflow from sources in ``--editable`` mode. This is
68+ because those extras are only used for development and documentation building purposes and are not needed
69+ when you install Airflow for production use. Those dependencies had unspecified and varying behaviour for
70+ released packages anyway and you were not supposed to use them in released packages.
71+
72+ * The ``all`` and ``all-*`` extras were not always working correctly when installing Airflow using constraints
73+ because they were also considered as development-only dependencies. With this change, those dependencies are
74+ now properly handling constraints and they will install properly with constraints, pulling the right set
75+ of providers and dependencies when constraints are used.
76+
77+ Graphviz dependency is now an optional one, not required one (#36647).
78+ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
79+ The ``graphviz`` dependency has been problematic as Airflow required dependency - especially for
80+ ARM-based installations. Graphviz packages require binary graphviz libraries - which is already a
81+ limitation, but they also require to install graphviz Python bindings to be build and installed.
82+ This does not work for older Linux installation but - more importantly - when you try to install
83+ Graphviz libraries for Python 3.8, 3.9 for ARM M1 MacBooks, the packages fail to install because
84+ Python bindings compilation for M1 can only work for Python 3.10+.
7085
71- * The ``all`` and ``all-*`` extras were not always working correctly when installing Airflow using constraints
72- because they were also considered as development-only dependencies. With this change, those dependencies are
73- now properly handling constraints and they will install properly with constraints, pulling the right set
74- of providers and dependencies when constraints are used. (#36537)
75- - Graphviz dependency is now an optional one, not required one.
86+ This is not a breaking change technically - the CLIs to render the DAGs is still there and IF you
87+ already have graphviz installed, it will continue working as it did before. The only problem when it
88+ does not work is where you do not have graphviz installed it will raise an error and inform that you need it.
7689
77- The ``graphviz`` dependency has been problematic as Airflow required dependency - especially for
78- ARM-based installations. Graphviz packages require binary graphviz libraries - which is already a
79- limitation, but they also require to install graphviz Python bindings to be build and installed.
80- This does not work for older Linux installation but - more importantly - when you try to install
81- Graphviz libraries for Python 3.8, 3.9 for ARM M1 MacBooks, the packages fail to install because
82- Python bindings compilation for M1 can only work for Python 3.10+.
90+ Graphviz will remain to be installed for most users:
8391
84- This is not a breaking change technically - the CLIs to render the DAGs is still there and IF you
85- already have graphviz installed, it will continue working as it did before. The only problem when it
86- does not work is where you do not have graphviz installed it will raise an error and inform that you need it.
92+ * the Airflow Image will still contain graphviz library, because
93+ it is added there as extra
94+ * when previous version of Airflow has been installed already, then
95+ graphviz library is already installed there and Airflow will
96+ continue working as it did
8797
88- Graphviz will remain to be installed for most users:
98+ The only change will be a new installation of new version of Airflow from the scratch, where graphviz will
99+ need to be specified as extra or installed separately in order to enable DAG rendering option.
89100
90- * the Airflow Image will still contain graphviz library, because
91- it is added there as extra
92- * when previous version of Airflow has been installed already, then
93- graphviz library is already installed there and Airflow will
94- continue working as it did
101+ Bug Fixes
102+ """""""""
103+ - Fix airflow-scheduler exiting with code 0 on exceptions (#36800)
104+ - Fix Callback exception when a removed task is the last one in the ``taskinstance`` list (#36693)
105+ - Allow anonymous user edit/show resource when set ``AUTH_ROLE_PUBLIC=admin`` (#36750)
106+ - Better error message when sqlite URL uses relative path (#36774)
107+ - Explicit string cast required to force integer-type run_ids to be passed as strings instead of integers (#36756)
108+ - Add log lookup exception for empty ``op`` subtypes (#35536)
109+ - Remove unused index on task instance (#36737)
110+ - Fix check on subclass for ``typing.Union`` in ``_infer_multiple_outputs`` for Python 3.10+ (#36728)
111+ - Make sure ``multiple_outputs`` is inferred correctly even when using ``TypedDict`` (#36652)
112+ - Add back FAB constant in legacy security manager (#36719)
113+ - Fix AttributeError when using ``Dagrun.update_state`` (#36712)
114+ - Do not let ``EventsTimetable`` schedule past events if ``catchup=False`` (#36134)
115+ - Support encryption for triggers parameters (#36492)
116+ - Fix the type hint for ``tis_query`` in ``_process_executor_events`` (#36655)
117+ - Redirect to index when user does not have permission to access a page (#36623)
118+ - Avoid using dict as default value in ``call_regular_interval`` (#36608)
119+ - Remove option to set a task instance to running state in UI (#36518)
120+ - Fix details tab not showing when using dynamic task mapping (#36522)
121+ - Raise error when ``DagRun`` fails while running ``dag test`` (#36517)
122+ - Refactor ``_manage_executor_state`` by refreshing TIs in batch (#36502)
123+ - Add flask config: ``MAX_CONTENT_LENGTH`` (#36401)
124+ - Fix get_leaves calculation for teardown in nested group (#36456)
125+ - Stop serializing timezone-naive datetime to timezone-aware datetime with UTC tz (#36379)
126+ - Make ``kubernetes`` decorator type annotation consistent with operator (#36405)
127+ - Fix Webserver returning 500 for POST requests to ``api/dag/*/dagrun`` from anonymous user (#36275)
128+ - Fix the required access for get_variable endpoint (#36396)
129+ - Fix datetime reference in ``DAG.is_fixed_time_schedule`` (#36370)
130+ - Fix AirflowSkipException message raised by BashOperator (#36354)
131+ - Allow PythonVirtualenvOperator.skip_on_exit_code to be zero (#36361)
132+ - Increase width of execution_date input in trigger.html (#36278)
133+ - Fix logging for pausing DAG (#36182)
134+ - Stop deserializing pickle when enable_xcom_pickling is False (#36255)
135+ - Check DAG read permission before accessing DAG code (#36257)
136+ - Enable mark task as failed/success always (#36254)
137+ - Create latest log dir symlink as relative link (#36019)
138+ - Fix Python-based decorators templating (#36103)
95139
96- The only change will be a new installation of new version of Airflow from the scratch, where graphviz will
97- need to be specified as extra or installed separately in order to enable DAG rendering option. (#36647)
140+ Miscellaneous
141+ """""""""""""
142+ - Rename concurrency label to max active tasks (#36691)
143+ - Restore function scoped ``httpx`` import in file_task_handler for performance (#36753)
144+ - Add support of Pendulum 3 (#36281)
145+ - Standardize airflow build process and switch to Hatchling build backend (#36537)
146+ - Get rid of ``pyarrow-hotfix`` for ``CVE-2023-47248`` (#36697)
147+ - Make ``graphviz`` dependency optional (#36647)
148+ - Announce MSSQL support end in Airflow 2.9.0, add migration script hints (#36509)
149+ - Set min ``pandas`` dependency to 1.2.5 for all providers and airflow (#36698)
150+ - Bump follow-redirects from 1.15.3 to 1.15.4 in ``/airflow/www`` (#36700)
151+ - Provide the logger_name param to base hook in order to override the logger name (#36674)
152+ - Fix run type icon alignment with run type text (#36616)
153+ - Follow BaseHook connection fields method signature in FSHook (#36444)
154+ - Remove redundant ``docker`` decorator type annotations (#36406)
155+ - Straighten typing in workday timetable (#36296)
156+ - Use ``batch_is_authorized_dag`` to check if user has permission to read DAGs (#36279)
157+ - Replace deprecated get_accessible_dag_ids and use get_readable_dags in get_dag_warnings (#36256)
98158
159+ Doc Only Changes
160+ """"""""""""""""
161+ - Metrics tagging documentation (#36627)
162+ - In docs use logical_date instead of deprecated execution_date (#36654)
163+ - Add section about live-upgrading Airflow (#36637)
164+ - Replace ``numpy`` example with practical exercise demonstrating top-level code (#35097)
165+ - Improve and add more complete description in the architecture diagrams (#36513)
166+ - Improve the error message displayed when there is a webserver error (#36570)
167+ - Update ``dags.rst`` with information on DAG pausing (#36540)
168+ - Update installation prerequisites after upgrading to Debian Bookworm (#36521)
169+ - Add description on the ways how users should approach DB monitoring (#36483)
170+ - Add branching based on mapped task group example to dynamic-task-mapping.rst (#36480)
171+ - Add further details to replacement documentation (#36485)
172+ - Use cards when describing priority weighting methods (#36411)
173+ - Update ``metrics.rst`` for param ``dagrun.schedule_delay`` (#36404)
174+ - Update admonitions in Python operator doc to reflect sentiment (#36340)
175+ - Improve audit_logs.rst (#36213)
176+ - Remove Redshift mention from the list of managed Postgres backends (#36217)
99177
100178Airflow 2.8.0 (2023-12-18)
101179--------------------------
102180
103181Significant Changes
104182^^^^^^^^^^^^^^^^^^^
105183
106- - Raw HTML code in DAG docs and DAG params descriptions is disabled by default
107-
108- To ensure that no malicious javascript can be injected with DAG descriptions or trigger UI forms by DAG authors
109- a new parameter ``webserver.allow_raw_html_descriptions`` was added with default value of ``False``.
110- If you trust your DAG authors code and want to allow using raw HTML in DAG descriptions and params, you can restore the previous
111- behavior by setting the configuration value to ``True``.
112-
113- To ensure Airflow is secure by default, the raw HTML support in trigger UI has been super-seeded by markdown support via
114- the ``description_md`` attribute. If you have been using ``description_html`` please migrate to ``description_md``.
115- The ``custom_html_form`` is now deprecated. (#35460)
184+ Raw HTML code in DAG docs and DAG params descriptions is disabled by default (#35460)
185+ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
186+ To ensure that no malicious javascript can be injected with DAG descriptions or trigger UI forms by DAG authors
187+ a new parameter ``webserver.allow_raw_html_descriptions`` was added with default value of ``False``.
188+ If you trust your DAG authors code and want to allow using raw HTML in DAG descriptions and params, you can restore the previous
189+ behavior by setting the configuration value to ``True``.
190+
191+ To ensure Airflow is secure by default, the raw HTML support in trigger UI has been super-seeded by markdown support via
192+ the ``description_md`` attribute. If you have been using ``description_html`` please migrate to ``description_md``.
193+ The ``custom_html_form`` is now deprecated.
116194
117195New Features
118196""""""""""""
0 commit comments