Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
489cf27
Set minimum version for common.messaging to 1.0.3 (#54160) (#54176)
potiuk Aug 6, 2025
8b43a9e
[v3-0-test] Add IP validation to example_dag_decorator DAG (#54136) (…
github-actions[bot] Aug 7, 2025
68ca65b
[v3-0-test] Fix: Apply DAG permission filter to dashboard (closes #53…
github-actions[bot] Aug 7, 2025
304b2cc
Fix: Validate and handle invalid `extra` field in connections UI and …
pierrejeambrun Aug 7, 2025
f8ba8ea
[v3-0-test] Fix redirects (#54238) (#54251)
github-actions[bot] Aug 8, 2025
ce22573
[v3-0-test] Fix reproducibility issue for tarballs with symlink (#542…
github-actions[bot] Aug 8, 2025
c846511
[v3-0-test] Fetch from remote before performing reproducible package …
github-actions[bot] Aug 8, 2025
be5907a
[v3-0-test] Connection Extra additional test case for validation (#54…
github-actions[bot] Aug 8, 2025
2770ad2
[v3-0-test] Fix for Edit and Delete request issue 53681 (#53815) (#54…
github-actions[bot] Aug 8, 2025
e3637a2
[v3-0-test] Fix cherry-pick detection in airflow-github script (#5428…
github-actions[bot] Aug 8, 2025
b6f4621
[v3-0-test] Massively optimize airflow-github script performance (96%…
github-actions[bot] Aug 8, 2025
b07017b
Restore proper DAG callback execution context (#53684)
kaxil Jul 24, 2025
cd68819
[v3-0-test] Validate publish documentation versions (#54272) (#54282)
github-actions[bot] Aug 9, 2025
820cb2b
Fix dag_versions property when created_dag_version is None with bundl…
vatsrahul1001 Aug 10, 2025
a30cc59
[v3-0-test] Do not include GitHub bots in release test requests (#541…
github-actions[bot] Aug 10, 2025
834e033
[v3-0-test] Add FAQ entry about testing connections and "Canary" Dag …
github-actions[bot] Aug 10, 2025
45e9f33
[v3-0-test] fix(UI): Correct illegible DAG params text in dark mode (…
github-actions[bot] Aug 10, 2025
c27f253
Fix redirects repository urls, use head repo when running PR workflow…
gopidesupavan Aug 10, 2025
ae37555
[v3-0-test] Initialize custom variables before running db-reset (#543…
github-actions[bot] Aug 10, 2025
06f37b3
Bump uv and pre-commit versions (#54304) (#54328)
gopidesupavan Aug 10, 2025
0a2f8cb
[v3-0-test] Use env var connections instead of mocks in kube system t…
amoghrajesh Aug 10, 2025
15da8f7
Convert auth manager into cachable flag and configure it for more com…
potiuk Aug 10, 2025
d477047
Prevent `DetachedInstanceError` when processing executor event (#54334)
kaxil Aug 11, 2025
d13713e
Allow `DEFAULT_QUEUE` to be configurable from airflow settings in Tas…
dabla Jul 4, 2025
2d2eedd
Fix task configuration defaults for AbstractOperator (#52871)
kaxil Jul 4, 2025
03a78e8
Add note about ruff rules and preview flag (#53331)
eladkal Jul 14, 2025
4ad2433
Fix broken link in advanced logging config docs (#53460)
r-richmond Jul 17, 2025
257735f
Update dag bundles docs; add s3, fix git classpath (#53473)
jedcunningham Jul 17, 2025
18e17f2
Fixed Task group names duplication in Task's task_id for MappedOperat…
evgenii-prusov Jul 22, 2025
2b993be
Fix custom xcom backend serialize when BaseXCom.get_all is used (#53814)
amoghrajesh Jul 29, 2025
2b34a65
Restore ``get_previous_dagrun`` functionality for task context (#53655)
amoghrajesh Aug 11, 2025
cd60cfc
Do not ignore `include_prior_dates` in xcom_pull when `map_indexes` i…
amoghrajesh Jul 29, 2025
3edbef7
Allow setting and deleting variables and xcoms from triggers (#53514)
karenbraganz Aug 5, 2025
8e2a348
Fix type error with TIH when reading served log (#54114)
yaming-github Aug 6, 2025
5c44ad0
Bump uv and pre-commit versions (#54304)
gopidesupavan Aug 9, 2025
364d246
Fix `DetachedInstanceError` when accessing `DagRun.created_dag_versio…
kaxil Aug 11, 2025
e2ecd8b
[v3-0-test] Fail upgrade pre-commit when pre-commits need to be updat…
potiuk Aug 11, 2025
af78c3d
[v3-0-test] Upgrade to latest Lucas Pre-commit (#54374) (#54375)
github-actions[bot] Aug 11, 2025
27cf1cc
[v3-0-test] Skip running db queries for Spans when they are disabled …
github-actions[bot] Aug 12, 2025
f34846c
[v3-0-test] Use env var connections instead of actual db connections …
github-actions[bot] Aug 12, 2025
72d92d4
[v3-0-test] Migrate `HiveToDynamoDBOperator` and `SqlToS3Operator` to…
github-actions[bot] Aug 12, 2025
f0017e7
[v3-0-test] fix: corrects issues with edge rendering on the graph vie…
github-actions[bot] Aug 12, 2025
d902c7f
[v3-0-test] Improve condition for pushing the cache for images (#5441…
github-actions[bot] Aug 12, 2025
22da456
[v3-0-test] Update selective checks to run core tests when serializat…
github-actions[bot] Aug 12, 2025
041128b
[v3-0-test] Upgrade ruff to latest version (0.12.1) (#52562) (#54406)
ashb Aug 13, 2025
5c07811
[v3-0-test] Allow downgrading to 2.11 from 3.x (#54371) (#54399)
ashb Aug 13, 2025
ed7e05f
[v3-0-test] Prevent repeated warning of triggers being added twice in…
github-actions[bot] Aug 13, 2025
2d12289
[v3-0-test] Explicitly set the JWTGenerator private_key field to None…
github-actions[bot] Aug 13, 2025
13b2567
[v3-0-test] Fix Certain DAG import errors ("role does not exist") don…
sjyangkevin Aug 13, 2025
60ee14c
[v3-0-test] Allow failure callbacks for stuck in queued TIs that fail…
ashb Aug 13, 2025
b6a11e7
[v3-0-test] Ensure TaskInstance.end_date and duration are populated b…
github-actions[bot] Aug 13, 2025
ed08b53
[v3-0-test] Handle overflow in TaskInstance `next_retry_datetime` (#4…
github-actions[bot] Aug 13, 2025
9d41e5d
[v3-0-test] Refactor example task to use context and logging for para…
github-actions[bot] Aug 13, 2025
6348712
Add ordering to AssetEvent query in SchedulerJobRunner (#52231)
dingo4dev Aug 13, 2025
5da6500
Bump Airflow to 3.0.5 and Task SDK to 1.0.5
kaxil Aug 13, 2025
3251e68
fix map_index is null dynamic task mapping bug (#54249)
isaiahiruoha Aug 13, 2025
0ab3240
fix: calculate TaskName indentation instead of using chakra spacing v…
codecae Aug 12, 2025
95bfa74
[v3-0-test] Hide individual Public Interface subsections from sidebar…
github-actions[bot] Aug 13, 2025
9e58943
Add Release notes for Airflow 3.0.5 and Task SDK 1.0.5
kaxil Aug 13, 2025
12c94e2
Bump `zizmor` pre-commit to fix static checks (#54468)
kaxil Aug 13, 2025
52083d0
Bump Task SDK to 1.0.5
kaxil Aug 13, 2025
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
4 changes: 2 additions & 2 deletions .github/actions/install-pre-commit/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ inputs:
default: "3.9"
uv-version:
description: 'uv version to use'
default: "0.8.4" # Keep this comment to allow automatic replacement of uv version
default: "0.8.8" # Keep this comment to allow automatic replacement of uv version
pre-commit-version:
description: 'pre-commit version to use'
default: "4.2.0" # Keep this comment to allow automatic replacement of pre-commit version
default: "4.3.0" # Keep this comment to allow automatic replacement of pre-commit version
pre-commit-uv-version:
description: 'pre-commit-uv version to use'
default: "4.1.4" # Keep this comment to allow automatic replacement of pre-commit-uv version
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/basic-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -258,9 +258,11 @@ jobs:
python-version: ${{steps.breeze.outputs.host-python-version}}
skip-pre-commits: ${{ inputs.skip-pre-commits }}
- name: "Autoupdate all pre-commits"
run: pre-commit autoupdate
run: pre-commit autoupdate --freeze
- name: "Autoupdate Lucas-C/pre-commit-hooks to bleeding edge"
run: pre-commit autoupdate --bleeding-edge --freeze --repo https://github.com/Lucas-C/pre-commit-hooks
- name: "Check if there are any changes in pre-commit hooks"
run: git diff --exit-code
- name: "Run automated upgrade for black"
run: >
pre-commit run
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/ci-amd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,8 @@ jobs:
${{ steps.selective-checks.outputs.selected-providers-list-as-string }}
skip-pre-commits: ${{ steps.selective-checks.outputs.skip-pre-commits }}
skip-providers-tests: ${{ steps.selective-checks.outputs.skip-providers-tests }}
source-head-repo: ${{ steps.source-run-info.outputs.source-head-repo }}
source-head-repo: ${{ steps.source-run-info.outputs.head-repo }}
source-head-ref: ${{ steps.source-run-info.outputs.head-ref }}
sqlite-exclude: ${{ steps.selective-checks.outputs.sqlite-exclude }}
testable-core-integrations: ${{ steps.selective-checks.outputs.testable-core-integrations }}
testable-providers-integrations: ${{ steps.selective-checks.outputs.testable-providers-integrations }}
Expand Down Expand Up @@ -184,8 +185,8 @@ jobs:
- name: Install pre-commit, uv, and pre-commit-uv
shell: bash
env:
UV_VERSION: "0.8.4" # Keep this comment to allow automatic replacement of uv version
PRE_COMMIT_VERSION: "4.2.0" # Keep this comment to allow automatic replacement of pre-commit version
UV_VERSION: "0.8.8" # Keep this comment to allow automatic replacement of uv version
PRE_COMMIT_VERSION: "4.3.0" # Keep this comment to allow automatic replacement of pre-commit version
PRE_COMMIT_UV_VERSION: "4.1.4" # Keep this comment to allow automatic replacement of pre-commit-uv version
run: |
pip install uv==${UV_VERSION} || true
Expand Down Expand Up @@ -309,6 +310,8 @@ jobs:
default-postgres-version: ${{ needs.build-info.outputs.default-postgres-version }}
run-coverage: ${{ needs.build-info.outputs.run-coverage }}
use-uv: ${{ needs.build-info.outputs.use-uv }}
source-head-repo: ${{ needs.build-info.outputs.source-head-repo }}
source-head-ref: ${{ needs.build-info.outputs.source-head-ref }}
secrets:
DOCS_AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_AWS_ACCESS_KEY_ID }}
DOCS_AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_AWS_SECRET_ACCESS_KEY }}
Expand Down
29 changes: 25 additions & 4 deletions .github/workflows/ci-image-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,14 @@ on: # yamllint disable-line rule:truthy
description: "Whether to use uv to build the image (true/false)"
required: true
type: string
source-head-repo:
description: "The source head repository to use for back-references"
default: "apache/airflow"
type: string
source-head-ref:
description: "The source head ref to use for back-references"
default: "main"
type: string
secrets:
DOCS_AWS_ACCESS_KEY_ID:
required: true
Expand Down Expand Up @@ -303,7 +311,7 @@ jobs:

publish-docs:
timeout-minutes: 150
name: "Publish documentation"
name: "Publish documentation and validate versions"
permissions:
id-token: write
contents: read
Expand All @@ -317,9 +325,8 @@ jobs:
INCLUDE_SUCCESS_OUTPUTS: "${{ inputs.include-success-outputs }}"
PYTHON_MAJOR_MINOR_VERSION: "${{ inputs.default-python-version }}"
VERBOSE: "true"
if: >
inputs.canary-run == 'true' &&
(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
HEAD_REPO: "${{ inputs.source-head-repo }}"
HEAD_REF: "${{ inputs.source-head-ref }}"
steps:
- name: "Cleanup repo"
shell: bash
Expand Down Expand Up @@ -363,21 +370,35 @@ jobs:
run: breeze release-management add-back-references docker-stack
- name: "Generate back references for helm-chart"
run: breeze release-management add-back-references helm-chart
- name: "Validate published doc versions"
id: validate-docs-versions
run: cd ./dev/breeze && uv run ./src/airflow_breeze/utils/docs_version_validation.py
env:
AIRFLOW_SITE_DIRECTORY: /mnt/airflow-site/airflow-site
- name: Install AWS CLI v2
run: |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o /tmp/awscliv2.zip
unzip -q /tmp/awscliv2.zip -d /tmp
rm /tmp/awscliv2.zip
sudo /tmp/aws/install --update
rm -rf /tmp/aws/
if: >
inputs.canary-run == 'true' &&
(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1
with:
aws-access-key-id: ${{ secrets.DOCS_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.DOCS_AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
if: >
inputs.canary-run == 'true' &&
(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
- name: "Upload documentation to AWS S3"
run: aws s3 sync --delete ./generated/_build s3://apache-airflow-docs
if: >
inputs.canary-run == 'true' &&
(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')

test-python-api-client:
timeout-minutes: 60
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/finalize-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,4 @@ jobs:
include-success-outputs: ${{ inputs.include-success-outputs }}
docker-cache: ${{ inputs.docker-cache }}
disable-airflow-repo-cache: ${{ inputs.disable-airflow-repo-cache }}
if: >
inputs.canary-run == 'true' &&
(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
if: inputs.canary-run == 'true' && github.event_name != 'pull_request'
24 changes: 10 additions & 14 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ repos:
- id: check-hooks-apply
name: Check if all hooks apply to the repository
- repo: https://github.com/thlorenz/doctoc.git
rev: v2.2.0
rev: 70fdcd39ef919754011a827bd25f23a0b141c3c3 # frozen: v2.2.0
hooks:
- id: doctoc
name: Add TOC for Markdown and RST files
Expand Down Expand Up @@ -232,7 +232,7 @@ repos:
additional_dependencies: ['libcst>=1.1.0,!=1.8.0,!=1.8.1']
files: ^(providers/.*/)?airflow/.*/(sensors|operators)/.*\.py$
- repo: https://github.com/asottile/blacken-docs
rev: 1.19.1
rev: 78a9dcbecf4f755f65d1f3dec556bc249d723600 # frozen: 1.19.1
hooks:
- id: blacken-docs
name: Run black on docs
Expand All @@ -245,7 +245,7 @@ repos:
alias: blacken-docs
additional_dependencies: ['black==24.10.0']
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0
hooks:
- id: check-merge-conflict
name: Check that merge conflicts are not being committed
Expand Down Expand Up @@ -281,10 +281,6 @@ repos:
^airflow-core/docs/img/.*\.dot$|
^dev/breeze/doc/images/output.*$|
^.*/openapi-gen/.*$
- id: fix-encoding-pragma
name: Remove encoding header from Python files
args:
- --remove
- id: pretty-format-json
name: Format JSON files
args:
Expand All @@ -295,14 +291,14 @@ repos:
files: ^chart/values\.schema\.json$|^chart/values_schema\.schema\.json$
pass_filenames: true
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.10.0
rev: 3a6eb0fadf60b3cccfd80bad9dbb6fae7e47b316 # frozen: v1.10.0
hooks:
- id: rst-backticks
name: Check if RST files use double backticks for code
- id: python-no-log-warn
name: Check if there are no deprecate log warn
- repo: https://github.com/adrienverge/yamllint
rev: v1.37.1
rev: 79a6b2b1392eaf49cdd32ac4f14be1a809bbd8f7 # frozen: v1.37.1
hooks:
- id: yamllint
name: Check YAML files with yamllint
Expand All @@ -320,7 +316,7 @@ repos:
^.*reproducible_build\.yaml$|
^.*pnpm-lock\.yaml$
- repo: https://github.com/ikamensh/flynt
rev: '1.0.1'
rev: '97be693bf18bc2f050667dd282d243e2824b81e2' # frozen: 1.0.6
hooks:
- id: flynt
name: Run flynt string format converter for Python
Expand All @@ -331,7 +327,7 @@ repos:
- --line-length
- '99999'
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
rev: 63c8f8312b7559622c0d82815639671ae42132ac # frozen: v2.4.1
hooks:
- id: codespell
name: Run codespell
Expand All @@ -357,7 +353,7 @@ repos:
- --skip=providers/.*/src/airflow/providers/*/*.rst,providers/*/docs/changelog.rst,docs/*/commits.rst,providers/*/docs/commits.rst,providers/*/*/docs/commits.rst,docs/apache-airflow/tutorial/pipeline_example.csv,*.min.js,*.lock,INTHEWILD.md,*.svg
- --exclude-file=.codespellignorelines
- repo: https://github.com/woodruffw/zizmor-pre-commit
rev: v1.11.0
rev: 807e9d4c61778a1c3082413cf4ff50629483d8bb # frozen: v1.12.0
hooks:
- id: zizmor
name: Run zizmor to check for github workflow syntax errors
Expand Down Expand Up @@ -413,7 +409,7 @@ repos:
types_or: [python, pyi]
args: [--fix]
require_serial: true
additional_dependencies: ['ruff==0.11.13']
additional_dependencies: ['ruff==0.12.1']
exclude: ^airflow-core/tests/unit/dags/test_imports\.py$|^performance/tests/test_.*\.py$
- id: ruff-format
name: Run 'ruff format'
Expand All @@ -423,7 +419,7 @@ repos:
types_or: [python, pyi]
args: []
require_serial: true
additional_dependencies: ['ruff==0.11.13']
additional_dependencies: ['ruff==0.12.1']
exclude: ^airflow-core/tests/unit/dags/test_imports\.py$
- id: replace-bad-characters
name: Replace bad characters
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ ARG PYTHON_BASE_IMAGE="python:3.9-slim-bookworm"
ARG AIRFLOW_PIP_VERSION=25.2
# ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
ARG AIRFLOW_SETUPTOOLS_VERSION=80.9.0
ARG AIRFLOW_UV_VERSION=0.8.4
ARG AIRFLOW_UV_VERSION=0.8.8
ARG AIRFLOW_USE_UV="false"
ARG UV_HTTP_TIMEOUT="300"
ARG AIRFLOW_IMAGE_REPOSITORY="https://github.com/apache/airflow"
Expand Down
18 changes: 9 additions & 9 deletions Dockerfile.ci
Original file line number Diff line number Diff line change
Expand Up @@ -975,6 +975,11 @@ function environment_initialization() {

set +e

# shellcheck source=scripts/in_container/configure_environment.sh
. "${IN_CONTAINER_DIR}/configure_environment.sh"
# shellcheck source=scripts/in_container/run_init_script.sh
. "${IN_CONTAINER_DIR}/run_init_script.sh"

"${IN_CONTAINER_DIR}/check_environment.sh"
ENVIRONMENT_EXIT_CODE=$?
set -e
Expand All @@ -984,6 +989,7 @@ function environment_initialization() {
echo
exit ${ENVIRONMENT_EXIT_CODE}
fi

mkdir -p /usr/lib/google-cloud-sdk/bin
touch /usr/lib/google-cloud-sdk/bin/gcloud
ln -s -f /usr/bin/gcloud /usr/lib/google-cloud-sdk/bin/gcloud
Expand All @@ -1009,12 +1015,6 @@ function environment_initialization() {
ssh-keyscan -H localhost >> ~/.ssh/known_hosts 2>/dev/null
fi

# shellcheck source=scripts/in_container/configure_environment.sh
. "${IN_CONTAINER_DIR}/configure_environment.sh"

# shellcheck source=scripts/in_container/run_init_script.sh
. "${IN_CONTAINER_DIR}/run_init_script.sh"

cd "${AIRFLOW_SOURCES}"

# Temporarily add /opt/airflow/providers/standard/tests to PYTHONPATH in order to see example dags
Expand Down Expand Up @@ -1314,7 +1314,7 @@ ENV DEV_APT_COMMAND=${DEV_APT_COMMAND} \

ARG AIRFLOW_PYTHON_VERSION=v3.10.18
ENV AIRFLOW_PYTHON_VERSION=$AIRFLOW_PYTHON_VERSION
ENV GOLANG_MAJOR_MINOR_VERSION=1.24.5
ENV GOLANG_MAJOR_MINOR_VERSION=1.24.6

COPY --from=scripts install_os_dependencies_ci.sh /scripts/docker/

Expand Down Expand Up @@ -1445,9 +1445,9 @@ COPY --from=scripts common.sh install_packaging_tools.sh install_additional_depe
ARG AIRFLOW_PIP_VERSION=25.2
# ARG AIRFLOW_PIP_VERSION="git+https://github.com/pypa/pip.git@main"
ARG AIRFLOW_SETUPTOOLS_VERSION=80.9.0
ARG AIRFLOW_UV_VERSION=0.8.4
ARG AIRFLOW_UV_VERSION=0.8.8
# TODO(potiuk): automate with upgrade check (possibly)
ARG AIRFLOW_PRE_COMMIT_VERSION="4.2.0"
ARG AIRFLOW_PRE_COMMIT_VERSION="4.3.0"
ARG AIRFLOW_PRE_COMMIT_UV_VERSION="4.1.4"

ENV AIRFLOW_PIP_VERSION=${AIRFLOW_PIP_VERSION} \
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ Airflow is not a streaming solution, but it is often used to process real-time d

Apache Airflow is tested with:

| | Main version (dev) | Stable version (3.0.4) |
| | Main version (dev) | Stable version (3.0.5) |
|------------|------------------------|------------------------|
| Python | 3.9, 3.10, 3.11, 3.12 | 3.9, 3.10, 3.11, 3.12 |
| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) |
Expand Down Expand Up @@ -177,15 +177,15 @@ them to the appropriate format and workflow that your tool requires.


```bash
pip install 'apache-airflow==3.0.1' \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.0.1/constraints-3.9.txt"
pip install 'apache-airflow==3.0.5' \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.0.5/constraints-3.9.txt"
```

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

```bash
pip install 'apache-airflow[postgres,google]==3.0.1' \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.0.1/constraints-3.9.txt"
pip install 'apache-airflow[postgres,google]==3.0.5' \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.0.5/constraints-3.9.txt"
```

For information on installing provider distributions, check
Expand Down Expand Up @@ -299,7 +299,7 @@ Apache Airflow version life cycle:

| Version | Current Patch/Minor | State | First Release | Limited Maintenance | EOL/Terminated |
|-----------|-----------------------|-----------|-----------------|-----------------------|------------------|
| 3 | 3.0.4 | Supported | Apr 22, 2025 | TBD | TBD |
| 3 | 3.0.5 | Supported | Apr 22, 2025 | TBD | TBD |
| 2 | 2.11.0 | Supported | Dec 17, 2020 | Oct 22, 2025 | Apr 22, 2026 |
| 1.10 | 1.10.15 | EOL | Aug 27, 2018 | Dec 17, 2020 | June 17, 2021 |
| 1.9 | 1.9.0 | EOL | Jan 03, 2018 | Aug 27, 2018 | Aug 27, 2018 |
Expand Down
Loading
Loading