code: def dim_extents(self, *args, **kwargs):
          
  
  
          l = self.dim_lower_extent(*args, **kwargs)
          u = self.dim_upper_extent(*args, **kwargs)
  
          # Handle sequence and singles differently
          if isinstance(l, collections.Sequence):
              return zip(l, u)
          else:
              return (l, u)
docs: Returns extent tuples of the dimensions in args.
  
          .. code-block:: python
  
              (tl, tu), (bl, bu) = cube.dim_extents('ntime', 'nbl')
  
          or
  
          .. code-block:: python
  
              (tl, tu), (bl, bu) = cube.dim_upper_extent('ntime,nbl')