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:
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