title: Python argparse: Mutually exclusive required group with a required option
body: <p>I am trying to have a required mutually exclusive group with one required parameter. Below is the code which I have put</p>
  
  <pre><code>#!/usr/bin/python
  
  import argparse
  import sys
  
  # Check for the option provided as part of arguments
  def parseArgv():
      parser = argparse.ArgumentParser()
      group = parser.add_mutually_exclusive_group()
      group.add_argument("-v", "--verbose", choices=[1,2,3,4],
              help = "Increase verbosity")
      group.add_argument("-q", "--quiet", action="store_true", help = "Run quietly")
      name = parser.add_mutually_exclusive_group(required=True)
      name.add_argument("-n", "--name", help = "Name of the virtual machine")
      name.add_argument("-t", "--template", help = "Name of the template to use \
              for creating vm. If path is not provided then it will be looked \
              under template directory.")
      parser.add_argument("-s", "--save", help = "Save the machine template. If \
              path is not provided then it will be saved under template directory.");
      #parser.add_argument("-k", "--kick_start", required = True, help = "Name of the \
      #        kick start file. If path is not provided then it will be look into http \
      #        directory.")
      if len(sys.argv) == 1:
          parser.print_help()
      args = parser.parse_args()
  
  if __name__ == '__main__':
      parseArgv()
  </code></pre>
  
  <p>Now the output of this program as follow</p>
  
  <pre><code>$ python test.py 
  usage: test.py [-h] [-v {1,2,3,4} | -q] (-n NAME | -t TEMPLATE) [-s SAVE]
  
  optional arguments:
    -h, --help            show this help message and exit
    -v {1,2,3,4}, --verbose {1,2,3,4}
                          Increase verbosity
    -q, --quiet           Run quietly
    -n NAME, --name NAME  Name of the virtual machine
    -t TEMPLATE, --template TEMPLATE
                          Name of the template to use for creating vm. If path
                          is not provided then it will be looked under template
                          directory.
    -s SAVE, --save SAVE  Save the machine template. If path is not provided
                          then it will be saved under template directory.
  usage: test.py [-h] [-v {1,2,3,4} | -q] (-n NAME | -t TEMPLATE) [-s SAVE]
  test.py: error: one of the arguments -n/--name -t/--template is required
  </code></pre>
  
  <p>But if I un-comment the from line 20 - 22 then the output change as below</p>
  
  <pre><code>$ python test.py 
  usage: test.py [-h] [-v {1,2,3,4} | -q] (-n NAME | -t TEMPLATE) [-s SAVE] -k
                 KICK_START
  
  optional arguments:
    -h, --help            show this help message and exit
    -v {1,2,3,4}, --verbose {1,2,3,4}
                          Increase verbosity
    -q, --quiet           Run quietly
    -n NAME, --name NAME  Name of the virtual machine
    -t TEMPLATE, --template TEMPLATE
                          Name of the template to use for creating vm. If path
                          is not provided then it will be looked under template
                          directory.
    -s SAVE, --save SAVE  Save the machine template. If path is not provided
                          then it will be saved under template directory.
    -k KICK_START, --kick_start KICK_START
                          Name of the kick start file. If path is not provided
                          then it will be look into http directory.
  usage: test.py [-h] [-v {1,2,3,4} | -q] (-n NAME | -t TEMPLATE) [-s SAVE] -k
                 KICK_START
  test.py: error: argument -k/--kick_start is required
  </code></pre>
  
  <p>But I want that either -n / -t along with -k become mandatory. How to achieve the same.</p>