Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[cherry-pick] Support python3.12 #1861

Merged
merged 1 commit into from
Jan 15, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
[cherry-pick] Support python3.12
See also: #1860

Signed-off-by: yangxuan <xuan.yang@zilliz.com>
XuanYang-cn committed Jan 11, 2024
commit 981cc67c5b1cf035a6bd1bada8d7003684f15bd0
6 changes: 3 additions & 3 deletions .github/mergify.yml
Original file line number Diff line number Diff line change
@@ -7,9 +7,9 @@ pull_request_rules:
- "status-success=Run Python Tests (3.8)"
- "status-success=Run Check Proto (3.8)"
- "status-success=Code lint check (3.8)"
- "status-success=Run Python Tests (3.11)"
- "status-success=Run Check Proto (3.11)"
- "status-success=Code lint check (3.11)"
- "status-success=Run Python Tests (3.12)"
- "status-success=Run Check Proto (3.12)"
- "status-success=Code lint check (3.12)"
actions:
label:
add:
2 changes: 1 addition & 1 deletion .github/workflows/check_milvus_proto.yml
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.11]
python-version: [3.8, 3.12]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
2 changes: 1 addition & 1 deletion .github/workflows/code_checker.yml
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.11]
python-version: [3.8, 3.12]
steps:
- name: Checkout code
uses: actions/checkout@v2
4 changes: 2 additions & 2 deletions .github/workflows/publish_dev_package.yml
Original file line number Diff line number Diff line change
@@ -17,10 +17,10 @@ jobs:
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Set up Python 3.11
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: 3.11
python-version: 3.12
- name: Install pypa/build
run: >-
python -m
4 changes: 2 additions & 2 deletions .github/workflows/publish_on_release.yml
Original file line number Diff line number Diff line change
@@ -16,10 +16,10 @@ jobs:
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Set up Python 3.11
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: 3.11
python-version: 3.12
- name: Install pypa/build
run: >-
python -m
2 changes: 1 addition & 1 deletion .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.11]
python-version: [3.8, 3.12]

steps:
- name: Checkout code
27 changes: 13 additions & 14 deletions pymilvus/grpc_gen/common_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

62 changes: 31 additions & 31 deletions pymilvus/grpc_gen/common_pb2.pyi
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map
DESCRIPTOR: _descriptor.FileDescriptor

class ErrorCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
Success: _ClassVar[ErrorCode]
UnexpectedError: _ClassVar[ErrorCode]
ConnectFailed: _ClassVar[ErrorCode]
@@ -70,7 +70,7 @@ class ErrorCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
DDRequestRace: _ClassVar[ErrorCode]

class IndexState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
IndexStateNone: _ClassVar[IndexState]
Unissued: _ClassVar[IndexState]
InProgress: _ClassVar[IndexState]
@@ -79,7 +79,7 @@ class IndexState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
Retry: _ClassVar[IndexState]

class SegmentState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
SegmentStateNone: _ClassVar[SegmentState]
NotExist: _ClassVar[SegmentState]
Growing: _ClassVar[SegmentState]
@@ -90,7 +90,7 @@ class SegmentState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
Importing: _ClassVar[SegmentState]

class PlaceholderType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
None: _ClassVar[PlaceholderType]
BinaryVector: _ClassVar[PlaceholderType]
FloatVector: _ClassVar[PlaceholderType]
@@ -100,7 +100,7 @@ class PlaceholderType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
VarChar: _ClassVar[PlaceholderType]

class MsgType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
Undefined: _ClassVar[MsgType]
CreateCollection: _ClassVar[MsgType]
DropCollection: _ClassVar[MsgType]
@@ -203,26 +203,26 @@ class MsgType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
ListDatabases: _ClassVar[MsgType]

class DslType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
Dsl: _ClassVar[DslType]
BoolExprV1: _ClassVar[DslType]

class CompactionState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
UndefiedState: _ClassVar[CompactionState]
Executing: _ClassVar[CompactionState]
Completed: _ClassVar[CompactionState]

class ConsistencyLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
Strong: _ClassVar[ConsistencyLevel]
Session: _ClassVar[ConsistencyLevel]
Bounded: _ClassVar[ConsistencyLevel]
Eventually: _ClassVar[ConsistencyLevel]
Customized: _ClassVar[ConsistencyLevel]

class ImportState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
ImportPending: _ClassVar[ImportState]
ImportFailed: _ClassVar[ImportState]
ImportStarted: _ClassVar[ImportState]
@@ -232,13 +232,13 @@ class ImportState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
ImportFailedAndCleaned: _ClassVar[ImportState]

class ObjectType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
Collection: _ClassVar[ObjectType]
Global: _ClassVar[ObjectType]
User: _ClassVar[ObjectType]

