Skip to content

Commit

Permalink
Merge pull request #99 from zilliztech/issue-93
Browse files Browse the repository at this point in the history
feat:support function for milvus2.5
  • Loading branch information
shanghaikid authored Dec 31, 2024
2 parents c031a9d + e243574 commit ccb368a
Show file tree
Hide file tree
Showing 7 changed files with 230 additions and 174 deletions.
252 changes: 126 additions & 126 deletions .github/workflows/update_assets.yml
Original file line number Diff line number Diff line change
@@ -1,132 +1,132 @@
# This is a basic workflow to help you get started with Actions
# # This is a basic workflow to help you get started with Actions

name: Update the release's assets after it published
# name: Update the release's assets after it published

# Controls when the workflow will run
on:
release:
types: [published]
# # Controls when the workflow will run
# on:
# release:
# types: [published]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# # A workflow run is made up of one or more jobs that can run sequentially or in parallel
# jobs:
# # This workflow contains a single job called "build"
# build:
# # The type of runner that the job will run on
# runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: "3.8"
architecture: "x64"
- name: Install pypa/build
run: >-
python -m
pip install
build
--user
- name: Clean dist/
run: |
sudo rm -fr dist/*
- name: Build a binary wheel and a source tarball
run: >-
python -m
build
--sdist
--wheel
--outdir dist/
.
- name: Update assets
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: ./dist/*
- name: Publish distribution 📦 to Test PyPI
if: contains(github.ref, 'beta') && startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
packages_dir: dist/
verify_metadata: false
build_windows_exe:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: "3.8"
architecture: "x64"
- name: Install requirements
run: >-
python -m
pip install
-e
.
- name: Install protobuf only for pymilvus2.1
run:
python -m pip install protobuf==3.20.0
# # Steps represent a sequence of tasks that will be executed as part of the job
# steps:
# # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
# - uses: actions/checkout@v2
# - uses: actions/setup-python@v2
# with:
# python-version: "3.8"
# architecture: "x64"
# - name: Install pypa/build
# run: >-
# python -m
# pip install
# build
# --user
# - name: Clean dist/
# run: |
# sudo rm -fr dist/*
# - name: Build a binary wheel and a source tarball
# run: >-
# python -m
# build
# --sdist
# --wheel
# --outdir dist/
# .
# - name: Update assets
# uses: softprops/action-gh-release@v1
# if: startsWith(github.ref, 'refs/tags/')
# with:
# files: ./dist/*
# - name: Publish distribution 📦 to Test PyPI
# if: contains(github.ref, 'beta') && startsWith(github.ref, 'refs/tags')
# uses: pypa/gh-action-pypi-publish@release/v1
# with:
# user: __token__
# password: ${{ secrets.TEST_PYPI_API_TOKEN }}
# repository_url: https://test.pypi.org/legacy/
# packages_dir: dist/
# verify_metadata: false
# build_windows_exe:
# runs-on: windows-latest
# steps:
# - uses: actions/checkout@v2
# - uses: actions/setup-python@v2
# with:
# python-version: "3.8"
# architecture: "x64"
# - name: Install requirements
# run: >-
# python -m
# pip install
# -e
# .
# - name: Install protobuf only for pymilvus2.1
# run:
# python -m pip install protobuf==3.20.0

- name: Install pyreadline
run: >-
python -m
pip install
pyreadline
- name: Install pyinstaller.
run: >-
python -m
pip install
pyinstaller
- name: build to dist/
run: |
pyinstaller -F ./milvus_cli/scripts/milvus_cli.py -p ./milvus_cli --clean --hidden-import pyreadline -n milvus_cli.exe
- name: Update assets
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: ./dist/*
build_linux_exec:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: "3.8"
architecture: "x64"
- name: Install requirements
run: >-
python -m
pip install
-e
.
- name: Install protobuf only for pymilvus2.1
run:
python -m pip install protobuf==3.20.0
# - name: Install pyreadline
# run: >-
# python -m
# pip install
# pyreadline
# - name: Install pyinstaller.
# run: >-
# python -m
# pip install
# pyinstaller
# - name: build to dist/
# run: |
# pyinstaller -F ./milvus_cli/scripts/milvus_cli.py -p ./milvus_cli --clean --hidden-import pyreadline -n milvus_cli.exe
# - name: Update assets
# uses: softprops/action-gh-release@v1
# if: startsWith(github.ref, 'refs/tags/')
# with:
# files: ./dist/*
# build_linux_exec:
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: [macos-latest, ubuntu-latest]
# steps:
# - uses: actions/checkout@v2
# - uses: actions/setup-python@v2
# with:
# python-version: "3.8"
# architecture: "x64"
# - name: Install requirements
# run: >-
# python -m
# pip install
# -e
# .
# - name: Install protobuf only for pymilvus2.1
# run:
# python -m pip install protobuf==3.20.0

- name: Install pyinstaller.
run: >-
python -m
pip install
pyinstaller
- name: Clean dist/
run: |
sudo rm -fr dist/*
- name: Tag name
id: tag_name
run: |
echo ::set-output name=SOURCE_TAG::${GITHUB_REF#refs/tags/}
- name: build to dist/
run: |
pyinstaller -F ./milvus_cli/scripts/milvus_cli.py -p ./milvus_cli --clean --hidden-import pyreadline -n milvus_cli-${{ steps.tag_name.outputs.SOURCE_TAG }}-$RUNNER_OS
- name: Update assets
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: ./dist/*
# - name: Install pyinstaller.
# run: >-
# python -m
# pip install
# pyinstaller
# - name: Clean dist/
# run: |
# sudo rm -fr dist/*
# - name: Tag name
# id: tag_name
# run: |
# echo ::set-output name=SOURCE_TAG::${GITHUB_REF#refs/tags/}
# - name: build to dist/
# run: |
# pyinstaller -F ./milvus_cli/scripts/milvus_cli.py -p ./milvus_cli --clean --hidden-import pyreadline -n milvus_cli-${{ steps.tag_name.outputs.SOURCE_TAG }}-$RUNNER_OS
# - name: Update assets
# uses: softprops/action-gh-release@v1
# if: startsWith(github.ref, 'refs/tags/')
# with:
# files: ./dist/*
19 changes: 16 additions & 3 deletions milvus_cli/Collection.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ def create_collection(
isDynamic=None,
consistencyLevel="Bounded",
shardsNum=1,
functions=None,
):
schema = CollectionSchema(
fields=fields,
primary_field=primaryField,
auto_id=autoId,
description=description,
_enable_dynamic_field=isDynamic,
functions=functions,
)

collection = Collection(
Expand Down Expand Up @@ -118,22 +120,28 @@ def get_collection_details(self, collectionName="", collection=None):
partitions = target.partitions
indexes = target.indexes
fieldSchemaDetails = ""

for fieldSchema in schema.fields:
_name = f"{'*' if fieldSchema.is_primary else ''}{fieldSchema.name}"

_type = DataTypeByNum[fieldSchema.dtype]
_desc = fieldSchema.description
_params = fieldSchema.params
_is_function_output = fieldSchema.is_function_output
_dim = _params.get("dim")
_params_desc = f"dim: {_dim}" if _dim else ""
_params_desc += (
f", Is function output: {_is_function_output}"
if _is_function_output
else ""
)

_element_type = fieldSchema.element_type
_max_length = _params.get("max_length")
_max_capacity = _params.get("max_capacity")
_enable_match = _params.get("enable_match")
_enable_analyzer = _params.get("enable_analyzer")
_analyzer_params = _params.get("analyzer_params")
_params_desc = ""

_params_desc += f", max_capacity: {_max_capacity}" if _max_capacity else ""
_params_desc += f", element_type: {_element_type}" if _element_type else ""
Expand Down Expand Up @@ -186,10 +194,15 @@ def list_field_names(self, collectionName):
result = target.schema.fields
return [i.name for i in result]

def list_field_names_and_types(self, collectionName):
def list_fields_info(self, collectionName):
target = getTargetCollection(collectionName)
result = target.schema.fields
return [
{"name": i.name, "type": DataTypeByNum[i.dtype], "autoId": i.auto_id}
{
"name": i.name,
"type": DataTypeByNum[i.dtype],
"autoId": i.auto_id,
"isFunctionOut": i.is_function_output,
}
for i in result
]
1 change: 1 addition & 0 deletions milvus_cli/Types.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ def __str__(self):
"HAMMING",
"TANIMOTO",
"COSINE",
"BM25",
"",
]

Expand Down
25 changes: 0 additions & 25 deletions milvus_cli/Validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,31 +225,6 @@ def validateQueryParams(
return result


def validateCalcParams(
leftVectorMeta, rightVectorMeta, metric_type, sqrt, dim, timeout
):
result = {"params": {}}
vectors_left = validateVectorMeta(leftVectorMeta)
result["vectors_left"] = vectors_left
vectors_right = validateVectorMeta(rightVectorMeta)
result["vectors_right"] = vectors_right
params = result["params"]
params["metric_type"] = metric_type
if metric_type not in MetricTypes:
raise ParameterException(
"metric_type should be one of {}".format(str(MetricTypes))
)
if metric_type == "L2":
params["sqrt"] = sqrt
elif metric_type in ["HAMMING", "TANIMOTO"]:
params["dim"] = dim
if timeout:
result["timeout"] = float(timeout)
else:
result["timeout"] = None
return result


def validateVectorMeta(vectorMeta):
import json

Expand Down
Loading

0 comments on commit ccb368a

Please sign in to comment.