code: def map_value(self, value, gid):
          
          base_gid = self.base_gid_pattern.search(gid).group(1)
          if self.anonymyze:
              try:
                  if value in self._maps[base_gid]:
                      return self._maps[base_gid][value]
                  else:
                      k = (len(self._maps[base_gid]) + 1) % self.mapmax
                      new_item = u'{0}_{1:0{2}d}'.format(base_gid.upper(), k, self.mapexp)
                      self._maps[base_gid][value] = new_item
                      return new_item
              except KeyError:
                  return value
          elif base_gid in ['client', 'mail', 'from', 'rcpt', 'user'] and self.ip_lookup:
              ip_match = self.ip_pattern.search(value)
              if ip_match is None:
                  return value
              host = self.gethost(ip_match.group(1))
              if host == ip_match.group(1) or value.startswith(host):
                  return value
              return u''.join([
                  value[:ip_match.start(1)],
                  self.gethost(ip_match.group(1)),
                  value[ip_match.end(1):]])
          elif (base_gid == 'user' or base_gid == 'uid') and self.uid_lookup:
              return self.getuname(value)
          else:
              return value
docs: Return the value for a group id, applying requested mapping.
          Map only groups related to a filter, ie when the basename of
          the group is identical to the name of a filter.