chore(deps): refresh pyproject lower bounds + dependabot config - #207
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request updates the project's dependency floor requirements to align with current stable versions and refines the automated dependency management configuration. These changes improve security maintenance and ensure that the project remains compatible with modern package versions while maintaining explicit control over specific transitive dependencies. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request updates the Dependabot configuration to target the main branch and group security updates, while also bumping several minimum dependency versions in pyproject.toml (including huggingface_hub, tokenizers, numpy, python-dateutil, and httpx). The review feedback points out two important issues: first, ignoring chromadb entirely in Dependabot prevents critical security alerts, so it is recommended to only ignore regular version updates; second, bumping numpy to >=2.0 may cause compatibility issues with older versions of onnxruntime (versions 1.16 to 1.18), so the minimum onnxruntime version in optional dependencies should be bumped to >=1.19.0.
| ignore: | ||
| # chromadb is pinned <2 deliberately — we don't use it but the import | ||
| # path still resolves through it. Skip until we drop the dep entirely. | ||
| - dependency-name: "chromadb" |
There was a problem hiding this comment.
Ignoring chromadb entirely will also prevent Dependabot from opening pull requests for critical security vulnerabilities in this dependency. Since chromadb is still installed and resolved in your environment, it is safer to only ignore regular version updates while allowing security updates to go through.
You can achieve this by adding update-types: ["version-update"] to the ignore rule.
ignore:
# chromadb is pinned <2 deliberately — we don't use it but the import
# path still resolves through it. Skip until we drop the dep entirely.
- dependency-name: "chromadb"
update-types:
- "version-update"| "numpy>=1.24", | ||
| "huggingface_hub>=1.0", | ||
| "tokenizers>=0.23", | ||
| "numpy>=2.0", |
There was a problem hiding this comment.
Bumping the minimum numpy version to >=2.0 may introduce compatibility issues with onnxruntime (specified in the gpu, dml, and coreml extras as >=1.16).
Official support for NumPy 2.0 was only introduced in onnxruntime version 1.19.0. Users installing these extras might encounter runtime errors if an older version of onnxruntime (e.g., 1.16 to 1.18) is resolved alongside NumPy 2.0.
Consider bumping the minimum onnxruntime versions in the optional dependencies to >=1.19.0 to ensure compatibility.
There was a problem hiding this comment.
Pull request overview
This PR refreshes the project’s direct dependency lower bounds in pyproject.toml and adjusts Dependabot configuration to target main, group security updates, and ignore chromadb updates.
Changes:
- Bumped lower bounds for
huggingface_hub,tokenizers,numpy,python-dateutil, andhttpx(kg-extract extra). - Updated Dependabot config to explicitly target
mainand group security updates. - Configured Dependabot to ignore
chromadbupdates.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
pyproject.toml |
Raises minimum versions for several direct runtime dependencies and the kg-extract extra. |
.github/dependabot.yml |
Adds target-branch: main, groups security updates, and ignores chromadb for pip updates. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # chromadb is pinned <2 deliberately — we don't use it but the import | ||
| # path still resolves through it. Skip until we drop the dep entirely. |
96c68af to
22078fe
Compare
PR #207 CI surfaced that `tokenizers >=0.23` wheels use `_Py_DecRef`, a Python 3.10+ C API symbol. On the 3.9 runner the wheel fails to load with `undefined symbol: _Py_DecRef`, cascading into 100+ test failures. Python 3.9 EOL was October 2025. Modern deps (numpy 2.x, tokenizers 0.23, huggingface_hub 1.0) increasingly assume 3.10+. Bumping the floor is the principled long-term move and aligns with this branch's "refresh lower bounds" intent. Changes: - pyproject.toml: requires-python = ">=3.10" (was >=3.9) - pyproject.toml: drop "Programming Language :: Python :: 3.9" classifier - .github/workflows/ci.yml: test-linux matrix 3.9→3.10 (also tests the new floor); kept 3.11 + 3.13 - README.md: python-shield badge 3.9+ → 3.10+ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bump direct lower bounds in pyproject.toml to current latest: - huggingface_hub: 0.20 -> 1.0 (latest 1.16.1) - tokenizers: 0.15 -> 0.23 (latest 0.23.1) - numpy: 1.24 -> 2.0 (latest 2.4.6) - python-dateutil: 2.8 -> 2.9 (latest 2.9.0.post0) - httpx (kg-extract extra): 0.27 -> 0.28 (latest 0.28.1) pyyaml already at >=6.0,<7 — left alone. chromadb pin (<2) left alone per JP's call: we don't use it directly but the import path still resolves through it. pydantic intentionally not pinned — it's transitive (via chromadb), not a direct dependency. Dependabot config (.github/dependabot.yml): - pip + github-actions both target main explicitly - weekly schedule (unchanged) - group security updates under a single PR per ecosystem - ignore chromadb (we pin <2 deliberately) on the pip ecosystem Verified pip dry-run resolves the new floors cleanly (numpy 2.4.6, huggingface_hub 1.16.1, tokenizers 0.23.1, python-dateutil 2.9.0.post0, httpx 0.28.1) on Python 3.12. requires-python>=3.9 preserved; numpy and huggingface_hub still ship wheels for 3.9 at the requested floor. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
PR #207 CI surfaced that `tokenizers >=0.23` wheels use `_Py_DecRef`, a Python 3.10+ C API symbol. On the 3.9 runner the wheel fails to load with `undefined symbol: _Py_DecRef`, cascading into 100+ test failures. Python 3.9 EOL was October 2025. Modern deps (numpy 2.x, tokenizers 0.23, huggingface_hub 1.0) increasingly assume 3.10+. Bumping the floor is the principled long-term move and aligns with this branch's "refresh lower bounds" intent. Changes: - pyproject.toml: requires-python = ">=3.10" (was >=3.9) - pyproject.toml: drop "Programming Language :: Python :: 3.9" classifier - .github/workflows/ci.yml: test-linux matrix 3.9→3.10 (also tests the new floor); kept 3.11 + 3.13 - README.md: python-shield badge 3.9+ → 3.10+ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
687b9c7 to
abbcd67
Compare
…ves (closes #333) (#334) A fresh `pip install mempalace[rerank]` fails with ResolutionImpossible. Root cause: the rerank extra pulls sentence-transformers → transformers, whose current releases pin `tokenizers>=0.22.0,<=0.23.0` (e.g. transformers 5.9.0). mempalace's core `tokenizers>=0.23` floor sits above the bottom of that window, leaving the resolver only the single point 0.23.0 to satisfy both constraints. pip can't hold that against the rest of the rerank tree and backtracks through dozens of transformers versions before failing. Relax the floor to `tokenizers>=0.22,<0.24`. 0.22 is the actual bottom of the transformers window and what the rerank stack resolves to (verified: tokenizers 0.22.2 + transformers 5.9.0 + sentence-transformers 5.5.1). mempalace's only direct use (embedding.py: `Tokenizer.from_file`) is stable well below 0.22, so lowering the floor is safe. `<0.24` keeps it bounded. Verified in a fresh venv: `pip install mempalace[rerank]` now resolves cleanly and the cross-encoder rerank path imports/loads. Full test suite green (3792 passed), ruff clean. uv.lock: the mempalace tokenizers specifier was already drifted to `>=0.15` (PR #207 bumped pyproject to >=0.23 without re-locking, and CI installs via `pip install -e ".[dev]"`, not `uv sync`, so the lock is a dev convenience, not a gate). Synced that one specifier to the new bound rather than regenerating the whole lock — a full `uv lock` is a separate ~3k-line churn best done in a dedicated housekeeping pass. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Pin bumps (direct deps only)
huggingface_hub>=0.20>=1.0tokenizers>=0.15>=0.23numpy>=1.24>=2.0python-dateutil>=2.8>=2.9httpx(kg-extract extra)>=0.27>=0.28pyyamlalready at>=6.0,<7— left alone (matches the target floor).chromadb(<2) untouched per JP's call: we don't use it directly but theimport path still resolves through it.
pydanticwas on the bump request but it's transitive (via chromadb,not in our direct deps list) — pinning it directly would expand our surface
without benefit, so it's deliberately omitted. Happy to add it as a direct
pin if the team wants explicit control over the version.
Dependabot config changes
Test plan
pip install --dry-run -e .resolves cleanly with new floors (numpy 2.4.6, huggingface_hub 1.16.1, tokenizers 0.23.1, python-dateutil 2.9.0.post0, httpx 0.28.1) on Python 3.12tomllib.load()parses pyproject.toml without erroryaml.safe_load()parses dependabot.yml; both ecosystems show target=main, security-updates group, chromadb ignored on piprequires-python>=3.9preserved — numpy 2.0 and huggingface_hub 1.0 both still ship 3.9 wheels at the requested floor🤖 Generated with Claude Code