class ObjectPrivilege(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
PrivilegeAll: _ClassVar[ObjectPrivilege]
PrivilegeCreateCollection: _ClassVar[ObjectPrivilege]
PrivilegeDropCollection: _ClassVar[ObjectPrivilege]
@@ -285,15 +285,15 @@ class ObjectPrivilege(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
PrivilegeGetFlushState: _ClassVar[ObjectPrivilege]

class StateCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
Initializing: _ClassVar[StateCode]
Healthy: _ClassVar[StateCode]
Abnormal: _ClassVar[StateCode]
StandBy: _ClassVar[StateCode]
Stopping: _ClassVar[StateCode]

class LoadState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
LoadStateNotExist: _ClassVar[LoadState]
LoadStateNotLoad: _ClassVar[LoadState]
LoadStateLoading: _ClassVar[LoadState]
@@ -555,7 +555,7 @@ PRIVILEGE_EXT_OBJ_FIELD_NUMBER: _ClassVar[int]
privilege_ext_obj: _descriptor.FieldDescriptor

class Status(_message.Message):
__slots__ = ["error_code", "reason", "code", "retriable", "detail"]
__slots__ = ("error_code", "reason", "code", "retriable", "detail")
ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
REASON_FIELD_NUMBER: _ClassVar[int]
CODE_FIELD_NUMBER: _ClassVar[int]
@@ -569,29 +569,29 @@ class Status(_message.Message):
def __init__(self, error_code: _Optional[_Union[ErrorCode, str]] = ..., reason: _Optional[str] = ..., code: _Optional[int] = ..., retriable: bool = ..., detail: _Optional[str] = ...) -> None: ...

class KeyValuePair(_message.Message):
__slots__ = ["key", "value"]
__slots__ = ("key", "value")
KEY_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
key: str
value: str
def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...

class KeyDataPair(_message.Message):
__slots__ = ["key", "data"]
__slots__ = ("key", "data")
KEY_FIELD_NUMBER: _ClassVar[int]
DATA_FIELD_NUMBER: _ClassVar[int]
key: str
data: bytes
def __init__(self, key: _Optional[str] = ..., data: _Optional[bytes] = ...) -> None: ...

class Blob(_message.Message):
__slots__ = ["value"]
__slots__ = ("value",)
VALUE_FIELD_NUMBER: _ClassVar[int]
value: bytes
def __init__(self, value: _Optional[bytes] = ...) -> None: ...

class PlaceholderValue(_message.Message):
__slots__ = ["tag", "type", "values"]
__slots__ = ("tag", "type", "values")
TAG_FIELD_NUMBER: _ClassVar[int]
TYPE_FIELD_NUMBER: _ClassVar[int]
VALUES_FIELD_NUMBER: _ClassVar[int]
@@ -601,23 +601,23 @@ class PlaceholderValue(_message.Message):
def __init__(self, tag: _Optional[str] = ..., type: _Optional[_Union[PlaceholderType, str]] = ..., values: _Optional[_Iterable[bytes]] = ...) -> None: ...

class PlaceholderGroup(_message.Message):
__slots__ = ["placeholders"]
__slots__ = ("placeholders",)
PLACEHOLDERS_FIELD_NUMBER: _ClassVar[int]
placeholders: _containers.RepeatedCompositeFieldContainer[PlaceholderValue]
def __init__(self, placeholders: _Optional[_Iterable[_Union[PlaceholderValue, _Mapping]]] = ...) -> None: ...

class Address(_message.Message):
__slots__ = ["ip", "port"]
__slots__ = ("ip", "port")
IP_FIELD_NUMBER: _ClassVar[int]
PORT_FIELD_NUMBER: _ClassVar[int]
ip: str
port: int
def __init__(self, ip: _Optional[str] = ..., port: _Optional[int] = ...) -> None: ...

class MsgBase(_message.Message):
__slots__ = ["msg_type", "msgID", "timestamp", "sourceID", "targetID", "properties", "replicateInfo"]
__slots__ = ("msg_type", "msgID", "timestamp", "sourceID", "targetID", "properties", "replicateInfo")
class PropertiesEntry(_message.Message):
__slots__ = ["key", "value"]
__slots__ = ("key", "value")
KEY_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
key: str
@@ -640,29 +640,29 @@ class MsgBase(_message.Message):
def __init__(self, msg_type: _Optional[_Union[MsgType, str]] = ..., msgID: _Optional[int] = ..., timestamp: _Optional[int] = ..., sourceID: _Optional[int] = ..., targetID: _Optional[int] = ..., properties: _Optional[_Mapping[str, str]] = ..., replicateInfo: _Optional[_Union[ReplicateInfo, _Mapping]] = ...) -> None: ...

class ReplicateInfo(_message.Message):
__slots__ = ["isReplicate", "msgTimestamp"]
__slots__ = ("isReplicate", "msgTimestamp")
ISREPLICATE_FIELD_NUMBER: _ClassVar[int]
MSGTIMESTAMP_FIELD_NUMBER: _ClassVar[int]
isReplicate: bool
msgTimestamp: int
def __init__(self, isReplicate: bool = ..., msgTimestamp: _Optional[int] = ...) -> None: ...

class MsgHeader(_message.Message):
__slots__ = ["base"]
__slots__ = ("base",)
BASE_FIELD_NUMBER: _ClassVar[int]
base: MsgBase
def __init__(self, base: _Optional[_Union[MsgBase, _Mapping]] = ...) -> None: ...

class DMLMsgHeader(_message.Message):
__slots__ = ["base", "shardName"]
__slots__ = ("base", "shardName")
BASE_FIELD_NUMBER: _ClassVar[int]
SHARDNAME_FIELD_NUMBER: _ClassVar[int]
base: MsgBase
shardName: str
def __init__(self, base: _Optional[_Union[MsgBase, _Mapping]] = ..., shardName: _Optional[str] = ...) -> None: ...

class PrivilegeExt(_message.Message):
__slots__ = ["object_type", "object_privilege", "object_name_index", "object_name_indexs"]
__slots__ = ("object_type", "object_privilege", "object_name_index", "object_name_indexs")
OBJECT_TYPE_FIELD_NUMBER: _ClassVar[int]
OBJECT_PRIVILEGE_FIELD_NUMBER: _ClassVar[int]
OBJECT_NAME_INDEX_FIELD_NUMBER: _ClassVar[int]
@@ -674,17 +674,17 @@ class PrivilegeExt(_message.Message):
def __init__(self, object_type: _Optional[_Union[ObjectType, str]] = ..., object_privilege: _Optional[_Union[ObjectPrivilege, str]] = ..., object_name_index: _Optional[int] = ..., object_name_indexs: _Optional[int] = ...) -> None: ...

class SegmentStats(_message.Message):
__slots__ = ["SegmentID", "NumRows"]
__slots__ = ("SegmentID", "NumRows")
SEGMENTID_FIELD_NUMBER: _ClassVar[int]
NUMROWS_FIELD_NUMBER: _ClassVar[int]
SegmentID: int
NumRows: int
def __init__(self, SegmentID: _Optional[int] = ..., NumRows: _Optional[int] = ...) -> None: ...

class ClientInfo(_message.Message):
__slots__ = ["sdk_type", "sdk_version", "local_time", "user", "host", "reserved"]
__slots__ = ("sdk_type", "sdk_version", "local_time", "user", "host", "reserved")
class ReservedEntry(_message.Message):
__slots__ = ["key", "value"]
__slots__ = ("key", "value")
KEY_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
key: str
@@ -705,9 +705,9 @@ class ClientInfo(_message.Message):
def __init__(self, sdk_type: _Optional[str] = ..., sdk_version: _Optional[str] = ..., local_time: _Optional[str] = ..., user: _Optional[str] = ..., host: _Optional[str] = ..., reserved: _Optional[_Mapping[str, str]] = ...) -> None: ...

class ServerInfo(_message.Message):
__slots__ = ["build_tags", "build_time", "git_commit", "go_version", "deploy_mode", "reserved"]
__slots__ = ("build_tags", "build_time", "git_commit", "go_version", "deploy_mode", "reserved")
class ReservedEntry(_message.Message):
__slots__ = ["key", "value"]
__slots__ = ("key", "value")
KEY_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
key: str
10 changes: 5 additions & 5 deletions pymilvus/grpc_gen/feder_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions pymilvus/grpc_gen/feder_pb2.pyi
Original file line number Diff line number Diff line change
@@ -7,23 +7,23 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map
DESCRIPTOR: _descriptor.FileDescriptor

class SegmentIndexData(_message.Message):
__slots__ = ["segmentID", "index_data"]
__slots__ = ("segmentID", "index_data")
SEGMENTID_FIELD_NUMBER: _ClassVar[int]
INDEX_DATA_FIELD_NUMBER: _ClassVar[int]
segmentID: int
index_data: str
def __init__(self, segmentID: _Optional[int] = ..., index_data: _Optional[str] = ...) -> None: ...

class FederSegmentSearchResult(_message.Message):
__slots__ = ["segmentID", "visit_info"]
__slots__ = ("segmentID", "visit_info")
SEGMENTID_FIELD_NUMBER: _ClassVar[int]
VISIT_INFO_FIELD_NUMBER: _ClassVar[int]
segmentID: int
visit_info: str
def __init__(self, segmentID: _Optional[int] = ..., visit_info: _Optional[str] = ...) -> None: ...

class ListIndexedSegmentRequest(_message.Message):
__slots__ = ["base", "collection_name", "index_name"]
__slots__ = ("base", "collection_name", "index_name")
BASE_FIELD_NUMBER: _ClassVar[int]
COLLECTION_NAME_FIELD_NUMBER: _ClassVar[int]
INDEX_NAME_FIELD_NUMBER: _ClassVar[int]
@@ -33,15 +33,15 @@ class ListIndexedSegmentRequest(_message.Message):
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ..., collection_name: _Optional[str] = ..., index_name: _Optional[str] = ...) -> None: ...

class ListIndexedSegmentResponse(_message.Message):
__slots__ = ["status", "segmentIDs"]
__slots__ = ("status", "segmentIDs")
STATUS_FIELD_NUMBER: _ClassVar[int]
SEGMENTIDS_FIELD_NUMBER: _ClassVar[int]
status: _common_pb2.Status
segmentIDs: _containers.RepeatedScalarFieldContainer[int]
def __init__(self, status: _Optional[_Union[_common_pb2.Status, _Mapping]] = ..., segmentIDs: _Optional[_Iterable[int]] = ...) -> None: ...

class DescribeSegmentIndexDataRequest(_message.Message):
__slots__ = ["base", "collection_name", "index_name", "segmentsIDs"]
__slots__ = ("base", "collection_name", "index_name", "segmentsIDs")
BASE_FIELD_NUMBER: _ClassVar[int]
COLLECTION_NAME_FIELD_NUMBER: _ClassVar[int]
INDEX_NAME_FIELD_NUMBER: _ClassVar[int]
@@ -53,9 +53,9 @@ class DescribeSegmentIndexDataRequest(_message.Message):
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ..., collection_name: _Optional[str] = ..., index_name: _Optional[str] = ..., segmentsIDs: _Optional[_Iterable[int]] = ...) -> None: ...

