我想编写自定义魔术,该魔术获得--first或--second参数,但是当根本没有参数时会引发错误。在简单的argparse中,我可以使用common_exclusive_group做到这一点,但是我不知道如何在Magics的情况下应用此方法。硬编码示例:
from IPython.core import magic_arguments
from IPython.core.magic import cell_magic, Magics, magics_class
@magics_class
class TestMagics(Magics):
@cell_magic
@magic_arguments.magic_arguments()
@magic_arguments.argument('--first', '-f',
action='store_true',
help='Whether to print the results'
)
@magic_arguments.argument('--second', '-s',
action='store_true',
help='Whether to print the results'
)
def hello(self, line='', cell=None):
args = magic_arguments.parse_argstring(self.hello, line)
if args.first or args.second:
print('hello ' + cell)
else:
print('error should occur!')
ip = get_ipython()
ip.register_magics(TestMagics)
在块中:
%%hello
world
应该引发错误