docs: def ParsePasswdEntry(self, line):
      """Process the passwd entry fields and primary group memberships."""
      fields = ("uname", "passwd", "uid", "gid", "fullname", "homedir", "shell")
      if line:
        rslt = dict(zip(fields, line.split(":")))
        user = self.entry.setdefault(rslt["uname"], rdf_client.User())
        user.username = rslt["uname"]
        user.pw_entry.store = self.GetPwStore(rslt["passwd"])
        if user.pw_entry.store == self.base_store:
          user.pw_entry.hash_type = self.GetHashType(rslt["passwd"])
        # If the passwd file contains NIS entries they may not have uid/gid set.
        if rslt["uid"]:
          user.uid = int(rslt["uid"])
        if rslt["gid"]:
          user.gid = int(rslt["gid"])
        user.homedir = rslt["homedir"]
        user.shell = rslt["shell"]
        user.full_name = rslt["fullname"]
        # Map uid numbers to detect duplicates.
        uids = self.uids.setdefault(user.uid, set())
        uids.add(user.username)
        # Map primary group memberships to populate memberships.
        gid = self.gids.setdefault(user.gid, set())
        gid.add(user.username)