← 输入框|github.com|刷新
Skip to content

extra != does not work as expected #6583

Closed

Description

@konstin

#6476 has recently added (https://github.com/feast-dev/feast/pull/6476/changes#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711L26) the following lines to pyproject.toml:

feast/pyproject.toml

Lines 26 to 27 in f296d4b

"pyarrow>=21.0.0; extra != 'flink'",
"pyarrow>=16.1.0,<21.0.0; extra == 'flink'",

The extra != 'flink'" of this does not work as expected: Neither pip or uv support extra != markers, with uv first evaluating feast on its own without the base package and pip always evaluating it to true. As we're in the process of formally removing extra != due to being broken by design (https://discuss.python.org/t/ban-negative-extras-for-extras-marker/108022), we found this one usage and wanted give you a heads up about this feature being broken.

When you try to [uv] pip install feast[flink], it currently downgrades to installing 0.63.0, to avoid the unsatisfiable 0.64.0.

CC @XuananLe

Activity

  1. konstin commented on Jul 4, 2026

    @konstin
    Author

    For context, the tool output:

    $ uv pip install --no-build "feast[flink]"
    Resolved 68 packages in 94ms
    Prepared 33 packages in 799ms
    Installed 68 packages in 30ms
    [...]
     + feast==0.63.0
    [...]
    warning: The package `feast==0.63.0` does not have an extra named `flink`
    
    $ uv pip install --no-build "feast[flink]==0.64.0"
      × No solution found when resolving dependencies:
      ╰─▶ Because feast[flink]==0.64.0 depends on pyarrow>=16.1.0,<21.0.0 and feast==0.64.0 depends on pyarrow{python_version < '0'}>=21.0.0, we can conclude that
          feast==0.64.0 and feast[flink]==0.64.0 are incompatible.
          And because you require feast[flink]==0.64.0, we can conclude that your requirements are unsatisfiable.
    
    $ pip install --only-binary :all: "feast[flink]"
    [...]
    Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 PyYAML-6.0.3 SQLAlchemy-2.0.51 annotated-doc-0.0.4 annotated-types-0.7.0 anyio-4.14.1 ast-serialize-0.6.0 attrs-26.1.0 bigtree-1.5.1 certifi-2026.6.17 charset_normalizer-3.4.7 click-8.4.2 cloudpickle-3.1.2 colorama-0.4.6 dask-2026.6.0 dill-0.3.9 fastapi-0.139.0 feast-0.63.0 fsspec-2026.6.0 greenlet-3.5.3 gunicorn-26.0.0 h11-0.16.0 httptools-0.8.0 idna-3.18 jsonschema-4.26.0 jsonschema-specifications-2025.9.1 librt-0.12.0 locket-1.0.0 mmh3-5.2.1 mypy-2.1.0 mypy_extensions-1.1.0 numpy-2.5.0 packaging-26.2 pandas-2.3.3 partd-1.4.2 pathspec-1.1.1 prometheus_client-0.25.0 protobuf-7.35.1 psutil-7.2.2 pyarrow-24.0.0 pydantic-2.13.4 pydantic-core-2.46.4 pygments-2.20.0 pyjwt-2.13.0 python-dateutil-2.9.0.post0 python-dotenv-1.2.2 pytz-2026.2 referencing-0.37.0 requests-2.34.2 rpds-py-2026.6.3 six-1.17.0 starlette-1.3.1 tabulate-0.10.0 tenacity-8.5.0 toml-0.10.2 toolz-1.1.0 tqdm-4.68.3 typeguard-4.5.2 typing-extensions-4.16.0 typing-inspection-0.4.2 tzdata-2026.2 urllib3-2.7.0 uvicorn-0.34.0 uvicorn-worker-0.3.0 uvloop-0.22.1 watchfiles-1.2.0 websockets-16.0
    [...]
    
    $ pip install --only-binary :all: "feast[flink]==0.64.0"
    [...]
    ERROR: Cannot install feast and feast[flink]==0.64.0 because these package versions have conflicting dependencies.
                                                                                                                                                                        
    The conflict is caused by:
        feast 0.64.0 depends on pyarrow>=21.0.0; extra != "flink"
        feast[flink] 0.64.0 depends on pyarrow<21.0.0 and >=16.1.0; extra == "flink"
    [...]
    
  2. shuchu commented on Jul 4, 2026

    @shuchu
    Collaborator

    Thank you for the info. @konstin . I'll keep my eyes open on this issue.

  3. pinned this issue on Jul 4, 2026
  4. shuchu commented on Jul 7, 2026

    @shuchu
    Collaborator

    @franciscojavierarceo @ntkathole @HaoXuAI @XuananLe Regarding this issue, I'm thinking of putting the feastt[flink] feature into a dedicate branch like "feast/flink" temporary and waiting for the pyflink to support pyarrow >= 21.0. what's you guys' opinion? as proposed, I will do:
    1, create a new branch to store the feature of pyflink
    2, revert the pyflink (and related) PRs. Update the document and make a notice about this change.

  5. ntkathole commented on Jul 14, 2026

    @ntkathole
    Member

    @shuchu we can also do broad base + upper-bound in extra:

    In [project.dependencies]:

    "pyarrow>=16.1.0",

    In [project.optional-dependencies.flink]:

    "pyarrow<21.0.0",

  6. unpinned this issue on Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions