Skip to content

Commit

Permalink
Install plugins on Index and IndexGRPC
Browse files Browse the repository at this point in the history
  • Loading branch information
jhamon committed Oct 22, 2024
1 parent 3780924 commit 2c363ba
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 5 deletions.
35 changes: 30 additions & 5 deletions pinecone/data/index.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from tqdm.autonotebook import tqdm

import logging
from typing import Union, List, Optional, Dict, Any

from pinecone.config import ConfigBuilder

from pinecone.core.openapi.shared import API_VERSION
from pinecone.core.openapi.data.models import SparseValues
from pinecone.core.openapi.data import ApiClient
from pinecone.core.openapi.data.models import (
FetchResponse,
Expand All @@ -22,12 +22,22 @@
UpdateRequest,
DescribeIndexStatsRequest,
ListResponse,
SparseValues,
)
from .features.bulk_import import ImportFeatureMixin
from pinecone.core.openapi.data.api.data_plane_api import DataPlaneApi
from ..utils import setup_openapi_client, parse_non_empty_args
from ..utils import (
setup_openapi_client,
parse_non_empty_args,
build_plugin_setup_client,
validate_and_convert_errors,
)
from .features.bulk_import import ImportFeatureMixin
from .vector_factory import VectorFactory

from pinecone_plugin_interface import load_and_install as install_plugins

logger = logging.getLogger(__name__)

__all__ = [
"Index",
"FetchResponse",
Expand All @@ -47,8 +57,6 @@
"SparseValues",
]

from ..utils.error_handling import validate_and_convert_errors

_OPENAPI_ENDPOINT_PARAMS = (
"_return_http_data_only",
"_preload_content",
Expand Down Expand Up @@ -103,6 +111,23 @@ def __init__(
api_version=API_VERSION,
)

self._load_plugins()

def _load_plugins(self):
"""@private"""
try:
# I don't expect this to ever throw, but wrapping this in a
# try block just in case to make sure a bad plugin doesn't
# halt client initialization.
openapi_client_builder = build_plugin_setup_client(
config=self.config,
openapi_config=self.openapi_config,
pool_threads=self.pool_threads,
)
install_plugins(self, openapi_client_builder)
except Exception as e:
logger.error(f"Error loading plugins in Index: {e}")

def __enter__(self):
return self

Expand Down
18 changes: 18 additions & 0 deletions pinecone/grpc/base.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from abc import ABC, abstractmethod
from typing import Optional

import logging
import grpc
from grpc._channel import Channel

Expand All @@ -10,6 +11,10 @@
from .config import GRPCClientConfig
from .grpc_runner import GrpcRunner

from pinecone_plugin_interface import load_and_install as install_plugins

_logger = logging.getLogger(__name__)


class GRPCIndexBase(ABC):
"""
Expand Down Expand Up @@ -40,6 +45,19 @@ def __init__(
self._channel = channel or self._gen_channel()
self.stub = self.stub_class(self._channel)

self._load_plugins()

def _load_plugins(self):
"""@private"""
try:

def stub_openapi_client_builder(**kwargs):
pass

install_plugins(self, stub_openapi_client_builder)
except Exception as e:
_logger.error(f"Error loading plugins in GRPCIndex: {e}")

@property
@abstractmethod
def stub_class(self):
Expand Down

0 comments on commit 2c363ba

Please sign in to comment.