v0.2.8
Changed
-
Bumped the
djangorestframework-servicespin from==0.9.0to
==0.11.0. Upstream merged the lenient and strict service / selector
Protocols into a single shape per kind:StrictCreateService/
StrictUpdateService/StrictDeleteService/StrictListSelector/
StrictRetrieveSelector/StrictOutputSelector(and theNoKwargs
emptyTypedDict) were removed. This package re-exported all six
Strict*Protocols at the top level — they are dropped from
rest_framework_mcp.__all__and the public surface. Strict-typed
extras stay possible on user-defined services by annotating
**extras: Unpack[YourKw]directly on the function (no longer via a
Protocol type argument). Other 0.11.0 additions —create_model/
update_model/delete_model(plus async variants), generic
ChangeResult[Model]— are not reachable from the MCP transport, so
no further code changes were needed. 0.10.0 (serializer-context
propagation for service-backed views) is also irrelevant to this
package's dispatch path.Migration: rename any
from rest_framework_mcp import StrictCreateService(etc.) to the
unified name (CreateServiceetc.) and drop the trailingExtraT
type argument from each parameterised call site. The@implements(...)
decorator pattern keeps working unchanged once the names update. -
Adopted the shared release-parity CI flow from
djangorestframework-services.release.ymlis now triggered by every
merge tomainand short-circuits to a no-op unless
rest_framework_mcp/version.pywas bumped past the most recent
vX.Y.Ztag; the previous tag-trigger pipeline is gone. Bumped every
workflow action pin off the Node-20-deprecated set
(actions/checkout@v5,astral-sh/setup-uv@v7,
actions/upload-artifact@v5,actions/download-artifact@v5).
tests.ymlnow emitscoverage.xml+htmlcov/per matrix cell and
a newcoverage-badgejob publishescoverage.jsontogh-pageson
every push tomain; the README's coverage shield reads it live
instead of the previous static100%-brightgreenplaceholder. The
release flow itself is centralised inscripts/release-publish.sh
(byte-identical with the sister repo) and parameterised through
make release-publish-prepare/release-publish-finalize. No
runtime behaviour changes — pure CI / release-tooling parity.
Fixed
- Doc / code drift surfaced by an end-to-end audit:
- README's "What ships in v1" section was missing prompts,
selector-tool FilterSet / ordering / pagination, per-binding rate
limits, async + SSE (withRedisSSEBrokerandSSEReplayBuffer),
and OpenTelemetry spans. Rewrote in lockstep withdocs/index.md
and dropped the "v1" qualifier. docs/quickstart.mdclaimedAllowAnyBackendwas the default
auth backend; the default isDjangoOAuthToolkitBackend. Updated
the dev snippet to tell users to swap it in explicitly.docs/concepts.mdanddocs/async.mdcarried stale "Phase 6 /
Phase 7 / no-replay" roadmap statements that have since shipped
(async_urls+ GET-side SSE,RedisSSEBroker,
InMemorySSEReplayBuffer/RedisSSEReplayBuffer). Rewrote to
describe the shipped state and link the recipes.RedisSSEBrokerdocstring still claimedLast-Event-IDresume
was "Phase 7c"; theRedisSSEReplayBufferpairing is in tree.docs/recipes/custom-permission.mdshowed a permission example
readingrequest.user.tenant_idat registration time, where no
request exists. Updated to use a configuredsettingsvalue and
explained that permission args are captured at registration time.
- README's "What ships in v1" section was missing prompts,