Compare commits

..

15 Commits

Author SHA1 Message Date
d30b52879b 🤖 Bumped version to 0.1.10
All checks were successful
Package Python / Package-Python-And-Publish (push) Successful in 25s
Verify Python project can be installed, loaded and have version checked / Test (push) Successful in 23s
Run Python tests (through Pytest) / Test (push) Successful in 26s
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-06-04 21:30:34 +02:00
46821eb5d3 🤖 Repository layout updated to latest version
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-06-04 21:30:18 +02:00
fad06ffffc 🤖 Bumped version to 0.1.9
All checks were successful
Package Python / Package-Python-And-Publish (push) Successful in 25s
Run Python tests (through Pytest) / Test (push) Successful in 25s
Verify Python project can be installed, loaded and have version checked / Test (push) Successful in 24s
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-27 00:32:20 +02:00
c3b0ae8e51 🤖 Repository layout updated to latest version
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-27 00:32:08 +02:00
96d85ba728 🤖 Bumped version to 0.1.8
All checks were successful
Package Python / Package-Python-And-Publish (push) Successful in 25s
Run Python tests (through Pytest) / Test (push) Successful in 25s
Verify Python project can be installed, loaded and have version checked / Test (push) Successful in 23s
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-21 12:29:20 +02:00
cc1aa877d0 🤖 Repository layout updated to latest version
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-21 12:29:13 +02:00
f72880f40c 🤖 Bumped version to 0.1.7
All checks were successful
Package Python / Package (push) Successful in 25s
Run Python tests (through Pytest) / Test (push) Successful in 25s
Verify Python project can be installed, loaded and have version checked / Test (push) Successful in 23s
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-21 00:57:02 +02:00
73f41e1e24 🤖 Bumped version to 0.1.6
Some checks are pending
Run Python tests (through Pytest) / Test (push) Waiting to run
Verify Python project can be installed, loaded and have version checked / Test (push) Waiting to run
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-21 00:56:53 +02:00
261251a9c7 🤖 Repository layout updated to latest version
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-21 00:56:53 +02:00
6ed0a589c2 🤖 Repository layout updated to latest version
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-21 00:56:53 +02:00
3dd6579e1e 🤖 Repository layout updated to latest version
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-05-21 00:56:53 +02:00
Jon Michael Aanes
f5d648c595 Test sender authentication v2
All checks were successful
Run Python tests (through Pytest) / Test (push) Successful in 25s
Verify Python project can be installed, loaded and have version checked / Test (push) Successful in 23s
2025-05-01 16:23:27 +02:00
Jon Michael Aanes
86fa09e6fd Test sender authentication 2025-05-01 16:14:53 +02:00
77216001e5 🤖 Bumped version to 0.1.5
All checks were successful
Package Python / Package (push) Successful in 24s
Run Python tests (through Pytest) / Test (push) Successful in 24s
Verify Python project can be installed, loaded and have version checked / Test (push) Successful in 23s
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-04-13 18:47:12 +02:00
20a2f7a672 🤖 Repository layout updated to latest version
This commit was automatically generated by [a script](https://gitfub.space/Jmaa/repo-manager)
2025-04-13 18:46:58 +02:00
10 changed files with 87 additions and 55 deletions

View File

@ -1,3 +1,7 @@
# WARNING!
# THIS IS AN AUTOGENERATED FILE!
# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN!
name: Package Python name: Package Python
on: on:
push: push:
@ -6,11 +10,24 @@ on:
paths-ignore: ['README.md', '.gitignore', 'LICENSE', 'CONVENTIONS.md', 'ruff.toml'] paths-ignore: ['README.md', '.gitignore', 'LICENSE', 'CONVENTIONS.md', 'ruff.toml']
jobs: jobs:
Package: Package-Python-And-Publish:
uses: jmaa/workflows/.gitea/workflows/python-package.yaml@v6.21 runs-on: ubuntu-latest
with: container:
REGISTRY_DOMAIN: gitfub.space image: node:21-bookworm
REGISTRY_ORGANIZATION: jmaa steps:
secrets: - name: Setting up Python ${{ env.PYTHON_VERSION }} for ${{runner.arch}} ${{runner.os}}
PIPY_REPO_USER: ${{ secrets.PIPY_REPO_USER }} run: |
PIPY_REPO_PASS: ${{ secrets.PIPY_REPO_PASS }} apt-get update
apt-get install -y python3 python3-pip
- name: Check out repository code
if: success()
uses: actions/checkout@v3
- name: Installing Python Dependencies
if: success()
run: python3 -m pip install --upgrade pip setuptools wheel build twine pytest --break-system-packages
- name: Build
if: success()
run: python3 -m build
- name: Publish
if: success()
run: python3 -m twine upload --repository-url "https://gitfub.space/api/packages/jmaa/pypi" -u ${{ secrets.PIPY_REPO_USER }} -p ${{ secrets.PIPY_REPO_PASS }} dist/*

View File

@ -1,3 +1,7 @@
# WARNING!
# THIS IS AN AUTOGENERATED FILE!
# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN!
name: Run Python tests (through Pytest) name: Run Python tests (through Pytest)
on: on:

View File

@ -1,3 +1,7 @@
# WARNING!
# THIS IS AN AUTOGENERATED FILE!
# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN!
name: Verify Python project can be installed, loaded and have version checked name: Verify Python project can be installed, loaded and have version checked
on: on:

1
.gitignore vendored
View File

@ -18,4 +18,3 @@ __pycache__/
/.coverage /.coverage
/.hypothesis/ /.hypothesis/
/htmlcov/ /htmlcov/
.aider*

View File

@ -1,3 +1,14 @@
<!-- WARNING! -->
<!-- THIS IS AN AUTOGENERATED FILE! -->
<!-- MANUAL CHANGES CAN AND WILL BE OVERWRITTEN! -->
# Conventions
When contributing code to this project, you MUST follow the requirements
specified here.
## Code Conventions
When contributing code to this project, you MUST follow these principles: When contributing code to this project, you MUST follow these principles:
- Code should be easy to read and understand. - Code should be easy to read and understand.
@ -13,3 +24,13 @@ When contributing code to this project, you MUST follow these principles:
- Documentation should document semantics, not syntax. - Documentation should document semantics, not syntax.
- Prefer importing modules, not individual items from modules. - Prefer importing modules, not individual items from modules.
- Do not use f-strings in logging statements. - Do not use f-strings in logging statements.
- Loop variables and walrus-expression-variables should be deleted when
unneeded to keep scope clean, and to avoid accidental use.
## Testing
When contributing test to this project, you MUST follow these principles:
- Do not use any testing libraries other than `pytest`.
- Mocking is the root of all evil. Writing your own stubs is much more
preferable.

View File

@ -1,7 +1,6 @@
<!--- WARNING ---> <!-- WARNING! -->
<!--- THIS IS AN AUTO-GENERATED FILE ---> <!-- THIS IS AN AUTOGENERATED FILE! -->
<!--- MANUAL CHANGES CAN AND WILL BE OVERWRITTEN ---> <!-- MANUAL CHANGES CAN AND WILL BE OVERWRITTEN! -->
# Partisia Blockchain Client # Partisia Blockchain Client

View File

@ -68,40 +68,6 @@ class Balances:
@dataclasses.dataclass(frozen=True) @dataclasses.dataclass(frozen=True)
class PbcClient: class PbcClient:
"""
PbcClient provides an interface to interact with the Partisia Blockchain.
It supports various operations such as sending transactions (both raw and signed),
retrieving account balances, fetching blockchain metadata (e.g., chain ID, nonces),
and obtaining contract state details.
Attributes:
session (requests.Session): The HTTP session used for all network communications.
Methods:
send_transaction(contract_address: str, rpc: bytes, gas_cost: int)
Sends a transaction request to the blockchain.
send_signed_transaction(signed_transaction: SignedTransaction)
Dispatches a pre-signed transaction to the blockchain.
get_account_balances(address: str) -> Balances
Retrieves the balance information for the given account.
get_chain_id() -> str
Returns the blockchain's chain identifier.
get_sender_authentication_nonce() -> int
Obtains the nonce for sender authentication.
get_nonce_for_account(address: str) -> int
Retrieves the nonce for the specified account.
get_contract_state(address: str) -> tuple[dict, datetime.datetime]
Fetches the state and timestamp of a given contract.
... (other public methods are similarly available)
"""
session: requests.Session session: requests.Session
sender_authentication: SenderAuthentication | None = None sender_authentication: SenderAuthentication | None = None
hostname: str = HOSTNAME_MAINNET hostname: str = HOSTNAME_MAINNET

View File

@ -1 +1 @@
__version__ = '0.1.4' __version__ = '0.1.10'

View File

@ -1,10 +1,9 @@
# WARNING # WARNING!
# # THIS IS AN AUTOGENERATED FILE!
# THIS IS AN AUTOGENERATED FILE. # MANUAL CHANGES CAN AND WILL BE OVERWRITTEN!
#
# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN.
import re import re
from pathlib import Path
from setuptools import setup from setuptools import setup
@ -24,13 +23,28 @@ Unofficial library for reading contract states from Partisia Blockchain.""".stri
def parse_version_file(text: str) -> str: def parse_version_file(text: str) -> str:
match = re.match(r'^__version__\s*=\s*(["\'])([\d\.]+)\1$', text) text = re.sub('^#.*', '', text, flags=re.MULTILINE)
match = re.match(r'^\s*__version__\s*=\s*(["\'])([\d\.]+)\1$', text)
if match is None: if match is None:
msg = 'Malformed _version.py file!' msg = 'Malformed _version.py file!'
raise Exception(msg) raise Exception(msg)
return match.group(2) return match.group(2)
def find_python_packages() -> list[str]:
"""
Find all python packages. (Directories containing __init__.py files.)
"""
root_path = Path(PACKAGE_NAME)
packages: set[str] = set([PACKAGE_NAME])
# Search recursively
for init_file in root_path.rglob('__init__.py'):
packages.add(str(init_file.parent).replace('/', '.'))
print(f'Found following packages: {packages}')
return sorted(packages)
with open(PACKAGE_NAME + '/_version.py') as f: with open(PACKAGE_NAME + '/_version.py') as f:
version = parse_version_file(f.read()) version = parse_version_file(f.read())
@ -51,7 +65,7 @@ setup(
author='Jon Michael Aanes', author='Jon Michael Aanes',
author_email='jonjmaa@gmail.com', author_email='jonjmaa@gmail.com',
url='https://gitfub.space/Jmaa/' + PACKAGE_NAME, url='https://gitfub.space/Jmaa/' + PACKAGE_NAME,
packages=[PACKAGE_NAME], packages=find_python_packages(),
install_requires=REQUIREMENTS_MAIN, install_requires=REQUIREMENTS_MAIN,
extras_require={ extras_require={
'test': REQUIREMENTS_TEST, 'test': REQUIREMENTS_TEST,

View File

@ -1,5 +1,13 @@
from pbc_client.crypto import SenderAuthentication, sign_transaction from pbc_client.crypto import SenderAuthentication, sign_transaction
from pbc_client.pbc_types import Address
def test_sender_authentication():
sender_authentication = SenderAuthentication('aa')
assert str(sender_authentication.sender_address()) == '00e72e44eab933faaf1fd4ce94bb57e08bff98a1ed'
def test_sender_authentication_2():
sender_authentication = SenderAuthentication('2')
assert str(sender_authentication.sender_address()) =='00b2e734b5d8da089318d0d2b076c19f59c450855a'
def test_sign(): def test_sign():
sender_authentication = SenderAuthentication('01') sender_authentication = SenderAuthentication('01')