chainlib

Generic blockchain access library and tooling
Log | Files | Refs | README | LICENSE

commit 5518bf83a32baf94dc66f4a0bb60ba0ebfbdf009
parent d2505f19d2afde25888ca1952f54a53ebae22529
Author: nolash <dev@holbrook.no>
Date:   Tue, 19 Oct 2021 19:39:38 +0200

Convert urlerror in rpc do, allow appends for pos args in cli module

Diffstat:
Mchainlib/cli/arg.py | 20+++++++++++++++-----
Mchainlib/connection.py | 12+++++++++---
Msetup.cfg | 2+-
3 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/chainlib/cli/arg.py b/chainlib/cli/arg.py @@ -57,7 +57,7 @@ class ArgumentParser(argparse.ArgumentParser): self.pos_args = [] - def add_positional(self, name, type=str, help=None, required=True): + def add_positional(self, name, type=str, help=None, append=False, required=True): """Add a positional argument. Stdin piping will only be possible in the event a single positional argument is defined. @@ -73,7 +73,7 @@ class ArgumentParser(argparse.ArgumentParser): :param required: If true, argument will be set to required :type required: bool """ - self.pos_args.append((name, type, help, required,)) + self.pos_args.append((name, type, help, required, append,)) def parse_args(self, argv=sys.argv[1:]): @@ -88,13 +88,23 @@ class ArgumentParser(argparse.ArgumentParser): """ if len(self.pos_args) == 1: arg = self.pos_args[0] - self.add_argument(arg[0], nargs='?', type=arg[1], default=stdin_arg(), help=arg[2]) + if arg[4]: + self.add_argument(arg[0], nargs='*', type=arg[1], default=stdin_arg(), help=arg[2]) + else: + self.add_argument(arg[0], nargs='?', type=arg[1], default=stdin_arg(), help=arg[2]) else: for arg in self.pos_args: if arg[3]: - self.add_argument(arg[0], type=arg[1], help=arg[2]) + if arg[4]: + logg.debug('argumen') + self.add_argument(arg[0], nargs='+', type=arg[1], help=arg[2]) + else: + self.add_argument(arg[0], type=arg[1], help=arg[2]) else: - self.add_argument(arg[0], nargs='?', type=arg[1], help=arg[2]) + if arg[4]: + self.add_argument(arg[0], nargs='*', type=arg[1], help=arg[2]) + else: + self.add_argument(arg[0], type=arg[1], help=arg[2]) args = super(ArgumentParser, self).parse_args(args=argv) if args.dumpconfig: diff --git a/chainlib/connection.py b/chainlib/connection.py @@ -23,7 +23,10 @@ from .jsonrpc import ( ErrorParser, ) from .http import PreemptiveBasicAuthHandler -from .error import JSONRPCException +from .error import ( + JSONRPCException, + RPCException, + ) from .auth import Auth logg = logging.getLogger(__name__) @@ -308,8 +311,11 @@ class JSONRPCHTTPConnection(HTTPConnection): ) ho = build_opener(handler) install_opener(ho) - - r = urlopen(req, data=data.encode('utf-8')) + + try: + r = urlopen(req, data=data.encode('utf-8')) + except urllib.error.URLError as e: + raise RPCException(e) result = json.load(r) logg.debug('(HTTP) recv {}'.format(result)) diff --git a/setup.cfg b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = chainlib -version = 0.0.10a3 +version = 0.0.10a5 description = Generic blockchain access library and tooling author = Louis Holbrook author_email = dev@holbrook.no