Preferences
***********

class praw.models.Preferences(reddit: Reddit)

   A class for Reddit preferences.

   The Preferences class provides access to the Reddit preferences of
   the currently authenticated user.

   __call__() -> Dict[str, Union[bool, int, str]]

      Return the preference settings of the authenticated user as a
      dict.

      This method is intended to be accessed as
      "reddit.user.preferences()" like so:

         preferences = reddit.user.preferences()
         print(preferences["show_link_flair"])

      See https://www.reddit.com/dev/api#GET_api_v1_me_prefs for the
      list of possible values.

   __init__(reddit: Reddit)

      Create a Preferences instance.

      Parameters:
         **reddit** – The Reddit instance.

   update(**preferences: Union[bool, int, str])

      Modify the specified settings.

      Parameters:
         * **accept_pms** – Who can send you personal messages (one of
           "everyone", "whitelisted").

         * **activity_relevant_ads** – Allow Reddit to use your
           activity on Reddit to show you more relevant advertisements
           (boolean).

         * **allow_clicktracking** – Allow Reddit to log my outbound
           clicks for personalization (boolean).

         * **beta** – I would like to beta test features for Reddit
           (boolean).

         * **clickgadget** – Show me links I’ve recently viewed
           (boolean).

         * **collapse_read_messages** – Collapse messages after I’ve
           read them (boolean).

         * **compress** – Compress the link display (boolean).

         * **creddit_autorenew** – Use a creddit to automatically
           renew my gold if it expires (boolean).

         * **default_comment_sort** – Default comment sort (one of
           ""confidence"", ""top"", ""new"", ""controversial"",
           ""old"", ""random"", ""qa"", ""live"").

         * **domain_details** – Show additional details in the domain
           text when available, such as the source subreddit or the
           content author’s url/name (boolean).

         * **email_chat_request** – Send chat requests as emails
           (boolean).

         * **email_comment_reply** – Send comment replies as emails
           (boolean).

         * **email_digests** – Send email digests (boolean).

         * **email_messages** – Send messages as emails (boolean).

         * **email_post_reply** – Send post replies as emails
           (boolean).

         * **email_private_message** – Send private messages as emails
           (boolean).

         * **email_unsubscribe_all** – Unsubscribe from all emails
           (boolean).

         * **email_upvote_comment** – Send comment upvote updates as
           emails (boolean).

         * **email_upvote_post** – Send post upvote updates as emails
           (boolean).

         * **email_user_new_follower** – Send new follower alerts as
           emails (boolean).

         * **email_username_mention** – Send username mentions as
           emails (boolean).

         * **enable_default_themes** – Use reddit theme (boolean).

         * **feed_recommendations_enabled** – Enable feed
           recommendations (boolean).

         * **geopopular** – Location (one of ""GLOBAL"", ""AR"",
           ""AU"", ""BG"", ""CA"", ""CL"", ""CO"", ""CZ"", ""FI"",
           ""GB"", ""GR"", ""HR"", ""HU"", ""IE"", ""IN"", ""IS"",
           ""JP"", ""MX"", ""MY"", ""NZ"", ""PH"", ""PL"", ""PR"",
           ""PT"", ""RO"", ""RS"", ""SE"", ""SG"", ""TH"", ""TR"",
           ""TW"", ""US"", ""US_AK"", ""US_AL"", ""US_AR"", ""US_AZ"",
           ""US_CA"", ""US_CO"", ""US_CT"", ""US_DC"", ""US_DE"",
           ""US_FL"", ""US_GA"", ""US_HI"", ""US_IA"", ""US_ID"",
           ""US_IL"", ""US_IN"", ""US_KS"", ""US_KY"", ""US_LA"",
           ""US_MA"", ""US_MD"", ""US_ME"", ""US_MI"", ""US_MN"",
           ""US_MO"", ""US_MS"", ""US_MT"", ""US_NC"", ""US_ND"",
           ""US_NE"", ""US_NH"", ""US_NJ"", ""US_NM"", ""US_NV"",
           ""US_NY"", ""US_OH"", ""US_OK"", ""US_OR"", ""US_PA"",
           ""US_RI"", ""US_SC"", ""US_SD"", ""US_TN"", ""US_TX"",
           ""US_UT"", ""US_VA"", ""US_VT"", ""US_WA"", ""US_WI"",
           ""US_WV"", ""US_WY"").

         * **hide_ads** – Hide ads (boolean).

         * **hide_downs** – Don’t show me submissions after I’ve
           downvoted them, except my own (boolean).

         * **hide_from_robots** – Don’t allow search engines to index
           my user profile (boolean).

         * **hide_ups** – Don’t show me submissions after I’ve upvoted
           them, except my own (boolean).

         * **highlight_controversial** – Show a dagger on comments
           voted controversial (boolean).

         * **highlight_new_comments** – Highlight new comments
           (boolean).

         * **ignore_suggested_sort** – Ignore suggested sorts
           (boolean).

         * **in_redesign_beta** – In redesign beta (boolean).

         * **label_nsfw** – Label posts that are not safe for work
           (boolean).

         * **lang** – Interface language (IETF language tag,
           underscore separated).

         * **legacy_search** – Show legacy search page (boolean).

         * **live_orangereds** – Send message notifications in my
           browser (boolean).

         * **mark_messages_read** – Mark messages as read when I open
           my inbox (boolean).

         * **media** – Thumbnail preference (one of ""on"", ""off"",
           ""subreddit"").

         * **media_preview** – Media preview preference (one of
           ""on"", ""off"", ""subreddit"").

         * **min_comment_score** – Don’t show me comments with a score
           less than this number (int between "-100" and "100").

         * **min_link_score** – Don’t show me submissions with a score
           less than this number (int between "-100" and "100").

         * **monitor_mentions** – Notify me when people say my
           username (boolean).

         * **newwindow** – Open links in a new window (boolean).

         * **nightmode** – Enable night mode (boolean).

         * **no_profanity** – Don’t show thumbnails or media previews
           for anything labeled NSFW (boolean).

         * **num_comments** – Display this many comments by default
           (int between "1" and "500").

         * **numsites** – Number of links to display at once (int
           between "1" and "100").

         * **organic** – Show the spotlight box on the home feed
           (boolean).

         * **other_theme** – Subreddit theme to use (subreddit name).

         * **over_18** – I am over eighteen years old and willing to
           view adult content (boolean).

         * **private_feeds** – Enable private RSS feeds (boolean).

         * **profile_opt_out** – View user profiles on desktop using
           legacy mode (boolean).

         * **public_votes** – Make my votes public (boolean).

         * **research** – Allow my data to be used for research
           purposes (boolean).

         * **search_include_over_18** – Include not safe for work
           (NSFW) search results in searches (boolean).

         * **send_crosspost_messages** – Send crosspost messages
           (boolean).

         * **send_welcome_messages** – Send welcome messages
           (boolean).

         * **show_flair** – Show user flair (boolean).

         * **show_gold_expiration** – Show how much gold you have
           remaining on your userpage (boolean).

         * **show_link_flair** – Show link flair (boolean).

         * **show_location_based_recommendations** – Show location
           based recommendations (boolean).

         * **show_presence** – Show presence (boolean).

         * **show_promote** – Show promote (boolean).

         * **show_stylesheets** – Allow subreddits to show me custom
           themes (boolean).

         * **show_trending** – Show trending subreddits on the home
           feed (boolean).

         * **show_twitter** – Show a link to your Twitter account on
           your profile (boolean).

         * **store_visits** – Store visits (boolean).

         * **theme_selector** – Theme selector (subreddit name).

         * **third_party_data_personalized_ads** – Allow Reddit to use
           data provided by third-parties to show you more relevant
           advertisements on Reddit (boolean).

         * **third_party_personalized_ads** – Allow personalization of
           advertisements (boolean).

         * **third_party_site_data_personalized_ads** – Allow
           personalization of advertisements using third-party website
           data (boolean).

         * **third_party_site_data_personalized_content** – Allow
           personalization of content using third-party website data
           (boolean).

         * **threaded_messages** – Show message conversations in the
           inbox ( boolean).

         * **threaded_modmail** – Enable threaded modmail display
           (boolean).

         * **top_karma_subreddits** – Top karma subreddits (boolean).

         * **use_global_defaults** – Use global defaults (boolean).

         * **video_autoplay** – Autoplay Reddit videos on the desktop
           comments page (boolean).

      Additional keyword arguments can be provided to handle new
      settings as Reddit introduces them.

      See https://www.reddit.com/dev/api#PATCH_api_v1_me_prefs for the
      most up-to-date list of possible parameters.

      This is intended to be used like so:

         reddit.user.preferences.update(show_link_flair=True)

      This method returns the new state of the preferences as a
      "dict", which can be used to check whether a change went
      through.

         original_preferences = reddit.user.preferences()
         new_preferences = reddit.user.preferences.update(invalid_param=123)
         print(original_preferences == new_preferences)  # True, no change

      Warning:

        Passing an unknown parameter name or an illegal value (such as
        an int when a boolean is expected) does not result in an error
        from the Reddit API. As a consequence, any invalid input will
        fail silently. To verify that changes have been made, use the
        return value of this method, which is a dict of the
        preferences after the update action has been performed.

      Some preferences have names that are not valid keyword arguments
      in Python. To update these, construct a "dict" and use "**" to
      unpack it as keyword arguments:

         reddit.user.preferences.update(**{"third_party_data_personalized_ads": False})
