Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@ check or other violation. For this project, the bullet uses the
This overrides the framework default. The triage comment must
**not** enumerate the failing check names underneath the
category (e.g. avoid `:x: **Kubernetes tests** — Failing:
Kubernetes tests / K8S System:LocalExecutor-3.10-v1.30.13-false,
Kubernetes tests / K8S System:KubernetesExecutor-3.10-...,
Kubernetes tests / K8S System:LocalExecutor-3.11-v1.30.13-false,
Kubernetes tests / K8S System:KubernetesExecutor-3.11-...,
(+1 more). See docs.`).

The same applies to the per-category remediation snippets the
Expand Down
2 changes: 1 addition & 1 deletion .apache-magpie-overrides/release-verify-rc.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ script calling `git` via `subprocess` works.

```bash
breeze start-airflow --mount-sources remove --use-distributions-from-dist \
--use-airflow-version wheel --python 3.10 --backend postgres --load-default-connections
--use-airflow-version wheel --python 3.11 --backend postgres --load-default-connections
```

4. Show the user a table of the tasks and what each log should contain, plus any
Expand Down
2 changes: 1 addition & 1 deletion .apache-magpie-overrides/runtime-invocation.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ you run with:
- Build or refresh the CI image before a campaign so the first reproducer
does not pay the build cost inside its timeout:
`breeze ci-image build --python <python>`.
- Python versions: `3.10` (default), `3.11`, `3.12`, `3.13`, `3.14` —
- Python versions: `3.11` (default), `3.12`, `3.13`, `3.14` —
`ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS` in
`dev/breeze/src/airflow_breeze/global_constants.py`; `requires-python`
in `airflow-core/pyproject.toml`. Use the default unless the issue names
Expand Down
6 changes: 3 additions & 3 deletions INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -283,15 +283,15 @@ to avoid "works-for-me" syndrome, where you use different versions of dependenci
that are used in main CI tests and by other contributors.

There are different constraint files for different Python versions. For example, this command will install
all basic devel requirements and requirements of Google provider as last successfully tested for Python 3.10:
all basic devel requirements and requirements of Google provider as last successfully tested for Python 3.11:

pip install -e ".[devel,google]"" \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-3.10.txt"
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-3.11.txt"

Using the 'constraints-no-providers' constraint files, you can upgrade Airflow without paying attention to the provider's dependencies. This allows you to keep installed provider dependencies and install the latest supported ones using pure Airflow core.

pip install -e ".[devel]" \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-no-providers-3.10.txt"
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-no-providers-3.11.txt"

Note that you can also use `uv pip install` if you use `uv`.

Expand Down
2 changes: 1 addition & 1 deletion airflow-core/docs/best-practices.rst
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ When you execute that code you will see:

.. code-block:: bash

[Breeze:3.10.19] root@cf85ab34571e:/opt/airflow# python /files/test_python.py
[Breeze:3.11.16] root@cf85ab34571e:/opt/airflow# python /files/test_python.py
Executing 1

This means that the ``get_array`` is not executed as top-level code, but ``get_task_id`` is.
Expand Down
2 changes: 1 addition & 1 deletion airflow-core/docs/core-concepts/debug.rst
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ Run ``python -m pdb <path to Dag file>.py`` for an interactive debugging experie

.. code-block:: bash

[Breeze:3.10.19] root@ef2c84ad4856:/opt/airflow# python -m pdb providers/standard/src/airflow/providers/standard/example_dags/example_bash_operator.py
[Breeze:3.11.16] root@ef2c84ad4856:/opt/airflow# python -m pdb providers/standard/src/airflow/providers/standard/example_dags/example_bash_operator.py
> /opt/airflow/providers/standard/src/airflow/providers/standard/example_dags/example_bash_operator.py(18)<module>()
-> """Example Dag demonstrating the usage of the BashOperator."""
(Pdb) b 45
Expand Down
2 changes: 1 addition & 1 deletion airflow-core/docs/extra-packages-ref.rst
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ with a consistent set of dependencies based on constraint files provided by Airf
:substitutions:

pip install apache-airflow[google,amazon,apache-spark]==|version| \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt"
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.11.txt"

Note, that this will install providers in the versions that were released at the time of Airflow |version| release. You can later
upgrade those providers manually if you want to use latest versions of the providers.
Expand Down
4 changes: 2 additions & 2 deletions airflow-core/docs/howto/set-up-database.rst
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ You can make sure which version is used by the interpreter by running this check

.. code-block:: bash

[Breeze:3.10.19] root@b8a8e73caa2c:/opt/airflow# python
Python 3.8.10 (default, Mar 15 2022, 12:22:08)
[Breeze:3.11.16] root@b8a8e73caa2c:/opt/airflow# python
Python 3.11.16 (default, Oct 06 2026, 12:22:08)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
Expand Down
24 changes: 12 additions & 12 deletions airflow-core/docs/installation/installing-from-pypi.rst
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ Typical command to install Airflow from scratch in a reproducible way from PyPI

.. code-block:: bash
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt"
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.11.txt"
Typically, you can add other dependencies and providers as separate command after the reproducible
Expand Down Expand Up @@ -135,14 +135,14 @@ You can create the URL to the file substituting the variables in the template be
where:

- ``AIRFLOW_VERSION`` - Airflow version (e.g. :subst-code:`|version|`) or ``main``, ``2-0``, for latest development version
- ``PYTHON_VERSION`` Python version e.g. ``3.10``, ``3.11``
- ``PYTHON_VERSION`` Python version e.g. ``3.11``, ``3.12``

The examples below assume that you want to use install Airflow in a reproducible way with the ``celery`` extra,
but you can pick your own set of extras and providers to install.

.. code-block:: bash
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt"
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.11.txt"
.. note::
Expand Down Expand Up @@ -173,15 +173,15 @@ performing dependency resolution.

.. code-block:: bash
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt"
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.11.txt"
pip install "apache-airflow==|version|" apache-airflow-providers-google==10.1.1
You can also downgrade or upgrade other dependencies this way - even if they are not compatible with
those dependencies that are stored in the original constraints file:

.. code-block:: bash
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt"
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.11.txt"
pip install "apache-airflow[celery]==|version|" dbt-core==0.20.0
.. warning::
Expand Down Expand Up @@ -224,7 +224,7 @@ one provided by the community.

.. code-block:: bash
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt"
pip install "apache-airflow[celery]==|version|" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.11.txt"
pip install "apache-airflow==|version|" dbt-core==0.20.0
pip freeze > my-constraints.txt
Expand Down Expand Up @@ -353,9 +353,9 @@ dependencies compatible with just Airflow core at the moment Airflow was release
AIRFLOW_VERSION=|version|
PYTHON_VERSION="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
# For example: 3.10
# For example: 3.11
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-no-providers-${PYTHON_VERSION}.txt"
# For example: https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-no-providers-3.10.txt
# For example: https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-no-providers-3.11.txt
pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"
Troubleshooting
Expand All @@ -379,7 +379,7 @@ Symbol not found: ``_Py_GetArgcArgv``
=====================================

If you see ``Symbol not found: _Py_GetArgcArgv`` while starting or importing ``airflow``, this may mean that you are using an incompatible version of Python.
For a homebrew installed version of Python, this is generally caused by using Python in ``/usr/local/opt/bin`` rather than the Frameworks installation (e.g. for ``python 3.10``: ``/usr/local/opt/python@3.10/Frameworks/Python.framework/Versions/3.10``).
For a homebrew installed version of Python, this is generally caused by using Python in ``/usr/local/opt/bin`` rather than the Frameworks installation (e.g. for ``python 3.11``: ``/usr/local/opt/python@3.11/Frameworks/Python.framework/Versions/3.11``).

The crux of the issue is that a library Airflow depends on, ``setproctitle``, uses a non-public Python API
which is not available from the standard installation ``/usr/local/opt/`` (which symlinks to a path under ``/usr/local/Cellar``).
Expand All @@ -388,9 +388,9 @@ An easy fix is just to ensure you use a version of Python that has a dylib of th

.. code-block:: bash
# Note: these instructions are for python3.10 but can be loosely modified for other versions
brew install python@3.10
virtualenv -p /usr/local/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/bin/python3 .toy-venv
# Note: these instructions are for python3.11 but can be loosely modified for other versions
brew install python@3.11
virtualenv -p /usr/local/opt/python@3.11/Frameworks/Python.framework/Versions/3.11/bin/python3 .toy-venv
source .toy-venv/bin/activate
pip install apache-airflow
python
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ used by Airflow and you would like to get rid of those. There are a few things y
git clone git@github.com:apache/airflow.git
cd airflow
./scripts/tools/setup_breeze
breeze release-management constraints-version-check --python 3.10 --package PACKAGE_NAME --explain-why
breeze release-management constraints-version-check --python 3.11 --package PACKAGE_NAME --explain-why

