Skip to content

Pin inference-models to ==0.39.0rc2 so main stops floating onto branch-published rcs - #3068

Merged
PawelPeczek-Roboflow merged 1 commit into
mainfrom
fix/pin-inference-models-0.39.0rc2
Sep 25, 2026
Merged

PawelPeczek-Roboflow merged 1 commit into
mainfrom
fix/pin-inference-models-0.39.0rc2

Conversation

@PawelPeczek-Roboflow

Copy link
Copy Markdown
Collaborator

What does this PR do?

Exact-pins inference-models to 0.39.0rc2 in the five requirement files that previously carried ~=0.39.0rc2, so main stops floating onto pre-releases published from feature branches.

Why

inference-models 0.39.0rc3 landed on PyPI today at 10:48 UTC, published by workflow_dispatch from feat/new-model-manager (#2251). ~=0.39.0rc2 means >=0.39.0rc2,==0.39.*, and a pre-release lower bound makes uv/pip accept any newer rc, so every image built since then installs rc3. The repo's own inference_models/ source is never installed into the images (the lock root is a virtual project), the package always comes from PyPI through this pin.

rc3 changes the SAM3 output contract (segment_with_visual_prompts gained mask_format defaulting to "rle" and returns dicts; segment_with_text_prompts flipped its default from dense to RLE). The adapters on main (inference/models/sam3/*_inference_models.py) still expect tensors, which is why Code Quality & Regression Tests - NVIDIA T4 (build (true)) fails in the SAM3 step with HTTP 500: https://github.com/roboflow/inference/actions/runs/36145992322

AttributeError: 'dict' object has no attribute 'masks'         (/sam3/visual_segment)
TypeError: int() argument must be ... not 'dict'               (/sam3/concept_segment)

Comparing every installed package between the last green T4 image (08:40 UTC, 67725d3) and the failing one: inference-models rc2 → rc3 is the only difference.

What changes

requirements/requirements.gpu.txt       inference-models[torch-cu124,onnx-cu12]  ~=0.39.0rc2 → ==0.39.0rc2
requirements/requirements.cpu.txt       inference-models[torch-cpu,onnx-cpu]     ~=0.39.0rc2 → ==0.39.0rc2
requirements/requirements.vino.txt      inference-models[torch-cpu]              ~=0.39.0rc2 → ==0.39.0rc2
requirements/requirements.jetson.txt    inference-models                          ~=0.39.0rc2 → ==0.39.0rc2
requirements/requirements.gpu.cu13.txt  inference-models[torch-cu130]            ~=0.39.0rc2 → ==0.39.0rc2

No code change. Dockerfile.onnx.cpu's unversioned pip3 install "inference-models[model-blob-cache]" runs after the wheel install already placed rc2 and is satisfied by it. workflows/pyproject.toml's inference-models>=0.37.1 is satisfied by the installed rc2 as well (same as it was by rc3 in the failing build).

The pin is lifted by whichever PR adopts the new inference-models contract (#2251 pins ~=0.39.0rc3 and updates the SAM3 module, but touches no file under inference/models/sam3/).

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Testing

  • The five lines parse as PEP 508 and match 0.39.0rc2 only (rc3 excluded), checked with packaging.
  • Not run here: the GPU image build and the T4 suite. That workflow triggers only on push to main and manual dispatch, so it will not run on this PR. rc2 is the exact version the last green T4 image installed.

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code where necessary, particularly in hard-to-understand areas
  • My changes generate no new warnings or errors
  • I have updated the documentation accordingly (if applicable)

Additional Context

Related: #2251 (source of rc3). Follow-up worth agreeing on: branch publishes of inference-models should use .devN versions, which sort below main's lower bound (today's 0.39.0.dev20260925 publish from another branch was harmless for exactly that reason).

🤖 Generated with Claude Code

…h-published rcs

`inference-models 0.39.0rc3` was published to PyPI today (10:48 UTC) from
the feat/new-model-manager branch (PR #2251). main's requirement files
pinned `~=0.39.0rc2`, and a pre-release lower bound lets the resolver take
any newer rc, so every image built since installs rc3. rc3 changes the
SAM3 output contract (default `mask_format="rle"`, dict results) and
main's adapters in inference/models/sam3/ still expect tensors, which is
why "Code Quality & Regression Tests - NVIDIA T4" fails in the SAM3 step
with HTTP 500 (run 36145992322).

Exact-pin all five requirement files to 0.39.0rc2, the version the last
green image installed. No code change; the pin is lifted by the PR that
adopts the new inference-models contract.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

👋 Thanks for the pull request! Here is how automated Claude review works here, so you spend credits (and reviewer time) wisely.

🚦 This PR is marked Ready for review, so automated Claude review will run — and every pass spends real credits.

Warning

💸 The Claude reviewer bills in credits, not vibes

Automated review spins up a real agent that reads real code and spends real credits on every pass. It is glad to help — but it is not a rubber duck, a linter you poke in a loop, or a substitute for reading the contributing guide. Treat it like an expensive senior reviewer whose time you booked, and show up prepared.

Draft when unsure, Ready when you mean it:

  • 🌱 Not sure the PR is in good shape yet? Keep it (or set it back) as a draft — drafts pause review, so you can push and iterate without burning credits on a moving target.
  • 💪 Feel strong about the contents? Mark it Ready for review and the reviewer will take a look.

However you get there, arrive prepared:

  • 🧱 Bring a SOLID, thorough PR. Point your local agent at our skills/ to tune it to our guidelines first — or, if you are one of those fabled carbon-based contributors, read them yourself. A half-baked diff costs exactly the same to review as a finished one.
  • ✅ Resolve every comment before you re-request review. Re-requesting with threads still open means paying twice for the same conversation.
  • 🔁 Do not use CI review as an inner loop for a local agent. The reviewer is not a step-by-step debugger — do the unfolding locally and arrive with the answer, not the search.
  • 🙋 If something looks off, ask a human. One question to a maintainer is cheaper and faster than three rounds of agent re-review chasing a misread.

Reviews are not free. A draft costs nothing to review; a Ready PR is a promise that it is worth reviewing.

  • Prefer to skip automated review entirely? Add the skip-claude-review label.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Claude review started at commit cd382be0a1c6fe39198f34cda2f3d1d3ee1842e2.

New commits are not auto-reviewed. Add the claude-review label to request a re-review — the label is consumed when the review starts, so just add it again next time.

@github-actions

Copy link
Copy Markdown
Contributor

Skills: review-packaging-ci, review-topic-backward-compat-and-versioning, review-topic-test-hygiene

Reviewed the pin tightening inference-models ~=0.39.0rc2 → ==0.39.0rc2 across all five requirement files (requirements.{cpu,gpu,vino,jetson}.txt + requirements.gpu.cu13.txt). Verified against the code:

  • The premise holds: ~=0.39.0rc2 expands to >=0.39.0rc2, ==0.39.*, and a pre-release lower bound makes the resolver accept newer 0.39 pre-releases (rc3). ==0.39.0rc2 (PEP 440, no wildcard) matches only rc2, so main stops floating.
  • Lockstep is intact: all files moved together, # keep in sync comments preserved, and inference_models/pyproject.toml is version = "0.39.0rc2" — consistent with the pins.
  • No resolver conflict: workflows/pyproject.toml's inference-models>=0.37.1 and Dockerfile.onnx.cpu's unversioned pip3 install "inference-models[model-blob-cache]" are both satisfied by rc2.
  • Packaging-only change: no source under inference_models/ or workflows/, so no changelog entry or test is required.

No blocking findings and no open questions.

Reviewed at HEAD: cd382be

@github-actions

Copy link
Copy Markdown
Contributor

😎 PR passes the vibe-check and trust-me-bro verification.

@github-actions

Copy link
Copy Markdown
Contributor

Maintainer review discussion: Slack thread.

Final approval and merge remain in GitHub.

@PawelPeczek-Roboflow
PawelPeczek-Roboflow merged commit 5341268 into main Sep 25, 2026
82 of 89 checks passed
@PawelPeczek-Roboflow
PawelPeczek-Roboflow deleted the fix/pin-inference-models-0.39.0rc2 branch September 25, 2026 16:44
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