class DescribeSegmentIndexDataResponse(_message.Message):
__slots__ = ["status", "index_data", "index_params"]
__slots__ = ("status", "index_data", "index_params")
class IndexDataEntry(_message.Message):
__slots__ = ["key", "value"]
__slots__ = ("key", "value")
KEY_FIELD_NUMBER: _ClassVar[int]
VALUE_FIELD_NUMBER: _ClassVar[int]
key: int
303 changes: 151 additions & 152 deletions pymilvus/grpc_gen/milvus_pb2.py

Large diffs are not rendered by default.

336 changes: 168 additions & 168 deletions pymilvus/grpc_gen/milvus_pb2.pyi

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions pymilvus/grpc_gen/msg_pb2.py
20 changes: 10 additions & 10 deletions pymilvus/grpc_gen/msg_pb2.pyi
Original file line number Diff line number Diff line change
@@ -9,14 +9,14 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map
DESCRIPTOR: _descriptor.FileDescriptor

class InsertDataVersion(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
RowBased: _ClassVar[InsertDataVersion]
ColumnBased: _ClassVar[InsertDataVersion]
RowBased: InsertDataVersion
ColumnBased: InsertDataVersion

class InsertRequest(_message.Message):
__slots__ = ["base", "shardName", "db_name", "collection_name", "partition_name", "dbID", "collectionID", "partitionID", "segmentID", "timestamps", "rowIDs", "row_data", "fields_data", "num_rows", "version"]
__slots__ = ("base", "shardName", "db_name", "collection_name", "partition_name", "dbID", "collectionID", "partitionID", "segmentID", "timestamps", "rowIDs", "row_data", "fields_data", "num_rows", "version")
BASE_FIELD_NUMBER: _ClassVar[int]
SHARDNAME_FIELD_NUMBER: _ClassVar[int]
DB_NAME_FIELD_NUMBER: _ClassVar[int]
@@ -50,7 +50,7 @@ class InsertRequest(_message.Message):
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ..., shardName: _Optional[str] = ..., db_name: _Optional[str] = ..., collection_name: _Optional[str] = ..., partition_name: _Optional[str] = ..., dbID: _Optional[int] = ..., collectionID: _Optional[int] = ..., partitionID: _Optional[int] = ..., segmentID: _Optional[int] = ..., timestamps: _Optional[_Iterable[int]] = ..., rowIDs: _Optional[_Iterable[int]] = ..., row_data: _Optional[_Iterable[_Union[_common_pb2.Blob, _Mapping]]] = ..., fields_data: _Optional[_Iterable[_Union[_schema_pb2.FieldData, _Mapping]]] = ..., num_rows: _Optional[int] = ..., version: _Optional[_Union[InsertDataVersion, str]] = ...) -> None: ...

class DeleteRequest(_message.Message):
__slots__ = ["base", "shardName", "db_name", "collection_name", "partition_name", "dbID", "collectionID", "partitionID", "int64_primary_keys", "timestamps", "num_rows", "primary_keys"]
__slots__ = ("base", "shardName", "db_name", "collection_name", "partition_name", "dbID", "collectionID", "partitionID", "int64_primary_keys", "timestamps", "num_rows", "primary_keys")
BASE_FIELD_NUMBER: _ClassVar[int]
SHARDNAME_FIELD_NUMBER: _ClassVar[int]
DB_NAME_FIELD_NUMBER: _ClassVar[int]
@@ -78,7 +78,7 @@ class DeleteRequest(_message.Message):
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ..., shardName: _Optional[str] = ..., db_name: _Optional[str] = ..., collection_name: _Optional[str] = ..., partition_name: _Optional[str] = ..., dbID: _Optional[int] = ..., collectionID: _Optional[int] = ..., partitionID: _Optional[int] = ..., int64_primary_keys: _Optional[_Iterable[int]] = ..., timestamps: _Optional[_Iterable[int]] = ..., num_rows: _Optional[int] = ..., primary_keys: _Optional[_Union[_schema_pb2.IDs, _Mapping]] = ...) -> None: ...

class MsgPosition(_message.Message):
__slots__ = ["channel_name", "msgID", "msgGroup", "timestamp"]
__slots__ = ("channel_name", "msgID", "msgGroup", "timestamp")
CHANNEL_NAME_FIELD_NUMBER: _ClassVar[int]
MSGID_FIELD_NUMBER: _ClassVar[int]
MSGGROUP_FIELD_NUMBER: _ClassVar[int]
@@ -90,7 +90,7 @@ class MsgPosition(_message.Message):
def __init__(self, channel_name: _Optional[str] = ..., msgID: _Optional[bytes] = ..., msgGroup: _Optional[str] = ..., timestamp: _Optional[int] = ...) -> None: ...

class CreateCollectionRequest(_message.Message):
__slots__ = ["base", "db_name", "collectionName", "partitionName", "dbID", "collectionID", "partitionID", "schema", "virtualChannelNames", "physicalChannelNames", "partitionIDs"]
__slots__ = ("base", "db_name", "collectionName", "partitionName", "dbID", "collectionID", "partitionID", "schema", "virtualChannelNames", "physicalChannelNames", "partitionIDs")
BASE_FIELD_NUMBER: _ClassVar[int]
DB_NAME_FIELD_NUMBER: _ClassVar[int]
COLLECTIONNAME_FIELD_NUMBER: _ClassVar[int]
@@ -116,7 +116,7 @@ class CreateCollectionRequest(_message.Message):
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ..., db_name: _Optional[str] = ..., collectionName: _Optional[str] = ..., partitionName: _Optional[str] = ..., dbID: _Optional[int] = ..., collectionID: _Optional[int] = ..., partitionID: _Optional[int] = ..., schema: _Optional[bytes] = ..., virtualChannelNames: _Optional[_Iterable[str]] = ..., physicalChannelNames: _Optional[_Iterable[str]] = ..., partitionIDs: _Optional[_Iterable[int]] = ...) -> None: ...

class DropCollectionRequest(_message.Message):
__slots__ = ["base", "db_name", "collectionName", "dbID", "collectionID"]
__slots__ = ("base", "db_name", "collectionName", "dbID", "collectionID")
BASE_FIELD_NUMBER: _ClassVar[int]
DB_NAME_FIELD_NUMBER: _ClassVar[int]
COLLECTIONNAME_FIELD_NUMBER: _ClassVar[int]
@@ -130,7 +130,7 @@ class DropCollectionRequest(_message.Message):
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ..., db_name: _Optional[str] = ..., collectionName: _Optional[str] = ..., dbID: _Optional[int] = ..., collectionID: _Optional[int] = ...) -> None: ...

class CreatePartitionRequest(_message.Message):
__slots__ = ["base", "db_name", "collection_name", "partition_name", "dbID", "collectionID", "partitionID"]
__slots__ = ("base", "db_name", "collection_name", "partition_name", "dbID", "collectionID", "partitionID")
BASE_FIELD_NUMBER: _ClassVar[int]
DB_NAME_FIELD_NUMBER: _ClassVar[int]
COLLECTION_NAME_FIELD_NUMBER: _ClassVar[int]
@@ -148,7 +148,7 @@ class CreatePartitionRequest(_message.Message):
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ..., db_name: _Optional[str] = ..., collection_name: _Optional[str] = ..., partition_name: _Optional[str] = ..., dbID: _Optional[int] = ..., collectionID: _Optional[int] = ..., partitionID: _Optional[int] = ...) -> None: ...