Fragment of example output of such tool is shown below - indicating that ``apache-beam`` blocks upgrade of
``grpcio`` package to version 1.56.0:
Expand Down
6 changes: 3 additions & 3 deletions airflow-core/docs/start.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ This quick start guide will help you bootstrap an Airflow standalone instance on

.. note::

Successful installation requires a Python 3 environment. Starting with Airflow 3.2.0, Airflow supports Python 3.10, 3.11, 3.12, 3.13, 3.14.
Successful installation requires a Python 3 environment. Airflow supports Python 3.11, 3.12, 3.13, 3.14.

Officially supported installation methods are ``pip`` or ``uv``.

Run ``pip install apache-airflow[EXTRAS]==AIRFLOW_VERSION --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-AIRFLOW_VERSION/constraints-PYTHON_VERSION.txt"``, for example ``pip install "apache-airflow[celery]==3.0.0" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.0.0/constraints-3.10.txt"`` to install Airflow in a reproducible way. You can also use - much faster - ``uv`` - by adding ``uv`` before the command.
Run ``pip install apache-airflow[EXTRAS]==AIRFLOW_VERSION --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-AIRFLOW_VERSION/constraints-PYTHON_VERSION.txt"``, for example ``pip install "apache-airflow[celery]==3.0.0" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.0.0/constraints-3.11.txt"`` to install Airflow in a reproducible way. You can also use - much faster - ``uv`` - by adding ``uv`` before the command.



Expand Down Expand Up @@ -113,7 +113,7 @@ before running ``pip install`` commands:
PYTHON_VERSION="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"

CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
# For example this would install 3.1.1 with python 3.10: https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.10.txt
# For example this would install 3.1.1 with python 3.11: https://raw.githubusercontent.com/apache/airflow/constraints-|version|/constraints-3.11.txt

uv pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

Expand Down
2 changes: 1 addition & 1 deletion airflow-ctl/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ A command-line tool for interacting with Apache Airflow instances through the Ai

## Requirements

- Python 3.10 or later (compatible with 3.10 <= Python <= 3.14)
- Python 3.11 or later (compatible with 3.11 <= Python <= 3.14)
- Network access to an Apache Airflow instance with REST API enabled
- \[Recommended\] Keyring backend installed in operating system for secure token storage.
- In case there's no keyring available (common in headless environments) you can provide the token to each command. See the [Security page](https://airflow.apache.org/docs/apache-airflow-ctl/stable/security.html) for more information.
Expand Down
4 changes: 1 addition & 3 deletions airflow-ctl/docs/installation/prerequisites.rst
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,14 @@ use cases. Simply install them to make them available:

Python Version Compatibility
----------------------------
``airflowctl`` is compatible with versions of Python 3.10 through Python 3.14.
``airflowctl`` is compatible with versions of Python 3.11 through Python 3.14.

.. list-table::
:widths: 15 85
:header-rows: 1

* - Python Version
- Supported
* - 3.10
- Yes
* - 3.11
- Yes
* - 3.12
Expand Down
6 changes: 3 additions & 3 deletions constraints/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ This allows you to iterate on dependencies without having to run `--upgrade-to-n
Typical workflow in this case is:

* download and copy the constraint file to the folder (for example via
[The GitHub Raw Link](https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-3.10.txt))
[The GitHub Raw Link](https://raw.githubusercontent.com/apache/airflow/constraints-main/constraints-3.11.txt))
* modify the constraint file in "constraints" folder
* build the image using this command

```bash
breeze ci-image build --python 3.10 --airflow-constraints-location constraints/constraints-3.10.txt
breeze ci-image build --python 3.11 --airflow-constraints-location constraints/constraints-3.11.txt
```

You can continue iterating and updating the constraint file (and rebuilding the image)
Expand All @@ -46,7 +46,7 @@ pip freeze | sort | \
grep -v "apache_airflow" | \
grep -v "apache-airflow==" | \
grep -v "@" | \
grep -v "/opt/airflow" > /opt/airflow/constraints/constraints-3.10.txt
grep -v "/opt/airflow" > /opt/airflow/constraints/constraints-3.11.txt
```

If you are working with others on updating the dependencies, you can also commit the constraint
Expand Down
Loading
Loading