'Parses command line arguments and returns the result.
:returns: parsed command line arguments
:rtype: argparse.Namespace'

def parse_args(self):

    parsed_args = self.parser.parse_args(self.args)
    parsed_args.func = self.VERBS[self.verb]
    parsed_args.verb = self.verb
    self.remove_config_file_domains_for_renewal(parsed_args)
    if self.detect_defaults:
        return parsed_args
    self.defaults = dict(((key, copy.deepcopy(self.parser.get_default(key))) for key in vars(parsed_args)))
    if (self.verb == 'renew'):
        if parsed_args.force_interactive:
            raise errors.Error('{0}    cannot    be    used    with    renew'.format(constants.FORCE_INTERACTIVE_FLAG))
        parsed_args.noninteractive_mode = True
    if (parsed_args.force_interactive and parsed_args.noninteractive_mode):
        raise errors.Error('Flag    for    non-interactive    mode    and    {0}    conflict'.format(constants.FORCE_INTERACTIVE_FLAG))
    if (parsed_args.staging or parsed_args.dry_run):
        self.set_test_server(parsed_args)
    if parsed_args.csr:
        self.handle_csr(parsed_args)
    if parsed_args.must_staple:
        parsed_args.staple = True
    if parsed_args.validate_hooks:
        hooks.validate_hooks(parsed_args)
    possible_deprecation_warning(parsed_args)
    return parsed_args
