code: def __init__(
      self,
      obj: "CoreOption",
      opts: t.Sequence[str],
      dest: t.Optional[str],
      action: t.Optional[str] = None,
      nargs: int = 1,
      const: t.Optional[t.Any] = None,
  ):
      self._short_opts = []
      self._long_opts = []
      self.prefixes: t.Set[str] = set()
  
      for opt in opts:
          prefix, value = split_opt(opt)
          if not prefix:
              raise ValueError(
                  f"Invalid start character for option ({opt})"
              )
          self.prefixes.add(prefix[0])
          if len(prefix) == 1 and len(value) == 1:
              self._short_opts.append(opt)
          else:
              self._long_opts.append(opt)
              self.prefixes.add(prefix)
  
      if action is None:
          action = "store"
  
      self.dest = dest
      self.action = action
      self.nargs = nargs
      self.const = const
      self.obj = obj
  
imports: import typing
  from collections import deque
  from gettext import gettext
  from gettext import ngettext
  from .exceptions import BadArgumentUsage
  from .exceptions import BadOptionUsage
  from .exceptions import NoSuchOption
  from .exceptions import UsageError
label_desc: Use image node_id 1 to create a new Option object  with example: obj = Option(obj, opts, dest, action, nargs, const)