docs: def _check_axis(self, ds, name):
          '''
          Checks that the axis attribute is a string and an allowed value, namely
          one of 'T', 'X', 'Y', or 'Z'.
  
          :param netCDF4.Dataset ds: An open netCDF dataset
          :param str name: Name of the variable
          :rtype: compliance_checker.base.Result
          '''
          allowed_axis = ['T', 'X', 'Y', 'Z']
          variable = ds.variables[name]
          axis = variable.axis
  
          valid_axis = TestCtx(BaseCheck.HIGH, self.section_titles['4'])
          axis_is_string = isinstance(axis, basestring),
          valid_axis.assert_true(axis_is_string and len(axis) > 0,
                                 "{}'s axis attribute must be a non-empty string".format(name))
  
          # If axis isn't a string we can't continue any checks
          if not axis_is_string or len(axis) == 0:
              return valid_axis.to_result()
  
          valid_axis.assert_true(axis in allowed_axis,
                                 "{}'s axis attribute must be T, X, Y, or Z, ".format(name)+\
                                 "currently {}".format(axis))
  
          return valid_axis.to_result()