diff --git a/airflow-core/pyproject.toml b/airflow-core/pyproject.toml index a50c6b75db5e1..1752d395b27d0 100644 --- a/airflow-core/pyproject.toml +++ b/airflow-core/pyproject.toml @@ -63,7 +63,7 @@ classifiers = [ ] # Version is defined in src/airflow/__init__.py and it is automatically synchronized by prek hook -version = "3.1.0" +version = "3.2.0" dependencies = [ "a2wsgi>=1.10.8", @@ -138,7 +138,7 @@ dependencies = [ # Does not work with it Tracked in https://github.com/fsspec/universal_pathlib/issues/276 "universal-pathlib>=0.2.2,!=0.2.4", "uuid6>=2024.7.10", - "apache-airflow-task-sdk<1.2.0,>=1.1.0", + "apache-airflow-task-sdk<1.3.0,>=1.1.0", # pre-installed providers "apache-airflow-providers-common-compat>=1.6.0", "apache-airflow-providers-common-io>=1.5.3", diff --git a/airflow-core/src/airflow/__init__.py b/airflow-core/src/airflow/__init__.py index 5c2d08b41c924..73e87655ec356 100644 --- a/airflow-core/src/airflow/__init__.py +++ b/airflow-core/src/airflow/__init__.py @@ -25,7 +25,7 @@ # lib.) This is required by some IDEs to resolve the import paths. __path__ = __import__("pkgutil").extend_path(__path__, __name__) -__version__ = "3.1.0" +__version__ = "3.2.0" import os diff --git a/docker-stack-docs/README.md b/docker-stack-docs/README.md index 137072ac309d0..a275d3d565a83 100644 --- a/docker-stack-docs/README.md +++ b/docker-stack-docs/README.md @@ -31,12 +31,12 @@ Every time a new version of Airflow is released, the images are prepared in the [apache/airflow DockerHub](https://hub.docker.com/r/apache/airflow) for all the supported Python versions. -You can find the following images there (Assuming Airflow version `3.1.0`): +You can find the following images there (Assuming Airflow version `3.2.0`): * `apache/airflow:latest` - the latest released Airflow image with default Python version (3.12 currently) * `apache/airflow:latest-pythonX.Y` - the latest released Airflow image with specific Python version -* `apache/airflow:3.1.0` - the versioned Airflow image with default Python version (3.12 currently) -* `apache/airflow:3.1.0-pythonX.Y` - the versioned Airflow image with specific Python version +* `apache/airflow:3.2.0` - the versioned Airflow image with default Python version (3.12 currently) +* `apache/airflow:3.2.0-pythonX.Y` - the versioned Airflow image with specific Python version Those are "reference" regular images. They contain the most common set of extras, dependencies and providers that are 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 * `apache/airflow:slim-latest` - the latest released Airflow image with default Python version (3.12 currently) * `apache/airflow:slim-latest-pythonX.Y` - the latest released Airflow image with specific Python version -* `apache/airflow:slim-3.1.0` - the versioned Airflow image with default Python version (3.12 currently) -* `apache/airflow:slim-3.1.0-pythonX.Y` - the versioned Airflow image with specific Python version +* `apache/airflow:slim-3.2.0` - the versioned Airflow image with default Python version (3.12 currently) +* `apache/airflow:slim-3.2.0-pythonX.Y` - the versioned Airflow image with specific Python version The Apache Airflow image provided as convenience package is optimized for size, and it provides just a bare minimal set of the extras and dependencies installed and in most cases diff --git a/docker-stack-docs/changelog.rst b/docker-stack-docs/changelog.rst index c70b16c3a3ccb..ce7781c448b66 100644 --- a/docker-stack-docs/changelog.rst +++ b/docker-stack-docs/changelog.rst @@ -34,10 +34,10 @@ the Airflow team. any Airflow version from the ``Airflow 2`` line. There is no guarantee that it will work, but if it does, then you can use latest features from that image to build images for previous Airflow versions. -Airflow 3.1.0 +Airflow 3.2.0 ~~~~~~~~~~~~~ -In Airflow 3.1.0 we changed the base images used for building the Airflow images. Previously the images +In Airflow 3.2.0 we changed the base images used for building the Airflow images. Previously the images were based on "official" Python images from DockerHub, however those images sometimes lag behind the latest security patches and their maintainers made decisions about using older setuptools and pip versions, however we want to be able to use the latest versions of those tools to build the images. Therefore diff --git a/docker-stack-docs/docker-examples/extending/add-airflow-configuration/Dockerfile b/docker-stack-docs/docker-examples/extending/add-airflow-configuration/Dockerfile index 3bb2585a64b3f..46d4ca58c06cc 100644 --- a/docker-stack-docs/docker-examples/extending/add-airflow-configuration/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-airflow-configuration/Dockerfile @@ -15,7 +15,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 ENV AIRFLOW__CORE__LOAD_EXAMPLES=True ENV AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=my_conn_string # [END Dockerfile] diff --git a/docker-stack-docs/docker-examples/extending/add-apt-packages/Dockerfile b/docker-stack-docs/docker-examples/extending/add-apt-packages/Dockerfile index 4b669eefa0476..a9c7ec3f75ace 100644 --- a/docker-stack-docs/docker-examples/extending/add-apt-packages/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-apt-packages/Dockerfile @@ -15,7 +15,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 USER root RUN apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/docker-stack-docs/docker-examples/extending/add-build-essential-extend/Dockerfile b/docker-stack-docs/docker-examples/extending/add-build-essential-extend/Dockerfile index c6bb483024211..4b4bab839b5da 100644 --- a/docker-stack-docs/docker-examples/extending/add-build-essential-extend/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-build-essential-extend/Dockerfile @@ -15,7 +15,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 USER root RUN apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/docker-stack-docs/docker-examples/extending/add-providers/Dockerfile b/docker-stack-docs/docker-examples/extending/add-providers/Dockerfile index 0c119156a8996..30a04363797bc 100644 --- a/docker-stack-docs/docker-examples/extending/add-providers/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-providers/Dockerfile @@ -15,7 +15,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 USER root RUN apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/docker-stack-docs/docker-examples/extending/add-pypi-packages-constraints/Dockerfile b/docker-stack-docs/docker-examples/extending/add-pypi-packages-constraints/Dockerfile index 4c0f44f7dbb73..d86039525151e 100644 --- a/docker-stack-docs/docker-examples/extending/add-pypi-packages-constraints/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-pypi-packages-constraints/Dockerfile @@ -15,6 +15,6 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" lxml --constraint "${HOME}/constraints.txt" # [END Dockerfile] diff --git a/docker-stack-docs/docker-examples/extending/add-pypi-packages-uv/Dockerfile b/docker-stack-docs/docker-examples/extending/add-pypi-packages-uv/Dockerfile index 253b952d83229..1e79d010328d3 100644 --- a/docker-stack-docs/docker-examples/extending/add-pypi-packages-uv/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-pypi-packages-uv/Dockerfile @@ -15,7 +15,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 # The `uv` tools is Rust packaging tool that is much faster than `pip` and other installer # Support for uv as installation tool is experimental diff --git a/docker-stack-docs/docker-examples/extending/add-pypi-packages/Dockerfile b/docker-stack-docs/docker-examples/extending/add-pypi-packages/Dockerfile index d4f913637ebae..73e05acc37125 100644 --- a/docker-stack-docs/docker-examples/extending/add-pypi-packages/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-pypi-packages/Dockerfile @@ -15,6 +15,6 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" lxml # [END Dockerfile] diff --git a/docker-stack-docs/docker-examples/extending/add-requirement-packages/Dockerfile b/docker-stack-docs/docker-examples/extending/add-requirement-packages/Dockerfile index f26ec60854d05..8e9f0c6309b53 100644 --- a/docker-stack-docs/docker-examples/extending/add-requirement-packages/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-requirement-packages/Dockerfile @@ -15,7 +15,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 COPY requirements.txt / RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" -r /requirements.txt # [END Dockerfile] diff --git a/docker-stack-docs/docker-examples/extending/custom-providers/Dockerfile b/docker-stack-docs/docker-examples/extending/custom-providers/Dockerfile index f5cf359493829..1cdde5eefa3bf 100644 --- a/docker-stack-docs/docker-examples/extending/custom-providers/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/custom-providers/Dockerfile @@ -15,6 +15,6 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 RUN pip install "apache-airflow==${AIRFLOW_VERSION}" --no-cache-dir apache-airflow-providers-docker==2.5.1 # [END Dockerfile] diff --git a/docker-stack-docs/docker-examples/extending/embedding-dags/Dockerfile b/docker-stack-docs/docker-examples/extending/embedding-dags/Dockerfile index bbeb5795ecb70..ce10fc94b0119 100644 --- a/docker-stack-docs/docker-examples/extending/embedding-dags/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/embedding-dags/Dockerfile @@ -15,7 +15,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 COPY --chown=airflow:root test_dag.py /opt/airflow/dags diff --git a/docker-stack-docs/docker-examples/extending/writable-directory/Dockerfile b/docker-stack-docs/docker-examples/extending/writable-directory/Dockerfile index f362d4dfbcfb0..8c3a20c4a16c0 100644 --- a/docker-stack-docs/docker-examples/extending/writable-directory/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/writable-directory/Dockerfile @@ -15,7 +15,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.1.0 +FROM apache/airflow:3.2.0 RUN umask 0002; \ mkdir -p ~/writeable-directory # [END Dockerfile] diff --git a/docker-stack-docs/entrypoint.rst b/docker-stack-docs/entrypoint.rst index bcfde3e705382..3d1d77e122a28 100644 --- a/docker-stack-docs/entrypoint.rst +++ b/docker-stack-docs/entrypoint.rst @@ -132,7 +132,7 @@ if you specify extra arguments. For example: .. code-block:: bash - docker run -it apache/airflow:3.1.0-python3.10 bash -c "ls -la" + docker run -it apache/airflow:3.2.0-python3.10 bash -c "ls -la" total 16 drwxr-xr-x 4 airflow root 4096 Jun 5 18:12 . drwxr-xr-x 1 root root 4096 Jun 5 18:12 .. @@ -144,7 +144,7 @@ you pass extra parameters. For example: .. code-block:: bash - > docker run -it apache/airflow:3.1.0-python3.10 python -c "print('test')" + > docker run -it apache/airflow:3.2.0-python3.10 python -c "print('test')" test If first argument equals to ``airflow`` - the rest of the arguments is treated as an Airflow command @@ -152,13 +152,13 @@ to execute. Example: .. code-block:: bash - docker run -it apache/airflow:3.1.0-python3.10 airflow webserver + docker run -it apache/airflow:3.2.0-python3.10 airflow webserver If there are any other arguments - they are simply passed to the "airflow" command .. code-block:: bash - > docker run -it apache/airflow:3.1.0-python3.10 help + > docker run -it apache/airflow:3.2.0-python3.10 help usage: airflow [-h] GROUP_OR_COMMAND ... Positional Arguments: @@ -363,7 +363,7 @@ database and creating an ``admin/admin`` Admin user with the following command: --env "_AIRFLOW_DB_MIGRATE=true" \ --env "_AIRFLOW_WWW_USER_CREATE=true" \ --env "_AIRFLOW_WWW_USER_PASSWORD=admin" \ - apache/airflow:3.1.0-python3.10 webserver + apache/airflow:3.2.0-python3.10 webserver .. code-block:: bash @@ -372,7 +372,7 @@ database and creating an ``admin/admin`` Admin user with the following command: --env "_AIRFLOW_DB_MIGRATE=true" \ --env "_AIRFLOW_WWW_USER_CREATE=true" \ --env "_AIRFLOW_WWW_USER_PASSWORD_CMD=echo admin" \ - apache/airflow:3.1.0-python3.10 webserver + apache/airflow:3.2.0-python3.10 webserver The commands above perform initialization of the SQLite database, create admin user with admin password and Admin role. They also forward local port ``8080`` to the webserver port and finally start the webserver. @@ -412,6 +412,6 @@ Example: --env "_AIRFLOW_DB_MIGRATE=true" \ --env "_AIRFLOW_WWW_USER_CREATE=true" \ --env "_AIRFLOW_WWW_USER_PASSWORD_CMD=echo admin" \ - apache/airflow:3.1.0-python3.10 webserver + apache/airflow:3.2.0-python3.10 webserver This method is only available starting from Docker image of Airflow 2.1.1 and above. diff --git a/pyproject.toml b/pyproject.toml index 23ed7db690b9d..df21806b6cbfc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,11 +64,11 @@ classifiers = [ ] # Version is defined in src/airflow/__init__.py and it is automatically synchronized by prek -version = "3.1.0" +version = "3.2.0" dependencies = [ - "apache-airflow-task-sdk<1.2.0,>=1.0.4", - "apache-airflow-core==3.1.0", + "apache-airflow-task-sdk<1.3.0,>=1.1.0", + "apache-airflow-core==3.2.0", "natsort>=8.4.0", ] diff --git a/task-sdk/pyproject.toml b/task-sdk/pyproject.toml index 9818b2d514fd3..7aadbc5e935be 100644 --- a/task-sdk/pyproject.toml +++ b/task-sdk/pyproject.toml @@ -49,7 +49,7 @@ classifiers = [ "Topic :: System :: Monitoring", ] dependencies = [ - "apache-airflow-core<3.2.0,>=3.1.0", + "apache-airflow-core<3.3.0,>=3.2.0", "attrs>=24.2.0, !=25.2.0", "fsspec>=2023.10.0", "httpx>=0.27.0", diff --git a/task-sdk/src/airflow/sdk/__init__.py b/task-sdk/src/airflow/sdk/__init__.py index 271e2d02ebaad..ff50daad13960 100644 --- a/task-sdk/src/airflow/sdk/__init__.py +++ b/task-sdk/src/airflow/sdk/__init__.py @@ -60,7 +60,7 @@ "teardown", ] -__version__ = "1.1.0" +__version__ = "1.2.0" if TYPE_CHECKING: from airflow.sdk.api.datamodels._generated import DagRunState, TaskInstanceState, TriggerRule