title: Using argparse to accept only one group of required arguments
body: <p>I'm trying to use <code>parser = argparse.ArgumentParser</code> for a lil program I write.</p>
  
  <p>The program accepts as an input <code>EITHER</code> <code>(</code> a path to a txt file <code>)</code> <code>OR</code> <code>(</code>opt1 <code>&amp;&amp;</code> opt2 <code>&amp;&amp;</code> opt3 <code>)</code>.</p>
  
  <p>Meaning if the user wants to use a txt file as an input he cant provide neither of <code>opt</code> and if he provided any <code>opt</code> - he have to provide all 3 and cant provide <code>a path to a txt file</code>.</p>
  
  <p>I tried using <code>add_mutually_exclusive_group</code> but not sure how to because the second group of arguments is a group itself.</p>
  
  <p>This is what I tried so far:</p>
  
  <pre><code>import argparse
  parser = argparse.ArgumentParser(description='this is the description',)
  
  root_group = parser.add_mutually_exclusive_group()
  
  group_list = root_group.add_mutually_exclusive_group()
  group_list.add_argument('-path', help='path to the txt file')
  
  group_list = root_group.add_mutually_exclusive_group()
  group_list.add_argument('-opt1', help='opt1')
  group_list.add_argument('-opt2', help='opt2')
  group_list.add_argument('-opt3', help='opt3')
  
  args = parser.parse_args()
  </code></pre>
  
  <p>-</p>
  
  <pre><code>python tests.py -path txt -opt1 asdasd
  usage: tests.py [-h] [[-path PATH] [-opt1 OPT1 | -opt2 OPT2 | -opt3 OPT3]
  tests.py: error: argument -opt1: not allowed with argument -path
  </code></pre>
  
  <p><code>path</code> is not allowed with any of <code>opt</code> - that's exactly what I want.</p>
  
  <p>But I want that if the user supplied even 1 <code>opt</code> he will have to provide  all of them.</p>
  
  <p>I also want that at least 1 group have be to satisfied.</p>