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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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