Skip to content

portalocker and qdrand-client cannot be upgraded #52545

Closed

Description

@potiuk

portalocker and qdrant cannot be upgraded together

Activity

  1. converted this from a draft issue on Jun 30, 2025
  2. eladkal commented on Jul 1, 2025

    @eladkal
    Contributor

    From what I can tell we set portalocker as dependency due to problems with upstream library. Airflow doesnt require portalocker as direct dependcy.

  3. potiuk commented on Jul 1, 2025

    @potiuk
    MemberAuthor

    From what I can tell we set portalocker as dependency due to problems with upstream library. Airflow doesnt require portalocker as direct dependcy.

    This is a transitive dependency - and we lower-bind it, so the fact that we are including it here is only "helping" but not preventing the upgrade.

     --- Explaining for portalocker (current: 2.10.1, latest: 3.2.0) ---
      uv sync output for portalocker==3.2.0:
      warning: The release specifier (`~=3.10`) contains a compatible release match without a patch version. This will be interpreted as `>=3.10, <4`. Did you mean `~=3.10.0` to freeze the minor version?
        × No solution found when resolving dependencies for split
        │ (python_full_version == '3.12.*' and platform_machine == 'x86_64' and
        │ sys_platform == 'darwin'):
        ╰─▶ Because all of:
                qdrant-client>=1.10.1,<=1.13.3
                qdrant-client>=1.14.1
            depend on portalocker>=2.7.0,<3.0.0 and only the following versions of
            qdrant-client are available:
                qdrant-client<=1.10.1
                qdrant-client==1.11.0
                qdrant-client==1.11.1
                qdrant-client==1.11.2
                qdrant-client==1.11.3
                qdrant-client==1.12.0
                qdrant-client==1.12.1
                qdrant-client==1.12.2
                qdrant-client==1.13.0
                qdrant-client==1.13.1
                qdrant-client==1.13.2
                qdrant-client==1.13.3
                qdrant-client==1.14.0
                qdrant-client==1.14.1
                qdrant-client==1.14.2
                qdrant-client==1.14.3
            we can conclude that all of:
                qdrant-client>=1.10.1,<1.14.0
                qdrant-client>1.14.0
            depend on portalocker>=2.7.0,<3.0.0.
            And because qdrant-client==1.14.0 was yanked (reason: Broken
            dependency), we can conclude that qdrant-client>=1.10.1 depends on
            portalocker>=2.7.0,<3.0.0.
            And because apache-airflow-providers-qdrant depends on
            qdrant-client>=1.10.1 and apache-airflow depends on portalocker==3.2.0,
            we can conclude that apache-airflow-providers-qdrant and
            apache-airflow are incompatible.
            And because your workspace requires apache-airflow and
            apache-airflow-providers-qdrant, we can conclude that your workspace's
            requirements are unsatisfiable.
      
            hint: While the active Python version is 3.10, the resolution failed for
            other Python versions supported by your project. Consider limiting your
            project's supported Python versions using `requires-python`.
    

    It's clear that it's the "clash" between latest portalocker and latest qdrant is causing portalocker not being upgraded:

      qdrant-client>=1.10.1,<=1.13.3
                qdrant-client>=1.14.1
            depend on portalocker>=2.7.0,<3.0.0 and only the following versions of
    

    So yes. It's qdrant-client that does not allow us to upgrade portalocker and the fact that we add it directly has no impact on it.

  4. potiuk commented on Jul 1, 2025

    @potiuk
    MemberAuthor

    A lot of our dependencies are transitive - like portalocker. Generally "lower-bounds" do not limit from upgrading to newer versions, and the reason we have them is to help pip to not go into backtracking loop, because of it's resolution algorithm being imperfect. We can attempt to remove direct portalocker reference in our pypproject.toml when pip 25.2 gets released with the new resolvlib 1.2 that is supposed to better handle the situation where too many "possible" dependencies are causing backtracking - but it will not help in this case. Here, only releasing new qdrant-client that will not limit portalocker might help.

  5. potiuk commented on Jul 1, 2025

    @potiuk
    MemberAuthor

    Those are current requirements of latest released qdrant-client - 1.14.1. Clearly it has portalocker (>=2.7.0,<3.0.0) that absolutely prevents us from installing portalocker 3.2.0 (as uv sync above helpfully explained).

    Requires-Dist: fastembed (>=0.7,<0.8) ; extra == "fastembed"
    Requires-Dist: fastembed-gpu (>=0.7,<0.8) ; extra == "fastembed-gpu"
    Requires-Dist: grpcio (>=1.41.0)
    Requires-Dist: httpx[http2] (>=0.20.0)
    Requires-Dist: numpy (>=1.21) ; python_version >= "3.10" and python_version < "3.12"
    Requires-Dist: numpy (>=1.21,<2.1.0) ; python_version < "3.10"
    Requires-Dist: numpy (>=1.26) ; python_version == "3.12"
    Requires-Dist: numpy (>=2.1.0) ; python_version >= "3.13"
    Requires-Dist: portalocker (>=2.7.0,<3.0.0)
    Requires-Dist: protobuf (>=3.20.0)
    Requires-Dist: pydantic (>=1.10.8,!=2.0.*,!=2.1.*,!=2.2.0)
    Requires-Dist: urllib3 (>=1.26.14,<3)
    
  6. eladkal commented on Aug 7, 2025

    @eladkal
    Contributor

    Solved by #54066

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 problems

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions