Parse args, returns a tuple of a parser and ParsedArgs object
        Args:
            args      -- sequence of strings representing the arguments to parse
            namespace -- object to use for holding arguments
            defaults  -- lazily loaded dict like object of default arguments
        Returns: (parser, ParsedArgs)
        parser supports a .error message for displaying an error and exiting with usage
        If a default key is callable then it is called with the current namespace,
        and then returned.

def parse_args(self, args=None, namespace=None, defaults=None):
        """Parse args, returns a tuple of a parser and ParsedArgs object
        Args:
            args      -- sequence of strings representing the arguments to parse
            namespace -- object to use for holding arguments
            defaults  -- lazily loaded dict like object of default arguments
        Returns: (parser, ParsedArgs)
        parser supports a .error message for displaying an error and exiting with usage
        If a default key is callable then it is called with the current namespace,
        and then returned.
        """
        epilog = self.subparsers_summary()
        epilog += self.epilog
        return self(RootParser, epilog=epilog).parse_args(args, namespace, defaults)