docs: def get_axes(process_or_domain):
      """Returns a dictionary of all Axis in a domain or dictionary of domains.
  
      :param process_or_domain:   a process or a domain object
      :type process_or_domain:    :class:`~climlab.process.process.Process` or
                                  :class:`~climlab.domain.domain._Domain`
      :raises: :exc:              `TypeError` if input is not or not having a domain
      :returns:                   dictionary of input's Axis
      :rtype:                     dict
  
      :Example:
  
          ::
  
              >>> import climlab
              >>> from climlab.process.process import get_axes
  
              >>> model = climlab.EBM()
  
              >>> get_axes(model)
              {'lat': <climlab.domain.axis.Axis object at 0x7ff13b9dd2d0>,
               'depth': <climlab.domain.axis.Axis object at 0x7ff13b9dd310>}
  
      """
      if isinstance(process_or_domain, Process):
          dom = process_or_domain.domains
      else:
          dom = process_or_domain
      if isinstance(dom, _Domain):
          return dom.axes
      elif isinstance(dom, dict):
          axes = {}
          for thisdom in list(dom.values()):
              assert isinstance(thisdom, _Domain)
              axes.update(thisdom.axes)
          return axes
      else:
          raise TypeError('dom must be a domain or dictionary of domains.')