@@ -27,92 +27,170 @@ Airflow 2.8.1 (2024-01-19)
27
27
Significant Changes
28
28
^^^^^^^^^^^^^^^^^^^
29
29
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.
64
34
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+.
70
85
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.
76
89
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:
83
91
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
87
97
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.
89
100
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)
95
139
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)
98
158
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)
99
177
100
178
Airflow 2.8.0 (2023-12-18)
101
179
--------------------------
102
180
103
181
Significant Changes
104
182
^^^^^^^^^^^^^^^^^^^
105
183
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.
116
194
117
195
New Features
118
196
""""""""""""
0 commit comments