class DropPartitionRequest(_message.Message):
__slots__ = ["base", "db_name", "collection_name", "partition_name", "dbID", "collectionID", "partitionID"]
__slots__ = ("base", "db_name", "collection_name", "partition_name", "dbID", "collectionID", "partitionID")
BASE_FIELD_NUMBER: _ClassVar[int]
DB_NAME_FIELD_NUMBER: _ClassVar[int]
COLLECTION_NAME_FIELD_NUMBER: _ClassVar[int]
@@ -166,13 +166,13 @@ class DropPartitionRequest(_message.Message):
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ..., db_name: _Optional[str] = ..., collection_name: _Optional[str] = ..., partition_name: _Optional[str] = ..., dbID: _Optional[int] = ..., collectionID: _Optional[int] = ..., partitionID: _Optional[int] = ...) -> None: ...

class TimeTickMsg(_message.Message):
__slots__ = ["base"]
__slots__ = ("base",)
BASE_FIELD_NUMBER: _ClassVar[int]
base: _common_pb2.MsgBase
def __init__(self, base: _Optional[_Union[_common_pb2.MsgBase, _Mapping]] = ...) -> None: ...

class DataNodeTtMsg(_message.Message):
__slots__ = ["base", "channel_name", "timestamp", "segments_stats"]
__slots__ = ("base", "channel_name", "timestamp", "segments_stats")
BASE_FIELD_NUMBER: _ClassVar[int]
CHANNEL_NAME_FIELD_NUMBER: _ClassVar[int]
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
10 changes: 5 additions & 5 deletions pymilvus/grpc_gen/schema_pb2.py
38 changes: 19 additions & 19 deletions pymilvus/grpc_gen/schema_pb2.pyi
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map
DESCRIPTOR: _descriptor.FileDescriptor

class DataType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
None: _ClassVar[DataType]
Bool: _ClassVar[DataType]
Int8: _ClassVar[DataType]
@@ -28,7 +28,7 @@ class DataType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
BFloat16Vector: _ClassVar[DataType]

class FieldState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = []
__slots__ = ()
FieldCreated: _ClassVar[FieldState]
FieldCreating: _ClassVar[FieldState]
FieldDropping: _ClassVar[FieldState]
@@ -55,7 +55,7 @@ FieldDropping: FieldState
FieldDropped: FieldState

class FieldSchema(_message.Message):
__slots__ = ["fieldID", "name", "is_primary_key", "description", "data_type", "type_params", "index_params", "autoID", "state", "element_type", "default_value", "is_dynamic", "is_partition_key"]
__slots__ = ("fieldID", "name", "is_primary_key", "description", "data_type", "type_params", "index_params", "autoID", "state", "element_type", "default_value", "is_dynamic", "is_partition_key")
FIELDID_FIELD_NUMBER: _ClassVar[int]
NAME_FIELD_NUMBER: _ClassVar[int]
IS_PRIMARY_KEY_FIELD_NUMBER: _ClassVar[int]
@@ -85,7 +85,7 @@ class FieldSchema(_message.Message):
def __init__(self, fieldID: _Optional[int] = ..., name: _Optional[str] = ..., is_primary_key: bool = ..., description: _Optional[str] = ..., data_type: _Optional[_Union[DataType, str]] = ..., type_params: _Optional[_Iterable[_Union[_common_pb2.KeyValuePair, _Mapping]]] = ..., index_params: _Optional[_Iterable[_Union[_common_pb2.KeyValuePair, _Mapping]]] = ..., autoID: bool = ..., state: _Optional[_Union[FieldState, str]] = ..., element_type: _Optional[_Union[DataType, str]] = ..., default_value: _Optional[_Union[ValueField, _Mapping]] = ..., is_dynamic: bool = ..., is_partition_key: bool = ...) -> None: ...

class CollectionSchema(_message.Message):
__slots__ = ["name", "description", "autoID", "fields", "enable_dynamic_field"]
__slots__ = ("name", "description", "autoID", "fields", "enable_dynamic_field")
NAME_FIELD_NUMBER: _ClassVar[int]
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
AUTOID_FIELD_NUMBER: _ClassVar[int]
@@ -99,63 +99,63 @@ class CollectionSchema(_message.Message):
def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., autoID: bool = ..., fields: _Optional[_Iterable[_Union[FieldSchema, _Mapping]]] = ..., enable_dynamic_field: bool = ...) -> None: ...

class BoolArray(_message.Message):
__slots__ = ["data"]
__slots__ = ("data",)
DATA_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedScalarFieldContainer[bool]
def __init__(self, data: _Optional[_Iterable[bool]] = ...) -> None: ...

