Skip to content

Commit c284d0d

Browse files
feat: upto evm python (x402-foundation#2023)
* feat: add upto to python SDK * feat: add unit & integration tests * feat: add upto python clients/servers/facilitator to e2e suite * initial cleanup * implement partial settlement * improve parity with ts/go * better parity and fix tests * fix(python): sort imports and format test file to pass ruff lint New error constants were appended after ERR_UNSUPPORTED_SCHEME instead of in alphabetical order, causing I001 (import block un-sorted). Made-with: Cursor * add comment to e2e tests * fix failing integration test * changelog * fix changelog name --------- Co-authored-by: Ethan Oroshiba <[email protected]>
1 parent c925593 commit c284d0d

49 files changed

Lines changed: 3561 additions & 120 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

e2e/clients/go-http/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ go 1.24.0
55
toolchain go1.24.1
66

77
require (
8-
github.com/x402-foundation/x402/go v0.0.0
98
github.com/ethereum/go-ethereum v1.16.7
9+
github.com/x402-foundation/x402/go v0.0.0
1010
)
1111

1212
require (

e2e/clients/httpx/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from x402.http.clients import x402_httpx_transport
1717
from x402.mechanisms.evm import EthAccountSignerWithRPC
1818
from x402.mechanisms.evm.exact import register_exact_evm_client
19+
from x402.mechanisms.evm.upto import UptoEvmClientScheme
1920
from x402.mechanisms.svm import KeypairSigner
2021
from x402.mechanisms.svm.exact import register_exact_svm_client
2122
import httpx
@@ -53,6 +54,7 @@ async def main():
5354
evm_account = Account.from_key(evm_private_key)
5455
evm_signer = EthAccountSignerWithRPC(evm_account, rpc_url=evm_rpc_url)
5556
register_exact_evm_client(client, evm_signer)
57+
client.register("eip155:*", UptoEvmClientScheme(evm_signer))
5658

5759
# Register SVM exact scheme if private key is available
5860
if svm_private_key:

e2e/clients/httpx/test.config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
1,
1111
2
1212
],
13+
"schemes": ["exact", "upto"],
1314
"evm": {
14-
"transferMethods": ["eip3009", "permit2"]
15+
"transferMethods": ["eip3009", "permit2", "upto"]
1516
},
1617
"extensions": [
1718
"eip2612GasSponsoring",

e2e/clients/httpx/uv.lock

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

e2e/clients/mcp-go/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ go 1.24.0
55
toolchain go1.24.1
66

77
require (
8-
github.com/x402-foundation/x402/go v0.0.0
98
github.com/modelcontextprotocol/go-sdk v1.3.0
9+
github.com/x402-foundation/x402/go v0.0.0
1010
)
1111

1212
require (

e2e/clients/mcp-python/uv.lock

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

e2e/clients/requests/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from x402.http.clients import x402_requests
1111
from x402.mechanisms.evm import EthAccountSignerWithRPC
1212
from x402.mechanisms.evm.exact import register_exact_evm_client
13+
from x402.mechanisms.evm.upto import UptoEvmClientScheme
1314
from x402.mechanisms.svm import KeypairSigner
1415
from x402.mechanisms.svm.exact import register_exact_svm_client
1516

@@ -46,6 +47,7 @@ def main():
4647
evm_account = Account.from_key(evm_private_key)
4748
evm_signer = EthAccountSignerWithRPC(evm_account, rpc_url=evm_rpc_url)
4849
register_exact_evm_client(client, evm_signer)
50+
client.register("eip155:*", UptoEvmClientScheme(evm_signer))
4951

5052
# Register SVM exact scheme if private key is available
5153
if svm_private_key:

e2e/clients/requests/test.config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
1,
1111
2
1212
],
13+
"schemes": ["exact", "upto"],
1314
"evm": {
14-
"transferMethods": ["eip3009", "permit2"]
15+
"transferMethods": ["eip3009", "permit2", "upto"]
1516
},
1617
"extensions": [
1718
"eip2612GasSponsoring",

e2e/clients/requests/uv.lock

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

e2e/facilitators/go/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ go 1.24.0
55
toolchain go1.24.1
66

77
require (
8-
github.com/x402-foundation/x402/go v0.0.0
98
github.com/ethereum/go-ethereum v1.16.7
109
github.com/gagliardetto/solana-go v1.14.0
1110
github.com/gin-gonic/gin v1.11.0
11+
github.com/x402-foundation/x402/go v0.0.0
1212
)
1313

1414
require (

0 commit comments

Comments
 (0)