title: Making argsparse subparsers optional
body: <p>So I have the following code:</p>
  
  <pre><code>parser = argparse.ArgumentParser(description='Manages anime_list.json', add_help=True, version='0.1')
  parser.add_argument('-l', '--list', action='store_true', help='List all anime in file')
  
  subparser = parser.add_subparsers(title='Actions', description='Actions that can be performed', dest='command')
  
  add = subparser.add_parser('=add', help='Add anime entry')
  add.add_argument('-n', '--name', type=str, required=False, default='',
                   help='The name of the anime adding. Will be auto filled in if left blank')
  add.add_argument('-e', '--episode', type=int, required=False, default=0,
                   help='The last watched episode. Download starts add +1 this episode')
  add.add_argument('-u', '--url', type=str, required=True, help='A link to any episode for the anime')
  
  remove = subparser.add_parser('=remove', help='Remove anime entry')
  remove.add_argument('-n', '--name', type=str, required=True, default='',
                      help='The name of the anime to remove')
  
  args = parser.parse_args()
  </code></pre>
  
  <p>What I want is for the subparsers to be optional. When the user uses the <code>--list</code> argument, the subparsers arguments should not have to be supplied. When using argsparse's <code>-h</code> or <code>-v</code> options the parsing completes and the help information or version number is shown. But when just using my own <code>-l</code> it throws an exception saying that not enough arguments have been supplied.</p>
  
  <p>I found a suggestion saying that using <code>subparser.required = False</code> should make them optional but it does not work.</p>
  
  <p>Any idea how I can do this? I have looked up on this and can't seem to find a solution.</p>