diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index d8e5e484bb..14d0b7d5ae 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -97,6 +97,7 @@ jobs: # There's a `git restore` in here because `make install-go-ci-dependencies` is actually messing up go.mod & go.sum. run: | pip install -U pip setuptools wheel twine + make install-protoc-dependencies make build-ui git status git restore go.mod go.sum diff --git a/Makefile b/Makefile index 78a0b6d328..8a9f643967 100644 --- a/Makefile +++ b/Makefile @@ -52,13 +52,16 @@ install-python-ci-dependencies-uv-venv: uv pip install --no-deps -e . python setup.py build_python_protos --inplace +install-protoc-dependencies: + pip install "protobuf<5" "grpcio-tools>=1.56.2,<2" "mypy-protobuf>=3.1" + lock-python-ci-dependencies: uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py$(PYTHON_VERSION)-ci-requirements.txt package-protos: cp -r ${ROOT_DIR}/protos ${ROOT_DIR}/sdk/python/feast/protos -compile-protos-python: +compile-protos-python: install-protoc-dependencies python setup.py build_python_protos --inplace install-python: @@ -69,12 +72,14 @@ lock-python-dependencies: uv pip compile --system --no-strip-extras setup.py --output-file sdk/python/requirements/py$(PYTHON_VERSION)-requirements.txt lock-python-dependencies-all: - pixi run --environment py39 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.9-requirements.txt" - pixi run --environment py39 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.9-ci-requirements.txt" - pixi run --environment py310 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.10-requirements.txt" - pixi run --environment py310 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.10-ci-requirements.txt" - pixi run --environment py311 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.11-requirements.txt" - pixi run --environment py311 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.11-ci-requirements.txt" + # Remove all existing requirements because we noticed the lock file is not always updated correctly. Removing and running the command again ensures that the lock file is always up to date. + rm -r sdk/python/requirements/* + pixi run --environment py39 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile -p 3.9 --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.9-requirements.txt" + pixi run --environment py39 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile -p 3.9 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.9-ci-requirements.txt" + pixi run --environment py310 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile -p 3.10 --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.10-requirements.txt" + pixi run --environment py310 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile -p 3.10 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.10-ci-requirements.txt" + pixi run --environment py311 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile -p 3.11 --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.11-requirements.txt" + pixi run --environment py311 --manifest-path infra/scripts/pixi/pixi.toml "uv pip compile -p 3.11 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.11-ci-requirements.txt" benchmark-python: IS_TEST=True python -m pytest --integration --benchmark --benchmark-autosave --benchmark-save-data sdk/python/tests diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index f09f3dded4..59e799ebab 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.10-ci-requirements.txt +# uv pip compile -p 3.10 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.10-ci-requirements.txt aiobotocore==2.15.0 # via feast (setup.py) aiohappyeyeballs==2.4.0 @@ -16,7 +16,7 @@ altair==4.2.2 # via great-expectations annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.5.0 # via # httpx # jupyter-server @@ -51,13 +51,13 @@ attrs==24.2.0 # aiohttp # jsonschema # referencing -azure-core==1.30.2 +azure-core==1.31.0 # via # azure-identity # azure-storage-blob azure-identity==1.17.1 # via feast (setup.py) -azure-storage-blob==12.22.0 +azure-storage-blob==12.23.0 # via feast (setup.py) babel==2.16.0 # via @@ -144,11 +144,11 @@ cryptography==42.0.8 # types-redis cython==3.0.11 # via thriftpy2 -dask[dataframe]==2024.8.2 +dask[dataframe]==2024.9.0 # via # feast (setup.py) # dask-expr -dask-expr==1.1.13 +dask-expr==1.1.14 # via dask db-dtypes==1.3.0 # via google-cloud-bigquery @@ -158,7 +158,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deltalake==0.19.2 +deltalake==0.20.0 # via feast (setup.py) deprecation==2.1.0 # via python-keycloak @@ -187,11 +187,11 @@ execnet==2.1.1 # via pytest-xdist executing==2.1.0 # via stack-data -fastapi==0.114.1 +fastapi==0.115.0 # via feast (setup.py) fastjsonschema==2.20.0 # via nbformat -filelock==3.16.0 +filelock==3.16.1 # via # snowflake-connector-python # virtualenv @@ -256,7 +256,7 @@ googleapis-common-protos[grpc]==1.65.0 # google-api-core # grpc-google-iam-v1 # grpcio-status -great-expectations==0.18.20 +great-expectations==0.18.21 # via feast (setup.py) grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable @@ -302,15 +302,15 @@ httpx==0.27.2 # feast (setup.py) # jupyterlab # python-keycloak -ibis-framework[duckdb]==9.4.0 +ibis-framework[duckdb]==9.5.0 # via # feast (setup.py) # ibis-substrait ibis-substrait==4.0.1 # via feast (setup.py) -identify==2.6.0 +identify==2.6.1 # via pre-commit -idna==3.8 +idna==3.10 # via # anyio # httpx @@ -321,7 +321,9 @@ idna==3.8 imagesize==1.4.1 # via sphinx importlib-metadata==8.5.0 - # via dask + # via + # build + # dask iniconfig==2.0.0 # via pytest ipykernel==6.29.5 @@ -372,7 +374,7 @@ jsonschema[format-nongpl]==4.23.0 # nbformat jsonschema-specifications==2023.12.1 # via jsonschema -jupyter-client==8.6.2 +jupyter-client==8.6.3 # via # ipykernel # jupyter-server @@ -438,7 +440,7 @@ mistune==3.0.2 # via # great-expectations # nbconvert -mmh3==4.1.0 +mmh3==5.0.0 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) @@ -506,6 +508,7 @@ packaging==24.1 # google-cloud-bigquery # great-expectations # gunicorn + # ibis-framework # ibis-substrait # ipykernel # jupyter-server @@ -570,8 +573,9 @@ proto-plus==1.24.0 # google-cloud-bigquery-storage # google-cloud-bigtable # google-cloud-datastore -protobuf==4.25.4 +protobuf==4.25.5 # via + # feast (setup.py) # google-api-core # google-cloud-bigquery-storage # google-cloud-bigtable @@ -590,11 +594,11 @@ psutil==5.9.0 # via # feast (setup.py) # ipykernel -psycopg[binary, pool]==3.2.1 +psycopg[binary, pool]==3.2.2 # via feast (setup.py) -psycopg-binary==3.2.1 +psycopg-binary==3.2.2 # via psycopg -psycopg-pool==3.2.2 +psycopg-pool==3.2.3 # via psycopg ptyprocess==0.7.0 # via @@ -629,12 +633,12 @@ pybindgen==0.22.1 # via feast (setup.py) pycparser==2.22 # via cffi -pydantic==2.9.1 +pydantic==2.9.2 # via # feast (setup.py) # fastapi # great-expectations -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via @@ -739,7 +743,7 @@ referencing==0.35.1 # jsonschema # jsonschema-specifications # jupyter-events -regex==2024.7.24 +regex==2024.9.11 # via # feast (setup.py) # parsimonious @@ -790,7 +794,7 @@ ruamel-yaml==0.17.40 # via great-expectations ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.4 +ruff==0.6.5 # via feast (setup.py) s3transfer==0.10.2 # via boto3 @@ -798,7 +802,7 @@ scipy==1.14.1 # via great-expectations send2trash==1.8.3 # via jupyter-server -setuptools==74.1.2 +setuptools==75.1.0 # via # grpcio-tools # jupyterlab @@ -826,7 +830,7 @@ sniffio==1.3.1 # httpx snowballstemmer==2.2.0 # via sphinx -snowflake-connector-python[pandas]==3.12.1 +snowflake-connector-python[pandas]==3.12.2 # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python @@ -846,9 +850,9 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sqlalchemy[mypy]==2.0.34 +sqlalchemy[mypy]==2.0.35 # via feast (setup.py) -sqlglot==25.18.0 +sqlglot==25.20.1 # via ibis-framework sqlite-vec==0.1.1 # via feast (setup.py) @@ -858,7 +862,7 @@ stack-data==0.6.3 # via ipython starlette==0.38.5 # via fastapi -substrait==0.22.0 +substrait==0.23.0 # via ibis-substrait tabulate==0.9.0 # via feast (setup.py) @@ -939,15 +943,15 @@ types-python-dateutil==2.9.0.20240906 # via # feast (setup.py) # arrow -types-pytz==2024.1.0.20240417 +types-pytz==2024.2.0.20240913 # via feast (setup.py) -types-pyyaml==6.0.12.20240808 +types-pyyaml==6.0.12.20240917 # via feast (setup.py) types-redis==4.6.0.20240903 # via feast (setup.py) types-requests==2.30.0.0 # via feast (setup.py) -types-setuptools==74.1.0.20240907 +types-setuptools==75.1.0.20240917 # via # feast (setup.py) # types-cffi @@ -986,7 +990,7 @@ tzlocal==5.2 # trino uri-template==1.3.0 # via jsonschema -urllib3==2.2.2 +urllib3==2.2.3 # via # feast (setup.py) # botocore @@ -1038,5 +1042,5 @@ xmltodict==0.13.0 # via moto yarl==1.11.1 # via aiohttp -zipp==3.20.1 +zipp==3.20.2 # via importlib-metadata diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index 1c6f53cf69..26eeca3529 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -1,8 +1,8 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.10-requirements.txt +# uv pip compile -p 3.10 --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.10-requirements.txt annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.5.0 # via # starlette # watchfiles @@ -25,17 +25,17 @@ cloudpickle==3.0.0 # via dask colorama==0.4.6 # via feast (setup.py) -dask[dataframe]==2024.8.2 +dask[dataframe]==2024.9.0 # via # feast (setup.py) # dask-expr -dask-expr==1.1.13 +dask-expr==1.1.14 # via dask dill==0.3.8 # via feast (setup.py) exceptiongroup==1.2.2 # via anyio -fastapi==0.114.1 +fastapi==0.115.0 # via feast (setup.py) fsspec==2024.9.0 # via dask @@ -45,7 +45,7 @@ h11==0.14.0 # via uvicorn httptools==0.6.1 # via uvicorn -idna==3.8 +idna==3.10 # via # anyio # requests @@ -61,14 +61,12 @@ locket==1.0.0 # via partd markupsafe==2.1.5 # via jinja2 -mmh3==4.1.0 +mmh3==5.0.0 # via feast (setup.py) mypy==1.11.2 # via sqlalchemy mypy-extensions==1.0.0 # via mypy -mypy-protobuf==3.6.0 - # via feast (setup.py) numpy==1.26.4 # via # feast (setup.py) @@ -88,19 +86,19 @@ partd==1.4.2 # via dask prometheus-client==0.20.0 # via feast (setup.py) -protobuf==4.25.4 - # via mypy-protobuf +protobuf==4.25.5 + # via feast (setup.py) psutil==6.0.0 # via feast (setup.py) pyarrow==17.0.0 # via # feast (setup.py) # dask-expr -pydantic==2.9.1 +pydantic==2.9.2 # via # feast (setup.py) # fastapi -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via feast (setup.py) @@ -131,7 +129,7 @@ six==1.16.0 # via python-dateutil sniffio==1.3.1 # via anyio -sqlalchemy[mypy]==2.0.34 +sqlalchemy[mypy]==2.0.35 # via feast (setup.py) starlette==0.38.5 # via fastapi @@ -151,8 +149,6 @@ tqdm==4.66.5 # via feast (setup.py) typeguard==4.3.0 # via feast (setup.py) -types-protobuf==5.27.0.20240907 - # via mypy-protobuf typing-extensions==4.12.2 # via # anyio @@ -165,7 +161,7 @@ typing-extensions==4.12.2 # uvicorn tzdata==2024.1 # via pandas -urllib3==2.2.2 +urllib3==2.2.3 # via requests uvicorn[standard]==0.30.6 # via feast (setup.py) @@ -175,5 +171,5 @@ watchfiles==0.24.0 # via uvicorn websockets==13.0.1 # via uvicorn -zipp==3.20.1 +zipp==3.20.2 # via importlib-metadata diff --git a/sdk/python/requirements/py3.11-ci-requirements.txt b/sdk/python/requirements/py3.11-ci-requirements.txt index bed8145e2f..9f57ecd841 100644 --- a/sdk/python/requirements/py3.11-ci-requirements.txt +++ b/sdk/python/requirements/py3.11-ci-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.11-ci-requirements.txt +# uv pip compile -p 3.11 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.11-ci-requirements.txt aiobotocore==2.15.0 # via feast (setup.py) aiohappyeyeballs==2.4.0 @@ -16,7 +16,7 @@ altair==4.2.2 # via great-expectations annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.5.0 # via # httpx # jupyter-server @@ -40,6 +40,8 @@ async-lru==2.0.4 # via jupyterlab async-property==0.2.2 # via python-keycloak +async-timeout==4.0.3 + # via redis atpublic==5.0 # via ibis-framework attrs==24.2.0 @@ -47,13 +49,13 @@ attrs==24.2.0 # aiohttp # jsonschema # referencing -azure-core==1.30.2 +azure-core==1.31.0 # via # azure-identity # azure-storage-blob azure-identity==1.17.1 # via feast (setup.py) -azure-storage-blob==12.22.0 +azure-storage-blob==12.23.0 # via feast (setup.py) babel==2.16.0 # via @@ -140,11 +142,11 @@ cryptography==42.0.8 # types-redis cython==3.0.11 # via thriftpy2 -dask[dataframe]==2024.8.2 +dask[dataframe]==2024.9.0 # via # feast (setup.py) # dask-expr -dask-expr==1.1.13 +dask-expr==1.1.14 # via dask db-dtypes==1.3.0 # via google-cloud-bigquery @@ -154,7 +156,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deltalake==0.19.2 +deltalake==0.20.0 # via feast (setup.py) deprecation==2.1.0 # via python-keycloak @@ -178,11 +180,11 @@ execnet==2.1.1 # via pytest-xdist executing==2.1.0 # via stack-data -fastapi==0.114.1 +fastapi==0.115.0 # via feast (setup.py) fastjsonschema==2.20.0 # via nbformat -filelock==3.16.0 +filelock==3.16.1 # via # snowflake-connector-python # virtualenv @@ -247,7 +249,7 @@ googleapis-common-protos[grpc]==1.65.0 # google-api-core # grpc-google-iam-v1 # grpcio-status -great-expectations==0.18.20 +great-expectations==0.18.21 # via feast (setup.py) grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable @@ -293,15 +295,15 @@ httpx==0.27.2 # feast (setup.py) # jupyterlab # python-keycloak -ibis-framework[duckdb]==9.4.0 +ibis-framework[duckdb]==9.5.0 # via # feast (setup.py) # ibis-substrait ibis-substrait==4.0.1 # via feast (setup.py) -identify==2.6.0 +identify==2.6.1 # via pre-commit -idna==3.8 +idna==3.10 # via # anyio # httpx @@ -363,7 +365,7 @@ jsonschema[format-nongpl]==4.23.0 # nbformat jsonschema-specifications==2023.12.1 # via jsonschema -jupyter-client==8.6.2 +jupyter-client==8.6.3 # via # ipykernel # jupyter-server @@ -429,7 +431,7 @@ mistune==3.0.2 # via # great-expectations # nbconvert -mmh3==4.1.0 +mmh3==5.0.0 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) @@ -497,6 +499,7 @@ packaging==24.1 # google-cloud-bigquery # great-expectations # gunicorn + # ibis-framework # ibis-substrait # ipykernel # jupyter-server @@ -561,8 +564,9 @@ proto-plus==1.24.0 # google-cloud-bigquery-storage # google-cloud-bigtable # google-cloud-datastore -protobuf==4.25.4 +protobuf==4.25.5 # via + # feast (setup.py) # google-api-core # google-cloud-bigquery-storage # google-cloud-bigtable @@ -581,11 +585,11 @@ psutil==5.9.0 # via # feast (setup.py) # ipykernel -psycopg[binary, pool]==3.2.1 +psycopg[binary, pool]==3.2.2 # via feast (setup.py) -psycopg-binary==3.2.1 +psycopg-binary==3.2.2 # via psycopg -psycopg-pool==3.2.2 +psycopg-pool==3.2.3 # via psycopg ptyprocess==0.7.0 # via @@ -620,12 +624,12 @@ pybindgen==0.22.1 # via feast (setup.py) pycparser==2.22 # via cffi -pydantic==2.9.1 +pydantic==2.9.2 # via # feast (setup.py) # fastapi # great-expectations -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via @@ -730,7 +734,7 @@ referencing==0.35.1 # jsonschema # jsonschema-specifications # jupyter-events -regex==2024.7.24 +regex==2024.9.11 # via # feast (setup.py) # parsimonious @@ -781,7 +785,7 @@ ruamel-yaml==0.17.40 # via great-expectations ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.4 +ruff==0.6.5 # via feast (setup.py) s3transfer==0.10.2 # via boto3 @@ -789,7 +793,7 @@ scipy==1.14.1 # via great-expectations send2trash==1.8.3 # via jupyter-server -setuptools==74.1.2 +setuptools==75.1.0 # via # grpcio-tools # jupyterlab @@ -817,7 +821,7 @@ sniffio==1.3.1 # httpx snowballstemmer==2.2.0 # via sphinx -snowflake-connector-python[pandas]==3.12.1 +snowflake-connector-python[pandas]==3.12.2 # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python @@ -837,9 +841,9 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sqlalchemy[mypy]==2.0.34 +sqlalchemy[mypy]==2.0.35 # via feast (setup.py) -sqlglot==25.18.0 +sqlglot==25.20.1 # via ibis-framework sqlite-vec==0.1.1 # via feast (setup.py) @@ -849,7 +853,7 @@ stack-data==0.6.3 # via ipython starlette==0.38.5 # via fastapi -substrait==0.22.0 +substrait==0.23.0 # via ibis-substrait tabulate==0.9.0 # via feast (setup.py) @@ -867,6 +871,8 @@ tinycss2==1.3.0 # via nbconvert toml==0.10.2 # via feast (setup.py) +tomli==2.0.1 + # via coverage tomlkit==0.13.2 # via snowflake-connector-python toolz==0.12.1 @@ -920,15 +926,15 @@ types-python-dateutil==2.9.0.20240906 # via # feast (setup.py) # arrow -types-pytz==2024.1.0.20240417 +types-pytz==2024.2.0.20240913 # via feast (setup.py) -types-pyyaml==6.0.12.20240808 +types-pyyaml==6.0.12.20240917 # via feast (setup.py) types-redis==4.6.0.20240903 # via feast (setup.py) types-requests==2.30.0.0 # via feast (setup.py) -types-setuptools==74.1.0.20240907 +types-setuptools==75.1.0.20240917 # via # feast (setup.py) # types-cffi @@ -963,7 +969,7 @@ tzlocal==5.2 # trino uri-template==1.3.0 # via jsonschema -urllib3==2.2.2 +urllib3==2.2.3 # via # feast (setup.py) # botocore @@ -1015,5 +1021,5 @@ xmltodict==0.13.0 # via moto yarl==1.11.1 # via aiohttp -zipp==3.20.1 +zipp==3.20.2 # via importlib-metadata diff --git a/sdk/python/requirements/py3.11-requirements.txt b/sdk/python/requirements/py3.11-requirements.txt index 99a994e946..5c20e45f07 100644 --- a/sdk/python/requirements/py3.11-requirements.txt +++ b/sdk/python/requirements/py3.11-requirements.txt @@ -1,8 +1,8 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.11-requirements.txt +# uv pip compile -p 3.11 --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.11-requirements.txt annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.5.0 # via # starlette # watchfiles @@ -25,15 +25,15 @@ cloudpickle==3.0.0 # via dask colorama==0.4.6 # via feast (setup.py) -dask[dataframe]==2024.8.2 +dask[dataframe]==2024.9.0 # via # feast (setup.py) # dask-expr -dask-expr==1.1.13 +dask-expr==1.1.14 # via dask dill==0.3.8 # via feast (setup.py) -fastapi==0.114.1 +fastapi==0.115.0 # via feast (setup.py) fsspec==2024.9.0 # via dask @@ -43,7 +43,7 @@ h11==0.14.0 # via uvicorn httptools==0.6.1 # via uvicorn -idna==3.8 +idna==3.10 # via # anyio # requests @@ -59,14 +59,12 @@ locket==1.0.0 # via partd markupsafe==2.1.5 # via jinja2 -mmh3==4.1.0 +mmh3==5.0.0 # via feast (setup.py) mypy==1.11.2 # via sqlalchemy mypy-extensions==1.0.0 # via mypy -mypy-protobuf==3.6.0 - # via feast (setup.py) numpy==1.26.4 # via # feast (setup.py) @@ -86,19 +84,19 @@ partd==1.4.2 # via dask prometheus-client==0.20.0 # via feast (setup.py) -protobuf==4.25.4 - # via mypy-protobuf +protobuf==4.25.5 + # via feast (setup.py) psutil==6.0.0 # via feast (setup.py) pyarrow==17.0.0 # via # feast (setup.py) # dask-expr -pydantic==2.9.1 +pydantic==2.9.2 # via # feast (setup.py) # fastapi -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via feast (setup.py) @@ -129,7 +127,7 @@ six==1.16.0 # via python-dateutil sniffio==1.3.1 # via anyio -sqlalchemy[mypy]==2.0.34 +sqlalchemy[mypy]==2.0.35 # via feast (setup.py) starlette==0.38.5 # via fastapi @@ -147,8 +145,6 @@ tqdm==4.66.5 # via feast (setup.py) typeguard==4.3.0 # via feast (setup.py) -types-protobuf==5.27.0.20240907 - # via mypy-protobuf typing-extensions==4.12.2 # via # fastapi @@ -159,7 +155,7 @@ typing-extensions==4.12.2 # typeguard tzdata==2024.1 # via pandas -urllib3==2.2.2 +urllib3==2.2.3 # via requests uvicorn[standard]==0.30.6 # via feast (setup.py) @@ -169,5 +165,5 @@ watchfiles==0.24.0 # via uvicorn websockets==13.0.1 # via uvicorn -zipp==3.20.1 +zipp==3.20.2 # via importlib-metadata diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index 1015f46cff..bbdca890b6 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.9-ci-requirements.txt +# uv pip compile -p 3.9 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.9-ci-requirements.txt aiobotocore==2.15.0 # via feast (setup.py) aiohappyeyeballs==2.4.0 @@ -16,7 +16,7 @@ altair==4.2.2 # via great-expectations annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.5.0 # via # httpx # jupyter-server @@ -51,13 +51,13 @@ attrs==24.2.0 # aiohttp # jsonschema # referencing -azure-core==1.30.2 +azure-core==1.31.0 # via # azure-identity # azure-storage-blob azure-identity==1.17.1 # via feast (setup.py) -azure-storage-blob==12.22.0 +azure-storage-blob==12.23.0 # via feast (setup.py) babel==2.16.0 # via @@ -160,7 +160,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deltalake==0.19.2 +deltalake==0.20.0 # via feast (setup.py) deprecation==2.1.0 # via python-keycloak @@ -189,11 +189,11 @@ execnet==2.1.1 # via pytest-xdist executing==2.1.0 # via stack-data -fastapi==0.114.1 +fastapi==0.115.0 # via feast (setup.py) fastjsonschema==2.20.0 # via nbformat -filelock==3.16.0 +filelock==3.16.1 # via # snowflake-connector-python # virtualenv @@ -258,7 +258,7 @@ googleapis-common-protos[grpc]==1.65.0 # google-api-core # grpc-google-iam-v1 # grpcio-status -great-expectations==0.18.20 +great-expectations==0.18.21 # via feast (setup.py) grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable @@ -310,9 +310,9 @@ ibis-framework[duckdb]==9.0.0 # ibis-substrait ibis-substrait==4.0.1 # via feast (setup.py) -identify==2.6.0 +identify==2.6.1 # via pre-commit -idna==3.8 +idna==3.10 # via # anyio # httpx @@ -383,7 +383,7 @@ jsonschema[format-nongpl]==4.23.0 # nbformat jsonschema-specifications==2023.12.1 # via jsonschema -jupyter-client==8.6.2 +jupyter-client==8.6.3 # via # ipykernel # jupyter-server @@ -449,7 +449,7 @@ mistune==3.0.2 # via # great-expectations # nbconvert -mmh3==4.1.0 +mmh3==5.0.0 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) @@ -581,8 +581,9 @@ proto-plus==1.24.0 # google-cloud-bigquery-storage # google-cloud-bigtable # google-cloud-datastore -protobuf==4.25.4 +protobuf==4.25.5 # via + # feast (setup.py) # google-api-core # google-cloud-bigquery-storage # google-cloud-bigtable @@ -605,7 +606,7 @@ psycopg[binary, pool]==3.1.18 # via feast (setup.py) psycopg-binary==3.1.18 # via psycopg -psycopg-pool==3.2.2 +psycopg-pool==3.2.3 # via psycopg ptyprocess==0.7.0 # via @@ -640,12 +641,12 @@ pybindgen==0.22.1 # via feast (setup.py) pycparser==2.22 # via cffi -pydantic==2.9.1 +pydantic==2.9.2 # via # feast (setup.py) # fastapi # great-expectations -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via @@ -750,7 +751,7 @@ referencing==0.35.1 # jsonschema # jsonschema-specifications # jupyter-events -regex==2024.7.24 +regex==2024.9.11 # via # feast (setup.py) # parsimonious @@ -801,7 +802,7 @@ ruamel-yaml==0.17.40 # via great-expectations ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.4 +ruff==0.6.5 # via feast (setup.py) s3transfer==0.10.2 # via boto3 @@ -809,7 +810,7 @@ scipy==1.13.1 # via great-expectations send2trash==1.8.3 # via jupyter-server -setuptools==74.1.2 +setuptools==75.1.0 # via # grpcio-tools # jupyterlab @@ -837,7 +838,7 @@ sniffio==1.3.1 # httpx snowballstemmer==2.2.0 # via sphinx -snowflake-connector-python[pandas]==3.12.1 +snowflake-connector-python[pandas]==3.12.2 # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python @@ -857,7 +858,7 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sqlalchemy[mypy]==2.0.34 +sqlalchemy[mypy]==2.0.35 # via feast (setup.py) sqlglot==23.12.2 # via ibis-framework @@ -869,7 +870,7 @@ stack-data==0.6.3 # via ipython starlette==0.38.5 # via fastapi -substrait==0.22.0 +substrait==0.23.0 # via ibis-substrait tabulate==0.9.0 # via feast (setup.py) @@ -950,15 +951,15 @@ types-python-dateutil==2.9.0.20240906 # via # feast (setup.py) # arrow -types-pytz==2024.1.0.20240417 +types-pytz==2024.2.0.20240913 # via feast (setup.py) -types-pyyaml==6.0.12.20240808 +types-pyyaml==6.0.12.20240917 # via feast (setup.py) types-redis==4.6.0.20240903 # via feast (setup.py) types-requests==2.30.0.0 # via feast (setup.py) -types-setuptools==74.1.0.20240907 +types-setuptools==75.1.0.20240917 # via # feast (setup.py) # types-cffi @@ -1052,5 +1053,5 @@ xmltodict==0.13.0 # via moto yarl==1.11.1 # via aiohttp -zipp==3.20.1 +zipp==3.20.2 # via importlib-metadata diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 4bd6a44857..7ffef84b23 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -1,8 +1,8 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.9-requirements.txt +# uv pip compile -p 3.9 --system --no-strip-extras setup.py --output-file sdk/python/requirements/py3.9-requirements.txt annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.5.0 # via # starlette # watchfiles @@ -35,7 +35,7 @@ dill==0.3.8 # via feast (setup.py) exceptiongroup==1.2.2 # via anyio -fastapi==0.114.1 +fastapi==0.115.0 # via feast (setup.py) fsspec==2024.9.0 # via dask @@ -45,7 +45,7 @@ h11==0.14.0 # via uvicorn httptools==0.6.1 # via uvicorn -idna==3.8 +idna==3.10 # via # anyio # requests @@ -63,14 +63,12 @@ locket==1.0.0 # via partd markupsafe==2.1.5 # via jinja2 -mmh3==4.1.0 +mmh3==5.0.0 # via feast (setup.py) mypy==1.11.2 # via sqlalchemy mypy-extensions==1.0.0 # via mypy -mypy-protobuf==3.6.0 - # via feast (setup.py) numpy==1.26.4 # via # feast (setup.py) @@ -90,19 +88,19 @@ partd==1.4.2 # via dask prometheus-client==0.20.0 # via feast (setup.py) -protobuf==4.25.4 - # via mypy-protobuf +protobuf==4.25.5 + # via feast (setup.py) psutil==6.0.0 # via feast (setup.py) pyarrow==17.0.0 # via # feast (setup.py) # dask-expr -pydantic==2.9.1 +pydantic==2.9.2 # via # feast (setup.py) # fastapi -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via feast (setup.py) @@ -133,7 +131,7 @@ six==1.16.0 # via python-dateutil sniffio==1.3.1 # via anyio -sqlalchemy[mypy]==2.0.34 +sqlalchemy[mypy]==2.0.35 # via feast (setup.py) starlette==0.38.5 # via fastapi @@ -153,8 +151,6 @@ tqdm==4.66.5 # via feast (setup.py) typeguard==4.3.0 # via feast (setup.py) -types-protobuf==5.27.0.20240907 - # via mypy-protobuf typing-extensions==4.12.2 # via # anyio @@ -168,7 +164,7 @@ typing-extensions==4.12.2 # uvicorn tzdata==2024.1 # via pandas -urllib3==2.2.2 +urllib3==2.2.3 # via requests uvicorn[standard]==0.30.6 # via feast (setup.py) @@ -178,5 +174,5 @@ watchfiles==0.24.0 # via uvicorn websockets==13.0.1 # via uvicorn -zipp==3.20.1 +zipp==3.20.2 # via importlib-metadata diff --git a/setup.py b/setup.py index f332c21f71..5a6f18db35 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ "click>=7.0.0,<9.0.0", "colorama>=0.3.9,<1", "dill~=0.3.0", - "mypy-protobuf>=3.1", + "protobuf<5", "Jinja2>=2,<4", "jsonschema", "mmh3", @@ -157,6 +157,8 @@ "virtualenv==20.23.0", "cryptography>=35.0,<43", "ruff>=0.3.3", + "protobuf<5", + "mypy-protobuf>=3.1", "grpcio-tools>=1.56.2,<2", "grpcio-testing>=1.56.2,<2", # FastAPI does not correctly pull starlette dependency on httpx see thread(https://github.com/tiangolo/fastapi/issues/5656). @@ -400,6 +402,9 @@ def run(self): entry_points={"console_scripts": ["feast=feast.cli:cli"]}, use_scm_version=use_scm_version, setup_requires=[ + # snowflake udf packages refer to conda packages, not pypi libraries. Conda stack is still on protobuf 4 + # So we are adding protobuf<5 as a requirement + "protobuf<5", "grpcio-tools>=1.56.2,<2", "mypy-protobuf>=3.1", "pybindgen==0.22.0",