Skip to content

Latest commit

 

History

History
921 lines (720 loc) · 38.2 KB

CHANGES.rst

File metadata and controls

921 lines (720 loc) · 38.2 KB

Change Log

Unreleased

Added

  • Add method ~.Subreddits.premium to reflect the naming change in Reddit's API.
  • Ability to submit image galleries with .submit_gallery.
  • Ability to pass a gallery url to .Reddit.submission.
  • Ability to specify modmail mute duration.
  • Add method .invited to get invited moderators of a subreddit.
  • Add method ~.Submission.award and ~.Comment.award with the ability to specify type of award, anonymity, and message when awarding a submission or comment.
  • Ability to specify subreddits by name using the subreddits parameter in .Reddit.info.

Changed

  • Drop support for Python 3.5, which is end-of-life on 2020-09-13.

Deprecated

  • ~.Subreddits.gold is superseded by ~.Subreddits.premium.
  • ~.Submission.gild is superseded by ~.Submission.award.
  • ~.Comment.gild is superseded by ~.Comment.award.

Fixed

  • An issue where leaving as a moderator fails if you are using token auth.
  • An issue where an incorrect error was being raised due to invalid submission urls.

7.1.0 (2020/06/22)

Added

  • .Rule to represent one rule of a subreddit.
  • .SubredditRules to get and add rules.
  • Ability to submit polls with .submit_poll.
  • .PollData and .PollOption.
  • Ability to view poll data and poll options via the .poll_data attribute on poll submissions.
  • Add method ~.Reddit.delete to .Reddit class to support HTTP DELETE requests.
  • Added .CalendarConfiguration to represent the configuration of a .Calendar widget.
  • Added .Hover to represent the hover state of a .Button.
  • Added .Styles to represent widget styling information.
  • Ability to stream live thread updates via new class .LiveThreadStream with method ~.LiveThreadStream.updates.

Changed

  • .RemovalReason.update's parameters are now optional.
  • .SubredditRemovalReasons.__getitem__ now takes integers and slices to get removal reasons from the list of reasons as returned by Reddit.

Deprecated

  • .WebSocketException.original_exception is deprecated and slated for removal in PRAW 8.0.

Deprecated

  • .SubredditStylesheet's __call__ method (subreddit.stylesheet()) is deprecated and slotted for removal in PRAW 8.0.

Fixed

  • An issue where certain subreddit settings could not be set through .SubredditModeration.update, such as welcome_message_enabled and welcome_message_text. This change also removes the need for PRAW to track current subreddit settings and send unmodified ones in the update request.
  • Instances of BadRequests captured by PRAW that do not contain any detailed JSON data are re-raised as the original BadRequest.
  • .submit_image and .submit_video will throw .MediaPostFailed when Reddit fails to post an image or video post.

Removed

  • Class Stylesheet no longer exists. It has been merged with .SubredditStylesheet.

7.0.0 (2020/04/24)

Added

  • config_interpolation parameter for .Reddit supporting basic and extended modes.
  • Add .Redditors.partial_redditors that returns lightweight redditor objects that contain only a few fields. This is useful for resolving Redditor IDs to their usernames in bulk.
  • .User.friends has a new parameter user that takes either an instance of .Redditor or a string containing a redditor name and returns an instance of .Redditor if the authenticated user is friends with the user, otherwise throws an exception.
  • .SubmissionModeration.flair has the parameter flair_template_id for applying flairs with template IDs.
  • ~.Emoji.update supports modifying an emoji's permissions.
  • ~.SubredditEmoji.add now supports optionally passing booleans to set an emoji's permissions upon upload.
  • Methods .SubredditLinkFlairTemplates.update and .SubredditRedditorFlairTemplates.update contain a new parameter, fetch, that toggles the automatic fetching of existing data from Reddit. It is set to True by default.
  • Values in methods .SubredditLinkFlairTemplates.update and .SubredditRedditorFlairTemplates.update that are left as the defaults will no longer be over-written if the fetch parameter is set to True, but will fill in existing values for the flair template.
  • The parameter text for methods .SubredditLinkFlairTemplates.update and .SubredditRedditorFlairTemplates.update is no longer required.
  • There is a new method, .Subreddit.post_requirements, to fetch a subreddit's post requirements.
  • Method .SubmissionModeration.sticky will now ignore the Confict exception generated by trying to sticky the same post multiple times.
  • A new method .CommentModeration.show will uncollapse a comment that was collapsed because of Crowd Control
  • Methods .Subreddit.submit_image and .Subreddit.submit_video will throw .TooLargeMediaException if the submitted media is rejected by Reddit due to the size of the media.
  • Class .Reddit has an attribute, validate_on_submit, that can be set after class initialization that causes methods .Subreddit.submit, .Subreddit.submit_image, .Subreddit.submit_video, and .Submission.edit to check that the submission matches a subreddit's post validation rules. This attribute will be functionally useless once Reddit implements their change. This attribute will be deprecated on the next release after Reddit's change, and will be removed on the next major release after Reddit's change.

