class_docstr: An `ArraySpec` that specifies minimum and maximum values.
  
  Example usage:
  ```python
  # Specifying the same minimum and maximum for every element.
  spec = BoundedArraySpec((3, 4), np.float64, minimum=0.0, maximum=1.0)
  
  # Specifying a different minimum and maximum for each element.
  spec = BoundedArraySpec(
      (2,), np.float64, minimum=[0.1, 0.2], maximum=[0.9, 0.9])
  
  # Specifying the same minimum and a different maximum for each element.
  spec = BoundedArraySpec(
      (3,), np.float64, minimum=-10.0, maximum=[4.0, 5.0, 3.0])
  ```
  
  Bounds are meant to be inclusive. This is especially important for
  integer types. The following spec will be satisfied by arrays
  with values in the set {0, 1, 2}:
  ```python
  spec = BoundedArraySpec((3, 4), np.int, minimum=0, maximum=2)
  ```
docstr: Returns the number of values for discrete BoundedArraySpec.
docstr_tok: ["Returns","the","number","of","values","for","discrete","BoundedArraySpec","."]
code: def num_values(self):
      """Returns the number of values for discrete BoundedArraySpec."""
      if is_discrete(self):
          return (
              np.broadcast_to(self.maximum, shape=self.shape)
              - np.broadcast_to(self.minimum, shape=self.shape)
              + 1
          )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numbers
  import gin
  import numpy
  import tensorflow
label_desc: Use image node_id 5 for calling the BoundedArraySpec obj's underlying member method code with example usage: obj.num_values() and returns: unknown