Skip to content

Keep not-ready providers out of the all extra - #71165

Merged
potiuk merged 1 commit into
mainfrom
exclude-not-ready-providers-from-all
Aug 5, 2026
Merged

Keep not-ready providers out of the all extra#71165
potiuk merged 1 commit into
mainfrom
exclude-not-ready-providers-from-all

Conversation

@potiuk

@potiuk potiuk commented Aug 5, 2026

Copy link
Copy Markdown
Member

The all extra of the apache-airflow meta-package was generated from every provider in the source tree that is not suspended, so it also named the not-ready ones. A not-ready provider has never been published, which makes the extra impossible to satisfy against PyPI: there is no version of apache-airflow-providers-ibm-mq to resolve to.

That is what broke constraints generation for 3.3.1rc1:

Because there are no versions of apache-airflow-providers-ibm-mq{...} and
apache-airflow[all]==3.3.0 depends on apache-airflow-providers-ibm-mq{...}>=0.1.0,
we can conclude that apache-airflow[all]==3.3.0 cannot be used.

ibm.mq and common.dataquality are both state: not-ready; apache.beam is suspended and was already excluded.

Only the extras change

The generator now works from two lists, because the sections it writes describe two different things:

  • all_providers (suspended excluded) still drives the mypy paths, the uv workspace members and [tool.uv.sources]. A not-ready provider lives in the source tree, so mypy has to type-check it and uv has to keep it in the workspace - which is how CI installs it via uv sync --all-packages.
  • released_providers (suspended and not-ready excluded) drives the extras: the per-provider extras and the distributions listed in all.

The self-referencing entry inside all - apache-airflow[async,pandas,...] - needed fixing too. It was filtered against all_providers, i.e. against the included providers, so excluding a provider from that list moved its extra into the self-reference rather than dropping it, and all would still have reached the provider through the side door. It is now filtered against every provider id whatever its state.

Non-provider extras are untouched: async, cloudpickle, graphviz, kerberos, ldap, pandas, polars, sentry, statsd and the rest, plus apache-airflow-core[all]. Regenerating twice produces no further change.

Effect on uv.lock

The two providers lose their extra == 'all' and per-provider extra edges, and drop out of provides-extras. Their [[package]] entries and workspace membership stay, so uv sync --all-packages still installs them. Relocked with the pinned AIRFLOW_UV_VERSION (0.11.29).

[dependency-groups] dev includes apache-airflow[all], so that group alone no longer pulls the two in; the workspace sync that CI and breeze use does.

It also fixes dev/get_devel_deps.sh, which installs apache-airflow[all]==<version> from PyPI and would hit the same unsatisfiable resolution.

Was generative AI tooling used to co-author this PR?
  • Yes — Claude Opus 5 (1M context)

Generated-by: Claude Opus 5 (1M context) following the guidelines

@potiuk potiuk added this to the Airflow 3.3.1 milestone Aug 5, 2026
@potiuk
potiuk force-pushed the exclude-not-ready-providers-from-all branch from a0de5f4 to 9307f1f Compare August 5, 2026 09:22
A not-ready provider has never been published, so naming it in an extra makes
that extra impossible to satisfy - there is no version on PyPI to resolve to.
It broke constraints generation for 3.3.1rc1, where apache-airflow[all] could
not resolve because it required apache-airflow-providers-ibm-mq.

Only the extras change. The source tree still holds those providers, so they
stay in the workspace and under mypy - which is how CI installs and checks them.
@potiuk
potiuk force-pushed the exclude-not-ready-providers-from-all branch from 9307f1f to 429c669 Compare August 5, 2026 09:24
@potiuk
potiuk requested a review from vatsrahul1001 August 5, 2026 09:26
@potiuk
potiuk merged commit fb459de into main Aug 5, 2026
5 checks passed
@potiuk
potiuk deleted the exclude-not-ready-providers-from-all branch August 5, 2026 09:32
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-3-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

Status Branch Result
v3-3-test Commit Link

You can attempt to backport this manually by running:

cherry_picker fb459de v3-3-test

This should apply the commit to the v3-3-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

potiuk added a commit that referenced this pull request Aug 5, 2026
…71167)

A not-ready provider has never been published, so naming it in an extra makes
that extra impossible to satisfy - there is no version on PyPI to resolve to.
It broke constraints generation for 3.3.1rc1, where apache-airflow[all] could
not resolve because it required apache-airflow-providers-ibm-mq.

Only the extras change. The source tree still holds those providers, so they
stay in the workspace and under mypy - which is how CI installs and checks them.
(cherry picked from commit fb459de)
vatsrahul1001 pushed a commit that referenced this pull request Aug 5, 2026
…71167)

A not-ready provider has never been published, so naming it in an extra makes
that extra impossible to satisfy - there is no version on PyPI to resolve to.
It broke constraints generation for 3.3.1rc1, where apache-airflow[all] could
not resolve because it required apache-airflow-providers-ibm-mq.

Only the extras change. The source tree still holds those providers, so they
stay in the workspace and under mypy - which is how CI installs and checks them.
(cherry picked from commit fb459de)
dabla pushed a commit to dabla/airflow that referenced this pull request Aug 14, 2026
A not-ready provider has never been published, so naming it in an extra makes
that extra impossible to satisfy - there is no version on PyPI to resolve to.
It broke constraints generation for 3.3.1rc1, where apache-airflow[all] could
not resolve because it required apache-airflow-providers-ibm-mq.

Only the extras change. The source tree still holds those providers, so they
stay in the workspace and under mypy - which is how CI installs and checks them.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants