chore: bump renderers to 0.1.11; drop legacy RendererClient - #2478
Merged
Conversation
renderers 0.1.11 makes transformers optional, so depend on the multimodal extra (transformers + pillow): verifiers loads HF tokenizers via renderers.base.load_tokenizer / create_renderer and renders image_url content that renderers resolves to PIL images at render time. 0.1.11 also removes the renderer pool APIs (RendererPool, create_renderer_pool, client._maybe_offload) that only the legacy RendererClient still used. The v1 train client has its own ElasticRendererPool and is unaffected. Remove the legacy client and its tests instead of porting it; client_type='renderer' now raises with a pointer to the v1 train client. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR intentionally removes the legacy RendererClient and changes renderer-configured legacy rollouts from executable to failing, while directing users to a different v1 client API. That breaking runtime and compatibility impact warrants human review despite the otherwise straightforward dependency and cleanup changes. You can add or adjust custom eligibility rules. Learn more. |
mikasenghaas
approved these changes
Aug 31, 2026
xeophon
pushed a commit
that referenced
this pull request
Aug 31, 2026
Follow-up to #2478, which removed the legacy `RendererClient`. v0 was already deprecated ("will be fully removed in a future release") — this removes the rest of it. ## Summary - **`verifiers/legacy/`** — the whole v0 package (envs, rubrics, parsers, clients, scripts, serve, gepa, …). - **Package-root alias machinery** in `verifiers/__init__.py`: the `LegacyAliasFinder` meta-path finder that answered v0 modules at their historical top-level paths (`verifiers.envs`, `verifiers.types`, `import verifiers as vf`), plus the `__getattr__`/`__dir__` forwarding. The root module now only carries `__version__`. - **`verifiers/cli/`** — the host-application plugin surface (Prime plugin contract) whose commands wrapped `verifiers.legacy.scripts.*`, and the `vf-eval`/`vf-gepa`/`vf-init`/`vf-install`/`vf-setup`/`vf-build`/`vf-tui` console scripts. - **Top-level legacy tests** — every `tests/*.py` exercised the v0 API; `tests/v1/` is untouched. The three harness markers the root conftest registered (`claude_code`, `openclaw`, `hermes_agent`) move to the pyproject markers list (`--strict-markers` needs them for the v1 e2e matrix). - **Legacy-only dependencies**: `openai-agents`, `aiolimiter`, `setproctitle`, `requests` (main), `nest-asyncio`/`reasoning-gym`/`stagehand`/`python-dotenv`/`nltk`/`textarena` (dev group), and the `rg`/`browser`/`notebook` extras. `ta`/`harbor`/`modal`/`openenv`/`nemo-gym` stay — v1 tasksets and environments use them. - **Docs**: `docs/legacy/` removed; `/v0/*` and `/legacy/*` redirect to `/overview`. - **CI**: the legacy pytest step is dropped (it would collect nothing); the HF tokenizer cache key hashes `uv.lock` alone (it hashed the renderer test files deleted in #2478). - **`[tool.ty.overrides]`** for the legacy composable tasksets removed. The v1 stack is unaffected: nothing under `verifiers/v1` or `environments/` imported the legacy surface (verified by sweeping for both `verifiers.legacy` and the aliased top-level module paths). ## Verification (re-run after rebasing onto current main) - uv lock --check - uv run --locked --python 3.13 ty check verifiers - uv run --locked ruff check / ruff format --check - uv run --locked pytest tests/v1 -m 'not e2e' → 71 passed - `import verifiers, verifiers.v1` clean on the synced env 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **High Risk** > This is a breaking removal of the entire v0 public API, CLI entrypoints, and documentation; downstream code still on `verifiers.envs` / `vf-*` scripts will fail until migrated to v1. > > **Overview** > This PR **fully removes the deprecated v0 stack** (`import verifiers as vf`, `verifiers/legacy/`, and the package-root alias machinery). The root `verifiers` package now only exposes **`__version__`**; all supported APIs live under **`verifiers.v1`**. > > **Packaging & tooling:** Drops legacy console scripts (`vf-eval`, `vf-gepa`, etc.) and the Prime CLI plugin that wrapped `verifiers.legacy.scripts`. Trims **legacy-only dependencies** and extras (`rg`, `browser`, `notebook`, …) while keeping extras still used by v1. Removes **`[tool.ty.overrides]`** for legacy composable tasksets. > > **Tests & CI:** Deletes the entire top-level **`tests/*.py`** suite (v0-only); CI no longer runs the old `tests/` pytest job and runs **v1 tests only** with standalone coverage. HF tokenizer cache keys hash **`uv.lock`** only. Pytest markers for harness e2e axes move into **`pyproject.toml`** (replacing the deleted root `conftest`). > > **Docs:** Removes **`docs/legacy/`** and the Mintlify **Legacy (v0)** nav group; **`/v0/*` and `/legacy/*`** redirect to **`/overview`**, which now states v0 has been removed. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit debe784. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- Macroscope's pull request summary starts here --> <!-- Macroscope will only edit the content between these invisible markers, and the markers themselves will not be visible in the GitHub rendered markdown. --> <!-- If you delete either of the start / end markers from your PR's description, Macroscope will append its summary at the bottom of the description. --> > [!NOTE] > ### Remove the legacy (v0) stack and its import aliasing > - Deletes the `verifiers.legacy` module and removes the `LegacyAliasFinder` / `__getattr__` fallback in [verifiers/__init__.py](https://github.com/PrimeIntellect-ai/verifiers/pull/2480/files#diff-3667172df996e6596aa8d26557b92b4cb78ee7d2280a3cae14623ce4677e781e) that mapped `verifiers.<name>` to `verifiers.legacy.<name>`. > - Strips legacy console scripts (`vf-eval`, `vf-gepa`, `vf-init`, `vf-install`, `vf-setup`, `vf-build`, `vf-tui`) and runtime deps (`openai-agents`, `requests`, `aiolimiter`, `setproctitle`) from [pyproject.toml](https://github.com/PrimeIntellect-ai/verifiers/pull/2480/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711). > - Removes the Legacy (v0) docs section in [docs/mint.json](https://github.com/PrimeIntellect-ai/verifiers/pull/2480/files#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534deb) and redirects all `/legacy/*` paths to `/overview`. > - Simplifies [the test workflow](https://github.com/PrimeIntellect-ai/verifiers/pull/2480/files#diff-faff1af3d8ff408964a57b2e475f69a6b7c7b71c9978cccc8f471798caac2c88) to only run `tests/v1`. > - Behavioral Change: any import or attribute access that relied on the v0 aliasing (`verifiers.<name>` → `verifiers.legacy.<name>`) or the removed console scripts will break; the package no longer pulls in the stripped dependencies at install time. > > <!-- Macroscope's review summary starts here --> > > <sup><a href="https://app.macroscope.com">Macroscope</a> summarized debe784.</sup> > <!-- Macroscope's review summary ends here --> > <!-- Macroscope's pull request summary ends here --> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
renderers[multimodal]>=0.1.11: renderers 0.1.11 makestransformersoptional, and verifiers both loads HF tokenizers (renderers.base.load_tokenizer/create_renderer) and rendersimage_urlcontent that renderers resolves to PIL images at render time — so pin the extra that carriestransformers+pillow.RendererClientand its tests: 0.1.11 removes the renderer pool APIs (RendererPool,create_renderer_pool,renderers.client._maybe_offload) that only the legacy client still used. The v1 train client has its ownElasticRendererPooland is unaffected.client_type="renderer"in a legacyClientConfignow raises with a pointer to the v1 train client.Verification
verifiers,verifiers.legacy,verifiers.legacy.clientsimport cleanly🤖 Generated with Claude Code
Note
Medium Risk
Breaking change for legacy configs using
client_type="renderer"; v1 train path is unaffected but migrations are required for any remaining legacy renderer rollouts.Overview
Upgrades the
renderersdependency torenderers[multimodal]>=0.1.11(lockfile refreshed) sotransformersandpillowstay available for HF tokenizers and multimodal rendering after 0.1.11 madetransformersoptional.Removes the legacy
RendererClient(verifiers/legacy/clients/renderer_client.py) and its unit/e2e tests, because 0.1.11 droppedRendererPool,create_renderer_pool, and related APIs that only that client used.RendererClientis no longer exported fromverifiers.legacy;client_type="renderer"in legacyresolve_clientnow raisesValueErrordirecting callers to the v1 train client. Legacy docs dropRendererClientfrom the built-in clients table and note thatprompt_attributionon trajectory tokens applied to renderer-backed rollouts removed with 0.1.11.Reviewed by Cursor Bugbot for commit 9dc9356. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Drop legacy
RendererClientand bumprenderersto 0.1.11RendererClientimplementation, its lazy import mapping,__all__exports, and tests undertests/test_renderer_*.pyresolve_clientnow raisesValueErrorforclient_type='renderer', directing users to the verifiers.v1 train clientrenderers[multimodal]>=0.1.11inpyproject.tomland updates the lockfiledocs/legacy/reference.mdto remove theRendererClientrow and note the removalverifiers.legacy.clients.RendererClientor callingresolve_clientwithclient_type='renderer'will now raiseAttributeError/ValueErrorinstead of returning a clientMacroscope summarized 9dc9356.