diff --git a/airflow-core/pyproject.toml b/airflow-core/pyproject.toml index bdb4934cced59..debe6e1e79c48 100644 --- a/airflow-core/pyproject.toml +++ b/airflow-core/pyproject.toml @@ -64,7 +64,7 @@ classifiers = [ ] # Version is defined in src/airflow/__init__.py and it is automatically synchronized by prek hook -version = "3.2.0" +version = "3.3.0" dependencies = [ "a2wsgi>=1.10.8", @@ -148,7 +148,7 @@ dependencies = [ "typing-extensions>=4.14.1", "universal-pathlib>=0.3.8", "uuid6>=2024.7.10", - "apache-airflow-task-sdk<1.3.0,>=1.2.0", + "apache-airflow-task-sdk<1.4.0,>=1.3.0", # pre-installed providers "apache-airflow-providers-common-compat>=1.7.4", "apache-airflow-providers-common-io>=1.6.3", diff --git a/airflow-core/src/airflow/__init__.py b/airflow-core/src/airflow/__init__.py index 177cdbd15ee1c..c1f3320a4870e 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.2.0" +__version__ = "3.3.0" import os diff --git a/dev/README_RELEASE_AIRFLOW.md b/dev/README_RELEASE_AIRFLOW.md index 685523282d5ca..0230ece5f219d 100644 --- a/dev/README_RELEASE_AIRFLOW.md +++ b/dev/README_RELEASE_AIRFLOW.md @@ -1534,7 +1534,8 @@ If you don't have access to the account ask a PMC member to post. This includes: - Modify `./scripts/ci/prek/supported_versions.py` and let prek do the job. -- For major/minor release, update version in `airflow/__init__.py` and `docs/docker-stack/` to the next likely minor version release. +- For major/minor release, update version in `airflow/__init__.py` and `docker-stack-docs/` to the next likely major version release. + - New version should be, current major release + 1.0 - Sync `RELEASE_NOTES.rst` (including deleting relevant `newsfragments`) and `README.md` changes. - Updating `Dockerfile` with the new version. - Updating `1-airflow_bug_report.yml` issue template in `.github/ISSUE_TEMPLATE/` with the new version. diff --git a/docker-stack-docs/README.md b/docker-stack-docs/README.md index 13dc10ad3e779..a27d016428f5a 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.2.0`): +You can find the following images there (Assuming Airflow version `3.3.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.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 +* `apache/airflow:3.3.0` - the versioned Airflow image with default Python version (3.12 currently) +* `apache/airflow:3.3.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.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 +* `apache/airflow:slim-3.3.0` - the versioned Airflow image with default Python version (3.12 currently) +* `apache/airflow:slim-3.3.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/docker-examples/extending/add-airflow-configuration/Dockerfile b/docker-stack-docs/docker-examples/extending/add-airflow-configuration/Dockerfile index 3afbfe69daaf9..f778af5ebdeb9 100644 --- a/docker-stack-docs/docker-examples/extending/add-airflow-configuration/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-airflow-configuration/Dockerfile @@ -17,7 +17,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 d7c35f4cf9a4b..9676403f4e88c 100644 --- a/docker-stack-docs/docker-examples/extending/add-apt-packages/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-apt-packages/Dockerfile @@ -17,7 +17,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 c298044402209..157fcb821bdc4 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 @@ -17,7 +17,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 5fc6156bba6a8..ba2e1eae4b697 100644 --- a/docker-stack-docs/docker-examples/extending/add-providers/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-providers/Dockerfile @@ -17,7 +17,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 b47f3af82a4ab..509d83d50ab2f 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 @@ -17,6 +17,6 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 c2ef0a85ec855..e96a9a1ebe804 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 @@ -17,7 +17,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.0 # The `uv` tools is Rust packaging tool that is much faster than `pip` and other installers # 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 f28e53691c6fa..e9dfb588b6883 100644 --- a/docker-stack-docs/docker-examples/extending/add-pypi-packages/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-pypi-packages/Dockerfile @@ -17,6 +17,6 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 244a7a55b3805..edf33a19ea391 100644 --- a/docker-stack-docs/docker-examples/extending/add-requirement-packages/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/add-requirement-packages/Dockerfile @@ -17,7 +17,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 4bd8b1f4d44b8..880c31eaea66f 100644 --- a/docker-stack-docs/docker-examples/extending/custom-providers/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/custom-providers/Dockerfile @@ -17,6 +17,6 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 eda6f73a49790..578c71f863cc7 100644 --- a/docker-stack-docs/docker-examples/extending/embedding-dags/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/embedding-dags/Dockerfile @@ -17,7 +17,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 525e78d2dfb5d..9573b2720af09 100644 --- a/docker-stack-docs/docker-examples/extending/writable-directory/Dockerfile +++ b/docker-stack-docs/docker-examples/extending/writable-directory/Dockerfile @@ -17,7 +17,7 @@ # This is an example Dockerfile. It is not intended for PRODUCTION use # [START Dockerfile] -FROM apache/airflow:3.2.0 +FROM apache/airflow:3.3.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 b77669dea1254..9835b154083fd 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.2.0-python3.10 bash -c "ls -la" + docker run -it apache/airflow:3.3.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.2.0-python3.10 python -c "print('test')" + > docker run -it apache/airflow:3.3.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.2.0-python3.10 airflow webserver + docker run -it apache/airflow:3.3.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.2.0-python3.10 help + > docker run -it apache/airflow:3.3.0-python3.10 help usage: airflow [-h] GROUP_OR_COMMAND ... Positional Arguments: @@ -366,7 +366,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.2.0-python3.10 webserver + apache/airflow:3.3.0-python3.10 webserver .. code-block:: bash @@ -375,7 +375,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.2.0-python3.10 webserver + apache/airflow:3.3.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. @@ -415,6 +415,6 @@ Example: --env "_AIRFLOW_DB_MIGRATE=true" \ --env "_AIRFLOW_WWW_USER_CREATE=true" \ --env "_AIRFLOW_WWW_USER_PASSWORD_CMD=echo admin" \ - apache/airflow:3.2.0-python3.10 webserver + apache/airflow:3.3.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 d0ca06279b199..8906d4618a281 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,11 +56,11 @@ classifiers = [ ] # Version is defined in src/airflow/__init__.py and it is automatically synchronized by prek -version = "3.2.0" +version = "3.3.0" dependencies = [ - "apache-airflow-task-sdk<1.3.0,>=1.2.0", - "apache-airflow-core==3.2.0", + "apache-airflow-task-sdk<1.4.0,>=1.3.0", + "apache-airflow-core==3.3.0", ] packages = [] diff --git a/task-sdk/pyproject.toml b/task-sdk/pyproject.toml index df06f6118c7da..230a3dba2d2a2 100644 --- a/task-sdk/pyproject.toml +++ b/task-sdk/pyproject.toml @@ -48,7 +48,7 @@ classifiers = [ "Topic :: System :: Monitoring", ] dependencies = [ - "apache-airflow-core<3.3.0,>=3.2.0", + "apache-airflow-core<3.4.0,>=3.3.0", "asgiref>=2.3.0; python_version < '3.14'", "asgiref>=3.11.1; python_version >= '3.14'", "attrs>=24.2.0, !=25.2.0", diff --git a/task-sdk/src/airflow/sdk/__init__.py b/task-sdk/src/airflow/sdk/__init__.py index 8d10d6aba491c..f9c658830869c 100644 --- a/task-sdk/src/airflow/sdk/__init__.py +++ b/task-sdk/src/airflow/sdk/__init__.py @@ -94,7 +94,7 @@ "teardown", ] -__version__ = "1.2.0" +__version__ = "1.3.0" if TYPE_CHECKING: from airflow.sdk.api.datamodels._generated import DagRunState, TaskInstanceState, TriggerRule, WeightRule