Skip to content

Latest commit

 

History

History
672 lines (532 loc) · 25.9 KB

CHANGES.rst

File metadata and controls

672 lines (532 loc) · 25.9 KB

Change Log

Unreleased

Added

  • Collections (.Collection and helper classes).
  • .submit, .submit_image, and .submit_video can be used to submit a post directly to a collection.
  • FullnameMixin.kind
  • praw.util.camel_to_snake and praw.util.snake_case_keys.

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 .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 in the praw-dev/praw channel on gitter.

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