docs: def parse_args(self):
          """
          Parse our arguments.
          """
          # compile the parser
          self._compile()
          # clear the args
          self.args = None
          self._self_event('before_parse', 'parse', *sys.argv[1:], **{})
          # list commands/subcommands in argv
          cmds = [cmd for cmd in sys.argv[1:] if not cmd.startswith("-")]
          if (len(cmds) > 0 and not utils.check_help() and self.default_cmd
                  and cmds[0] not in self.commands):
              # if we have at least one command which is not an help command
              # and we have a default command and the first command in arguments
              # is not in commands we insert the default command as second
              # argument (actually the first command)
              sys.argv.insert(1, self.default_cmd)
          # let's parse the arguments
          self.args = self.parser.parse_args()
          # set up the output.
          if self.args:
              # if we have some arguments
              if self.add_output and self.args.output is not None:
                  # If add_output is True and we have an output file
                  # setup the encoding
                  self.encoding = self.args.encoding
                  if self.args.encoding.lower() == 'raw':
                      # if we have passed a raw encoding we will write directly
                      # to the output file.
                      self._output = open(self.args.output, self.args.write_mode)
                  else:
                      # else we will use the codecs module to write to the
                      # output file.
                      import codecs
                      self._output = codecs.open(
                          self.args.output, self.args.write_mode,
                          encoding=self.args.encoding)
              if self._cfg_factory:
                  # if we have a config factory setup the config file with the
                  # right param
                  self.cfg_file = self.args.config
              # now is parsed.
              self._is_parsed = True
          return self