Validate input and return token network config (e.g. network.bitcoin, network.bsc.usdt)
Project description
token-network
Resolve blockchain networks and tokens by name and get config (contract addresses, decimals, confirmations). All returned objects are Pydantic models (TokenDto, NetworkConfigDto, TokenOnNetworkDto, NetworkDataDto).
Install
pip install token-network
From source:
pip install -e .
Examples
Get a network and its settings
from token_network import network
# By name (callable)
bitcoin = network("bitcoin")
bitcoin.decimal # 8 (base token decimals)
bitcoin.confirmation_number # 2 (required confirmations)
bitcoin.config # NetworkConfigDto (Pydantic)
bitcoin.__dict__() # Full data: {"config": {...}, "tokens": [...]}
List tokens on a network
from token_network import network
ethereum = network("ethereum")
tokens = ethereum.tokens # list of TokenOnNetworkDto
for t in tokens:
print(t.token.symbol, t.contract_address or "native", t.decimal)
# ETH None 18
# USDT 0xdAC17F958D2ee523a2206206994597C13D831ec7 6
# ...
Get one token on a network
from token_network import get_token_on_network
usdt = get_token_on_network(network="ethereum", token_abbr="USDT")
usdt.contract_address # "0xdAC17F958D2ee523a2206206994597C13D831ec7"
usdt.decimal # 6
usdt.native # False
usdt.token.symbol # "USDT"
usdt.__dict__() # All fields as dict (or use .model_dump())
Same via attribute access
from token_network import network
# network.ethereum.usdt is the same as get_token_on_network(network="ethereum", token_abbr="USDT")
usdt = network.ethereum.usdt
assert usdt.contract_address == "0xdAC17F958D2ee523a2206206994597C13D831ec7"
Get token or network by identifier (Pydantic models)
from token_network import get_token, get_network, get_token_network
# Token by symbol, slug, or name (case-insensitive)
token = get_token("USDT") # TokenDto
print(token.symbol, token.precision) # USDT 6
# Network with config + tokens
net = get_network("bitcoin") # NetworkDataDto
print(net.config.base_token) # BTC
print(len(net.tokens)) # 1 (e.g. BTC)
# Token on a specific network
ton = get_token_network("USDT", "bsc") # TokenOnNetworkDto
print(ton.contract_address)
List all networks and tokens
from token_network import get_networks, get_tokens
get_networks() # ['bitcoin', 'bsc', 'dogecoin', 'ethereum', 'ripple', 'solana', 'tron']
get_tokens() # ['AAVE', 'BNB', 'BTC', 'ETH', 'USDT', ...]
Testnet config
from token_network import NetworkAccessor
testnet = NetworkAccessor(testnet=True)
bsc = testnet("bsc")
usdt_test = testnet.bsc.usdt # USDT on BSC from token_networks_testnet.yaml
Error handling
from token_network import network, get_token_on_network, TokenNetworkError
try:
network("unknown_chain")
except TokenNetworkError as e:
print(e) # Unknown network: 'unknown_chain'. Known networks: ...
try:
get_token_on_network(network="bitcoin", token_abbr="USDT")
except TokenNetworkError as e:
print(e) # Token 'USDT' is not on network 'bitcoin'. Available on this network: ['BTC']
API summary
| What you want | How |
|---|---|
| Network by name | network("bitcoin") or network.bitcoin |
| Base decimals / confirmations | network("bitcoin").decimal, .confirmation_number |
| Full network data as dict | network("bitcoin").__dict__() or .to_dict() |
| Tokens on a network | network("ethereum").tokens → list of TokenOnNetworkDto |
| One token on a network | get_token_on_network(network="ethereum", token_abbr="USDT") or network.ethereum.usdt |
| Token info | get_token("USDT") → TokenDto |
| Network + tokens | get_network("bitcoin") → NetworkDataDto |
| Token on network by ids | get_token_network("USDT", "bsc") → TokenOnNetworkDto |
All identifiers are case-insensitive. Unknown network/token raises TokenNetworkError.
Pydantic models
TokenDto— Token definition (slug, symbol, name, precision, factor). Fromget_token().NetworkConfigDto— Chain config (slug, name, network_type, base_token_decimal, confirmation_number, …). Fromnetwork("x").configand insideTokenOnNetworkDto.network.TokenOnNetworkDto— Token on a network (network, token, contract_address, decimal, native, type). Fromget_token_on_network(),get_token_network(),network.ethereum.usdt.NetworkDataDto— Result ofget_network():config+tokens(list ofTokenOnNetworkDto).
Use .model_dump() to export any model as a dict.
Data sources
YAML under token_network/data/:
networks.yaml— chain configtokens.yaml— token definitionstoken_networks.yaml— mainnet bindings (token + network → contract, decimals)token_networks_testnet.yaml— testnet bindings (used withNetworkAccessor(testnet=True))
Development
pip install -e ".[dev]"
pytest
Project details
Release history Release notifications | RSS feed
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 token_network-0.4.1.tar.gz.
File metadata
- Download URL: token_network-0.4.1.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abf894baf68c28f97aa1ea9444a539218bc144fbb8241baca3215f5705669ac7
|
|
| MD5 |
253af8f6b675bb05fd5678796cd23f61
|
|
| BLAKE2b-256 |
4526f976ce15f26c2964b52ad29747af91c58c8d818aaa0db30bdde43965c7c8
|
File details
Details for the file token_network-0.4.1-py3-none-any.whl.
File metadata
- Download URL: token_network-0.4.1-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a12fbb8fc23f0792ceb3cd3d249b92deb0faa36bf9793cc50ca931a43cce7292
|
|
| MD5 |
fb072bb607d2290204a82e690cea678c
|
|
| BLAKE2b-256 |
2a4668b4381eaa3c47b67e1447e416477d9c827f34aa276d8d27d5da01506ac3
|