Skip to content

Commit

Permalink
fix python sdk test
Browse files Browse the repository at this point in the history
  • Loading branch information
zcdb committed May 22, 2024
1 parent e7f40a9 commit 0583add
Show file tree
Hide file tree
Showing 17 changed files with 48 additions and 88 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
# container: vearch/vearch_env:latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: compile
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set outputs
id: vars
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python_sdk_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
# container: vearch/vearch_env:latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: compile
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ vearch.iml
.idea/
.vscode/
__pycache__/
err.log
err.log*

# Test binary, build with `go test -c`
*.test
Expand Down
3 changes: 1 addition & 2 deletions sdk/python/vearch/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,4 @@ class Config(NamedTuple):
timeout: int = 30


# DefaultConfig = Config(host="localhost:9001")
DefaultConfig = Config(host="http://test-api-interface-1-router.vectorbase.svc.sq01.n.jd.local", token="secret")
DefaultConfig = Config(host="localhost:9001", token="secret")
6 changes: 0 additions & 6 deletions sdk/python/vearch/core/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,13 @@ def config(self, config: Config):
def _create_db(self, database_name) -> Result:
url_params = {"database_name": database_name}
url = self.host + DATABASE_URI % url_params
logger.debug("curl -X POST " + url + " -H Authorization:%s" % self.token)
sign = compute_sign_auth(secret=self.token)
resp = requests.request(method="POST", url=url, auth=sign)
if resp.status_code != 200:
logger.error("resp:" + str(resp.text))
else:
logger.debug("resp:" + str(resp.text))
return get_result(resp)

def _drop_db(self, database_name: str) -> Result:
url_params = {"database_name": database_name}
url = self.host + (DATABASE_URI % url_params)
logger.debug(url)
sign = compute_sign_auth(secret=self.token)
resp = requests.request(method="DELETE", url=url,auth=sign)
return get_result(resp)
Expand Down
3 changes: 0 additions & 3 deletions sdk/python/vearch/core/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,8 @@ def exist(self) -> bool:
url_params = {"database_name": self.name}
url = self.client.host + DATABASE_URI % url_params
sign = compute_sign_auth(secret=self.client.token)
print(url,sign)
resp = requests.request(method="GET", url=url, auth=sign)
result = get_result(resp)
logger.debug("database exist return:" + result.dict_str())
logger.debug("database exist status_code:" + str(resp.status_code))
if result.code == CODE_SUCCESS:
return True
else:
Expand Down
11 changes: 0 additions & 11 deletions sdk/python/vearch/core/space.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ def create(self, space: SpaceSchema) -> Result:
self._schema = space
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="POST", url=url, data=json.dumps(space.dict()), auth=sign)
logger.debug(resp.__dict__)
return get_result(resp)


Expand All @@ -39,8 +38,6 @@ def drop(self) -> Result:
url = self.client.host + SPACE_URI % url_params
sign = compute_sign_auth(secret=self.client.token)
resp= requests.request(method="DELETE", url=url, auth=sign)
# print(resp.__dict__)
# resp = self.client.s.send(req)
return get_result(resp)

def exist(self) -> [bool, SpaceSchema]:
Expand Down Expand Up @@ -97,7 +94,6 @@ def upsert(self, data: Union[List, pd.DataFrame]) -> UpsertResult:
record[field.name] = em[i]
records.append(record)
req_body.update({"documents": records})
logger.debug(req_body)
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="POST", url=url, data=json.dumps(req_body),
auth=sign)
Expand All @@ -107,8 +103,6 @@ def upsert(self, data: Union[List, pd.DataFrame]) -> UpsertResult:
except VearchException as e:
raise e
if e.code == 0:
logger.error(e.code)
logger.error(e.message)
r = UpsertResult(code="200", msg=e.message)
return r

Expand All @@ -126,10 +120,8 @@ def delete(self, filter: Filter) -> Result:
url = self.client.host + DELETE_DOC_URI
req_body = {"db_name": self.db_name, "space_name": self.name, "filters": filter.dict()}

logger.debug(req_body)
sign = compute_sign_auth()
resp = requests.request(method="POST", url=url, data=json.dumps(req_body), auth=sign)
logger.debug(resp.__dict__)
return get_result(resp)

