Advertisement
Guest User

Untitled

a guest
Oct 16th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #! /usr/bin/python
  2.  
  3. import argparse
  4.  
  5. class MutuallyExclusiveParameter(argparse.Action):
  6. def __init__(self, option, **kwargs):
  7. # print('init', repr(option), repr(kwargs))
  8. self.option = option
  9. super().__init__(**kwargs)
  10.  
  11. def __call__(self, parser, namespace, values, option_string=None):
  12. # print('call', repr(values), repr(option_string))
  13. setattr(namespace, self.option, True)
  14. setattr(namespace, self.dest, values)
  15.  
  16. parser = argparse.ArgumentParser(description='Play with options.',
  17. formatter_class=argparse.ArgumentDefaultsHelpFormatter)
  18. group = parser.add_mutually_exclusive_group()
  19. group.add_argument('-a', dest='num', default=1, type=int,
  20. action=lambda **kwargs: MutuallyExclusiveParameter('a', **kwargs),
  21. help='help a')
  22. group.add_argument('-b', dest='num', default=2, type=int,
  23. action=lambda **kwargs: MutuallyExclusiveParameter('b', **kwargs),
  24. help='help b')
  25.  
  26. def p(l):
  27. print(repr(parser.parse_args(l)))
  28.  
  29. p([])
  30. p(['-a', '11'])
  31. p(['-b', '22'])
  32. try:
  33. p(['-h'])
  34. except:
  35. pass
  36. p(['-a111', '-b222'])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement