title: Selected options activate right subparsers
body: <p>I have to invoke my script in this way.
  <code>script.py multiple --ways aa bb -as abab -bs bebe</code>
  In this case <code>-as abab</code> reffers to "aa" option from <code>--ways</code> parameter and <code>-bs bebe</code> to "bb" option.</p>
  
  <p>And all chosed options should affect what "fulfill" method will be used.
  If we chose 'aa' and 'bb' there should only be options '-as' and '-bs' not '-cs'.</p>
  
  <pre><code>import sys
  from argparse import ArgumentParser
  
  def fulfill_aa_parser(aa_parser):
      aa_parser.add_argument('--ass', '-as', type=str, required=True, choices=['abababa'])
  
  def fulfill_bb_parser(aa_parser):
      aa_parser.add_argument('--bass', '-bs', type=str, required=True, choices=['bebebe'])
  
  def fulfill_cc_parser(aa_parser):
      aa_parser.add_argument('--cass', '-cs', type=str, required=True, choices=['cycycyc'])
  
  def fulfill_multiple_parser(multiple_parser):
      multiple_parser.add_argument('--ways', '-w', type=str, choices=['aa','bb', 'cc'], nargs='+', required=True)
  
  def main(argv):
      parser = ArgumentParser(description='TEST CASE')
      subparsers = parser.add_subparsers(dest='type')
  
      multiple_parser = subparsers.add_parser(
          'multiple'
      )
      aabbparsers = multiple_parser.add_subparsers()
      aa_parser = aabbparsers.add_parser('aa')
      bb_parser = aabbparsers.add_parser('bb')
      cc_parser = aabbparsers.add_parser('cc')
      fulfill_multiple_parser(multiple_parser)
      fulfill_aa_parser(aa_parser)
      fulfill_bb_parser(bb_parser)
      fulfill_cc_parser(cc_parser)
      args = parser.parse_args(argv)
      if args.type is None:
          parser.print_help()
          return
  
  if __name__ == '__main__':
      main(sys.argv[1:])
  </code></pre>
  
  <p>Parsing this in this way:</p>
  
  <pre><code>    fulfill_aa_parser(multiple_parser)
      fulfill_bb_parser(multiple_parser)
      fulfill_cc_parser(multiple_parser)
  </code></pre>
  
  <p>will lead to parser always asking for '-as', '-bs' ,'-cs' and options in '--ways' will not affect this</p>
  
  <p>EDIT : \
  This is it looks when there is some thought put to it.
  Just simply pass parser to this function</p>
  
  <pre><code>def fulfill_apple_argparser(parser):
      parser.add_argument("--apple_argument")
  
  def fulfill_banana_argparser(parser):
      parser.add_argument("--banana_argument")
  
  def fulfill_peach_argparser(parser):
      parser.add_argument("--peach_argument")
  
  def many_fruits_parse(parser, progs=None, list_of_fruits=('apple', 'banana', 'peach')):
      progs = progs or []
      if len(list_of_fruits) == 0 or parser in progs:
          return
      fulfill = {'apple': fulfill_apple_argparser, 'banana': fulfill_banana_argparser,
                 'peach': fulfill_peach_argparser}
      subparsers = parser.add_subparsers(title='subparser', dest=parser.prog)
      progs.append(parser)
      for fruit in list_of_fruits:
          secondary = [x for x in list_of_fruits if x != fruit]
          fruit_parser = subparsers.add_parser(fruit, help=fruit)
          fulfill[fruit](fruit_parser)
          many_fruits_parse(fruit_parser, progs, secondary)
  </code></pre>