Warning

In May-June 2020, Reddit will force all submissions to run through a subreddit's validation rules.

  • Introduced a data class, .RedditErrorItem, to represent an individual error item returned from Reddit.
  • Class .RedditAPIException now serves as a container for the .RedditErrorItems. You can access the items by doing RedditAPIException.items, which returns a list.
  • .APIException is an alias to .RedditAPIException.
  • Parameter discussion_type to methods .Subreddit.submit, .Subreddit.submit_image, and .Subreddit.submit_video to support submitting as a live discussion (set to CHAT).
  • Instances of .Trophy can be compared for equality with each other.
  • .Reddit has a new configurable parameter, timeout. This defaults to 16 seconds. It controls how long PRAW will wait for a response before throwing an exception.
  • PRAW now handles ratelimit errors returned as instances of .RedditAPIException.
  • .Reddit has one new parameter, ratelimit_seconds . The parameter configures the maximum amount of seconds to catch ratelimits for. It defaults to 5 seconds when not specified.

Changed

  • prawcore.BadRequest should no longer be raised. Instead a more useful .RedditAPIException instance will be raised.
  • Set the default comment sort to confidence instead of best because it turns out best isn't actually the correct value for the parameter.

Deprecated

  • .APIException is deprecated and slated for removal in PRAW 8.0.

Fixed

  • .SubredditFlair.update will not error out when the flair text contains quote marks.

Removed

  • Converting .APIException to string will no longer escape unicode characters.
  • Module praw.models.modaction no longer exists. Please use the module praw.models.mod_action, or directly import ModAction from praw.models.
  • Methods .SubredditLinkFlairTemplates.update and .SubredditRedditorFlairTemplates.update will no longer create flairs that are using an invalid template id, but instead throw a .InvalidFlairTemplateID.
  • Method reddit.user.moderator_subreddits has been removed. Please use .Redditor.moderated instead.

6.5.1 (2020/01/07)

Fixed

  • Removed usages of NoReturn that caused PRAW to fail due to ImportError in Python <3.5.4 and <3.6.2.

6.5.0 (2020/01/05)

Added

  • .set_original_content supports marking a submission as original content.
  • .unset_original_content supports unmarking a submission as original content.
  • .Redditor.moderated to get a list of a Redditor's moderated subreddits.
  • Parameter without_websockets to ~.Subreddit.submit_image and ~.Subreddit.submit_video to submit without using WebSockets.
  • .Reddit.redditor supports fullname param to fetch a Redditor by the fullname instead of name. .Redditor constructor now also has fullname param.
  • Add .RemovalReason and .SubredditRemovalReasons to work with removal reasons
  • Attribute removal_reasons to .SubredditModeration to interact with new removal reason classes
  • Parameters mod_note and reason_id to .ThingModerationMixin.remove to optionally apply a removal reason on removal
  • Add .SubredditModerationStream to enable moderation streams
  • Attribute stream to .SubredditModeration to interact with new moderation streams
  • Add .SubredditModerationStream.edited to allow streaming of .SubredditModeration.edited
  • Add .SubredditModerationStream.log to allow streaming of .SubredditModeration.log
  • Add .SubredditModerationStream.modmail_conversations to allow streaming of .Modmail.conversations
  • Add .SubredditModerationStream.modqueue to allow streaming of .SubredditModeration.modqueue
  • Add .SubredditModerationStream.reports to allow streaming of .SubredditModeration.reports
  • Add .SubredditModerationStream.spam to allow streaming of .SubredditModeration.spam
  • Add .SubredditModerationStream.unmoderated to allow streaming of .SubredditModeration.unmoderated
  • Add .SubredditModerationStream.unread to allow streaming of .SubredditModeration.unread
  • Parameter exclude_before to .stream_generator to allow .SubredditModerationStream.modmail_conversations to work
  • Parameters allowable_content and max_emojis to ~.SubredditRedditorFlairTemplates.add, ~.SubredditLinkFlairTemplates.add, and ~.SubredditFlairTemplates.update, as well as its child classes.

