code: def _assert_proper_iterable(values):
      unintentional_iterables = (
          ops.Tensor,
          np.ndarray,
          bytes,
          six.text_type,
      )
      if isinstance(values, unintentional_iterables):
          raise TypeError(
              'Expected argument "values" to be a "proper" iterable.  Found: %s'
              % type(values)
          )
  
      if not hasattr(values, "__iter__"):
          raise TypeError(
              'Expected argument "values" to be iterable.  Found: %s'
              % type(values)
          )
  
imports: import numpy
  import six
  from tensorflow_probability.python.internal.backend.numpy import _utils
  from tensorflow_probability.python.internal.backend.numpy import dtype
  from tensorflow_probability.python.internal.backend.numpy import ops
label_desc: Use image node_id 19 for calling a global function with example usage: _assert_proper_iterable(values) without return types