Skip to content

Releases: tempoxyz/pympp

v0.4.2

20 Mar 22:02
84e7007

Choose a tag to compare

Patch Changes

  • Added atomic put_if_absent method to Store protocol and MemoryStore, replacing the racy get()/put() pattern for charge replay protection. Normalized transaction hashes to lowercase before dedup to prevent mixed-case bypasses. (by @brendanryan, #91)

Full Changelog: v0.4.1...v0.4.2

v0.4.1

18 Mar 23:26
986211f

Choose a tag to compare

Patch Changes

  • Updated the testnet escrow contract address to 0xe1c4d3dce17bc111181ddf716f75bae49e61a336. (by @brendanryan, #90)
  • Updated examples/api-server/README.md to replace references to the external purl tool with the pympp client (python -m mpp.fetch) and corrected the secret_key documentation to reflect that it is read from the MPP_SECRET_KEY env var rather than auto-generated. (by @brendanryan, #90)
  • Added a pluggable Store interface and MemoryStore implementation for transaction hash replay protection in ChargeIntent. When a store is provided, verified tx hashes are recorded and subsequent attempts to reuse the same hash are rejected with a VerificationError. (by @brendanryan, #90)
  • Updated mainnet escrow contract address to 0x33b901018174DDabE4841042ab76ba85D4e24f25. (by @brendanryan, #90)
  • Raised DEFAULT_GAS_LIMIT from 100,000 to 1,000,000 for Tempo AA (type-0x76) transactions to account for their higher intrinsic gas cost (~270k for a single TIP-20 transfer). (by @brendanryan, #90)

Full Changelog: https://github.com/tempoxyz/pympp/commits/v0.4.1

pympp@0.4.0

12 Mar 20:39
fd8d450

Choose a tag to compare

What's Changed

  • tightens up pympp readme by @brendanjryan in #74
  • chore: update mpp.sh → mpp.dev by @brendanjryan in #76
  • chore(ci): add cyclops PR audit workflow by @legion2002 in #77
  • fix: address MPP audit findings by @brendanjryan in #79
  • fix: fail-closed expiry enforcement and cross-endpoint replay prevention by @brendanjryan in #78
  • refactor(pympp): wire method transform_request in Mpp helpers by @brendanjryan in #80
  • refactor: consolidate expires into challenge auth-param only by @brendanjryan in #82
  • fix(server): require explicit secret key and preserve wrapper metadata by @brendanjryan in #81
  • chore: release pympp@0.4.0 by @github-actions[bot] in #75

New Contributors

Full Changelog: https://github.com/tempoxyz/pympp/compare/pympp@0.3.0...pympp@0.4.0

pympp@0.3.0

23 Feb 04:24
d1a99e2

Choose a tag to compare

What's Changed

  • ci: add CI Gate job for branch protection by @brendanjryan in #69
  • test: add additional test coverage by @brendanjryan in #66
  • ci: add pyright, coverage, package validation, concurrency by @brendanjryan in #73
  • fix: preserve key_authorization through 0x78 fee payer envelope roundtrip by @brendanjryan in #70
  • chore: release pympp@0.3.0 by @github-actions[bot] in #71

Full Changelog: https://github.com/tempoxyz/pympp/compare/pympp@0.2.0...pympp@0.3.0

pympp@0.2.0

20 Feb 18:18
c673c7e

Choose a tag to compare

What's Changed

  • feat: add FLY_APP_NAME, HEROKU_APP_NAME, WEBSITE_HOSTNAME to realm detection by @brendanjryan in #63
  • feat: implement full fee payer support by @brendanjryan in #62
  • feat: add integration tests against real Tempo node by @brendanjryan in #60
  • feat: default currency to USDC on mainnet, pathUSD on testnet by @brendanjryan in #67
  • feat: add opaque/meta field for server-defined correlation data by @brendanjryan in #68
  • chore: release pympp@0.2.0 by @github-actions[bot] in #65

Full Changelog: https://github.com/tempoxyz/pympp/compare/pympp@0.1.5...pympp@0.2.0

pympp@0.1.5

18 Feb 01:18
483a945

Choose a tag to compare

What's Changed

  • chore: remove release environment and debug step by @brendanjryan in #57
  • chore: test release pipeline e2e by @brendanjryan in #58
  • chore: release pympp@0.1.5 by @github-actions[bot] in #59

Full Changelog: https://github.com/tempoxyz/pympp/compare/pympp@0.1.4...pympp@0.1.5

pympp@0.1.4

18 Feb 01:07
095c80d

Choose a tag to compare

What's Changed

  • feat(tempo): add fee sponsorship via tempo_sendTransaction by @brendanjryan in #1
  • refactor: use pytempo for TempoTransaction instead of manual RLP encoding by @brendanjryan in #2
  • refactor: use pytempo exclusively for sponsored-only transactions by @brendanjryan in #3
  • feat: migrate to pytempo typed API by @brendanjryan in #4
  • Fleshes out examples by @brendanjryan in #5
  • fix: use standard eth_getTransactionCount and set fee_token by @brendanjryan in #8
  • feat: add HMAC-SHA256 challenge ID generation by @brendanjryan in #10
  • fix: return 402 for failed receipts per IETF spec by @brendanjryan in #11
  • fix: tempo payment method parity with TypeScript SDK by @brendanjryan in #12
  • fix: update credential format to match new spec with ChallengeEcho by @brendanjryan in #9
  • spec: remove failed receipt state, return 402 for failures by @gakonst in #13
  • fix: client robustness improvements by @brendanjryan in #14
  • feat: mpay TypeScript SDK parity by @brendanjryan in #15
  • feat: add parseUnits syntactic sugar for human-readable amounts by @brendanjryan in #17
  • examples: add @requires_payment decorator endpoint to api-server by @brendanjryan in #18
  • feat: simplify server API — Mpay.create(), flat charge(amount=), smart defaults by @brendanjryan in #19
  • feat: add stream payment intent with payment channels by @brendanjryan in #20
  • Add PyPI publish workflow with trusted publishing by @brendanjryan in #23
  • chore: initial release by @brendanjryan in #24
  • feat: make intents explicit in tempo() — remove implicit ChargeIntent default by @brendanjryan in #22
  • fix: use correct changelogs action ref by @brendanjryan in #25
  • fix: add write permissions to release workflow by @brendanjryan in #26
  • chore: release mpay@0.1.1 by @github-actions[bot] in #27
  • fix: add release environment and permissions to release workflow by @brendanjryan in #28
  • refactor: switch payment token from AlphaUSD to PathUSD by @gakonst in #29
  • chore: use published pytempo from PyPI by @brendanjryan in #31
  • refactor: remove streaming support by @brendanjryan in #32
  • feat: auto-generate attribution memo for MPP transactions by @brendanjryan in #34
  • rename: mpay → pympp by @brendanjryan in #35
  • Tighten README to match mppx style by @brendanjryan in #36
  • rename @requires_payment decorator to @pay by @brendanjryan in #37
  • feat: align with TypeScript SDK and spec by @brendanjryan in #33
  • fix: HMAC-bound challenge IDs for MCP transport + add description/externalId to ChargeRequest by @brendanjryan in #38
  • feat: mandate JCS (RFC 8785) for canonical JSON serialization of request parameter by @brendanjryan in #39
  • fix: include empty fields in HMAC challenge ID computation by @brendanjryan in #40
  • fix: reject duplicate params and require method in receipts by @brendanjryan in #41
  • docs: align README format with mppx by @brendanjryan in #42
  • chore: release pympp@0.1.0 by @github-actions[bot] in #30
  • fix: persist checkout credentials for publish workflow by @brendanjryan in #43
  • chore: test publish pipeline by @brendanjryan in #44
  • chore: release pympp@0.1.1 by @github-actions[bot] in #45
  • fix: use Python 3.12 in publish workflow by @brendanjryan in #46
  • chore: release pympp@0.1.2 by @github-actions[bot] in #47
  • fix: correct transferWithMemo selector, event topic, and gas estimation by @brendanjryan in #50
  • chore: use changelogs python-version input by @brendanjryan in #52
  • chore: release pympp@0.1.3 by @github-actions[bot] in #51
  • fix: client imports no longer pull in server dependencies by @brendanjryan in #53
  • fix: sort imports to satisfy ruff I001 by @brendanjryan in #55
  • chore: release pympp@0.1.4 by @github-actions[bot] in #54
  • debug: test twine upload directly by @brendanjryan in #56

New Contributors

  • @brendanjryan made their first contribution in #1
  • @gakonst made their first contribution in #13
  • @github-actions[bot] made their first contribution in #27

Full Changelog: https://github.com/tempoxyz/pympp/commits/pympp@0.1.4