code: def to_dict(self):  # cls, self):
          
          config = {
              'stdopt': self.stdopt,
              'attachopt': self.attachopt,
              'attachvalue': self.attachvalue,
              'auto2dashes': self.auto2dashes,
              'case_sensitive': self.case_sensitive,
              'namedoptions': self.namedoptions,
              'appearedonly': self.appeared_only,
              'optionsfirst': self.options_first,
              'option_name': self.option_name,
              'usage_name': self.usage_name,
              'name': self.name,
              'help': self.help,
              'version': self.version
          }
  
          text = {
              'doc': self.doc,
              'usage_text': self.usage_text,
              'option_sections': self.option_sections,
          }
  
          # option = [convert_2_dict(x) for x in self.options]
  
          option = {}
          for title, options in self.options.items():
              option[title] = [convert_2_dict(x) for x in options]
  
          usage = [convert_2_dict(x) for x in self.usages]
  
          return {
              '__version__': self._version,
              '__class__': 'Docpie',
              '__config__': config,
              '__text__': text,
              'option': option,
              'usage': usage,
              'option_names': [list(x) for x in self.opt_names],
              'opt_names_required_max_args': self.opt_names_required_max_args
          }
docs: Convert Docpie into a JSONlizable dict.
  
          Use it in this way:
          pie = Docpie(__doc__)
          json.dumps(pie.convert_2_dict())
  
          Note the `extra` info will be lost if you costomize that,
          because a function is not JSONlizable.
          You can use `set_config(extra={...})` to set it back.