1
0
pbcabi/setup.py

110 lines
2.8 KiB
Python
Raw Normal View History

2024-05-27 19:55:47 +00:00
# WARNING
#
# THIS IS AN AUTOGENERATED FILE.
#
# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN.
2024-04-08 11:44:47 +00:00
import re
2023-06-20 09:47:20 +00:00
2024-04-08 11:44:47 +00:00
from setuptools import setup
2023-06-20 09:47:20 +00:00
2024-05-27 19:55:47 +00:00
PACKAGE_NAME = 'pbcabi'
2024-04-08 11:44:47 +00:00
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))
2024-04-08 11:44:47 +00:00
# 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.'
2024-05-29 18:29:10 +00:00
def parse_version_file(text: str) -> str:
2024-04-08 11:44:47 +00:00
match = re.match(r'^__version__\s*=\s*(["\'])([\d\.]+)\1$', text)
2024-05-29 18:29:10 +00:00
if match is None:
msg = 'Malformed _version.py file!'
raise Exception(msg)
return match.group(2)
2024-04-08 11:44:47 +00:00
2024-05-29 18:29:10 +00:00
with open(PACKAGE_NAME + '/_version.py') as f:
version = parse_version_file(f.read())
2024-04-08 11:44:47 +00:00
2024-05-04 22:02:50 +00:00
def parse_requirements(text: str) -> list[str]:
2024-05-27 19:55:47 +00:00
return text.strip().split('\n')
2024-05-04 22:02:50 +00:00
2024-05-29 18:29:10 +00:00
def read_requirements(path: str) -> list[str]:
2024-04-08 11:44:47 +00:00
with open(path) as f:
2024-05-04 22:02:50 +00:00
return parse_requirements(f.read())
2024-04-08 11:44:47 +00:00
2024-05-04 22:02:50 +00:00
REQUIREMENTS_MAIN = """
enforce_typing
frozendict
"""
REQUIREMENTS_TEST = """
pytest
"""
2024-05-27 19:55:47 +00:00
2024-04-08 11:44:47 +00:00
setup(
name=PACKAGE_NAME,
version=version,
description=PACKAGE_DESCRIPTION_SHORT,
long_description=PACKAGE_DESCRIPTION,
2024-05-27 19:55:47 +00:00
long_description_content_type='text/markdown',
author='Jmaa',
author_email='jonjmaa@gmail.com',
url='https://gitfub.space/Jmaa/' + PACKAGE_NAME,
2024-04-08 11:44:47 +00:00
packages=[PACKAGE_NAME],
2024-05-04 22:02:50 +00:00
install_requires=parse_requirements(REQUIREMENTS_MAIN),
2024-04-08 11:44:47 +00:00
extras_require={
2024-05-27 19:55:47 +00:00
'test': parse_requirements(REQUIREMENTS_TEST),
2024-04-08 11:44:47 +00:00
},
2024-05-27 19:55:47 +00:00
python_requires='>=3.9',
2024-04-08 11:44:47 +00:00
)