Skip to content

Drop support for Airflow < 2.10#2276

Closed
jedcunningham wants to merge 2 commits into
astronomer:mainfrom
jedcunningham:drop_old_airflow_versions
Closed

Drop support for Airflow < 2.10#2276
jedcunningham wants to merge 2 commits into
astronomer:mainfrom
jedcunningham:drop_old_airflow_versions

Conversation

@jedcunningham
Copy link
Copy Markdown
Member

Description

Neither Runtime or Apache Airflow support 2.9 or earlier Airflow versions any longer, so we can drop support per our policy.

This lets us drop 2.6-2.9, and a number of special cases to support those versions.

Related Issue(s)

None.

Breaking Change?

🤷

Checklist

  • I have made corresponding changes to the documentation (if required)
  • I have added tests that prove my fix is effective or that my feature works

Neither Runtime or Apache Airflow support 2.9 or earlier Airflow
versions any longer, so we can drop support per our policy.
Copilot AI review requested due to automatic review settings January 21, 2026 20:31
@netlify
Copy link
Copy Markdown

netlify Bot commented Jan 21, 2026

Deploy Preview for astronomer-cosmos ready!

Name Link
🔨 Latest commit 15524bf
🔍 Latest deploy log https://app.netlify.com/projects/astronomer-cosmos/deploys/69724949a06e2e0008a65fce
😎 Deploy Preview https://deploy-preview-2276--astronomer-cosmos.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes support for Apache Airflow versions 2.6 through 2.9, bringing the minimum supported version to 2.10.0. This cleanup allows removal of various compatibility checks and workarounds that were previously needed for older Airflow versions.

Changes:

  • Updated minimum Airflow version from 2.6.0 to 2.10.0 in dependencies
  • Removed AIRFLOW_IO_AVAILABLE setting and related checks (Object Storage is available in all supported versions)
  • Removed PARTIALLY_SUPPORTED_AIRFLOW_VERSIONS constant and associated test skips for Airflow 2.9.0/2.9.1
  • Cleaned up version-specific installation logic and test matrix configurations

Reviewed changes

Copilot reviewed 32 out of 32 changed files in this pull request and generated no comments.

Show a summary per file
File Description
pyproject.toml Updated minimum Airflow dependency to 2.10.0 and removed 2.6-2.9 from test matrix
cosmos/settings.py Removed AIRFLOW_IO_AVAILABLE flag no longer needed with minimum version 2.10
cosmos/constants.py Removed PARTIALLY_SUPPORTED_AIRFLOW_VERSIONS list for 2.9.0/2.9.1
cosmos/config.py Simplified manifest path handling by removing AIRFLOW_IO_AVAILABLE checks
cosmos/cache.py Removed AIRFLOW_IO_AVAILABLE checks from remote cache configuration
cosmos/io.py Removed AIRFLOW_IO_AVAILABLE checks from remote target path configuration
cosmos/operators/local.py Simplified dataset emission logic by removing version checks for 2.10+
cosmos/operators/_asynchronous/bigquery.py Removed AIRFLOW_IO_AVAILABLE check and version comparison for 2.10+
tests/test_io.py Removed AIRFLOW_IO_AVAILABLE test skips and related unavailability test
tests/test_config.py Removed AIRFLOW_IO_AVAILABLE test skips and unavailability test
tests/test_cache.py Removed AIRFLOW_IO_AVAILABLE test skips and unavailability test
tests/test_example_dags.py Removed version-specific logic for unsupported Airflow versions
tests/operators/test_local.py Removed PARTIALLY_SUPPORTED_AIRFLOW_VERSIONS checks and pre-2.10 tests
tests/operators/test_watcher.py Updated test mock versions from 2.7/2.9 to 2.10
tests/operators/_watcher/test_triggerer.py Updated test mock versions from 2.9 to 2.10
tests/operators/_asynchronous/test_bigquery.py Removed version check skipif for 2.10+
tests/operators/_asynchronous/test_base.py Removed version check skipif and unused imports
tests/dbt/test_graph.py Removed AIRFLOW_IO_AVAILABLE test skips
tests/airflow/test_graph.py Removed version check skipif for 2.9+ display_name feature
scripts/test/pre-install-airflow.sh Removed version-specific installation logic for 2.6-2.9
.github/workflows/test.yml Removed 2.6-2.9 from test matrix and related exclusions
docs/requirements.txt Updated minimum Airflow version to 2.10.0
docs/getting_started/async-execution-mode.rst Removed version requirement note (now implied by minimum version)
docs/configuration/scheduling.rst Removed Airflow 2.9 and below section and version-specific mentions
docs/configuration/render-config.rst Removed version note about display_name availability
docs/configuration/parsing-methods.rst Removed version requirement note for remote manifest paths
docs/configuration/lineage.rst Simplified installation/configuration instructions
docs/configuration/cosmos-conf.rst Removed version introduction notes for Object Storage
docs/configuration/callbacks.rst Removed version requirement note
docs/compatibility-policy.rst Updated minimum and supported Airflow versions
dev/dags/example_virtualenv.py Removed version note from comment
dev/dags/cosmos_callback_dag.py Removed version note from comment

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tatiana
Copy link
Copy Markdown
Collaborator

