A cli tool to generate Python code from EVM ABI.
Project description
py-contract-codegen
py-contract-codegen is a command-line tool for generating Python code from Ethereum ABI.
Installation
pip install py-contract-codegen
Commands
gen: Generate Python code from an Ethereum ABI file.version: Show the version of the code generator.
gen Command
The gen command is used to generate Python code from an Ethereum ABI.
py-contract-codegen gen [OPTIONS]
Options
╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --abi-path PATH Path to ABI file. If not provided, `--abi-stdin` or `--contract-address` must be set [default: None] │
│ --abi-stdin --no-abi-stdin ABI content from stdin [default: no-abi-stdin] │
│ --contract-address TEXT Auto fetch abi from etherscan and generate code. Please set environment variable `ETHERSCAN_API_KEY` [default: None] │
│ --out-file PATH Path to save file name the generated code. If not provided, prints to stdout [default: None] │
│ --class-name TEXT Contract Class Name to save the generated code. If not provided, use `GeneratedContract` [default: GeneratedContract] │
│ --target-lib [web3_v7|web3_v6] Target library and version [default: web3_v7] │
│ --network [mainnet|sepolia] Ethereum network for fetching ABI [default: mainnet] │
│ --help Show this message and exit. │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Command Examples
Gen from ABI file
py-contract-codegen gen --abi-path {ABI_FILE_PATH} --out-file generated_contract.py
Gen from stdin
cat {ABI_FILE_PATH} | py-contract-codegen gen --abi-stdin --out-file generated_contract.py
Gen from Contract Address
It automatically generates code by fetching the ABI through Etherscan API.
The contract's source code needs to be verified on Etherscan.
Please set environment variable ETHERSCAN_API_KEY.
py-contract-codegen gen --contract-address {CONTRACT_ADDRESS} --out-file generated_contract.py
Examples
To use the generated contract, you need to install web3.py.
Here's an example of a generated contract:
ERC20
from web3 import Web3
from eth_account import Account
w3 = Web3(provider=Web3.HTTPProvider("{YOUR_PROVIDER_URL}"))
private_key = "{YOUR_PRIVATE_KEY}"
contract_address = w3.to_checksum_address("{YOUR_CONTRACT_ADDRESS}")
to_address = w3.to_checksum_address("{YOUR_TO_ADDRESS}")
contract = GeneratedContract(contract_address=contract_address, web3=w3)
account = Account.from_key(private_key)
# balanceOf
balance = contract.balanceOf(to_address)
# transfer
transfer = contract.transfer(to_address, 1)
nonce = w3.eth.get_transaction_count(account.address)
build_tx = transfer.build_transaction({"from": account.address, "nonce": nonce})
signed_tx = account.sign_transaction(build_tx)
tx_hash = w3.eth.send_raw_transaction(signed_tx.rawTransaction)
w3.eth.wait_for_transaction_receipt(tx_hash)
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_contract_codegen-0.1.3.tar.gz.
File metadata
- Download URL: py_contract_codegen-0.1.3.tar.gz
- Upload date:
- Size: 97.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a154be033f1228db6f4624922a29a9922bd886322ea16b8086ee29c3293e7445
|
|
| MD5 |
e23141a05647a7c02acc0ae3a23604e4
|
|
| BLAKE2b-256 |
7de7972c6b18bb2244aabccab88720a0bfa428fb89bdb7c5e2dd80809d2abbaa
|
File details
Details for the file py_contract_codegen-0.1.3-py3-none-any.whl.
File metadata
- Download URL: py_contract_codegen-0.1.3-py3-none-any.whl
- Upload date:
- Size: 22.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42a75e43c3f1904b0e91bb2417612e71fa086897df1c76dfc757a3bae3033d70
|
|
| MD5 |
d6c951c66223bfc2a5756a58f93efa14
|
|
| BLAKE2b-256 |
81d58bb368ffc3404ff87ceea0423e8a74cb781bbd9f3473445264dd46afd888
|