Skip to content

Commit 36422ed

Browse files
committed
Update version to 2.8.1
1 parent ee12a6d commit 36422ed

File tree

19 files changed

+116
-40
lines changed

19 files changed

+116
-40
lines changed

README.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,11 @@ Airflow is not a streaming solution, but it is often used to process real-time d
9797

9898
Apache Airflow is tested with:
9999

100-
| | Main version (dev) | Stable version (2.8.0) |
100+
| | Main version (dev) | Stable version (2.8.1) |
101101
|-------------|------------------------------|------------------------------|
102102
| Python | 3.8, 3.9, 3.10, 3.11 | 3.8, 3.9, 3.10, 3.11 |
103103
| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) |
104-
| Kubernetes | 1.25, 1.26, 1.27, 1.28, 1.29 | 1.25, 1.26, 1.27, 1.28 |
104+
| Kubernetes | 1.25, 1.26, 1.27, 1.28, 1.29 | 1.25, 1.26, 1.27, 1.28, 1.29 |
105105
| PostgreSQL | 12, 13, 14, 15, 16 | 12, 13, 14, 15, 16 |
106106
| MySQL | 8.0, Innovation | 8.0, Innovation |
107107
| SQLite | 3.15.0+ | 3.15.0+ |
@@ -182,15 +182,15 @@ them to the appropriate format and workflow that your tool requires.
182182

183183

184184
```bash
185-
pip install 'apache-airflow==2.8.0' \
186-
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.0/constraints-3.8.txt"
185+
pip install 'apache-airflow==2.8.1' \
186+
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt"
187187
```
188188

189189
2. Installing with extras (i.e., postgres, google)
190190

191191
```bash
192-
pip install 'apache-airflow[postgres,google]==2.8.0' \
193-
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.0/constraints-3.8.txt"
192+
pip install 'apache-airflow[postgres,google]==2.8.1' \
193+
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt"
194194
```
195195

196196
For information on installing provider packages, check
@@ -295,7 +295,7 @@ Apache Airflow version life cycle:
295295

296296
| Version | Current Patch/Minor | State | First Release | Limited Support | EOL/Terminated |
297297
|-----------|-----------------------|-----------|-----------------|-------------------|------------------|
298-
| 2 | 2.8.0 | Supported | Dec 17, 2020 | TBD | TBD |
298+
| 2 | 2.8.1 | Supported | Dec 17, 2020 | TBD | TBD |
299299
| 1.10 | 1.10.15 | EOL | Aug 27, 2018 | Dec 17, 2020 | June 17, 2021 |
300300
| 1.9 | 1.9.0 | EOL | Jan 03, 2018 | Aug 27, 2018 | Aug 27, 2018 |
301301
| 1.8 | 1.8.2 | EOL | Mar 19, 2017 | Jan 03, 2018 | Jan 03, 2018 |

RELEASE_NOTES.rst

+76
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,82 @@
2121

2222
.. towncrier release notes start
2323

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+
24100
Airflow 2.8.0 (2023-12-18)
25101
--------------------------
26102

