summaryrefslogtreecommitdiff
path: root/cmd2/pyscript_bridge.py
diff options
context:
space:
mode:
authorEric Lin <anselor@gmail.com>2018-04-30 16:07:29 -0400
committerEric Lin <anselor@gmail.com>2018-04-30 16:07:29 -0400
commite5699bc65b20b1428e3c8db5cf3f8b5d8bf41569 (patch)
tree1d6b6788a54941a307506fff6a7af4fcc474b820 /cmd2/pyscript_bridge.py
parentab7ac493950040565d933ed02deaeb778ef977e3 (diff)
downloadcmd2-git-e5699bc65b20b1428e3c8db5cf3f8b5d8bf41569.tar.gz
Added more tests exercising the pyscript bridge.
Diffstat (limited to 'cmd2/pyscript_bridge.py')
-rw-r--r--cmd2/pyscript_bridge.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/cmd2/pyscript_bridge.py b/cmd2/pyscript_bridge.py
index a9bbc311..0691b9c6 100644
--- a/cmd2/pyscript_bridge.py
+++ b/cmd2/pyscript_bridge.py
@@ -33,7 +33,8 @@ class ArgparseFunctor:
self._args[action.dest] = item
return self
- return super().__getatttr__(item)
+ raise AttributeError(item)
+ # return super().__getattr__(item)
def __call__(self, *args, **kwargs):
"""
@@ -57,7 +58,9 @@ class ArgparseFunctor:
else:
# This is a positional argument, search the positional arguments passed in.
if not isinstance(action, argparse._SubParsersAction):
- if next_pos_index < len(args):
+ if action.dest in kwargs:
+ self._args[action.dest] = kwargs[action.dest]
+ elif next_pos_index < len(args):
self._args[action.dest] = args[next_pos_index]
next_pos_index += 1
else:
@@ -65,7 +68,7 @@ class ArgparseFunctor:
# Check if there are any extra arguments we don't know how to handle
for kw in kwargs:
- if kw not in consumed_kw:
+ if kw not in self._args: # consumed_kw:
raise TypeError('{}() got an unexpected keyword argument \'{}\''.format(
self.__current_subcommand_parser.prog, kw))
@@ -116,6 +119,8 @@ class ArgparseFunctor:
traverse_parser(self._parser)
+ # print('Command: {}'.format(cmd_str[0]))
+
func(cmd_str[0])
return self._cmd2_app._last_result
@@ -146,7 +151,7 @@ class PyscriptBridge(object):
# Command does use argparse, return an object that can traverse the argparse subcommands and arguments
return ArgparseFunctor(self._cmd2_app, item, parser)
- return super().__getattr__(item)
+ raise AttributeError(item)
def __call__(self, args):
self._cmd2_app.onecmd_plus_hooks(args + '\n')