docs: def extract_root_dependency_caches(
              self, model_names, rev_ids, injection_caches=None):
          """
          Extracts a mapping of root :class:`revscoring.Datasource`
          capable of generating the features needed for a particular set of
          models without additional IO.  This method implements all of the IO
          heavy operations.  The roots dependency caches produced by calling
          this method can then be passed to `process_model_scores()` for scoring.
  
          :Parameters:
              model_names : `list` ( `str` )
                  The names of a :class:`revscoring.ScorerModel` to
                  extract the roots dependencies for
          """
          # Make a copy of injection_caches
          _injection_caches = {}
          for rev_id in rev_ids:
              injection_cache = injection_caches.get(rev_id, {}) \
                                if injection_caches is not None else {}
              _injection_caches[rev_id] = dict(injection_cache.items())
  
          # Find our root datasources
          root_datasources = \
              list(set(self._generate_root_datasources(model_names)))
  
          start = time.time()
          error_root_vals = self.extractor.extract(
              rev_ids, root_datasources, caches=_injection_caches)
  
          # Check each extraction for errors
          root_caches = {}
          errors = {}
          for rev_id, (error, values) in zip(rev_ids, error_root_vals):
              if error is not None:
                  errors[rev_id] = error
                  if rev_id in root_caches:
                      del root_caches[rev_id]
              else:
                  root_caches[rev_id] = dict(zip(root_datasources, values))
          logger.debug("Extracted root datasources for {0}:{1}:{2} in {3} secs"
                       .format(self.name, set(model_names), rev_ids,
                               round(time.time() - start, 3)))
  
          # Note that root_caches should have been modified in place
          return root_caches, errors