Change Log

5.4.0 (2018/03/27)

Added

Deprecated

Fixed

  • Fix bug with positive pause_after values in streams provided by stream_generator() where the wait time was not reset after a yielded None.
  • Parse URLs with trailing slashes and no 'comments' element when creating Submission objects.
  • Fix bug where subreddit.submissions() returns a same submission more than once
  • Fix bug where ListingGenerator fetches the same batch of submissions in an infinite loop when 'before' parameter is provided.

Removed

  • Removed support for Python 3.3 as it is no longer supported by requests.

5.3.0 (2017/12/16)

Added

Fixed

  • Now raises prawcore.UnavailableForLegalReasons instead of an AssertionError when encountering a HTTP 451 response.

5.2.0 (2017/10/24)

Changed

  • An attribute on LiveUpdate now works as lazy attribute (i.e. populate an attribute when the attribute is first accessed).

Deprecated

  • subreddit.comments.gilded because there isn’t actually an endpoint that returns only gilded comments. Use subreddit.gilded instead.

Fixed

  • Removed comment.permalink() because comment.permalink is now an attribute returned by Reddit.

5.1.0 (2017/08/31)

Added

Fixed

  • Calling refresh() on a directly fetched, deeply nested Comment will additionally pull in as many parent comments as possible (currently 8) enabling significantly quicker traversal to the top-most Comment via successive parent() calls.
  • Calling refresh() previously could have resulted in a AttributeError: 'MoreComments' object has no attribute '_replies' exception. This situation will now result in a ClientException.
  • Properly handle BAD_CSS_NAME errors when uploading stylesheet images with invalid filenames. Previously an AssertionError was raised.
  • Submission’s gilded attribute properly returns the expected value from reddit.

5.0.1 (2017/07/11)

Fixed

  • Calls to hide() and unhide() properly batch into requests of 50 submissions at a time.
  • Lowered the average maximum delay between inactive stream checks by 4x to 16 seconds. It was previously 64 seconds, which was too long.

5.0.0 (2017/07/04)

Added

Changed

  • cloudsearch is no longer the default syntax for Subreddit.search(). lucene is now the default syntax so that PRAW’s default is aligned with Reddit’s default.
  • Reddit.info() will now take either a list of fullnames or a single URL string.
  • Subreddit.submit() accepts a flair template ID and text.

Fixed

Removed

4.6.0 (2017/07/04)

The release’s sole purpose is to announce the deprecation of the is_link parameter as described below:

Added

Deprecated

4.5.1 (2017/05/07)

Fixed

4.5.0 (2017/04/29)

Added

  • unread_count() to get unread count by conversation state.
  • bulk_read() to mark conversations as read by conversation state.
  • subreddits() to fetch subreddits using new modmail.
  • create() to create a new modmail conversation.
  • read() to mark modmail conversations as read.
  • unread() to mark modmail conversations as unread.
  • conversations() to get new modmail conversations.
  • highlight() to highlight modmail conversations.
  • unhighlight() to unhighlight modmail conversations.
  • mute() to mute modmail conversations.
  • unmute() to unmute modmail conversations.
  • archive() to archive modmail conversations.
  • unarchive() to unarchive modmail conversations.
  • reply() to reply to modmail conversations.
  • __call__() to get a new modmail conversation.
  • Inbox.stream() to stream new items in the inbox.
  • Exponential request delay to all streams when no new items are returned in a request. The maximum delay between requests is 66 seconds.

Changed

  • submit() accepts selftext='' to create a title-only submission.
  • Reddit accepts requestor_class=cls for a customized requestor class and requestor_kwargs={'param': value} for passing arguments to requestor initialization.
  • comments(), submissions(), and stream() accept a pause_after argument to allow pausing of the stream. The default value of None retains the preexisting behavior.

Deprecated

  • cloudsearch will no longer be the default syntax for Subreddit.search() in PRAW 5. Instead lucene will be the default syntax so that PRAW’s default is aligned with Reddit’s default.

Fixed

  • Fix bug where WikiPage revisions with deleted authors caused TypeError.
  • Submission attributes comment_limit and comment_sort maintain their values after making instances non-lazy.

4.4.0 (2017/02/21)

Added

Fixed

  • Uploading an image resulting in too large of a request (>500 KB) now raises prawcore.TooLarge instead of an AssertionError.
  • Uploading an invalid image raises APIException.
  • Redditor instances obtained via moderator (e.g., reddit.subreddit('subreddit').moderator()) will contain attributes with the relationship metadata (e.g., mod_permissions).
  • Message instances retrieved from the inbox now have attributes author, dest replies and subreddit properly converted to their appropriate PRAW model.

4.3.0 (2017/01/19)

Added

Fixed

4.2.0 (2017/01/07)

Added

Deprecated

Fixed

  • hide() and unhide() now accept a list of additional submissions.
  • replace_more() is now recoverable. Previously, when an exception was raised during the work done by replace_more(), all unreplaced MoreComments instances were lost. Now MoreComments instances are only removed once their children have been added to the CommentForest enabling callers of replace_more() to call the method as many times as required to complete the replacement.
  • Working with contributors on SubredditWiki is done consistently through contributor not contributors.
  • Subreddit.moderator() works.
  • live_thread.contributor() now returns RedditorList correctly.

Removed

  • validate_time_filter is no longer part of the public interface.

4.1.0 (2016/12/24)

Added

Changed

  • me() now caches its result in order to reduce redundant requests for methods that depend on it. Set use_cache=False when calling to bypass the cache.
  • replace_more() can be called on Comment replies.

Deprecated

  • validate_time_filter will be removed from the public interface in PRAW 4.2 as it was never intended to be part of it to begin with.
  • Iterating directly over SubredditRelationship (e.g., subreddit.banned, subreddit.contributor, subreddit.moderator, etc) and SubredditFlair will be removed in PRAW 5. Iterate instead over their callables, e.g. subreddit.banned() and subreddit.flair().
  • The following methods are deprecated to be removed in PRAW 5 and are replaced with similar Comment.mod... and Submission.mod... alternatives: Subreddit.mod.approve, Subreddit.mod.distinguish, Subreddit.mod.ignore_reports, Subreddit.mod.remove, Subreddit.mod.undistinguish, Subreddit.mod.unignore_reports.
  • Support for passing a Submission to SubredditFlair.set() will be removed in PRAW 5. Use flair() instead.
  • The thing argument to SubredditFlair.set() is replaced with redditor and will be removed in PRAW 5.

Fixed

  • SubredditModeration.update() accurately updates exclude_banned_modqueue, header_hover_text, show_media and show_media_preview values.
  • Instances of Comment obtained through the inbox (including mentions) are now refreshable.
  • Searching /r/all should now work as intended for all users.
  • Accessing an invalid attribute on an instance of Message will raise AttributeError instead of PRAWException.

4.0.0 (2016/11/29)

Fixed

  • Fix bug where ipython tries to access attribute _ipython_canary_method_should_not_exist_ resulting in a useless fetch.
  • Fix bug where Comment replies becomes [] after attempting to access an invalid attribute on the Comment.
  • Reddit.wiki[…] converts the passed in page name to lower case as pages are only saved in lower case and non-lower case page names results in a Redirect exception (thanks pcjonathan).

4.0.0rc3 (2016/11/26)

Added

4.0.0rc2 (2016/11/20)

Fixed

  • authorize() properly sets the session’s Authentication (thanks @williammck).

4.0.0rc1 (2016/11/20)

PRAW 4 introduces significant breaking changes. The numerous changes are not listed here, only the feature removals. Please read through Quick Start to help with updating your code to PRAW 4. If you require additional help please ask on /r/redditdev or in the praw-dev/praw channel on gitter.

Added

Changed

Note

Only prominent changes are listed here.

Removed

  • Removed Reddit’s login method. Authentication must be done through OAuth.
  • Removed praw-multiprocess as this functionality is no longer needed with PRAW 4.
  • Removed non-oauth functions Message.collapse and Message.uncollapse is_username_available.
  • Removed captcha related functions.

For changes prior to version 4.0 please see: 3.4.0 changelog