Deprecated

  • Method reddit.user.moderator_subreddits as .Redditor.moderated provides more functionality.
  • The file for ModActions (praw/models/modaction.py) has been moved to praw/models/mod_action.py and the previous has been Deprecated.

Expected Changes

  • The behavior of func:APIException will no longer unicode-escape strings in the next minor release

6.4.0 (2019/09/21)

Added

  • ~.Submission.crosspost support parameter flair_id to flair the submission immediately upon crossposting.
  • ~.Submission.crosspost support parameter flair_text to set a custom text to the flair immediately upon crossposting.
  • ~.Submission.crosspost support parameter nsfw to mark the submission NSFW immediately upon crossposting.
  • ~.Submission.crosspost support parameter spoiler to mark the submission as a spoiler immediately upon crossposting.

Fixed

  • .add_community_list has parameter description to support unannounced upstream Reddit API changes.
  • ~.WidgetModeration.update supports passing a list of .Subreddit objects.

Changed

  • Removed css_class parameter cannot be used with background_color, text_color, or mod_only constraint on methods:

    • SubredditFlairTemplates.update()
    • SubredditRedditorFlairTemplates.add()
    • SubredditLinkFlairTemplates.add()

Removed

  • Drop official support for Python 2.7.
  • Multireddit.rename() no longer works due to a change in the Reddit API.

6.3.1 (2019/06/10)

Removed

  • SubredditListingMixin.gilded(), as this was supposed to be removed in 6.0.0 after deprecation in 5.2.0.

6.3.0 (2019/06/09)

Added

  • Collections (.Collection and helper classes).
  • .submit, .submit_image, and .submit_video can be used to submit a post directly to a collection.
  • praw.util.camel_to_snake and praw.util.snake_case_keys.
  • Comments can now be locked and unlocked via comment.mod.lock() and comment.mod.unlock(). See: (.ThingModerationMixin.lock and .ThingModerationMixin.unlock).
  • align parameter to .SubredditStylesheet.upload_banner_additional_image

Changed

  • .Reddit.info now accepts any non-str iterable for fullnames (not just list).
  • .Reddit.info now returns a generator instead of a list when using the url parameter.

6.2.0 (2019/05/05)

Added

  • .SubredditStylesheet.upload_banner
  • .SubredditStylesheet.upload_banner_additional_image
  • .SubredditStylesheet.upload_banner_hover_image
  • .SubredditStylesheet.delete_banner
  • .SubredditStylesheet.delete_banner_additional_image
  • .SubredditStylesheet.delete_banner_hover_image
  • ~.Subreddit.submit, ~.Subreddit.submit_image, and ~.Subreddit.submit_video support parameter nsfw to mark the submission NSFW immediately upon posting.
  • ~.Subreddit.submit, ~.Subreddit.submit_image, and ~.Subreddit.submit_video support parameter spoiler to mark the submission as a spoiler immediately upon posting.
  • ~.Subreddit.submit_image and ~.Subreddit.submit_video support parameter timeout. Default timeout has been raised from 2 seconds to 10 seconds.
  • Added parameter function_kwargs to .stream_generator to pass additional kwargs to function.

Fixed

  • .Subreddit.random returns None instead of raising .ClientException when the subreddit does not support generating random submissions.

Other

  • Bumped minimum prawcore version to 1.0.1.

6.1.1 (2019/01/29)

Added

  • ~.SubredditFlair.set supports parameter flair_template_id for giving a user redesign flair.

6.1.0 (2019/01/19)

