class_docstr: Metaclass for TransformedDistribution.
  
  This metaclass ensures that subclasses of TransformedDistribution are
  AutoCompositeTensors. TransformedDistribution itself is not an
  AutoCompositeTensor, since we define its type spec differently depending on
  whether `split_kwargs_fn` is the default (in which case we omit it from the
  type spec, making the spec serializable).
class_docstr_tok: ["Metaclass","for","TransformedDistribution",".","This","metaclass","ensures","that","subclasses","of","TransformedDistribution","are","AutoCompositeTensors",".","TransformedDistribution","itself","is","not","an","AutoCompositeTensor",",","since","we","define","its","type","spec","differently","depending","on","whether","`","split_kwargs_fn","`","is","the","default","(","in","which","case","we","omit","it","from","the","type","spec",",","making","the","spec","serializable",")","."]
code: def __new__(
      mcs, classname, baseclasses, attrs
  ):  # pylint: disable=bad-classmethod-argument
      cls = super(_TransformedDistributionMeta, mcs).__new__(
          mcs, classname, baseclasses, attrs
      )
      if (
          cls.__module__
          == "tensorflow_probability.python.distributions.transformed_distribution"
      ) and classname == "TransformedDistribution":
          return cls
  
      # Ensure that subclasses of TransformedDistribution are
      # AutoCompositeTensors.
      if (
          "tensorflow_probability.python.distributions"
          in cls.__module__
      ):
          module_name = "tfp.distributions"
      elif (
          "tensorflow_probability.python.experimental.distributions"
          in cls.__module__
      ):
          module_name = "tfp.experimental.distributions"
      else:
          module_name = cls.__module__
      return auto_composite_tensor.auto_composite_tensor(
          cls,
          omit_kwargs=("parameters",),
          non_identifying_kwargs=("name",),
          module_name=module_name,
      )
  
imports: import functools
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import ldj_ratio
  from tensorflow_probability.python.distributions import batch_broadcast
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import log_prob_ratio
  from tensorflow_probability.python.internal import auto_composite_tensor
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensorshape_util
label_desc: Use image node_id 1 for calling the _TransformedDistributionMeta obj's underlying member method code with example usage: obj.__new__(mcs, classname, baseclasses, attrs) and returns: auto_composite_tensor, cls