docs: def obs(self, with_values=True, with_attributes=True):
          '''
          return an iterator over observations in a flat dataset.
          An observation is represented as a namedtuple with 3 fields ('key', 'value', 'attrib').
  
          obs.key is a namedtuple of dimensions. Its field names represent dimension names,
          its values the dimension values.
  
          obs.value is a string that can in in most cases be interpreted as float64
          obs.attrib is a namedtuple of attribute names and values.
  
          with_values and with_attributes: If one or both of these flags
          is False, the respective value will be None. Use these flags to
          increase performance. The flags default to True.
          '''
          # distinguish between generic and structure-specific observations
          # only generic ones are currently implemented.
          return self._reader.iter_generic_obs(
              self, with_values, with_attributes)