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
2024-07-08 18:22:14 +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
2024-07-08 18:22:14 +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
2024-07-09 21:59:07 +00:00
Use at own risk .
# License
` ` `
MIT License
2024-07-09 22:08:54 +00:00
Copyright ( c ) 2023 - 2024 Jon Michael Aanes
2024-07-09 21:59:07 +00:00
Permission is hereby granted , free of charge , to any person obtaining a copy
of this software and associated documentation files ( the " Software " ) , to deal
in the Software without restriction , including without limitation the rights
to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
copies of the Software , and to permit persons to whom the Software is
furnished to do so , subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software .
THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE .
` ` ` """
2024-07-08 18:22:14 +00:00
2024-07-10 21:39:53 +00:00
PACKAGE_DESCRIPTION_SHORT = (
2024-07-10 21:40:32 +00:00
' Utility library for parsing and processing the Partisia Blockchain ABI Format. '
2024-07-10 21:39:53 +00:00
)
2024-06-03 20:37:41 +00:00
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-06-03 20:37:41 +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-06-03 20:37:41 +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
2024-07-09 21:59:07 +00:00
frozendict """
2024-05-04 22:02:50 +00:00
REQUIREMENTS_TEST = """
2024-07-09 21:59:07 +00:00
pytest """
2024-05-04 22:02:50 +00:00
2024-05-27 19:55:47 +00:00
2024-04-08 11:44:47 +00:00
setup (
name = PACKAGE_NAME ,
version = version ,
2024-07-08 18:22:14 +00:00
description = PACKAGE_DESCRIPTION_SHORT ,
long_description = PACKAGE_DESCRIPTION ,
2024-05-27 19:55:47 +00:00
long_description_content_type = ' text/markdown ' ,
2024-07-09 21:59:07 +00:00
author = ' Jon Michael Aanes ' ,
2024-05-27 19:55:47 +00:00
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
)