Added

  • Add method .Redditor.trophies to get a list of the Redditor's trophies.
  • Add class .PostFlairWidget.
  • Add attributes reply_limit and reply_sort to class .Comment
  • Add class .SubredditWidgetsModeration (accessible through .SubredditWidgets.mod) and method .add_text_area.
  • Add class .WidgetModeration (accessible through the .mod attribute on any widget) with methods ~.WidgetModeration.update and ~.WidgetModeration.delete.
  • Add method .Reddit.put for HTTP PUT requests.
  • Add methods .add_calendar and .add_community_list.
  • Add methods .add_image_widget and .upload_image.
  • Add method .add_custom_widget.
  • Add method .add_post_flair_widget.
  • Add method .add_menu.
  • Add method .add_button_widget.
  • Add method ~.SubredditWidgetsModeration.reorder to reorder a subreddit's widgets.
  • Add .Redditors (reddit.redditors) to provide Redditor listings.
  • Add .submit_image for submitting native images to Reddit.
  • Add .submit_video for submitting native videos and videogifs to Reddit.

Changed

  • .User.me returns None in ~praw.Reddit.read_only mode.
  • .SubredditLinkFlairTemplates.__iter__ uses the v2 flair API endpoint. This change will result in additional fields being returned. All fields that were previously returned will still be returned.
  • .SubredditRedditorFlairTemplates.__iter__ uses the v2 flair API endpoint. The method will still return the exact same items.
  • Methods ~.SubredditRedditorFlairTemplates.add, ~.SubredditLinkFlairTemplates.add, ~.SubredditRedditorFlairTemplates.update, and ~.SubredditLinkFlairTemplates.update can add and update redesign-style flairs with the v2 flair API endpoint. They can still update pre-redesign-style flairs with the older endpoint.

Fixed

  • Widgets of unknown types are parsed as Widget s rather than raising an exception

6.0.0 (2018/07/24)

Added

  • Add method .WikiPage.revision to get a specific wiki page revision.
  • Added parameter skip_existing to .stream_generator to skip existing items when starting a stream.
  • Add method .Front.best to get the front page "best" listing.
  • Add .Subreddit.widgets, .SubredditWidgets, and widget subclasses like .TextArea to support fetching Reddit widgets.
  • Add method .Submission.mark_visited to mark a submission as visited on the Reddit backend.

Fixed

  • Fix RecursionError on .SubredditEmoji's repr and str.
  • .SubredditFilters.add and .SubredditFilters.remove also accept a .Subreddit for the subreddit parameter.
  • Remove restriction which prevents installed (non-confidential) apps from using OAuth2 authorization code grant flow.

Removed

5.4.0 (2018/03/27)

Added

  • Add method ~.Reddit.patch to .Reddit class to support HTTP PATCH requests.
  • Add class .Preferences to access and update Reddit preferences.
  • Add attribute .User.preferences to access an instance of .Preferences.
  • Add method .Message.delete().
  • Add class .Emoji to work with custom subreddit emoji.

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

  • .Multireddit.stream, to stream submissions and comments from a Multireddit.
  • .Redditor.block

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

  • .Redditor.stream, with methods .RedditorStream.submissions() and .RedditorStream.comments() to stream a Redditor's comments or submissions
  • .RedditorStream has been added to facilitate .Redditor.stream
  • .Inbox.collapse to mark messages as collapsed.
  • .Inbox.uncollapse to mark messages as uncollapsed.
  • Raise .ClientException when calling ~.Comment.refresh when the comment does not appear in the resulting comment tree.
  • .Submission.crosspost to crosspost to a subreddit.

Fixed

  • Calling ~.Comment.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 ~.Comment.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

  • .Comment.disable_inbox_replies, .Comment.enable_inbox_replies .Submission.disable_inbox_replies, and .Submission.enable_inbox_replies to toggle inbox replies on comments and submissions.

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

  • Fix accessing .LiveUpdate.contrib raises AttributeError.

