class_docstr: A directed acyclic graph pipeline.
  
  This Pipeline can be given an arbitrary graph composed of Pipeline instances
  and will run all of those pipelines feeding outputs to inputs. See README.md
  for details.
  
  Use DAGPipeline to compose multiple smaller pipelines together.
class_docstr_tok: ["A","directed","acyclic","graph","pipeline",".","This","Pipeline","can","be","given","an","arbitrary","graph","composed","of","Pipeline","instances","and","will","run","all","of","those","pipelines","feeding","outputs","to","inputs",".","See","README.md","for","details",".","Use","DAGPipeline","to","compose","multiple","smaller","pipelines","together","."]
docstr: Verifies that subordinate is DagInput, PipelineKey, or Pipeline.
docstr_tok: ["Verifies","that","subordinate","is","DagInput",",","PipelineKey",",","or","Pipeline","."]
code: def _validate_subordinate(self, subordinate):
      """Verifies that subordinate is DagInput, PipelineKey, or Pipeline."""
      if isinstance(subordinate, pipeline.Pipeline):
          return subordinate
      if isinstance(subordinate, pipeline.PipelineKey):
          if not isinstance(subordinate.unit, pipeline.Pipeline):
              raise InvalidDAGError(
                  "PipelineKey object %s does not have a valid Pipeline"
                  % subordinate
              )
          return subordinate.unit
      if isinstance(subordinate, DagInput):
          return subordinate
      raise InvalidDAGError(
          "Looking for Pipeline, PipelineKey, or DagInput object, but got %s"
          % type(subordinate)
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import itertools
  from magenta.pipelines import pipeline
  import six
label_desc: Use image node_id 4 for calling the DAGPipeline obj's underlying member method code with example usage: obj._validate_subordinate(subordinate) and returns: subordinate, subordinate, subordinate