2
2
# Copyright (c) 2020-2021 Pinecone Systems Inc. All right reserved.
3
3
#
4
4
5
- import json
6
5
import time
7
6
from typing import NamedTuple
8
-
9
- import pinecone
10
7
from pinecone .config import Config
11
8
from pinecone .core .client .api .index_operations_api import IndexOperationsApi
12
9
from pinecone .core .client .api_client import ApiClient
13
- from pinecone .core .client .configuration import Configuration
14
10
from pinecone .core .client .model .create_request import CreateRequest
15
11
from pinecone .core .client .model .patch_request import PatchRequest
16
12
from pinecone .core .client .model .create_collection_request import CreateCollectionRequest
17
13
from pinecone .core .utils import get_user_agent
18
14
19
15
__all__ = [
20
16
"create_index" , "delete_index" , "describe_index" , "list_indexes" , "scale_index" , "IndexDescription" ,
21
- "create_collection" , "describe_collection" , "list_collections" , "delete_collection" , "CollectionDescription " ,
22
- "configure_index "
17
+ "create_collection" , "describe_collection" , "list_collections" , "delete_collection" , "configure_index " ,
18
+ "CollectionDescription "
23
19
]
24
20
25
21
26
22
class IndexDescription (NamedTuple ):
27
23
name : str
28
- index_type : str
29
24
metric : str
30
25
replicas : int
31
26
dimension : int
@@ -37,10 +32,13 @@ class IndexDescription(NamedTuple):
37
32
metadata_config : None
38
33
39
34
40
- class CollectionDescription (NamedTuple ):
41
- name : str
42
- size : int
43
- status : str
35
+ class CollectionDescription (object ):
36
+ def __init__ (self , keys , values ):
37
+ for k , v in zip (keys , values ):
38
+ self .__dict__ [k ] = v
39
+
40
+ def __str__ (self ):
41
+ return str (self .__dict__ )
44
42
45
43
46
44
def _get_api_instance ():
@@ -197,7 +195,7 @@ def describe_index(name: str):
197
195
db = response ['database' ]
198
196
ready = response ['status' ]['ready' ]
199
197
state = response ['status' ]['state' ]
200
- return IndexDescription (name = db ['name' ], index_type = db [ 'index_type' ], metric = db ['metric' ],
198
+ return IndexDescription (name = db ['name' ], metric = db ['metric' ],
201
199
replicas = db ['replicas' ], dimension = db ['dimension' ], shards = db ['shards' ],
202
200
pods = db .get ('pods' , db ['shards' ] * db ['replicas' ]), pod_type = db .get ('pod_type' , 'p1' ),
203
201
index_config = db ['index_config' ], status = {'ready' : ready , 'state' : state },
@@ -249,8 +247,9 @@ def describe_collection(name: str):
249
247
:return: Description of the collection
250
248
"""
251
249
api_instance = _get_api_instance ()
252
- response = api_instance .describe_collection (name )
253
- return CollectionDescription (name = response ['name' ], size = response ['size' ], status = response ['status' ])
250
+ response = api_instance .describe_collection (name ).to_dict ()
251
+ response_object = CollectionDescription (response .keys (), response .values ())
252
+ return response_object
254
253
255
254
256
255
def configure_index (name : str , replicas : int = None , pod_type : str = "" ):
@@ -265,3 +264,4 @@ def configure_index(name: str, replicas: int = None, pod_type: str = ""):
265
264
else :
266
265
patch_request = PatchRequest (pod_type = pod_type )
267
266
api_instance .configure_index (name , patch_request = patch_request )
267
+
0 commit comments