Dev-iL commented on code in PR #74696:
URL: https://github.com/apache/airflow/pull/74696#discussion_r4310851664


##########
pyproject.toml:
##########
@@ -119,7 +119,7 @@ apache-airflow = "airflow.__main__:main"
     "apache-airflow-providers-apache-beam>=5.8.1"
 ]
 "apache.cassandra" = [
-    "apache-airflow-providers-apache-cassandra>=3.7.0; python_version 
!=\"3.14\""
+    "apache-airflow-providers-apache-cassandra>=3.7.0"

Review Comment:
   I tried raising the floor and backed it out — it can't work in this PR, and 
the reason turns out to be structural rather than a matter of picking the right 
number.
   
   `generate_constraints_pypi_providers` resolves with every active provider 
pinned exactly at the newest version PyPI holds for the Python being built:
   
   ```
   uv pip install --exact --strict --resolution highest \
       apache-airflow[all]==<dev version> \
       <every active provider>==<newest installable on PyPI> \
       --find-links file://dist
   ```
   
   On 3.11-3.13 that hands the resolver 
`apache-airflow-providers-apache-cassandra==3.10.1`, which contradicts any 
extras floor above 3.10.1 outright. The pin comes from PyPI rather than from 
`dist`, so building the provider locally doesn't help, and no choice of number 
does either. On 3.14 `find_newest_version_in_pypi` returns `None`, since every 
published release carries `!=3.14.*`, so Cassandra is left unpinned and 
resolution falls back to PyPI plus the locally built wheel — which is why the 
step passes at `>=3.7.0` today and failed on all four Pythons at `>=3.11.0`.
   
   The mechanism that *would* fit is `# use next version`: leave the floor 
where it is and let the release automation rewrite it once the provider version 
has been bumped, so CI never sees a floor that isn't published. It doesn't 
reach here, for two reasons:
   
   - `update_providers_with_next_version_comment()` globs 
`AIRFLOW_PROVIDERS_ROOT_PATH/**/pyproject.toml`, and the meta-package isn't 
under `providers/`, so it is never scanned.
   - The extras lines are regenerated by `update_airflow_pyproject_toml.py`, 
whose line format carries only the `MIN_VERSION_OVERRIDE` comment. I tried 
adding `# use next version` to the Cassandra line and the hook stripped it on 
the next run.
   
   Extending that scan to the root `pyproject.toml` and having the generator 
preserve the comment looks like it would close the gap and make exactly the 
change you asked for possible. Happy to open a tracking issue for it, or pick 
it up as a follow-up, if that reading seems right to you.
   
   Until then the floor has to follow the release rather than lead it. #62924 
took the same route when it dropped the `python_version != "3.13"` guard from 
the FAB extras and left `>=2.2.0` in place.
   
   That does leave the gap you identified: until the wave ships, a 3.14 install 
resolves back to 3.9.2, the newest release predating the exclusion. If you'd 
rather not carry it, I'm happy to cut this as Vespa-only and bring Cassandra 
back once the provider is on PyPI with 3.14 support — Vespa needs nothing 
either way, since no release excluding 3.14 was ever published for it. 
Otherwise this is ready as it stands.
   
   ---
   Drafted-by: Claude Code (Opus 5); reviewed by @Dev-iL before posting



-- 
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