pbcabi/pbcabi/__init__.py
Jon Michael Aanes 959ceff255
Some checks failed
Verify Python project can be installed, loaded and have version checked / Test (push) Waiting to run
Run Python tests (through Pytest) / Test (push) Has been cancelled
Ruff
2025-05-21 00:55:57 +02:00

49 lines
1.5 KiB
Python

"""# Partisia Blockchain ABI client.
Unofficial utility library for parsing and processing the Partisia Blockchain ABI Format.
The format is specified here: [Partisia Blockchain's ABI format](https://partisiablockchain.gitlab.io/documentation/smart-contracts/smart-contract-binary-formats.html).
This library is not officially associated with Partisia Blockchain nor Partisia
Group ApS.
## Example usage
This example is based upon the [Token Contract example contract](https://gitlab.com/partisiablockchain/language/example-contracts).
It assumes a compiled ABI in `token.abi` and a blockchain state stored in `token_state.bin`.
```py
# Imports
from pbcabi.binaryreader import BinaryReader
import pbcabi.model
# Read ABI
with open('token.abi', 'rb') as f:
TOKEN_ABI = pbcabi.model.FileAbi.read_from(BinaryReader(f.read()))
with open('token_state.bin', 'rb') as f:
state_bytes = f.read()
# Read structure TokenState from state_bytes
token_state = TOKEN_ABI.contract.read_state('TokenState', BinaryReader(state_bytes))
# Inspect state as mostly Python-native types.
my_address = BlockchainAddress.from_hex_hash("00e72e44eab933faaf1fd4ce94bb57e08bff98a1ed")
print(token_state['name'])
> MyToken
print(token_state['balances'][my_address])
> 213112
```
"""
__all__ = ['model', 'binaryreader', '__version__']
from . import binaryreader, model
from ._version import __version__
def get_version():
"""Returns a PEP 386-compliant version number from __version__."""
return __version__