# HG changeset patch # User Alexander Solovyov <piranha@piranha.org.ua> # Date 1251885002 -10800 # Node ID 69c10074f5c583a46636ba3760e0abc8e85bf573 # Parent 2f1dfda4cfb37649b8b8f7e1a49146c34257c160 fix bug with option names clashing with call_cmd argument names diff -r 2f1dfda4cfb3 -r 69c10074f5c5 docs/changelog.rst --- a/docs/changelog.rst Wed Aug 19 12:35:31 2009 +0300 +++ b/docs/changelog.rst Wed Sep 02 12:50:02 2009 +0300 @@ -1,6 +1,10 @@ Changelog --------- +0.9.8 +~~~~~ +Fixed bug with option names clashing with name of arguments for call_cmd. + 0.9.7 ~~~~~ Library renamed to opster. diff -r 2f1dfda4cfb3 -r 69c10074f5c5 opster.py --- a/opster.py Wed Aug 19 12:35:31 2009 +0300 +++ b/opster.py Wed Sep 02 12:50:02 2009 +0300 @@ -75,7 +75,7 @@ try: if opts.pop('help', False): return help_func() - return catcher(lambda: call_cmd(name_, func, *args, **opts), + return catcher(lambda: call_cmd(name_, func)(*args, **opts), help_func) except Abort: return -1 @@ -121,7 +121,7 @@ lambda: _dispatch(args, cmdtable, globaloptions), help_func) return catcher( - lambda: call_cmd(name, middleware(func), *args, **kwargs), + lambda: call_cmd(name, middleware(func))(*args, **kwargs), help_func) except Abort: return -1 @@ -444,13 +444,15 @@ raise Abort -def call_cmd(name, func, *args, **kwargs): - try: - return func(*args, **kwargs) - except TypeError: - if len(traceback.extract_tb(sys.exc_info()[2])) == 1: - raise ParseError(name, "invalid arguments") - raise +def call_cmd(name, func): + def inner(*args, **kwargs): + try: + return func(*args, **kwargs) + except TypeError: + if len(traceback.extract_tb(sys.exc_info()[2])) == 1: + raise ParseError(name, "invalid arguments") + raise + return inner def replace_name(usage, name): if '%name' in usage: diff -r 2f1dfda4cfb3 -r 69c10074f5c5 test.py --- a/test.py Wed Aug 19 12:35:31 2009 +0300 +++ b/test.py Wed Sep 02 12:50:02 2009 +0300 @@ -16,7 +16,8 @@ ui.write('\n') cplx_opts = [('p', 'pass', False, 'don\'t run the command'), - ('', 'exit', 0, 'exit with supplied code (default: 0)')] + ('', 'exit', 0, 'exit with supplied code (default: 0)'), + ('n', 'name', '', 'optional name')] @command(cplx_opts, usage='[-p] [--exit value] ...', name='complex', hide=True) def complex_(ui, *args, **opts):