docs: def parse_config(self, config):
          """
          Override this, making sure to chain up first, if your extension adds
          its own custom command line arguments, or you want to do any further
          processing on the automatically added arguments.
  
          The default implementation will set attributes on the extension:
          - 'sources': a set of absolute paths to source files for this extension
          - 'index': absolute path to the index for this extension
  
          Additionally, it will set an attribute for each argument added with
          `Extension.add_path_argument` or `Extension.add_paths_argument`, with
          the extension's `Extension.argument_prefix` stripped, and dashes
          changed to underscores.
  
          Args:
              config: a `config.Config` instance
          """
          prefix = self.argument_prefix
          self.sources = config.get_sources(prefix)
          self.smart_sources = [
              self._get_smart_filename(s) for s in self.sources]
          self.index = config.get_index(prefix)
          self.source_roots = OrderedSet(
              config.get_paths('%s_source_roots' % prefix))
  
          for arg, dest in list(self.paths_arguments.items()):
              val = config.get_paths(arg)
              setattr(self, dest, val)
  
          for arg, dest in list(self.path_arguments.items()):
              val = config.get_path(arg)
              setattr(self, dest, val)
  
          self.formatter.parse_config(config)