Skip to content

Remove cloudpickle<3.1.2 cap once snowflake-snowpark-python allows newer cloudpickle #70084

Description

@jroachgolf84

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:dependenciesIssues related to dependencies problemsneeds-triagelabel for new issues that we didn't triage yetprovider:snowflakeIssues related to Snowflake provider

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions