class_docstr: The option parser is an internal class that is ultimately used to
  parse options and arguments.  It's modelled after optparse and brings
  a similar but vastly simplified API.  It should generally not be used
  directly as the high level Click classes wrap it for you.
  
  It's not nearly as extensible as optparse or argparse as it does not
  implement features that are implemented on a higher level (such as
  types or defaults).
  
  :param ctx: optionally the :class:`~click.Context` where this parser
              should go with.
class_docstr_tok: ["The","option","parser","is","an","internal","class","that","is","ultimately","used","to","parse","options","and","arguments",".","It","'s","modelled","after","optparse","and","brings","a","similar","but","vastly","simplified","API",".","It","should","generally","not","be","used","directly","as","the","high","level","Click","classes","wrap","it","for","you",".","It","'s","not","nearly","as","extensible","as","optparse","or","argparse","as","it","does","not","implement","features","that","are","implemented","on","a","higher","level","(","such","as","types","or","defaults",")",".",":","param","ctx",":","optionally","the",":","class",":","`","~click.Context","`","where","this","parser","should","go","with","."]
docstr: Adds a new option named `dest` to the parser.  The destination
  is not inferred (unlike with optparse) and needs to be explicitly
  provided.  Action can be any of ``store``, ``store_const``,
  ``append``, ``appnd_const`` or ``count``.
  
  The `obj` can be used to identify the option in the order list
  that is returned from the parser.
docstr_tok: ["Adds","a","new","option","named","`","dest","`","to","the","parser",".","The","destination","is","not","inferred","(","unlike","with","optparse",")","and","needs","to","be","explicitly","provided",".","Action","can","be","any","of","``","store","``",",","``","store_const","``",",","``","append","``",",","``","appnd_const","``","or","``","count","``",".","The","`","obj","`","can","be","used","to","identify","the","option","in","the","order","list","that","is","returned","from","the","parser","."]
code: def add_option(
      self, opts, dest, action=None, nargs=1, const=None, obj=None
  ):
      """Adds a new option named `dest` to the parser.  The destination
      is not inferred (unlike with optparse) and needs to be explicitly
      provided.  Action can be any of ``store``, ``store_const``,
      ``append``, ``appnd_const`` or ``count``.
  
      The `obj` can be used to identify the option in the order list
      that is returned from the parser.
      """
      if obj is None:
          obj = dest
      opts = [normalize_opt(opt, self.ctx) for opt in opts]
      option = Option(
          opts, dest, action=action, nargs=nargs, const=const, obj=obj
      )
      self._opt_prefixes.update(option.prefixes)
      for opt in option._short_opts:
          self._short_opt[opt] = option
      for opt in option._long_opts:
          self._long_opt[opt] = option
  
imports: import re
  from collections import deque
  from .exceptions import BadArgumentUsage
  from .exceptions import BadOptionUsage
  from .exceptions import NoSuchOption
  from .exceptions import UsageError
label_desc: Use image node_id 2 for calling the OptionParser obj's underlying member method code with example usage: obj.add_option(opts, dest, action, nargs, const, obj) without return types