|
21 | 21 |
|
22 | 22 | .. towncrier release notes start
|
23 | 23 |
|
| 24 | +Airflow 2.8.1 (2024-01-19) |
| 25 | +-------------------------- |
| 26 | + |
| 27 | +Significant Changes |
| 28 | +^^^^^^^^^^^^^^^^^^^ |
| 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. |
| 64 | + |
| 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. |
| 70 | + |
| 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. |
| 76 | + |
| 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+. |
| 83 | + |
| 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. |
| 87 | + |
| 88 | + Graphviz will remain to be installed for most users: |
| 89 | + |
| 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 |
| 95 | + |
| 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) |
| 98 | + |
| 99 | + |
24 | 100 | Airflow 2.8.0 (2023-12-18)
|
25 | 101 | --------------------------
|
26 | 102 |
|
|
0 commit comments