Removed

  • Iterating directly over .SubredditRelationship (e.g., subreddit.banned, subreddit.contributor, subreddit.moderator, etc) and .SubredditFlair is no longer possible. Iterate instead over their callables, e.g. subreddit.banned() and subreddit.flair().
  • The following methods are removed: 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 is removed.
  • The thing argument to .SubredditFlair.set is removed.
  • Return values from .Comment.block, .Message.block, .SubredditMessage.block, .SubredditFlair.delete, .friend, .Redditor.message, .Subreddit.message, .select, and .unfriend are removed as they do not provide any useful information.
  • praw.ini no longer reads in http_proxy and https_proxy settings.
  • is_link parameter of .SubredditRedditorFlairTemplates.add and .SubredditRedditorFlairTemplates.clear. Use .SubredditLinkFlairTemplates instead.

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

  • .SubredditFlair.link_templates to manage link flair templates.

Deprecated

  • is_link parameter of .SubredditRedditorFlairTemplates.add and .SubredditRedditorFlairTemplates.clear. Use .SubredditLinkFlairTemplates instead.

4.5.1 (2017/05/07)

Fixed

  • Calling .parent works on .Comment instances obtained via .comment_replies.

4.5.0 (2017/04/29)

Added

  • ~praw.models.reddit.subreddit.Modmail.unread_count to get unread count by conversation state.
  • ~praw.models.reddit.subreddit.Modmail.bulk_read to mark conversations as read by conversation state.
  • ~praw.models.reddit.subreddit.Modmail.subreddits to fetch subreddits using new modmail.
  • ~praw.models.reddit.subreddit.Modmail.create to create a new modmail conversation.
  • ~praw.models.ModmailConversation.read to mark modmail conversations as read.
  • ~praw.models.ModmailConversation.unread to mark modmail conversations as unread.
  • ~praw.models.reddit.subreddit.Modmail.conversations to get new modmail conversations.
  • ~praw.models.ModmailConversation.highlight to highlight modmail conversations.
  • ~praw.models.ModmailConversation.unhighlight to unhighlight modmail conversations.
  • ~praw.models.ModmailConversation.mute to mute modmail conversations.
  • ~praw.models.ModmailConversation.unmute to unmute modmail conversations.
  • ~praw.models.ModmailConversation.archive to archive modmail conversations.
  • ~praw.models.ModmailConversation.unarchive to unarchive modmail conversations.
  • ~praw.models.ModmailConversation.reply to reply to modmail conversations.
  • ~praw.models.reddit.subreddit.Modmail.__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.
  • ~praw.models.reddit.subreddit.SubredditStream.comments, ~praw.models.reddit.subreddit.SubredditStream.submissions, and ~praw.models.Subreddits.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

  • .LiveThreadContribution.update to update settings of a live thread.
  • reset_timestamp to .limits to provide insight into when the current rate limit window will expire.
  • .upload_mobile_header to upload subreddit mobile header.
  • .upload_mobile_icon to upload subreddit mobile icon.
  • .delete_mobile_header to remove subreddit mobile header.
  • .delete_mobile_icon to remove subreddit mobile icon.
  • .LiveUpdateContribution.strike to strike a content of a live thread.
  • .LiveContributorRelationship.update to update contributor permissions for a redditor.
  • .LiveContributorRelationship.update_invite to update contributor invite permissions for a redditor.
  • .LiveThread.discussions to get submissions linking to the thread.
  • .LiveThread.report to report the thread violating the Reddit rules.
  • .LiveHelper.now to get the currently featured live thread.
  • .LiveHelper.info to fetch information about each live thread in live thread IDs.

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 func: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

  • .LiveContributorRelationship.leave to abdicate the live thread contributor position.
  • .LiveContributorRelationship.remove to remove the redditor from the live thread contributors.
  • .limits to provide insight into number of requests made and remaining in the current rate limit window.
  • .LiveThread.contrib to obtain an instance of .LiveThreadContribution.
  • .LiveThreadContribution.add to add an update to the live thread.
  • .LiveThreadContribution.close to close the live thread permanently.
  • .LiveUpdate.contrib to obtain an instance of .LiveUpdateContribution.
  • .LiveUpdateContribution.remove to remove a live update.
  • .LiveContributorRelationship.accept_invite to accept an invite to contribute the live thread.
  • .SubredditHelper.create and .SubredditModeration.update have documented support for spoilers_enabled. Note, however, that .SubredditModeration.update will currently unset the spoilers_enabled value until such a time that Reddit returns the value along with the other settings.
  • .spoiler and .unspoiler to change a submission's spoiler status.