def search(self, vector_infos: Optional[List[VectorInfo]], filter: Optional[Filter] = None,
Expand Down Expand Up @@ -193,7 +185,6 @@ def search(self, vector_infos: Optional[List[VectorInfo]], filter: Optional[Filt
if kwargs:
req_body.update(kwargs)

logger.debug(json.dumps(req_body))
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="POST", url=url, data=json.dumps(req_body),
auth=sign)
Expand Down Expand Up @@ -226,8 +217,6 @@ def query(self, document_ids: Optional[List] = [], filter: Optional[Filter] = No
req_body["fields"] = fields
if filter:
req_body["filters"] = filter.dict()
logger.debug(url)
logger.debug(json.dumps(req_body))
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="POST", url=url, data=json.dumps(req_body), auth=sign)
ret = get_result(resp)
Expand Down
45 changes: 15 additions & 30 deletions sdk/python/vearch/core/vearch.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,14 @@ def create_database(self, database_name: str) -> Result:
def list_databases(self) -> List[Database]:
result = self.client._list_db()
l = []
logger.debug(result.dict_str())
if result.code == CODE_SUCCESS:
logger.debug(result.text)
database_names = result.text
for database_name in database_names:
db = Database(database_name)
l.append(db)
return l
else:
logger.error(result.dict_str())
raise DatabaseException(code=CodeType.LIST_DATABASES, message="list database failed:" + result.err_msg)
raise DatabaseException(code=CodeType.LIST_DATABASES, message="list database failed:" + result.msg)

def is_database_exist(self, database_name: str) -> bool:
db = Database(database_name)
Expand All @@ -60,14 +57,11 @@ def create_space(self, database_name: str, space: SpaceSchema) -> Result:
if not self.database(database_name).exist():
ret = self.database(database_name).create()
if ret.code != 200:
raise DatabaseException(code=CodeType.CREATE_DATABASE, message="create database error:" + ret.err_msg)
raise DatabaseException(code=CodeType.CREATE_DATABASE, message="create database error:" + ret.msg)
url_params = {"database_name": database_name, "space_name": space.name}
url = self.client.host + LIST_SPACE_URI % url_params
sign = compute_sign_auth(secret=self.client.token)
logger.debug("create space:" + url)
logger.debug("schema:" + json.dumps(space.dict()))
resp = requests.request(method="POST", url=url, data=json.dumps(space.dict()), auth=sign)
logger.debug("create space status_code and text:"+ str(resp.status_code) + resp.text)
result = get_result(resp)
return result

Expand All @@ -76,10 +70,8 @@ def drop_space(self, database_name: str, space_name: str) -> Result:
raise SpaceException(CodeType.CHECK_SPACE_EXIST, message="space not exist")
url_params = {"database_name": database_name, "space_name": space_name}
url = self.client.host + SPACE_URI % url_params
logger.debug("delete space url:" + url)
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="DELETE", url=url, auth=sign)
logger.debug("delete space ret" + resp.text)
return get_result(resp)


Expand All @@ -92,7 +84,6 @@ def is_space_exist(self, database_name: str, space_name: str) -> [bool, SpaceSch
url = self.client.host + SPACE_URI % url_params
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="GET", url=url, auth=sign)
logger.debug("get space exist result:" + resp.text)
ret = get_result(resp)
if ret.code == CODE_SUCCESS:
space_schema = json.dumps(ret.text)
Expand All @@ -118,26 +109,15 @@ def create_index(self, database_name: str, space_name: str, field: str, index: I
def list_spaces(self, database_name: str) -> List[Space]:
result = self.client._list_space(database_name)
l = []
logger.debug(result.dict_str())
if result.code == CODE_SUCCESS:
logger.debug(result.text)
space_names = result.text
for space_name in space_names:
space = Space(database_name, space_name)
l.append(space)
return l
else:
logger.error(result.dict_str())
raise SpaceException(code=CodeType.LIST_SPACES, message="list space failed:" + result.err_msg)

def delete(self, database_name: str, space_name: str,filter: Filter) -> Result:
url = self.client.host + DELETE_DOC_URI
req_body = {"db_name": database_name, "space_name": space_name, "filters": filter.dict()}
logger.debug(req_body)
sign = compute_sign_auth()
resp = requests.request(method="POST", url=url, data=json.dumps(req_body), auth=sign)
logger.debug(resp.__dict__)
return get_result(resp)
raise SpaceException(code=CodeType.LIST_SPACES, message="list space failed:" + result.msg)


def upsert(self, database_name: str, space_name: str, data: Union[List, pd.DataFrame]) -> UpsertResult:
try:
Expand Down Expand Up @@ -172,7 +152,6 @@ def upsert(self, database_name: str, space_name: str, data: Union[List, pd.DataF
record[field.name] = em[i]
records.append(record)
req_body.update({"documents": records})
logger.debug(req_body)
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="POST", url=url, data=json.dumps(req_body),
auth=sign)
Expand All @@ -185,8 +164,6 @@ def upsert(self, database_name: str, space_name: str, data: Union[List, pd.DataF
except VearchException as e:
raise e
if e.code == 0:
logger.error(e.code)
logger.error(e.message)
r = UpsertResult(code="200", msg=e.message)
return r

Expand Down Expand Up @@ -252,7 +229,6 @@ def search(self, database_name: str, space_name: str, vector_infos: Optional[Lis
if kwargs:
req_body.update(kwargs)

logger.debug(json.dumps(req_body))
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="POST", url=url, data=json.dumps(req_body),
auth=sign)
Expand Down Expand Up @@ -287,11 +263,20 @@ def query(self, database_name: str, space_name: str, document_ids: Optional[List
req_body["fields"] = fields
if filter:
req_body["filters"] = filter.dict()
logger.debug(url)
logger.debug(json.dumps(req_body))
sign = compute_sign_auth(secret=self.client.token)
resp = requests.request(method="POST", url=url, data=json.dumps(req_body), auth=sign)
ret = get_result(resp)
if ret.code == CODE_SUCCESS:
return json.dumps(ret.text)
return []

def delete(self, database_name: str, space_name: str, document_ids: Optional[List] = [], filter: Filter= None) -> Result:
url = self.client.host + DELETE_DOC_URI
req_body = {"db_name": database_name, "space_name": space_name}
if document_ids:
req_body["document_ids"] = document_ids
if filter:
req_body["filters"] = filter.dict()
sign = compute_sign_auth()
resp = requests.request(method="POST", url=url, data=json.dumps(req_body), auth=sign)
return get_result(resp)
11 changes: 3 additions & 8 deletions sdk/python/vearch/result.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ class ResultStatus:


class Result(object):
def __init__(self, code: str = "", err_msg: str = "", text: str = ""):
def __init__(self, code: str = "", msg: str = "", text: str = ""):
self.code = code
self.err_msg = err_msg
self.msg = msg
self.text = text

def dict_str(self):
ret = {"code": self.code, "err_msg": self.err_msg, "content": self.text}
ret = {"code": self.code, "msg": self.msg, "data": self.text}
ret_str = json.dumps(ret)
return ret_str

Expand All @@ -41,7 +41,6 @@ def parse_upsert_result_from_response(cls, resp: requests.Response):
:param resp:
:return:
"""
logger.debug(resp.text)
ret = json.loads(resp.text)
code = ret.get("code", -1)
msg = ret.get("msg", "")
Expand All @@ -68,7 +67,6 @@ def __init__(self, code: int = 0, msg: str = "", documents=[]):

@classmethod
def parse_search_result_from_response(cls, resp: requests.Response):
logger.debug(resp.text)
ret = json.loads(resp.text)
code = ret.get("code", -1)
msg = ret.get("msg", "")
Expand All @@ -80,17 +78,14 @@ def parse_search_result_from_response(cls, resp: requests.Response):

def get_result(resp: requests.Response) -> Result:
r = Result()
logger.debug(resp.text)
ret = json.loads(resp.text)
r.code = ret.get("code", -1)
r.text = ret.get("data", "")
r.err_msg = ret.get("msg", "")
if resp.status_code / 100 == 2:
if r.code != CODE_SUCCESS:
logger.error("respone status code:" + str(resp.status_code) + "data:" + resp.text)
raise VearchException(r.code, r.err_msg)
return r
else:
logger.error("respone status code:" + str(resp.status_code) + "data:" + resp.text)
if r.code != -1:
raise VearchException(r.code, r.err_msg)
5 changes: 0 additions & 5 deletions sdk/python/vearch/schema/field.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ def __init__(self, name:str, data_type: DataType, index: Optional[Index] = None,

def _valid_check(self):
if self.data_type == DataType.VECTOR:
logger.debug(self.data_type)
self.dim = self._kwargs.get("dimension", None)
logger.debug(self.dim)
assert isinstance(self.dim, int), "vector field must set dimention,you should set dim=xxx"
assert self.dim > 0, "the vector field's dimention must above zero"
if self.data_type == DataType.STRING:
Expand All @@ -41,12 +39,10 @@ def _valid_check(self):

def dict(self):
field_dict = {"name": self.name, "type": self.data_type, "desc": self.desc}
logger.debug(json.dumps(field_dict))
if self.data_type == DataType.VECTOR:
field_dict["dimension"] = self.dim
if self.index:
field_dict["index"] = self.index.dict()
logger.debug(json.dumps(field_dict))
return field_dict

@classmethod
Expand All @@ -55,7 +51,6 @@ def from_dict(cls, field_data):
data_type = field_data.pop("type")
describe = field_data.pop("desc")
index = field_data.pop("index", None)
logger.debug(field_data)
if index:
return Field(name, data_type=data_type, index=index, desc=describe, **field_data)
return Field(name=name, data_type=data_type, desc=describe, **field_data)
1 change: 0 additions & 1 deletion sdk/python/vearch/schema/index.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ def __init__(self, index_name: str, **kwargs):
super().__init__(index_name, IndexType.SCALAR, **kwargs)

def dict(self):
logger.debug("type:" + IndexType.SCALAR)
return {"name": self._index_name, "type": IndexType.SCALAR}


Expand Down
3 changes: 0 additions & 3 deletions sdk/python/vearch/schema/space.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ def dict(self):
space_schema = {"name": self.name, "desc": self.description, "partition_num": self.partition_num,
"replication_num": self.replication_num}

logger.debug("space_schema" + json.dumps(space_schema))

fields_dict = [field.dict() for field in self.fields]
space_schema["fields"] = fields_dict
return space_schema
Expand All @@ -51,7 +49,6 @@ def from_dict(cls, data_dict):

name = data_dict.get("space_name")
schema_dict = data_dict.get("schema")
logger.debug(schema_dict)
fields = [Field.from_dict(field) for field in schema_dict.get("fields")]
return cls(name=name, fields=fields,
description=data_dict.get("desc", ""),
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/vearch/test/config.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
host_url="http://127.0.0.1:9001"
host_url="http://localhost:9001"

0 comments on commit 0583add

Please sign in to comment.