Skip to content

Build not-ready providers from source when generating PyPI constraints - #71162

Closed
vatsrahul1001 wants to merge 1 commit into
mainfrom
constraints-build-not-ready-providers-from-source
Closed

Build not-ready providers from source when generating PyPI constraints#71162
vatsrahul1001 wants to merge 1 commit into
mainfrom
constraints-build-not-ready-providers-from-source

Conversation

@vatsrahul1001

Copy link
Copy Markdown
Contributor

The release constraints resolution (generate_constraints_pypi_providers) installs apache-airflow[all], which depends on every non-suspended provider. not-ready providers — currently ibm.mq and common.dataquality — are never published to PyPI, so the PyPI-only release path (pypi-providers-only, which skips building providers into dist) cannot satisfy them and the Release constraints workflow fails with No solution found:

× No solution found: 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

This installs the not-ready providers from local source (mirroring the existing ./airflow-ctl path install) so the resolution stays solvable. pip freeze renders a path install as a ... @ file://... line, which freeze_distributions_to_file already drops, so a not-ready provider is never pinned in the released constraints file.

not-ready is exactly the set of providers that [all] requires (it is generated from all non-suspended providers) but that are absent from PyPI — suspended providers are already excluded from [all]. Their only extra deps (asgiref, common-compat, apache-airflow) are already core/ready, so nothing new is pinned. In the normal CI path the not-ready providers are already built into dist, so this is a no-op there.

This currently blocks the 3.3.1 release-constraints run.

Was generative AI tooling used to co-author this PR?
  • Yes — Claude Code (Opus 4.8)

Generated-by: Claude Code (Opus 4.8) following the guidelines

The release constraints resolution installs apache-airflow[all], which depends
on every non-suspended provider. not-ready providers (currently ibm.mq and
common.dataquality) are never published to PyPI, so the PyPI-only release path
cannot satisfy them and fails with "No solution found". Install them from local
source so the resolution stays solvable; pip freeze renders a path install as a
file:// line that is already dropped from the constraints file, so a not-ready
provider is never pinned in released constraints.
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.

1 participant