From 05b935a9644d820948b8afc7478ac16ac35b7cae Mon Sep 17 00:00:00 2001 From: "andrey.torsunov" Date: Thu, 18 Apr 2024 14:20:22 +0300 Subject: [PATCH] style: reformat examples/ --- .github/workflows/python-package.yml | 15 +-- examples/tokens/jetton/mint.py | 104 +++++++++++----- examples/tokens/jetton/transfer.py | 53 +++++--- examples/tokens/nft/mint.py | 117 ++++++++++++------ examples/tokens/nft/transfer.py | 51 ++++++-- examples/types/cell.py | 10 +- examples/types/slice.py | 15 ++- examples/wallets/highload.py | 35 +++--- examples/wallets/multisig/deploy.py | 94 ++++++++++++-- .../wallets/multisig/offchain_signatures.py | 97 +++++++++++++-- .../wallets/multisig/onchain_signatures.py | 107 ++++++++++++++-- examples/wallets/wallet.py | 62 +++++++--- pyproject.toml | 4 +- 13 files changed, 583 insertions(+), 181 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 14a4e65..e7cdd36 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -16,7 +16,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.9", "3.10", "3.11"] + python-version: ["3.10", "3.11"] steps: - uses: actions/checkout@v3 @@ -27,14 +27,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install flake8 pytest - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - name: Lint with flake8 + python -m pip install ruff + - name: Lint with ruff run: | - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Test with pytest - run: | - pytest + ruff check . diff --git a/examples/tokens/jetton/mint.py b/examples/tokens/jetton/mint.py index 896b286..11d3523 100644 --- a/examples/tokens/jetton/mint.py +++ b/examples/tokens/jetton/mint.py @@ -1,13 +1,15 @@ -from tonsdk_ng.contract.token.ft import JettonMinter, JettonWallet from tonsdk_ng.contract import Address -from tonsdk_ng.utils import to_nano, bytes_to_b64str +from tonsdk_ng.contract.token.ft import JettonMinter, JettonWallet from tonsdk_ng.contract.wallet import Wallets, WalletVersionEnum +from tonsdk_ng.utils import bytes_to_b64str, to_nano def create_jetton_minter(): - minter = JettonMinter(admin_address=Address('admin address'), - jetton_content_uri='https://raw.githubusercontent.com/yungwine/pyton-lessons/master/lesson-6/token_data.json', - jetton_wallet_code_hex=JettonWallet.code) + minter = JettonMinter( + admin_address=Address("admin address"), + jetton_content_uri="https://raw.githubusercontent.com/yungwine/pyton-lessons/master/lesson-6/token_data.json", + jetton_wallet_code_hex=JettonWallet.code, + ) return minter @@ -15,8 +17,10 @@ def create_jetton_minter(): def create_mint_body(): minter = create_jetton_minter() - body = minter.create_mint_body(destination=Address('address'), - jetton_amount=to_nano(int('mint amount'), 'ton')) + body = minter.create_mint_body( + destination=Address("address"), + jetton_amount=to_nano(int("mint amount"), "ton"), + ) return body @@ -24,61 +28,97 @@ def create_change_owner_body(): minter = create_jetton_minter() body = minter.create_change_admin_body( - new_admin_address=Address('EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c')) + new_admin_address=Address( + "EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c" + ) + ) return body def create_burn_body(): body = JettonWallet().create_burn_body( - jetton_amount=to_nano(int('burn amount'), 'ton')) + jetton_amount=to_nano(int("burn amount"), "ton") + ) return body """your wallet mnemonics""" -mnemonics = ['always', 'crystal', 'grab', 'glance', 'cause', 'dismiss', 'answer', 'expose', 'once', 'session', - 'tunnel', 'topic', 'defense', 'such', 'army', 'smile', 'exhibit', 'misery', 'runway', 'tone', 'want', - 'primary', 'piano', 'language'] - -mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics(mnemonics=mnemonics, version=WalletVersionEnum.v3r2, - workchain=0) +mnemonics = [ + "always", + "crystal", + "grab", + "glance", + "cause", + "dismiss", + "answer", + "expose", + "once", + "session", + "tunnel", + "topic", + "defense", + "such", + "army", + "smile", + "exhibit", + "misery", + "runway", + "tone", + "want", + "primary", + "piano", + "language", +] + +mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics( + mnemonics=mnemonics, version=WalletVersionEnum.v3r2, workchain=0 +) """deploy jetton minter""" minter = create_jetton_minter() -collection_state_init = minter.create_state_init()['state_init'] +collection_state_init = minter.create_state_init()["state_init"] -query = wallet.create_transfer_message(to_addr=minter.address.to_string(), - amount=to_nano(0.02, 'ton'), - state_init=collection_state_init, - seqno=int('wallet seqno')) +query = wallet.create_transfer_message( + to_addr=minter.address.to_string(), + amount=to_nano(0.02, "ton"), + state_init=collection_state_init, + seqno=int("wallet seqno"), +) """mint tokens""" body = create_mint_body() minter = create_jetton_minter() -query = wallet.create_transfer_message(to_addr=minter.address.to_string(), - amount=to_nano(0.04, 'ton'), - seqno=int('wallet seqno'), - payload=body) +query = wallet.create_transfer_message( + to_addr=minter.address.to_string(), + amount=to_nano(0.04, "ton"), + seqno=int("wallet seqno"), + payload=body, +) """change owner address""" body = create_change_owner_body() minter = create_jetton_minter() -query = wallet.create_transfer_message(to_addr=minter.address.to_string(), - amount=to_nano(0.04, 'ton'), - seqno=int('wallet seqno'), - payload=body) +query = wallet.create_transfer_message( + to_addr=minter.address.to_string(), + amount=to_nano(0.04, "ton"), + seqno=int("wallet seqno"), + payload=body, +) """burn tokens""" body = create_burn_body() -query = wallet.create_transfer_message(to_addr='address of your jetton wallet', - amount=to_nano(0.04, 'ton'), - seqno=int('wallet seqno'), - payload=body) +query = wallet.create_transfer_message( + to_addr="address of your jetton wallet", + amount=to_nano(0.04, "ton"), + seqno=int("wallet seqno"), + payload=body, +) """then send boc to blockchain""" diff --git a/examples/tokens/jetton/transfer.py b/examples/tokens/jetton/transfer.py index 458890f..39d0140 100644 --- a/examples/tokens/jetton/transfer.py +++ b/examples/tokens/jetton/transfer.py @@ -1,26 +1,51 @@ from tonsdk_ng.contract.token.ft import JettonWallet -from tonsdk_ng.utils import to_nano, bytes_to_b64str, Address from tonsdk_ng.contract.wallet import Wallets, WalletVersionEnum - +from tonsdk_ng.utils import Address, bytes_to_b64str, to_nano """your wallet mnemonics""" -mnemonics = ['always', 'crystal', 'grab', 'glance', 'cause', 'dismiss', 'answer', 'expose', 'once', 'session', - 'tunnel', 'topic', 'defense', 'such', 'army', 'smile', 'exhibit', 'misery', 'runway', 'tone', 'want', - 'primary', 'piano', 'language'] -mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics(mnemonics=mnemonics, version=WalletVersionEnum.v3r2, - workchain=0) +mnemonics = [ + "always", + "crystal", + "grab", + "glance", + "cause", + "dismiss", + "answer", + "expose", + "once", + "session", + "tunnel", + "topic", + "defense", + "such", + "army", + "smile", + "exhibit", + "misery", + "runway", + "tone", + "want", + "primary", + "piano", + "language", +] +mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics( + mnemonics=mnemonics, version=WalletVersionEnum.v3r2, workchain=0 +) """transfer""" body = JettonWallet().create_transfer_body( - to_address=Address('address'), - jetton_amount=to_nano(float('jettons amount'), 'ton'), - ) + to_address=Address("address"), + jetton_amount=to_nano(float("jettons amount"), "ton"), +) -query = wallet.create_transfer_message(to_addr='your jetton wallet address', - amount=to_nano(0.1, 'ton'), - seqno=int('wallet seqno'), - payload=body) +query = wallet.create_transfer_message( + to_addr="your jetton wallet address", + amount=to_nano(0.1, "ton"), + seqno=int("wallet seqno"), + payload=body, +) """then send boc to blockchain""" boc = bytes_to_b64str(query["message"].to_boc(False)) diff --git a/examples/tokens/nft/mint.py b/examples/tokens/nft/mint.py index 2475f2d..2a187c6 100644 --- a/examples/tokens/nft/mint.py +++ b/examples/tokens/nft/mint.py @@ -1,7 +1,7 @@ -from tonsdk_ng.contract.token.nft import NFTCollection, NFTItem from tonsdk_ng.contract import Address -from tonsdk_ng.utils import to_nano, bytes_to_b64str +from tonsdk_ng.contract.token.nft import NFTCollection, NFTItem from tonsdk_ng.contract.wallet import Wallets, WalletVersionEnum +from tonsdk_ng.utils import bytes_to_b64str, to_nano def create_collection(): @@ -10,13 +10,19 @@ def create_collection(): # royalty in percents = royalty_factor / royalty_base - collection = NFTCollection(royalty_base=royalty_base, - royalty=royalty_factor, - royalty_address=Address('royalty address'), - owner_address=Address('collection owner address'), - collection_content_uri='https://s.getgems.io/nft/b/c/62fba50217c3fe3cbaad9e7f/meta.json', - nft_item_content_base_uri='https://s.getgems.io/nft/b/c/62fba50217c3fe3cbaad9e7f/', - nft_item_code_hex=NFTItem.code) + collection = NFTCollection( + royalty_base=royalty_base, + royalty=royalty_factor, + royalty_address=Address("royalty address"), + owner_address=Address("collection owner address"), + collection_content_uri=( + "https://s.getgems.io/nft/b/c/62fba50217c3fe3cbaad9e7f/meta.json" + ), + nft_item_content_base_uri=( + "https://s.getgems.io/nft/b/c/62fba50217c3fe3cbaad9e7f/" + ), + nft_item_code_hex=NFTItem.code, + ) return collection @@ -25,12 +31,15 @@ def create_nft_mint_body(): collection = create_collection() nft_item_index = 0 - # in most collections with offchain metadata individual item content uri = item_index/meta.json + # in most collections with offchain metadata individual item + # content uri = item_index/meta.json - body = collection.create_mint_body(item_index=nft_item_index, - new_owner_address=Address('owner address'), - item_content_uri=f'{nft_item_index}/meta.json', - amount=to_nano(0.02, 'ton')) + body = collection.create_mint_body( + item_index=nft_item_index, + new_owner_address=Address("owner address"), + item_content_uri=f"{nft_item_index}/meta.json", + amount=to_nano(0.02, "ton"), + ) return body @@ -44,52 +53,82 @@ def create_batch_nft_mint_body(): to_item_index = 11 for i in range(from_item_index, to_item_index + 1): - contents_and_owners.append( - (f'{i}/meta.json', Address('owner address')) - ) + contents_and_owners.append((f"{i}/meta.json", Address("owner address"))) - body = collection.create_batch_mint_body(from_item_index=from_item_index, - contents_and_owners=contents_and_owners, - amount_per_one=to_nano(0.01, 'ton')) + body = collection.create_batch_mint_body( + from_item_index=from_item_index, + contents_and_owners=contents_and_owners, + amount_per_one=to_nano(0.01, "ton"), + ) return body """your wallet mnemonics""" -mnemonics = ['always', 'crystal', 'grab', 'glance', 'cause', 'dismiss', 'answer', 'expose', 'once', 'session', - 'tunnel', 'topic', 'defense', 'such', 'army', 'smile', 'exhibit', 'misery', 'runway', 'tone', 'want', - 'primary', 'piano', 'language'] - -mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics(mnemonics=mnemonics, version=WalletVersionEnum.v3r2, - workchain=0) +mnemonics = [ + "always", + "crystal", + "grab", + "glance", + "cause", + "dismiss", + "answer", + "expose", + "once", + "session", + "tunnel", + "topic", + "defense", + "such", + "army", + "smile", + "exhibit", + "misery", + "runway", + "tone", + "want", + "primary", + "piano", + "language", +] + +mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics( + mnemonics=mnemonics, version=WalletVersionEnum.v3r2, workchain=0 +) """deploy collection""" collection = create_collection() -collection_state_init = collection.create_state_init()['state_init'] +collection_state_init = collection.create_state_init()["state_init"] -query = wallet.create_transfer_message(to_addr=collection.address.to_string(), - amount=to_nano(0.02, 'ton'), - state_init=collection_state_init, - seqno=int('wallet seqno')) +query = wallet.create_transfer_message( + to_addr=collection.address.to_string(), + amount=to_nano(0.02, "ton"), + state_init=collection_state_init, + seqno=int("wallet seqno"), +) """mint nft""" body = create_nft_mint_body() collection = create_collection() -query = wallet.create_transfer_message(to_addr=collection.address.to_string(), - amount=to_nano(0.04, 'ton'), - seqno=int('wallet seqno'), - payload=body) +query = wallet.create_transfer_message( + to_addr=collection.address.to_string(), + amount=to_nano(0.04, "ton"), + seqno=int("wallet seqno"), + payload=body, +) """mint batch of nfts""" body = create_batch_nft_mint_body() collection = create_collection() -query = wallet.create_transfer_message(to_addr=collection.address.to_string(), - amount=to_nano(0.04, 'ton'), - seqno=int('wallet seqno'), - payload=body) +query = wallet.create_transfer_message( + to_addr=collection.address.to_string(), + amount=to_nano(0.04, "ton"), + seqno=int("wallet seqno"), + payload=body, +) """then send boc to blockchain""" diff --git a/examples/tokens/nft/transfer.py b/examples/tokens/nft/transfer.py index 7c3999c..0747a4b 100644 --- a/examples/tokens/nft/transfer.py +++ b/examples/tokens/nft/transfer.py @@ -1,22 +1,49 @@ from tonsdk_ng.contract.token.nft import NFTItem -from tonsdk_ng.utils import to_nano, bytes_to_b64str, Address from tonsdk_ng.contract.wallet import Wallets, WalletVersionEnum - +from tonsdk_ng.utils import Address, bytes_to_b64str, to_nano """your wallet mnemonics""" -mnemonics = ['always', 'crystal', 'grab', 'glance', 'cause', 'dismiss', 'answer', 'expose', 'once', 'session', - 'tunnel', 'topic', 'defense', 'such', 'army', 'smile', 'exhibit', 'misery', 'runway', 'tone', 'want', - 'primary', 'piano', 'language'] -mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics(mnemonics=mnemonics, version=WalletVersionEnum.v3r2, - workchain=0) +mnemonics = [ + "always", + "crystal", + "grab", + "glance", + "cause", + "dismiss", + "answer", + "expose", + "once", + "session", + "tunnel", + "topic", + "defense", + "such", + "army", + "smile", + "exhibit", + "misery", + "runway", + "tone", + "want", + "primary", + "piano", + "language", +] +mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics( + mnemonics=mnemonics, version=WalletVersionEnum.v3r2, workchain=0 +) """transfer""" -body = NFTItem().create_transfer_body(new_owner_address=Address('new owner address')) -query = wallet.create_transfer_message(to_addr='nft addr', - amount=to_nano(0.1, 'ton'), - seqno=int('wallet seqno'), - payload=body) +body = NFTItem().create_transfer_body( + new_owner_address=Address("new owner address") +) +query = wallet.create_transfer_message( + to_addr="nft addr", + amount=to_nano(0.1, "ton"), + seqno=int("wallet seqno"), + payload=body, +) """then send boc to blockchain""" boc = bytes_to_b64str(query["message"].to_boc(False)) diff --git a/examples/types/cell.py b/examples/types/cell.py index 31da7e8..e640819 100644 --- a/examples/types/cell.py +++ b/examples/types/cell.py @@ -1,7 +1,9 @@ -from tonsdk_ng.boc import begin_cell, Cell +from tonsdk_ng.boc import begin_cell from tonsdk_ng.utils import Address -cell = begin_cell()\ - .store_uint(4, 32)\ - .store_address(Address('EQBvW8Z5huBkMJYdnfAEM5JqTNkuWX3diqYENkWsIL0XggGG'))\ +cell = ( + begin_cell() + .store_uint(4, 32) + .store_address(Address("EQBvW8Z5huBkMJYdnfAEM5JqTNkuWX3diqYENkWsIL0XggGG")) .end_cell() +) diff --git a/examples/types/slice.py b/examples/types/slice.py index bf3b417..85f8f55 100644 --- a/examples/types/slice.py +++ b/examples/types/slice.py @@ -1,10 +1,12 @@ -from tonsdk_ng.boc import Slice, begin_cell +from tonsdk_ng.boc import begin_cell from tonsdk_ng.utils import Address -cell = begin_cell()\ - .store_uint(4, 32)\ - .store_address(Address('EQBvW8Z5huBkMJYdnfAEM5JqTNkuWX3diqYENkWsIL0XggGG'))\ +cell = ( + begin_cell() + .store_uint(4, 32) + .store_address(Address("EQBvW8Z5huBkMJYdnfAEM5JqTNkuWX3diqYENkWsIL0XggGG")) .end_cell() +) slice = cell.begin_parse() # or Slice(cell) @@ -13,4 +15,7 @@ stored_value_addr = slice.read_msg_addr() assert stored_value_uint == 4 -assert stored_value_addr.to_string(True, True, True) == 'EQBvW8Z5huBkMJYdnfAEM5JqTNkuWX3diqYENkWsIL0XggGG' +assert ( + stored_value_addr.to_string(True, True, True) + == "EQBvW8Z5huBkMJYdnfAEM5JqTNkuWX3diqYENkWsIL0XggGG" +) diff --git a/examples/wallets/highload.py b/examples/wallets/highload.py index 8c233f6..75605b4 100644 --- a/examples/wallets/highload.py +++ b/examples/wallets/highload.py @@ -1,34 +1,37 @@ -from tonsdk_ng.contract.wallet import WalletVersionEnum, Wallets -from tonsdk_ng.utils import Address, bytes_to_b64str, b64str_to_bytes, to_nano +from tonsdk_ng.contract.wallet import Wallets, WalletVersionEnum +from tonsdk_ng.utils import bytes_to_b64str, to_nano mnemonics = [] _mnemonics, _pub_k, _priv_k, wallet = Wallets.from_mnemonics( - mnemonics, WalletVersionEnum('hv2'), 0) + mnemonics, WalletVersionEnum("hv2"), 0 +) query = wallet.create_init_external_message() base64_boc = bytes_to_b64str(query["message"].to_boc(False)) recieps = [ { - 'address': 'destination address', - 'payload': 'comment', - 'amount': to_nano(float('amount'), 'ton'), - 'send_mode': 3 + "address": "destination address", + "payload": "comment", + "amount": to_nano(float("amount"), "ton"), + "send_mode": 3, }, { - 'address': 'destination address', - 'payload': 'comment', - 'amount': to_nano(float('amount'), 'ton'), - 'send_mode': 3 + "address": "destination address", + "payload": "comment", + "amount": to_nano(float("amount"), "ton"), + "send_mode": 3, }, { - 'address': 'destination address', - 'payload': 'comment', - 'amount': to_nano(float('amount'), 'ton'), - 'send_mode': 3 + "address": "destination address", + "payload": "comment", + "amount": to_nano(float("amount"), "ton"), + "send_mode": 3, }, ] query = wallet.create_transfer_message(recipients_list=recieps, query_id=0) -boc = bytes_to_b64str(query["message"].to_boc(False)) # send this boc to blockchain +boc = bytes_to_b64str( + query["message"].to_boc(False) +) # send this boc to blockchain diff --git a/examples/wallets/multisig/deploy.py b/examples/wallets/multisig/deploy.py index 80dd938..c0d5118 100644 --- a/examples/wallets/multisig/deploy.py +++ b/examples/wallets/multisig/deploy.py @@ -1,15 +1,89 @@ -from tonsdk_ng.contract.wallet import MultiSigWallet, MultiSigOrder, MultiSigOrderBuilder -from tonsdk_ng.crypto import mnemonic_new, mnemonic_to_wallet_key -from tonsdk_ng.utils import Address, bytes_to_b64str, b64str_to_bytes, to_nano - +from tonsdk_ng.contract.wallet import MultiSigWallet +from tonsdk_ng.crypto import mnemonic_to_wallet_key +from tonsdk_ng.utils import bytes_to_b64str """import or generate mnemonics""" # mnemonics1 = mnemonic_new() # mnemonics2 = mnemonic_new() # mnemonics3 = mnemonic_new() -mnemonics1 = ['broken', 'decade', 'unit', 'bird', 'enrich', 'great', 'nurse', 'offer', 'rescue', 'sound', 'pole', 'true', 'dignity', 'buyer', 'provide', 'boil', 'connect', 'universe', 'model', 'add', 'obtain', 'hire', 'gift', 'swim'] -mnemonics2 = ['rather', 'voice', 'zone', 'fold', 'rotate', 'crane', 'roast', 'brave', 'motor', 'kid', 'note', 'squirrel', 'piece', 'home', 'expose', 'bench', 'flame', 'wood', 'person', 'assist', 'vocal', 'bomb', 'dismiss', 'diesel'] -mnemonics3 = ['author', 'holiday', 'figure', 'luxury', 'leg', 'fringe', 'sibling', 'citizen', 'enforce', 'convince', 'silly', 'girl', 'remove', 'purity', 'sand', 'paper', 'file', 'review', 'window', 'kite', 'illegal', 'allow', 'satisfy', 'wait'] +mnemonics1 = [ + "broken", + "decade", + "unit", + "bird", + "enrich", + "great", + "nurse", + "offer", + "rescue", + "sound", + "pole", + "true", + "dignity", + "buyer", + "provide", + "boil", + "connect", + "universe", + "model", + "add", + "obtain", + "hire", + "gift", + "swim", +] +mnemonics2 = [ + "rather", + "voice", + "zone", + "fold", + "rotate", + "crane", + "roast", + "brave", + "motor", + "kid", + "note", + "squirrel", + "piece", + "home", + "expose", + "bench", + "flame", + "wood", + "person", + "assist", + "vocal", + "bomb", + "dismiss", + "diesel", +] +mnemonics3 = [ + "author", + "holiday", + "figure", + "luxury", + "leg", + "fringe", + "sibling", + "citizen", + "enforce", + "convince", + "silly", + "girl", + "remove", + "purity", + "sand", + "paper", + "file", + "review", + "window", + "kite", + "illegal", + "allow", + "satisfy", + "wait", +] """get pub and priv keys from mnemonics""" @@ -18,9 +92,11 @@ pub_k2, priv_k2 = mnemonic_to_wallet_key(mnemonics3) -wallet = MultiSigWallet(public_keys=[pub_k0, pub_k1, pub_k2], k=2, wallet_id=0) # k arg means required amount of signs +wallet = MultiSigWallet( + public_keys=[pub_k0, pub_k1, pub_k2], k=2, wallet_id=0 +) # k arg means required amount of signs query = wallet.create_init_external_message() init_boc = bytes_to_b64str(query["message"].to_boc(False)) -print('Base64boc to deploy the wallet: ', init_boc) +print("Base64boc to deploy the wallet: ", init_boc) diff --git a/examples/wallets/multisig/offchain_signatures.py b/examples/wallets/multisig/offchain_signatures.py index 2da8593..c332e78 100644 --- a/examples/wallets/multisig/offchain_signatures.py +++ b/examples/wallets/multisig/offchain_signatures.py @@ -1,15 +1,89 @@ -from tonsdk_ng.contract.wallet import MultiSigWallet, MultiSigOrder, MultiSigOrderBuilder -from tonsdk_ng.crypto import mnemonic_new, mnemonic_to_wallet_key -from tonsdk_ng.utils import Address, bytes_to_b64str, b64str_to_bytes, to_nano - +from tonsdk_ng.contract.wallet import MultiSigOrderBuilder, MultiSigWallet +from tonsdk_ng.crypto import mnemonic_to_wallet_key +from tonsdk_ng.utils import bytes_to_b64str, to_nano """import or generate mnemonics""" # mnemonics1 = mnemonic_new() # mnemonics2 = mnemonic_new() # mnemonics3 = mnemonic_new() -mnemonics1 = ['broken', 'decade', 'unit', 'bird', 'enrich', 'great', 'nurse', 'offer', 'rescue', 'sound', 'pole', 'true', 'dignity', 'buyer', 'provide', 'boil', 'connect', 'universe', 'model', 'add', 'obtain', 'hire', 'gift', 'swim'] -mnemonics2 = ['rather', 'voice', 'zone', 'fold', 'rotate', 'crane', 'roast', 'brave', 'motor', 'kid', 'note', 'squirrel', 'piece', 'home', 'expose', 'bench', 'flame', 'wood', 'person', 'assist', 'vocal', 'bomb', 'dismiss', 'diesel'] -mnemonics3 = ['author', 'holiday', 'figure', 'luxury', 'leg', 'fringe', 'sibling', 'citizen', 'enforce', 'convince', 'silly', 'girl', 'remove', 'purity', 'sand', 'paper', 'file', 'review', 'window', 'kite', 'illegal', 'allow', 'satisfy', 'wait'] +mnemonics1 = [ + "broken", + "decade", + "unit", + "bird", + "enrich", + "great", + "nurse", + "offer", + "rescue", + "sound", + "pole", + "true", + "dignity", + "buyer", + "provide", + "boil", + "connect", + "universe", + "model", + "add", + "obtain", + "hire", + "gift", + "swim", +] +mnemonics2 = [ + "rather", + "voice", + "zone", + "fold", + "rotate", + "crane", + "roast", + "brave", + "motor", + "kid", + "note", + "squirrel", + "piece", + "home", + "expose", + "bench", + "flame", + "wood", + "person", + "assist", + "vocal", + "bomb", + "dismiss", + "diesel", +] +mnemonics3 = [ + "author", + "holiday", + "figure", + "luxury", + "leg", + "fringe", + "sibling", + "citizen", + "enforce", + "convince", + "silly", + "girl", + "remove", + "purity", + "sand", + "paper", + "file", + "review", + "window", + "kite", + "illegal", + "allow", + "satisfy", + "wait", +] """get pub and priv keys from mnemonics""" @@ -23,7 +97,12 @@ """create order and add message""" order1 = MultiSigOrderBuilder(wallet.options["wallet_id"]) -order1.add_message(to_addr='EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N', amount=to_nano('0.01', 'ton'), send_mode=3, payload='hello from python tonsdk') +order1.add_message( + to_addr="EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N", + amount=to_nano("0.01", "ton"), + send_mode=3, + payload="hello from python tonsdk", +) """build and sign order with all required priv keys""" @@ -33,4 +112,4 @@ query = wallet.create_transfer_message(order1b, priv_k2) transfer_boc = bytes_to_b64str(query["message"].to_boc(False)) -print('Base64boc to transfer tons: ', transfer_boc) +print("Base64boc to transfer tons: ", transfer_boc) diff --git a/examples/wallets/multisig/onchain_signatures.py b/examples/wallets/multisig/onchain_signatures.py index c756412..e4b2985 100644 --- a/examples/wallets/multisig/onchain_signatures.py +++ b/examples/wallets/multisig/onchain_signatures.py @@ -1,15 +1,89 @@ -from tonsdk_ng.contract.wallet import MultiSigWallet, MultiSigOrder, MultiSigOrderBuilder -from tonsdk_ng.crypto import mnemonic_new, mnemonic_to_wallet_key, verify_sign -from tonsdk_ng.utils import Address, bytes_to_b64str, b64str_to_bytes, to_nano, sign_message - +from tonsdk_ng.contract.wallet import MultiSigOrderBuilder, MultiSigWallet +from tonsdk_ng.crypto import mnemonic_to_wallet_key +from tonsdk_ng.utils import bytes_to_b64str, to_nano """import or generate mnemonics""" # mnemonics1 = mnemonic_new() # mnemonics2 = mnemonic_new() # mnemonics3 = mnemonic_new() -mnemonics1 = ['broken', 'decade', 'unit', 'bird', 'enrich', 'great', 'nurse', 'offer', 'rescue', 'sound', 'pole', 'true', 'dignity', 'buyer', 'provide', 'boil', 'connect', 'universe', 'model', 'add', 'obtain', 'hire', 'gift', 'swim'] -mnemonics2 = ['rather', 'voice', 'zone', 'fold', 'rotate', 'crane', 'roast', 'brave', 'motor', 'kid', 'note', 'squirrel', 'piece', 'home', 'expose', 'bench', 'flame', 'wood', 'person', 'assist', 'vocal', 'bomb', 'dismiss', 'diesel'] -mnemonics3 = ['author', 'holiday', 'figure', 'luxury', 'leg', 'fringe', 'sibling', 'citizen', 'enforce', 'convince', 'silly', 'girl', 'remove', 'purity', 'sand', 'paper', 'file', 'review', 'window', 'kite', 'illegal', 'allow', 'satisfy', 'wait'] +mnemonics1 = [ + "broken", + "decade", + "unit", + "bird", + "enrich", + "great", + "nurse", + "offer", + "rescue", + "sound", + "pole", + "true", + "dignity", + "buyer", + "provide", + "boil", + "connect", + "universe", + "model", + "add", + "obtain", + "hire", + "gift", + "swim", +] +mnemonics2 = [ + "rather", + "voice", + "zone", + "fold", + "rotate", + "crane", + "roast", + "brave", + "motor", + "kid", + "note", + "squirrel", + "piece", + "home", + "expose", + "bench", + "flame", + "wood", + "person", + "assist", + "vocal", + "bomb", + "dismiss", + "diesel", +] +mnemonics3 = [ + "author", + "holiday", + "figure", + "luxury", + "leg", + "fringe", + "sibling", + "citizen", + "enforce", + "convince", + "silly", + "girl", + "remove", + "purity", + "sand", + "paper", + "file", + "review", + "window", + "kite", + "illegal", + "allow", + "satisfy", + "wait", +] """get pub and priv keys from mnemonics""" @@ -23,8 +97,15 @@ """create order and add message""" order1 = MultiSigOrderBuilder(wallet.options["wallet_id"]) -message = order1.add_message(to_addr='EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N', amount=to_nano('0.01', 'ton'), send_mode=3, payload='hello from python tonsdk') -query_id = order1.query_id # remember this query id or share this with other owners +message = order1.add_message( + to_addr="EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N", + amount=to_nano("0.01", "ton"), + send_mode=3, + payload="hello from python tonsdk", +) +query_id = ( + order1.query_id +) # remember this query id or share this with other owners """build and sign order""" @@ -45,8 +126,12 @@ """add the same message here""" -order2.add_message(to_addr='EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N', amount=to_nano('0.01', 'ton'), - send_mode=3, payload='hello from python tonsdk') +order2.add_message( + to_addr="EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N", + amount=to_nano("0.01", "ton"), + send_mode=3, + payload="hello from python tonsdk", +) # or order2.add_message_from_cell(message) diff --git a/examples/wallets/wallet.py b/examples/wallets/wallet.py index 1030fec..57b4ea9 100644 --- a/examples/wallets/wallet.py +++ b/examples/wallets/wallet.py @@ -1,16 +1,40 @@ -from tonsdk_ng.crypto import mnemonic_new from tonsdk_ng.contract.wallet import Wallets, WalletVersionEnum -from tonsdk_ng.utils import to_nano, bytes_to_b64str - - -mnemonics = ['broken', 'decade', 'unit', 'bird', 'enrich', 'great', 'nurse', 'offer', 'rescue', - 'sound', 'pole', 'true', 'dignity', 'buyer', 'provide', 'boil', 'connect', 'universe', - 'model', 'add', 'obtain', 'hire', 'gift', 'swim'] +from tonsdk_ng.utils import bytes_to_b64str, to_nano + +mnemonics = [ + "broken", + "decade", + "unit", + "bird", + "enrich", + "great", + "nurse", + "offer", + "rescue", + "sound", + "pole", + "true", + "dignity", + "buyer", + "provide", + "boil", + "connect", + "universe", + "model", + "add", + "obtain", + "hire", + "gift", + "swim", +] # mnemonics = mnemonic_new() -version = WalletVersionEnum.v3r2 +version = WalletVersionEnum.v4r2 wc = 0 -mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics(mnemonics=mnemonics, version=version, workchain=wc) +_, _, _, new_wallet = Wallets.create(version, 0) +mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics( + mnemonics=mnemonics, version=version, workchain=wc +) """to external deploy""" @@ -18,17 +42,21 @@ """to internal deploy""" -query = my_wallet.create_transfer_message(to_addr=new_wallet.address.to_string(), - amount=to_nano(0.02, 'ton'), - state_init=new_wallet.create_state_init()['state_init'], - seqno=int('wallet seqno')) +query = wallet.create_transfer_message( + to_addr=new_wallet.address.to_string(), + amount=to_nano(0.02, "ton"), + state_init=new_wallet.create_state_init()["state_init"], + seqno=int("wallet seqno"), +) """transfer""" -query = wallet.create_transfer_message(to_addr='destination address', - amount=to_nano(float('amount to transfer'), 'ton'), - payload='message', - seqno=int('wallet seqno')) +query = wallet.create_transfer_message( + to_addr="destination address", + amount=to_nano(float("amount to transfer"), "ton"), + payload="message", + seqno=int("wallet seqno"), +) """then send boc to blockchain""" diff --git a/pyproject.toml b/pyproject.toml index 82ac857..0be9754 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -82,10 +82,9 @@ exclude = [ "node_modules", "venv", ] -dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" target-version = "py310" -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401", "F403"] [tool.ruff.lint] @@ -111,6 +110,7 @@ ignore = [ # Loop control variable not used within loop body "B007", ] +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.mypy] python_version = "3.10"