jroachgolf84 opened a new issue, #70084:
URL: https://github.com/apache/airflow/issues/70084

   ### What workaround was applied
   
   `pyproject.toml`'s `cloudpickle` extra was capped to 
`cloudpickle>=2.2.1,<3.1.2` (previously unbounded `>=2.2.1`).
   
   ### Why
   
   This is a workaround for a dependency-resolution deadlock, not a real 
Airflow bug. Root cause, investigated for #70020:
   
   - Airflow's `all` extra includes the `cloudpickle` extra (unbounded floor, 
no ceiling).
   - `apache-airflow-providers-snowflake>=6.5.0` requires 
`snowflake-snowpark-python` on Python >=3.12.
   - Every released version of `snowflake-snowpark-python` (up to at least 
1.53.1) pins `cloudpickle<=3.1.1` in its own metadata.
   - `cloudpickle==3.1.2` (the latest PyPI release) is incompatible with that 
cap.
   - When constraints are generated with `uv ... --resolution highest`, uv 
tries to satisfy "highest" for both the bare `cloudpickle` extra and the 
snowflake provider simultaneously. Since they're mutually incompatible at the 
top, instead of settling on `cloudpickle==3.1.1` (the highest version that 
still satisfies both), uv's backtracking downgrades 
`apache-airflow-providers-snowflake` all the way down to `6.4.0` — the last 
release with no snowpark requirement at all on Python 3.12.
   
   This was confirmed by reproducing the resolution directly against the 
released `constraints-3.3.0` files with `uv pip install`, and by reproducing 
the fix (capping cloudpickle resolves the conflict and lets `uv` pick the 
latest snowflake provider release again).
   
   ### Follow-up work
   
   Remove the `<3.1.2` cap on `cloudpickle` in `pyproject.toml` once 
`snowflake-snowpark-python` relaxes its own `cloudpickle` pin to allow 
`>=3.1.2` (or whatever the current cloudpickle release is at that time).
   
   ### Acceptance criteria
   
   - A released version of `snowflake-snowpark-python` no longer caps 
`cloudpickle<=3.1.1`.
   - Regenerating constraints (`breeze release-management 
generate-constraints`) with the cap removed no longer regresses 
`apache-airflow-providers-snowflake` to an old version on any supported Python 
version.
   
   ### Related
   
   - #70020 (the user-facing symptom: `apache-airflow-providers-snowflake` 
pinned to a >1-year-old version in the `constraints-3.3.0` files)


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