ModeratorRelationship
*********************

class praw.models.reddit.subreddit.ModeratorRelationship(subreddit, relationship)

   Provides methods to interact with a Subreddit’s moderators.

   Moderators of a subreddit can be iterated through like so:

      for moderator in reddit.subreddit("redditdev").moderator():
          print(moderator)

   __call__(redditor=None)

      Return a list of Redditors who are moderators.

      Parameters:
         **redditor** – When provided, return a list containing at
         most one "Redditor" instance. This is useful to confirm if a
         relationship exists, or to fetch the metadata associated with
         a particular relationship (default: None).

      Note:

        Unlike other relationship callables, this relationship is not
        paginated. Thus it simply returns the full list, rather than
        an iterator for the results.

      To be used like:

         moderators = reddit.subreddit("nameofsub").moderator()

      For example, to list the moderators along with their permissions
      try:

         for moderator in reddit.subreddit("SUBREDDIT").moderator():
             print(f'{moderator}: {moderator.mod_permissions}')

   __init__(subreddit, relationship)

      Create a SubredditRelationship instance.

      Parameters:
         * **subreddit** – The subreddit for the relationship.

         * **relationship** – The name of the relationship.

   add(redditor, permissions=None, **other_settings)

      Add or invite "redditor" to be a moderator of the subreddit.

      Parameters:
         * **redditor** – A redditor name (e.g., ""spez"") or
           "Redditor" instance.

         * **permissions** – When provided (not "None"), permissions
           should be a list of strings specifying which subset of
           permissions to grant. An empty list "[]" indicates no
           permissions, and when not provided "None", indicates full
           permissions.

      An invite will be sent unless the user making this call is an
      admin user.

      For example, to invite ""spez"" with ""posts"" and ""mail""
      permissions to "r/test", try:

         reddit.subreddit("test").moderator.add("spez", ["posts", "mail"])

   invite(redditor, permissions=None, **other_settings)

      Invite "redditor" to be a moderator of the subreddit.

      Parameters:
         * **redditor** – A redditor name (e.g., ""spez"") or
           "Redditor" instance.

         * **permissions** – When provided (not "None"), permissions
           should be a list of strings specifying which subset of
           permissions to grant. An empty list "[]" indicates no
           permissions, and when not provided "None", indicates full
           permissions.

      For example, to invite ""spez"" with "posts" and "mail"
      permissions to "r/test", try:

         reddit.subreddit("test").moderator.invite("spez", ["posts", "mail"])

   invited(redditor=None, **generator_kwargs)

      Return a "ListingGenerator" for Redditors invited to be
      moderators.

      Parameters:
         **redditor** – When provided, return a list containing at
         most one "Redditor" instance. This is useful to confirm if a
         relationship exists, or to fetch the metadata associated with
         a particular relationship (default: None).

      Additional keyword arguments are passed in the initialization of
      "ListingGenerator".

      Note:

        Unlike other usages of "ListingGenerator", "limit" has no
        effect in the quantity returned. This endpoint always returns
        moderators in batches of 25 at a time regardless of what
        "limit" is set to.

      Usage:

         for invited_mod in reddit.subreddit("NAME").moderator.invited():
             print(invited_mod)

   leave()

      Abdicate the moderator position (use with care).

      For example:

         reddit.subreddit("subredditname").moderator.leave()

   remove(redditor)

      Remove "redditor" from this relationship.

      Parameters:
         **redditor** – A redditor name (e.g., ""spez"") or "Redditor"
         instance.

   remove_invite(redditor)

      Remove the moderator invite for "redditor".

      Parameters:
         **redditor** – A redditor name (e.g., ""spez"") or "Redditor"
         instance.

      For example:

         reddit.subreddit("subredditname").moderator.remove_invite("spez")

   update(redditor, permissions=None)

      Update the moderator permissions for "redditor".

      Parameters:
         * **redditor** – A redditor name (e.g., ""spez"") or
           "Redditor" instance.

         * **permissions** – When provided (not "None"), permissions
           should be a list of strings specifying which subset of
           permissions to grant. An empty list "[]" indicates no
           permissions, and when not provided, "None", indicates full
           permissions.

      For example, to add all permissions to the moderator, try:

         subreddit.moderator.update("spez")

      To remove all permissions from the moderator, try:

         subreddit.moderator.update("spez", [])

   update_invite(redditor, permissions=None)

      Update the moderator invite permissions for "redditor".

      Parameters:
         * **redditor** – A redditor name (e.g., ""spez"") or
           "Redditor" instance.

         * **permissions** – When provided (not "None"), permissions
           should be a list of strings specifying which subset of
           permissions to grant. An empty list "[]" indicates no
           permissions, and when not provided, "None", indicates full
           permissions.

      For example, to grant the "flair`" and "mail`" permissions to
      the moderator invite, try:

         subreddit.moderator.update_invite("spez", ["flair", "mail"])
