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

class praw.models.Preferences(reddit)

   A class for Reddit preferences.

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

   __call__()

      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)

      Create a Preferences instance.

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

   update(**preferences)

      Modify the specified settings.

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

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

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

         * **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_digests** – Send email digests (boolean).

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

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

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

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

         * **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_locationbar** – Hide location bar (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).

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

         * **no_video_autoplay** – Don’t autoplay Reddit videos on
           the desktop comments page (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).

         * **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_promote** – Show promote (boolean).

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

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

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

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

         * **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).

      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(
              **{'3rd_party_data_personalized_ads': False})
