- The changes listed below are divided into four categories.
- [BUGFIX] Something was broken before, but is now fixed.
- [CHANGE] Other changes affecting user programs, such as the renaming of a function.
- [FEATURE] Something new has been added.
- [REDDIT] A change caused by an upstream change from reddit.
Read /r/changelog to be notified of upstream changes.
- [BUGFIX] Attempting to lazyload an attribute of a comment that has been removed will explicitly raise a praw.errors.InvalidComment() exception, rather than an IndexError (issue #339).
- [BUGFIX] replace_more_comments() handles continue this thread type MoreComments objects.
- [FEATURE] Added praw.helpers.valid_redditors().
- [FEATURE] Added a nsfw parameter to get_random_subreddit() that permits fetching a random NSFW Subreddit. This change also supports fetching these subreddits via get_subreddit('randnsfw').
- [FEATURE] Added a from_sr parameter to send_message() to send the private message from a subreddit you moderate (Like the “From” dropdown box when composing a message).
- [FEATURE] Added Multireddit
- [FEATURE] Added get_multireddit() to get a single multireddit obj
- [FEATURE] Added get_my_multireddits() to get all multireddits owned by the logged in user.
- [FEATURE] Added get_multireddit() to Redditor to quickly get a multireddit belonging to that user.
- [FEATURE] praw.objects.Comment, praw.objects.Redditor, and praw.objects.Submission are now gildable.
- [FEATURE] praw.objects.Comment is now saveable.
- [REDDIT] Handle upstream change in reddit’s OAuth2 scope parsing.
- [BUGFIX] Support URLs in search().
- [BUGFIX] Fix bug where json_dict was set to None when it should not have been.
- [BUGFIX] Fix get_subreddit_recommendations() to work with the updated API route.
- [BUGFIX] Track time between requests using timeit.default_timer.
- [CHANGE] get_friends() and get_banned() once again work.
- [CHANGE] is_root() no longer requires fetching submission objects.
- [REDDIT] Support thing_id lists in get_info().
- [FEATURE] Support providing HTTPS proxies, that is, proxies specific to handling HTTPS requests.
- [FEATURE] get_liked() and get_disliked() now accept additional arguments, e.g., limit.
- [FEATURE] Add get_messages() for specifically retreiving messages (not replies).
- [REDDIT] Add collapse_deleted_comments as a parameter to set_settings().
- [REDDIT] get_stylesheet() now supports using the modconfg OAuth scope.
- [REDDIT] get_stylesheet() no longer accepts the prevstyle argument.
- [FEATURE] Add the get_flair_choices() method to the Submission class, which returns the choices for user flair in the subreddit and the current flair of the authenticated user.
- [FEATURE] Add the get_flair_choices() method to the Submission class, which returns the choices for link flair on this submission as well as it’s current flair.
- [BUGFIX] Fix python3 issue with func_defaults.
- [REDDIT] Avoid exceptions caused by upstream changes by reddit with respect to conflicts between json attributes and RedditContentObject properties. In such cases, the attribute from reddit will be suffixed with “_reddit”.
- [BUGFIX] Remove the built-in score property from comments as reddit provides that attribute as of 2014/06/18.
- [FEATURE] submit() now supports a resubmit argument to allow the submission of an already submitted url.
- [BUGFIX] Fix incorrect username when building Redditor objects from wikipage submissions.
- [CHANGE] Increase the dependency of update_checker to 0.10 or later to prevent ImportWarnings (issue 291).
- [CHANGE] get_banned() now takes a user_only argument (default: True). When the value is explicitly passed as False the return value is not a generator of Redditor objects, but a generator of dictionaries whose name key corresponds to the Redditor object and whose ban-note is at key note.
- [FEATURE] Enable gathering of duplicate submissions for a Submission object (issue 290).
- [FEATURE] Add praw.__init__.AuthenticatedReddit.delete().
- [CHANGE] Increase the dependency of six to 1.4 or later.
- [FEATURE] Support building wheel binary distributions.
- [FEATURE] get_submission() and from_url() now supports url parameters. Both included within the url and explicitly via the “params” argument.
- [CHANGE] The dependency on update_checker has been increased to >= 0.8.
- [REDDIT] Add support for changes to UserLists on reddit.
- [REDDIT] Using get_flair_list now requires moderator access. See this /r/redditdev thread
- [BUGFIX] Fix configuration parsing for store_json_result.
- [BUGFIX] Fix duplicate bug in BoundedSet.
- [FEATURE] Added ignore_reports() and unignore_reports() to Comment and Submission.
- [BUGFIX] The history scope is not required for get_comments(), get_overview() and get_submitted() despite the official reddit documentation saying so. Redditors may choose to make their voting record public, in which case no authentication is required for get_disliked() or get_liked(). The history scope requirement for the above-mentioned methods has been removed.
- [FEATURE] mark_as_nsfw() and unmark_as_nsfw() can now be used if the currently authenticated user is the author of the Submission.
- [FEATURE] get_contributors() can now be used for accessing the contributor list of protected/private subreddits without requiring moderator access. See issue issue 246.
- [BUGFIX] Fixed Comment erroneously having the methods mark_as_nsfw and unmark_as_nsfw, despite comments not being able to be marked as NSFW.
- [REDDIT] Update get_subreddit_recommendations() to handle changed returned data format.
- [FEATURE] Add get_subreddit_recommendations() to get a recommendation of subreddits based on a list of provided subreddits.
- [FEATURE] Subreddit now has an __repr__ method. So it’s now possible to identify what subreddit the object represents from the human readable representation of the object.
- [FEATURE] Add praw.__init__.UnauthenticatedReddit.get_rising() that returns the rising listing of the front page in the context of the currently logged-in user (if any).
- [FEATURE] Add methods set_contest_mode() and unset_contest_mode() to Submission, for (un)setting of contest modes. See this Reddit post for information about contest mode.
- [FEATURE] Move methods get_liked() and get_liked() to Redditor from LoggedInRedditor. Redditors can make their likes and dislikes public. Having get_liked() and get_liked() on Redditor allows PRAW to access this info.
- [FEATURE] The has_fetched attribute has been added to all objects save Reddit, see the lazy loading page in PRAW’s documentation for more details.
- [BUGFIX] Fixed a bug that caused the timeout configuration setting to always be the default 45 irrespective of what it was set to in praw.ini.
- [BUGFIX] PRAW automatically retries failed requests to reddit if the error is likely to be a temporary one. This resulted in spamming reddit if the error occurred after content had been saved to reddit’s database. Therefore the following methods will no longer retry failed request upload_image(), send_message(), submit(), send_feedback(), reply() and add_comment(). Additionally request_json() now has the retry_on_error argument, which if set to True will prevent retries of the request if it fails.
- [FEATURE] select_flair() method added, can be used to change your flair without moderator access on subreddits that allow it.
- [FEATURE] Add sticky() and unsticky() to sticky and unsticky a submission to the top of a subreddit.
- [FEATURE] Add arguments syntax and period to search().
- [FEATURE] PRAW will now try to use the http_proxy environment variable for proxy settings, if no proxy is set in the configuration file.
- [BUGFIX] get_stylesheet() erroneously required moderator access. It now just requires that the authenticated user has access to the subreddit.
- [BUGFIX] Fix bug that prevented the usage of search() when called from Subreddit.
- [FEATURE] get_mod_mail() can now be used to get moderator mail from individual subreddits, instead of all moderated subreddits, just like get_mod_queue().
- [FEATURE] Added get_mentions() which is a get_content() generator for username mentions. Only usable if the authenticated user has gold.
- [BUGFIX] Fixed an error in get_mod_queue(), get_reports(), get_spam() and get_unmoderated() when calling them from Reddit without giving the subreddit argument explicitly.
- [REDDIT] New fields public_traffic added to set_settings() as per the upstream change.
- [FEATURE] Added UnauthenticatedReddit.get_random_submission().
- [BUGFIX] Verify that sys.stdin has closed attribute before checking if the stream is closed.
- [FEATURE] Added praw.helpers.comment_stream() to provide a neverending stream of new comments.
- [BUGFIX] Don’t cache requests whose responses will result in an exception. This bug was introduced in version 2.1.0.
- [FEATURE] PRAW now supports proper rate-limiting and shared caching when running multiple processes. See Concurrent PRAW Instances for usage information.
- [CHANGE] Remove explicit limit parameters from functions that utilize get_content() but don’t alter the limit. This change will result in broken code if the calling code utilizes positional instead of keyword arguments.
- [CHANGE] get_flair() returns None when the redditor does not exist.
- [CHANGE] Deprecated get_all_comments(). Use get_comments() with all as the subreddit argument.
- [CHANGE] Deprecated get_my_reddits(). Use get_my_subreddits() instead.
- [CHANGE] Deprecated get_popular_reddits(). Use get_popular_subreddits() instead.
- [BUGFIX] Allow editing non-top-level wiki pages fetched using Subreddit.get_wiki_page().
- [BUGFIX] Fix a bug in submit(). See https://github.com/praw-dev/praw/issues/213.
- [BUGFIX] Fix a python 3.3 bug in upload_image(). See https://github.com/praw-dev/praw/issues/211.
- [FEATURE] PRAW can now use a proxy server, see #206. The parameter http_proxy (optional) has been added to the configuration file to define a proxy server in the form host:ip or http://login:user@host:ip.
- [FEATURE] Added get_submissions() to batch convert fullnames (t3_bas36id) into Submission objects.
- [FEATURE] Added get_wiki_banned() to get a list of wiki banned users.
- [FEATURE] Added add_wiki_ban() and remove_wiki_ban() to manage the list of wiki banned users.
- [FEATURE] Added get_wiki_contributors() to get a list of wiki contributors.
- [FEATURE] Added add_wiki_contributor() and remove_wiki_contributor() to manage the list of wiki contributors.
- [FEATURE] Added get_wiki_page() to fetch an individual WikiPage.
- [FEATURE] Added get_wiki_pages() to get a list of WikiPage objects.
- [FEATURE] Wiki pages can be edited through either the WikiPage.edit() method of an already existing WikiPage object, or through the edit_wiki_page() function. edit_wiki_page() is also used to create new wiki pages.
- [CHANGE] Deprecated ban(), unban(), make_contributor(), and make_moderator() in favor of the consistently named add_ban(), remove_ban(), add_contributor(), and add_moderator() respectively.
- [FEATURE] PRAW can now decode HTML entities, see #186. The parameter decode_html_entities (default False) has been added to the configuration file to control whether this feature is activated.
- [FEATURE] Add InvalidSubreddit exception which is raised when attempting to get a listing for a nonexistent subreddit.
- [FEATURE] All functions that use the get_content() generator function now take *args, **kwargs.
- [BUGFIX] Requesting user specific data such as get_unread() while OAuthenticated as a user, then switching OAuthentication to another user and re-requesting the data within cache_timeout would return the cached results matching the previously authenticated user.
- [BUGFIX] friend() and unfriend() used to raise an AttributeError when called without user/pswd authentication. It now properly raises LoginRequired.
- [FEATURE] Add the raise_captcha_exception argument to RequireCaptcha decorator. When raise_captcha_exception is True (default False), PRAW wil not prompt for the captcha information but instead raise a InvalidCaptcha exception.
- [REDDIT] An upstream change has split new and rising into their own independent listings. Use the new praw.objects.Subreddit.get_rising() method instead of the old get_new_by_rising() and get_new() instead of get_new_by_date().
- [CHANGE] The dependency on update_checker has been increased from >= 0.4 to >= 0.5.
- [BUGFIX] After inviting a moderator invite, the cached set of moderated subreddits would not be updated with the new subreddit. Causing restrict_access() to prevent performing moderater actions in the subreddit.
- [FEATURE] Add parameter update_user (default False) to get_unread() if it and unset_has_mail are both True, then the user object in the Reddit object will have its has_mail attribute set to False.
- [FEATURE] Add get_friends() and get_blocked() to LoggedInRedditor.
- [FEATURE] Add the read scope to get_all_comments() in the Reddit object.
- [FEATURE] Add the read scope to get_comments() and the subreddit listings such as get_new() in the Reddit() and Subreddit() object.
- [BUGFIX] Fix bug in MoreComments.comments().
- [CHANGE] Break get_friends() and get_banned() until there is an upstream fix to mean that does not require ssl for those endpoints.
- [FEATURE] Add unset_has_mail parameter to get_unread(), if it’s set to True, then it will set has_mail for the logged-in user to False.
- [FEATURE] Add the parameter gilded_only to get_comments() and get_all_comments() methods in Subreddit and base reddit objects. If gilded_only is set to True, then only gilded comments will be returned.
- [FEATURE] Add get_comments() method to Reddit object. It works like get_comments() in Subreddit objects except it takes the subreddit as the first argument.
- [BUGFIX] Fix python 3 failure within the test suite introduced in 2.0.3.
- [FEATURE] Support reddit OAuth2 scopes (passwordless authentication). See PRAW and OAuth for usage information.
- [FEATURE] Maximize the number of items fetched when explicit limits are set thus reducing the number of requests up to 4x in some cases.
- [FEATURE] Add the following API methods to Subreddit objects (also callable on the base reddit object with the subreddit as the first argument):
- [FEATURE] Support ‘admin’ and special distinguishing of items via distinguish().
- [FEATURE] Ability to specify max-character limit for object-to-string representations via output_chars_limit in praw.ini.
- [CHANGE] Remove comments_flat property of Submission objects. The new praw.helpers.flatten_tree() can be used to flatten comment trees.
- [CHANGE] Remove all_comments and all_comments_flat properties of Submission objects. The now public method replace_more_comments() must now be explicitly called to replace instances of MoreComments within the comment tree.
- [CHANGE] The content_id attribute of RedditContentObject has been renamed to fullname.
- [CHANGE] The info base Reddit instance method has been renamed to get_info().
- [CHANGE] get_saved_links has been renamed to get_saved() and moved to the LoggedInRedditor (r.user) namespace.
- [CHANGE] The Subreddit get_info method has been renamed to from_url() and supports parameters for changing the number of comments to fetch and by what sort method.
- [CHANGE] The get_submission() method also now supports parameters for changing the number of comments to fetch and by what sort method.
- [CHANGE] mark_as_nsfw() and unmark_as_nsfw() can no longer be used on Subreddit objects. Use update_settings(nsfw=True) instead.
- [CHANGE] Remove depreciated method compose_message.
- [CHANGE] Refactored and add a number of exception classes (docs, source) This includes the renaming of:
- [CHANGE] Simplify content-limit handling and remove the following no-longer necessary parameters from praw.ini:
- [CHANGE] Move the following methods from LoggedInRedditor to base reddit object.
- [FEATURE] Add support for /r/random.
- [FEATURE] Extended functionality to Python 3.3.
- [BUGFIX] Fixed non-equality bug. Before comparing two PRAW objects with != would always return True.
- [FEATURE] Added the function my_contributions to LoggedInRedditor. Use this to find the subreddits where the user is an approved contributor.
- [CHANGE] Voting on something will now force the next call to get_liked() or get_disliked() to re-query from the reddit rather than use the cache.
- [FEATURE] Support for optional ‘prev’ values added.
- [FEATURE] Allow for the OS to not be identified when searching for praw.ini.
- [CHANGE] Printing a Submission to sys.stdout will now limit the output length to 80 chars, just like Comment does.
- [FEATURE] The maximum amount of comments that can be retrieved alongside a submission for gold and regular accounts has been exported to praw.ini.
- [REDDIT] Checks for login/moderator in get_moderators() and get_flair() for Subreddit are no longer necessary.
- [FEATURE] Added the function refresh() to Submission, Subreddit and Redditor. This will make PRAW re-query either reddit or the cache, depending on whether the last call was within cache_timeout, for the latest values and update the objects values.
- [FEATURE] Added functions get_liked(), get_disliked() and get_hidden() to LoggedInRedditor to allow you to get the Things the user has upvoted, downvoted or hidden.
- [BUGFIX] Temporary bugfix until prevstyles become optional.
- [FEATURE] Added prevstyle to set_stylesheet requests.
- [BUGFIX] Putting in user or pswd to praw.ini without values will no longer make it impossible to login.
- [FEATURE] You can now have just user filled out in praw.ini to ease login while remaining safe.
- [REDDIT] New fields prev_description_id and prev_public_description_id added to set_settings() as per the upstream change.
- [REDDIT] The logged in / moderator checks for flair_list in Reddit are no longer needed and have been removed.
- [FEATURE] require_moderator decorator now supports multi-reddits.
- [FEATURE] Rudimentary logging of the http requests have been implemented.