Releases: FrankC01/pysui
Releases · FrankC01/pysui
Release list
Release 0.98.0
[0.98.0] - 2026-04-13
Added
- Wallet adds
coinscommand to print summary of each coin type owned by address. - Begin refactoring the GraphQL and gRPC clients for uniform usage
SuiGQLClient(synchronous GraphQL client) deprecated since 0.98.0; useclient_factory(PysuiConfiguration())which returns an async client; targeted for removal in v1.0.0- Added
PysuiClientabstract base class (sui_common/client.py) as shared interface for all async clients - Moved
TransactionConstraintstosui_common/sui_txn_types.py; backwards-compat re-export kept inpgql_types.py - Added
client_factory(pysui_config, *, group_name=None, protocol=None)insui_common/factory.py; dispatches toAsyncSuiGQLClientorSuiGrpcClientbased on active group protocol - Exposed
PysuiClient,GroupProtocol, andclient_factoryfrom top-levelpysuipackage SuiConfig(JSON-RPC config),SuiClientsync/async (JSON-RPC),SuiGQLClient(sync GraphQL), andSuiTransaction(sync GraphQL) markedDeprecationWarningsince 0.98.0; targeted for removal in v1.0.0- Removed live-node integration tests (
test_argprep_sync.py,test_argprep_async.py,test_utils.py) and their conftest fixtures; integration test strategy will be rethought for v0.99.0 - Added
tests/test_factory.pywith 6 offline unit tests coveringclient_factorydispatch, error cases, and top-levelpysuiexports; no network required
Release 0.97.0
Added
sui_prot_versions.pyutility to list current protocol id for each profile (i.e. devnet, etc.). In repo only- Support for Sui Address coin balance. See Mysten changes here
- GraphQL Query:
GetAddressCoinBalance,GetAddressCoinBalances(deprecatesGetBalanceandGetAllCoinBalancesqueries) - gRPC Request:
GetAddressCoinBalance,GetAddressCoinBalances(deprecatesGetBalanceandGetAllCoinBalancesrequests) - new pysui PTB call (GraphQL and gRPC)
balance_fromWithdrawsCoin<T>from address balance and returnsCoin<T> - GraphQL and gRPC: Transaction support for paying gas from account balance
client.transaction(use_account_for_gas=True)orawait client.transaction(use_account_for_gas=True)to enabletxdict = txer.build_sign_with_account_gas()ortxdict = await txer.build_sign_with_account_gas()
- GraphQL Query:
Example (GraphQL):
def handle_result(result: SuiRpcResult) -> SuiRpcResult:
"""."""
if result.is_ok():
if hasattr(result.result_data, "to_json"):
print(result.result_data.to_json(indent=2))
else:
print(result.result_data)
else:
print(result.result_string)
if result.result_data and hasattr(result.result_data, "to_json"):
print(result.result_data.to_json(indent=2))
else:
print(result.result_data)
return result
def do_sui_coin_to_account(client: SyncGqlClient):
"""Moves Sui mists to an account."""
# Print before
print("Before Sui coin balances")
do_address_balance(client)
txer: SuiTransaction = client.transaction()
# Pull amount from transaction Gas
scres = txer.split_coin(coin=txer.gas, amounts=[1_000_000_000])
txer.move_call(
target="0x2::coin::send_funds",
type_arguments=["0x2::sui::SUI"],
arguments=[scres, client.config.active_address],
)
# Uncomment to dry run
handle_result(
client.execute_query_node(
with_node=qn.DryRunTransactionKind(
tx_kind=txer.raw_kind(),
tx_meta={"sender": client.config.active_address},
do_gas_selection=True,
)
)
)
# Uncomment to Execute
# txdict = txer.build_and_sign()
# result = client.execute_query_node(with_node=qn.ExecuteTransaction(**txdict))
# if result.is_ok():
# print("After transfer to address Sui coin balances")
# do_address_balance(client)
def do_account_to_sui_coin(client: SyncGqlClient):
"""Moves account balance to Sui coin and transfer to current address.
Execution, vs. DryRun, Execution also demonstrates funding the transaction with sender account balance vs. gas coins.
"""
# If set_balance is None, will use the total account balance
set_balance: int = 1000000
# Get the current balance
curr_balance_res = client.execute_query_node(
with_node=qn.GetAddressCoinBalance(owner=client.config.active_address)
)
# Validate existing funds exist.
if curr_balance_res.is_ok():
if curr_balance_res.result_data.balance.address_balance is None:
raise ValueError(f"{client.config.active_address} Has no account balance")
if not set_balance:
set_balance = curr_balance_res.result_data.balance.address_balance
else:
if set_balance > curr_balance_res.result_data.balance.address_balance:
raise ValueError(
f"{set_balance} exceeds existing address balance of {curr_balance_res.result_data.balance.address_balance}"
)
# Enable transaction to use account balance for gas payment
txer: SuiTransaction = client.transaction(use_account_for_gas=True)
coin = txer.balance_from(source=FundsSource.SENDER, amount=set_balance)
txer.transfer_objects(transfers=[coin], recipient=client.config.active_address)
# Uncomment to dry run
# As we are using the address balance to pay for transaction
# we want to get an estimate that reflects that, so setting `do_gas_selection=True` does
# that.
handle_result(
client.execute_query_node(
with_node=qn.DryRunTransactionKind(
tx_kind=txer.raw_kind(),
tx_meta={"sender": client.config.active_address},
do_gas_selection=True,
)
)
)
# Uncomment to Execute using the new build and signing method
# txdict = txer.build_sign_with_account_gas()
# handle_result(
# client.execute_query_node(with_node=qn.ExecuteTransaction(**txdict))
# )Fixed
Changed
- gRPC: Updated protos
Release 0.96.0
[0.96.0] - 2026-03-04
Added
- GraphQL:
maxMultiGetSizeto serviceConfig (viaclient.rpc_config().serviceConfig) - GraphQL: Added support for new Sui Move package scheme for publishing
- gRPC: Added support for new Sui Move package scheme for publishing
Fixed
- GraphQL: Removed 'error' field from immediate Simulate and Execute results.
Release 0.95.0
[0.95.0] - 2026-01-15
Added
Fixed
Changed
- gRPC: Updated Mysten gRPC protobuffs
- GraphQL: Enabled
skip_checksanddo_gas_selectiononDryRunTransaction - GraphQL: Enabled
skip_checksanddo_gas_selectiononDryRunTransactionKind
Removed
Release 0.94.0
[0.94.0] - 2025-12-11
Added
- enhancement Support gRPC archive transactions
- enhancement GraphQL query: GetObjectsForType
Fixed
- bug pysui
walletnot creating transaction from client - typo's in
splayutility help documentation
Changed
- Updated Mysten gRPC protobuffs
- GraphQL: Mysten removed events and timestamp from transaction simulation results, defaults to None in
DryRunResultTransactionGQL
Release 0.93.0
[0.93.0] - 2025-11-11
Breaking Changes
GraphQL and gRPC: Transactions are built from client being used. SuiTransaction, and variants,
will now fail if constructed directly.
GraphQL: For DryRunTransactionKind, argument name changed from tx_bytestr to tx_kind
Added
- GraphQL:
atRiskandexchangeRateTableAddressto Validator - GraphQL:
GetValidatorExchangeRates. Given a validator's exchange object, return rate information by Epoch
Fixed
- bug SerialTransactionExecutor was not fetchinig current gas price
Changed
- change dropped
v2betaprotos - change Updated
smashandsplayutilities to GraphQL Beta - change Added exception in standalone transaction construction.
Must use appropriate client (GraphQL or gRPC)transaction(...)method. Exception thrown otherwise. - GraphQL: Rename
tx_bytestrtotx_kindin DryRunTransactionKind - Updated v2 protobuffs from Mysten for gRPC
Removed
- gRPC: GetValidatorApy removed, apy field not longer available
Release 0.92.0
[0.92.0] - 2025-10-16
ANNOUNCE: In this release JSON RPC support is EOL. Strongly advised to move to pysui gRPC or GraphQL.
- You will need to update the GraphQL URLs in PysuiConfig.json at a minimum. See pysui-graphql
Added
v2gRPC protos included,v2betato be sunset
Fixed
- bug gRPC: 'finality' dropped from field_mask (read_mask)
- bug JSON RPC: PR broke
connectivity. - GraphQL Mysten fixed issue with fetching 0x2::sui::SUI by address in testnet
Changed
- gRPC LiveDataService renamed to StateService for
v2protos - gRPC SimulateTransaction moved to TransactionService for
v2protos - DryRunTransactionKind tx_meta requires 'sender' set. This is due to a constraint in Sui GraphQL.
v0.91.0: Release 0.91.0 (#357)
[0.91.0] - 2025-10-02
Breaking Changes
The transition from GraphQL ALPHA to GraphQL BETA introduced a number of input and output changes.
- You will need to update the GraphQL URLs in PysuiConfig.json at a minimum. See pysui-graphql
- Be sure to test thoroughly and report any issues on
pysuigithub or our discord channel found in README.md.
Added
- Support for Mysten GraphQL Beta
Fixed
- bug GraphQL change to httpx kwargs, was failing on Async 'proxies'
Changed
Removed
Release 0.90.1
[0.90.1] - 2025-09-22
Bumped dependentices version, if cloning or branching from repo recommended to re-run pip install -r requirements.txt
Added
Fixed
- bug GraphQL change to httpx kwargs, was failing on Async 'proxies'
Changed
Removed
Release 0.90.0
[0.90.0] - 2025-09-13
Bumped dependentices version, if cloning or branching from repo recommended to re-run pip install -r requirements.txt
Added
Fixed
- bug JSON RPC: Client get_gas_from_faucet not handling exception
- bug Typo in global constants
- bug Fix alias length validation logic in JSON RPC configuration operation