class_docstr: Mesh implemented using explicit device placement.
docstr: call tf.Print.
  
  Args:
    x: a LaidOutTensor
    data: a list of LaidOutTensor
    message: a string
    **kwargs: keyword arguments to tf.print
  Returns:
    a LaidOutTensor
docstr_tok: ["call","tf.Print",".","Args",":","x",":","a","LaidOutTensor","data",":","a","list","of","LaidOutTensor","message",":","a","string","*","*","kwargs",":","keyword","arguments","to","tf.print","Returns",":","a","LaidOutTensor"]
code: def Print(
      self, x, data, message, **kwargs
  ):  # pylint: disable=invalid-name
      """call tf.Print.
  
      Args:
        x: a LaidOutTensor
        data: a list of LaidOutTensor
        message: a string
        **kwargs: keyword arguments to tf.print
      Returns:
        a LaidOutTensor
      """
      tf.logging.info("PlacementMeshImpl::Print")
      x = x.to_laid_out_tensor()
      new_slices = x.tensor_list[:]
      with tf.device(self._devices[0]):
          new_slices[0] = tf.Print(
              new_slices[0],
              [t for d in data for t in d.tensor_list],
              message,
              **kwargs,
          )
      return self.LaidOutTensor(new_slices)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import functools
  import os
  import random
  from mesh_tensorflow import ops_with_redefined_builtins
  from six.moves import xrange
  import tensorflow.compat.v1
label_desc: Use image node_id 3 for calling the PlacementMeshImpl obj's underlying member method code with example usage: obj.Print(x, data, message) and returns: self