balancerpy
Python package for Balancer V2 modelling
🔗 SPDX-Anchor: anchorregistry.ai/AR-2026-6pDkj46
Install
To install package:
> git clone https://github.com/defipy-devs/balancerpy
> pip install .
or
> pip install BalancerPy
Balancer
- See test notebook for basic usage
from balancerpy import *
user_nm = 'user_test'
amt_dai = 10000000
denorm_wt_dai = 10
amt_eth = 67738.6361731024
denorm_wt_eth = 40
init_pool_shares = 100
dai = ERC20("DAI", "0x111")
dai.deposit(None, amt_dai)
weth = ERC20("WETH", "0x09")
weth.deposit(None, amt_eth)
bgrp = BalancerVault()
bgrp.add_token(dai, denorm_wt_dai)
bgrp.add_token(weth, denorm_wt_eth)
bfactory = BalancerFactory("WETH pool factory", "0x2")
exchg_data = BalancerExchangeData(vault = bgrp, symbol="LP", address="0x011")
lp = bfactory.deploy(exchg_data)
Join().apply(lp, user_nm, init_pool_shares)
lp.summary()
OUTPUT:
Balancer Exchange: DAI-WETH (LP)
Reserves: DAI = 10000000, WETH = 67738.6361731024
Weights: DAI = 0.2, WETH = 0.8
Pool Shares: 100
Swap (out-given-in)
amt_tkn_in = 10000
tkn_in = dai
tkn_out = weth
res = Swap(Proc.SWAPOUT).apply(lp, tkn_in, tkn_out, user_nm, amt_tkn_in)
lp.summary()
print(f"{amt_tkn_in} {tkn_in.token_name} was swapped into {res['tkn_out_amt']} {tkn_out.token_name}")
OUTPUT:
Balancer Exchange: DAI-WETH (LP)
Reserves: DAI = 10010000, WETH = 67721.75437414162
Weights: DAI = 0.2, WETH = 0.8
Pool Shares: 100
10000 DAI was swapped into 16.881798960778035 WETH
Swap (out-given-in)
amt_tkn_out = 20
tkn_out = weth
tkn_in = dai
res = Swap(Proc.SWAPIN).apply(lp, tkn_in, tkn_out, user_nm, amt_tkn_out)
lp.summary()
print(f"{amt_tkn_out} {tkn_out.token_name} was swapped into {res['tkn_in_amt']} {tkn_in.token_name}")
OUTPUT:
Balancer Exchange: DAI-WETH (LP)
Reserves: DAI = 9998136.750149786, WETH = 67741.75437414162
Weights: DAI = 0.2, WETH = 0.8
Pool Shares: 100
20 WETH was swapped into 11863.249850213939 DAI
Testing
Run the full test suite from the repo root:
> python -m pytest python/test/ -v
Tests cover:
- Process: join, swap (exact-in/exact-out, price impact), add/remove liquidity (by token and by shares), exit pool
- Quotes: CWP share-to-amount and amount-to-share conversions with round-trip verification
- Math: all
BalancerMathstatic methods (spot price, out-given-in, in-given-out, pool/single token conversions)
Requirements
> pip install pytest
License
Licensed under the Apache License, Version 2.0.
See LICENSE and NOTICE for details.
Portions of this project may include code from third-party projects under compatible open-source licenses.
Metadata
Release files for BalancerPy 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| balancerpy-1.1.0.tar.gz | 24.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| balancerpy-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.3 kB
Release files / balancerpy-1.1.0.tar.gz
| Download URL | balancerpy-1.1.0.tar.gz |
|---|---|
| Size | 24.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f8343a9f8f4b3b416ca9d19ec554676d38dcbcad826ed57528eb55fb1b8c8e89
|
|
BLAKE2b-256 checksum How to use checksums |
8d3895fc04d7030fa1ae1ffca998f2d66b252585fecfc642157088ad12311002
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / balancerpy-1.1.0-py3-none-any.whl
| Download URL | balancerpy-1.1.0-py3-none-any.whl |
|---|---|
| Size | 39.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fcc484f53235bf571606157991216d5255b8462dcf3b2459fb06efbcbe63e908
|
|
BLAKE2b-256 checksum How to use checksums |
4d93a8644f5a64d18cb5271542c413686cea8162cc30b396a46e129fb0f69968
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|