class IntArray(_message.Message):
__slots__ = ["data"]
__slots__ = ("data",)
DATA_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedScalarFieldContainer[int]
def __init__(self, data: _Optional[_Iterable[int]] = ...) -> None: ...

class LongArray(_message.Message):
__slots__ = ["data"]
__slots__ = ("data",)
DATA_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedScalarFieldContainer[int]
def __init__(self, data: _Optional[_Iterable[int]] = ...) -> None: ...

class FloatArray(_message.Message):
__slots__ = ["data"]
__slots__ = ("data",)
DATA_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedScalarFieldContainer[float]
def __init__(self, data: _Optional[_Iterable[float]] = ...) -> None: ...

class DoubleArray(_message.Message):
__slots__ = ["data"]
__slots__ = ("data",)
DATA_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedScalarFieldContainer[float]
def __init__(self, data: _Optional[_Iterable[float]] = ...) -> None: ...

class BytesArray(_message.Message):
__slots__ = ["data"]
__slots__ = ("data",)
DATA_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedScalarFieldContainer[bytes]
def __init__(self, data: _Optional[_Iterable[bytes]] = ...) -> None: ...

class StringArray(_message.Message):
__slots__ = ["data"]
__slots__ = ("data",)
DATA_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedScalarFieldContainer[str]
def __init__(self, data: _Optional[_Iterable[str]] = ...) -> None: ...

class ArrayArray(_message.Message):
__slots__ = ["data", "element_type"]
__slots__ = ("data", "element_type")
DATA_FIELD_NUMBER: _ClassVar[int]
ELEMENT_TYPE_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedCompositeFieldContainer[ScalarField]
element_type: DataType
def __init__(self, data: _Optional[_Iterable[_Union[ScalarField, _Mapping]]] = ..., element_type: _Optional[_Union[DataType, str]] = ...) -> None: ...

class JSONArray(_message.Message):
__slots__ = ["data"]
__slots__ = ("data",)
DATA_FIELD_NUMBER: _ClassVar[int]
data: _containers.RepeatedScalarFieldContainer[bytes]
def __init__(self, data: _Optional[_Iterable[bytes]] = ...) -> None: ...

class ValueField(_message.Message):
__slots__ = ["bool_data", "int_data", "long_data", "float_data", "double_data", "string_data", "bytes_data"]
__slots__ = ("bool_data", "int_data", "long_data", "float_data", "double_data", "string_data", "bytes_data")
BOOL_DATA_FIELD_NUMBER: _ClassVar[int]
INT_DATA_FIELD_NUMBER: _ClassVar[int]
LONG_DATA_FIELD_NUMBER: _ClassVar[int]
@@ -173,7 +173,7 @@ class ValueField(_message.Message):
def __init__(self, bool_data: bool = ..., int_data: _Optional[int] = ..., long_data: _Optional[int] = ..., float_data: _Optional[float] = ..., double_data: _Optional[float] = ..., string_data: _Optional[str] = ..., bytes_data: _Optional[bytes] = ...) -> None: ...

class ScalarField(_message.Message):
__slots__ = ["bool_data", "int_data", "long_data", "float_data", "double_data", "string_data", "bytes_data", "array_data", "json_data"]
__slots__ = ("bool_data", "int_data", "long_data", "float_data", "double_data", "string_data", "bytes_data", "array_data", "json_data")
BOOL_DATA_FIELD_NUMBER: _ClassVar[int]
INT_DATA_FIELD_NUMBER: _ClassVar[int]
LONG_DATA_FIELD_NUMBER: _ClassVar[int]
@@ -195,7 +195,7 @@ class ScalarField(_message.Message):
def __init__(self, bool_data: _Optional[_Union[BoolArray, _Mapping]] = ..., int_data: _Optional[_Union[IntArray, _Mapping]] = ..., long_data: _Optional[_Union[LongArray, _Mapping]] = ..., float_data: _Optional[_Union[FloatArray, _Mapping]] = ..., double_data: _Optional[_Union[DoubleArray, _Mapping]] = ..., string_data: _Optional[_Union[StringArray, _Mapping]] = ..., bytes_data: _Optional[_Union[BytesArray, _Mapping]] = ..., array_data: _Optional[_Union[ArrayArray, _Mapping]] = ..., json_data: _Optional[_Union[JSONArray, _Mapping]] = ...) -> None: ...

