code: def register_option(self, key, subkey, default, _type, definition,
                          values=None, locked=False):
          
          if not self.open:
              return
  
          key, subkey = _lower_keys(key, subkey)
          _entry_must_not_exist(self.gc, key, subkey)
  
          ev.value_eval(default, _type)
          values = None if values is False else values
          new_opt = pd.Series([key, subkey, default, _type, default,
                               locked, definition, values], index=self.clmn)
  
          self.gc = self.gc.append(new_opt, ignore_index=True)
docs: Create a new option.
  
          :param str key: First identifier of the option.
          :param str subkey: Second identifier of the option.
          :param default: Default value of the option. Type varies and it is
              described by ``_type``.
          :param str _type: Type of the value of the option. Available
              options are: [``int``, ``float``, ``bool``, ``text``,
              ``string``, ``path_in``, ``path_out``].
          :param str definition: Brief explanation of the option.
          :type definition: :class:`str`
          :param values: Available values for the option.
          :type values: :func:`list` of accepted ``_type``
          :param bool locked: If True, option cannot be altered.
  
          :raise:
              :AlreadyRegisteredError: If ``key`` or ``subkey`` already
                  define an option.