code: def warm_product_graph(self, target_roots):
      
      logger.debug('warming target_roots for: %r', target_roots)
      subjects = [target_roots.specs]
      request = self.scheduler_session.execution_request([TransitiveHydratedTargets], subjects)
      self.scheduler_session.execute(request)
docs: Warm the scheduler's `ProductGraph` with `TransitiveHydratedTargets` products.
  
      This method raises only fatal errors, and does not consider failed roots in the execution
      graph: in the v1 codepath, failed roots are accounted for post-fork.
  
      :param TargetRoots target_roots: The targets root of the request.