Skip to content

chore(deps): refresh pyproject lower bounds + dependabot config - #207

Merged
jphein merged 2 commits into
mainfrom
chore/refresh-deps-and-dependabot
May 26, 2026
Merged

chore(deps): refresh pyproject lower bounds + dependabot config#207
jphein merged 2 commits into
mainfrom
chore/refresh-deps-and-dependabot

Conversation

@jphein

@jphein jphein commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • pyproject.toml: bump direct lower bounds to current latest where reasonable
  • .github/dependabot.yml: target main explicitly, group security updates, ignore chromadb

Pin bumps (direct deps only)

package before after latest on PyPI
huggingface_hub >=0.20 >=1.0 1.16.1
tokenizers >=0.15 >=0.23 0.23.1
numpy >=1.24 >=2.0 2.4.6
python-dateutil >=2.8 >=2.9 2.9.0.post0
httpx (kg-extract extra) >=0.27 >=0.28 0.28.1

pyyaml already at >=6.0,<7 — left alone (matches the target floor).
chromadb (<2) untouched per JP's call: we don't use it directly but the
import path still resolves through it.

pydantic was 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

 - package-ecosystem: "pip"
   directory: "/"
+  target-branch: "main"
   schedule:
     interval: "weekly"
   open-pull-requests-limit: 5
+  groups:
+    security-updates:
+      applies-to: security-updates
+      patterns: ["*"]
+  ignore:
+    - dependency-name: "chromadb"

 - package-ecosystem: "github-actions"
   directory: "/"
+  target-branch: "main"
   schedule:
     interval: "weekly"
   open-pull-requests-limit: 3
+  groups:
+    security-updates:
+      applies-to: security-updates
+      patterns: ["*"]

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.12
  • tomllib.load() parses pyproject.toml without error
  • yaml.safe_load() parses dependabot.yml; both ecosystems show target=main, security-updates group, chromadb ignored on pip
  • Dependabot picks up the new config on next weekly run (will land in main after merge)
  • requires-python>=3.9 preserved — numpy 2.0 and huggingface_hub 1.0 both still ship 3.9 wheels at the requested floor

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings May 26, 2026 02:51
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, 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

  • Dependency Version Bumps: Updated the lower bounds for several direct dependencies in pyproject.toml, including huggingface_hub, tokenizers, numpy, python-dateutil, and httpx, to ensure compatibility with recent releases.
  • Dependabot Configuration: Enhanced the Dependabot configuration to target the main branch, introduced grouping for security updates, and added an ignore rule for chromadb.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread .github/dependabot.yml
Comment on lines +14 to +17
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"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security-medium medium

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"

Comment thread pyproject.toml
"numpy>=1.24",
"huggingface_hub>=1.0",
"tokenizers>=0.23",
"numpy>=2.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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, and httpx (kg-extract extra).
  • Updated Dependabot config to explicitly target main and group security updates.
  • Configured Dependabot to ignore chromadb updates.

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.

Comment thread .github/dependabot.yml
Comment on lines +15 to +16
# 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.
@jphein
jphein force-pushed the chore/refresh-deps-and-dependabot branch 2 times, most recently from 96c68af to 22078fe Compare May 26, 2026 04:00
jphein added a commit that referenced this pull request May 26, 2026
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>
jphein and others added 2 commits May 26, 2026 03:58
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>
@jphein
jphein force-pushed the chore/refresh-deps-and-dependabot branch from 687b9c7 to abbcd67 Compare May 26, 2026 11:04
@jphein
jphein merged commit c0dde8b into main May 26, 2026
jphein added a commit that referenced this pull request May 31, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants