From b235d1a03921679a978deb642831938bd34b0da6 Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Sat, 15 Jul 2023 17:46:30 +0300 Subject: [PATCH 01/15] Implemented gRPC server for ingesting streaming features. Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- protos/feast/serving/GrpcServer.proto | 13 + sdk/python/feast/cli.py | 53 ++- sdk/python/feast/infra/contrib/grpc_server.py | 49 +++ .../requirements/py3.10-ci-requirements.txt | 403 +++++++++-------- .../requirements/py3.10-requirements.txt | 102 +++-- .../requirements/py3.8-ci-requirements.txt | 389 +++++++++-------- .../requirements/py3.8-requirements.txt | 106 +++-- .../requirements/py3.9-ci-requirements.txt | 411 +++++++++--------- .../requirements/py3.9-requirements.txt | 106 +++-- setup.py | 7 +- 10 files changed, 941 insertions(+), 698 deletions(-) create mode 100644 protos/feast/serving/GrpcServer.proto create mode 100644 sdk/python/feast/infra/contrib/grpc_server.py diff --git a/protos/feast/serving/GrpcServer.proto b/protos/feast/serving/GrpcServer.proto new file mode 100644 index 00000000000..318531dc9d4 --- /dev/null +++ b/protos/feast/serving/GrpcServer.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +message GrpcIngestFeatureResponse { + bool status = 1; +} + +message GrpcIngestFeatureRequest { + map features = 1; +} + +service GrpcIngestFeatureService { + rpc GrpcIngestFeature (GrpcIngestFeatureRequest) returns (GrpcIngestFeatureResponse) {} +} \ No newline at end of file diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index 229cb992321..7e395749fb3 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -25,9 +25,14 @@ from pygments import formatters, highlight, lexers from feast import utils -from feast.constants import DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT +from feast.constants import ( + DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT, + FEATURE_STORE_YAML_ENV_NAME, +) +from feast.data_source import PushMode from feast.errors import FeastObjectNotFoundException, FeastProviderLoginError from feast.feature_view import FeatureView +from feast.infra.contrib.grpc_server import GetGrpcServer from feast.on_demand_feature_view import OnDemandFeatureView from feast.repo_config import load_repo_config from feast.repo_operations import ( @@ -689,6 +694,52 @@ def serve_command( ) +@cli.command("listen") +@click.option( + "--address", + "-a", + type=click.STRING, + default="localhost:50051", + show_default=True, + help="Specify an address for the server", +) +@click.option( + "--stream_feature_view", + "-sfv", + type=click.STRING, + show_default=False, + help="Specify the stream feature view to update", +) +@click.option( + "--push_mode", + "-to", + type=click.STRING, + default="online", + show_default=False, + help="Specify the stream feature view to update", +) +@click.pass_context +def listen_command( + ctx: click.Context, + address: str, + stream_feature_view: str, + push_mode: str +): + repo = ctx.obj["CHDIR"] + fs_yaml_file = ctx.obj["FS_YAML_FILE"] + cli_check_repo(repo, fs_yaml_file) + store = FeatureStore(repo_path=str(repo), fs_yaml_file=fs_yaml_file) + to: PushMode + if push_mode == "online": + to = PushMode.ONLINE + elif push_mode == "offline": + to = PushMode.OFFLINE + else: + to = PushMode.ONLINE_AND_OFFLINE + server = GetGrpcServer(store, address, stream_feature_view, to) + server.start() + + @cli.command("serve_transformations") @click.option( "--port", diff --git a/sdk/python/feast/infra/contrib/grpc_server.py b/sdk/python/feast/infra/contrib/grpc_server.py new file mode 100644 index 00000000000..11c1a8272dc --- /dev/null +++ b/sdk/python/feast/infra/contrib/grpc_server.py @@ -0,0 +1,49 @@ +from feast.protos.feast.serving.GrpcServer_pb2 import GrpcIngestFeatureResponse +from feast.protos.feast.serving.GrpcServer_pb2_grpc import GrpcIngestFeatureServiceServicer, \ + add_GrpcIngestFeatureServiceServicer_to_server +from concurrent import futures +import grpc +import pandas as pd +from feast.feature_store import FeatureStore +from feast.data_source import PushMode + + +class GrpcIngestFeatureService(GrpcIngestFeatureServiceServicer): + fs: FeatureStore + sfv: str + to: PushMode + + def __init__(self, fs, sfv, to): + self.fs = fs + self.sfv = sfv + self.to = to + super().__init__() + + def GrpcIngestFeature(self, request, context): + features = {} + for i in request.test.keys(): + features[i] = [request.test.get(i)] + rows = pd.DataFrame.from_dict(features) + if self.to == PushMode.ONLINE or self.to == PushMode.ONLINE_AND_OFFLINE: + self.fs.write_to_online_store(self.sfv, rows) + if self.to == PushMode.OFFLINE or self.to == PushMode.ONLINE_AND_OFFLINE: + self.fs.write_to_offline_store(self.sfv, rows) + return GrpcIngestFeatureResponse(status=True) + + +class GrpcIngestFeatureServer: + def __init__(self, address, fs: FeatureStore, sfv_name, to): + self.address = address + self.fs = fs + self.sfv = sfv_name + self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) + add_GrpcIngestFeatureServiceServicer_to_server(GrpcIngestFeatureService(self.fs, self.sfv, to), self.server) + self.server.add_insecure_port(self.address) + + def start(self): + self.server.start() + self.server.wait_for_termination() + + +def GetGrpcServer(fs: FeatureStore, address: str, sfv: str, to: PushMode): + return GrpcIngestFeatureServer(address, fs, sfv, to) diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index 2f28a271dc3..e325d168dff 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -8,7 +8,7 @@ adal==1.2.7 # via msrestazure adlfs==0.5.9 # via feast (setup.py) -aiohttp==3.8.4 +aiohttp==3.8.5 # via # adlfs # gcsfs @@ -18,8 +18,9 @@ alabaster==0.7.13 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.7.0 +anyio==3.7.1 # via + # fastapi # httpcore # jupyter-server # starlette @@ -30,11 +31,8 @@ appnope==0.1.3 # via # ipykernel # ipython -argon2-cffi==21.3.0 - # via - # jupyter-server - # nbclassic - # notebook +argon2-cffi==23.1.0 + # via jupyter-server argon2-cffi-bindings==21.2.0 # via argon2-cffi arrow==1.2.3 @@ -45,9 +43,11 @@ asn1crypto==1.5.1 # snowflake-connector-python assertpy==1.1 # via feast (setup.py) -asttokens==2.2.1 +asttokens==2.4.0 # via stack-data -async-timeout==4.0.2 +async-lru==2.0.4 + # via jupyterlab +async-timeout==4.0.3 # via # aiohttp # redis @@ -56,9 +56,10 @@ attrs==23.1.0 # aiohttp # bowler # jsonschema + # referencing avro==1.10.0 # via feast (setup.py) -azure-core==1.27.0 +azure-core==1.29.3 # via # adlfs # azure-identity @@ -66,16 +67,18 @@ azure-core==1.27.0 # msrest azure-datalake-store==0.0.53 # via adlfs -azure-identity==1.13.0 +azure-identity==1.14.0 # via # adlfs # feast (setup.py) -azure-storage-blob==12.16.0 +azure-storage-blob==12.17.0 # via # adlfs # feast (setup.py) babel==2.12.1 - # via sphinx + # via + # jupyterlab-server + # sphinx backcall==0.2.0 # via ipython beautifulsoup4==4.12.2 @@ -84,30 +87,30 @@ black==22.12.0 # via feast (setup.py) bleach==6.0.0 # via nbconvert -boto3==1.26.146 +boto3==1.28.40 # via # feast (setup.py) # moto -botocore==1.29.146 +botocore==1.31.40 # via # boto3 # moto # s3transfer bowler==0.9.0 # via feast (setup.py) -build==0.10.0 +build==1.0.0 # via # feast (setup.py) # pip-tools bytewax==0.15.1 # via feast (setup.py) -cachecontrol==0.13.0 +cachecontrol==0.13.1 # via firebase-admin cachetools==5.3.1 # via google-auth -cassandra-driver==3.27.0 +cassandra-driver==3.28.0 # via feast (setup.py) -certifi==2023.5.7 +certifi==2023.7.22 # via # httpcore # httpx @@ -122,14 +125,14 @@ cffi==1.15.1 # azure-datalake-store # cryptography # snowflake-connector-python -cfgv==3.3.1 +cfgv==3.4.0 # via pre-commit -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via # aiohttp # requests # snowflake-connector-python -click==8.1.3 +click==8.1.7 # via # black # bowler @@ -146,16 +149,17 @@ colorama==0.4.6 # via # feast (setup.py) # great-expectations -comm==0.1.3 - # via ipykernel -coverage[toml]==7.2.7 +comm==0.1.4 + # via + # ipykernel + # ipywidgets +coverage[toml]==7.3.0 # via pytest-cov -cryptography==40.0.2 +cryptography==41.0.3 # via # adal # azure-identity # azure-storage-blob - # cassandra-driver # feast (setup.py) # great-expectations # moto @@ -165,11 +169,11 @@ cryptography==40.0.2 # snowflake-connector-python # types-pyopenssl # types-redis -dask==2023.5.1 +dask==2023.9.0 # via feast (setup.py) db-dtypes==1.1.1 # via google-cloud-bigquery -debugpy==1.6.7 +debugpy==1.6.7.post1 # via ipykernel decorator==5.1.1 # via @@ -181,12 +185,12 @@ deprecated==1.2.14 # via redis deprecation==2.1.0 # via testcontainers -dill==0.3.6 +dill==0.3.7 # via # bytewax # feast (setup.py) # multiprocess -distlib==0.3.6 +distlib==0.3.7 # via virtualenv docker==6.1.3 # via @@ -196,23 +200,24 @@ docutils==0.19 # via sphinx entrypoints==0.4 # via altair -exceptiongroup==1.1.1 +exceptiongroup==1.1.3 # via # anyio + # ipython # pytest -execnet==1.9.0 +execnet==2.0.2 # via pytest-xdist executing==1.2.0 # via stack-data -fastapi==0.95.2 +fastapi==0.103.1 # via feast (setup.py) -fastavro==1.8.1 +fastavro==1.8.2 # via # feast (setup.py) # pandavro -fastjsonschema==2.17.1 +fastjsonschema==2.18.0 # via nbformat -filelock==3.12.0 +filelock==3.12.3 # via # snowflake-connector-python # virtualenv @@ -220,11 +225,11 @@ firebase-admin==5.4.0 # via feast (setup.py) fissix==21.11.13 # via bowler -flake8==6.0.0 +flake8==6.1.0 # via feast (setup.py) fqdn==1.5.1 # via jsonschema -frozenlist==1.3.3 +frozenlist==1.4.0 # via # aiohttp # aiosignal @@ -239,7 +244,7 @@ geojson==2.5.0 # via rockset geomet==0.2.1.post1 # via cassandra-driver -google-api-core[grpc]==2.11.0 +google-api-core[grpc]==2.11.1 # via # feast (setup.py) # firebase-admin @@ -251,9 +256,9 @@ google-api-core[grpc]==2.11.0 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.88.0 +google-api-python-client==2.97.0 # via firebase-admin -google-auth==2.19.1 +google-auth==2.22.0 # via # gcsfs # google-api-core @@ -267,24 +272,24 @@ google-auth-httplib2==0.1.0 # via google-api-python-client google-auth-oauthlib==1.0.0 # via gcsfs -google-cloud-bigquery[pandas]==3.11.0 +google-cloud-bigquery[pandas]==3.11.4 # via feast (setup.py) -google-cloud-bigquery-storage==2.20.0 +google-cloud-bigquery-storage==2.22.0 # via feast (setup.py) -google-cloud-bigtable==2.18.1 +google-cloud-bigtable==2.21.0 # via feast (setup.py) -google-cloud-core==2.3.2 +google-cloud-core==2.3.3 # via # google-cloud-bigquery # google-cloud-bigtable # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-cloud-datastore==2.15.2 +google-cloud-datastore==2.17.0 # via feast (setup.py) google-cloud-firestore==2.11.1 # via firebase-admin -google-cloud-storage==2.9.0 +google-cloud-storage==2.10.0 # via # feast (setup.py) # firebase-admin @@ -295,7 +300,7 @@ google-resumable-media==2.5.0 # via # google-cloud-bigquery # google-cloud-storage -googleapis-common-protos[grpc]==1.59.0 +googleapis-common-protos[grpc]==1.60.0 # via # feast (setup.py) # google-api-core @@ -303,11 +308,9 @@ googleapis-common-protos[grpc]==1.59.0 # grpcio-status great-expectations==0.15.50 # via feast (setup.py) -greenlet==2.0.2 - # via sqlalchemy grpc-google-iam-v1==0.12.6 # via google-cloud-bigtable -grpcio==1.54.2 +grpcio==1.57.0 # via # feast (setup.py) # google-api-core @@ -318,15 +321,15 @@ grpcio==1.54.2 # grpcio-status # grpcio-testing # grpcio-tools -grpcio-reflection==1.54.2 +grpcio-reflection==1.57.0 # via feast (setup.py) -grpcio-status==1.54.2 +grpcio-status==1.57.0 # via google-api-core -grpcio-testing==1.54.2 +grpcio-testing==1.57.0 # via feast (setup.py) -grpcio-tools==1.54.2 +grpcio-tools==1.57.0 # via feast (setup.py) -gunicorn==20.1.0 +gunicorn==21.2.0 # via feast (setup.py) h11==0.14.0 # via @@ -334,21 +337,21 @@ h11==0.14.0 # uvicorn happybase==1.2.0 # via feast (setup.py) -hazelcast-python-client==5.2.0 +hazelcast-python-client==5.3.0 # via feast (setup.py) hiredis==2.2.3 # via feast (setup.py) -httpcore==0.17.2 +httpcore==0.17.3 # via httpx httplib2==0.22.0 # via # google-api-python-client # google-auth-httplib2 -httptools==0.5.0 +httptools==0.6.0 # via uvicorn httpx==0.24.1 # via feast (setup.py) -identify==2.5.24 +identify==2.5.27 # via pre-commit idna==3.4 # via @@ -360,27 +363,20 @@ idna==3.4 # yarl imagesize==1.4.1 # via sphinx -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via # dask # great-expectations iniconfig==2.0.0 # via pytest -ipykernel==6.23.1 - # via - # ipywidgets - # nbclassic - # notebook -ipython==8.14.0 +ipykernel==6.25.2 + # via jupyterlab +ipython==8.15.0 # via # great-expectations # ipykernel # ipywidgets -ipython-genutils==0.2.0 - # via - # nbclassic - # notebook -ipywidgets==8.0.6 +ipywidgets==8.1.0 # via great-expectations isodate==0.6.1 # via @@ -390,7 +386,7 @@ isoduration==20.11.0 # via jsonschema isort==5.12.0 # via feast (setup.py) -jedi==0.18.2 +jedi==0.19.0 # via ipython jinja2==3.1.2 # via @@ -398,56 +394,69 @@ jinja2==3.1.2 # feast (setup.py) # great-expectations # jupyter-server + # jupyterlab + # jupyterlab-server # moto - # nbclassic # nbconvert - # notebook # sphinx jmespath==1.0.1 # via # boto3 # botocore -jsonpatch==1.32 +json5==0.9.14 + # via jupyterlab-server +jsonpatch==1.33 # via great-expectations -jsonpointer==2.3 +jsonpointer==2.4 # via # jsonpatch # jsonschema -jsonschema[format-nongpl]==4.17.3 +jsonschema[format-nongpl]==4.19.0 # via # altair # feast (setup.py) # great-expectations # jupyter-events + # jupyterlab-server # nbformat -jupyter-client==8.2.0 +jsonschema-specifications==2023.7.1 + # via jsonschema +jupyter-client==8.3.1 # via # ipykernel # jupyter-server - # nbclassic # nbclient - # notebook -jupyter-core==5.3.0 +jupyter-core==5.3.1 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic + # jupyterlab # nbclient # nbconvert # nbformat - # notebook -jupyter-events==0.6.3 +jupyter-events==0.7.0 # via jupyter-server -jupyter-server==2.6.0 +jupyter-lsp==2.2.0 + # via jupyterlab +jupyter-server==2.7.3 # via - # nbclassic + # jupyter-lsp + # jupyterlab + # jupyterlab-server + # notebook # notebook-shim jupyter-server-terminals==0.4.4 # via jupyter-server +jupyterlab==4.0.5 + # via notebook jupyterlab-pygments==0.2.2 # via nbconvert -jupyterlab-widgets==3.0.7 +jupyterlab-server==2.24.0 + # via + # jupyterlab + # notebook +jupyterlab-widgets==3.0.8 # via ipywidgets kubernetes==20.13.0 # via feast (setup.py) @@ -460,7 +469,7 @@ markupsafe==2.1.3 # jinja2 # nbconvert # werkzeug -marshmallow==3.19.0 +marshmallow==3.20.1 # via great-expectations matplotlib-inline==0.1.6 # via @@ -470,19 +479,19 @@ mccabe==0.7.0 # via flake8 minio==7.1.0 # via feast (setup.py) -mistune==2.0.5 +mistune==3.0.1 # via # great-expectations # nbconvert -mmh3==4.0.0 +mmh3==4.0.1 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) moreorless==0.4.0 # via bowler -moto==4.1.10 +moto==4.2.2 # via feast (setup.py) -msal==1.22.0 +msal==1.23.0 # via # azure-datalake-store # azure-identity @@ -499,7 +508,7 @@ multidict==6.0.4 # via # aiohttp # yarl -multiprocess==0.70.14 +multiprocess==0.70.15 # via bytewax mypy==0.982 # via @@ -511,37 +520,29 @@ mypy-extensions==1.0.0 # mypy mypy-protobuf==3.1 # via feast (setup.py) -mysqlclient==2.1.1 +mysqlclient==2.2.0 # via feast (setup.py) -nbclassic==1.0.0 - # via notebook nbclient==0.8.0 # via nbconvert -nbconvert==7.4.0 - # via - # jupyter-server - # nbclassic - # notebook -nbformat==5.9.0 +nbconvert==7.8.0 + # via jupyter-server +nbformat==5.9.2 # via # great-expectations # jupyter-server - # nbclassic # nbclient # nbconvert - # notebook -nest-asyncio==1.5.6 - # via - # ipykernel - # nbclassic - # notebook +nest-asyncio==1.5.7 + # via ipykernel nodeenv==1.8.0 # via pre-commit -notebook==6.5.4 +notebook==7.0.3 # via great-expectations notebook-shim==0.2.3 - # via nbclassic -numpy==1.24.3 + # via + # jupyterlab + # notebook +numpy==1.25.2 # via # altair # db-dtypes @@ -555,7 +556,7 @@ oauthlib==3.2.2 # via requests-oauthlib oscrypto==1.3.0 # via snowflake-connector-python -overrides==7.3.1 +overrides==7.4.0 # via jupyter-server packaging==23.1 # via @@ -566,8 +567,11 @@ packaging==23.1 # docker # google-cloud-bigquery # great-expectations + # gunicorn # ipykernel # jupyter-server + # jupyterlab + # jupyterlab-server # marshmallow # nbconvert # pytest @@ -591,7 +595,7 @@ parso==0.8.3 # via jedi partd==1.4.0 # via dask -pathspec==0.11.1 +pathspec==0.11.2 # via black pbr==5.11.1 # via mock @@ -599,29 +603,27 @@ pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -pip-tools==6.13.0 +pip-tools==7.3.0 # via feast (setup.py) -platformdirs==3.5.1 +platformdirs==3.8.1 # via # black # jupyter-core + # snowflake-connector-python # virtualenv -pluggy==1.0.0 +pluggy==1.3.0 # via pytest ply==3.11 # via thriftpy2 portalocker==2.7.0 # via msal-extensions -pre-commit==3.3.2 +pre-commit==3.3.1 # via feast (setup.py) -prometheus-client==0.17.0 - # via - # jupyter-server - # nbclassic - # notebook -prompt-toolkit==3.0.38 +prometheus-client==0.17.1 + # via jupyter-server +prompt-toolkit==3.0.39 # via ipython -proto-plus==1.22.2 +proto-plus==1.22.3 # via # feast (setup.py) # google-cloud-bigquery @@ -629,7 +631,7 @@ proto-plus==1.22.2 # google-cloud-bigtable # google-cloud-datastore # google-cloud-firestore -protobuf==4.23.2 +protobuf==4.23.3 # via # feast (setup.py) # google-api-core @@ -650,7 +652,7 @@ psutil==5.9.0 # via # feast (setup.py) # ipykernel -psycopg2-binary==2.9.6 +psycopg2-binary==2.9.7 # via feast (setup.py) ptyprocess==0.7.0 # via @@ -678,49 +680,47 @@ pyasn1-modules==0.3.0 # via google-auth pybindgen==0.22.1 # via feast (setup.py) -pycodestyle==2.10.0 +pycodestyle==2.11.0 # via flake8 pycparser==2.21 # via cffi pycryptodomex==3.18.0 # via snowflake-connector-python -pydantic==1.10.8 +pydantic==1.10.12 # via # fastapi # feast (setup.py) # great-expectations -pyflakes==3.0.1 +pyflakes==3.1.0 # via flake8 -pygments==2.15.1 +pygments==2.16.1 # via # feast (setup.py) # ipython # nbconvert # sphinx -pyjwt[crypto]==2.7.0 +pyjwt[crypto]==2.8.0 # via # adal # msal # snowflake-connector-python pymssql==2.2.8 # via feast (setup.py) -pymysql==1.0.3 +pymysql==1.1.0 # via feast (setup.py) pyodbc==4.0.39 # via feast (setup.py) pyopenssl==23.2.0 # via snowflake-connector-python -pyparsing==3.0.9 +pyparsing==3.1.1 # via # great-expectations # httplib2 pyproject-hooks==1.0.0 # via build -pyrsistent==0.19.3 - # via jsonschema -pyspark==3.4.0 +pyspark==3.4.1 # via feast (setup.py) -pytest==7.3.1 +pytest==7.4.1 # via # feast (setup.py) # pytest-benchmark @@ -761,7 +761,7 @@ python-dotenv==1.0.0 # via uvicorn python-json-logger==2.0.7 # via jupyter-events -pytz==2023.3 +pytz==2023.3.post1 # via # great-expectations # pandas @@ -776,16 +776,19 @@ pyyaml==6.0.1 # pre-commit # responses # uvicorn -pyzmq==25.1.0 +pyzmq==25.1.1 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic - # notebook redis==4.2.2 # via feast (setup.py) -regex==2023.5.5 +referencing==0.30.2 + # via + # jsonschema + # jsonschema-specifications + # jupyter-events +regex==2023.8.8 # via feast (setup.py) requests==2.31.0 # via @@ -801,6 +804,7 @@ requests==2.31.0 # google-cloud-bigquery # google-cloud-storage # great-expectations + # jupyterlab-server # kubernetes # moto # msal @@ -815,7 +819,7 @@ requests-oauthlib==1.3.1 # google-auth-oauthlib # kubernetes # msrest -responses==0.23.1 +responses==0.23.3 # via moto rfc3339-validator==0.1.4 # via @@ -825,26 +829,26 @@ rfc3986-validator==0.1.1 # via # jsonschema # jupyter-events -rockset==2.0.0 +rockset==2.1.0 # via feast (setup.py) +rpds-py==0.10.2 + # via + # jsonschema + # referencing rsa==4.9 # via google-auth ruamel-yaml==0.17.17 # via great-expectations -s3transfer==0.6.1 +s3transfer==0.6.2 # via boto3 -scipy==1.10.1 +scipy==1.11.2 # via great-expectations send2trash==1.8.2 - # via - # jupyter-server - # nbclassic - # notebook + # via jupyter-server six==1.16.0 # via # asttokens # azure-core - # azure-identity # bleach # cassandra-driver # geomet @@ -866,29 +870,35 @@ sniffio==1.3.0 # httpx snowballstemmer==2.2.0 # via sphinx -snowflake-connector-python[pandas]==3.0.4 +snowflake-connector-python[pandas]==3.1.1 # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python -soupsieve==2.4.1 +soupsieve==2.5 # via beautifulsoup4 sphinx==6.2.1 - # via feast (setup.py) -sphinxcontrib-applehelp==1.0.4 + # via + # feast (setup.py) + # sphinxcontrib-applehelp + # sphinxcontrib-devhelp + # sphinxcontrib-htmlhelp + # sphinxcontrib-qthelp + # sphinxcontrib-serializinghtml +sphinxcontrib-applehelp==1.0.7 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-devhelp==1.0.5 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-htmlhelp==2.0.4 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==1.0.6 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==1.1.9 # via sphinx -sqlalchemy[mypy]==1.4.48 +sqlalchemy[mypy]==1.4.49 # via feast (setup.py) -sqlalchemy2-stubs==0.0.2a34 +sqlalchemy2-stubs==0.0.2a35 # via sqlalchemy stack-data==0.6.2 # via ipython @@ -896,14 +906,12 @@ starlette==0.27.0 # via fastapi tabulate==0.9.0 # via feast (setup.py) -tenacity==8.2.2 +tenacity==8.2.3 # via feast (setup.py) terminado==0.17.1 # via # jupyter-server # jupyter-server-terminals - # nbclassic - # notebook testcontainers==3.7.1 # via feast (setup.py) thriftpy2==0.4.16 @@ -917,23 +925,27 @@ tomli==2.0.1 # black # build # coverage + # jupyterlab # mypy + # pip-tools # pyproject-hooks # pytest +tomlkit==0.12.1 + # via snowflake-connector-python toolz==0.12.0 # via # altair # dask # partd -tornado==6.3.2 +tornado==6.3.3 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic + # jupyterlab # notebook # terminado -tqdm==4.65.0 +tqdm==4.66.1 # via # feast (setup.py) # great-expectations @@ -947,12 +959,11 @@ traitlets==5.9.0 # jupyter-core # jupyter-events # jupyter-server + # jupyterlab # matplotlib-inline - # nbclassic # nbclient # nbconvert # nbformat - # notebook trino==0.326.0 # via feast (setup.py) typeguard==2.13.3 @@ -961,42 +972,46 @@ types-protobuf==3.19.22 # via # feast (setup.py) # mypy-protobuf -types-pymysql==1.0.19.7 +types-pymysql==1.1.0.1 # via feast (setup.py) -types-pyopenssl==23.2.0.0 +types-pyopenssl==23.2.0.2 # via types-redis -types-python-dateutil==2.8.19.13 +types-python-dateutil==2.8.19.14 # via feast (setup.py) -types-pytz==2023.3.0.0 +types-pytz==2023.3.0.1 # via feast (setup.py) -types-pyyaml==6.0.12.10 +types-pyyaml==6.0.12.11 # via # feast (setup.py) # responses -types-redis==4.5.5.2 +types-redis==4.6.0.5 # via feast (setup.py) -types-requests==2.31.0.1 +types-requests==2.31.0.2 # via feast (setup.py) -types-setuptools==67.8.0.0 +types-setuptools==68.1.0.1 # via feast (setup.py) -types-tabulate==0.9.0.2 +types-tabulate==0.9.0.3 # via feast (setup.py) -types-urllib3==1.26.25.13 +types-urllib3==1.26.25.14 # via types-requests -typing-extensions==4.6.3 +typing-extensions==4.7.1 # via + # async-lru # azure-core # azure-storage-blob + # fastapi + # filelock # great-expectations # mypy # pydantic # snowflake-connector-python # sqlalchemy2-stubs + # uvicorn tzlocal==5.0.1 # via # great-expectations # trino -uri-template==1.2.0 +uri-template==1.3.0 # via jsonschema uritemplate==4.1.1 # via google-api-python-client @@ -1013,15 +1028,17 @@ urllib3==1.26.16 # responses # rockset # snowflake-connector-python -uvicorn[standard]==0.22.0 +uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn -virtualenv==20.23.0 - # via pre-commit +virtualenv==20.24.1 + # via + # feast (setup.py) + # pre-commit volatile==2.1.0 # via bowler -watchfiles==0.19.0 +watchfiles==0.20.0 # via uvicorn wcwidth==0.2.6 # via prompt-toolkit @@ -1031,18 +1048,18 @@ webencodings==0.5.1 # via # bleach # tinycss2 -websocket-client==1.5.2 +websocket-client==1.6.2 # via # docker # jupyter-server # kubernetes websockets==11.0.3 # via uvicorn -werkzeug==2.3.4 +werkzeug==2.3.7 # via moto -wheel==0.40.0 +wheel==0.41.2 # via pip-tools -widgetsnbextension==4.0.7 +widgetsnbextension==4.0.8 # via ipywidgets wrapt==1.15.0 # via @@ -1052,7 +1069,7 @@ xmltodict==0.13.0 # via moto yarl==1.9.2 # via aiohttp -zipp==3.15.0 +zipp==3.16.2 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index d9b70d51974..1eef1ee8832 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -4,8 +4,9 @@ # # pip-compile --output-file=sdk/python/requirements/py3.10-requirements.txt # -anyio==3.7.0 +anyio==3.7.1 # via + # fastapi # httpcore # starlette # watchfiles @@ -15,16 +16,17 @@ attrs==23.1.0 # via # bowler # jsonschema + # referencing bowler==0.9.0 # via feast (setup.py) -certifi==2023.5.7 +certifi==2023.7.22 # via # httpcore # httpx # requests -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via requests -click==8.1.3 +click==8.1.7 # via # bowler # dask @@ -35,39 +37,40 @@ cloudpickle==2.2.1 # via dask colorama==0.4.6 # via feast (setup.py) -dask==2023.5.1 +dask==2023.9.0 # via feast (setup.py) -dill==0.3.6 +dill==0.3.7 # via feast (setup.py) -exceptiongroup==1.1.1 +exceptiongroup==1.1.3 # via anyio -fastapi==0.95.2 +fastapi==0.103.1 # via feast (setup.py) -fastavro==1.8.1 +fastavro==1.8.2 # via # feast (setup.py) # pandavro fissix==21.11.13 # via bowler -fsspec==2023.5.0 +fsspec==2023.9.0 # via dask -greenlet==2.0.2 - # via sqlalchemy -grpcio==1.54.2 +grpcio==1.57.0 # via # feast (setup.py) # grpcio-reflection -grpcio-reflection==1.54.2 + # grpcio-tools +grpcio-reflection==1.57.0 # via feast (setup.py) -gunicorn==20.1.0 +grpcio-tools==1.57.0 + # via feast (setup.py) +gunicorn==21.2.0 # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn -httpcore==0.17.2 +httpcore==0.17.3 # via httpx -httptools==0.5.0 +httptools==0.6.0 # via uvicorn httpx==0.24.1 # via feast (setup.py) @@ -76,32 +79,38 @@ idna==3.4 # anyio # httpx # requests -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via dask jinja2==3.1.2 # via feast (setup.py) -jsonschema==4.17.3 +jsonschema==4.19.0 # via feast (setup.py) +jsonschema-specifications==2023.7.1 + # via jsonschema locket==1.0.0 # via partd markupsafe==2.1.3 # via jinja2 -mmh3==4.0.0 +mmh3==4.0.1 # via feast (setup.py) moreorless==0.4.0 # via bowler -mypy==1.3.0 +mypy==1.5.1 # via sqlalchemy mypy-extensions==1.0.0 # via mypy -numpy==1.24.3 +mypy-protobuf==3.1 + # via feast (setup.py) +numpy==1.25.2 # via # feast (setup.py) # pandas # pandavro # pyarrow packaging==23.1 - # via dask + # via + # dask + # gunicorn pandas==1.5.3 # via # feast (setup.py) @@ -110,36 +119,44 @@ pandavro==1.5.2 # via feast (setup.py) partd==1.4.0 # via dask -proto-plus==1.22.2 +proto-plus==1.22.3 # via feast (setup.py) -protobuf==4.23.2 +protobuf==4.23.3 # via # feast (setup.py) # grpcio-reflection + # grpcio-tools + # mypy-protobuf # proto-plus pyarrow==11.0.0 # via feast (setup.py) -pydantic==1.10.8 +pydantic==1.10.12 # via # fastapi # feast (setup.py) -pygments==2.15.1 +pygments==2.16.1 # via feast (setup.py) -pyrsistent==0.19.3 - # via jsonschema python-dateutil==2.8.2 # via pandas python-dotenv==1.0.0 # via uvicorn -pytz==2023.3 +pytz==2023.3.post1 # via pandas pyyaml==6.0.1 # via # dask # feast (setup.py) # uvicorn +referencing==0.30.2 + # via + # jsonschema + # jsonschema-specifications requests==2.31.0 # via feast (setup.py) +rpds-py==0.10.2 + # via + # jsonschema + # referencing six==1.16.0 # via # pandavro @@ -149,15 +166,15 @@ sniffio==1.3.0 # anyio # httpcore # httpx -sqlalchemy[mypy]==1.4.48 +sqlalchemy[mypy]==1.4.49 # via feast (setup.py) -sqlalchemy2-stubs==0.0.2a34 +sqlalchemy2-stubs==0.0.2a35 # via sqlalchemy starlette==0.27.0 # via fastapi tabulate==0.9.0 # via feast (setup.py) -tenacity==8.2.2 +tenacity==8.2.3 # via feast (setup.py) toml==0.10.2 # via feast (setup.py) @@ -167,26 +184,33 @@ toolz==0.12.0 # via # dask # partd -tqdm==4.65.0 +tqdm==4.66.1 # via feast (setup.py) typeguard==2.13.3 # via feast (setup.py) -typing-extensions==4.6.3 +types-protobuf==4.24.0.1 + # via mypy-protobuf +typing-extensions==4.7.1 # via + # fastapi # mypy # pydantic # sqlalchemy2-stubs -urllib3==2.0.2 + # uvicorn +urllib3==2.0.4 # via requests -uvicorn[standard]==0.22.0 +uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn volatile==2.1.0 # via bowler -watchfiles==0.19.0 +watchfiles==0.20.0 # via uvicorn websockets==11.0.3 # via uvicorn -zipp==3.15.0 +zipp==3.16.2 # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index de814374b68..34059451107 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -8,7 +8,7 @@ adal==1.2.7 # via msrestazure adlfs==0.5.9 # via feast (setup.py) -aiohttp==3.8.4 +aiohttp==3.8.5 # via # adlfs # gcsfs @@ -18,8 +18,9 @@ alabaster==0.7.13 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.7.0 +anyio==3.7.1 # via + # fastapi # httpcore # jupyter-server # starlette @@ -30,11 +31,8 @@ appnope==0.1.3 # via # ipykernel # ipython -argon2-cffi==21.3.0 - # via - # jupyter-server - # nbclassic - # notebook +argon2-cffi==23.1.0 + # via jupyter-server argon2-cffi-bindings==21.2.0 # via argon2-cffi arrow==1.2.3 @@ -45,9 +43,11 @@ asn1crypto==1.5.1 # snowflake-connector-python assertpy==1.1 # via feast (setup.py) -asttokens==2.2.1 +asttokens==2.4.0 # via stack-data -async-timeout==4.0.2 +async-lru==2.0.4 + # via jupyterlab +async-timeout==4.0.3 # via # aiohttp # redis @@ -56,9 +56,10 @@ attrs==23.1.0 # aiohttp # bowler # jsonschema + # referencing avro==1.10.0 # via feast (setup.py) -azure-core==1.27.0 +azure-core==1.29.3 # via # adlfs # azure-identity @@ -66,16 +67,18 @@ azure-core==1.27.0 # msrest azure-datalake-store==0.0.53 # via adlfs -azure-identity==1.13.0 +azure-identity==1.14.0 # via # adlfs # feast (setup.py) -azure-storage-blob==12.16.0 +azure-storage-blob==12.17.0 # via # adlfs # feast (setup.py) babel==2.12.1 - # via sphinx + # via + # jupyterlab-server + # sphinx backcall==0.2.0 # via ipython backports-zoneinfo==0.2.1 @@ -88,30 +91,30 @@ black==22.12.0 # via feast (setup.py) bleach==6.0.0 # via nbconvert -boto3==1.26.146 +boto3==1.28.40 # via # feast (setup.py) # moto -botocore==1.29.146 +botocore==1.31.40 # via # boto3 # moto # s3transfer bowler==0.9.0 # via feast (setup.py) -build==0.10.0 +build==1.0.0 # via # feast (setup.py) # pip-tools bytewax==0.15.1 # via feast (setup.py) -cachecontrol==0.13.0 +cachecontrol==0.13.1 # via firebase-admin cachetools==5.3.1 # via google-auth -cassandra-driver==3.27.0 +cassandra-driver==3.28.0 # via feast (setup.py) -certifi==2023.5.7 +certifi==2023.7.22 # via # httpcore # httpx @@ -126,14 +129,14 @@ cffi==1.15.1 # azure-datalake-store # cryptography # snowflake-connector-python -cfgv==3.3.1 +cfgv==3.4.0 # via pre-commit -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via # aiohttp # requests # snowflake-connector-python -click==8.1.3 +click==8.1.7 # via # black # bowler @@ -150,16 +153,17 @@ colorama==0.4.6 # via # feast (setup.py) # great-expectations -comm==0.1.3 - # via ipykernel -coverage[toml]==7.2.7 +comm==0.1.4 + # via + # ipykernel + # ipywidgets +coverage[toml]==7.3.0 # via pytest-cov -cryptography==40.0.2 +cryptography==41.0.3 # via # adal # azure-identity # azure-storage-blob - # cassandra-driver # feast (setup.py) # great-expectations # moto @@ -173,7 +177,7 @@ dask==2023.5.0 # via feast (setup.py) db-dtypes==1.1.1 # via google-cloud-bigquery -debugpy==1.6.7 +debugpy==1.6.7.post1 # via ipykernel decorator==5.1.1 # via @@ -185,12 +189,12 @@ deprecated==1.2.14 # via redis deprecation==2.1.0 # via testcontainers -dill==0.3.6 +dill==0.3.7 # via # bytewax # feast (setup.py) # multiprocess -distlib==0.3.6 +distlib==0.3.7 # via virtualenv docker==6.1.3 # via @@ -200,23 +204,23 @@ docutils==0.19 # via sphinx entrypoints==0.4 # via altair -exceptiongroup==1.1.1 +exceptiongroup==1.1.3 # via # anyio # pytest -execnet==1.9.0 +execnet==2.0.2 # via pytest-xdist executing==1.2.0 # via stack-data -fastapi==0.95.2 +fastapi==0.103.1 # via feast (setup.py) -fastavro==1.8.1 +fastavro==1.8.2 # via # feast (setup.py) # pandavro -fastjsonschema==2.17.1 +fastjsonschema==2.18.0 # via nbformat -filelock==3.12.0 +filelock==3.12.3 # via # snowflake-connector-python # virtualenv @@ -224,11 +228,11 @@ firebase-admin==5.4.0 # via feast (setup.py) fissix==21.11.13 # via bowler -flake8==6.0.0 +flake8==6.1.0 # via feast (setup.py) fqdn==1.5.1 # via jsonschema -frozenlist==1.3.3 +frozenlist==1.4.0 # via # aiohttp # aiosignal @@ -243,7 +247,7 @@ geojson==2.5.0 # via rockset geomet==0.2.1.post1 # via cassandra-driver -google-api-core[grpc]==2.11.0 +google-api-core[grpc]==2.11.1 # via # feast (setup.py) # firebase-admin @@ -255,9 +259,9 @@ google-api-core[grpc]==2.11.0 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.88.0 +google-api-python-client==2.97.0 # via firebase-admin -google-auth==2.19.1 +google-auth==2.22.0 # via # gcsfs # google-api-core @@ -271,24 +275,24 @@ google-auth-httplib2==0.1.0 # via google-api-python-client google-auth-oauthlib==1.0.0 # via gcsfs -google-cloud-bigquery[pandas]==3.11.0 +google-cloud-bigquery[pandas]==3.11.4 # via feast (setup.py) -google-cloud-bigquery-storage==2.20.0 +google-cloud-bigquery-storage==2.22.0 # via feast (setup.py) -google-cloud-bigtable==2.18.1 +google-cloud-bigtable==2.21.0 # via feast (setup.py) -google-cloud-core==2.3.2 +google-cloud-core==2.3.3 # via # google-cloud-bigquery # google-cloud-bigtable # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-cloud-datastore==2.15.2 +google-cloud-datastore==2.17.0 # via feast (setup.py) google-cloud-firestore==2.11.1 # via firebase-admin -google-cloud-storage==2.9.0 +google-cloud-storage==2.10.0 # via # feast (setup.py) # firebase-admin @@ -299,7 +303,7 @@ google-resumable-media==2.5.0 # via # google-cloud-bigquery # google-cloud-storage -googleapis-common-protos[grpc]==1.59.0 +googleapis-common-protos[grpc]==1.60.0 # via # feast (setup.py) # google-api-core @@ -307,11 +311,9 @@ googleapis-common-protos[grpc]==1.59.0 # grpcio-status great-expectations==0.15.50 # via feast (setup.py) -greenlet==2.0.2 - # via sqlalchemy grpc-google-iam-v1==0.12.6 # via google-cloud-bigtable -grpcio==1.54.2 +grpcio==1.57.0 # via # feast (setup.py) # google-api-core @@ -322,15 +324,15 @@ grpcio==1.54.2 # grpcio-status # grpcio-testing # grpcio-tools -grpcio-reflection==1.54.2 +grpcio-reflection==1.57.0 # via feast (setup.py) -grpcio-status==1.54.2 +grpcio-status==1.57.0 # via google-api-core -grpcio-testing==1.54.2 +grpcio-testing==1.57.0 # via feast (setup.py) -grpcio-tools==1.54.2 +grpcio-tools==1.57.0 # via feast (setup.py) -gunicorn==20.1.0 +gunicorn==21.2.0 # via feast (setup.py) h11==0.14.0 # via @@ -338,21 +340,21 @@ h11==0.14.0 # uvicorn happybase==1.2.0 # via feast (setup.py) -hazelcast-python-client==5.2.0 +hazelcast-python-client==5.3.0 # via feast (setup.py) hiredis==2.2.3 # via feast (setup.py) -httpcore==0.17.2 +httpcore==0.17.3 # via httpx httplib2==0.22.0 # via # google-api-python-client # google-auth-httplib2 -httptools==0.5.0 +httptools==0.6.0 # via uvicorn httpx==0.24.1 # via feast (setup.py) -identify==2.5.24 +identify==2.5.27 # via pre-commit idna==3.4 # via @@ -364,32 +366,32 @@ idna==3.4 # yarl imagesize==1.4.1 # via sphinx -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via + # build # dask # great-expectations # jupyter-client + # jupyter-lsp + # jupyterlab + # jupyterlab-server # nbconvert # sphinx -importlib-resources==5.12.0 - # via jsonschema +importlib-resources==6.0.1 + # via + # jsonschema + # jsonschema-specifications + # jupyterlab iniconfig==2.0.0 # via pytest -ipykernel==6.23.1 - # via - # ipywidgets - # nbclassic - # notebook +ipykernel==6.25.2 + # via jupyterlab ipython==8.12.2 # via # great-expectations # ipykernel # ipywidgets -ipython-genutils==0.2.0 - # via - # nbclassic - # notebook -ipywidgets==8.0.6 +ipywidgets==8.1.0 # via great-expectations isodate==0.6.1 # via @@ -399,7 +401,7 @@ isoduration==20.11.0 # via jsonschema isort==5.12.0 # via feast (setup.py) -jedi==0.18.2 +jedi==0.19.0 # via ipython jinja2==3.1.2 # via @@ -407,56 +409,69 @@ jinja2==3.1.2 # feast (setup.py) # great-expectations # jupyter-server + # jupyterlab + # jupyterlab-server # moto - # nbclassic # nbconvert - # notebook # sphinx jmespath==1.0.1 # via # boto3 # botocore -jsonpatch==1.32 +json5==0.9.14 + # via jupyterlab-server +jsonpatch==1.33 # via great-expectations -jsonpointer==2.3 +jsonpointer==2.4 # via # jsonpatch # jsonschema -jsonschema[format-nongpl]==4.17.3 +jsonschema[format-nongpl]==4.19.0 # via # altair # feast (setup.py) # great-expectations # jupyter-events + # jupyterlab-server # nbformat -jupyter-client==8.2.0 +jsonschema-specifications==2023.7.1 + # via jsonschema +jupyter-client==8.3.1 # via # ipykernel # jupyter-server - # nbclassic # nbclient - # notebook -jupyter-core==5.3.0 +jupyter-core==5.3.1 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic + # jupyterlab # nbclient # nbconvert # nbformat - # notebook -jupyter-events==0.6.3 +jupyter-events==0.7.0 # via jupyter-server -jupyter-server==2.6.0 +jupyter-lsp==2.2.0 + # via jupyterlab +jupyter-server==2.7.3 # via - # nbclassic + # jupyter-lsp + # jupyterlab + # jupyterlab-server + # notebook # notebook-shim jupyter-server-terminals==0.4.4 # via jupyter-server +jupyterlab==4.0.5 + # via notebook jupyterlab-pygments==0.2.2 # via nbconvert -jupyterlab-widgets==3.0.7 +jupyterlab-server==2.24.0 + # via + # jupyterlab + # notebook +jupyterlab-widgets==3.0.8 # via ipywidgets kubernetes==20.13.0 # via feast (setup.py) @@ -469,7 +484,7 @@ markupsafe==2.1.3 # jinja2 # nbconvert # werkzeug -marshmallow==3.19.0 +marshmallow==3.20.1 # via great-expectations matplotlib-inline==0.1.6 # via @@ -479,19 +494,19 @@ mccabe==0.7.0 # via flake8 minio==7.1.0 # via feast (setup.py) -mistune==2.0.5 +mistune==3.0.1 # via # great-expectations # nbconvert -mmh3==4.0.0 +mmh3==4.0.1 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) moreorless==0.4.0 # via bowler -moto==4.1.10 +moto==4.2.2 # via feast (setup.py) -msal==1.22.0 +msal==1.23.0 # via # azure-datalake-store # azure-identity @@ -508,7 +523,7 @@ multidict==6.0.4 # via # aiohttp # yarl -multiprocess==0.70.14 +multiprocess==0.70.15 # via bytewax mypy==0.982 # via @@ -520,37 +535,29 @@ mypy-extensions==1.0.0 # mypy mypy-protobuf==3.1 # via feast (setup.py) -mysqlclient==2.1.1 +mysqlclient==2.2.0 # via feast (setup.py) -nbclassic==1.0.0 - # via notebook nbclient==0.8.0 # via nbconvert -nbconvert==7.4.0 - # via - # jupyter-server - # nbclassic - # notebook -nbformat==5.9.0 +nbconvert==7.8.0 + # via jupyter-server +nbformat==5.9.2 # via # great-expectations # jupyter-server - # nbclassic # nbclient # nbconvert - # notebook -nest-asyncio==1.5.6 - # via - # ipykernel - # nbclassic - # notebook +nest-asyncio==1.5.7 + # via ipykernel nodeenv==1.8.0 # via pre-commit -notebook==6.5.4 +notebook==7.0.3 # via great-expectations notebook-shim==0.2.3 - # via nbclassic -numpy==1.24.3 + # via + # jupyterlab + # notebook +numpy==1.24.4 # via # altair # db-dtypes @@ -564,7 +571,7 @@ oauthlib==3.2.2 # via requests-oauthlib oscrypto==1.3.0 # via snowflake-connector-python -overrides==7.3.1 +overrides==7.4.0 # via jupyter-server packaging==23.1 # via @@ -575,8 +582,11 @@ packaging==23.1 # docker # google-cloud-bigquery # great-expectations + # gunicorn # ipykernel # jupyter-server + # jupyterlab + # jupyterlab-server # marshmallow # nbconvert # pytest @@ -600,7 +610,7 @@ parso==0.8.3 # via jedi partd==1.4.0 # via dask -pathspec==0.11.1 +pathspec==0.11.2 # via black pbr==5.11.1 # via mock @@ -608,31 +618,29 @@ pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -pip-tools==6.13.0 +pip-tools==7.3.0 # via feast (setup.py) pkgutil-resolve-name==1.3.10 # via jsonschema -platformdirs==3.5.1 +platformdirs==3.8.1 # via # black # jupyter-core + # snowflake-connector-python # virtualenv -pluggy==1.0.0 +pluggy==1.3.0 # via pytest ply==3.11 # via thriftpy2 portalocker==2.7.0 # via msal-extensions -pre-commit==3.3.2 +pre-commit==3.3.1 # via feast (setup.py) -prometheus-client==0.17.0 - # via - # jupyter-server - # nbclassic - # notebook -prompt-toolkit==3.0.38 +prometheus-client==0.17.1 + # via jupyter-server +prompt-toolkit==3.0.39 # via ipython -proto-plus==1.22.2 +proto-plus==1.22.3 # via # feast (setup.py) # google-cloud-bigquery @@ -640,7 +648,7 @@ proto-plus==1.22.2 # google-cloud-bigtable # google-cloud-datastore # google-cloud-firestore -protobuf==4.23.2 +protobuf==4.23.3 # via # feast (setup.py) # google-api-core @@ -661,7 +669,7 @@ psutil==5.9.0 # via # feast (setup.py) # ipykernel -psycopg2-binary==2.9.6 +psycopg2-binary==2.9.7 # via feast (setup.py) ptyprocess==0.7.0 # via @@ -689,49 +697,47 @@ pyasn1-modules==0.3.0 # via google-auth pybindgen==0.22.1 # via feast (setup.py) -pycodestyle==2.10.0 +pycodestyle==2.11.0 # via flake8 pycparser==2.21 # via cffi pycryptodomex==3.18.0 # via snowflake-connector-python -pydantic==1.10.8 +pydantic==1.10.12 # via # fastapi # feast (setup.py) # great-expectations -pyflakes==3.0.1 +pyflakes==3.1.0 # via flake8 -pygments==2.15.1 +pygments==2.16.1 # via # feast (setup.py) # ipython # nbconvert # sphinx -pyjwt[crypto]==2.7.0 +pyjwt[crypto]==2.8.0 # via # adal # msal # snowflake-connector-python pymssql==2.2.8 # via feast (setup.py) -pymysql==1.0.3 +pymysql==1.1.0 # via feast (setup.py) pyodbc==4.0.39 # via feast (setup.py) pyopenssl==23.2.0 # via snowflake-connector-python -pyparsing==3.0.9 +pyparsing==3.1.1 # via # great-expectations # httplib2 pyproject-hooks==1.0.0 # via build -pyrsistent==0.19.3 - # via jsonschema -pyspark==3.4.0 +pyspark==3.4.1 # via feast (setup.py) -pytest==7.3.1 +pytest==7.4.1 # via # feast (setup.py) # pytest-benchmark @@ -772,7 +778,7 @@ python-dotenv==1.0.0 # via uvicorn python-json-logger==2.0.7 # via jupyter-events -pytz==2023.3 +pytz==2023.3.post1 # via # babel # great-expectations @@ -788,16 +794,19 @@ pyyaml==6.0.1 # pre-commit # responses # uvicorn -pyzmq==25.1.0 +pyzmq==25.1.1 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic - # notebook redis==4.2.2 # via feast (setup.py) -regex==2023.5.5 +referencing==0.30.2 + # via + # jsonschema + # jsonschema-specifications + # jupyter-events +regex==2023.8.8 # via feast (setup.py) requests==2.31.0 # via @@ -813,6 +822,7 @@ requests==2.31.0 # google-cloud-bigquery # google-cloud-storage # great-expectations + # jupyterlab-server # kubernetes # moto # msal @@ -827,7 +837,7 @@ requests-oauthlib==1.3.1 # google-auth-oauthlib # kubernetes # msrest -responses==0.23.1 +responses==0.23.3 # via moto rfc3339-validator==0.1.4 # via @@ -837,28 +847,28 @@ rfc3986-validator==0.1.1 # via # jsonschema # jupyter-events -rockset==2.0.0 +rockset==2.1.0 # via feast (setup.py) +rpds-py==0.10.2 + # via + # jsonschema + # referencing rsa==4.9 # via google-auth ruamel-yaml==0.17.17 # via great-expectations ruamel-yaml-clib==0.2.7 # via ruamel-yaml -s3transfer==0.6.1 +s3transfer==0.6.2 # via boto3 scipy==1.10.1 # via great-expectations send2trash==1.8.2 - # via - # jupyter-server - # nbclassic - # notebook + # via jupyter-server six==1.16.0 # via # asttokens # azure-core - # azure-identity # bleach # cassandra-driver # geomet @@ -880,11 +890,11 @@ sniffio==1.3.0 # httpx snowballstemmer==2.2.0 # via sphinx -snowflake-connector-python[pandas]==3.0.4 +snowflake-connector-python[pandas]==3.1.1 # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python -soupsieve==2.4.1 +soupsieve==2.5 # via beautifulsoup4 sphinx==6.2.1 # via feast (setup.py) @@ -900,9 +910,9 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx -sqlalchemy[mypy]==1.4.48 +sqlalchemy[mypy]==1.4.49 # via feast (setup.py) -sqlalchemy2-stubs==0.0.2a34 +sqlalchemy2-stubs==0.0.2a35 # via sqlalchemy stack-data==0.6.2 # via ipython @@ -910,14 +920,12 @@ starlette==0.27.0 # via fastapi tabulate==0.9.0 # via feast (setup.py) -tenacity==8.2.2 +tenacity==8.2.3 # via feast (setup.py) terminado==0.17.1 # via # jupyter-server # jupyter-server-terminals - # nbclassic - # notebook testcontainers==3.7.1 # via feast (setup.py) thriftpy2==0.4.16 @@ -931,23 +939,27 @@ tomli==2.0.1 # black # build # coverage + # jupyterlab # mypy + # pip-tools # pyproject-hooks # pytest +tomlkit==0.12.1 + # via snowflake-connector-python toolz==0.12.0 # via # altair # dask # partd -tornado==6.3.2 +tornado==6.3.3 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic + # jupyterlab # notebook # terminado -tqdm==4.65.0 +tqdm==4.66.1 # via # feast (setup.py) # great-expectations @@ -961,12 +973,11 @@ traitlets==5.9.0 # jupyter-core # jupyter-events # jupyter-server + # jupyterlab # matplotlib-inline - # nbclassic # nbclient # nbconvert # nbformat - # notebook trino==0.326.0 # via feast (setup.py) typeguard==2.13.3 @@ -975,33 +986,36 @@ types-protobuf==3.19.22 # via # feast (setup.py) # mypy-protobuf -types-pymysql==1.0.19.7 +types-pymysql==1.1.0.1 # via feast (setup.py) -types-pyopenssl==23.2.0.0 +types-pyopenssl==23.2.0.2 # via types-redis -types-python-dateutil==2.8.19.13 +types-python-dateutil==2.8.19.14 # via feast (setup.py) -types-pytz==2023.3.0.0 +types-pytz==2023.3.0.1 # via feast (setup.py) -types-pyyaml==6.0.12.10 +types-pyyaml==6.0.12.11 # via # feast (setup.py) # responses -types-redis==4.5.5.2 +types-redis==4.6.0.5 # via feast (setup.py) -types-requests==2.31.0.1 +types-requests==2.31.0.2 # via feast (setup.py) -types-setuptools==67.8.0.0 +types-setuptools==68.1.0.1 # via feast (setup.py) -types-tabulate==0.9.0.2 +types-tabulate==0.9.0.3 # via feast (setup.py) -types-urllib3==1.26.25.13 +types-urllib3==1.26.25.14 # via types-requests -typing-extensions==4.6.3 +typing-extensions==4.7.1 # via + # async-lru # azure-core # azure-storage-blob # black + # fastapi + # filelock # great-expectations # ipython # mypy @@ -1009,11 +1023,12 @@ typing-extensions==4.6.3 # snowflake-connector-python # sqlalchemy2-stubs # starlette + # uvicorn tzlocal==5.0.1 # via # great-expectations # trino -uri-template==1.2.0 +uri-template==1.3.0 # via jsonschema uritemplate==4.1.1 # via google-api-python-client @@ -1030,15 +1045,17 @@ urllib3==1.26.16 # responses # rockset # snowflake-connector-python -uvicorn[standard]==0.22.0 +uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn -virtualenv==20.23.0 - # via pre-commit +virtualenv==20.24.1 + # via + # feast (setup.py) + # pre-commit volatile==2.1.0 # via bowler -watchfiles==0.19.0 +watchfiles==0.20.0 # via uvicorn wcwidth==0.2.6 # via prompt-toolkit @@ -1048,18 +1065,18 @@ webencodings==0.5.1 # via # bleach # tinycss2 -websocket-client==1.5.2 +websocket-client==1.6.2 # via # docker # jupyter-server # kubernetes websockets==11.0.3 # via uvicorn -werkzeug==2.3.4 +werkzeug==2.3.7 # via moto -wheel==0.40.0 +wheel==0.41.2 # via pip-tools -widgetsnbextension==4.0.7 +widgetsnbextension==4.0.8 # via ipywidgets wrapt==1.15.0 # via @@ -1069,7 +1086,7 @@ xmltodict==0.13.0 # via moto yarl==1.9.2 # via aiohttp -zipp==3.15.0 +zipp==3.16.2 # via # importlib-metadata # importlib-resources diff --git a/sdk/python/requirements/py3.8-requirements.txt b/sdk/python/requirements/py3.8-requirements.txt index 55ee6349048..f5feec48803 100644 --- a/sdk/python/requirements/py3.8-requirements.txt +++ b/sdk/python/requirements/py3.8-requirements.txt @@ -4,8 +4,9 @@ # # pip-compile --output-file=sdk/python/requirements/py3.8-requirements.txt # -anyio==3.7.0 +anyio==3.7.1 # via + # fastapi # httpcore # starlette # watchfiles @@ -15,16 +16,17 @@ attrs==23.1.0 # via # bowler # jsonschema + # referencing bowler==0.9.0 # via feast (setup.py) -certifi==2023.5.7 +certifi==2023.7.22 # via # httpcore # httpx # requests -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via requests -click==8.1.3 +click==8.1.7 # via # bowler # dask @@ -37,37 +39,38 @@ colorama==0.4.6 # via feast (setup.py) dask==2023.5.0 # via feast (setup.py) -dill==0.3.6 +dill==0.3.7 # via feast (setup.py) -exceptiongroup==1.1.1 +exceptiongroup==1.1.3 # via anyio -fastapi==0.95.2 +fastapi==0.103.1 # via feast (setup.py) -fastavro==1.8.1 +fastavro==1.8.2 # via # feast (setup.py) # pandavro fissix==21.11.13 # via bowler -fsspec==2023.5.0 +fsspec==2023.9.0 # via dask -greenlet==2.0.2 - # via sqlalchemy -grpcio==1.54.2 +grpcio==1.57.0 # via # feast (setup.py) # grpcio-reflection -grpcio-reflection==1.54.2 + # grpcio-tools +grpcio-reflection==1.57.0 + # via feast (setup.py) +grpcio-tools==1.57.0 # via feast (setup.py) -gunicorn==20.1.0 +gunicorn==21.2.0 # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn -httpcore==0.17.2 +httpcore==0.17.3 # via httpx -httptools==0.5.0 +httptools==0.6.0 # via uvicorn httpx==0.24.1 # via feast (setup.py) @@ -76,34 +79,42 @@ idna==3.4 # anyio # httpx # requests -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via dask -importlib-resources==5.12.0 - # via jsonschema +importlib-resources==6.0.1 + # via + # jsonschema + # jsonschema-specifications jinja2==3.1.2 # via feast (setup.py) -jsonschema==4.17.3 +jsonschema==4.19.0 # via feast (setup.py) +jsonschema-specifications==2023.7.1 + # via jsonschema locket==1.0.0 # via partd markupsafe==2.1.3 # via jinja2 -mmh3==4.0.0 +mmh3==4.0.1 # via feast (setup.py) moreorless==0.4.0 # via bowler -mypy==1.3.0 +mypy==1.5.1 # via sqlalchemy mypy-extensions==1.0.0 # via mypy -numpy==1.24.3 +mypy-protobuf==3.1 + # via feast (setup.py) +numpy==1.24.4 # via # feast (setup.py) # pandas # pandavro # pyarrow packaging==23.1 - # via dask + # via + # dask + # gunicorn pandas==1.5.3 # via # feast (setup.py) @@ -114,36 +125,44 @@ partd==1.4.0 # via dask pkgutil-resolve-name==1.3.10 # via jsonschema -proto-plus==1.22.2 +proto-plus==1.22.3 # via feast (setup.py) -protobuf==4.23.2 +protobuf==4.23.3 # via # feast (setup.py) # grpcio-reflection + # grpcio-tools + # mypy-protobuf # proto-plus pyarrow==11.0.0 # via feast (setup.py) -pydantic==1.10.8 +pydantic==1.10.12 # via # fastapi # feast (setup.py) -pygments==2.15.1 +pygments==2.16.1 # via feast (setup.py) -pyrsistent==0.19.3 - # via jsonschema python-dateutil==2.8.2 # via pandas python-dotenv==1.0.0 # via uvicorn -pytz==2023.3 +pytz==2023.3.post1 # via pandas pyyaml==6.0.1 # via # dask # feast (setup.py) # uvicorn +referencing==0.30.2 + # via + # jsonschema + # jsonschema-specifications requests==2.31.0 # via feast (setup.py) +rpds-py==0.10.2 + # via + # jsonschema + # referencing six==1.16.0 # via # pandavro @@ -153,15 +172,15 @@ sniffio==1.3.0 # anyio # httpcore # httpx -sqlalchemy[mypy]==1.4.48 +sqlalchemy[mypy]==1.4.49 # via feast (setup.py) -sqlalchemy2-stubs==0.0.2a34 +sqlalchemy2-stubs==0.0.2a35 # via sqlalchemy starlette==0.27.0 # via fastapi tabulate==0.9.0 # via feast (setup.py) -tenacity==8.2.2 +tenacity==8.2.3 # via feast (setup.py) toml==0.10.2 # via feast (setup.py) @@ -171,29 +190,36 @@ toolz==0.12.0 # via # dask # partd -tqdm==4.65.0 +tqdm==4.66.1 # via feast (setup.py) typeguard==2.13.3 # via feast (setup.py) -typing-extensions==4.6.3 +types-protobuf==4.24.0.1 + # via mypy-protobuf +typing-extensions==4.7.1 # via + # fastapi # mypy # pydantic # sqlalchemy2-stubs # starlette -urllib3==2.0.2 + # uvicorn +urllib3==2.0.4 # via requests -uvicorn[standard]==0.22.0 +uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn volatile==2.1.0 # via bowler -watchfiles==0.19.0 +watchfiles==0.20.0 # via uvicorn websockets==11.0.3 # via uvicorn -zipp==3.15.0 +zipp==3.16.2 # via # importlib-metadata # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index aa79b8ec3be..d203765ee72 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -1,6 +1,6 @@ # -# This file is autogenerated by pip-compile with python 3.9 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: # # pip-compile --extra=ci --output-file=sdk/python/requirements/py3.9-ci-requirements.txt # @@ -8,7 +8,7 @@ adal==1.2.7 # via msrestazure adlfs==0.5.9 # via feast (setup.py) -aiohttp==3.8.4 +aiohttp==3.8.5 # via # adlfs # gcsfs @@ -18,8 +18,9 @@ alabaster==0.7.13 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.7.0 +anyio==3.7.1 # via + # fastapi # httpcore # jupyter-server # starlette @@ -30,11 +31,8 @@ appnope==0.1.3 # via # ipykernel # ipython -argon2-cffi==21.3.0 - # via - # jupyter-server - # nbclassic - # notebook +argon2-cffi==23.1.0 + # via jupyter-server argon2-cffi-bindings==21.2.0 # via argon2-cffi arrow==1.2.3 @@ -45,9 +43,11 @@ asn1crypto==1.5.1 # snowflake-connector-python assertpy==1.1 # via feast (setup.py) -asttokens==2.2.1 +asttokens==2.4.0 # via stack-data -async-timeout==4.0.2 +async-lru==2.0.4 + # via jupyterlab +async-timeout==4.0.3 # via # aiohttp # redis @@ -56,9 +56,10 @@ attrs==23.1.0 # aiohttp # bowler # jsonschema + # referencing avro==1.10.0 # via feast (setup.py) -azure-core==1.27.0 +azure-core==1.29.3 # via # adlfs # azure-identity @@ -66,16 +67,18 @@ azure-core==1.27.0 # msrest azure-datalake-store==0.0.53 # via adlfs -azure-identity==1.13.0 +azure-identity==1.14.0 # via # adlfs # feast (setup.py) -azure-storage-blob==12.16.0 +azure-storage-blob==12.17.0 # via # adlfs # feast (setup.py) babel==2.12.1 - # via sphinx + # via + # jupyterlab-server + # sphinx backcall==0.2.0 # via ipython beautifulsoup4==4.12.2 @@ -84,30 +87,30 @@ black==22.12.0 # via feast (setup.py) bleach==6.0.0 # via nbconvert -boto3==1.26.146 +boto3==1.28.40 # via # feast (setup.py) # moto -botocore==1.29.146 +botocore==1.31.40 # via # boto3 # moto # s3transfer bowler==0.9.0 # via feast (setup.py) -build==0.10.0 +build==1.0.0 # via # feast (setup.py) # pip-tools bytewax==0.15.1 # via feast (setup.py) -cachecontrol==0.13.0 +cachecontrol==0.13.1 # via firebase-admin cachetools==5.3.1 # via google-auth -cassandra-driver==3.27.0 +cassandra-driver==3.28.0 # via feast (setup.py) -certifi==2023.5.7 +certifi==2023.7.22 # via # httpcore # httpx @@ -122,14 +125,14 @@ cffi==1.15.1 # azure-datalake-store # cryptography # snowflake-connector-python -cfgv==3.3.1 +cfgv==3.4.0 # via pre-commit -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via # aiohttp # requests # snowflake-connector-python -click==8.1.3 +click==8.1.7 # via # black # bowler @@ -146,16 +149,17 @@ colorama==0.4.6 # via # feast (setup.py) # great-expectations -comm==0.1.3 - # via ipykernel -coverage[toml]==7.2.7 +comm==0.1.4 + # via + # ipykernel + # ipywidgets +coverage[toml]==7.3.0 # via pytest-cov -cryptography==40.0.2 +cryptography==41.0.3 # via # adal # azure-identity # azure-storage-blob - # cassandra-driver # feast (setup.py) # great-expectations # moto @@ -165,11 +169,11 @@ cryptography==40.0.2 # snowflake-connector-python # types-pyopenssl # types-redis -dask==2023.5.1 +dask==2023.9.0 # via feast (setup.py) db-dtypes==1.1.1 # via google-cloud-bigquery -debugpy==1.6.7 +debugpy==1.6.7.post1 # via ipykernel decorator==5.1.1 # via @@ -181,12 +185,12 @@ deprecated==1.2.14 # via redis deprecation==2.1.0 # via testcontainers -dill==0.3.6 +dill==0.3.7 # via # bytewax # feast (setup.py) # multiprocess -distlib==0.3.6 +distlib==0.3.7 # via virtualenv docker==6.1.3 # via @@ -196,23 +200,24 @@ docutils==0.19 # via sphinx entrypoints==0.4 # via altair -exceptiongroup==1.1.1 +exceptiongroup==1.1.3 # via # anyio + # ipython # pytest -execnet==1.9.0 +execnet==2.0.2 # via pytest-xdist executing==1.2.0 # via stack-data -fastapi==0.95.2 +fastapi==0.103.1 # via feast (setup.py) -fastavro==1.8.1 +fastavro==1.8.2 # via # feast (setup.py) # pandavro -fastjsonschema==2.17.1 +fastjsonschema==2.18.0 # via nbformat -filelock==3.12.0 +filelock==3.12.3 # via # snowflake-connector-python # virtualenv @@ -220,11 +225,11 @@ firebase-admin==5.4.0 # via feast (setup.py) fissix==21.11.13 # via bowler -flake8==6.0.0 +flake8==6.1.0 # via feast (setup.py) fqdn==1.5.1 # via jsonschema -frozenlist==1.3.3 +frozenlist==1.4.0 # via # aiohttp # aiosignal @@ -239,7 +244,7 @@ geojson==2.5.0 # via rockset geomet==0.2.1.post1 # via cassandra-driver -google-api-core[grpc]==2.11.0 +google-api-core[grpc]==2.11.1 # via # feast (setup.py) # firebase-admin @@ -251,9 +256,9 @@ google-api-core[grpc]==2.11.0 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.88.0 +google-api-python-client==2.97.0 # via firebase-admin -google-auth==2.19.1 +google-auth==2.22.0 # via # gcsfs # google-api-core @@ -267,24 +272,24 @@ google-auth-httplib2==0.1.0 # via google-api-python-client google-auth-oauthlib==1.0.0 # via gcsfs -google-cloud-bigquery[pandas]==3.11.0 +google-cloud-bigquery[pandas]==3.11.4 # via feast (setup.py) -google-cloud-bigquery-storage==2.20.0 +google-cloud-bigquery-storage==2.22.0 # via feast (setup.py) -google-cloud-bigtable==2.18.1 +google-cloud-bigtable==2.21.0 # via feast (setup.py) -google-cloud-core==2.3.2 +google-cloud-core==2.3.3 # via # google-cloud-bigquery # google-cloud-bigtable # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-cloud-datastore==2.15.2 +google-cloud-datastore==2.17.0 # via feast (setup.py) google-cloud-firestore==2.11.1 # via firebase-admin -google-cloud-storage==2.9.0 +google-cloud-storage==2.10.0 # via # feast (setup.py) # firebase-admin @@ -295,7 +300,7 @@ google-resumable-media==2.5.0 # via # google-cloud-bigquery # google-cloud-storage -googleapis-common-protos[grpc]==1.59.0 +googleapis-common-protos[grpc]==1.60.0 # via # feast (setup.py) # google-api-core @@ -303,11 +308,9 @@ googleapis-common-protos[grpc]==1.59.0 # grpcio-status great-expectations==0.15.50 # via feast (setup.py) -greenlet==2.0.2 - # via sqlalchemy grpc-google-iam-v1==0.12.6 # via google-cloud-bigtable -grpcio==1.54.2 +grpcio==1.57.0 # via # feast (setup.py) # google-api-core @@ -318,15 +321,15 @@ grpcio==1.54.2 # grpcio-status # grpcio-testing # grpcio-tools -grpcio-reflection==1.54.2 +grpcio-reflection==1.57.0 # via feast (setup.py) -grpcio-status==1.54.2 +grpcio-status==1.57.0 # via google-api-core -grpcio-testing==1.54.2 +grpcio-testing==1.57.0 # via feast (setup.py) -grpcio-tools==1.54.2 +grpcio-tools==1.57.0 # via feast (setup.py) -gunicorn==20.1.0 +gunicorn==21.2.0 # via feast (setup.py) h11==0.14.0 # via @@ -334,21 +337,21 @@ h11==0.14.0 # uvicorn happybase==1.2.0 # via feast (setup.py) -hazelcast-python-client==5.2.0 +hazelcast-python-client==5.3.0 # via feast (setup.py) hiredis==2.2.3 # via feast (setup.py) -httpcore==0.17.2 +httpcore==0.17.3 # via httpx httplib2==0.22.0 # via # google-api-python-client # google-auth-httplib2 -httptools==0.5.0 +httptools==0.6.0 # via uvicorn httpx==0.24.1 # via feast (setup.py) -identify==2.5.24 +identify==2.5.27 # via pre-commit idna==3.4 # via @@ -360,30 +363,27 @@ idna==3.4 # yarl imagesize==1.4.1 # via sphinx -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via + # build # dask # great-expectations # jupyter-client + # jupyter-lsp + # jupyterlab + # jupyterlab-server # nbconvert # sphinx iniconfig==2.0.0 # via pytest -ipykernel==6.23.1 - # via - # ipywidgets - # nbclassic - # notebook -ipython==8.14.0 +ipykernel==6.25.2 + # via jupyterlab +ipython==8.15.0 # via # great-expectations # ipykernel # ipywidgets -ipython-genutils==0.2.0 - # via - # nbclassic - # notebook -ipywidgets==8.0.6 +ipywidgets==8.1.0 # via great-expectations isodate==0.6.1 # via @@ -393,7 +393,7 @@ isoduration==20.11.0 # via jsonschema isort==5.12.0 # via feast (setup.py) -jedi==0.18.2 +jedi==0.19.0 # via ipython jinja2==3.1.2 # via @@ -401,56 +401,69 @@ jinja2==3.1.2 # feast (setup.py) # great-expectations # jupyter-server + # jupyterlab + # jupyterlab-server # moto - # nbclassic # nbconvert - # notebook # sphinx jmespath==1.0.1 # via # boto3 # botocore -jsonpatch==1.32 +json5==0.9.14 + # via jupyterlab-server +jsonpatch==1.33 # via great-expectations -jsonpointer==2.3 +jsonpointer==2.4 # via # jsonpatch # jsonschema -jsonschema[format-nongpl]==4.17.3 +jsonschema[format-nongpl]==4.19.0 # via # altair # feast (setup.py) # great-expectations # jupyter-events + # jupyterlab-server # nbformat -jupyter-client==8.2.0 +jsonschema-specifications==2023.7.1 + # via jsonschema +jupyter-client==8.3.1 # via # ipykernel # jupyter-server - # nbclassic # nbclient - # notebook -jupyter-core==5.3.0 +jupyter-core==5.3.1 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic + # jupyterlab # nbclient # nbconvert # nbformat - # notebook -jupyter-events==0.6.3 +jupyter-events==0.7.0 # via jupyter-server -jupyter-server==2.6.0 +jupyter-lsp==2.2.0 + # via jupyterlab +jupyter-server==2.7.3 # via - # nbclassic + # jupyter-lsp + # jupyterlab + # jupyterlab-server + # notebook # notebook-shim jupyter-server-terminals==0.4.4 # via jupyter-server +jupyterlab==4.0.5 + # via notebook jupyterlab-pygments==0.2.2 # via nbconvert -jupyterlab-widgets==3.0.7 +jupyterlab-server==2.24.0 + # via + # jupyterlab + # notebook +jupyterlab-widgets==3.0.8 # via ipywidgets kubernetes==20.13.0 # via feast (setup.py) @@ -463,7 +476,7 @@ markupsafe==2.1.3 # jinja2 # nbconvert # werkzeug -marshmallow==3.19.0 +marshmallow==3.20.1 # via great-expectations matplotlib-inline==0.1.6 # via @@ -473,19 +486,19 @@ mccabe==0.7.0 # via flake8 minio==7.1.0 # via feast (setup.py) -mistune==2.0.5 +mistune==3.0.1 # via # great-expectations # nbconvert -mmh3==4.0.0 +mmh3==4.0.1 # via feast (setup.py) mock==2.0.0 # via feast (setup.py) moreorless==0.4.0 # via bowler -moto==4.1.10 +moto==4.2.2 # via feast (setup.py) -msal==1.22.0 +msal==1.23.0 # via # azure-datalake-store # azure-identity @@ -502,7 +515,7 @@ multidict==6.0.4 # via # aiohttp # yarl -multiprocess==0.70.14 +multiprocess==0.70.15 # via bytewax mypy==0.982 # via @@ -514,37 +527,29 @@ mypy-extensions==1.0.0 # mypy mypy-protobuf==3.1 # via feast (setup.py) -mysqlclient==2.1.1 +mysqlclient==2.2.0 # via feast (setup.py) -nbclassic==1.0.0 - # via notebook nbclient==0.8.0 # via nbconvert -nbconvert==7.4.0 - # via - # jupyter-server - # nbclassic - # notebook -nbformat==5.9.0 +nbconvert==7.8.0 + # via jupyter-server +nbformat==5.9.2 # via # great-expectations # jupyter-server - # nbclassic # nbclient # nbconvert - # notebook -nest-asyncio==1.5.6 - # via - # ipykernel - # nbclassic - # notebook +nest-asyncio==1.5.7 + # via ipykernel nodeenv==1.8.0 # via pre-commit -notebook==6.5.4 +notebook==7.0.3 # via great-expectations notebook-shim==0.2.3 - # via nbclassic -numpy==1.24.3 + # via + # jupyterlab + # notebook +numpy==1.25.2 # via # altair # db-dtypes @@ -558,7 +563,7 @@ oauthlib==3.2.2 # via requests-oauthlib oscrypto==1.3.0 # via snowflake-connector-python -overrides==7.3.1 +overrides==7.4.0 # via jupyter-server packaging==23.1 # via @@ -569,8 +574,11 @@ packaging==23.1 # docker # google-cloud-bigquery # great-expectations + # gunicorn # ipykernel # jupyter-server + # jupyterlab + # jupyterlab-server # marshmallow # nbconvert # pytest @@ -594,7 +602,7 @@ parso==0.8.3 # via jedi partd==1.4.0 # via dask -pathspec==0.11.1 +pathspec==0.11.2 # via black pbr==5.11.1 # via mock @@ -602,29 +610,27 @@ pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -pip-tools==6.13.0 +pip-tools==7.3.0 # via feast (setup.py) -platformdirs==3.5.1 +platformdirs==3.8.1 # via # black # jupyter-core + # snowflake-connector-python # virtualenv -pluggy==1.0.0 +pluggy==1.3.0 # via pytest ply==3.11 # via thriftpy2 portalocker==2.7.0 # via msal-extensions -pre-commit==3.3.2 +pre-commit==3.3.1 # via feast (setup.py) -prometheus-client==0.17.0 - # via - # jupyter-server - # nbclassic - # notebook -prompt-toolkit==3.0.38 +prometheus-client==0.17.1 + # via jupyter-server +prompt-toolkit==3.0.39 # via ipython -proto-plus==1.22.2 +proto-plus==1.22.3 # via # feast (setup.py) # google-cloud-bigquery @@ -632,7 +638,7 @@ proto-plus==1.22.2 # google-cloud-bigtable # google-cloud-datastore # google-cloud-firestore -protobuf==4.23.2 +protobuf==4.23.3 # via # feast (setup.py) # google-api-core @@ -653,7 +659,7 @@ psutil==5.9.0 # via # feast (setup.py) # ipykernel -psycopg2-binary==2.9.6 +psycopg2-binary==2.9.7 # via feast (setup.py) ptyprocess==0.7.0 # via @@ -681,49 +687,47 @@ pyasn1-modules==0.3.0 # via google-auth pybindgen==0.22.1 # via feast (setup.py) -pycodestyle==2.10.0 +pycodestyle==2.11.0 # via flake8 pycparser==2.21 # via cffi pycryptodomex==3.18.0 # via snowflake-connector-python -pydantic==1.10.8 +pydantic==1.10.12 # via # fastapi # feast (setup.py) # great-expectations -pyflakes==3.0.1 +pyflakes==3.1.0 # via flake8 -pygments==2.15.1 +pygments==2.16.1 # via # feast (setup.py) # ipython # nbconvert # sphinx -pyjwt[crypto]==2.7.0 +pyjwt[crypto]==2.8.0 # via # adal # msal # snowflake-connector-python pymssql==2.2.8 # via feast (setup.py) -pymysql==1.0.3 +pymysql==1.1.0 # via feast (setup.py) pyodbc==4.0.39 # via feast (setup.py) pyopenssl==23.2.0 # via snowflake-connector-python -pyparsing==3.0.9 +pyparsing==3.1.1 # via # great-expectations # httplib2 pyproject-hooks==1.0.0 # via build -pyrsistent==0.19.3 - # via jsonschema -pyspark==3.4.0 +pyspark==3.4.1 # via feast (setup.py) -pytest==7.3.1 +pytest==7.4.1 # via # feast (setup.py) # pytest-benchmark @@ -764,7 +768,7 @@ python-dotenv==1.0.0 # via uvicorn python-json-logger==2.0.7 # via jupyter-events -pytz==2023.3 +pytz==2023.3.post1 # via # great-expectations # pandas @@ -779,16 +783,19 @@ pyyaml==6.0.1 # pre-commit # responses # uvicorn -pyzmq==25.1.0 +pyzmq==25.1.1 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic - # notebook redis==4.2.2 # via feast (setup.py) -regex==2023.5.5 +referencing==0.30.2 + # via + # jsonschema + # jsonschema-specifications + # jupyter-events +regex==2023.8.8 # via feast (setup.py) requests==2.31.0 # via @@ -804,6 +811,7 @@ requests==2.31.0 # google-cloud-bigquery # google-cloud-storage # great-expectations + # jupyterlab-server # kubernetes # moto # msal @@ -818,7 +826,7 @@ requests-oauthlib==1.3.1 # google-auth-oauthlib # kubernetes # msrest -responses==0.23.1 +responses==0.23.3 # via moto rfc3339-validator==0.1.4 # via @@ -828,28 +836,28 @@ rfc3986-validator==0.1.1 # via # jsonschema # jupyter-events -rockset==2.0.0 +rockset==2.1.0 # via feast (setup.py) +rpds-py==0.10.2 + # via + # jsonschema + # referencing rsa==4.9 # via google-auth ruamel-yaml==0.17.17 # via great-expectations ruamel-yaml-clib==0.2.7 # via ruamel-yaml -s3transfer==0.6.1 +s3transfer==0.6.2 # via boto3 -scipy==1.10.1 +scipy==1.11.2 # via great-expectations send2trash==1.8.2 - # via - # jupyter-server - # nbclassic - # notebook + # via jupyter-server six==1.16.0 # via # asttokens # azure-core - # azure-identity # bleach # cassandra-driver # geomet @@ -871,29 +879,35 @@ sniffio==1.3.0 # httpx snowballstemmer==2.2.0 # via sphinx -snowflake-connector-python[pandas]==3.0.4 +snowflake-connector-python[pandas]==3.1.1 # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python -soupsieve==2.4.1 +soupsieve==2.5 # via beautifulsoup4 sphinx==6.2.1 - # via feast (setup.py) -sphinxcontrib-applehelp==1.0.4 + # via + # feast (setup.py) + # sphinxcontrib-applehelp + # sphinxcontrib-devhelp + # sphinxcontrib-htmlhelp + # sphinxcontrib-qthelp + # sphinxcontrib-serializinghtml +sphinxcontrib-applehelp==1.0.7 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-devhelp==1.0.5 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-htmlhelp==2.0.4 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==1.0.6 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==1.1.9 # via sphinx -sqlalchemy[mypy]==1.4.48 +sqlalchemy[mypy]==1.4.49 # via feast (setup.py) -sqlalchemy2-stubs==0.0.2a34 +sqlalchemy2-stubs==0.0.2a35 # via sqlalchemy stack-data==0.6.2 # via ipython @@ -901,14 +915,12 @@ starlette==0.27.0 # via fastapi tabulate==0.9.0 # via feast (setup.py) -tenacity==8.2.2 +tenacity==8.2.3 # via feast (setup.py) terminado==0.17.1 # via # jupyter-server # jupyter-server-terminals - # nbclassic - # notebook testcontainers==3.7.1 # via feast (setup.py) thriftpy2==0.4.16 @@ -922,23 +934,27 @@ tomli==2.0.1 # black # build # coverage + # jupyterlab # mypy + # pip-tools # pyproject-hooks # pytest +tomlkit==0.12.1 + # via snowflake-connector-python toolz==0.12.0 # via # altair # dask # partd -tornado==6.3.2 +tornado==6.3.3 # via # ipykernel # jupyter-client # jupyter-server - # nbclassic + # jupyterlab # notebook # terminado -tqdm==4.65.0 +tqdm==4.66.1 # via # feast (setup.py) # great-expectations @@ -952,12 +968,11 @@ traitlets==5.9.0 # jupyter-core # jupyter-events # jupyter-server + # jupyterlab # matplotlib-inline - # nbclassic # nbclient # nbconvert # nbformat - # notebook trino==0.326.0 # via feast (setup.py) typeguard==2.13.3 @@ -966,33 +981,36 @@ types-protobuf==3.19.22 # via # feast (setup.py) # mypy-protobuf -types-pymysql==1.0.19.7 +types-pymysql==1.1.0.1 # via feast (setup.py) -types-pyopenssl==23.2.0.0 +types-pyopenssl==23.2.0.2 # via types-redis -types-python-dateutil==2.8.19.13 +types-python-dateutil==2.8.19.14 # via feast (setup.py) -types-pytz==2023.3.0.0 +types-pytz==2023.3.0.1 # via feast (setup.py) -types-pyyaml==6.0.12.10 +types-pyyaml==6.0.12.11 # via # feast (setup.py) # responses -types-redis==4.5.5.2 +types-redis==4.6.0.5 # via feast (setup.py) -types-requests==2.31.0.1 +types-requests==2.31.0.2 # via feast (setup.py) -types-setuptools==67.8.0.0 +types-setuptools==68.1.0.1 # via feast (setup.py) -types-tabulate==0.9.0.2 +types-tabulate==0.9.0.3 # via feast (setup.py) -types-urllib3==1.26.25.13 +types-urllib3==1.26.25.14 # via types-requests -typing-extensions==4.6.3 +typing-extensions==4.7.1 # via + # async-lru # azure-core # azure-storage-blob # black + # fastapi + # filelock # great-expectations # ipython # mypy @@ -1000,11 +1018,12 @@ typing-extensions==4.6.3 # snowflake-connector-python # sqlalchemy2-stubs # starlette + # uvicorn tzlocal==5.0.1 # via # great-expectations # trino -uri-template==1.2.0 +uri-template==1.3.0 # via jsonschema uritemplate==4.1.1 # via google-api-python-client @@ -1021,15 +1040,17 @@ urllib3==1.26.16 # responses # rockset # snowflake-connector-python -uvicorn[standard]==0.22.0 +uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn -virtualenv==20.23.0 - # via pre-commit +virtualenv==20.24.1 + # via + # feast (setup.py) + # pre-commit volatile==2.1.0 # via bowler -watchfiles==0.19.0 +watchfiles==0.20.0 # via uvicorn wcwidth==0.2.6 # via prompt-toolkit @@ -1039,18 +1060,18 @@ webencodings==0.5.1 # via # bleach # tinycss2 -websocket-client==1.5.2 +websocket-client==1.6.2 # via # docker # jupyter-server # kubernetes websockets==11.0.3 # via uvicorn -werkzeug==2.3.4 +werkzeug==2.3.7 # via moto -wheel==0.40.0 +wheel==0.41.2 # via pip-tools -widgetsnbextension==4.0.7 +widgetsnbextension==4.0.8 # via ipywidgets wrapt==1.15.0 # via @@ -1060,7 +1081,7 @@ xmltodict==0.13.0 # via moto yarl==1.9.2 # via aiohttp -zipp==3.15.0 +zipp==3.16.2 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 53b0ff0e584..4f66078f02d 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -1,11 +1,12 @@ # -# This file is autogenerated by pip-compile with python 3.9 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: # # pip-compile --output-file=sdk/python/requirements/py3.9-requirements.txt # -anyio==3.7.0 +anyio==3.7.1 # via + # fastapi # httpcore # starlette # watchfiles @@ -15,16 +16,17 @@ attrs==23.1.0 # via # bowler # jsonschema + # referencing bowler==0.9.0 # via feast (setup.py) -certifi==2023.5.7 +certifi==2023.7.22 # via # httpcore # httpx # requests -charset-normalizer==3.1.0 +charset-normalizer==3.2.0 # via requests -click==8.1.3 +click==8.1.7 # via # bowler # dask @@ -35,39 +37,40 @@ cloudpickle==2.2.1 # via dask colorama==0.4.6 # via feast (setup.py) -dask==2023.5.1 +dask==2023.9.0 # via feast (setup.py) -dill==0.3.6 +dill==0.3.7 # via feast (setup.py) -exceptiongroup==1.1.1 +exceptiongroup==1.1.3 # via anyio -fastapi==0.95.2 +fastapi==0.103.1 # via feast (setup.py) -fastavro==1.8.1 +fastavro==1.8.2 # via # feast (setup.py) # pandavro fissix==21.11.13 # via bowler -fsspec==2023.5.0 +fsspec==2023.9.0 # via dask -greenlet==2.0.2 - # via sqlalchemy -grpcio==1.54.2 +grpcio==1.57.0 # via # feast (setup.py) # grpcio-reflection -grpcio-reflection==1.54.2 + # grpcio-tools +grpcio-reflection==1.57.0 # via feast (setup.py) -gunicorn==20.1.0 +grpcio-tools==1.57.0 + # via feast (setup.py) +gunicorn==21.2.0 # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn -httpcore==0.17.2 +httpcore==0.17.3 # via httpx -httptools==0.5.0 +httptools==0.6.0 # via uvicorn httpx==0.24.1 # via feast (setup.py) @@ -76,32 +79,38 @@ idna==3.4 # anyio # httpx # requests -importlib-metadata==6.6.0 +importlib-metadata==6.8.0 # via dask jinja2==3.1.2 # via feast (setup.py) -jsonschema==4.17.3 +jsonschema==4.19.0 # via feast (setup.py) +jsonschema-specifications==2023.7.1 + # via jsonschema locket==1.0.0 # via partd markupsafe==2.1.3 # via jinja2 -mmh3==4.0.0 +mmh3==4.0.1 # via feast (setup.py) moreorless==0.4.0 # via bowler -mypy==1.3.0 +mypy==1.5.1 # via sqlalchemy mypy-extensions==1.0.0 # via mypy -numpy==1.24.3 +mypy-protobuf==3.1 + # via feast (setup.py) +numpy==1.25.2 # via # feast (setup.py) # pandas # pandavro # pyarrow packaging==23.1 - # via dask + # via + # dask + # gunicorn pandas==1.5.3 # via # feast (setup.py) @@ -110,36 +119,44 @@ pandavro==1.5.2 # via feast (setup.py) partd==1.4.0 # via dask -proto-plus==1.22.2 +proto-plus==1.22.3 # via feast (setup.py) -protobuf==4.23.2 +protobuf==4.23.3 # via # feast (setup.py) # grpcio-reflection + # grpcio-tools + # mypy-protobuf # proto-plus pyarrow==11.0.0 # via feast (setup.py) -pydantic==1.10.8 +pydantic==1.10.12 # via # fastapi # feast (setup.py) -pygments==2.15.1 +pygments==2.16.1 # via feast (setup.py) -pyrsistent==0.19.3 - # via jsonschema python-dateutil==2.8.2 # via pandas python-dotenv==1.0.0 # via uvicorn -pytz==2023.3 +pytz==2023.3.post1 # via pandas pyyaml==6.0.1 # via # dask # feast (setup.py) # uvicorn +referencing==0.30.2 + # via + # jsonschema + # jsonschema-specifications requests==2.31.0 # via feast (setup.py) +rpds-py==0.10.2 + # via + # jsonschema + # referencing six==1.16.0 # via # pandavro @@ -149,15 +166,15 @@ sniffio==1.3.0 # anyio # httpcore # httpx -sqlalchemy[mypy]==1.4.48 +sqlalchemy[mypy]==1.4.49 # via feast (setup.py) -sqlalchemy2-stubs==0.0.2a34 +sqlalchemy2-stubs==0.0.2a35 # via sqlalchemy starlette==0.27.0 # via fastapi tabulate==0.9.0 # via feast (setup.py) -tenacity==8.2.2 +tenacity==8.2.3 # via feast (setup.py) toml==0.10.2 # via feast (setup.py) @@ -167,27 +184,34 @@ toolz==0.12.0 # via # dask # partd -tqdm==4.65.0 +tqdm==4.66.1 # via feast (setup.py) typeguard==2.13.3 # via feast (setup.py) -typing-extensions==4.6.3 +types-protobuf==4.24.0.1 + # via mypy-protobuf +typing-extensions==4.7.1 # via + # fastapi # mypy # pydantic # sqlalchemy2-stubs # starlette -urllib3==2.0.2 + # uvicorn +urllib3==2.0.4 # via requests -uvicorn[standard]==0.22.0 +uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn volatile==2.1.0 # via bowler -watchfiles==0.19.0 +watchfiles==0.20.0 # via uvicorn websockets==11.0.3 # via uvicorn -zipp==3.15.0 +zipp==3.16.2 # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/setup.py b/setup.py index f10322ed8a3..839dc23ffa1 100644 --- a/setup.py +++ b/setup.py @@ -47,7 +47,9 @@ "dill~=0.3.0", "fastavro>=1.1.0,<2", "grpcio>=1.47.0,<2", + "grpcio-tools>=1.47.0", "grpcio-reflection>=1.47.0,<2", + "mypy-protobuf==3.1", "Jinja2>=2,<4", "jsonschema", "mmh3", @@ -146,13 +148,11 @@ "flake8", "black>=22.6.0,<23", "isort>=5,<6", - "grpcio-tools>=1.47.0", "grpcio-testing>=1.47.0", "minio==7.1.0", "mock==2.0.0", "moto", "mypy>=0.981,<0.990", - "mypy-protobuf==3.1", "avro==1.10.0", "gcsfs>=0.4.0,<=2022.01.0", "urllib3>=1.25.4,<2", @@ -170,7 +170,7 @@ "testcontainers>=3.5,<4", "adlfs==0.5.9", "firebase-admin>=5.2.0,<6", - "pre-commit", + "pre-commit<3.3.2", "assertpy==1.1", "pip-tools", "pybindgen", @@ -182,6 +182,7 @@ "types-requests", "types-setuptools", "types-tabulate", + "virtualenv<20.24.2" ] + GCP_REQUIRED + REDIS_REQUIRED From 1b4bf8d169a52928d45a88a136f76da7ae4719c7 Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Sat, 15 Jul 2023 18:36:22 +0300 Subject: [PATCH 02/15] [lint-python] Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- sdk/python/feast/cli.py | 5 +---- sdk/python/feast/infra/contrib/grpc_server.py | 16 +++++++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index 7e395749fb3..b2167cf3c41 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -720,10 +720,7 @@ def serve_command( ) @click.pass_context def listen_command( - ctx: click.Context, - address: str, - stream_feature_view: str, - push_mode: str + ctx: click.Context, address: str, stream_feature_view: str, push_mode: str ): repo = ctx.obj["CHDIR"] fs_yaml_file = ctx.obj["FS_YAML_FILE"] diff --git a/sdk/python/feast/infra/contrib/grpc_server.py b/sdk/python/feast/infra/contrib/grpc_server.py index 11c1a8272dc..c23d1565462 100644 --- a/sdk/python/feast/infra/contrib/grpc_server.py +++ b/sdk/python/feast/infra/contrib/grpc_server.py @@ -1,11 +1,15 @@ -from feast.protos.feast.serving.GrpcServer_pb2 import GrpcIngestFeatureResponse -from feast.protos.feast.serving.GrpcServer_pb2_grpc import GrpcIngestFeatureServiceServicer, \ - add_GrpcIngestFeatureServiceServicer_to_server from concurrent import futures + import grpc import pandas as pd -from feast.feature_store import FeatureStore + from feast.data_source import PushMode +from feast.feature_store import FeatureStore +from feast.protos.feast.serving.GrpcServer_pb2 import GrpcIngestFeatureResponse +from feast.protos.feast.serving.GrpcServer_pb2_grpc import ( + GrpcIngestFeatureServiceServicer, + add_GrpcIngestFeatureServiceServicer_to_server, +) class GrpcIngestFeatureService(GrpcIngestFeatureServiceServicer): @@ -37,7 +41,9 @@ def __init__(self, address, fs: FeatureStore, sfv_name, to): self.fs = fs self.sfv = sfv_name self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) - add_GrpcIngestFeatureServiceServicer_to_server(GrpcIngestFeatureService(self.fs, self.sfv, to), self.server) + add_GrpcIngestFeatureServiceServicer_to_server( + GrpcIngestFeatureService(self.fs, self.sfv, to), self.server + ) self.server.add_insecure_port(self.address) def start(self): From 809b9eb4351fac06d1c4319324342d4a9a5835c3 Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Mon, 17 Jul 2023 10:52:46 +0300 Subject: [PATCH 03/15] Fix unmatched gRPC field issue. Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- sdk/python/feast/infra/contrib/grpc_server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/python/feast/infra/contrib/grpc_server.py b/sdk/python/feast/infra/contrib/grpc_server.py index c23d1565462..70316157852 100644 --- a/sdk/python/feast/infra/contrib/grpc_server.py +++ b/sdk/python/feast/infra/contrib/grpc_server.py @@ -25,8 +25,8 @@ def __init__(self, fs, sfv, to): def GrpcIngestFeature(self, request, context): features = {} - for i in request.test.keys(): - features[i] = [request.test.get(i)] + for i in request.features.keys(): + features[i] = [request.features.get(i)] rows = pd.DataFrame.from_dict(features) if self.to == PushMode.ONLINE or self.to == PushMode.ONLINE_AND_OFFLINE: self.fs.write_to_online_store(self.sfv, rows) From 5ea58d12ea1beaa8d08e18f9ab42b9e5af11a85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Tokg=C3=B6z?= Date: Thu, 27 Jul 2023 23:16:54 +0300 Subject: [PATCH 04/15] Make max_workers parameter configurable. Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- sdk/python/feast/cli.py | 18 +++++++++++++----- sdk/python/feast/infra/contrib/grpc_server.py | 8 ++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index b2167cf3c41..9ffa6496a7a 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -701,14 +701,14 @@ def serve_command( type=click.STRING, default="localhost:50051", show_default=True, - help="Specify an address for the server", + help="Address of the gRPC server", ) @click.option( "--stream_feature_view", "-sfv", type=click.STRING, show_default=False, - help="Specify the stream feature view to update", + help="Stream feature view to push streaming features", ) @click.option( "--push_mode", @@ -716,11 +716,19 @@ def serve_command( type=click.STRING, default="online", show_default=False, - help="Specify the stream feature view to update", + help="Push mode for the streaming data", +) +@click.option( + "--max_workers", + "-w", + type=click.INT, + default=10, + show_default=False, + help="The maximum number of threads that can be used to execute the gRPC calls", ) @click.pass_context def listen_command( - ctx: click.Context, address: str, stream_feature_view: str, push_mode: str + ctx: click.Context, address: str, stream_feature_view: str, push_mode: str, max_workers: int ): repo = ctx.obj["CHDIR"] fs_yaml_file = ctx.obj["FS_YAML_FILE"] @@ -733,7 +741,7 @@ def listen_command( to = PushMode.OFFLINE else: to = PushMode.ONLINE_AND_OFFLINE - server = GetGrpcServer(store, address, stream_feature_view, to) + server = GetGrpcServer(store, address, stream_feature_view, to, max_workers) server.start() diff --git a/sdk/python/feast/infra/contrib/grpc_server.py b/sdk/python/feast/infra/contrib/grpc_server.py index 70316157852..cfab167187d 100644 --- a/sdk/python/feast/infra/contrib/grpc_server.py +++ b/sdk/python/feast/infra/contrib/grpc_server.py @@ -36,11 +36,11 @@ def GrpcIngestFeature(self, request, context): class GrpcIngestFeatureServer: - def __init__(self, address, fs: FeatureStore, sfv_name, to): + def __init__(self, address, fs: FeatureStore, sfv_name, to, max_workers): self.address = address self.fs = fs self.sfv = sfv_name - self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) + self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=max_workers)) add_GrpcIngestFeatureServiceServicer_to_server( GrpcIngestFeatureService(self.fs, self.sfv, to), self.server ) @@ -51,5 +51,5 @@ def start(self): self.server.wait_for_termination() -def GetGrpcServer(fs: FeatureStore, address: str, sfv: str, to: PushMode): - return GrpcIngestFeatureServer(address, fs, sfv, to) +def GetGrpcServer(fs: FeatureStore, address: str, sfv: str, to: PushMode, max_workers): + return GrpcIngestFeatureServer(address, fs, sfv, to, max_workers) From 9766c5387ecb2d65d61f9a56a2c11d8b57f7a633 Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Thu, 27 Jul 2023 23:30:00 +0300 Subject: [PATCH 05/15] [lint-python] Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- sdk/python/feast/cli.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index 9ffa6496a7a..b7872a43ec6 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -728,7 +728,11 @@ def serve_command( ) @click.pass_context def listen_command( - ctx: click.Context, address: str, stream_feature_view: str, push_mode: str, max_workers: int + ctx: click.Context, + address: str, + stream_feature_view: str, + push_mode: str, + max_workers: int, ): repo = ctx.obj["CHDIR"] fs_yaml_file = ctx.obj["FS_YAML_FILE"] From b92b8385c20fac987e870bd7f11c4dbc9ac30c0d Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Mon, 7 Aug 2023 09:36:23 +0300 Subject: [PATCH 06/15] Refactor gRPC server to have similar logic with HTTP server Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- protos/feast/serving/GrpcServer.proto | 22 +++- sdk/python/feast/infra/contrib/grpc_server.py | 108 ++++++++++++------ 2 files changed, 89 insertions(+), 41 deletions(-) diff --git a/protos/feast/serving/GrpcServer.proto b/protos/feast/serving/GrpcServer.proto index 318531dc9d4..c9fa474d88b 100644 --- a/protos/feast/serving/GrpcServer.proto +++ b/protos/feast/serving/GrpcServer.proto @@ -1,13 +1,27 @@ syntax = "proto3"; -message GrpcIngestFeatureResponse { +message PushRequest { + map features = 1; + string stream_feature_view = 2; + bool allow_registry_cache = 3; + string to = 4; +} + +message PushResponse { bool status = 1; } -message GrpcIngestFeatureRequest { +message WriteToOnlineStoreRequest { map features = 1; + string stream_feature_view = 2; + bool allow_registry_cache = 3; +} + +message WriteToOnlineStoreResponse { + bool status = 1; } -service GrpcIngestFeatureService { - rpc GrpcIngestFeature (GrpcIngestFeatureRequest) returns (GrpcIngestFeatureResponse) {} +service GrpcFeatureServer { + rpc Push (PushRequest) returns (PushResponse) {}; + rpc WriteToOnlineStore (WriteToOnlineStoreRequest) returns (WriteToOnlineStoreResponse); } \ No newline at end of file diff --git a/sdk/python/feast/infra/contrib/grpc_server.py b/sdk/python/feast/infra/contrib/grpc_server.py index cfab167187d..74e16682e58 100644 --- a/sdk/python/feast/infra/contrib/grpc_server.py +++ b/sdk/python/feast/infra/contrib/grpc_server.py @@ -2,54 +2,88 @@ import grpc import pandas as pd - +import logging from feast.data_source import PushMode +from feast.errors import PushSourceNotFoundException from feast.feature_store import FeatureStore -from feast.protos.feast.serving.GrpcServer_pb2 import GrpcIngestFeatureResponse +from feast.protos.feast.serving.GrpcServer_pb2 import WriteToOnlineStoreResponse, PushResponse from feast.protos.feast.serving.GrpcServer_pb2_grpc import ( - GrpcIngestFeatureServiceServicer, - add_GrpcIngestFeatureServiceServicer_to_server, + GrpcFeatureServerServicer, + add_GrpcFeatureServerServicer_to_server, ) +from grpc_health.v1 import health +from grpc_health.v1 import health_pb2_grpc + + +def parse(features): + df = {} + for i in features.keys(): + df[i] = [features.get(i)] + return pd.DataFrame.from_dict(df) -class GrpcIngestFeatureService(GrpcIngestFeatureServiceServicer): +class GrpcFeatureServer(GrpcFeatureServerServicer): fs: FeatureStore - sfv: str - to: PushMode - def __init__(self, fs, sfv, to): + def __init__(self, fs): self.fs = fs - self.sfv = sfv - self.to = to super().__init__() - def GrpcIngestFeature(self, request, context): - features = {} - for i in request.features.keys(): - features[i] = [request.features.get(i)] - rows = pd.DataFrame.from_dict(features) - if self.to == PushMode.ONLINE or self.to == PushMode.ONLINE_AND_OFFLINE: - self.fs.write_to_online_store(self.sfv, rows) - if self.to == PushMode.OFFLINE or self.to == PushMode.ONLINE_AND_OFFLINE: - self.fs.write_to_offline_store(self.sfv, rows) - return GrpcIngestFeatureResponse(status=True) - - -class GrpcIngestFeatureServer: - def __init__(self, address, fs: FeatureStore, sfv_name, to, max_workers): - self.address = address - self.fs = fs - self.sfv = sfv_name - self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=max_workers)) - add_GrpcIngestFeatureServiceServicer_to_server( - GrpcIngestFeatureService(self.fs, self.sfv, to), self.server - ) - self.server.add_insecure_port(self.address) + def Push(self, request, context): + try: + df = parse(request.features) + if request.to == "offline": + to = PushMode.OFFLINE + elif request.to == "online": + to = PushMode.ONLINE + elif request.to == "online_and_offline": + to = PushMode.ONLINE_AND_OFFLINE + else: + raise ValueError( + f"{request.to} is not a supported push format. Please specify one of these ['online', 'offline', " + f"'online_and_offline']." + ) + self.fs.push( + push_source_name=request.push_source_name, + df=df, + allow_registry_cache=request.allow_registry_cache, + to=to, + ) + except PushSourceNotFoundException as e: + logging.exception(e) + context.set_code(grpc.StatusCode.INVALID_ARGUMENT) + context.set_details(str(e)) + return PushResponse(status=False) + except Exception as e: + logging.exception(e) + context.set_code(grpc.StatusCode.INTERNAL) + context.set_details(str(e)) + return PushResponse(status=False) + return PushResponse(status=True) - def start(self): - self.server.start() - self.server.wait_for_termination() + def WriteToOnlineStore(self, request, context): + logging.warning( + "write_to_online_store is deprecated. Please consider using Push instead", + RuntimeWarning, + ) + try: + df = parse(request.features) + self.fs.write_to_online_store( + feature_view_name=request.feature_view_name, + df=df, + allow_registry_cache=request.allow_registry_cache, + ) + except Exception as e: + logging.exception(e) + context.set_code(grpc.StatusCode.INTERNAL) + context.set_details(str(e)) + return PushResponse(status=False) + return WriteToOnlineStoreResponse(status=True) -def GetGrpcServer(fs: FeatureStore, address: str, sfv: str, to: PushMode, max_workers): - return GrpcIngestFeatureServer(address, fs, sfv, to, max_workers) +def get_grpc_server(address: str, fs: FeatureStore, max_workers: int): + server = grpc.server(futures.ThreadPoolExecutor(max_workers=max_workers)) + add_GrpcFeatureServerServicer_to_server(GrpcFeatureServer(fs), server) + health_pb2_grpc.add_HealthServicer_to_server(health.HealthServicer(), server) + server.add_insecure_port(address) + return server From caed0208d9b3477c162d3385e325f24722978f6c Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Mon, 7 Aug 2023 11:59:10 +0300 Subject: [PATCH 07/15] Refactor CLI. Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- protos/feast/serving/GrpcServer.proto | 2 +- sdk/python/feast/cli.py | 45 +++++-------------- sdk/python/feast/infra/contrib/grpc_server.py | 11 ++--- 3 files changed, 17 insertions(+), 41 deletions(-) diff --git a/protos/feast/serving/GrpcServer.proto b/protos/feast/serving/GrpcServer.proto index c9fa474d88b..cd0274c5c75 100644 --- a/protos/feast/serving/GrpcServer.proto +++ b/protos/feast/serving/GrpcServer.proto @@ -13,7 +13,7 @@ message PushResponse { message WriteToOnlineStoreRequest { map features = 1; - string stream_feature_view = 2; + string feature_view_name = 2; bool allow_registry_cache = 3; } diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index b7872a43ec6..dec4c21c284 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -25,14 +25,18 @@ from pygments import formatters, highlight, lexers from feast import utils +<<<<<<< HEAD from feast.constants import ( DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT, FEATURE_STORE_YAML_ENV_NAME, ) from feast.data_source import PushMode +======= +from feast.constants import DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT +>>>>>>> 76daf3f9 (Refactor CLI.) from feast.errors import FeastObjectNotFoundException, FeastProviderLoginError from feast.feature_view import FeatureView -from feast.infra.contrib.grpc_server import GetGrpcServer +from feast.infra.contrib.grpc_server import get_grpc_server from feast.on_demand_feature_view import OnDemandFeatureView from feast.repo_config import load_repo_config from feast.repo_operations import ( @@ -703,21 +707,6 @@ def serve_command( show_default=True, help="Address of the gRPC server", ) -@click.option( - "--stream_feature_view", - "-sfv", - type=click.STRING, - show_default=False, - help="Stream feature view to push streaming features", -) -@click.option( - "--push_mode", - "-to", - type=click.STRING, - default="online", - show_default=False, - help="Push mode for the streaming data", -) @click.option( "--max_workers", "-w", @@ -728,25 +717,15 @@ def serve_command( ) @click.pass_context def listen_command( - ctx: click.Context, - address: str, - stream_feature_view: str, - push_mode: str, - max_workers: int, + ctx: click.Context, + address: str, + max_workers: int, ): - repo = ctx.obj["CHDIR"] - fs_yaml_file = ctx.obj["FS_YAML_FILE"] - cli_check_repo(repo, fs_yaml_file) - store = FeatureStore(repo_path=str(repo), fs_yaml_file=fs_yaml_file) - to: PushMode - if push_mode == "online": - to = PushMode.ONLINE - elif push_mode == "offline": - to = PushMode.OFFLINE - else: - to = PushMode.ONLINE_AND_OFFLINE - server = GetGrpcServer(store, address, stream_feature_view, to, max_workers) + """Start a gRPC feature server to ingest streaming features on given address""" + store = create_feature_store(ctx) + server = get_grpc_server(address, store, max_workers) server.start() + server.wait_for_termination() @cli.command("serve_transformations") diff --git a/sdk/python/feast/infra/contrib/grpc_server.py b/sdk/python/feast/infra/contrib/grpc_server.py index 74e16682e58..f8b681b382e 100644 --- a/sdk/python/feast/infra/contrib/grpc_server.py +++ b/sdk/python/feast/infra/contrib/grpc_server.py @@ -50,22 +50,19 @@ def Push(self, request, context): to=to, ) except PushSourceNotFoundException as e: - logging.exception(e) + logging.exception(str(e)) context.set_code(grpc.StatusCode.INVALID_ARGUMENT) context.set_details(str(e)) return PushResponse(status=False) except Exception as e: - logging.exception(e) + logging.exception(str(e)) context.set_code(grpc.StatusCode.INTERNAL) context.set_details(str(e)) return PushResponse(status=False) return PushResponse(status=True) def WriteToOnlineStore(self, request, context): - logging.warning( - "write_to_online_store is deprecated. Please consider using Push instead", - RuntimeWarning, - ) + logging.warning("write_to_online_store is deprecated. Please consider using Push instead") try: df = parse(request.features) self.fs.write_to_online_store( @@ -74,7 +71,7 @@ def WriteToOnlineStore(self, request, context): allow_registry_cache=request.allow_registry_cache, ) except Exception as e: - logging.exception(e) + logging.exception(str(e)) context.set_code(grpc.StatusCode.INTERNAL) context.set_details(str(e)) return PushResponse(status=False) From cd537d9a99d98d54a280050320592885024aca94 Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Mon, 7 Aug 2023 12:01:28 +0300 Subject: [PATCH 08/15] Type parameter. Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- sdk/python/feast/infra/contrib/grpc_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/python/feast/infra/contrib/grpc_server.py b/sdk/python/feast/infra/contrib/grpc_server.py index f8b681b382e..271244a4743 100644 --- a/sdk/python/feast/infra/contrib/grpc_server.py +++ b/sdk/python/feast/infra/contrib/grpc_server.py @@ -25,7 +25,7 @@ def parse(features): class GrpcFeatureServer(GrpcFeatureServerServicer): fs: FeatureStore - def __init__(self, fs): + def __init__(self, fs: FeatureStore): self.fs = fs super().__init__() From d73c3d7bb004fe86002e39ec32919976f63d736e Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Mon, 7 Aug 2023 12:22:59 +0300 Subject: [PATCH 09/15] Upgrade 3.8 requirements. Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- sdk/python/requirements/py3.10-ci-requirements.txt | 4 ++++ sdk/python/requirements/py3.10-requirements.txt | 4 ++++ sdk/python/requirements/py3.8-ci-requirements.txt | 4 ++++ sdk/python/requirements/py3.8-requirements.txt | 4 ++++ sdk/python/requirements/py3.9-ci-requirements.txt | 4 ++++ sdk/python/requirements/py3.9-requirements.txt | 4 ++++ setup.py | 13 +++++++------ 7 files changed, 31 insertions(+), 6 deletions(-) diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index e325d168dff..5a50880b421 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -317,10 +317,13 @@ grpcio==1.57.0 # google-cloud-bigquery # googleapis-common-protos # grpc-google-iam-v1 + # grpcio-health-checking # grpcio-reflection # grpcio-status # grpcio-testing # grpcio-tools +grpcio-health-checking==1.57.0 + # via feast (setup.py) grpcio-reflection==1.57.0 # via feast (setup.py) grpcio-status==1.57.0 @@ -642,6 +645,7 @@ protobuf==4.23.3 # google-cloud-firestore # googleapis-common-protos # grpc-google-iam-v1 + # grpcio-health-checking # grpcio-reflection # grpcio-status # grpcio-testing diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index 1eef1ee8832..3a0f35befc3 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -56,8 +56,11 @@ fsspec==2023.9.0 grpcio==1.57.0 # via # feast (setup.py) + # grpcio-health-checking # grpcio-reflection # grpcio-tools +grpcio-health-checking==1.57.0 + # via feast (setup.py) grpcio-reflection==1.57.0 # via feast (setup.py) grpcio-tools==1.57.0 @@ -124,6 +127,7 @@ proto-plus==1.22.3 protobuf==4.23.3 # via # feast (setup.py) + # grpcio-health-checking # grpcio-reflection # grpcio-tools # mypy-protobuf diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index 34059451107..c3326548587 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -320,10 +320,13 @@ grpcio==1.57.0 # google-cloud-bigquery # googleapis-common-protos # grpc-google-iam-v1 + # grpcio-health-checking # grpcio-reflection # grpcio-status # grpcio-testing # grpcio-tools +grpcio-health-checking==1.57.0 + # via feast (setup.py) grpcio-reflection==1.57.0 # via feast (setup.py) grpcio-status==1.57.0 @@ -659,6 +662,7 @@ protobuf==4.23.3 # google-cloud-firestore # googleapis-common-protos # grpc-google-iam-v1 + # grpcio-health-checking # grpcio-reflection # grpcio-status # grpcio-testing diff --git a/sdk/python/requirements/py3.8-requirements.txt b/sdk/python/requirements/py3.8-requirements.txt index f5feec48803..a74bda6cc78 100644 --- a/sdk/python/requirements/py3.8-requirements.txt +++ b/sdk/python/requirements/py3.8-requirements.txt @@ -56,8 +56,11 @@ fsspec==2023.9.0 grpcio==1.57.0 # via # feast (setup.py) + # grpcio-health-checking # grpcio-reflection # grpcio-tools +grpcio-health-checking==1.57.0 + # via feast (setup.py) grpcio-reflection==1.57.0 # via feast (setup.py) grpcio-tools==1.57.0 @@ -130,6 +133,7 @@ proto-plus==1.22.3 protobuf==4.23.3 # via # feast (setup.py) + # grpcio-health-checking # grpcio-reflection # grpcio-tools # mypy-protobuf diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index d203765ee72..56e7a43da6f 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -317,10 +317,13 @@ grpcio==1.57.0 # google-cloud-bigquery # googleapis-common-protos # grpc-google-iam-v1 + # grpcio-health-checking # grpcio-reflection # grpcio-status # grpcio-testing # grpcio-tools +grpcio-health-checking==1.57.0 + # via feast (setup.py) grpcio-reflection==1.57.0 # via feast (setup.py) grpcio-status==1.57.0 @@ -649,6 +652,7 @@ protobuf==4.23.3 # google-cloud-firestore # googleapis-common-protos # grpc-google-iam-v1 + # grpcio-health-checking # grpcio-reflection # grpcio-status # grpcio-testing diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 4f66078f02d..6971b094c70 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -56,8 +56,11 @@ fsspec==2023.9.0 grpcio==1.57.0 # via # feast (setup.py) + # grpcio-health-checking # grpcio-reflection # grpcio-tools +grpcio-health-checking==1.57.0 + # via feast (setup.py) grpcio-reflection==1.57.0 # via feast (setup.py) grpcio-tools==1.57.0 @@ -124,6 +127,7 @@ proto-plus==1.22.3 protobuf==4.23.3 # via # feast (setup.py) + # grpcio-health-checking # grpcio-reflection # grpcio-tools # mypy-protobuf diff --git a/setup.py b/setup.py index 839dc23ffa1..d93e92b9c86 100644 --- a/setup.py +++ b/setup.py @@ -46,9 +46,10 @@ "colorama>=0.3.9,<1", "dill~=0.3.0", "fastavro>=1.1.0,<2", - "grpcio>=1.47.0,<2", - "grpcio-tools>=1.47.0", - "grpcio-reflection>=1.47.0,<2", + "grpcio>=1.56.2,<2", + "grpcio-tools>=1.56.2,<2", + "grpcio-reflection>=1.56.2,<2", + "grpcio-health-checking>=1.56.2,<2", "mypy-protobuf==3.1", "Jinja2>=2,<4", "jsonschema", @@ -148,7 +149,7 @@ "flake8", "black>=22.6.0,<23", "isort>=5,<6", - "grpcio-testing>=1.47.0", + "grpcio-testing>=1.56.2,<2", "minio==7.1.0", "mock==2.0.0", "moto", @@ -381,8 +382,8 @@ def run(self): use_scm_version=use_scm_version, setup_requires=[ "setuptools_scm", - "grpcio>=1.47.0", - "grpcio-tools>=1.47.0", + "grpcio>=1.56.2", + "grpcio-tools>=1.56.2", "mypy-protobuf==3.1", "pybindgen==0.22.0", ], From a5000d8640c7b2c65cf69639957c76137c516cd0 Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Mon, 7 Aug 2023 16:27:09 +0300 Subject: [PATCH 10/15] Configure health check service and update CI dependencies Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- sdk/python/feast/infra/contrib/grpc_server.py | 21 +++++++---- .../requirements/py3.10-ci-requirements.txt | 2 +- .../requirements/py3.8-ci-requirements.txt | 2 +- .../requirements/py3.9-ci-requirements.txt | 2 +- .../requirements/py3.9-requirements.txt | 36 +++++++++++++++++++ setup.py | 5 +-- 6 files changed, 57 insertions(+), 11 deletions(-) diff --git a/sdk/python/feast/infra/contrib/grpc_server.py b/sdk/python/feast/infra/contrib/grpc_server.py index 271244a4743..2017f1095b2 100644 --- a/sdk/python/feast/infra/contrib/grpc_server.py +++ b/sdk/python/feast/infra/contrib/grpc_server.py @@ -1,18 +1,21 @@ +import logging from concurrent import futures import grpc import pandas as pd -import logging +from grpc_health.v1 import health, health_pb2_grpc + from feast.data_source import PushMode from feast.errors import PushSourceNotFoundException from feast.feature_store import FeatureStore -from feast.protos.feast.serving.GrpcServer_pb2 import WriteToOnlineStoreResponse, PushResponse +from feast.protos.feast.serving.GrpcServer_pb2 import ( + PushResponse, + WriteToOnlineStoreResponse, +) from feast.protos.feast.serving.GrpcServer_pb2_grpc import ( GrpcFeatureServerServicer, add_GrpcFeatureServerServicer_to_server, ) -from grpc_health.v1 import health -from grpc_health.v1 import health_pb2_grpc def parse(features): @@ -62,7 +65,9 @@ def Push(self, request, context): return PushResponse(status=True) def WriteToOnlineStore(self, request, context): - logging.warning("write_to_online_store is deprecated. Please consider using Push instead") + logging.warning( + "write_to_online_store is deprecated. Please consider using Push instead" + ) try: df = parse(request.features) self.fs.write_to_online_store( @@ -81,6 +86,10 @@ def WriteToOnlineStore(self, request, context): def get_grpc_server(address: str, fs: FeatureStore, max_workers: int): server = grpc.server(futures.ThreadPoolExecutor(max_workers=max_workers)) add_GrpcFeatureServerServicer_to_server(GrpcFeatureServer(fs), server) - health_pb2_grpc.add_HealthServicer_to_server(health.HealthServicer(), server) + health_servicer = health.HealthServicer( + experimental_non_blocking=True, + experimental_thread_pool=futures.ThreadPoolExecutor(max_workers=max_workers), + ) + health_pb2_grpc.add_HealthServicer_to_server(health_servicer, server) server.add_insecure_port(address) return server diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index 5a50880b421..23fc6120a67 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -1036,7 +1036,7 @@ uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn -virtualenv==20.24.1 +virtualenv==20.23.0 # via # feast (setup.py) # pre-commit diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index c3326548587..0bb3cb2758f 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -1053,7 +1053,7 @@ uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn -virtualenv==20.24.1 +virtualenv==20.23.0 # via # feast (setup.py) # pre-commit diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index 56e7a43da6f..9d59037ef2e 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -1048,7 +1048,7 @@ uvicorn[standard]==0.23.2 # via feast (setup.py) uvloop==0.17.0 # via uvicorn -virtualenv==20.24.1 +virtualenv==20.23.0 # via # feast (setup.py) # pre-commit diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 6971b094c70..c09f2165365 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -26,7 +26,11 @@ certifi==2023.7.22 # requests charset-normalizer==3.2.0 # via requests +<<<<<<< HEAD click==8.1.7 +======= +click==8.1.6 +>>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via # bowler # dask @@ -37,13 +41,21 @@ cloudpickle==2.2.1 # via dask colorama==0.4.6 # via feast (setup.py) +<<<<<<< HEAD dask==2023.9.0 +======= +dask==2023.8.0 +>>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via feast (setup.py) dill==0.3.7 # via feast (setup.py) exceptiongroup==1.1.3 # via anyio +<<<<<<< HEAD fastapi==0.103.1 +======= +fastapi==0.101.0 +>>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via feast (setup.py) fastavro==1.8.2 # via @@ -53,17 +65,29 @@ fissix==21.11.13 # via bowler fsspec==2023.9.0 # via dask +<<<<<<< HEAD grpcio==1.57.0 +======= +grpcio==1.56.2 +>>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via # feast (setup.py) # grpcio-health-checking # grpcio-reflection # grpcio-tools +<<<<<<< HEAD grpcio-health-checking==1.57.0 # via feast (setup.py) grpcio-reflection==1.57.0 # via feast (setup.py) grpcio-tools==1.57.0 +======= +grpcio-health-checking==1.56.2 + # via feast (setup.py) +grpcio-reflection==1.56.2 + # via feast (setup.py) +grpcio-tools==1.56.2 +>>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via feast (setup.py) gunicorn==21.2.0 # via feast (setup.py) @@ -102,7 +126,11 @@ mypy==1.5.1 # via sqlalchemy mypy-extensions==1.0.0 # via mypy +<<<<<<< HEAD mypy-protobuf==3.1 +======= +mypy-protobuf==3.5.0 +>>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via feast (setup.py) numpy==1.25.2 # via @@ -157,7 +185,11 @@ referencing==0.30.2 # jsonschema-specifications requests==2.31.0 # via feast (setup.py) +<<<<<<< HEAD rpds-py==0.10.2 +======= +rpds-py==0.9.2 +>>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via # jsonschema # referencing @@ -192,7 +224,11 @@ tqdm==4.66.1 # via feast (setup.py) typeguard==2.13.3 # via feast (setup.py) +<<<<<<< HEAD types-protobuf==4.24.0.1 +======= +types-protobuf==4.23.0.3 +>>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via mypy-protobuf typing-extensions==4.7.1 # via diff --git a/setup.py b/setup.py index d93e92b9c86..2cbb96326a6 100644 --- a/setup.py +++ b/setup.py @@ -145,6 +145,7 @@ CI_REQUIRED = ( [ "build", + "virtualenv==20.23.0", "cryptography>=35.0,<42", "flake8", "black>=22.6.0,<23", @@ -382,8 +383,8 @@ def run(self): use_scm_version=use_scm_version, setup_requires=[ "setuptools_scm", - "grpcio>=1.56.2", - "grpcio-tools>=1.56.2", + "grpcio==1.56.2", + "grpcio-tools==1.56.2", "mypy-protobuf==3.1", "pybindgen==0.22.0", ], From be0010d3eec98f65274d9788faffe05dd71ceb41 Mon Sep 17 00:00:00 2001 From: mehmettokgoz Date: Thu, 17 Aug 2023 14:55:16 +0300 Subject: [PATCH 11/15] Downgrade flake8 version to prevent E721 checks. Signed-off-by: mehmettokgoz Signed-off-by: Danny C --- sdk/python/requirements/py3.10-ci-requirements.txt | 6 +++--- sdk/python/requirements/py3.8-ci-requirements.txt | 6 +++--- sdk/python/requirements/py3.9-ci-requirements.txt | 6 +++--- setup.py | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index 23fc6120a67..1bdff9fc1af 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -225,7 +225,7 @@ firebase-admin==5.4.0 # via feast (setup.py) fissix==21.11.13 # via bowler -flake8==6.1.0 +flake8==6.0.0 # via feast (setup.py) fqdn==1.5.1 # via jsonschema @@ -684,7 +684,7 @@ pyasn1-modules==0.3.0 # via google-auth pybindgen==0.22.1 # via feast (setup.py) -pycodestyle==2.11.0 +pycodestyle==2.10.0 # via flake8 pycparser==2.21 # via cffi @@ -695,7 +695,7 @@ pydantic==1.10.12 # fastapi # feast (setup.py) # great-expectations -pyflakes==3.1.0 +pyflakes==3.0.1 # via flake8 pygments==2.16.1 # via diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index 0bb3cb2758f..ffa93ee5aa2 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -228,7 +228,7 @@ firebase-admin==5.4.0 # via feast (setup.py) fissix==21.11.13 # via bowler -flake8==6.1.0 +flake8==6.0.0 # via feast (setup.py) fqdn==1.5.1 # via jsonschema @@ -701,7 +701,7 @@ pyasn1-modules==0.3.0 # via google-auth pybindgen==0.22.1 # via feast (setup.py) -pycodestyle==2.11.0 +pycodestyle==2.10.0 # via flake8 pycparser==2.21 # via cffi @@ -712,7 +712,7 @@ pydantic==1.10.12 # fastapi # feast (setup.py) # great-expectations -pyflakes==3.1.0 +pyflakes==3.0.1 # via flake8 pygments==2.16.1 # via diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index 9d59037ef2e..ddb703df0af 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -225,7 +225,7 @@ firebase-admin==5.4.0 # via feast (setup.py) fissix==21.11.13 # via bowler -flake8==6.1.0 +flake8==6.0.0 # via feast (setup.py) fqdn==1.5.1 # via jsonschema @@ -691,7 +691,7 @@ pyasn1-modules==0.3.0 # via google-auth pybindgen==0.22.1 # via feast (setup.py) -pycodestyle==2.11.0 +pycodestyle==2.10.0 # via flake8 pycparser==2.21 # via cffi @@ -702,7 +702,7 @@ pydantic==1.10.12 # fastapi # feast (setup.py) # great-expectations -pyflakes==3.1.0 +pyflakes==3.0.1 # via flake8 pygments==2.16.1 # via diff --git a/setup.py b/setup.py index 2cbb96326a6..462f203b094 100644 --- a/setup.py +++ b/setup.py @@ -147,7 +147,7 @@ "build", "virtualenv==20.23.0", "cryptography>=35.0,<42", - "flake8", + "flake8>=6.0.0,<6.1.0", "black>=22.6.0,<23", "isort>=5,<6", "grpcio-testing>=1.56.2,<2", From 5f73e77fca12d21a3ff372244c801654b664365e Mon Sep 17 00:00:00 2001 From: Danny C Date: Tue, 5 Sep 2023 01:06:53 -0700 Subject: [PATCH 12/15] lint Signed-off-by: Danny C --- sdk/python/feast/cli.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index dec4c21c284..49e3c51faeb 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -25,15 +25,8 @@ from pygments import formatters, highlight, lexers from feast import utils -<<<<<<< HEAD -from feast.constants import ( - DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT, - FEATURE_STORE_YAML_ENV_NAME, -) -from feast.data_source import PushMode -======= from feast.constants import DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT ->>>>>>> 76daf3f9 (Refactor CLI.) +from feast.data_source import PushMode from feast.errors import FeastObjectNotFoundException, FeastProviderLoginError from feast.feature_view import FeatureView from feast.infra.contrib.grpc_server import get_grpc_server @@ -717,9 +710,9 @@ def serve_command( ) @click.pass_context def listen_command( - ctx: click.Context, - address: str, - max_workers: int, + ctx: click.Context, + address: str, + max_workers: int, ): """Start a gRPC feature server to ingest streaming features on given address""" store = create_feature_store(ctx) From 392768ab2f4ca3c6ca55c808b6dea710b8e9b3c4 Mon Sep 17 00:00:00 2001 From: Danny C Date: Tue, 5 Sep 2023 10:45:46 -0700 Subject: [PATCH 13/15] fix grpcio pin Signed-off-by: Danny C --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 462f203b094..b95a534a867 100644 --- a/setup.py +++ b/setup.py @@ -383,8 +383,8 @@ def run(self): use_scm_version=use_scm_version, setup_requires=[ "setuptools_scm", - "grpcio==1.56.2", - "grpcio-tools==1.56.2", + "grpcio>=1.56.2,<2", + "grpcio-tools>=1.56.2,<2", "mypy-protobuf==3.1", "pybindgen==0.22.0", ], From 0c75491b4eae748082b618b4eca3a962b6584e02 Mon Sep 17 00:00:00 2001 From: Danny C Date: Tue, 5 Sep 2023 11:51:32 -0700 Subject: [PATCH 14/15] fix lint Signed-off-by: Danny C --- Makefile | 2 +- sdk/python/feast/cli.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index cf8a899ac68..4b85c0e4483 100644 --- a/Makefile +++ b/Makefile @@ -353,7 +353,7 @@ kill-trino-locally: cd ${ROOT_DIR}; docker stop trino install-protoc-dependencies: - pip install --ignore-installed protobuf==4.23.4 grpcio-tools==1.47.0 mypy-protobuf==3.1.0 + pip install --ignore-installed protobuf==4.23.4 "grpcio-tools>=1.56.2,<2" mypy-protobuf==3.1.0 install-feast-ci-locally: pip install -e ".[ci]" diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index 49e3c51faeb..8c2c326b595 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -26,7 +26,6 @@ from feast import utils from feast.constants import DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT -from feast.data_source import PushMode from feast.errors import FeastObjectNotFoundException, FeastProviderLoginError from feast.feature_view import FeatureView from feast.infra.contrib.grpc_server import get_grpc_server From 068de80cf61b28174aca7e7a7a8e9645c0a724e5 Mon Sep 17 00:00:00 2001 From: Danny C Date: Wed, 6 Sep 2023 21:28:34 -0700 Subject: [PATCH 15/15] Fix linter Signed-off-by: Danny C --- .../requirements/py3.10-ci-requirements.txt | 23 +++++----- .../requirements/py3.10-requirements.txt | 7 ++- .../requirements/py3.8-ci-requirements.txt | 21 +++++---- .../requirements/py3.8-requirements.txt | 5 +-- .../requirements/py3.9-ci-requirements.txt | 23 +++++----- .../requirements/py3.9-requirements.txt | 45 ++----------------- setup.py | 2 +- 7 files changed, 42 insertions(+), 84 deletions(-) diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index 1bdff9fc1af..cb72fdaa350 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -18,9 +18,8 @@ alabaster==0.7.13 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.7.1 +anyio==4.0.0 # via - # fastapi # httpcore # jupyter-server # starlette @@ -87,18 +86,18 @@ black==22.12.0 # via feast (setup.py) bleach==6.0.0 # via nbconvert -boto3==1.28.40 +boto3==1.28.42 # via # feast (setup.py) # moto -botocore==1.31.40 +botocore==1.31.42 # via # boto3 # moto # s3transfer bowler==0.9.0 # via feast (setup.py) -build==1.0.0 +build==1.0.3 # via # feast (setup.py) # pip-tools @@ -153,7 +152,7 @@ comm==0.1.4 # via # ipykernel # ipywidgets -coverage[toml]==7.3.0 +coverage[toml]==7.3.1 # via pytest-cov cryptography==41.0.3 # via @@ -169,7 +168,7 @@ cryptography==41.0.3 # snowflake-connector-python # types-pyopenssl # types-redis -dask==2023.9.0 +dask==2023.9.1 # via feast (setup.py) db-dtypes==1.1.1 # via google-cloud-bigquery @@ -209,7 +208,7 @@ execnet==2.0.2 # via pytest-xdist executing==1.2.0 # via stack-data -fastapi==0.103.1 +fastapi==0.99.1 # via feast (setup.py) fastavro==1.8.2 # via @@ -256,7 +255,7 @@ google-api-core[grpc]==2.11.1 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.97.0 +google-api-python-client==2.98.0 # via firebase-admin google-auth==2.22.0 # via @@ -285,7 +284,7 @@ google-cloud-core==2.3.3 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-cloud-datastore==2.17.0 +google-cloud-datastore==2.18.0 # via feast (setup.py) google-cloud-firestore==2.11.1 # via firebase-admin @@ -296,7 +295,7 @@ google-cloud-storage==2.10.0 # gcsfs google-crc32c==1.5.0 # via google-resumable-media -google-resumable-media==2.5.0 +google-resumable-media==2.6.0 # via # google-cloud-bigquery # google-cloud-storage @@ -992,7 +991,7 @@ types-redis==4.6.0.5 # via feast (setup.py) types-requests==2.31.0.2 # via feast (setup.py) -types-setuptools==68.1.0.1 +types-setuptools==68.2.0.0 # via feast (setup.py) types-tabulate==0.9.0.3 # via feast (setup.py) diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index 3a0f35befc3..4140bea9d0f 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -4,9 +4,8 @@ # # pip-compile --output-file=sdk/python/requirements/py3.10-requirements.txt # -anyio==3.7.1 +anyio==4.0.0 # via - # fastapi # httpcore # starlette # watchfiles @@ -37,13 +36,13 @@ cloudpickle==2.2.1 # via dask colorama==0.4.6 # via feast (setup.py) -dask==2023.9.0 +dask==2023.9.1 # via feast (setup.py) dill==0.3.7 # via feast (setup.py) exceptiongroup==1.1.3 # via anyio -fastapi==0.103.1 +fastapi==0.99.1 # via feast (setup.py) fastavro==1.8.2 # via diff --git a/sdk/python/requirements/py3.8-ci-requirements.txt b/sdk/python/requirements/py3.8-ci-requirements.txt index ffa93ee5aa2..9dfefc21081 100644 --- a/sdk/python/requirements/py3.8-ci-requirements.txt +++ b/sdk/python/requirements/py3.8-ci-requirements.txt @@ -18,9 +18,8 @@ alabaster==0.7.13 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.7.1 +anyio==4.0.0 # via - # fastapi # httpcore # jupyter-server # starlette @@ -91,18 +90,18 @@ black==22.12.0 # via feast (setup.py) bleach==6.0.0 # via nbconvert -boto3==1.28.40 +boto3==1.28.42 # via # feast (setup.py) # moto -botocore==1.31.40 +botocore==1.31.42 # via # boto3 # moto # s3transfer bowler==0.9.0 # via feast (setup.py) -build==1.0.0 +build==1.0.3 # via # feast (setup.py) # pip-tools @@ -157,7 +156,7 @@ comm==0.1.4 # via # ipykernel # ipywidgets -coverage[toml]==7.3.0 +coverage[toml]==7.3.1 # via pytest-cov cryptography==41.0.3 # via @@ -212,7 +211,7 @@ execnet==2.0.2 # via pytest-xdist executing==1.2.0 # via stack-data -fastapi==0.103.1 +fastapi==0.99.1 # via feast (setup.py) fastavro==1.8.2 # via @@ -259,7 +258,7 @@ google-api-core[grpc]==2.11.1 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.97.0 +google-api-python-client==2.98.0 # via firebase-admin google-auth==2.22.0 # via @@ -288,7 +287,7 @@ google-cloud-core==2.3.3 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-cloud-datastore==2.17.0 +google-cloud-datastore==2.18.0 # via feast (setup.py) google-cloud-firestore==2.11.1 # via firebase-admin @@ -299,7 +298,7 @@ google-cloud-storage==2.10.0 # gcsfs google-crc32c==1.5.0 # via google-resumable-media -google-resumable-media==2.5.0 +google-resumable-media==2.6.0 # via # google-cloud-bigquery # google-cloud-storage @@ -1006,7 +1005,7 @@ types-redis==4.6.0.5 # via feast (setup.py) types-requests==2.31.0.2 # via feast (setup.py) -types-setuptools==68.1.0.1 +types-setuptools==68.2.0.0 # via feast (setup.py) types-tabulate==0.9.0.3 # via feast (setup.py) diff --git a/sdk/python/requirements/py3.8-requirements.txt b/sdk/python/requirements/py3.8-requirements.txt index a74bda6cc78..636f886133d 100644 --- a/sdk/python/requirements/py3.8-requirements.txt +++ b/sdk/python/requirements/py3.8-requirements.txt @@ -4,9 +4,8 @@ # # pip-compile --output-file=sdk/python/requirements/py3.8-requirements.txt # -anyio==3.7.1 +anyio==4.0.0 # via - # fastapi # httpcore # starlette # watchfiles @@ -43,7 +42,7 @@ dill==0.3.7 # via feast (setup.py) exceptiongroup==1.1.3 # via anyio -fastapi==0.103.1 +fastapi==0.99.1 # via feast (setup.py) fastavro==1.8.2 # via diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index ddb703df0af..3992303d00e 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -18,9 +18,8 @@ alabaster==0.7.13 # via sphinx altair==4.2.0 # via great-expectations -anyio==3.7.1 +anyio==4.0.0 # via - # fastapi # httpcore # jupyter-server # starlette @@ -87,18 +86,18 @@ black==22.12.0 # via feast (setup.py) bleach==6.0.0 # via nbconvert -boto3==1.28.40 +boto3==1.28.42 # via # feast (setup.py) # moto -botocore==1.31.40 +botocore==1.31.42 # via # boto3 # moto # s3transfer bowler==0.9.0 # via feast (setup.py) -build==1.0.0 +build==1.0.3 # via # feast (setup.py) # pip-tools @@ -153,7 +152,7 @@ comm==0.1.4 # via # ipykernel # ipywidgets -coverage[toml]==7.3.0 +coverage[toml]==7.3.1 # via pytest-cov cryptography==41.0.3 # via @@ -169,7 +168,7 @@ cryptography==41.0.3 # snowflake-connector-python # types-pyopenssl # types-redis -dask==2023.9.0 +dask==2023.9.1 # via feast (setup.py) db-dtypes==1.1.1 # via google-cloud-bigquery @@ -209,7 +208,7 @@ execnet==2.0.2 # via pytest-xdist executing==1.2.0 # via stack-data -fastapi==0.103.1 +fastapi==0.99.1 # via feast (setup.py) fastavro==1.8.2 # via @@ -256,7 +255,7 @@ google-api-core[grpc]==2.11.1 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-api-python-client==2.97.0 +google-api-python-client==2.98.0 # via firebase-admin google-auth==2.22.0 # via @@ -285,7 +284,7 @@ google-cloud-core==2.3.3 # google-cloud-datastore # google-cloud-firestore # google-cloud-storage -google-cloud-datastore==2.17.0 +google-cloud-datastore==2.18.0 # via feast (setup.py) google-cloud-firestore==2.11.1 # via firebase-admin @@ -296,7 +295,7 @@ google-cloud-storage==2.10.0 # gcsfs google-crc32c==1.5.0 # via google-resumable-media -google-resumable-media==2.5.0 +google-resumable-media==2.6.0 # via # google-cloud-bigquery # google-cloud-storage @@ -1001,7 +1000,7 @@ types-redis==4.6.0.5 # via feast (setup.py) types-requests==2.31.0.2 # via feast (setup.py) -types-setuptools==68.1.0.1 +types-setuptools==68.2.0.0 # via feast (setup.py) types-tabulate==0.9.0.3 # via feast (setup.py) diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index c09f2165365..7d30fd3452b 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -4,9 +4,8 @@ # # pip-compile --output-file=sdk/python/requirements/py3.9-requirements.txt # -anyio==3.7.1 +anyio==4.0.0 # via - # fastapi # httpcore # starlette # watchfiles @@ -26,11 +25,7 @@ certifi==2023.7.22 # requests charset-normalizer==3.2.0 # via requests -<<<<<<< HEAD click==8.1.7 -======= -click==8.1.6 ->>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via # bowler # dask @@ -41,21 +36,13 @@ cloudpickle==2.2.1 # via dask colorama==0.4.6 # via feast (setup.py) -<<<<<<< HEAD -dask==2023.9.0 -======= -dask==2023.8.0 ->>>>>>> 2c800904 (Configure health check service and update CI dependencies) +dask==2023.9.1 # via feast (setup.py) dill==0.3.7 # via feast (setup.py) exceptiongroup==1.1.3 # via anyio -<<<<<<< HEAD -fastapi==0.103.1 -======= -fastapi==0.101.0 ->>>>>>> 2c800904 (Configure health check service and update CI dependencies) +fastapi==0.99.1 # via feast (setup.py) fastavro==1.8.2 # via @@ -65,29 +52,17 @@ fissix==21.11.13 # via bowler fsspec==2023.9.0 # via dask -<<<<<<< HEAD grpcio==1.57.0 -======= -grpcio==1.56.2 ->>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via # feast (setup.py) # grpcio-health-checking # grpcio-reflection # grpcio-tools -<<<<<<< HEAD grpcio-health-checking==1.57.0 # via feast (setup.py) grpcio-reflection==1.57.0 # via feast (setup.py) grpcio-tools==1.57.0 -======= -grpcio-health-checking==1.56.2 - # via feast (setup.py) -grpcio-reflection==1.56.2 - # via feast (setup.py) -grpcio-tools==1.56.2 ->>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via feast (setup.py) gunicorn==21.2.0 # via feast (setup.py) @@ -126,11 +101,7 @@ mypy==1.5.1 # via sqlalchemy mypy-extensions==1.0.0 # via mypy -<<<<<<< HEAD -mypy-protobuf==3.1 -======= -mypy-protobuf==3.5.0 ->>>>>>> 2c800904 (Configure health check service and update CI dependencies) +mypy-protobuf==3.1.0 # via feast (setup.py) numpy==1.25.2 # via @@ -185,11 +156,7 @@ referencing==0.30.2 # jsonschema-specifications requests==2.31.0 # via feast (setup.py) -<<<<<<< HEAD rpds-py==0.10.2 -======= -rpds-py==0.9.2 ->>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via # jsonschema # referencing @@ -224,11 +191,7 @@ tqdm==4.66.1 # via feast (setup.py) typeguard==2.13.3 # via feast (setup.py) -<<<<<<< HEAD types-protobuf==4.24.0.1 -======= -types-protobuf==4.23.0.3 ->>>>>>> 2c800904 (Configure health check service and update CI dependencies) # via mypy-protobuf typing-extensions==4.7.1 # via diff --git a/setup.py b/setup.py index b95a534a867..699d394940e 100644 --- a/setup.py +++ b/setup.py @@ -72,7 +72,7 @@ "toml>=0.10.0,<1", "tqdm>=4,<5", "typeguard==2.13.3", - "fastapi>=0.68.0,<1", + "fastapi>=0.68.0,<0.100", "uvicorn[standard]>=0.14.0,<1", "gunicorn", "dask>=2021.1.0",