tatiana commented Jan 22, 2026

Hi @jedcunningham, thanks a lot for working on this.

We will review and update Cosmos' policy towards Airflow compatibility in this document:
https://github.com/astronomer/astronomer-cosmos/blob/main/docs/compatibility-policy.rst#currently-supported-versions

I just checked the Astro Runtime lifecycle schedule. It seems we offer basic support to AF 2.7 until the end of this month and basic support to AF 2.9 until October 2026:
https://www.astronomer.io/docs/runtime/runtime-version-lifecycle-policy#astro-runtime-lifecycle-schedule
Screenshot 2026-01-22 at 14 06 59

From a maintenance cost perspective, I'd say it is low to continue support at 2.9 for a few months, but let's confirm with @yetudada, and we'll let you know if we need any adjustments to the PR's scope.

In the meantime, so we can see a relatively green CI, I was wondering if you could temporarily update the GH using something similar to: 0fd4b54
It would be great to see a dedicated GH Job run all tests against this branch and confirm that the relevant tests pass.

@jedcunningham
Copy link
Copy Markdown
Member Author

@tatiana I think there is a bit of ambiguity now. Historically we had a single "support" date for Runtime, which was when we stopped releasing new images with bugfixes and CVE fixes, etc. Now that is "end of maintenance". There was no equivalent of the current "basic support".

Basic suppport: "Astronomer Support will continue to accept support tickets for an additional period after a Runtime version becomes unmaintained."

I'd argue cosmos should stop supporting a version when it hits "end of maintenance" instead of "end of basic support".

My 2c, let me know :)

@tatiana
Copy link
Copy Markdown
Collaborator

tatiana commented Jan 22, 2026

@jedcunningham We are in a sort of delicate moment migrating some customers from older versions of Airflow, so we may decide to be more conservative on Cosmos than in the Airflow community / Astro Runtime - for now. But I agree with you, we should review and focus on what is actively developed and maintained. We'll make sure we involve the right stakeholders before deciding on this one

@tatiana
Copy link
Copy Markdown
Collaborator

tatiana commented Jan 26, 2026

Hi @jedcunningham — thanks so much for putting this PR together, really appreciate the work you’ve put into it! 🙌

I spoke with @yetudada today, and we aligned on the following approach:

  • Cosmos support for Airflow versions will be compatible at least through Astronomer’s “End of basic support.”
    I'll update the project compatibility policy accordingly.

Based on that, our current plan is:

  • Cosmos 1.14.0 (currently targeted for March/April 2026) will drop support for Airflow 2.7
  • The first minor/major Cosmos release after October 2026 will drop support for Airflow 2.9
    And so on.

If you’re open to it, it would be great to adjust the scope of this PR to focus specifically on removing support for Airflow 2.7. If not, no worries at all — we can close this PR and open more targeted ones as we get closer to those milestones.

Thanks again!

tatiana added a commit that referenced this pull request Jan 26, 2026
Follow up on product alignment regarding the supported Apache Airflow versions.

Relates to #2276
@jedcunningham
Copy link
Copy Markdown
Member Author

No problem, opened #2286 to fix up the wording.

I'll also open another PR for the ones we can drop now.

tatiana added a commit that referenced this pull request Jan 26, 2026
Follow up on product alignment regarding the supported Apache Airflow
versions.

Relates to #2276
tatiana pushed a commit that referenced this pull request Jan 27, 2026
Also, a couple of other minor updates to fix the wording around airflow
support.

## Related Issue(s)

#2276 (comment)
tatiana added a commit that referenced this pull request Feb 5, 2026
Neither Runtime or Apache Airflow support 2.8 or earlier Airflow
versions any longer, so we can drop support per our policy.

This lets us drop 2.6-2.8, and a number of special cases to support
those versions.

Related: #2276 

## Breaking Change?

Yes, we need to highlight this in our changelog.

---------

Co-authored-by: Tatiana Al-Chueyr <tatiana.alchueyr@gmail.com>
Co-authored-by: Pankaj Koti <pankajkoti699@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants