diff --git a/setup.py b/setup.py index 4ec5a15..2c052d8 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python -# # WARNING # # THIS IS AN AUTOGENERATED FILE. @@ -12,9 +10,55 @@ from setuptools import setup PACKAGE_NAME = 'pbcabi' -with open('README.md') as f: - readme = f.read() +PACKAGE_DESCRIPTION = """ +# Partisia Blockchain ABI client. +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).. + +## 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 +``` + +## Legalese + +This project is licensed under MIT Licence, see `LICENSE` for full text. + +This project is not associated with, nor supported by any of: + +- Partisia Applications A/S +- Partisia Infrastructure A/S +- Partisia Blockchain Foundation + +Use at own risk.""" + +PACKAGE_DESCRIPTION_SHORT='Utility library for parsing and processing the Partisia Blockchain ABI Format.' def parse_version_file(text: str) -> str: match = re.match(r'^__version__\s*=\s*(["\'])([\d\.]+)\1$', text) @@ -37,16 +81,6 @@ def read_requirements(path: str) -> list[str]: return parse_requirements(f.read()) -def determine_short_description(readme: str) -> str: - readme = re.sub(r'#+[^\n]*\n+', '', readme) - m = re.search(r'^\s*(\w+[\w\s,`+-]+\.)', readme) - try: - return m.group(1) - except AttributeError as err: - msg = f'Could not determine short description: {readme}' - raise Exception(msg) from err - - REQUIREMENTS_MAIN = """ enforce_typing frozendict @@ -60,8 +94,8 @@ pytest setup( name=PACKAGE_NAME, version=version, - description=determine_short_description(readme), - long_description=readme, + description=PACKAGE_DESCRIPTION_SHORT, + long_description=PACKAGE_DESCRIPTION, long_description_content_type='text/markdown', author='Jmaa', author_email='jonjmaa@gmail.com',