code: def process_quadrature_grid_and_probs(
      quadrature_grid_and_probs, dtype, validate_args, name=None
  ):
      """Validates quadrature grid, probs or computes them as necessary.
  
      Args:
        quadrature_grid_and_probs: Python pair of `float`-like `Tensor`s
          representing the sample points and the corresponding (possibly
          normalized) weight.  When `None`, defaults to:
            `np.polynomial.hermite.hermgauss(deg=8)`.
        dtype: The expected `dtype` of `grid` and `probs`.
        validate_args: Python `bool`, default `False`. When `True` distribution
          parameters are checked for validity despite possibly degrading runtime
          performance. When `False` invalid inputs may silently render incorrect
          outputs.
        name: Python `str` name prefixed to Ops created by this class.
  
      Returns:
         quadrature_grid_and_probs: Python pair of `float`-like `Tensor`s
          representing the sample points and the corresponding (possibly
          normalized) weight.
  
      Raises:
        ValueError: if `quadrature_grid_and_probs is not None` and
          `len(quadrature_grid_and_probs[0]) != len(quadrature_grid_and_probs[1])`
      """
      with tf.name_scope(name or "process_quadrature_grid_and_probs"):
          if quadrature_grid_and_probs is None:
              grid, probs = np.polynomial.hermite.hermgauss(deg=8)
              grid = grid.astype(dtype_util.as_numpy_dtype(dtype))
              probs = probs.astype(dtype_util.as_numpy_dtype(dtype))
              probs /= np.linalg.norm(probs, ord=1, keepdims=True)
              grid = tf.convert_to_tensor(
                  grid, name="grid", dtype=dtype
              )
              probs = tf.convert_to_tensor(
                  probs, name="probs", dtype=dtype
              )
              return grid, probs
  
          grid, probs = tuple(quadrature_grid_and_probs)
          grid = tf.convert_to_tensor(grid, name="grid", dtype=dtype)
          probs = tf.convert_to_tensor(
              probs, name="unnormalized_probs", dtype=dtype
          )
          probs /= tf.norm(
              probs, ord=1, axis=-1, keepdims=True, name="probs"
          )
  
          def _static_event_size(x):
              """Returns the static size of a specific dimension or `None`."""
              return tf.compat.dimension_value(
                  tensorshape_util.with_rank_at_least(x.shape, 1)[-1]
              )
  
          m, n = _static_event_size(probs), _static_event_size(grid)
          if m is not None and n is not None:
              if m != n:
                  raise ValueError(
                      "`quadrature_grid_and_probs` must be a `tuple` of "
                      "same-length zero-th-dimension `Tensor`s "
                      "(saw lengths {}, {})".format(m, n)
                  )
          elif validate_args:
              assertions = [
                  assert_util.assert_equal(
                      ps.dimension_size(probs, axis=-1),
                      ps.dimension_size(grid, axis=-1),
                      message=(
                          "`quadrature_grid_and_probs` must be a `tuple` of "
                          "same-length zero-th-dimension `Tensor`s"
                      ),
                  ),
              ]
              with tf.control_dependencies(assertions):
                  grid = tf.identity(grid)
                  probs = tf.identity(probs)
          return grid, probs
  
imports: import functools
  import hashlib
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow.python.util import tf_inspect
label_desc: Use image node_id 37 for calling a global function with example usage: process_quadrature_grid_and_probs(quadrature_grid_and_probs, dtype, validate_args, name) and returns: grid,  probs, grid,  probs, tf