docs: def dimensions(self, full=0):
          """Return a dictionnary describing every dataset dimension.
  
          Args::
  
            full      true to get complete info about each dimension
                      false to report only each dimension length
  
          Returns::
  
            Dictionnary where each key is a dimension name. If no name
            has been given to the dimension, the key is set to
            'fakeDimx' where 'x' is the dimension index number.
            If parameter 'full' is false, key value is the dimension
            length. If 'full' is true, key value is a 5-element tuple
            with the following elements:
  
            - dimension length; for an unlimited dimension, the reported
              length is the current dimension length
            - dimension index number
            - 1 if the dimension is unlimited, 0 otherwise
            - dimension scale type, or 0 if no scale is defined for
              the dimension
            - number of attributes defined on the dimension
  
          C library equivalent : no equivalent
                                                      """
  
          # Get the number of dimensions and their lengths.
          nDims, dimLen = self.info()[1:3]
          if isinstance(dimLen, int):    # need a sequence
              dimLen = [dimLen]
          # Check if the dataset is appendable.
          unlim = self.isrecord()
  
          # Inquire each dimension
          res = {}
          for n in range(nDims):
              d = self.dim(n)
              # The length reported by info() is 0 for an unlimited dimension.
              # Rather use the lengths reported by SDS.info()
              name, k, scaleType, nAtt = d.info()
              length = dimLen[n]
              if full:
                  res[name] = (length, n, unlim and n == 0,
                               scaleType, nAtt)
              else:
                  res[name] = length
  
          return res