airflow/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"""
2727
from __future__ import annotations
2828

29-
__version__ = "2.8.1.dev0"
29+
__version__ = "2.8.1"
3030

3131
# flake8: noqa: F401
3232

airflow/api_connexion/openapi/v1.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ info:
231231
This means that the server encountered an unexpected condition that prevented it from
232232
fulfilling the request.
233233
234-
version: '2.8.0'
234+
version: '2.8.1'
235235
license:
236236
name: Apache 2.0
237237
url: http://www.apache.org/licenses/LICENSE-2.0.html

airflow/reproducible_build.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
release-notes-hash: 81a945804fc42c18f416b5aa1f4b0fde
2-
source-date-epoch: 1704922121
1+
release-notes-hash: b0d8fdf0caf6f957b63ee7f4ee2147b9
2+
source-date-epoch: 1705311983

docs/apache-airflow/installation/supported-versions.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Apache Airflow™ version life cycle:
2929
========= ===================== ========= =============== ================= ================
3030
Version Current Patch/Minor State First Release Limited Support EOL/Terminated
3131
========= ===================== ========= =============== ================= ================
32-
2 2.8.0 Supported Dec 17, 2020 TBD TBD
32+
2 2.8.1 Supported Dec 17, 2020 TBD TBD
3333
1.10 1.10.15 EOL Aug 27, 2018 Dec 17, 2020 June 17, 2021
3434
1.9 1.9.0 EOL Jan 03, 2018 Aug 27, 2018 Aug 27, 2018
3535
1.8 1.8.2 EOL Mar 19, 2017 Jan 03, 2018 Jan 03, 2018

docs/docker-stack/README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ Every time a new version of Airflow is released, the images are prepared in the
3131
[apache/airflow DockerHub](https://hub.docker.com/r/apache/airflow)
3232
for all the supported Python versions.
3333

34-
You can find the following images there (Assuming Airflow version `2.8.1.dev0`):
34+
You can find the following images there (Assuming Airflow version `2.8.1`):
3535

3636
* `apache/airflow:latest` - the latest released Airflow image with default Python version (3.8 currently)
3737
* `apache/airflow:latest-pythonX.Y` - the latest released Airflow image with specific Python version
38-
* `apache/airflow:2.8.1.dev0` - the versioned Airflow image with default Python version (3.8 currently)
39-
* `apache/airflow:2.8.1.dev0-pythonX.Y` - the versioned Airflow image with specific Python version
38+
* `apache/airflow:2.8.1` - the versioned Airflow image with default Python version (3.8 currently)
39+
* `apache/airflow:2.8.1-pythonX.Y` - the versioned Airflow image with specific Python version
4040

4141
Those are "reference" regular images. They contain the most common set of extras, dependencies and providers that are
4242
often used by the users and they are good to "try-things-out" when you want to just take Airflow for a spin,
@@ -47,8 +47,8 @@ via [Building the image](https://airflow.apache.org/docs/docker-stack/build.html
4747

4848
* `apache/airflow:slim-latest` - the latest released Airflow image with default Python version (3.8 currently)
4949
* `apache/airflow:slim-latest-pythonX.Y` - the latest released Airflow image with specific Python version
50-
* `apache/airflow:slim-2.8.1.dev0` - the versioned Airflow image with default Python version (3.8 currently)
51-
* `apache/airflow:slim-2.8.1.dev0-pythonX.Y` - the versioned Airflow image with specific Python version
50+
* `apache/airflow:slim-2.8.1` - the versioned Airflow image with default Python version (3.8 currently)
51+
* `apache/airflow:slim-2.8.1-pythonX.Y` - the versioned Airflow image with specific Python version
5252

5353
The Apache Airflow image provided as convenience package is optimized for size, and
5454
it provides just a bare minimal set of the extras and dependencies installed and in most cases

docs/docker-stack/docker-examples/extending/add-airflow-configuration/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919
ENV AIRFLOW__CORE__LOAD_EXAMPLES=True
2020
ENV AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=my_conn_string
2121
# [END Dockerfile]

docs/docker-stack/docker-examples/extending/add-apt-packages/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919
USER root
2020
RUN apt-get update \
2121
&& apt-get install -y --no-install-recommends \

docs/docker-stack/docker-examples/extending/add-build-essential-extend/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919
USER root
2020
RUN apt-get update \
2121
&& apt-get install -y --no-install-recommends \

docs/docker-stack/docker-examples/extending/add-providers/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919
USER root
2020
RUN apt-get update \
2121
&& apt-get install -y --no-install-recommends \

docs/docker-stack/docker-examples/extending/add-pypi-packages/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919
RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" lxml
2020
# [END Dockerfile]

docs/docker-stack/docker-examples/extending/add-requirement-packages/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919
COPY requirements.txt /
2020
RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" -r /requirements.txt
2121
# [END Dockerfile]

docs/docker-stack/docker-examples/extending/custom-providers/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919
RUN pip install "apache-airflow==${AIRFLOW_VERSION}" --no-cache-dir apache-airflow-providers-docker==2.5.1
2020
# [END Dockerfile]

docs/docker-stack/docker-examples/extending/embedding-dags/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919

2020
COPY --chown=airflow:root test_dag.py /opt/airflow/dags
2121

docs/docker-stack/docker-examples/extending/writable-directory/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# This is an example Dockerfile. It is not intended for PRODUCTION use
1717
# [START Dockerfile]
18-
FROM apache/airflow:2.8.1.dev0
18+
FROM apache/airflow:2.8.1
1919
RUN umask 0002; \
2020
mkdir -p ~/writeable-directory
2121
# [END Dockerfile]

docs/docker-stack/entrypoint.rst

+7-7
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ if you specify extra arguments. For example:
132132

133133
.. code-block:: bash
134134
135-
docker run -it apache/airflow:2.8.1.dev0-python3.8 bash -c "ls -la"
135+
docker run -it apache/airflow:2.8.1-python3.8 bash -c "ls -la"
136136
total 16
137137
drwxr-xr-x 4 airflow root 4096 Jun 5 18:12 .
138138
drwxr-xr-x 1 root root 4096 Jun 5 18:12 ..
@@ -144,21 +144,21 @@ you pass extra parameters. For example:
144144

145145
.. code-block:: bash
146146
147-
> docker run -it apache/airflow:2.8.1.dev0-python3.8 python -c "print('test')"
147+
> docker run -it apache/airflow:2.8.1-python3.8 python -c "print('test')"
148148
test
149149
150150
If first argument equals to "airflow" - the rest of the arguments is treated as an airflow command
151151
to execute. Example:
152152

153153
.. code-block:: bash
154154
155-
docker run -it apache/airflow:2.8.1.dev0-python3.8 airflow webserver
155+
docker run -it apache/airflow:2.8.1-python3.8 airflow webserver
156156
157157
If there are any other arguments - they are simply passed to the "airflow" command
158158

159159
.. code-block:: bash
160160
161-
> docker run -it apache/airflow:2.8.1.dev0-python3.8 help
161+
> docker run -it apache/airflow:2.8.1-python3.8 help
162162
usage: airflow [-h] GROUP_OR_COMMAND ...
163163
164164
positional arguments:
@@ -363,7 +363,7 @@ database and creating an ``admin/admin`` Admin user with the following command:
363363
--env "_AIRFLOW_DB_MIGRATE=true" \
364364
--env "_AIRFLOW_WWW_USER_CREATE=true" \
365365
--env "_AIRFLOW_WWW_USER_PASSWORD=admin" \
366-
apache/airflow:2.8.1.dev0-python3.8 webserver
366+
apache/airflow:2.8.1-python3.8 webserver
367367
368368
369369
.. code-block:: bash
@@ -372,7 +372,7 @@ database and creating an ``admin/admin`` Admin user with the following command:
372372
--env "_AIRFLOW_DB_MIGRATE=true" \
373373
--env "_AIRFLOW_WWW_USER_CREATE=true" \
374374
--env "_AIRFLOW_WWW_USER_PASSWORD_CMD=echo admin" \
375-
apache/airflow:2.8.1.dev0-python3.8 webserver
375+
apache/airflow:2.8.1-python3.8 webserver
376376
377377
The commands above perform initialization of the SQLite database, create admin user with admin password
378378
and Admin role. They also forward local port ``8080`` to the webserver port and finally start the webserver.
@@ -412,6 +412,6 @@ Example:
412412
--env "_AIRFLOW_DB_MIGRATE=true" \
413413
--env "_AIRFLOW_WWW_USER_CREATE=true" \
414414
--env "_AIRFLOW_WWW_USER_PASSWORD_CMD=echo admin" \
415-
apache/airflow:2.8.1.dev0-python3.8 webserver
415+
apache/airflow:2.8.1-python3.8 webserver
416416
417417
This method is only available starting from Docker image of Airflow 2.1.1 and above.

generated/PYPI_README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The
5454

5555
Apache Airflow is tested with:
5656

57-
| | Main version (dev) | Stable version (2.8.0) |
57+
| | Main version (dev) | Stable version (2.8.1) |
5858
|-------------|------------------------------|------------------------------|
5959
| Python | 3.8, 3.9, 3.10, 3.11 | 3.8, 3.9, 3.10, 3.11 |
6060
| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) |
61-
| Kubernetes | 1.25, 1.26, 1.27, 1.28, 1.29 | 1.25, 1.26, 1.27, 1.28 |
61+
| Kubernetes | 1.25, 1.26, 1.27, 1.28, 1.29 | 1.25, 1.26, 1.27, 1.28, 1.29 |
6262
| PostgreSQL | 12, 13, 14, 15, 16 | 12, 13, 14, 15, 16 |
6363
| MySQL | 8.0, Innovation | 8.0, Innovation |
6464
| SQLite | 3.15.0+ | 3.15.0+ |
@@ -135,15 +135,15 @@ them to the appropriate format and workflow that your tool requires.
135135

136136

137137
```bash
138-
pip install 'apache-airflow==2.8.0' \
139-
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.0/constraints-3.8.txt"
138+
pip install 'apache-airflow==2.8.1' \
139+
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt"
140140
```
141141

142142
2. Installing with extras (i.e., postgres, google)
143143

144144
```bash
145-
pip install 'apache-airflow[postgres,google]==2.8.0' \
146-
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.0/constraints-3.8.txt"
145+
pip install 'apache-airflow[postgres,google]==2.8.1' \
146+
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt"
147147
```
148148

149149
For information on installing provider packages, check

scripts/ci/pre_commit/pre_commit_supported_versions.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
HEADERS = ("Version", "Current Patch/Minor", "State", "First Release", "Limited Support", "EOL/Terminated")
2828

2929
SUPPORTED_VERSIONS = (
30-
("2", "2.8.0", "Supported", "Dec 17, 2020", "TBD", "TBD"),
30+
("2", "2.8.1", "Supported", "Dec 17, 2020", "TBD", "TBD"),
3131
("1.10", "1.10.15", "EOL", "Aug 27, 2018", "Dec 17, 2020", "June 17, 2021"),
3232
("1.9", "1.9.0", "EOL", "Jan 03, 2018", "Aug 27, 2018", "Aug 27, 2018"),
3333
("1.8", "1.8.2", "EOL", "Mar 19, 2017", "Jan 03, 2018", "Jan 03, 2018"),

0 commit comments

Comments
 (0)