Conversation
📝 WalkthroughWalkthroughA dependency version constraint in Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@pyproject.toml`:
- Line 15: The pyproject.toml dependency floor for "milvus-lite>=2.5.1;
platform_machine != 'aarch64'" risks pulling a pymilvus older than 2.6.2 (which
provides partial_update used in evolve/backend/milvus.py around the upsert
call), so update pyproject.toml to either raise the milvus-lite minimum to a
release that transitively requires pymilvus>=2.6.2 or add an explicit direct
requirement "pymilvus>=2.6.2" to ensure partial_update is available at runtime.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
| "pymilvus[milvus-lite]; platform_machine != 'aarch64'", | ||
| "pymilvus; platform_machine == 'aarch64'", | ||
| "milvus-lite>=2.5.2rc1; platform_machine != 'aarch64'", # TODO: remove once 2.5.2+ is released (pkg_resources deprecation) | ||
| "milvus-lite>=2.5.1; platform_machine != 'aarch64'", # TODO: remove once 2.5.2+ is released (pkg_resources deprecation) |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Read-only verification: confirm repo uses APIs that may require newer milvus-lite/pymilvus behavior.
rg -n -C2 "MilvusClient\(|token=|timeout=|upsert\(|partial_update=|DataType\.JSON|create_collection\(" evolve/backend/milvus.pyRepository: AgentToolkit/altk-evolve
Length of output: 1438
🌐 Web query:
`For pymilvus/milvus-lite release notes and API docs, which minimum version supports:
- MilvusClient(token=..., timeout=...)
- upsert(..., partial_update=True)
- FieldSchema/DataType.JSON in collection schema
Please provide official source links and exact version numbers.`
💡 Result:
For pymilvus/milvus-lite: 1. MilvusClient(token=..., timeout=...): pymilvus >= 2.2.x (MilvusClient introduced in PR #1374 merged April 2023, documented in v2.2.x docs with token and timeout parameters). Milvus-lite compatible since pymilvus 2.4.2. 2. upsert(..., partial_update=True): pymilvus >= 2.6.x (feature added in PR #2938 merged August 2025; Zilliz docs show parameter, issue #3364 in 2026 confirms usage). 3. FieldSchema/DataType.JSON in collection schema: pymilvus >= 2.3.x (DataType.JSON=23 in v2.3.x docs; proto support added PR #1422 May 2023; milvus-lite v2.4.11 Dec 2024 fixes JSON bugs). Official sources: - PyMilvus releases/changelog: https://github.com/milvus-io/pymilvus/releases - MilvusClient docs: https://milvus.io/api-reference/pymilvus/v2.2.x/MilvusClient/Client/MilvusClient.md (15), https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Client/MilvusClient.md (62) - Upsert partial_update: milvus-io/pymilvus#2938 (11), https://docs.zilliz.com/reference/python/python/Vector-upsert (21) - DataType.JSON: https://milvus.io/api-reference/pymilvus/v2.3.x/MilvusClient/Collections/DataType.md (65), https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/DataType.md (66), PR #1422 (68) - Milvus-lite: https://github.com/milvus-io/milvus-lite (3), requires pymilvus >=2.4.2 (4,5)
Citations:
- 1: https://github.com/milvus-io/milvus-lite/releases
- 2: https://github.com/milvus-io/milvus-lite
- 3: https://pypi.org/project/milvus-lite/
- 4: feat: Add partial update support for upsert operations milvus-io/pymilvus#2938
- 5: https://milvus.io/api-reference/pymilvus/v2.2.x/MilvusClient/Client/MilvusClient().md
- 6: https://docs.zilliz.com/reference/python/python/Client-MilvusClient
- 7: https://docs.zilliz.com/reference/python/python/Vector-upsert
- 8: https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/FieldSchema/FieldSchema.md
- 9: https://milvus.io/api-reference/pymilvus/v2.3.x/ORM/CollectionSchema/add_field.md
- 10: https://milvus.io/docs/v2.3.x/schema.md
- 11: https://pypi.org/project/pymilvus/1.0.0/
- 12: Milvus Client milvus-io/pymilvus#1374
- 13: https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Client/MilvusClient.md
- 14: https://milvus.io/api-reference/pymilvus/v2.5.x/About.md
- 15: https://pypi.org/project/pymilvus/
- 16: https://milvus.io/api-reference/pymilvus/v2.3.x/MilvusClient/Collections/DataType.md
- 17: https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/DataType.md
- 18: Update proto to support JSON type milvus-io/pymilvus#1422
- 19: https://milvus.io/docs/release_notes.md
🏁 Script executed:
# Query PyPI for milvus-lite dependency specifications
python3 << 'EOF'
import json
import urllib.request
def fetch_pypi_json(package_name, version=None):
"""Fetch PyPI package info as JSON."""
url = f"https://pypi.org/pypi/{package_name}/{version if version else ''}/json"
try:
with urllib.request.urlopen(url, timeout=10) as response:
return json.loads(response.read().decode())
except Exception as e:
print(f"Error fetching {package_name}: {e}")
return None
# Check milvus-lite 2.5.1 and 2.5.2 dependencies
for version in ['2.5.1', '2.5.2']:
data = fetch_pypi_json('milvus-lite', version)
if data and 'requires_dist' in data.get('info', {}):
print(f"\n=== milvus-lite {version} ===")
requires = data['info'].get('requires_dist') or []
for req in requires:
if 'pymilvus' in req.lower():
print(f" {req}")
elif data and 'requires_dist' in data.get('releases', {}).get(version, [{}])[0]:
print(f"\n=== milvus-lite {version} (from releases) ===")
for item in data.get('releases', {}).get(version, []):
if 'requires_dist' in item:
for req in item['requires_dist']:
if 'pymilvus' in req.lower():
print(f" {req}")
else:
print(f"\n=== milvus-lite {version}: Could not retrieve requires_dist ===")
# Also check pymilvus 2.6.x changelog for partial_update
print("\n=== Checking pymilvus 2.6.x release info ===")
data = fetch_pypi_json('pymilvus', '2.6.0')
if data:
print(f"pymilvus 2.6.0 exists on PyPI")
else:
print("pymilvus 2.6.0 not found on PyPI (may not be released yet)")
EOFRepository: AgentToolkit/altk-evolve
Length of output: 759
🌐 Web query:
1. milvus-lite PyPI release history: what pymilvus version does milvus-lite 2.5.1 require? (check install_requires in setup.py or requirements on PyPI) 2. pymilvus changelog/release notes: when was partial_update parameter for upsert() added? (exact PR/version) 3. Is pymilvus 2.6.x already released as of April 2026?
💡 Result:
- milvus-lite 2.5.1 does not require pymilvus; it is the other way around. pymilvus >=2.4.2 includes milvus-lite as an optional/extra dependency (pymilvus[milvus-lite]). The PyPI page for milvus-lite 2.5.1 lists only 'tqdm' as a runtime dependency, with no pymilvus requirement in install_requires. 2. The partial_update parameter for upsert was added in pymilvus via PR
#2938(merged Aug 21, 2025). It requires Milvus server >=2.6.2 and is supported in pymilvus 2.6.2+ (released Sep 18, 2025), as noted in release notes and issues. 3. Yes, pymilvus 2.6.x is released as of April 2026. Latest is 2.6.11 (Mar 27, 2026), with prior 2.6.x releases from Aug 2025 (2.6.0) through early 2026.
Citations:
- 1: https://pypi.org/project/milvus-lite/
- 2: https://milvus.io/docs/it/v2.5.x/milvus_lite.md
- 3: https://github.com/milvus-io/pymilvus
- 4: feat: Add partial update support for upsert operations milvus-io/pymilvus#2938
- 5: https://milvus.io/docs/release_notes.md
- 6: [Bug]: partial_update not working milvus-io/pymilvus#3067
- 7: https://pypi.org/project/pymilvus/
Dependency floor creates pymilvus version mismatch risk (critical runtime failure).
Line 15 lowers non-ARM milvus-lite to >=2.5.1, but this does not guarantee pymilvus >= 2.6.2, which is required for the partial_update=True parameter used in evolve/backend/milvus.py line 287. Since milvus-lite 2.5.1 declares no pymilvus dependency (only tqdm), users on non-aarch64 systems can resolve to pymilvus < 2.6.2 (which lacks partial_update support), causing a runtime AttributeError or silent behavior change when upserting entities.
The other APIs (MilvusClient with token/timeout, DataType.JSON) are supported in earlier pymilvus versions (2.2.x and 2.3.x respectively), so they are not the limiting factor. The blocker is partial_update, added to pymilvus 2.6.2 (released Sep 18, 2025).
Raise milvus-lite floor to a version that transively ensures pymilvus >= 2.6.2, or add an explicit pymilvus>=2.6.2 requirement to pyproject.toml.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@pyproject.toml` at line 15, The pyproject.toml dependency floor for
"milvus-lite>=2.5.1; platform_machine != 'aarch64'" risks pulling a pymilvus
older than 2.6.2 (which provides partial_update used in evolve/backend/milvus.py
around the upsert call), so update pyproject.toml to either raise the
milvus-lite minimum to a release that transitively requires pymilvus>=2.6.2 or
add an explicit direct requirement "pymilvus>=2.6.2" to ensure partial_update is
available at runtime.
|
Please comment on the coderabbit reviews. |
pre-release version is blocked by uv lock is there any specific feature we need from milvu-lite 2.5.2?
Summary by CodeRabbit