From 55a61e8de4b6240670588c7e212fce2fd473f2ce Mon Sep 17 00:00:00 2001 From: Tornike Gurgenidze Date: Mon, 26 Aug 2024 14:30:39 +0400 Subject: [PATCH] chore: Remove Rockset from feast (#4434) --- docs/SUMMARY.md | 1 - docs/reference/online-stores/README.md | 4 - docs/reference/online-stores/rockset.md | 84 --- ...feast.infra.feature_servers.aws_lambda.rst | 29 - ...ast.infra.feature_servers.gcp_cloudrun.rst | 29 - ....infra.materialization.contrib.bytewax.rst | 29 - .../feast.infra.materialization.lambda.rst | 29 - ...ne_stores.contrib.rockset_online_store.rst | 21 - .../feast.infra.online_stores.contrib.rst | 1 - .../feast.infra.registry.contrib.postgres.rst | 21 - .../source/feast.infra.registry_stores.rst | 21 - .../docs/source/feast.permissions.auth.rst | 61 ++ .../docs/source/feast.permissions.client.rst | 69 +++ sdk/python/docs/source/feast.permissions.rst | 103 ++++ .../docs/source/feast.permissions.server.rst | 69 +++ .../docs/source/feast.protos.feast.core.rst | 32 ++ sdk/python/docs/source/feast.rst | 16 +- sdk/python/feast/cli.py | 1 - .../contrib/rockset_online_store/__init__.py | 0 .../contrib/rockset_online_store/rockset.py | 520 ------------------ sdk/python/feast/repo_config.py | 1 - sdk/python/feast/templates/rockset/README.md | 21 - .../feast/templates/rockset/__init__.py | 0 .../feast/templates/rockset/bootstrap.py | 30 - .../rockset/feature_repo/feature_store.yaml | 8 - .../requirements/py3.10-ci-requirements.txt | 162 +----- .../requirements/py3.10-requirements.txt | 89 +-- .../requirements/py3.11-ci-requirements.txt | 157 +----- .../requirements/py3.11-requirements.txt | 89 +-- .../requirements/py3.9-ci-requirements.txt | 161 +----- .../requirements/py3.9-requirements.txt | 89 +-- .../feature_repos/repo_configuration.py | 10 - setup.py | 6 - 33 files changed, 532 insertions(+), 1431 deletions(-) delete mode 100644 docs/reference/online-stores/rockset.md delete mode 100644 sdk/python/docs/source/feast.infra.feature_servers.aws_lambda.rst delete mode 100644 sdk/python/docs/source/feast.infra.feature_servers.gcp_cloudrun.rst delete mode 100644 sdk/python/docs/source/feast.infra.materialization.contrib.bytewax.rst delete mode 100644 sdk/python/docs/source/feast.infra.materialization.lambda.rst delete mode 100644 sdk/python/docs/source/feast.infra.online_stores.contrib.rockset_online_store.rst delete mode 100644 sdk/python/docs/source/feast.infra.registry.contrib.postgres.rst delete mode 100644 sdk/python/docs/source/feast.infra.registry_stores.rst create mode 100644 sdk/python/docs/source/feast.permissions.auth.rst create mode 100644 sdk/python/docs/source/feast.permissions.client.rst create mode 100644 sdk/python/docs/source/feast.permissions.rst create mode 100644 sdk/python/docs/source/feast.permissions.server.rst delete mode 100644 sdk/python/feast/infra/online_stores/contrib/rockset_online_store/__init__.py delete mode 100644 sdk/python/feast/infra/online_stores/contrib/rockset_online_store/rockset.py delete mode 100644 sdk/python/feast/templates/rockset/README.md delete mode 100644 sdk/python/feast/templates/rockset/__init__.py delete mode 100644 sdk/python/feast/templates/rockset/bootstrap.py delete mode 100644 sdk/python/feast/templates/rockset/feature_repo/feature_store.yaml diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index c8e313850f..1c4cece799 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -108,7 +108,6 @@ * [PostgreSQL (contrib)](reference/online-stores/postgres.md) * [Cassandra + Astra DB (contrib)](reference/online-stores/cassandra.md) * [MySQL (contrib)](reference/online-stores/mysql.md) - * [Rockset (contrib)](reference/online-stores/rockset.md) * [Hazelcast (contrib)](reference/online-stores/hazelcast.md) * [ScyllaDB (contrib)](reference/online-stores/scylladb.md) * [SingleStore (contrib)](reference/online-stores/singlestore.md) diff --git a/docs/reference/online-stores/README.md b/docs/reference/online-stores/README.md index bf5419b249..cdb9c37c1d 100644 --- a/docs/reference/online-stores/README.md +++ b/docs/reference/online-stores/README.md @@ -50,10 +50,6 @@ Please see [Online Store](../../getting-started/components/online-store.md) for [mysql.md](mysql.md) {% endcontent-ref %} -{% content-ref url="rockset.md" %} -[rockset.md](rockset.md) -{% endcontent-ref %} - {% content-ref url="hazelcast.md" %} [hazelcast.md](hazelcast.md) {% endcontent-ref %} diff --git a/docs/reference/online-stores/rockset.md b/docs/reference/online-stores/rockset.md deleted file mode 100644 index 082bddf37b..0000000000 --- a/docs/reference/online-stores/rockset.md +++ /dev/null @@ -1,84 +0,0 @@ -# Rockset (contrib) - -## Description - -In Alpha Development. - -The [Rockset](https://rockset.com/demo-signup/) online store provides support for materializing feature values within a Rockset collection in order to serve features in real-time. - -* Each document is uniquely identified by its '_id' value. Repeated inserts into the same document '_id' will result in an upsert. - -Rockset indexes all columns allowing for quick per feature look up and also allows for a dynamic typed schema that can change based on any new requirements. API Keys can be found in the Rockset console. -You can also find host urls on the same tab by clicking "View Region Endpoint Urls". - -Data Model Used Per Doc - -``` -{ - "_id": (STRING) Unique Identifier for the feature document. - : (STRING) Feature Values Mapped by Feature Name. Feature - values stored as a serialized hex string. - .... - "event_ts": (STRING) ISO Stringified Timestamp. - "created_ts": (STRING) ISO Stringified Timestamp. -} -``` - - -## Example - -```yaml -project: my_feature_app -registry: data/registry.db -provider: local -online_store: - ## Basic Configs ## - - # If apikey or host is left blank the driver will try to pull - # these values from environment variables ROCKSET_APIKEY and - # ROCKSET_APISERVER respectively. - type: rockset - api_key: - host: - - ## Advanced Configs ## - - # Batch size of records that will be turned per page when - # paginating a batched read. - # - # read_pagination_batch_size: 100 - - # The amount of time, in seconds, we will wait for the - # collection to become visible to the API. - # - # collection_created_timeout_secs: 60 - - # The amount of time, in seconds, we will wait for the - # collection to enter READY state. - # - # collection_ready_timeout_secs: 1800 - - # Whether to wait for all writes to be flushed from log - # and queryable before returning write as completed. If - # False, documents that are written may not be seen - # immediately in subsequent reads. - # - # fence_all_writes: True - - # The amount of time we will wait, in seconds, for the - # write fence to be passed - # - # fence_timeout_secs: 600 - - # Initial backoff, in seconds, we will wait between - # requests when polling for a response. - # - # initial_request_backoff_secs: 2 - - # Initial backoff, in seconds, we will wait between - # requests when polling for a response. - # max_request_backoff_secs: 30 - - # The max amount of times we will retry a failed request. - # max_request_attempts: 10000 -``` diff --git a/sdk/python/docs/source/feast.infra.feature_servers.aws_lambda.rst b/sdk/python/docs/source/feast.infra.feature_servers.aws_lambda.rst deleted file mode 100644 index de90bfc000..0000000000 --- a/sdk/python/docs/source/feast.infra.feature_servers.aws_lambda.rst +++ /dev/null @@ -1,29 +0,0 @@ -feast.infra.feature\_servers.aws\_lambda package -================================================ - -Submodules ----------- - -feast.infra.feature\_servers.aws\_lambda.app module ---------------------------------------------------- - -.. automodule:: feast.infra.feature_servers.aws_lambda.app - :members: - :undoc-members: - :show-inheritance: - -feast.infra.feature\_servers.aws\_lambda.config module ------------------------------------------------------- - -.. automodule:: feast.infra.feature_servers.aws_lambda.config - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: feast.infra.feature_servers.aws_lambda - :members: - :undoc-members: - :show-inheritance: diff --git a/sdk/python/docs/source/feast.infra.feature_servers.gcp_cloudrun.rst b/sdk/python/docs/source/feast.infra.feature_servers.gcp_cloudrun.rst deleted file mode 100644 index f7fdaf5b36..0000000000 --- a/sdk/python/docs/source/feast.infra.feature_servers.gcp_cloudrun.rst +++ /dev/null @@ -1,29 +0,0 @@ -feast.infra.feature\_servers.gcp\_cloudrun package -================================================== - -Submodules ----------- - -feast.infra.feature\_servers.gcp\_cloudrun.app module ------------------------------------------------------ - -.. automodule:: feast.infra.feature_servers.gcp_cloudrun.app - :members: - :undoc-members: - :show-inheritance: - -feast.infra.feature\_servers.gcp\_cloudrun.config module --------------------------------------------------------- - -.. automodule:: feast.infra.feature_servers.gcp_cloudrun.config - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: feast.infra.feature_servers.gcp_cloudrun - :members: - :undoc-members: - :show-inheritance: diff --git a/sdk/python/docs/source/feast.infra.materialization.contrib.bytewax.rst b/sdk/python/docs/source/feast.infra.materialization.contrib.bytewax.rst deleted file mode 100644 index 86fbaa6151..0000000000 --- a/sdk/python/docs/source/feast.infra.materialization.contrib.bytewax.rst +++ /dev/null @@ -1,29 +0,0 @@ -feast.infra.materialization.contrib.bytewax package -================================================================= - -Submodules ----------- - -feast.infra.materialization.contrib.bytewax.bytewax\_materialization\_engine ----------------------------------------------------------------------- - -.. automodule:: feast.infra.materialization.contrib.bytewax.bytewax_materialization_engine - :members: - :undoc-members: - :show-inheritance: - -feast.infra.materialization.contrib.bytewax.bytewax\_materialization\_job ----------------------------------------------------------------------- - -.. automodule:: feast.infra.materialization.contrib.bytewax.bytewax_materialization_job - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: feast.infra.materialization.contrib.bytewax - :members: - :undoc-members: - :show-inheritance: diff --git a/sdk/python/docs/source/feast.infra.materialization.lambda.rst b/sdk/python/docs/source/feast.infra.materialization.lambda.rst deleted file mode 100644 index 7ca1d44314..0000000000 --- a/sdk/python/docs/source/feast.infra.materialization.lambda.rst +++ /dev/null @@ -1,29 +0,0 @@ -feast.infra.materialization.lambda package -========================================== - -Submodules ----------- - -feast.infra.materialization.lambda.app module ---------------------------------------------- - -.. automodule:: feast.infra.materialization.lambda.app - :members: - :undoc-members: - :show-inheritance: - -feast.infra.materialization.lambda.lambda\_engine module --------------------------------------------------------- - -.. automodule:: feast.infra.materialization.lambda.lambda_engine - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: feast.infra.materialization.lambda - :members: - :undoc-members: - :show-inheritance: diff --git a/sdk/python/docs/source/feast.infra.online_stores.contrib.rockset_online_store.rst b/sdk/python/docs/source/feast.infra.online_stores.contrib.rockset_online_store.rst deleted file mode 100644 index b3de7479a0..0000000000 --- a/sdk/python/docs/source/feast.infra.online_stores.contrib.rockset_online_store.rst +++ /dev/null @@ -1,21 +0,0 @@ -feast.infra.online\_stores.contrib.rockset\_online\_store package -================================================================= - -Submodules ----------- - -feast.infra.online\_stores.contrib.rockset\_online\_store.rockset module ------------------------------------------------------------------------- - -.. automodule:: feast.infra.online_stores.contrib.rockset_online_store.rockset - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: feast.infra.online_stores.contrib.rockset_online_store - :members: - :undoc-members: - :show-inheritance: diff --git a/sdk/python/docs/source/feast.infra.online_stores.contrib.rst b/sdk/python/docs/source/feast.infra.online_stores.contrib.rst index 9d301fcd0d..8c9dd7e549 100644 --- a/sdk/python/docs/source/feast.infra.online_stores.contrib.rst +++ b/sdk/python/docs/source/feast.infra.online_stores.contrib.rst @@ -12,7 +12,6 @@ Subpackages feast.infra.online_stores.contrib.hbase_online_store feast.infra.online_stores.contrib.ikv_online_store feast.infra.online_stores.contrib.mysql_online_store - feast.infra.online_stores.contrib.rockset_online_store Submodules ---------- diff --git a/sdk/python/docs/source/feast.infra.registry.contrib.postgres.rst b/sdk/python/docs/source/feast.infra.registry.contrib.postgres.rst deleted file mode 100644 index 3f31990805..0000000000 --- a/sdk/python/docs/source/feast.infra.registry.contrib.postgres.rst +++ /dev/null @@ -1,21 +0,0 @@ -feast.infra.registry.contrib.postgres package -============================================= - -Submodules ----------- - -feast.infra.registry.contrib.postgres.postgres\_registry\_store module ----------------------------------------------------------------------- - -.. automodule:: feast.infra.registry.contrib.postgres.postgres_registry_store - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: feast.infra.registry.contrib.postgres - :members: - :undoc-members: - :show-inheritance: diff --git a/sdk/python/docs/source/feast.infra.registry_stores.rst b/sdk/python/docs/source/feast.infra.registry_stores.rst deleted file mode 100644 index cff02fa338..0000000000 --- a/sdk/python/docs/source/feast.infra.registry_stores.rst +++ /dev/null @@ -1,21 +0,0 @@ -feast.infra.registry\_stores package -==================================== - -Submodules ----------- - -feast.infra.registry\_stores.sql module ---------------------------------------- - -.. automodule:: feast.infra.registry_stores.sql - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: feast.infra.registry_stores - :members: - :undoc-members: - :show-inheritance: diff --git a/sdk/python/docs/source/feast.permissions.auth.rst b/sdk/python/docs/source/feast.permissions.auth.rst new file mode 100644 index 0000000000..3826bfc217 --- /dev/null +++ b/sdk/python/docs/source/feast.permissions.auth.rst @@ -0,0 +1,61 @@ +feast.permissions.auth package +============================== + +Submodules +---------- + +feast.permissions.auth.auth\_manager module +------------------------------------------- + +.. automodule:: feast.permissions.auth.auth_manager + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.auth.auth\_type module +---------------------------------------- + +.. automodule:: feast.permissions.auth.auth_type + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.auth.kubernetes\_token\_parser module +------------------------------------------------------- + +.. automodule:: feast.permissions.auth.kubernetes_token_parser + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.auth.oidc\_token\_parser module +------------------------------------------------- + +.. automodule:: feast.permissions.auth.oidc_token_parser + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.auth.token\_extractor module +---------------------------------------------- + +.. automodule:: feast.permissions.auth.token_extractor + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.auth.token\_parser module +------------------------------------------- + +.. automodule:: feast.permissions.auth.token_parser + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: feast.permissions.auth + :members: + :undoc-members: + :show-inheritance: diff --git a/sdk/python/docs/source/feast.permissions.client.rst b/sdk/python/docs/source/feast.permissions.client.rst new file mode 100644 index 0000000000..f346801210 --- /dev/null +++ b/sdk/python/docs/source/feast.permissions.client.rst @@ -0,0 +1,69 @@ +feast.permissions.client package +================================ + +Submodules +---------- + +feast.permissions.client.arrow\_flight\_auth\_interceptor module +---------------------------------------------------------------- + +.. automodule:: feast.permissions.client.arrow_flight_auth_interceptor + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.client.auth\_client\_manager module +----------------------------------------------------- + +.. automodule:: feast.permissions.client.auth_client_manager + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.client.auth\_client\_manager\_factory module +-------------------------------------------------------------- + +.. automodule:: feast.permissions.client.auth_client_manager_factory + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.client.grpc\_client\_auth\_interceptor module +--------------------------------------------------------------- + +.. automodule:: feast.permissions.client.grpc_client_auth_interceptor + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.client.http\_auth\_requests\_wrapper module +------------------------------------------------------------- + +.. automodule:: feast.permissions.client.http_auth_requests_wrapper + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.client.kubernetes\_auth\_client\_manager module +----------------------------------------------------------------- + +.. automodule:: feast.permissions.client.kubernetes_auth_client_manager + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.client.oidc\_authentication\_client\_manager module +--------------------------------------------------------------------- + +.. automodule:: feast.permissions.client.oidc_authentication_client_manager + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: feast.permissions.client + :members: + :undoc-members: + :show-inheritance: diff --git a/sdk/python/docs/source/feast.permissions.rst b/sdk/python/docs/source/feast.permissions.rst new file mode 100644 index 0000000000..8c33ab6273 --- /dev/null +++ b/sdk/python/docs/source/feast.permissions.rst @@ -0,0 +1,103 @@ +feast.permissions package +========================= + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + feast.permissions.auth + feast.permissions.client + feast.permissions.server + +Submodules +---------- + +feast.permissions.action module +------------------------------- + +.. automodule:: feast.permissions.action + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.auth\_model module +------------------------------------ + +.. automodule:: feast.permissions.auth_model + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.decision module +--------------------------------- + +.. automodule:: feast.permissions.decision + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.decorator module +---------------------------------- + +.. automodule:: feast.permissions.decorator + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.enforcer module +--------------------------------- + +.. automodule:: feast.permissions.enforcer + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.matcher module +-------------------------------- + +.. automodule:: feast.permissions.matcher + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.permission module +----------------------------------- + +.. automodule:: feast.permissions.permission + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.policy module +------------------------------- + +.. automodule:: feast.permissions.policy + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.security\_manager module +------------------------------------------ + +.. automodule:: feast.permissions.security_manager + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.user module +----------------------------- + +.. automodule:: feast.permissions.user + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: feast.permissions + :members: + :undoc-members: + :show-inheritance: diff --git a/sdk/python/docs/source/feast.permissions.server.rst b/sdk/python/docs/source/feast.permissions.server.rst new file mode 100644 index 0000000000..33a9d8df64 --- /dev/null +++ b/sdk/python/docs/source/feast.permissions.server.rst @@ -0,0 +1,69 @@ +feast.permissions.server package +================================ + +Submodules +---------- + +feast.permissions.server.arrow module +------------------------------------- + +.. automodule:: feast.permissions.server.arrow + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.server.arrow\_flight\_token\_extractor module +--------------------------------------------------------------- + +.. automodule:: feast.permissions.server.arrow_flight_token_extractor + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.server.grpc module +------------------------------------ + +.. automodule:: feast.permissions.server.grpc + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.server.grpc\_token\_extractor module +------------------------------------------------------ + +.. automodule:: feast.permissions.server.grpc_token_extractor + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.server.rest module +------------------------------------ + +.. automodule:: feast.permissions.server.rest + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.server.rest\_token\_extractor module +------------------------------------------------------ + +.. automodule:: feast.permissions.server.rest_token_extractor + :members: + :undoc-members: + :show-inheritance: + +feast.permissions.server.utils module +------------------------------------- + +.. automodule:: feast.permissions.server.utils + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: feast.permissions.server + :members: + :undoc-members: + :show-inheritance: diff --git a/sdk/python/docs/source/feast.protos.feast.core.rst b/sdk/python/docs/source/feast.protos.feast.core.rst index a8691c20fe..9d079953c1 100644 --- a/sdk/python/docs/source/feast.protos.feast.core.rst +++ b/sdk/python/docs/source/feast.protos.feast.core.rst @@ -212,6 +212,38 @@ feast.protos.feast.core.OnDemandFeatureView\_pb2\_grpc module :undoc-members: :show-inheritance: +feast.protos.feast.core.Permission\_pb2 module +---------------------------------------------- + +.. automodule:: feast.protos.feast.core.Permission_pb2 + :members: + :undoc-members: + :show-inheritance: + +feast.protos.feast.core.Permission\_pb2\_grpc module +---------------------------------------------------- + +.. automodule:: feast.protos.feast.core.Permission_pb2_grpc + :members: + :undoc-members: + :show-inheritance: + +feast.protos.feast.core.Policy\_pb2 module +------------------------------------------ + +.. automodule:: feast.protos.feast.core.Policy_pb2 + :members: + :undoc-members: + :show-inheritance: + +feast.protos.feast.core.Policy\_pb2\_grpc module +------------------------------------------------ + +.. automodule:: feast.protos.feast.core.Policy_pb2_grpc + :members: + :undoc-members: + :show-inheritance: + feast.protos.feast.core.Registry\_pb2 module -------------------------------------------- diff --git a/sdk/python/docs/source/feast.rst b/sdk/python/docs/source/feast.rst index 83137574dd..b8c04ebde6 100644 --- a/sdk/python/docs/source/feast.rst +++ b/sdk/python/docs/source/feast.rst @@ -52,6 +52,14 @@ feast.cli module :undoc-members: :show-inheritance: +feast.cli\_utils module +----------------------- + +.. automodule:: feast.cli_utils + :members: + :undoc-members: + :show-inheritance: + feast.constants module ---------------------- @@ -252,14 +260,6 @@ feast.proto\_json module :undoc-members: :show-inheritance: -feast.prova module ------------------- - -.. automodule:: feast.prova - :members: - :undoc-members: - :show-inheritance: - feast.registry\_server module ----------------------------- diff --git a/sdk/python/feast/cli.py b/sdk/python/feast/cli.py index 737704dd36..0a12d1dcbc 100644 --- a/sdk/python/feast/cli.py +++ b/sdk/python/feast/cli.py @@ -614,7 +614,6 @@ def materialize_incremental_command(ctx: click.Context, end_ts: str, views: List "postgres", "hbase", "cassandra", - "rockset", "hazelcast", "ikv", ], diff --git a/sdk/python/feast/infra/online_stores/contrib/rockset_online_store/__init__.py b/sdk/python/feast/infra/online_stores/contrib/rockset_online_store/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/sdk/python/feast/infra/online_stores/contrib/rockset_online_store/rockset.py b/sdk/python/feast/infra/online_stores/contrib/rockset_online_store/rockset.py deleted file mode 100644 index 31de7f9e9b..0000000000 --- a/sdk/python/feast/infra/online_stores/contrib/rockset_online_store/rockset.py +++ /dev/null @@ -1,520 +0,0 @@ -# Copyright 2022 The Feast Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -import logging -import os -import random -import time -from datetime import datetime -from typing import Any, Callable, Dict, List, Literal, Optional, Sequence, Tuple, cast - -import requests -from rockset.exceptions import BadRequestException, RocksetException -from rockset.models import QueryRequestSql -from rockset.query_paginator import QueryPaginator -from rockset.rockset_client import RocksetClient - -from feast.entity import Entity -from feast.feature_view import FeatureView -from feast.infra.online_stores.helpers import compute_entity_id -from feast.infra.online_stores.online_store import OnlineStore -from feast.protos.feast.types.EntityKey_pb2 import EntityKey as EntityKeyProto -from feast.protos.feast.types.Value_pb2 import Value as ValueProto -from feast.repo_config import FeastConfigBaseModel, RepoConfig - -logger = logging.getLogger(__name__) - - -class RocksetOnlineStoreConfig(FeastConfigBaseModel): - """Online store config for Rockset store""" - - type: Literal["rockset"] = "rockset" - """Online store type selector""" - - api_key: Optional[str] = None - """Api Key to be used for Rockset Account. If not set the env var ROCKSET_APIKEY will be used.""" - - host: Optional[str] = None - """The Host Url for Rockset requests. If not set the env var ROCKSET_APISERVER will be used.""" - - read_pagination_batch_size: int = 100 - """Batch size of records that will be turned per page when paginating a batched read""" - - collection_created_timeout_secs: int = 60 - """The amount of time, in seconds, we will wait for the collection to become visible to the API""" - - collection_ready_timeout_secs: int = 30 * 60 - """The amount of time, in seconds, we will wait for the collection to enter READY state""" - - fence_all_writes: bool = True - """Whether to wait for all writes to be flushed from log and queryable. If False, documents that are written may not be seen immediately in subsequent reads""" - - fence_timeout_secs: int = 10 * 60 - """The amount of time we will wait, in seconds, for the write fence to be passed""" - - initial_request_backoff_secs: int = 2 - """Initial backoff, in seconds, we will wait between requests when polling for a response""" - - max_request_backoff_secs: int = 30 - """Initial backoff, in seconds, we will wait between requests when polling for a response""" - - max_request_attempts: int = 10 * 1000 - """The max amount of times we will retry a failed request""" - - -class RocksetOnlineStore(OnlineStore): - """ - Rockset implementation of the online store interface. - - Attributes: - _rockset_client: Rockset openapi client. - """ - - _rockset_client = None - - def online_write_batch( - self, - config: RepoConfig, - table: FeatureView, - data: List[ - Tuple[EntityKeyProto, Dict[str, ValueProto], datetime, Optional[datetime]] - ], - progress: Optional[Callable[[int], Any]], - ) -> None: - """ - Write a batch of feature rows to online Rockset store. - - Args: - config: The RepoConfig for the current FeatureStore. - table: Feast FeatureView. - data: a list of quadruplets containing Feature data. Each quadruplet contains an Entity Key, - a dict containing feature values, an event timestamp for the row, and - the created timestamp for the row if it exists. - progress: Optional function to be called once every mini-batch of rows is written to - the online store. Can be used to display progress. - """ - - online_config = config.online_store - assert isinstance(online_config, RocksetOnlineStoreConfig) - - rs = self.get_rockset_client(online_config) - collection_name = self.get_collection_name(config, table) - - # We need to deduplicate on entity_id and we will save the latest timestamp version. - dedup_dict = {} - for feature_vals in data: - entity_key, features, timestamp, created_ts = feature_vals - serialized_key = compute_entity_id( - entity_key=entity_key, - entity_key_serialization_version=config.entity_key_serialization_version, - ) - - if serialized_key not in dedup_dict: - dedup_dict[serialized_key] = feature_vals - continue - - # If the entity already existings in the dictionary ignore the entry if it has a lower timestamp. - if timestamp <= dedup_dict[serialized_key][2]: - continue - - dedup_dict[serialized_key] = feature_vals - - request_batch = [] - for serialized_key, feature_vals in dedup_dict.items(): - document = {} - entity_key, features, timestamp, created_ts = feature_vals - document["_id"] = serialized_key - - # Rockset python client currently does not handle datetime correctly and will convert - # to string instead of native Rockset DATETIME. This will be fixed, but until then we - # use isoformat. - document["event_ts"] = timestamp.isoformat() - document["created_ts"] = ( - "" if created_ts is None else created_ts.isoformat() - ) - for k, v in features.items(): - # Rockset client currently does not support bytes type. - document[k] = v.SerializeToString().hex() - - # TODO: Implement async batching with retries. - request_batch.append(document) - - if progress: - progress(1) - - resp = rs.Documents.add_documents( - collection=collection_name, data=request_batch - ) - if online_config.fence_all_writes: - self.wait_for_fence(rs, collection_name, resp["last_offset"], online_config) - - return None - - def online_read( - self, - config: RepoConfig, - table: FeatureView, - entity_keys: List[EntityKeyProto], - requested_features: Optional[List[str]] = None, - ) -> List[Tuple[Optional[datetime], Optional[Dict[str, ValueProto]]]]: - """ - Retrieve feature values from the online Rockset store. - - Args: - config: The RepoConfig for the current FeatureStore. - table: Feast FeatureView. - entity_keys: a list of entity keys that should be read from the FeatureStore. - """ - online_config = config.online_store - assert isinstance(online_config, RocksetOnlineStoreConfig) - - rs = self.get_rockset_client(online_config) - collection_name = self.get_collection_name(config, table) - - feature_list = "" - if requested_features is not None: - feature_list = ",".join(requested_features) - - entity_serialized_key_list = [ - compute_entity_id( - k, - entity_key_serialization_version=config.entity_key_serialization_version, - ) - for k in entity_keys - ] - - entity_query_str = ",".join( - "'{id}'".format(id=s) for s in entity_serialized_key_list - ) - - query_str = f""" - SELECT - "_id", - "event_ts", - {feature_list} - FROM - {collection_name} - WHERE - "_id" IN ({entity_query_str}) - """ - - feature_set = set() - if requested_features: - feature_set.update(requested_features) - - result_map = {} - for page in QueryPaginator( - rs, - rs.Queries.query( - sql=QueryRequestSql( - query=query_str, - paginate=True, - initial_paginate_response_doc_count=online_config.read_pagination_batch_size, - ) - ), - ): - for doc in page: - result = {} - for k, v in doc.items(): - if k not in feature_set: - # We want to skip deserializing values that are not feature values like bookeeping values. - continue - - val = ValueProto() - - # TODO: Remove bytes <-> string parsing once client supports bytes. - val.ParseFromString(bytes.fromhex(v)) - result[k] = val - result_map[doc["_id"]] = ( - datetime.fromisoformat(doc["event_ts"]), - result, - ) - - results_list: List[ - Tuple[Optional[datetime], Optional[Dict[str, ValueProto]]] - ] = [] - for key in entity_serialized_key_list: - if key not in result_map: - # If not found, we add a gap to let the client know. - results_list.append((None, None)) - continue - - results_list.append(result_map[key]) - - return results_list - - def update( - self, - config: RepoConfig, - tables_to_delete: Sequence[FeatureView], - tables_to_keep: Sequence[FeatureView], - entities_to_delete: Sequence[Entity], - entities_to_keep: Sequence[Entity], - partial: bool, - ): - """ - Update tables from the Rockset Online Store. - - Args: - config: The RepoConfig for the current FeatureStore. - tables_to_delete: Tables to delete from the Rockset Online Store. - tables_to_keep: Tables to keep in the Rockset Online Store. - """ - online_config = config.online_store - assert isinstance(online_config, RocksetOnlineStoreConfig) - rs = self.get_rockset_client(online_config) - - created_collections = [] - for table_instance in tables_to_keep: - try: - collection_name = self.get_collection_name(config, table_instance) - rs.Collections.create_file_upload_collection(name=collection_name) - created_collections.append(collection_name) - except BadRequestException as e: - if self.parse_request_error_type(e) == "AlreadyExists": - # Table already exists nothing to do. We should still make sure it is ready though. - created_collections.append(collection_name) - continue - raise - - for table_to_delete in tables_to_delete: - self.delete_collection( - rs, collection_name=self.get_collection_name(config, table_to_delete) - ) - - # Now wait for all collections to be READY. - self.wait_for_ready_collections( - rs, created_collections, online_config=online_config - ) - - def teardown( - self, - config: RepoConfig, - tables: Sequence[FeatureView], - entities: Sequence[Entity], - ): - """ - Delete all collections from the Rockset Online Store. - - Args: - config: The RepoConfig for the current FeatureStore. - tables: Tables to delete from the feature repo. - """ - online_config = config.online_store - assert isinstance(online_config, RocksetOnlineStoreConfig) - rs = self.get_rockset_client(online_config) - for table in tables: - self.delete_collection( - rs, collection_name=self.get_collection_name(config, table) - ) - - def get_rockset_client( - self, onlineConfig: RocksetOnlineStoreConfig - ) -> RocksetClient: - """ - Fetches the RocksetClient to be used for all requests for this online store based on the api - configuration in the provided config. If no configuration provided local ENV vars will be used. - - Args: - onlineConfig: The RocksetOnlineStoreConfig associated with this online store. - """ - if self._rockset_client is not None: - return self._rockset_client - - _api_key = ( - os.getenv("ROCKSET_APIKEY") - if isinstance(onlineConfig.api_key, type(None)) - else onlineConfig.api_key - ) - _host = ( - os.getenv("ROCKSET_APISERVER") - if isinstance(onlineConfig.host, type(None)) - else onlineConfig.host - ) - self._rockset_client = RocksetClient(host=_host, api_key=_api_key) - return self._rockset_client - - @staticmethod - def delete_collection(rs: RocksetClient, collection_name: str): - """ - Deletes the collection whose name was provided - - Args: - rs: The RocksetClient to be used for the deletion. - collection_name: The name of the collection to be deleted. - """ - - try: - rs.Collections.delete(collection=collection_name) - except RocksetException as e: - if RocksetOnlineStore.parse_request_error_type(e) == "NotFound": - logger.warning( - f"Trying to delete collection that does not exist {collection_name}" - ) - return - raise - - @staticmethod - def get_collection_name(config: RepoConfig, feature_view: FeatureView) -> str: - """ - Returns the collection name based on the provided config and FeatureView. - - Args: - config: RepoConfig for the online store. - feature_view: FeatureView that is backed by the returned collection name. - - Returns: - The collection name as a string. - """ - project_val = config.project if config.project else "feast" - table_name = feature_view.name if feature_view.name else "feature_store" - return f"{project_val}_{table_name}" - - @staticmethod - def parse_request_error_type(e: RocksetException) -> str: - """ - Parse a throw RocksetException. Will return a string representing the type of error that was thrown. - - Args: - e: The RockException that is being parsed. - - Returns: - Error type parsed as a string. - """ - - body_dict = json.loads(e.body) - return body_dict["type"] - - @staticmethod - def wait_for_fence( - rs: RocksetClient, - collection_name: str, - last_offset: str, - online_config: RocksetOnlineStoreConfig, - ): - """ - Waits until 'last_offset' is flushed and values are ready to be read. If wait lasts longer than the timeout specified in config - a timeout exception will be throw. - - Args: - rs: Rockset client that will be used to make all requests. - collection_name: Collection associated with the offsets we are waiting for. - last_offset: The actual offsets we are waiting to be flushed. - online_config: The config that will be used to determine timeouts and backout configurations. - """ - - resource_path = ( - f"/v1/orgs/self/ws/commons/collections/{collection_name}/offsets/commit" - ) - request = {"name": [last_offset]} - - headers = {} - headers["Content-Type"] = "application/json" - headers["Authorization"] = f"ApiKey {rs.api_client.configuration.api_key}" - - t_start = time.time() - for num_attempts in range(online_config.max_request_attempts): - delay = time.time() - t_start - resp = requests.post( - url=f"{rs.api_client.configuration.host}{resource_path}", - json=request, - headers=headers, - ) - - if resp.status_code == 200 and resp.json()["data"]["passed"] is True: - break - - if delay > online_config.fence_timeout_secs: - raise TimeoutError( - f"Write to collection {collection_name} at offset {last_offset} was not available for read after {delay} secs" - ) - - if resp.status_code == 429: - RocksetOnlineStore.backoff_sleep(num_attempts, online_config) - continue - elif resp.status_code != 200: - raise Exception(f"[{resp.status_code}]: {resp.reason}") - - RocksetOnlineStore.backoff_sleep(num_attempts, online_config) - - @staticmethod - def wait_for_ready_collections( - rs: RocksetClient, - collection_names: List[str], - online_config: RocksetOnlineStoreConfig, - ): - """ - Waits until all collections provided have entered READY state and can accept new documents. If wait - lasts longer than timeout a TimeoutError exception will be thrown. - - Args: - rs: Rockset client that will be used to make all requests. - collection_names: All collections that we will wait for. - timeout: The max amount of time we will wait for the collections to become READY. - """ - - t_start = time.time() - for cname in collection_names: - # We will wait until the provided timeout for all collections to become READY. - for num_attempts in range(online_config.max_request_attempts): - resp = None - delay = time.time() - t_start - try: - resp = rs.Collections.get(collection=cname) - except RocksetException as e: - error_type = RocksetOnlineStore.parse_request_error_type(e) - if error_type == "NotFound": - if delay > online_config.collection_created_timeout_secs: - raise TimeoutError( - f"Collection {cname} failed to become visible after {delay} seconds" - ) - elif error_type == "RateLimitExceeded": - RocksetOnlineStore.backoff_sleep(num_attempts, online_config) - continue - else: - raise - - if ( - resp is not None - and cast(Dict[str, dict], resp)["data"]["status"] == "READY" - ): - break - - if delay > online_config.collection_ready_timeout_secs: - raise TimeoutError( - f"Collection {cname} failed to become ready after {delay} seconds" - ) - - RocksetOnlineStore.backoff_sleep(num_attempts, online_config) - - @staticmethod - def backoff_sleep(attempts: int, online_config: RocksetOnlineStoreConfig): - """ - Sleep for the needed amount of time based on the number of request attempts. - - Args: - backoff: The amount of time we will sleep for - max_backoff: The max amount of time we should ever backoff for. - rate_limited: Whether this method is being called as part of a rate limited request. - """ - - default_backoff = online_config.initial_request_backoff_secs - - # Full jitter, exponential backoff. - backoff = random.uniform( - default_backoff, - min(default_backoff << attempts, online_config.max_request_backoff_secs), - ) - time.sleep(backoff) diff --git a/sdk/python/feast/repo_config.py b/sdk/python/feast/repo_config.py index a270e6795c..199ef31412 100644 --- a/sdk/python/feast/repo_config.py +++ b/sdk/python/feast/repo_config.py @@ -61,7 +61,6 @@ "hbase": "feast.infra.online_stores.contrib.hbase_online_store.hbase.HbaseOnlineStore", "cassandra": "feast.infra.online_stores.contrib.cassandra_online_store.cassandra_online_store.CassandraOnlineStore", "mysql": "feast.infra.online_stores.contrib.mysql_online_store.mysql.MySQLOnlineStore", - "rockset": "feast.infra.online_stores.contrib.rockset_online_store.rockset.RocksetOnlineStore", "hazelcast": "feast.infra.online_stores.contrib.hazelcast_online_store.hazelcast_online_store.HazelcastOnlineStore", "ikv": "feast.infra.online_stores.contrib.ikv_online_store.ikv.IKVOnlineStore", "elasticsearch": "feast.infra.online_stores.contrib.elasticsearch.ElasticSearchOnlineStore", diff --git a/sdk/python/feast/templates/rockset/README.md b/sdk/python/feast/templates/rockset/README.md deleted file mode 100644 index d4f1ef6faf..0000000000 --- a/sdk/python/feast/templates/rockset/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Feast Quickstart -A quick view of what's in this repository: - -* `data/` contains raw demo parquet data -* `feature_repo/driver_repo.py` contains demo feature definitions -* `feature_repo/feature_store.yaml` contains a demo setup configuring where data sources are -* `test_workflow.py` showcases how to run all key Feast commands, including defining, retrieving, and pushing features. - -You can run the overall workflow with `python test_workflow.py`. - -## To move from this into a more production ready workflow: -> See more details in [Running Feast in production](https://docs.feast.dev/how-to-guides/running-feast-in-production) - -1. `feature_store.yaml` points to a local file as a registry. You'll want to setup a remote file (e.g. in S3/GCS) or a - SQL registry. See [registry docs](https://docs.feast.dev/getting-started/concepts/registry) for more details. -2. Setup CI/CD + dev vs staging vs prod environments to automatically update the registry as you change Feast feature definitions. See [docs](https://docs.feast.dev/how-to-guides/running-feast-in-production#1.-automatically-deploying-changes-to-your-feature-definitions). -3. (optional) Regularly scheduled materialization to power low latency feature retrieval (e.g. via Airflow). See [Batch data ingestion](https://docs.feast.dev/getting-started/concepts/data-ingestion#batch-data-ingestion) - for more details. -4. (optional) Deploy feature server instances with `feast serve` to expose endpoints to retrieve online features. - - See [Python feature server](https://docs.feast.dev/reference/feature-servers/python-feature-server) for details. - - Use cases can also directly call the Feast client to fetch features as per [Feature retrieval](https://docs.feast.dev/getting-started/concepts/feature-retrieval) diff --git a/sdk/python/feast/templates/rockset/__init__.py b/sdk/python/feast/templates/rockset/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/sdk/python/feast/templates/rockset/bootstrap.py b/sdk/python/feast/templates/rockset/bootstrap.py deleted file mode 100644 index a3dc17f18e..0000000000 --- a/sdk/python/feast/templates/rockset/bootstrap.py +++ /dev/null @@ -1,30 +0,0 @@ -import click - -from feast.file_utils import replace_str_in_file - - -def bootstrap(): - # Bootstrap() will automatically be called from the init_repo() during `feast init` - import pathlib - - repo_path = pathlib.Path(__file__).parent.absolute() / "feature_repo" - config_file = repo_path / "feature_store.yaml" - data_path = repo_path / "data" - data_path.mkdir(exist_ok=True) - - rockset_apikey = click.prompt( - "Rockset Api Key (If blank will be read from ROCKSET_APIKEY in ENV):", - default="", - ) - - rockset_host = click.prompt( - "Rockset Host (If blank will be read from ROCKSET_APISERVER in ENV):", - default="", - ) - - replace_str_in_file(config_file, "ROCKSET_APIKEY", rockset_apikey) - replace_str_in_file(config_file, "ROCKSET_APISERVER", rockset_host) - - -if __name__ == "__main__": - bootstrap() diff --git a/sdk/python/feast/templates/rockset/feature_repo/feature_store.yaml b/sdk/python/feast/templates/rockset/feature_repo/feature_store.yaml deleted file mode 100644 index 57cf8e73bb..0000000000 --- a/sdk/python/feast/templates/rockset/feature_repo/feature_store.yaml +++ /dev/null @@ -1,8 +0,0 @@ -project: my_project -registry: registry.db -provider: local -online_store: - type: rockset - api_key: ROCKSET_APIKEY - host: ROCKSET_APISERVER # (api.usw2a1.rockset.com, api.euc1a1.rockset.com, api.use1a1.rockset.com) -entity_key_serialization_version: 2 diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index 89459d1a69..8128eb094d 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -1,7 +1,6 @@ # This file was autogenerated by uv via the following command: # uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.10-ci-requirements.txt aiobotocore==2.13.1 - # via feast (setup.py) aiohttp==3.9.5 # via aiobotocore aioitertools==0.11.0 @@ -20,8 +19,6 @@ anyio==4.4.0 # jupyter-server # starlette # watchfiles -appnope==0.1.4 - # via ipykernel argon2-cffi==23.1.0 # via jupyter-server argon2-cffi-bindings==21.2.0 @@ -31,17 +28,16 @@ arrow==1.3.0 asn1crypto==1.5.1 # via snowflake-connector-python assertpy==1.1 - # via feast (setup.py) asttokens==2.4.1 # via stack-data async-lru==2.0.4 # via jupyterlab +async-property==0.2.2 + # via python-keycloak async-timeout==4.0.3 # via # aiohttp # redis -async-property==0.2.2 - # via python-keycloak atpublic==4.1.0 # via ibis-framework attrs==23.2.0 @@ -54,9 +50,7 @@ azure-core==1.30.2 # azure-identity # azure-storage-blob azure-identity==1.17.1 - # via feast (setup.py) azure-storage-blob==12.20.0 - # via feast (setup.py) babel==2.15.0 # via # jupyterlab-server @@ -66,13 +60,10 @@ beautifulsoup4==4.12.3 bidict==0.23.1 # via ibis-framework bigtree==0.19.2 - # via feast (setup.py) bleach==6.1.0 # via nbconvert boto3==1.34.131 - # via - # feast (setup.py) - # moto + # via moto botocore==1.34.131 # via # aiobotocore @@ -81,13 +72,11 @@ botocore==1.34.131 # s3transfer build==1.2.1 # via - # feast (setup.py) # pip-tools # singlestoredb cachetools==5.3.3 # via google-auth cassandra-driver==3.29.1 - # via feast (setup.py) certifi==2024.7.4 # via # elastic-transport @@ -110,7 +99,6 @@ charset-normalizer==3.3.2 # snowflake-connector-python click==8.1.7 # via - # feast (setup.py) # dask # geomet # great-expectations @@ -120,9 +108,7 @@ click==8.1.7 cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via - # feast (setup.py) - # great-expectations + # via great-expectations comm==0.2.2 # via # ipykernel @@ -131,7 +117,6 @@ coverage[toml]==7.5.4 # via pytest-cov cryptography==42.0.8 # via - # feast (setup.py) # azure-identity # azure-storage-blob # great-expectations @@ -144,9 +129,7 @@ cryptography==42.0.8 # types-pyopenssl # types-redis dask[dataframe]==2024.6.2 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.6 # via dask db-dtypes==1.2.0 @@ -158,11 +141,9 @@ decorator==5.1.1 defusedxml==0.7.1 # via nbconvert deltalake==0.18.1 - # via feast (setup.py) deprecation==2.1.0 # via python-keycloak dill==0.3.8 - # via feast (setup.py) distlib==0.3.8 # via virtualenv dnspython==2.6.1 @@ -176,7 +157,6 @@ duckdb==0.10.3 elastic-transport==8.13.1 # via elasticsearch elasticsearch==8.14.0 - # via feast (setup.py) email-validator==2.2.0 # via fastapi entrypoints==0.4 @@ -191,7 +171,6 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via feast (setup.py) fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -207,16 +186,11 @@ frozenlist==1.4.1 # aiohttp # aiosignal fsspec==2023.12.2 - # via - # feast (setup.py) - # dask -geojson==2.5.0 - # via rockset + # via dask geomet==0.2.1.post1 # via cassandra-driver google-api-core[grpc]==2.19.1 # via - # feast (setup.py) # google-cloud-bigquery # google-cloud-bigquery-storage # google-cloud-bigtable @@ -231,11 +205,8 @@ google-auth==2.30.0 # google-cloud-storage # kubernetes google-cloud-bigquery[pandas]==3.13.0 - # via feast (setup.py) google-cloud-bigquery-storage==2.25.0 - # via feast (setup.py) google-cloud-bigtable==2.24.0 - # via feast (setup.py) google-cloud-core==2.4.1 # via # google-cloud-bigquery @@ -243,9 +214,7 @@ google-cloud-core==2.4.1 # google-cloud-datastore # google-cloud-storage google-cloud-datastore==2.19.0 - # via feast (setup.py) google-cloud-storage==2.17.0 - # via feast (setup.py) google-crc32c==1.5.0 # via # google-cloud-storage @@ -256,17 +225,16 @@ google-resumable-media==2.7.1 # google-cloud-storage googleapis-common-protos[grpc]==1.63.2 # via - # feast (setup.py) # google-api-core # grpc-google-iam-v1 # grpcio-status great-expectations==0.18.16 - # via feast (setup.py) +greenlet==3.0.3 + # via sqlalchemy grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable grpcio==1.64.1 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery # googleapis-common-protos @@ -277,43 +245,31 @@ grpcio==1.64.1 # grpcio-testing # grpcio-tools grpcio-health-checking==1.62.2 - # via feast (setup.py) grpcio-reflection==1.62.2 - # via feast (setup.py) grpcio-status==1.62.2 # via google-api-core grpcio-testing==1.62.2 - # via feast (setup.py) grpcio-tools==1.62.2 - # via feast (setup.py) gunicorn==22.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn happybase==1.2.0 - # via feast (setup.py) hazelcast-python-client==5.4.0 - # via feast (setup.py) hiredis==2.3.2 - # via feast (setup.py) httpcore==1.0.5 # via httpx httptools==0.6.1 # via uvicorn httpx==0.27.0 # via - # feast (setup.py) # fastapi # jupyterlab # python-keycloak ibis-framework[duckdb]==9.1.0 - # via - # feast (setup.py) - # ibis-substrait + # via ibis-substrait ibis-substrait==4.0.0 - # via feast (setup.py) identify==2.5.36 # via pre-commit idna==3.7 @@ -348,7 +304,6 @@ jedi==0.19.1 # via ipython jinja2==3.1.4 # via - # feast (setup.py) # altair # fastapi # great-expectations @@ -372,7 +327,6 @@ jsonpointer==3.0.0 # jsonschema jsonschema[format-nongpl]==4.22.0 # via - # feast (setup.py) # altair # great-expectations # jupyter-events @@ -420,7 +374,6 @@ jupyterlab-widgets==3.0.11 jwcrypto==1.5.6 # via python-keycloak kubernetes==20.13.0 - # via feast (setup.py) locket==1.0.0 # via partd makefun==1.15.2 @@ -441,17 +394,13 @@ matplotlib-inline==0.1.7 mdurl==0.1.2 # via markdown-it-py minio==7.1.0 - # via feast (setup.py) mistune==3.0.2 # via # great-expectations # nbconvert mmh3==4.1.0 - # via feast (setup.py) mock==2.0.0 - # via feast (setup.py) moto==4.2.14 - # via feast (setup.py) msal==1.29.0 # via # azure-identity @@ -463,13 +412,10 @@ multidict==6.0.5 # aiohttp # yarl mypy==1.10.1 - # via - # feast (setup.py) - # sqlalchemy + # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.3.0 - # via feast (setup.py) nbclient==0.10.0 # via nbconvert nbconvert==7.16.4 @@ -492,7 +438,6 @@ notebook-shim==0.2.4 # notebook numpy==1.26.4 # via - # feast (setup.py) # altair # dask # db-dtypes @@ -528,7 +473,6 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # feast (setup.py) # altair # dask # dask-expr @@ -554,7 +498,6 @@ pexpect==4.9.0 pip==24.1.1 # via pip-tools pip-tools==7.4.1 - # via feast (setup.py) platformdirs==3.11.0 # via # jupyter-core @@ -567,11 +510,8 @@ ply==3.11 portalocker==2.10.0 # via msal-extensions pre-commit==3.3.1 - # via feast (setup.py) prometheus-client==0.20.0 - # via - # feast (setup.py) - # jupyter-server + # via jupyter-server prompt-toolkit==3.0.47 # via ipython proto-plus==1.24.0 @@ -583,7 +523,6 @@ proto-plus==1.24.0 # google-cloud-datastore protobuf==4.25.3 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery # google-cloud-bigquery-storage @@ -600,11 +539,8 @@ protobuf==4.25.3 # proto-plus # substrait psutil==5.9.0 - # via - # feast (setup.py) - # ipykernel + # via ipykernel psycopg[binary, pool]==3.1.19 - # via feast (setup.py) psycopg-binary==3.1.19 # via psycopg psycopg-pool==3.2.2 @@ -616,14 +552,12 @@ ptyprocess==0.7.0 pure-eval==0.2.2 # via stack-data py==1.11.0 - # via feast (setup.py) py-cpuinfo==9.0.0 # via pytest-benchmark py4j==0.10.9.7 # via pyspark pyarrow==15.0.2 # via - # feast (setup.py) # dask-expr # db-dtypes # deltalake @@ -641,19 +575,16 @@ pyasn1==0.6.0 pyasn1-modules==0.4.0 # via google-auth pybindgen==0.22.1 - # via feast (setup.py) pycparser==2.22 # via cffi pydantic==2.7.4 # via - # feast (setup.py) # fastapi # great-expectations pydantic-core==2.18.4 # via pydantic pygments==2.18.0 # via - # feast (setup.py) # ipython # nbconvert # rich @@ -664,11 +595,8 @@ pyjwt[crypto]==2.8.0 # singlestoredb # snowflake-connector-python pymssql==2.3.0 - # via feast (setup.py) pymysql==1.1.1 - # via feast (setup.py) pyodbc==5.1.0 - # via feast (setup.py) pyopenssl==24.1.0 # via snowflake-connector-python pyparsing==3.1.2 @@ -678,10 +606,8 @@ pyproject-hooks==1.1.0 # build # pip-tools pyspark==3.5.1 - # via feast (setup.py) pytest==7.4.4 # via - # feast (setup.py) # pytest-benchmark # pytest-cov # pytest-env @@ -691,21 +617,13 @@ pytest==7.4.4 # pytest-timeout # pytest-xdist pytest-benchmark==3.4.1 - # via feast (setup.py) pytest-cov==5.0.0 - # via feast (setup.py) pytest-env==1.1.3 - # via feast (setup.py) pytest-lazy-fixture==0.6.3 - # via feast (setup.py) pytest-mock==1.10.4 - # via feast (setup.py) pytest-ordering==0.6 - # via feast (setup.py) pytest-timeout==1.4.2 - # via feast (setup.py) pytest-xdist==3.6.1 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via # arrow @@ -717,14 +635,12 @@ python-dateutil==2.9.0.post0 # kubernetes # moto # pandas - # rockset # trino python-dotenv==1.0.1 # via uvicorn python-json-logger==2.0.7 # via jupyter-events python-keycloak==4.2.2 - # via feast (setup.py) python-multipart==0.0.9 # via fastapi pytz==2024.1 @@ -736,7 +652,6 @@ pytz==2024.1 # trino pyyaml==6.0.1 # via - # feast (setup.py) # dask # ibis-substrait # jupyter-events @@ -750,19 +665,15 @@ pyzmq==26.0.3 # jupyter-client # jupyter-server redis==4.6.0 - # via feast (setup.py) referencing==0.35.1 # via # jsonschema # jsonschema-specifications # jupyter-events regex==2024.5.15 - # via - # feast (setup.py) - # parsimonious + # via parsimonious requests==2.32.3 # via - # feast (setup.py) # azure-core # docker # google-api-core @@ -799,8 +710,6 @@ rich==13.7.1 # via # ibis-framework # typer -rockset==2.1.2 - # via feast (setup.py) rpds-py==0.18.1 # via # jsonschema @@ -810,7 +719,6 @@ rsa==4.9 ruamel-yaml==0.17.17 # via great-expectations ruff==0.4.10 - # via feast (setup.py) s3transfer==0.10.2 # via boto3 scipy==1.14.0 @@ -827,7 +735,6 @@ setuptools==70.1.1 shellingham==1.5.4 # via typer singlestoredb==1.4.0 - # via feast (setup.py) six==1.16.0 # via # asttokens @@ -848,13 +755,11 @@ sniffio==1.3.1 snowballstemmer==2.2.0 # via sphinx snowflake-connector-python[pandas]==3.11.0 - # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python soupsieve==2.5 # via beautifulsoup4 sphinx==6.2.1 - # via feast (setup.py) sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -868,11 +773,9 @@ sphinxcontrib-qthelp==1.0.7 sphinxcontrib-serializinghtml==1.1.10 # via sphinx sqlalchemy[mypy]==2.0.31 - # via feast (setup.py) sqlglot==25.1.0 # via ibis-framework sqlite-vec==0.1.1 - # via feast (setup.py) sqlparams==6.0.1 # via singlestoredb stack-data==0.6.3 @@ -882,21 +785,17 @@ starlette==0.37.2 substrait==0.19.0 # via ibis-substrait tabulate==0.9.0 - # via feast (setup.py) tenacity==8.4.2 - # via feast (setup.py) terminado==0.18.1 # via # jupyter-server # jupyter-server-terminals testcontainers==4.4.0 - # via feast (setup.py) thriftpy2==0.5.1 # via happybase tinycss2==1.3.0 # via nbconvert toml==0.10.2 - # via feast (setup.py) tomli==2.0.1 # via # build @@ -924,9 +823,7 @@ tornado==6.4.1 # notebook # terminado tqdm==4.66.4 - # via - # feast (setup.py) - # great-expectations + # via great-expectations traitlets==5.14.3 # via # comm @@ -943,39 +840,25 @@ traitlets==5.14.3 # nbconvert # nbformat trino==0.328.0 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) typer==0.12.3 # via fastapi-cli types-cffi==1.16.0.20240331 # via types-pyopenssl types-protobuf==3.19.22 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf types-pymysql==1.1.0.20240524 - # via feast (setup.py) types-pyopenssl==24.1.0.20240425 # via types-redis types-python-dateutil==2.9.0.20240316 - # via - # feast (setup.py) - # arrow + # via arrow types-pytz==2024.1.0.20240417 - # via feast (setup.py) types-pyyaml==6.0.12.20240311 - # via feast (setup.py) types-redis==4.6.0.20240425 - # via feast (setup.py) types-requests==2.30.0.0 - # via feast (setup.py) types-setuptools==70.1.0.20240627 - # via - # feast (setup.py) - # types-cffi + # via types-cffi types-tabulate==0.9.0.20240106 - # via feast (setup.py) types-urllib3==1.26.25.14 # via types-requests typing-extensions==4.12.2 @@ -1013,7 +896,6 @@ uri-template==1.3.0 # via jsonschema urllib3==1.26.19 # via - # feast (setup.py) # botocore # docker # elastic-transport @@ -1022,18 +904,13 @@ urllib3==1.26.19 # minio # requests # responses - # rockset # testcontainers uvicorn[standard]==0.30.1 - # via - # feast (setup.py) - # fastapi + # via fastapi uvloop==0.19.0 # via uvicorn virtualenv==20.23.0 - # via - # feast (setup.py) - # pre-commit + # via pre-commit watchfiles==0.22.0 # via uvicorn wcwidth==0.2.13 @@ -1068,4 +945,3 @@ yarl==1.9.4 # via aiohttp zipp==3.19.1 # via importlib-metadata -bigtree==0.19.2 diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index f1ec2b16ab..eed2baaefe 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -11,31 +11,30 @@ attrs==23.2.0 # via # jsonschema # referencing +bigtree==0.19.2 +cachetools==5.5.0 + # via google-auth certifi==2024.7.4 # via # httpcore # httpx + # kubernetes # requests charset-normalizer==3.3.2 # via requests click==8.1.7 # via - # feast (setup.py) # dask # typer # uvicorn cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via feast (setup.py) dask[dataframe]==2024.5.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.0 # via dask dill==0.3.8 - # via feast (setup.py) dnspython==2.6.1 # via email-validator email-validator==2.1.1 @@ -43,15 +42,16 @@ email-validator==2.1.1 exceptiongroup==1.2.1 # via anyio fastapi==0.111.0 - # via - # feast (setup.py) - # fastapi-cli + # via fastapi-cli fastapi-cli==0.0.2 # via fastapi fsspec==2024.3.1 # via dask +google-auth==2.34.0 + # via kubernetes +greenlet==3.0.3 + # via sqlalchemy gunicorn==22.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore @@ -71,13 +71,11 @@ idna==3.7 importlib-metadata==7.1.0 # via dask jinja2==3.1.4 - # via - # feast (setup.py) - # fastapi + # via fastapi jsonschema==4.22.0 - # via feast (setup.py) jsonschema-specifications==2023.12.1 # via jsonschema +kubernetes==20.13.0 locket==1.0.0 # via partd markdown-it-py==3.0.0 @@ -87,19 +85,18 @@ markupsafe==2.1.5 mdurl==0.1.2 # via markdown-it-py mmh3==4.1.0 - # via feast (setup.py) mypy==1.10.0 # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.6.0 - # via feast (setup.py) numpy==1.26.4 # via - # feast (setup.py) # dask # pandas # pyarrow +oauthlib==3.2.2 + # via requests-oauthlib orjson==3.10.3 # via fastapi packaging==24.0 @@ -108,35 +105,33 @@ packaging==24.0 # gunicorn pandas==2.2.2 # via - # feast (setup.py) # dask # dask-expr partd==1.4.2 # via dask prometheus-client==0.20.0 - # via feast (setup.py) protobuf==4.25.3 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf psutil==6.0.0 - # via feast (setup.py) pyarrow==16.0.0 + # via dask-expr +pyasn1==0.6.0 # via - # feast (setup.py) - # dask-expr + # pyasn1-modules + # rsa +pyasn1-modules==0.4.0 + # via google-auth pydantic==2.7.1 - # via - # feast (setup.py) - # fastapi + # via fastapi pydantic-core==2.18.2 # via pydantic pygments==2.18.0 - # via - # feast (setup.py) - # rich + # via rich +pyjwt==2.9.0 python-dateutil==2.9.0.post0 - # via pandas + # via + # kubernetes + # pandas python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 @@ -145,39 +140,45 @@ pytz==2024.1 # via pandas pyyaml==6.0.1 # via - # feast (setup.py) # dask + # kubernetes # uvicorn referencing==0.35.1 # via # jsonschema # jsonschema-specifications requests==2.31.0 - # via feast (setup.py) + # via + # kubernetes + # requests-oauthlib +requests-oauthlib==2.0.0 + # via kubernetes rich==13.7.1 # via typer rpds-py==0.18.1 # via # jsonschema # referencing +rsa==4.9 + # via google-auth +setuptools==73.0.1 + # via kubernetes shellingham==1.5.4 # via typer six==1.16.0 - # via python-dateutil + # via + # kubernetes + # python-dateutil sniffio==1.3.1 # via # anyio # httpx sqlalchemy[mypy]==2.0.30 - # via feast (setup.py) starlette==0.37.2 # via fastapi tabulate==0.9.0 - # via feast (setup.py) tenacity==8.3.0 - # via feast (setup.py) toml==0.10.2 - # via feast (setup.py) tomli==2.0.1 # via mypy toolz==0.12.1 @@ -185,9 +186,7 @@ toolz==0.12.1 # dask # partd tqdm==4.66.4 - # via feast (setup.py) typeguard==4.2.1 - # via feast (setup.py) typer==0.12.3 # via fastapi-cli types-protobuf==5.26.0.20240422 @@ -208,18 +207,20 @@ tzdata==2024.1 ujson==5.9.0 # via fastapi urllib3==2.2.1 - # via requests + # via + # kubernetes + # requests uvicorn[standard]==0.29.0 # via - # feast (setup.py) # fastapi # fastapi-cli uvloop==0.19.0 # via uvicorn watchfiles==0.21.0 # via uvicorn +websocket-client==1.8.0 + # via kubernetes websockets==12.0 # via uvicorn zipp==3.19.1 # via importlib-metadata -bigtree==0.19.2 diff --git a/sdk/python/requirements/py3.11-ci-requirements.txt b/sdk/python/requirements/py3.11-ci-requirements.txt index fd0b5a6d26..6458540f27 100644 --- a/sdk/python/requirements/py3.11-ci-requirements.txt +++ b/sdk/python/requirements/py3.11-ci-requirements.txt @@ -1,7 +1,6 @@ # This file was autogenerated by uv via the following command: # uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.11-ci-requirements.txt aiobotocore==2.13.1 - # via feast (setup.py) aiohttp==3.9.5 # via aiobotocore aioitertools==0.11.0 @@ -20,8 +19,6 @@ anyio==4.4.0 # jupyter-server # starlette # watchfiles -appnope==0.1.4 - # via ipykernel argon2-cffi==23.1.0 # via jupyter-server argon2-cffi-bindings==21.2.0 @@ -31,7 +28,6 @@ arrow==1.3.0 asn1crypto==1.5.1 # via snowflake-connector-python assertpy==1.1 - # via feast (setup.py) asttokens==2.4.1 # via stack-data async-lru==2.0.4 @@ -50,9 +46,7 @@ azure-core==1.30.2 # azure-identity # azure-storage-blob azure-identity==1.17.1 - # via feast (setup.py) azure-storage-blob==12.20.0 - # via feast (setup.py) babel==2.15.0 # via # jupyterlab-server @@ -62,13 +56,10 @@ beautifulsoup4==4.12.3 bidict==0.23.1 # via ibis-framework bigtree==0.19.2 - # via feast (setup.py) bleach==6.1.0 # via nbconvert boto3==1.34.131 - # via - # feast (setup.py) - # moto + # via moto botocore==1.34.131 # via # aiobotocore @@ -77,13 +68,11 @@ botocore==1.34.131 # s3transfer build==1.2.1 # via - # feast (setup.py) # pip-tools # singlestoredb cachetools==5.3.3 # via google-auth cassandra-driver==3.29.1 - # via feast (setup.py) certifi==2024.7.4 # via # elastic-transport @@ -106,7 +95,6 @@ charset-normalizer==3.3.2 # snowflake-connector-python click==8.1.7 # via - # feast (setup.py) # dask # geomet # great-expectations @@ -116,9 +104,7 @@ click==8.1.7 cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via - # feast (setup.py) - # great-expectations + # via great-expectations comm==0.2.2 # via # ipykernel @@ -127,7 +113,6 @@ coverage[toml]==7.5.4 # via pytest-cov cryptography==42.0.8 # via - # feast (setup.py) # azure-identity # azure-storage-blob # great-expectations @@ -140,9 +125,7 @@ cryptography==42.0.8 # types-pyopenssl # types-redis dask[dataframe]==2024.6.2 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.6 # via dask db-dtypes==1.2.0 @@ -154,11 +137,9 @@ decorator==5.1.1 defusedxml==0.7.1 # via nbconvert deltalake==0.18.1 - # via feast (setup.py) deprecation==2.1.0 # via python-keycloak dill==0.3.8 - # via feast (setup.py) distlib==0.3.8 # via virtualenv dnspython==2.6.1 @@ -172,7 +153,6 @@ duckdb==0.10.3 elastic-transport==8.13.1 # via elasticsearch elasticsearch==8.14.0 - # via feast (setup.py) email-validator==2.2.0 # via fastapi entrypoints==0.4 @@ -182,7 +162,6 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via feast (setup.py) fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -198,16 +177,11 @@ frozenlist==1.4.1 # aiohttp # aiosignal fsspec==2023.12.2 - # via - # feast (setup.py) - # dask -geojson==2.5.0 - # via rockset + # via dask geomet==0.2.1.post1 # via cassandra-driver google-api-core[grpc]==2.19.1 # via - # feast (setup.py) # google-cloud-bigquery # google-cloud-bigquery-storage # google-cloud-bigtable @@ -222,11 +196,8 @@ google-auth==2.30.0 # google-cloud-storage # kubernetes google-cloud-bigquery[pandas]==3.13.0 - # via feast (setup.py) google-cloud-bigquery-storage==2.25.0 - # via feast (setup.py) google-cloud-bigtable==2.24.0 - # via feast (setup.py) google-cloud-core==2.4.1 # via # google-cloud-bigquery @@ -234,9 +205,7 @@ google-cloud-core==2.4.1 # google-cloud-datastore # google-cloud-storage google-cloud-datastore==2.19.0 - # via feast (setup.py) google-cloud-storage==2.17.0 - # via feast (setup.py) google-crc32c==1.5.0 # via # google-cloud-storage @@ -247,17 +216,16 @@ google-resumable-media==2.7.1 # google-cloud-storage googleapis-common-protos[grpc]==1.63.2 # via - # feast (setup.py) # google-api-core # grpc-google-iam-v1 # grpcio-status great-expectations==0.18.16 - # via feast (setup.py) +greenlet==3.0.3 + # via sqlalchemy grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable grpcio==1.64.1 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery # googleapis-common-protos @@ -268,43 +236,31 @@ grpcio==1.64.1 # grpcio-testing # grpcio-tools grpcio-health-checking==1.62.2 - # via feast (setup.py) grpcio-reflection==1.62.2 - # via feast (setup.py) grpcio-status==1.62.2 # via google-api-core grpcio-testing==1.62.2 - # via feast (setup.py) grpcio-tools==1.62.2 - # via feast (setup.py) gunicorn==22.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn happybase==1.2.0 - # via feast (setup.py) hazelcast-python-client==5.4.0 - # via feast (setup.py) hiredis==2.3.2 - # via feast (setup.py) httpcore==1.0.5 # via httpx httptools==0.6.1 # via uvicorn httpx==0.27.0 # via - # feast (setup.py) # fastapi # jupyterlab # python-keycloak ibis-framework[duckdb]==9.1.0 - # via - # feast (setup.py) - # ibis-substrait + # via ibis-substrait ibis-substrait==4.0.0 - # via feast (setup.py) identify==2.5.36 # via pre-commit idna==3.7 @@ -339,7 +295,6 @@ jedi==0.19.1 # via ipython jinja2==3.1.4 # via - # feast (setup.py) # altair # fastapi # great-expectations @@ -363,7 +318,6 @@ jsonpointer==3.0.0 # jsonschema jsonschema[format-nongpl]==4.22.0 # via - # feast (setup.py) # altair # great-expectations # jupyter-events @@ -411,7 +365,6 @@ jupyterlab-widgets==3.0.11 jwcrypto==1.5.6 # via python-keycloak kubernetes==20.13.0 - # via feast (setup.py) locket==1.0.0 # via partd makefun==1.15.2 @@ -432,17 +385,13 @@ matplotlib-inline==0.1.7 mdurl==0.1.2 # via markdown-it-py minio==7.1.0 - # via feast (setup.py) mistune==3.0.2 # via # great-expectations # nbconvert mmh3==4.1.0 - # via feast (setup.py) mock==2.0.0 - # via feast (setup.py) moto==4.2.14 - # via feast (setup.py) msal==1.29.0 # via # azure-identity @@ -454,13 +403,10 @@ multidict==6.0.5 # aiohttp # yarl mypy==1.10.1 - # via - # feast (setup.py) - # sqlalchemy + # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.3.0 - # via feast (setup.py) nbclient==0.10.0 # via nbconvert nbconvert==7.16.4 @@ -483,7 +429,6 @@ notebook-shim==0.2.4 # notebook numpy==1.26.4 # via - # feast (setup.py) # altair # dask # db-dtypes @@ -519,7 +464,6 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # feast (setup.py) # altair # dask # dask-expr @@ -545,7 +489,6 @@ pexpect==4.9.0 pip==24.1.1 # via pip-tools pip-tools==7.4.1 - # via feast (setup.py) platformdirs==3.11.0 # via # jupyter-core @@ -558,11 +501,8 @@ ply==3.11 portalocker==2.10.0 # via msal-extensions pre-commit==3.3.1 - # via feast (setup.py) prometheus-client==0.20.0 - # via - # feast (setup.py) - # jupyter-server + # via jupyter-server prompt-toolkit==3.0.47 # via ipython proto-plus==1.24.0 @@ -574,7 +514,6 @@ proto-plus==1.24.0 # google-cloud-datastore protobuf==4.25.3 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery # google-cloud-bigquery-storage @@ -591,11 +530,8 @@ protobuf==4.25.3 # proto-plus # substrait psutil==5.9.0 - # via - # feast (setup.py) - # ipykernel + # via ipykernel psycopg[binary, pool]==3.1.19 - # via feast (setup.py) psycopg-binary==3.1.19 # via psycopg psycopg-pool==3.2.2 @@ -607,14 +543,12 @@ ptyprocess==0.7.0 pure-eval==0.2.2 # via stack-data py==1.11.0 - # via feast (setup.py) py-cpuinfo==9.0.0 # via pytest-benchmark py4j==0.10.9.7 # via pyspark pyarrow==15.0.2 # via - # feast (setup.py) # dask-expr # db-dtypes # deltalake @@ -632,19 +566,16 @@ pyasn1==0.6.0 pyasn1-modules==0.4.0 # via google-auth pybindgen==0.22.1 - # via feast (setup.py) pycparser==2.22 # via cffi pydantic==2.7.4 # via - # feast (setup.py) # fastapi # great-expectations pydantic-core==2.18.4 # via pydantic pygments==2.18.0 # via - # feast (setup.py) # ipython # nbconvert # rich @@ -655,11 +586,8 @@ pyjwt[crypto]==2.8.0 # singlestoredb # snowflake-connector-python pymssql==2.3.0 - # via feast (setup.py) pymysql==1.1.1 - # via feast (setup.py) pyodbc==5.1.0 - # via feast (setup.py) pyopenssl==24.1.0 # via snowflake-connector-python pyparsing==3.1.2 @@ -669,10 +597,8 @@ pyproject-hooks==1.1.0 # build # pip-tools pyspark==3.5.1 - # via feast (setup.py) pytest==7.4.4 # via - # feast (setup.py) # pytest-benchmark # pytest-cov # pytest-env @@ -682,21 +608,13 @@ pytest==7.4.4 # pytest-timeout # pytest-xdist pytest-benchmark==3.4.1 - # via feast (setup.py) pytest-cov==5.0.0 - # via feast (setup.py) pytest-env==1.1.3 - # via feast (setup.py) pytest-lazy-fixture==0.6.3 - # via feast (setup.py) pytest-mock==1.10.4 - # via feast (setup.py) pytest-ordering==0.6 - # via feast (setup.py) pytest-timeout==1.4.2 - # via feast (setup.py) pytest-xdist==3.6.1 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via # arrow @@ -708,14 +626,12 @@ python-dateutil==2.9.0.post0 # kubernetes # moto # pandas - # rockset # trino python-dotenv==1.0.1 # via uvicorn python-json-logger==2.0.7 # via jupyter-events python-keycloak==4.2.2 - # via feast (setup.py) python-multipart==0.0.9 # via fastapi pytz==2024.1 @@ -727,7 +643,6 @@ pytz==2024.1 # trino pyyaml==6.0.1 # via - # feast (setup.py) # dask # ibis-substrait # jupyter-events @@ -741,19 +656,15 @@ pyzmq==26.0.3 # jupyter-client # jupyter-server redis==4.6.0 - # via feast (setup.py) referencing==0.35.1 # via # jsonschema # jsonschema-specifications # jupyter-events regex==2024.5.15 - # via - # feast (setup.py) - # parsimonious + # via parsimonious requests==2.32.3 # via - # feast (setup.py) # azure-core # docker # google-api-core @@ -790,8 +701,6 @@ rich==13.7.1 # via # ibis-framework # typer -rockset==2.1.2 - # via feast (setup.py) rpds-py==0.18.1 # via # jsonschema @@ -801,7 +710,6 @@ rsa==4.9 ruamel-yaml==0.17.17 # via great-expectations ruff==0.4.10 - # via feast (setup.py) s3transfer==0.10.2 # via boto3 scipy==1.14.0 @@ -818,7 +726,6 @@ setuptools==70.1.1 shellingham==1.5.4 # via typer singlestoredb==1.4.0 - # via feast (setup.py) six==1.16.0 # via # asttokens @@ -839,13 +746,11 @@ sniffio==1.3.1 snowballstemmer==2.2.0 # via sphinx snowflake-connector-python[pandas]==3.11.0 - # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python soupsieve==2.5 # via beautifulsoup4 sphinx==6.2.1 - # via feast (setup.py) sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -859,11 +764,9 @@ sphinxcontrib-qthelp==1.0.7 sphinxcontrib-serializinghtml==1.1.10 # via sphinx sqlalchemy[mypy]==2.0.31 - # via feast (setup.py) sqlglot==25.1.0 # via ibis-framework sqlite-vec==0.1.1 - # via feast (setup.py) sqlparams==6.0.1 # via singlestoredb stack-data==0.6.3 @@ -873,21 +776,17 @@ starlette==0.37.2 substrait==0.19.0 # via ibis-substrait tabulate==0.9.0 - # via feast (setup.py) tenacity==8.4.2 - # via feast (setup.py) terminado==0.18.1 # via # jupyter-server # jupyter-server-terminals testcontainers==4.4.0 - # via feast (setup.py) thriftpy2==0.5.1 # via happybase tinycss2==1.3.0 # via nbconvert toml==0.10.2 - # via feast (setup.py) tomlkit==0.12.5 # via snowflake-connector-python toolz==0.12.1 @@ -905,9 +804,7 @@ tornado==6.4.1 # notebook # terminado tqdm==4.66.4 - # via - # feast (setup.py) - # great-expectations + # via great-expectations traitlets==5.14.3 # via # comm @@ -924,39 +821,25 @@ traitlets==5.14.3 # nbconvert # nbformat trino==0.328.0 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) typer==0.12.3 # via fastapi-cli types-cffi==1.16.0.20240331 # via types-pyopenssl types-protobuf==3.19.22 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf types-pymysql==1.1.0.20240524 - # via feast (setup.py) types-pyopenssl==24.1.0.20240425 # via types-redis types-python-dateutil==2.9.0.20240316 - # via - # feast (setup.py) - # arrow + # via arrow types-pytz==2024.1.0.20240417 - # via feast (setup.py) types-pyyaml==6.0.12.20240311 - # via feast (setup.py) types-redis==4.6.0.20240425 - # via feast (setup.py) types-requests==2.30.0.0 - # via feast (setup.py) types-setuptools==70.1.0.20240627 - # via - # feast (setup.py) - # types-cffi + # via types-cffi types-tabulate==0.9.0.20240106 - # via feast (setup.py) types-urllib3==1.26.25.14 # via types-requests typing-extensions==4.12.2 @@ -991,7 +874,6 @@ uri-template==1.3.0 # via jsonschema urllib3==1.26.19 # via - # feast (setup.py) # botocore # docker # elastic-transport @@ -1000,18 +882,13 @@ urllib3==1.26.19 # minio # requests # responses - # rockset # testcontainers uvicorn[standard]==0.30.1 - # via - # feast (setup.py) - # fastapi + # via fastapi uvloop==0.19.0 # via uvicorn virtualenv==20.23.0 - # via - # feast (setup.py) - # pre-commit + # via pre-commit watchfiles==0.22.0 # via uvicorn wcwidth==0.2.13 diff --git a/sdk/python/requirements/py3.11-requirements.txt b/sdk/python/requirements/py3.11-requirements.txt index e51452a594..9f6dff962b 100644 --- a/sdk/python/requirements/py3.11-requirements.txt +++ b/sdk/python/requirements/py3.11-requirements.txt @@ -11,45 +11,45 @@ attrs==23.2.0 # via # jsonschema # referencing +bigtree==0.19.2 +cachetools==5.5.0 + # via google-auth certifi==2024.7.4 # via # httpcore # httpx + # kubernetes # requests charset-normalizer==3.3.2 # via requests click==8.1.7 # via - # feast (setup.py) # dask # typer # uvicorn cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via feast (setup.py) dask[dataframe]==2024.5.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.0 # via dask dill==0.3.8 - # via feast (setup.py) dnspython==2.6.1 # via email-validator email-validator==2.1.1 # via fastapi fastapi==0.111.0 - # via - # feast (setup.py) - # fastapi-cli + # via fastapi-cli fastapi-cli==0.0.2 # via fastapi fsspec==2024.3.1 # via dask +google-auth==2.34.0 + # via kubernetes +greenlet==3.0.3 + # via sqlalchemy gunicorn==22.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore @@ -69,13 +69,11 @@ idna==3.7 importlib-metadata==7.1.0 # via dask jinja2==3.1.4 - # via - # feast (setup.py) - # fastapi + # via fastapi jsonschema==4.22.0 - # via feast (setup.py) jsonschema-specifications==2023.12.1 # via jsonschema +kubernetes==20.13.0 locket==1.0.0 # via partd markdown-it-py==3.0.0 @@ -85,19 +83,18 @@ markupsafe==2.1.5 mdurl==0.1.2 # via markdown-it-py mmh3==4.1.0 - # via feast (setup.py) mypy==1.10.0 # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.6.0 - # via feast (setup.py) numpy==1.26.4 # via - # feast (setup.py) # dask # pandas # pyarrow +oauthlib==3.2.2 + # via requests-oauthlib orjson==3.10.3 # via fastapi packaging==24.0 @@ -106,35 +103,33 @@ packaging==24.0 # gunicorn pandas==2.2.2 # via - # feast (setup.py) # dask # dask-expr partd==1.4.2 # via dask prometheus-client==0.20.0 - # via feast (setup.py) protobuf==4.25.3 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf psutil==6.0.0 - # via feast (setup.py) pyarrow==16.0.0 + # via dask-expr +pyasn1==0.6.0 # via - # feast (setup.py) - # dask-expr + # pyasn1-modules + # rsa +pyasn1-modules==0.4.0 + # via google-auth pydantic==2.7.1 - # via - # feast (setup.py) - # fastapi + # via fastapi pydantic-core==2.18.2 # via pydantic pygments==2.18.0 - # via - # feast (setup.py) - # rich + # via rich +pyjwt==2.9.0 python-dateutil==2.9.0.post0 - # via pandas + # via + # kubernetes + # pandas python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 @@ -143,47 +138,51 @@ pytz==2024.1 # via pandas pyyaml==6.0.1 # via - # feast (setup.py) # dask + # kubernetes # uvicorn referencing==0.35.1 # via # jsonschema # jsonschema-specifications requests==2.31.0 - # via feast (setup.py) + # via + # kubernetes + # requests-oauthlib +requests-oauthlib==2.0.0 + # via kubernetes rich==13.7.1 # via typer rpds-py==0.18.1 # via # jsonschema # referencing +rsa==4.9 + # via google-auth +setuptools==73.0.1 + # via kubernetes shellingham==1.5.4 # via typer six==1.16.0 - # via python-dateutil + # via + # kubernetes + # python-dateutil sniffio==1.3.1 # via # anyio # httpx sqlalchemy[mypy]==2.0.30 - # via feast (setup.py) starlette==0.37.2 # via fastapi tabulate==0.9.0 - # via feast (setup.py) tenacity==8.3.0 - # via feast (setup.py) toml==0.10.2 - # via feast (setup.py) toolz==0.12.1 # via # dask # partd tqdm==4.66.4 - # via feast (setup.py) typeguard==4.2.1 - # via feast (setup.py) typer==0.12.3 # via fastapi-cli types-protobuf==5.26.0.20240422 @@ -202,18 +201,20 @@ tzdata==2024.1 ujson==5.9.0 # via fastapi urllib3==2.2.1 - # via requests + # via + # kubernetes + # requests uvicorn[standard]==0.29.0 # via - # feast (setup.py) # fastapi # fastapi-cli uvloop==0.19.0 # via uvicorn watchfiles==0.21.0 # via uvicorn +websocket-client==1.8.0 + # via kubernetes websockets==12.0 # via uvicorn zipp==3.19.1 # via importlib-metadata -bigtree==0.19.2 diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index be30f032a9..58ec69fe2d 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -1,7 +1,6 @@ # This file was autogenerated by uv via the following command: # uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.9-ci-requirements.txt aiobotocore==2.13.1 - # via feast (setup.py) aiohttp==3.9.5 # via aiobotocore aioitertools==0.11.0 @@ -20,8 +19,6 @@ anyio==4.4.0 # jupyter-server # starlette # watchfiles -appnope==0.1.4 - # via ipykernel argon2-cffi==23.1.0 # via jupyter-server argon2-cffi-bindings==21.2.0 @@ -31,17 +28,16 @@ arrow==1.3.0 asn1crypto==1.5.1 # via snowflake-connector-python assertpy==1.1 - # via feast (setup.py) asttokens==2.4.1 # via stack-data async-lru==2.0.4 # via jupyterlab +async-property==0.2.2 + # via python-keycloak async-timeout==4.0.3 # via # aiohttp # redis -async-property==0.2.2 - # via python-keycloak atpublic==4.1.0 # via ibis-framework attrs==23.2.0 @@ -54,9 +50,7 @@ azure-core==1.30.2 # azure-identity # azure-storage-blob azure-identity==1.17.1 - # via feast (setup.py) azure-storage-blob==12.20.0 - # via feast (setup.py) babel==2.15.0 # via # jupyterlab-server @@ -66,13 +60,10 @@ beautifulsoup4==4.12.3 bidict==0.23.1 # via ibis-framework bigtree==0.19.2 - # via feast (setup.py) bleach==6.1.0 # via nbconvert boto3==1.34.131 - # via - # feast (setup.py) - # moto + # via moto botocore==1.34.131 # via # aiobotocore @@ -81,13 +72,11 @@ botocore==1.34.131 # s3transfer build==1.2.1 # via - # feast (setup.py) # pip-tools # singlestoredb cachetools==5.3.3 # via google-auth cassandra-driver==3.29.1 - # via feast (setup.py) certifi==2024.7.4 # via # elastic-transport @@ -110,7 +99,6 @@ charset-normalizer==3.3.2 # snowflake-connector-python click==8.1.7 # via - # feast (setup.py) # dask # geomet # great-expectations @@ -120,9 +108,7 @@ click==8.1.7 cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via - # feast (setup.py) - # great-expectations + # via great-expectations comm==0.2.2 # via # ipykernel @@ -131,7 +117,6 @@ coverage[toml]==7.5.4 # via pytest-cov cryptography==42.0.8 # via - # feast (setup.py) # azure-identity # azure-storage-blob # great-expectations @@ -144,9 +129,7 @@ cryptography==42.0.8 # types-pyopenssl # types-redis dask[dataframe]==2024.6.2 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.6 # via dask db-dtypes==1.2.0 @@ -158,11 +141,9 @@ decorator==5.1.1 defusedxml==0.7.1 # via nbconvert deltalake==0.18.1 - # via feast (setup.py) deprecation==2.1.0 # via python-keycloak dill==0.3.8 - # via feast (setup.py) distlib==0.3.8 # via virtualenv dnspython==2.6.1 @@ -176,7 +157,6 @@ duckdb==0.10.3 elastic-transport==8.13.1 # via elasticsearch elasticsearch==8.14.0 - # via feast (setup.py) email-validator==2.2.0 # via fastapi entrypoints==0.4 @@ -191,7 +171,6 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via feast (setup.py) fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -207,16 +186,11 @@ frozenlist==1.4.1 # aiohttp # aiosignal fsspec==2023.12.2 - # via - # feast (setup.py) - # dask -geojson==2.5.0 - # via rockset + # via dask geomet==0.2.1.post1 # via cassandra-driver google-api-core[grpc]==2.19.1 # via - # feast (setup.py) # google-cloud-bigquery # google-cloud-bigquery-storage # google-cloud-bigtable @@ -231,11 +205,8 @@ google-auth==2.30.0 # google-cloud-storage # kubernetes google-cloud-bigquery[pandas]==3.13.0 - # via feast (setup.py) google-cloud-bigquery-storage==2.25.0 - # via feast (setup.py) google-cloud-bigtable==2.24.0 - # via feast (setup.py) google-cloud-core==2.4.1 # via # google-cloud-bigquery @@ -243,9 +214,7 @@ google-cloud-core==2.4.1 # google-cloud-datastore # google-cloud-storage google-cloud-datastore==2.19.0 - # via feast (setup.py) google-cloud-storage==2.17.0 - # via feast (setup.py) google-crc32c==1.5.0 # via # google-cloud-storage @@ -256,17 +225,16 @@ google-resumable-media==2.7.1 # google-cloud-storage googleapis-common-protos[grpc]==1.63.2 # via - # feast (setup.py) # google-api-core # grpc-google-iam-v1 # grpcio-status great-expectations==0.18.16 - # via feast (setup.py) +greenlet==3.0.3 + # via sqlalchemy grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable grpcio==1.64.1 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery # googleapis-common-protos @@ -277,43 +245,31 @@ grpcio==1.64.1 # grpcio-testing # grpcio-tools grpcio-health-checking==1.62.2 - # via feast (setup.py) grpcio-reflection==1.62.2 - # via feast (setup.py) grpcio-status==1.62.2 # via google-api-core grpcio-testing==1.62.2 - # via feast (setup.py) grpcio-tools==1.62.2 - # via feast (setup.py) gunicorn==22.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn happybase==1.2.0 - # via feast (setup.py) hazelcast-python-client==5.4.0 - # via feast (setup.py) hiredis==2.3.2 - # via feast (setup.py) httpcore==1.0.5 # via httpx httptools==0.6.1 # via uvicorn httpx==0.27.0 # via - # feast (setup.py) # fastapi # jupyterlab # python-keycloak ibis-framework[duckdb]==9.0.0 - # via - # feast (setup.py) - # ibis-substrait + # via ibis-substrait ibis-substrait==4.0.0 - # via feast (setup.py) identify==2.5.36 # via pre-commit idna==3.7 @@ -357,7 +313,6 @@ jedi==0.19.1 # via ipython jinja2==3.1.4 # via - # feast (setup.py) # altair # fastapi # great-expectations @@ -381,7 +336,6 @@ jsonpointer==3.0.0 # jsonschema jsonschema[format-nongpl]==4.22.0 # via - # feast (setup.py) # altair # great-expectations # jupyter-events @@ -429,7 +383,6 @@ jupyterlab-widgets==3.0.11 jwcrypto==1.5.6 # via python-keycloak kubernetes==20.13.0 - # via feast (setup.py) locket==1.0.0 # via partd makefun==1.15.2 @@ -450,17 +403,13 @@ matplotlib-inline==0.1.7 mdurl==0.1.2 # via markdown-it-py minio==7.1.0 - # via feast (setup.py) mistune==3.0.2 # via # great-expectations # nbconvert mmh3==4.1.0 - # via feast (setup.py) mock==2.0.0 - # via feast (setup.py) moto==4.2.14 - # via feast (setup.py) msal==1.29.0 # via # azure-identity @@ -472,13 +421,10 @@ multidict==6.0.5 # aiohttp # yarl mypy==1.10.1 - # via - # feast (setup.py) - # sqlalchemy + # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.3.0 - # via feast (setup.py) nbclient==0.10.0 # via nbconvert nbconvert==7.16.4 @@ -501,7 +447,6 @@ notebook-shim==0.2.4 # notebook numpy==1.26.4 # via - # feast (setup.py) # altair # dask # db-dtypes @@ -537,7 +482,6 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # feast (setup.py) # altair # dask # dask-expr @@ -563,7 +507,6 @@ pexpect==4.9.0 pip==24.1.1 # via pip-tools pip-tools==7.4.1 - # via feast (setup.py) platformdirs==3.11.0 # via # jupyter-core @@ -576,11 +519,8 @@ ply==3.11 portalocker==2.10.0 # via msal-extensions pre-commit==3.3.1 - # via feast (setup.py) prometheus-client==0.20.0 - # via - # feast (setup.py) - # jupyter-server + # via jupyter-server prompt-toolkit==3.0.47 # via ipython proto-plus==1.24.0 @@ -592,7 +532,6 @@ proto-plus==1.24.0 # google-cloud-datastore protobuf==4.25.3 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery # google-cloud-bigquery-storage @@ -609,11 +548,8 @@ protobuf==4.25.3 # proto-plus # substrait psutil==5.9.0 - # via - # feast (setup.py) - # ipykernel + # via ipykernel psycopg[binary, pool]==3.1.18 - # via feast (setup.py) psycopg-binary==3.1.18 # via psycopg psycopg-pool==3.2.2 @@ -625,14 +561,12 @@ ptyprocess==0.7.0 pure-eval==0.2.2 # via stack-data py==1.11.0 - # via feast (setup.py) py-cpuinfo==9.0.0 # via pytest-benchmark py4j==0.10.9.7 # via pyspark pyarrow==15.0.2 # via - # feast (setup.py) # dask-expr # db-dtypes # deltalake @@ -650,19 +584,16 @@ pyasn1==0.6.0 pyasn1-modules==0.4.0 # via google-auth pybindgen==0.22.1 - # via feast (setup.py) pycparser==2.22 # via cffi pydantic==2.7.4 # via - # feast (setup.py) # fastapi # great-expectations pydantic-core==2.18.4 # via pydantic pygments==2.18.0 # via - # feast (setup.py) # ipython # nbconvert # rich @@ -673,11 +604,8 @@ pyjwt[crypto]==2.8.0 # singlestoredb # snowflake-connector-python pymssql==2.3.0 - # via feast (setup.py) pymysql==1.1.1 - # via feast (setup.py) pyodbc==5.1.0 - # via feast (setup.py) pyopenssl==24.1.0 # via snowflake-connector-python pyparsing==3.1.2 @@ -687,10 +615,8 @@ pyproject-hooks==1.1.0 # build # pip-tools pyspark==3.5.1 - # via feast (setup.py) pytest==7.4.4 # via - # feast (setup.py) # pytest-benchmark # pytest-cov # pytest-env @@ -700,21 +626,13 @@ pytest==7.4.4 # pytest-timeout # pytest-xdist pytest-benchmark==3.4.1 - # via feast (setup.py) pytest-cov==5.0.0 - # via feast (setup.py) pytest-env==1.1.3 - # via feast (setup.py) pytest-lazy-fixture==0.6.3 - # via feast (setup.py) pytest-mock==1.10.4 - # via feast (setup.py) pytest-ordering==0.6 - # via feast (setup.py) pytest-timeout==1.4.2 - # via feast (setup.py) pytest-xdist==3.6.1 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via # arrow @@ -726,14 +644,12 @@ python-dateutil==2.9.0.post0 # kubernetes # moto # pandas - # rockset # trino python-dotenv==1.0.1 # via uvicorn python-json-logger==2.0.7 # via jupyter-events python-keycloak==4.2.2 - # via feast (setup.py) python-multipart==0.0.9 # via fastapi pytz==2024.1 @@ -745,7 +661,6 @@ pytz==2024.1 # trino pyyaml==6.0.1 # via - # feast (setup.py) # dask # ibis-substrait # jupyter-events @@ -759,19 +674,15 @@ pyzmq==26.0.3 # jupyter-client # jupyter-server redis==4.6.0 - # via feast (setup.py) referencing==0.35.1 # via # jsonschema # jsonschema-specifications # jupyter-events regex==2024.5.15 - # via - # feast (setup.py) - # parsimonious + # via parsimonious requests==2.32.3 # via - # feast (setup.py) # azure-core # docker # google-api-core @@ -808,8 +719,6 @@ rich==13.7.1 # via # ibis-framework # typer -rockset==2.1.2 - # via feast (setup.py) rpds-py==0.18.1 # via # jsonschema @@ -821,7 +730,6 @@ ruamel-yaml==0.17.17 ruamel-yaml-clib==0.2.8 # via ruamel-yaml ruff==0.4.10 - # via feast (setup.py) s3transfer==0.10.2 # via boto3 scipy==1.13.1 @@ -838,7 +746,6 @@ setuptools==70.1.1 shellingham==1.5.4 # via typer singlestoredb==1.4.0 - # via feast (setup.py) six==1.16.0 # via # asttokens @@ -859,13 +766,11 @@ sniffio==1.3.1 snowballstemmer==2.2.0 # via sphinx snowflake-connector-python[pandas]==3.11.0 - # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python soupsieve==2.5 # via beautifulsoup4 sphinx==6.2.1 - # via feast (setup.py) sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -879,11 +784,9 @@ sphinxcontrib-qthelp==1.0.7 sphinxcontrib-serializinghtml==1.1.10 # via sphinx sqlalchemy[mypy]==2.0.31 - # via feast (setup.py) sqlglot==23.12.2 # via ibis-framework sqlite-vec==0.1.1 - # via feast (setup.py) sqlparams==6.0.1 # via singlestoredb stack-data==0.6.3 @@ -893,21 +796,17 @@ starlette==0.37.2 substrait==0.19.0 # via ibis-substrait tabulate==0.9.0 - # via feast (setup.py) tenacity==8.4.2 - # via feast (setup.py) terminado==0.18.1 # via # jupyter-server # jupyter-server-terminals testcontainers==4.4.0 - # via feast (setup.py) thriftpy2==0.5.1 # via happybase tinycss2==1.3.0 # via nbconvert toml==0.10.2 - # via feast (setup.py) tomli==2.0.1 # via # build @@ -935,9 +834,7 @@ tornado==6.4.1 # notebook # terminado tqdm==4.66.4 - # via - # feast (setup.py) - # great-expectations + # via great-expectations traitlets==5.14.3 # via # comm @@ -954,39 +851,25 @@ traitlets==5.14.3 # nbconvert # nbformat trino==0.328.0 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) typer==0.12.3 # via fastapi-cli types-cffi==1.16.0.20240331 # via types-pyopenssl types-protobuf==3.19.22 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf types-pymysql==1.1.0.20240524 - # via feast (setup.py) types-pyopenssl==24.1.0.20240425 # via types-redis types-python-dateutil==2.9.0.20240316 - # via - # feast (setup.py) - # arrow + # via arrow types-pytz==2024.1.0.20240417 - # via feast (setup.py) types-pyyaml==6.0.12.20240311 - # via feast (setup.py) types-redis==4.6.0.20240425 - # via feast (setup.py) types-requests==2.30.0.0 - # via feast (setup.py) types-setuptools==70.1.0.20240627 - # via - # feast (setup.py) - # types-cffi + # via types-cffi types-tabulate==0.9.0.20240106 - # via feast (setup.py) types-urllib3==1.26.25.14 # via types-requests typing-extensions==4.12.2 @@ -1026,7 +909,6 @@ uri-template==1.3.0 # via jsonschema urllib3==1.26.19 # via - # feast (setup.py) # botocore # docker # elastic-transport @@ -1035,19 +917,14 @@ urllib3==1.26.19 # minio # requests # responses - # rockset # snowflake-connector-python # testcontainers uvicorn[standard]==0.30.1 - # via - # feast (setup.py) - # fastapi + # via fastapi uvloop==0.19.0 # via uvicorn virtualenv==20.23.0 - # via - # feast (setup.py) - # pre-commit + # via pre-commit watchfiles==0.22.0 # via uvicorn wcwidth==0.2.13 diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 0b3c8a33c9..960eaa6554 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -11,31 +11,30 @@ attrs==23.2.0 # via # jsonschema # referencing +bigtree==0.19.2 +cachetools==5.5.0 + # via google-auth certifi==2024.7.4 # via # httpcore # httpx + # kubernetes # requests charset-normalizer==3.3.2 # via requests click==8.1.7 # via - # feast (setup.py) # dask # typer # uvicorn cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via feast (setup.py) dask[dataframe]==2024.5.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.0 # via dask dill==0.3.8 - # via feast (setup.py) dnspython==2.6.1 # via email-validator email-validator==2.1.1 @@ -43,15 +42,16 @@ email-validator==2.1.1 exceptiongroup==1.2.2 # via anyio fastapi==0.111.0 - # via - # feast (setup.py) - # fastapi-cli + # via fastapi-cli fastapi-cli==0.0.2 # via fastapi fsspec==2024.3.1 # via dask +google-auth==2.34.0 + # via kubernetes +greenlet==3.0.3 + # via sqlalchemy gunicorn==22.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore @@ -73,13 +73,11 @@ importlib-metadata==8.2.0 # dask # typeguard jinja2==3.1.4 - # via - # feast (setup.py) - # fastapi + # via fastapi jsonschema==4.22.0 - # via feast (setup.py) jsonschema-specifications==2023.12.1 # via jsonschema +kubernetes==20.13.0 locket==1.0.0 # via partd markdown-it-py==3.0.0 @@ -89,19 +87,18 @@ markupsafe==2.1.5 mdurl==0.1.2 # via markdown-it-py mmh3==4.1.0 - # via feast (setup.py) mypy==1.10.0 # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.6.0 - # via feast (setup.py) numpy==1.26.4 # via - # feast (setup.py) # dask # pandas # pyarrow +oauthlib==3.2.2 + # via requests-oauthlib orjson==3.10.3 # via fastapi packaging==24.0 @@ -110,35 +107,33 @@ packaging==24.0 # gunicorn pandas==2.2.2 # via - # feast (setup.py) # dask # dask-expr partd==1.4.2 # via dask prometheus-client==0.20.0 - # via feast (setup.py) protobuf==4.25.3 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf psutil==6.0.0 - # via feast (setup.py) pyarrow==16.0.0 + # via dask-expr +pyasn1==0.6.0 # via - # feast (setup.py) - # dask-expr + # pyasn1-modules + # rsa +pyasn1-modules==0.4.0 + # via google-auth pydantic==2.7.1 - # via - # feast (setup.py) - # fastapi + # via fastapi pydantic-core==2.18.2 # via pydantic pygments==2.18.0 - # via - # feast (setup.py) - # rich + # via rich +pyjwt==2.9.0 python-dateutil==2.9.0.post0 - # via pandas + # via + # kubernetes + # pandas python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 @@ -147,39 +142,45 @@ pytz==2024.1 # via pandas pyyaml==6.0.1 # via - # feast (setup.py) # dask + # kubernetes # uvicorn referencing==0.35.1 # via # jsonschema # jsonschema-specifications requests==2.31.0 - # via feast (setup.py) + # via + # kubernetes + # requests-oauthlib +requests-oauthlib==2.0.0 + # via kubernetes rich==13.7.1 # via typer rpds-py==0.18.1 # via # jsonschema # referencing +rsa==4.9 + # via google-auth +setuptools==73.0.1 + # via kubernetes shellingham==1.5.4 # via typer six==1.16.0 - # via python-dateutil + # via + # kubernetes + # python-dateutil sniffio==1.3.1 # via # anyio # httpx sqlalchemy[mypy]==2.0.30 - # via feast (setup.py) starlette==0.37.2 # via fastapi tabulate==0.9.0 - # via feast (setup.py) tenacity==8.3.0 - # via feast (setup.py) toml==0.10.2 - # via feast (setup.py) tomli==2.0.1 # via mypy toolz==0.12.1 @@ -187,9 +188,7 @@ toolz==0.12.1 # dask # partd tqdm==4.66.4 - # via feast (setup.py) typeguard==4.2.1 - # via feast (setup.py) typer==0.12.3 # via fastapi-cli types-protobuf==5.26.0.20240422 @@ -211,18 +210,20 @@ tzdata==2024.1 ujson==5.9.0 # via fastapi urllib3==2.2.1 - # via requests + # via + # kubernetes + # requests uvicorn[standard]==0.29.0 # via - # feast (setup.py) # fastapi # fastapi-cli uvloop==0.19.0 # via uvicorn watchfiles==0.21.0 # via uvicorn +websocket-client==1.8.0 + # via kubernetes websockets==12.0 # via uvicorn zipp==3.19.2 # via importlib-metadata -bigtree==0.19.2 diff --git a/sdk/python/tests/integration/feature_repos/repo_configuration.py b/sdk/python/tests/integration/feature_repos/repo_configuration.py index 0bf737f616..660a937f5a 100644 --- a/sdk/python/tests/integration/feature_repos/repo_configuration.py +++ b/sdk/python/tests/integration/feature_repos/repo_configuration.py @@ -110,12 +110,6 @@ "instance": os.getenv("BIGTABLE_INSTANCE_ID", "feast-integration-tests"), } -ROCKSET_CONFIG = { - "type": "rockset", - "api_key": os.getenv("ROCKSET_APIKEY", ""), - "host": os.getenv("ROCKSET_APISERVER", "api.rs2.usw2.rockset.com"), -} - IKV_CONFIG = { "type": "ikv", "account_id": os.getenv("IKV_ACCOUNT_ID", ""), @@ -166,10 +160,6 @@ AVAILABLE_ONLINE_STORES["datastore"] = ("datastore", None) AVAILABLE_ONLINE_STORES["snowflake"] = (SNOWFLAKE_CONFIG, None) AVAILABLE_ONLINE_STORES["bigtable"] = (BIGTABLE_CONFIG, None) - # Uncomment to test using private Rockset account. Currently not enabled as - # there is no dedicated Rockset instance for CI testing and there is no - # containerized version of Rockset. - # AVAILABLE_ONLINE_STORES["rockset"] = (ROCKSET_CONFIG, None) # Uncomment to test using private IKV account. Currently not enabled as # there is no dedicated IKV instance for CI testing and there is no diff --git a/setup.py b/setup.py index d53aee1002..a9f9cafacc 100644 --- a/setup.py +++ b/setup.py @@ -125,10 +125,6 @@ "pymssql", ] -ROCKSET_REQUIRED = [ - "rockset>=1.0.3", -] - IKV_REQUIRED = [ "ikvpy>=0.0.36", ] @@ -214,7 +210,6 @@ + HBASE_REQUIRED + CASSANDRA_REQUIRED + AZURE_REQUIRED - + ROCKSET_REQUIRED + HAZELCAST_REQUIRED + IBIS_REQUIRED + GRPCIO_REQUIRED @@ -386,7 +381,6 @@ def run(self): "cassandra": CASSANDRA_REQUIRED, "hazelcast": HAZELCAST_REQUIRED, "grpcio": GRPCIO_REQUIRED, - "rockset": ROCKSET_REQUIRED, "ibis": IBIS_REQUIRED, "duckdb": DUCKDB_REQUIRED, "ikv": IKV_REQUIRED,