class VectorField(_message.Message):
__slots__ = ["dim", "float_vector", "binary_vector", "float16_vector", "bfloat16_vector"]
__slots__ = ("dim", "float_vector", "binary_vector", "float16_vector", "bfloat16_vector")
DIM_FIELD_NUMBER: _ClassVar[int]
FLOAT_VECTOR_FIELD_NUMBER: _ClassVar[int]
BINARY_VECTOR_FIELD_NUMBER: _ClassVar[int]
@@ -209,7 +209,7 @@ class VectorField(_message.Message):
def __init__(self, dim: _Optional[int] = ..., float_vector: _Optional[_Union[FloatArray, _Mapping]] = ..., binary_vector: _Optional[bytes] = ..., float16_vector: _Optional[bytes] = ..., bfloat16_vector: _Optional[bytes] = ...) -> None: ...

class FieldData(_message.Message):
__slots__ = ["type", "field_name", "scalars", "vectors", "field_id", "is_dynamic"]
__slots__ = ("type", "field_name", "scalars", "vectors", "field_id", "is_dynamic")
TYPE_FIELD_NUMBER: _ClassVar[int]
FIELD_NAME_FIELD_NUMBER: _ClassVar[int]
SCALARS_FIELD_NUMBER: _ClassVar[int]
@@ -225,15 +225,15 @@ class FieldData(_message.Message):
def __init__(self, type: _Optional[_Union[DataType, str]] = ..., field_name: _Optional[str] = ..., scalars: _Optional[_Union[ScalarField, _Mapping]] = ..., vectors: _Optional[_Union[VectorField, _Mapping]] = ..., field_id: _Optional[int] = ..., is_dynamic: bool = ...) -> None: ...

class IDs(_message.Message):
__slots__ = ["int_id", "str_id"]
__slots__ = ("int_id", "str_id")
INT_ID_FIELD_NUMBER: _ClassVar[int]
STR_ID_FIELD_NUMBER: _ClassVar[int]
int_id: LongArray
str_id: StringArray
def __init__(self, int_id: _Optional[_Union[LongArray, _Mapping]] = ..., str_id: _Optional[_Union[StringArray, _Mapping]] = ...) -> None: ...

class SearchResultData(_message.Message):
__slots__ = ["num_queries", "top_k", "fields_data", "scores", "ids", "topks", "output_fields", "group_by_field_value"]
__slots__ = ("num_queries", "top_k", "fields_data", "scores", "ids", "topks", "output_fields", "group_by_field_value")
NUM_QUERIES_FIELD_NUMBER: _ClassVar[int]
TOP_K_FIELD_NUMBER: _ClassVar[int]
FIELDS_DATA_FIELD_NUMBER: _ClassVar[int]
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -17,7 +17,8 @@ requires-python = '>=3.8'
description = "Python Sdk for Milvus"
readme = "README.md"
dependencies=[
"grpcio>=1.49.1,<=1.58.0",
"setuptools >= 67", # python3.12 pkg_resources
"grpcio>=1.49.1,<=1.60.0",
"protobuf>=3.20.0",
"environs<=9.5.0",
"ujson>=2.0.0",
12 changes: 6 additions & 6 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -2,10 +2,10 @@ build==0.4.0
certifi==2023.7.22
chardet==4.0.0
environs==9.5.0
grpcio==1.56.2
grpcio-testing==1.56.2
grpcio-tools==1.56.2
protobuf>=3.17.1
grpcio==1.60.0
grpcio-testing==1.60.0
grpcio-tools==1.60.0
protobuf==4.25.2
idna==2.10
packaging==20.9
pep517==0.10.0
@@ -30,8 +30,8 @@ sphinxcontrib-prettyspecialmethods
tqdm==4.65.0
pyarrow>=12.0.0
pytest>=5.3.4
pytest-cov==2.8.1
pytest-timeout==1.3.4
pytest-cov>=2.8.1
pytest-timeout>=1.3.4
pandas>=1.1.5
ruff
black
6 changes: 3 additions & 3 deletions test_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
pytest>=5.3.4
pytest-cov==2.8.1
pytest-timeout==1.3.4
grpcio-testing
pytest-cov>=2.8.1
pytest-timeout>=1.3.4
grpcio-testing==1.60.0
sklearn==0.0
ruff
black
4 changes: 2 additions & 2 deletions tests/test_create_collection.py
Original file line number Diff line number Diff line change
@@ -66,15 +66,15 @@ class TestCreateCollection:
def collection_name(self):
return f"test_collection_{random.randint(100000, 999999)}"

def setup(self) -> None:
def setup_method(self) -> None:
self._real_time = grpc_testing.strict_real_time()
self._real_time_channel = grpc_testing.channel(
milvus_pb2.DESCRIPTOR.services_by_name.values(), self._real_time
)
self._servicer = milvus_pb2.DESCRIPTOR.services_by_name["MilvusService"]
self._milvus = Milvus(channel=self._real_time_channel)

def teardown(self) -> None:
def teardown_method(self) -> None:
pass

def test_create_collection(self, collection_name):