spacepaste

  1.  
  2. import argparse
  3. def makep():
  4. # Global options
  5. options = argparse.ArgumentParser(add_help=False)
  6. options.add_argument('-v', '--verbose', action='store_true')
  7. # Main parser, accepts general options
  8. parser = argparse.ArgumentParser(parents=[options])
  9. # Subparser, accepts general options
  10. subparsers = parser.add_subparsers()
  11. parser_cmd = subparsers.add_parser('cmd', parents=[options])
  12. return parser
  13. def main():
  14. assert not makep().parse_args('cmd'.split()).verbose
  15. assert makep().parse_args('cmd -v'.split()).verbose
  16. assert makep().parse_args('-v cmd -v'.split()).verbose
  17. assert makep().parse_args('-v cmd'.split()).verbose # fails
  18. if __name__ == '__main__':
  19. main()
  20.