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.

PRAW 2.1.20

  • [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.

PRAW 2.1.19

  • [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.

PRAW 2.1.18

  • [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”.

PRAW 2.1.17

  • [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.

PRAW 2.1.16

  • [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().

PRAW 2.1.15

  • [FEATURE] Add save OAuth scope to save() and unsave().
  • [BUGFIX] Fix Google AppEngine bug with platform.platform.
  • [REDDIT] Using get_flair() now requires moderator access. See this /r/redditdev thread
  • [CHANGE] Increase the dependency of update_checker to 0.9 or later.

PRAW 2.1.14

  • [CHANGE] Increase the dependency of six to 1.4 or later.

PRAW 2.1.13

  • [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.

PRAW 2.1.12

  • [FEATURE] Add json_dict to RedditContentObject.
  • [FEATURE] You can now give configuration settings directly when instantiating a BaseReddit object. See the configuration files
  • [BUGFIX] Fixed a bug that caused an AttributeError to be raised when using a deprecated method.

PRAW 2.1.11

PRAW 2.1.10

PRAW 2.1.9

  • [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.

PRAW 2.1.8

  • [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).

PRAW 2.1.7

PRAW 2.1.6

  • [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.

PRAW 2.1.5

  • [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.

PRAW 2.1.4

PRAW 2.1.3

PRAW 2.1.2

PRAW 2.1.1

  • [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.

PRAW 2.1.0

PRAW 2.0.15

  • [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.

PRAW 2.0.14

  • [BUGFIX] Prevent potential invalid redirect exception when using get_wiki_page().

PRAW 2.0.13

PRAW 2.0.12

  • [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.

PRAW 2.0.11

  • [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.

PRAW 2.0.10

PRAW 2.0.9

PRAW 2.0.8

  • [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.

PRAW 2.0.7

  • [REDDIT] A reddit update broke PRAW’s ability to use login() if it was authenticated as a logged-in user. This update adds the ability to re-login.
  • [CHANGE] get_flair_list() can now be used when logged-in as a regular user, being logged in as a mod of the subreddit is no longer required.

PRAW 2.0.6

  • [FEATURE] Add the get_unmoderated() method to Subreddit and base reddit objects. This returns a listings of submissions that haven’t been approved/removed by a moderator.

PRAW 2.0.5

  • [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.

PRAW 2.0.4

  • [BUGFIX] Fix python 3 failure within the test suite introduced in 2.0.3.

PRAW 2.0.3

  • [FEATURE] Add delete_image() method to Subreddit objects (also callable on the base reddit object with the subreddit as the first argument).
  • [CHANGE] PRAW now requires version 0.4 of update_checker.

PRAW 2.0.2

  • [BUGFIX] Fixed bug when comparing MoreComments classes in Python 3.x.

PRAW 2.0.1

PRAW 2.0.0

  • [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:
    • comment_limit
    • comment_sort
    • default_content_limit
    • gold_comments_max
    • more_comments_max
    • regular_comments_max
  • [CHANGE] Move the following methods from LoggedInRedditor to base reddit object.

PRAW 1.0.16

  • [FEATURE] Add support for /r/random.

PRAW 1.0.15

PRAW 1.0.14

  • [FEATURE] Extended functionality to Python 3.3.

PRAW 1.0.13

  • [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.

PRAW 1.0.12

  • [FEATURE] Support for optional ‘prev’ values added.

PRAW 1.0.11

PRAW 1.0.10

  • [FEATURE] Allow for the OS to not be identified when searching for praw.ini.

PRAW 1.0.9

PRAW 1.0.8

  • [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.

PRAW 1.0.7

  • [REDDIT] New fields prev_description_id and prev_public_description_id added to set_settings() as per the upstream change.

PRAW 1.0.6

PRAW 1.0.5

PRAW 1.0.4

PRAW 1.0.3

  • [REDDIT] The logged in / moderator checks for flair_list in Reddit are no longer needed and have been removed.

PRAW 1.0.2

  • [FEATURE] score property wrapped function have been added to Comment.

PRAW 1.0.1

  • [FEATURE] require_moderator decorator now supports multi-reddits.
  • [FEATURE] Rudimentary logging of the http requests have been implemented.

PRAW 1.0.0