feat: 2.x bridges for the 3.0 breaks — validation UX, ContextProvider deprecation, to-3.x guide#268
Open
lesnik512 wants to merge 13 commits into
Open
feat: 2.x bridges for the 3.0 breaks — validation UX, ContextProvider deprecation, to-3.x guide#268lesnik512 wants to merge 13 commits into
lesnik512 wants to merge 13 commits into
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…R-5) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rrors Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…he 3.0 default flip (API-1 bridge) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…py3.10 lint) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… 3.0 raise (API-6 bridge) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Clarify the child-container warning-suppression path in containers.md and drop nonstandard ~module.Class notation in providers.md to match the rest of the file's plain-backtick style. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… bridge-contract tests, drift one-liners) 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.
What
The 2.x-shippable half of the 3.0-gated trio ruled in the 2026-07-05 UX research (API-1/ERR-2, ERR-5, API-6, DOC-1). Bundle:
planning/changes/2026-07-05.04-v3-bridges/.ValidationFailedErrornow groups errors by kind with indented multi-line sub-errors;CircularDependencyErrorrenders its cycle as a multi-line arrow chain (message text only;.errors/.cycle_pathunchanged).Container(validate=)is tri-state (bool | None = None): unset on a root emits the newUnvalidatedContainerWarning(FutureWarning) pointing at the migration guide; explicitFalseopts out silently, also after 3.0; children never warn.ContextProvideremitsContextValueNoneWarning(DeprecationWarning) and still returnsNone;ContextValueNotSetErrorships now, raised in 3.0. Dependent-parameter dispositions untouched.docs/migration/to-3.x.md: all five 3.0 switches with before/after code and an empirically verified readiness recipe (module-scoped filters were tested and dropped — they miss 3 of 5 signals due to stacklevel attribution; the page documents this).architecture/promotions + regenerated troubleshooting outputs ride along.Notable implementation notes
ignore::modern_di.exceptions...) imports the package at config time, before coverage tracing starts, collapsing coverage to 89% (bisected + independently reproduced in review). A drift-guard test pins the filter to the live message.validate=Noneprovably does not validate (pinned bytest_unset_validate_warns_but_does_not_validate); the flips land in the cut-3.0 bundle.Before tagging the next 2.x minor (not merge-gating)
Container(...)constructions — they'd surfaceUnvalidatedContainerWarningto downstream users; coordinate releases passing explicitvalidate=.str()shapes of the two validation errors (downstreampytest.raises(match=...)on old one-line text will break), and that ~46 docs samples still construct bare roots (follow-up docs pass planned: samples adoptvalidate=True).Process
Subagent-driven: 6 tasks, fresh implementer + spec/quality reviewer per task, two fix loops (empty-message rendering guard; py3.10
tyregression caught by re-review against the CI-pinned environment), final whole-branch review verdict: ready to merge. Gates:just test-ci269 passed / 100% coverage,just lint-ci,just docs-build --strict,just check-planning.🤖 Generated with Claude Code