docs: def _get_userinfo(self):
          """
          Get a dictionary that pulls together information about the poster
          safely for both authenticated and non-authenticated comments.
  
          This dict will have ``name``, ``email``, and ``url`` fields.
          """
          if not hasattr(self, "_userinfo"):
              userinfo = {
                  "name": self.user_name,
                  "email": self.user_email,
                  "url": self.user_url
              }
              if self.user_id:
                  u = self.user
                  if u.email:
                      userinfo["email"] = u.email
  
                  # If the user has a full name, use that for the user name.
                  # However, a given user_name overrides the raw user.username,
                  # so only use that if this comment has no associated name.
                  if u.get_full_name():
                      userinfo["name"] = self.user.get_full_name()
                  elif not self.user_name:
                      userinfo["name"] = u.get_username()
              self._userinfo = userinfo
          return self._userinfo