def _build_parser(self):
main_parser = argparse.ArgumentParser(description=self.common.help,<EOL>prefix_chars='<STR_LIT>')<EOL>self._add_options_to_parser(self._opt_bare, main_parser)<EOL>main_parser.set_defaults(**self.common.defaults)<EOL>if self.bare is not None:<EOL><INDENT>main_parser.set_defaults(**self.bare.defaults)<EOL><DEDENT>subparsers = main_parser.add_subparsers(dest='<STR_LIT>')<EOL>for cmd_name, meta in self.subcmds.items():<EOL><INDENT>kwargs = {'<STR_LIT>': '<STR_LIT>', '<STR_LIT>': meta.help}<EOL>dummy_parser = subparsers.add_parser(cmd_name, **kwargs)<EOL>self._add_options_to_parser(self._opt_cmds[cmd_name], dummy_parser)<EOL>dummy_parser.set_defaults(**meta.defaults)<EOL><DEDENT>return main_parser<EOL>
Build command line argument parser.

        Returns:
            :class:`argparse.ArgumentParser`: the command line argument parser.
            You probably won't need to use it directly. To parse command line
            arguments and update the :class:`ConfigurationManager` instance
            accordingly, use the :meth:`parse_args` method.