Skip to content

Commit 040b4ce

Browse files
Merge pull request #35 from ElrondNetwork/development
Version 1.0.18
2 parents f510995 + ea16f84 commit 040b4ce

32 files changed

Lines changed: 278 additions & 156 deletions

.github/workflows/erdpy-mypy.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: mypy reviewdog check
2+
on: [pull_request]
3+
jobs:
4+
mypy:
5+
name: runner / mypy
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v2
9+
- name: Install Python dependencies
10+
uses: py-actions/py-dependency-install@v2
11+
- uses: tsuyoshicho/action-mypy@v3
12+
with:
13+
github_token: ${{ secrets.github_token }}
14+
filter_mode: nofilter

erdpy/CHANGELOG.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@ All notable changes will be documented in this file.
44

55
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
66

7+
## [1.0.18] - 14.09.2021
8+
- Load a local `erdpy.json` file when running `erdpy` commands, containing default values for CLI options per project
9+
- Bugfix by [MWFIAE](https://github.com/MWFIAE): correctly verify the value of the `--bytecode` argument
10+
- Bugfix by [MWFIAE](https://github.com/MWFIAE): `QueryResult` objects are now properly JSON-serializable
11+
- Add more output information after building and deploying contracts
12+
- Improve error reporting to standard output
13+
- Enable `mypy` checking as a GitHub action
14+
- Add and fix more type hints for `mypy`
15+
716
## [1.0.16] - 27.08.2021
817
- Merge branch `legolas-addons`
918
- Fix `erdpy testnet` to work with recent changes in `elrond-go`
@@ -22,7 +31,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
2231
- Add --wait-result flag for erdpy tx new cli command.
2332

2433
## [1.0.10] - 25.02.2021
25-
- [Fixed a bug in the testnet setup process when creting the config for the proxy app #213](https://github.com/ElrondNetwork/elrond-sdk/pull/213)
34+
- [Fixed a bug in the testnet setup process when creating the config for the proxy app #213](https://github.com/ElrondNetwork/elrond-sdk/pull/213)
2635

2736
## [1.0.9] - 29.01.2021
2837
- [Multiple config templates #152](https://github.com/ElrondNetwork/elrond-sdk/pull/152). One can now `switch` between different **configuration** profiles.
@@ -149,7 +158,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
149158
- Refactoring and design improvements
150159

151160

152-
**Note that below, the change log is in chronological order. Will be soon updated to be in inverse chronological order (how it should have been in the first place).**
161+
**Note that below, the changelog is in chronological order. It will be soon updated to be in inverse chronological order (how it should have been in the first place).**
153162

154163
## [0.0.4]
155164

@@ -498,7 +507,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
498507
- Removed .py SC interaction samples, moved to `sc-examples` `sc-examples-rs` repositories, so that they become available in Elrond IDE.
499508
- Removed some deprecated code.
500509
- `mypy`-related refactoring.
501-
- Fix accounts CLI. Trucate data for "account get-transactions"
510+
- Fix accounts CLI. Truncate data for "account get-transactions".
502511

503512
## [0.7.1] - 13.07.2020
504513

erdpy/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "1.0.17"
1+
__version__ = "1.0.18"

erdpy/accounts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def __repr__(self):
133133
return self.bech32()
134134

135135
@classmethod
136-
def zero(cls):
136+
def zero(cls) -> 'Address':
137137
return Address("0" * 64)
138138

139139

erdpy/cli.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import erdpy.cli_wallet
2222
import erdpy.cli_delagation
2323
import erdpy.cli_dns
24-
from erdpy import errors, scope
24+
from erdpy import config, errors, scope
2525
from erdpy._version import __version__
2626

2727
logger = logging.getLogger("cli")
@@ -32,18 +32,20 @@ def main():
3232
_do_main()
3333
except errors.KnownError as err:
3434
logger.critical(err.get_pretty())
35-
sys.exit(1)
35+
return 1
3636
except KeyboardInterrupt:
3737
print("erdpy process killed by user.")
38-
sys.exit(1)
38+
return 1
39+
return 0
3940

4041

4142
def _do_main():
4243
logging.basicConfig(level=logging.INFO)
4344
scope.initialize()
4445

45-
parser = setup_parser()
46-
args = parser.parse_args()
46+
argv_with_config_args = config.add_config_args(sys.argv[1:])
47+
parser = setup_parser(argv_with_config_args)
48+
args = parser.parse_args(argv_with_config_args)
4749

4850
if args.verbose:
4951
logging.basicConfig(level=logging.DEBUG)
@@ -56,7 +58,7 @@ def _do_main():
5658
args.func(args)
5759

5860

59-
def setup_parser():
61+
def setup_parser(args: List[str] = sys.argv[1:]):
6062
parser = ArgumentParser(
6163
prog="erdpy",
6264
usage="erdpy [-h] [-v] [--verbose] COMMAND-GROUP [-h] COMMAND ...",
@@ -82,23 +84,23 @@ def setup_parser():
8284
subparsers = parser.add_subparsers()
8385
commands: List[Any] = []
8486

85-
commands.append(erdpy.cli_contracts.setup_parser(subparsers))
86-
commands.append(erdpy.cli_transactions.setup_parser(subparsers))
87-
commands.append(erdpy.cli_validators.setup_parser(subparsers))
87+
commands.append(erdpy.cli_contracts.setup_parser(args, subparsers))
88+
commands.append(erdpy.cli_transactions.setup_parser(args, subparsers))
89+
commands.append(erdpy.cli_validators.setup_parser(args, subparsers))
8890
commands.append(erdpy.cli_accounts.setup_parser(subparsers))
8991
commands.append(erdpy.cli_ledger.setup_parser(subparsers))
90-
commands.append(erdpy.cli_wallet.setup_parser(subparsers))
92+
commands.append(erdpy.cli_wallet.setup_parser(args, subparsers))
9193
commands.append(erdpy.cli_network.setup_parser(subparsers))
9294
commands.append(erdpy.cli_cost.setup_parser(subparsers))
93-
commands.append(erdpy.cli_dispatcher.setup_parser(subparsers))
95+
commands.append(erdpy.cli_dispatcher.setup_parser(args, subparsers))
9496
commands.append(erdpy.cli_blockatlas.setup_parser(subparsers))
9597
commands.append(erdpy.cli_deps.setup_parser(subparsers))
9698
commands.append(erdpy.cli_config.setup_parser(subparsers))
9799
commands.append(erdpy.cli_block.setup_parser(subparsers))
98-
commands.append(erdpy.cli_testnet.setup_parser(subparsers))
100+
commands.append(erdpy.cli_testnet.setup_parser(args, subparsers))
99101
commands.append(erdpy.cli_data.setup_parser(subparsers))
100-
commands.append(erdpy.cli_delagation.setup_parser(subparsers))
101-
commands.append(erdpy.cli_dns.setup_parser(subparsers))
102+
commands.append(erdpy.cli_delagation.setup_parser(args, subparsers))
103+
commands.append(erdpy.cli_dns.setup_parser(args, subparsers))
102104

103105
parser.epilog = """
104106
----------------------
@@ -112,4 +114,5 @@ def setup_parser():
112114

113115

114116
if __name__ == "__main__":
115-
main()
117+
ret = main()
118+
sys.exit(ret)

erdpy/cli_contracts.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
import os
3-
from typing import Any
3+
from typing import Any, List
44

55
from pathlib import Path
66

@@ -14,7 +14,7 @@
1414
logger = logging.getLogger("cli.contracts")
1515

1616

17-
def setup_parser(subparsers: Any) -> Any:
17+
def setup_parser(args: List[str], subparsers: Any) -> Any:
1818
parser = cli_shared.add_group_subparser(subparsers, "contract", "Build, deploy and interact with Smart Contracts")
1919
subparsers = parser.add_subparsers()
2020

@@ -50,9 +50,9 @@ def setup_parser(subparsers: Any) -> Any:
5050
_add_project_or_bytecode_arg(sub)
5151
_add_metadata_arg(sub)
5252
cli_shared.add_outfile_arg(sub)
53-
cli_shared.add_wallet_args(sub)
53+
cli_shared.add_wallet_args(args, sub)
5454
cli_shared.add_proxy_arg(sub)
55-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False)
55+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
5656
_add_arguments_arg(sub)
5757
sub.add_argument("--wait-result", action="store_true", default=False,
5858
help="signal to wait for the transaction result - only valid if --send is set")
@@ -65,9 +65,9 @@ def setup_parser(subparsers: Any) -> Any:
6565
sub = cli_shared.add_command_subparser(subparsers, "contract", "call", "Interact with a Smart Contract (execute function).")
6666
_add_contract_arg(sub)
6767
cli_shared.add_outfile_arg(sub)
68-
cli_shared.add_wallet_args(sub)
68+
cli_shared.add_wallet_args(args, sub)
6969
cli_shared.add_proxy_arg(sub)
70-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False)
70+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
7171
_add_function_arg(sub)
7272
_add_arguments_arg(sub)
7373
sub.add_argument("--wait-result", action="store_true", default=False,
@@ -83,9 +83,9 @@ def setup_parser(subparsers: Any) -> Any:
8383
cli_shared.add_outfile_arg(sub)
8484
_add_project_or_bytecode_arg(sub)
8585
_add_metadata_arg(sub)
86-
cli_shared.add_wallet_args(sub)
86+
cli_shared.add_wallet_args(args, sub)
8787
cli_shared.add_proxy_arg(sub)
88-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False)
88+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False)
8989
_add_arguments_arg(sub)
9090
sub.add_argument("--wait-result", action="store_true", default=False,
9191
help="signal to wait for the transaction result - only valid if --send is set")
@@ -115,7 +115,7 @@ def _add_project_or_bytecode_arg(sub: Any):
115115
group.add_argument("--project", default=os.getcwd(),
116116
help="🗀 the project directory (default: current directory)")
117117
group.add_argument("--bytecode", type=str,
118-
help="the file containing the WASM bytecode")
118+
help="the file containing the WASM bytecode")
119119

120120

121121
def _add_contract_arg(sub: Any):
@@ -187,6 +187,7 @@ def deploy(args: Any):
187187

188188
tx = contract.deploy(sender, arguments, gas_price, gas_limit, value, chain, version)
189189
logger.info("Contract address: %s", contract.address)
190+
utils.log_explorer_contract_address(chain, contract.address)
190191

191192
result = None
192193
try:
@@ -221,7 +222,7 @@ def dump_tx_and_result(tx: Any, result: Any, args: Any):
221222

222223

223224
def _prepare_contract(args: Any) -> SmartContract:
224-
if len(args.bytecode):
225+
if args.bytecode and len(args.bytecode):
225226
bytecode = utils.read_binary_file(Path(args.bytecode)).hex()
226227
else:
227228
project = load_project(args.project)

erdpy/cli_delagation.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import binascii
22
import sys
3-
from typing import Any
3+
from typing import Any, List
44

55
from erdpy import cli_shared, errors, utils
66
from erdpy.accounts import Address
@@ -9,15 +9,15 @@
99
from erdpy.transactions import do_prepare_transaction
1010

1111

12-
def setup_parser(subparsers: Any) -> Any:
12+
def setup_parser(args: List[str], subparsers: Any) -> Any:
1313
parser = cli_shared.add_group_subparser(subparsers, "staking-provider", "Staking provider omnitool")
1414
subparsers = parser.add_subparsers()
1515

1616
# create new delegation contract
1717
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "create-new-delegation-contract",
1818
"Create a new delegation system smart contract, transferred value must be"
1919
"greater than baseIssuingCost + min deposit value")
20-
_add_common_arguments(sub)
20+
_add_common_arguments(args, sub)
2121
sub.add_argument("--total-delegation-cap", required=True, help="the total delegation contract capacity")
2222
sub.add_argument("--service-fee", required=True, help="the delegation contract service fee")
2323
sub.set_defaults(func=do_create_delegation_contract)
@@ -37,87 +37,87 @@ def setup_parser(subparsers: Any) -> Any:
3737
sub.add_argument("--validators-file", required=True, help="a JSON file describing the Nodes")
3838
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
3939
sub.add_argument("--using-delegation-manager", action="store_true", required=False, help="whether delegation contract was created using the Delegation Manager")
40-
_add_common_arguments(sub)
40+
_add_common_arguments(args, sub)
4141
sub.set_defaults(func=add_new_nodes)
4242

4343
# remove nodes
4444
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "remove-nodes",
4545
"Remove nodes must be called by the contract owner")
4646
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
4747
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
48-
_add_common_arguments(sub)
48+
_add_common_arguments(args, sub)
4949
sub.set_defaults(func=remove_nodes)
5050

5151
# stake nodes
5252
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "stake-nodes",
5353
"Stake nodes must be called by the contract owner")
5454
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
5555
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
56-
_add_common_arguments(sub)
56+
_add_common_arguments(args, sub)
5757
sub.set_defaults(func=stake_nodes)
5858

5959
# unbond nodes
6060
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "unbond-nodes",
6161
"Unbond nodes must be called by the contract owner")
6262
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
6363
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
64-
_add_common_arguments(sub)
64+
_add_common_arguments(args, sub)
6565
sub.set_defaults(func=unbond_nodes)
6666

6767
# unstake nodes
6868
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "unstake-nodes",
6969
"Unstake nodes must be called by the contract owner")
7070
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
7171
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
72-
_add_common_arguments(sub)
72+
_add_common_arguments(args, sub)
7373
sub.set_defaults(func=unstake_nodes)
7474

7575
# unjail nodes
7676
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "unjail-nodes",
7777
"Unjail nodes must be called by the contract owner")
7878
sub.add_argument("--bls-keys", required=True, help="a list with the bls keys of the nodes")
7979
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
80-
_add_common_arguments(sub)
80+
_add_common_arguments(args, sub)
8181
sub.set_defaults(func=unjail_nodes)
8282

8383
# change service fee
8484
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "change-service-fee",
8585
"Change service fee must be called by the contract owner")
8686
sub.add_argument("--service-fee", required=True, help="new service fee value")
8787
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
88-
_add_common_arguments(sub)
88+
_add_common_arguments(args, sub)
8989
sub.set_defaults(func=change_service_fee)
9090

9191
# modify total delegation cap
9292
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "modify-delegation-cap",
9393
"Modify delegation cap must be called by the contract owner")
9494
sub.add_argument("--delegation-cap", required=True, help="new delegation contract capacity")
9595
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
96-
_add_common_arguments(sub)
96+
_add_common_arguments(args, sub)
9797
sub.set_defaults(func=modify_delegation_cap)
9898

9999
# set automatic activation
100100
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "automatic-activation",
101101
"Automatic activation must be called by the contract owner")
102102

103-
sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present("--unset", sys.argv)),
103+
sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present(args, "--unset")),
104104
help="set automatic activation True")
105-
sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present("--set", sys.argv)),
105+
sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present(args, "--set")),
106106
help="set automatic activation False")
107107
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
108-
_add_common_arguments(sub)
108+
_add_common_arguments(args, sub)
109109
sub.set_defaults(func=automatic_activation)
110110

111111
# set redelegate cap
112112
sub = cli_shared.add_command_subparser(subparsers, "staking-provider", "redelegate-cap",
113113
"Redelegate cap must be called by the contract owner")
114114

115-
sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present("--unset", sys.argv)),
115+
sub.add_argument("--set", action="store_true", required=not (utils.is_arg_present(args, "--unset")),
116116
help="set redelegate cap True")
117-
sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present("--set", sys.argv)),
117+
sub.add_argument("--unset", action="store_true", required=not (utils.is_arg_present(args, "--set")),
118118
help="set redelegate cap False")
119119
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
120-
_add_common_arguments(sub)
120+
_add_common_arguments(args, sub)
121121
sub.set_defaults(func=redelegate_cap)
122122

123123
# set metadata
@@ -128,14 +128,14 @@ def setup_parser(subparsers: Any) -> Any:
128128
sub.add_argument("--website", required=True, help="website field in staking provider metadata")
129129
sub.add_argument("--identifier", required=True, help="identifier field in staking provider metadata")
130130
sub.add_argument("--delegation-contract", required=True, help="address of the delegation contract")
131-
_add_common_arguments(sub)
131+
_add_common_arguments(args, sub)
132132
sub.set_defaults(func=set_metadata)
133133

134134

135-
def _add_common_arguments(sub: Any):
135+
def _add_common_arguments(args: List[str], sub: Any):
136136
cli_shared.add_proxy_arg(sub)
137-
cli_shared.add_wallet_args(sub)
138-
cli_shared.add_tx_args(sub, with_receiver=False, with_data=False, with_estimate_gas=True)
137+
cli_shared.add_wallet_args(args, sub)
138+
cli_shared.add_tx_args(args, sub, with_receiver=False, with_data=False, with_estimate_gas=True)
139139
cli_shared.add_broadcast_args(sub, relay=False)
140140
cli_shared.add_outfile_arg(sub, what="signed transaction, hash")
141141

0 commit comments

Comments
 (0)