diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml new file mode 100644 index 0000000..c71d502 --- /dev/null +++ b/.github/workflows/examples.yml @@ -0,0 +1,32 @@ +name: Running Examples + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install locally + run: | + pip install -e . + + - name: Run all Examples + run: | + for example in examples/*.py; do + python3 "$example" + done diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml index cfe0b35..9da69e4 100644 --- a/.github/workflows/pypi.yml +++ b/.github/workflows/pypi.yml @@ -15,7 +15,8 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: "3.x" + python-version: "3.10" + - name: Install pypa/build run: >- python3 -m diff --git a/.github/workflows/ruff-lint.yml b/.github/workflows/ruff-lint.yml index 593a0a2..cf35890 100644 --- a/.github/workflows/ruff-lint.yml +++ b/.github/workflows/ruff-lint.yml @@ -13,4 +13,4 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: chartboost/ruff-action@v1 + - uses: astral-sh/ruff-action@v3 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c3f919c..56e9355 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,9 +17,9 @@ jobs: uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: '3.8' + python-version: '3.10' - name: Install locally run: | diff --git a/examples/example_multisig.py b/examples/example_multisig.py deleted file mode 100644 index 40ede65..0000000 --- a/examples/example_multisig.py +++ /dev/null @@ -1,18 +0,0 @@ -from pactus.crypto.bls.signature import Signature - - -def main() -> None: - sig1 = Signature.from_string( - "a628a8709fe00366d7150244447cc43e8637d76a20674b006b00f7a61109dab53ba5f1f66cd07219fd1e4a6bc7299d2d" - ) - sig2 = Signature.from_string( - "b0d544e501408283ac11ca8ae180f0991349252cc76f9db72011ea4917eca87d4640bcf3fab7b0ab95e9b94f05113587" - ) - - sig3 = Signature.aggregate([sig1, sig2]) - - print(f"{sig3.string()}") - - -if __name__ == "__main__": - main() diff --git a/examples/example_transfer_transaction_bls.py b/examples/example_transfer_transaction_bls.py index cf6cbc6..d9b4926 100644 --- a/examples/example_transfer_transaction_bls.py +++ b/examples/example_transfer_transaction_bls.py @@ -2,7 +2,7 @@ from pactus.crypto.address import Address from pactus.crypto.bls.private_key import PrivateKey from pactus.transaction.transaction import Transaction -from pactus.types.amount import Amount +from pactus.amount import Amount def main() -> None: diff --git a/examples/example_transfer_transaction_ed25519.py b/examples/example_transfer_transaction_ed25519.py index 5fa72b8..c89abe3 100644 --- a/examples/example_transfer_transaction_ed25519.py +++ b/examples/example_transfer_transaction_ed25519.py @@ -2,7 +2,7 @@ from pactus.crypto.address import Address from pactus.crypto.ed25519.private_key import PrivateKey from pactus.transaction.transaction import Transaction -from pactus.types.amount import Amount +from pactus.amount import Amount def main() -> None: diff --git a/examples/example_zmq.py b/examples/example_zmq.py index 7ade94c..bfc3a2e 100644 --- a/examples/example_zmq.py +++ b/examples/example_zmq.py @@ -5,7 +5,7 @@ def main() -> None: if len(sys.argv) < 2: print("Usage: python3 ./example_zmq.py [topic topic ...]") - sys.exit(1) + sys.exit(0) connect_to = sys.argv[1] topics = sys.argv[2:] diff --git a/pactus/types/amount.py b/pactus/amount.py similarity index 100% rename from pactus/types/amount.py rename to pactus/amount.py diff --git a/pactus/crypto/bls/bls12_381/bls_sig_g1.py b/pactus/crypto/bls/bls12_381/bls_sig_g1.py index deb33a4..6a7b7ed 100644 --- a/pactus/crypto/bls/bls12_381/bls_sig_g1.py +++ b/pactus/crypto/bls/bls12_381/bls_sig_g1.py @@ -75,9 +75,9 @@ def aggregate(sigs): # aggregate verification def aggregate_verify(pks, msgs, sig, ciphersuite): - assert len(pks) == len( - msgs - ), "FAIL: aggregate_verify needs same number of sigs and msgs" + assert len(pks) == len(msgs), ( + "FAIL: aggregate_verify needs same number of sigs and msgs" + ) if not subgroup_check_g1(sig): return False Ps = [None] * (1 + len(msgs)) @@ -103,9 +103,9 @@ def _agg_ver_nul(pks, msgs, sig, ciphersuite, ver_fn): # aggregate verification with message augmentation def _agg_ver_aug(pks, msgs, sig, ciphersuite, ver_fn): - assert len(pks) == len( - msgs - ), "FAIL: aggregate_verify_aug needs same number of sigs and msgs" + assert len(pks) == len(msgs), ( + "FAIL: aggregate_verify_aug needs same number of sigs and msgs" + ) msgs_aug = [serialize(pk, True) + msg for (pk, msg) in zip(pks, msgs)] return ver_fn(pks, msgs_aug, sig, ciphersuite) diff --git a/pactus/crypto/bls/bls12_381/bls_sig_g2.py b/pactus/crypto/bls/bls12_381/bls_sig_g2.py index 42e8d89..f38a12c 100644 --- a/pactus/crypto/bls/bls12_381/bls_sig_g2.py +++ b/pactus/crypto/bls/bls12_381/bls_sig_g2.py @@ -44,9 +44,9 @@ def verify(pk, sig, msg, ciphersuite): # aggregate verification def aggregate_verify(pks, msgs, sig, ciphersuite): - assert len(pks) == len( - msgs - ), "FAIL: aggregate_verify needs same number of sigs and msgs" + assert len(pks) == len(msgs), ( + "FAIL: aggregate_verify needs same number of sigs and msgs" + ) if not subgroup_check_g2(sig): return False Qs = [None] * (1 + len(msgs)) diff --git a/pactus/transaction/_payload.py b/pactus/transaction/_payload.py index 8d1c834..b5e348d 100644 --- a/pactus/transaction/_payload.py +++ b/pactus/transaction/_payload.py @@ -1,9 +1,9 @@ from abc import ABC, abstractmethod from enum import Enum +from pactus.amount import Amount from pactus.crypto.address import Address from pactus.encoding import encoding -from pactus.types.amount import Amount class PayloadType(Enum): diff --git a/pactus/transaction/transaction.py b/pactus/transaction/transaction.py index bbdcd10..039f027 100644 --- a/pactus/transaction/transaction.py +++ b/pactus/transaction/transaction.py @@ -1,7 +1,7 @@ +from pactus.amount import Amount from pactus.crypto.address import Address from pactus.crypto.private_key import PrivateKey from pactus.encoding import encoding -from pactus.types.amount import Amount from ._payload import ( BondPayload, diff --git a/pactus/types/__init__.py b/pactus/types/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/setup.py b/setup.py index 83422c1..b11895c 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ URL = "https://github.com/pactus-project/python-sdk" # Package dependencies -REQUIRED = ["ripemd-hash", "grpcio", "grpcio-tools", "cryptography>=43.0"] +REQUIRED = ["ripemd-hash", "grpcio", "grpcio-tools", "cryptography>=43.0", "zmq"] CLASSIFIERS = [ "Development Status :: 5 - Production/Stable", diff --git a/tests/test_amount.py b/tests/test_amount.py index 95422a7..0bb8826 100644 --- a/tests/test_amount.py +++ b/tests/test_amount.py @@ -1,6 +1,6 @@ import unittest -from pactus.types.amount import NANO_PAC_PER_PAC, Amount +from pactus.amount import NANO_PAC_PER_PAC, Amount class TestAmount(unittest.TestCase): diff --git a/tests/test_transaction.py b/tests/test_transaction.py index 0df42d8..7a465c6 100644 --- a/tests/test_transaction.py +++ b/tests/test_transaction.py @@ -3,7 +3,7 @@ from pactus.crypto.address import Address from pactus.crypto.bls.private_key import PrivateKey from pactus.transaction.transaction import Transaction -from pactus.types.amount import Amount +from pactus.amount import Amount class TestTransaction(unittest.TestCase):