potiuk opened a new pull request, #71165:
URL: https://github.com/apache/airflow/pull/71165

   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.
   
   Two things had to change, because the second is what the first would 
otherwise have papered over:
   
   - `get_all_provider_ids()` grows an `exclude_not_ready_providers` flag, and 
the pyproject generator passes it, so a not-ready provider is no longer listed 
as a distribution in `all` and no longer gets an extra of its own.
   - The self-referencing entry inside `all` — 
`apache-airflow[async,pandas,...]` — was filtered against `all_providers`, i.e. 
against the *included* providers. Excluding a provider from that list therefore 
moved its extra into the self-reference rather than dropping it, and `all` 
would still have pulled the provider in through the side door. It is now 
filtered against every provider id whatever its state.
   
   Non-provider extras are unaffected: `async`, `cloudpickle`, `graphviz`, 
`kerberos`, `ldap`, `pandas`, `polars`, `sentry`, `statsd` and the rest are all 
still there, as is `apache-airflow-core[all]`. Regenerating twice produces no 
further change.
   
   ### Behaviour change worth noting
   
   `[dependency-groups] dev` includes `apache-airflow[all]`, so the two 
not-ready providers lose their `extra == 'all'` edge in `uv.lock` — that is 
what the lock diff is. They are `editable = "providers/..."` entries resolved 
from the workspace, so this was never a resolution problem locally; it only 
bites when `[all]` is resolved against PyPI.
   
   CI and breeze are unaffected: providers are installed with `uv sync 
--all-packages` (`install_airflow_when_building_images.sh`, 
`entrypoint_ci.sh`), which installs every workspace member regardless of state. 
Source-providers constraints are unaffected too — they freeze the installed 
environment and never reference `[all]`.
   
   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?
   
   - [X] Yes — Claude Opus 5 (1M context)
   
   Generated-by: Claude Opus 5 (1M context) following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to