class_docstr: DmlCorpus implements a collection of articles. It is initialized via a DmlConfig
  object, which holds information about where to look for the articles and how
  to process them.
  
  Apart from being a regular corpus (bag-of-words iterable with a `len()` method),
  DmlCorpus has methods for building a dictionary (mapping between words and
  their ids).
docstr: Parse the directories specified in the config, looking for suitable articles.
  
  This updates the self.documents var, which keeps a list of (source id,
  article uri) 2-tuples. Each tuple is a unique identifier of one article.
  
  Note that some articles are ignored based on config settings (for example
  if the article's language doesn't match any language specified in the
  config etc.).
docstr_tok: ["Parse","the","directories","specified","in","the","config",",","looking","for","suitable","articles",".","This","updates","the","self.documents","var",",","which","keeps","a","list","of","(","source","id",",","article","uri",")","2-tuples",".","Each","tuple","is","a","unique","identifier","of","one","article",".","Note","that","some","articles","are","ignored","based","on","config","settings","(","for","example","if","the","article","'s","language","does","n't","match","any","language","specified","in","the","config","etc",".",")","."]
code: def processConfig(self, config, shuffle=False):
      """
      Parse the directories specified in the config, looking for suitable articles.
  
      This updates the self.documents var, which keeps a list of (source id,
      article uri) 2-tuples. Each tuple is a unique identifier of one article.
  
      Note that some articles are ignored based on config settings (for example
      if the article's language doesn't match any language specified in the
      config etc.).
      """
      self.config = config
      self.documents = []
      logger.info("processing config %s", config)
      for sourceId, source in config.sources.iteritems():
          logger.info("processing source '%s'", sourceId)
          accepted = []
          for articleUri in source.findArticles():
              meta = source.getMeta(
                  articleUri
              )  # retrieve metadata (= dictionary of key->value)
              if config.acceptArticle(
                  meta
              ):  # do additional filtering on articles, based on the article's metadata
                  accepted.append((sourceId, articleUri))
          logger.info(
              "accepted %i articles for source '%s'",
              len(accepted),
              sourceId,
          )
          self.documents.extend(accepted)
  
      if not self.documents:
          logger.warning(
              "no articles at all found from the config; something went wrong!"
          )
  
      if shuffle:
          logger.info(
              "shuffling %i documents for random order",
              len(self.documents),
          )
          import random
  
          random.shuffle(self.documents)
  
      logger.info(
          "accepted total of %i articles for %s",
          len(self.documents),
          str(config),
      )
  
imports: import logging
  import os.path
  from gensim import interfaces, matutils
  import dictionary
label_desc: Use image node_id 5 for calling the DmlCorpus obj's underlying member method code with example usage: obj.processConfig(config, shuffle) without return types