Fixed

  • .LiveContributorRelationship.invite and .LiveContributorRelationship.remove_invite now hit endpoints, which starts with "api/", for consistency.
  • .ModeratorRelationship.update, and .ModeratorRelationship.update_invite now always remove known unlisted permissions.

4.2.0 (2017/01/07)

Added

  • .Subreddit.rules to get the rules of a subreddit.
  • .LiveContributorRelationship, which can be obtained through .LiveThread.contributor, to interact with live threads' contributors.
  • ~.ModeratorRelationship.remove_invite to remove a moderator invite.
  • .LiveContributorRelationship.invite to send a contributor invitation.
  • .LiveContributorRelationship.remove_invite to remove the contributor invitation.

Deprecated

  • Return values from .Comment.block, .Message.block, .SubredditMessage.block, .SubredditFlair.delete, .friend, .Redditor.message, .Subreddit.message, .select, and .unfriend will be removed in PRAW 5 as they do not provide any useful information.

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

  • praw.models.Subreddits.search_by_topic to search subreddits by topic. (see: https://www.reddit.com/dev/api/#GET_api_subreddits_by_topic).
  • praw.models.LiveHelper.__call__ to provide interface to praw.models.LiveThread.__init__.
  • .SubredditFilters to work with filters for special subreddits, like r/all.
  • Added callables for .SubredditRelationship and .SubredditFlair so that limit and other parameters can be passed.
  • Add ~praw.models.Message.reply to .Message which was accidentally missed previously.
  • Add sticky parameter to .CommentModeration.distinguish to sticky comments.
  • .flair to add a submission's flair from an instance of .Submission.
  • .Comment.parent to obtain the parent of a .Comment.
  • .opt_in and .opt_out to .Subreddit to permit working with quarantined subreddits.
  • .LiveUpdate to represent an individual update in a .LiveThread.
  • Ability to access an individual .LiveUpdate via reddit.live("THREAD_ID")["UPDATE_ID"].
  • .LiveThread.updates to iterate the updates of the thread.

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 :py.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

  • ~praw.models.Auth.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 /getting_started/quick_start to help with updating your code to PRAW 4. If you require additional help please ask on /r/redditdev or via Slack.

Added

  • praw.models.Comment.block, praw.models.Message.block, and praw.models.SubredditMessage.block to permit blocking unwanted user contact.
  • praw.models.LiveHelper.create to create new live threads.
  • praw.models.Redditor.unblock to undo a block.
  • praw.models.Subreddits.gold to iterate through gold subreddits.
  • praw.models.Subreddits.search to search for subreddits by name and description.
  • praw.models.Subreddits.stream to obtain newly created subreddits in near-realtime.
  • praw.models.User.karma to retrieve the current user's subreddit karma.
  • praw.models.reddit.submission.SubmissionModeration.lock and praw.models.reddit.submission.SubmissionModeration.unlock to change a Submission's lock state.
  • praw.models.reddit.subreddit.SubredditFlairTemplates.delete to delete a single flair template.
  • praw.models.reddit.subreddit.SubredditModeration.unread to iterate over unread moderation messages.
  • praw.models.reddit.subreddit.ModeratorRelationship.invite to invite a moderator to a subreddit.
  • praw.models.reddit.subreddit.ModeratorRelationship.update to update a moderator's permissions.
  • praw.models.reddit.subreddit.ModeratorRelationship.update_invite to update an invited moderator's permissions.
  • praw.models.Front.random_rising, praw.models.Subreddit.random_rising and praw.models.Multireddit.random_rising.
  • ~.WikiPage supports a revision argument.
  • ~.SubredditWiki.revisions to obtain a list of recent revisions to a subreddit.
  • ~.WikiPage.revisions to obtain a list of revisions for a wiki page.
  • Support installed-type OAuth apps.
  • Support read-only OAuth for all application types.
  • Support script-type OAuth apps.

Changed

Note

Only prominent changes are listed here.

  • helpers.comments_stream is now praw.models.reddit.subreddit.SubredditStream.comments
  • helpers.submissions_between is now Subreddit.submissions. This new method now only iterates through newest submissions first and as a result makes approximately 33% fewer requests.
  • helpers.submission_stream is now praw.models.reddit.subreddit.SubredditStream.submissions

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