Skip to content

Commit fdc10f3

Browse files
vvillait88claude
andauthored
Release 2.8.2: move settle set to pympp 0.11 + x402 2.21 (verified) (#130)
## Summary Releases `agentscore-commerce` 2.8.2, moving the coupled MPP settle set forward: **pympp 0.10.1 -> 0.11.0** and **x402 2.20.0 -> 2.21.0**. Both were verified against the registry's gate (run in full this time, not deferred): - **pympp 0.11** switches credential canonicalization to **RFC 8785 / JCS**, which is exactly what mppx 0.9.1 (the JS counterpart) already uses — so the two implementations *align* rather than diverge. pympp has no EIP-712 zero-amount proof (that domain-v3 mechanism is mppx-only), so the mppx-0.8.0 break class does not apply. 0.11's `Mpp.create` now reads `.name` off each method; the one test that stubbed a bare `object()` is updated to a method-shaped stub. - **x402 2.21** leaves the Base mainnet USDC EIP-712 domain unchanged (all `USD Coin` entries still `version: "2"`); 2.21 only refactored `constants.py` into `default_assets.py`. No wire change on the rail we settle. ## Type of change - [x] Docs, tests, or internal maintenance only - [ ] Bug fix (no breaking change) - [ ] New feature (no breaking change) - [ ] Breaking change (existing callers must update) ## Public API None. No exported symbols or wire formats changed; this bumps two peer-dep versions and updates one test stub for pympp 0.11's `.name` method contract. ## Test plan `uv run pytest` (1868 passed, 4 skipped, 95.37% coverage), `uv run ruff check` + `ruff format --check` + `uv run ty check` all clean — ty validates the pympp-0.11 / x402-2.21 API surface our code calls. Standing obligation: a live all-rails settle against a pympp-0.11 merchant is the final cross-implementation confirmation and runs as a post-deploy smoke. ## Checklist - [x] Tests cover the new behavior, and the suite passes locally - [x] Lint, format, and type checks pass - [x] Docs and README examples updated if the public surface changed - [x] No secrets, credentials, or personal data in the diff or the tests Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 5e694f7 commit fdc10f3

3 files changed

Lines changed: 23 additions & 10 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "agentscore-commerce"
7-
version = "2.8.1"
7+
version = "2.8.2"
88
description = "Agentic commerce SDK for Python: identity middleware (FastAPI, Flask, Django, AIOHTTP, Sanic, ASGI) + payment helpers + 402 builders + discovery + Stripe multichain. The full merchant-side toolkit for AgentScore-powered agentic commerce."
99
readme = "README.md"
1010
license = "MIT"

tests/test_payment_servers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from __future__ import annotations
1111

1212
import importlib.util
13+
from types import SimpleNamespace
1314
from typing import Any
1415

1516
import pytest
@@ -448,11 +449,13 @@ async def test_create_mppx_server_stripe_rail_resolves(monkeypatch: pytest.Monke
448449
449450
``create_mppx_stripe`` is stubbed because the installed pympp build doesn't ship a
450451
working ``stripe/charge`` factory; this exercises the stripe branch (resolve + break)
451-
in ``create_mppx_server`` without depending on that peer-dep detail.
452+
in ``create_mppx_server`` without depending on that peer-dep detail. pympp >=0.11's
453+
``Mpp.create`` reads ``.name`` off each method for its uniqueness check, so the stub
454+
returns a method-shaped object carrying one rather than a bare ``object()``.
452455
"""
453456

454457
async def _fake_create_stripe(**_kwargs: Any) -> Any:
455-
return object()
458+
return SimpleNamespace(name="stripe")
456459

457460
monkeypatch.setattr("agentscore_commerce.stripe_multichain.mppx_stripe.create_mppx_stripe", _fake_create_stripe)
458461
server = await create_mppx_server(

uv.lock

Lines changed: 17 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)