Changelog
### 7.0.0
```
------------------
**Added**
* ``config_interpolation`` parameter for :class:`.Reddit` supporting basic and
extended modes.
* Add :meth:`.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.
* :meth:`.User.friends` has a new parameter ``user`` that takes either an
instance of :class:`.Redditor` or a string containing a redditor name and
returns an instance of :class:`.Redditor` if the authenticated user is
friends with the user, otherwise throws an exception.
* :meth:`.SubmissionModeration.flair` has the parameter ``flair_template_id``
for applying flairs with template IDs.
* :meth:`~.Emoji.update` supports modifying an emoji's permissions.
* :meth:`~.SubredditEmoji.add` now supports optionally passing booleans to set
an emoji's permissions upon upload.
* Methods :meth:`.SubredditLinkFlairTemplates.update` and
:meth:`.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 :meth:`.SubredditLinkFlairTemplates.update` and
:meth:`.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
:meth:`.SubredditLinkFlairTemplates.update` and
:meth:`.SubredditRedditorFlairTemplates.update` is no longer required.
* There is a new method, :meth:`.Subreddit.post_requirements`, to fetch a
subreddit's post requirements.
* Method :meth:`.SubmissionModeration.sticky` will now ignore the Confict
exception generated by trying to sticky the same post multiple times.
* A new method :meth:`.CommentModeration.show` will uncollapse a
comment that was collapsed because of Crowd Control
* Methods :meth:`.Subreddit.submit_image` and :meth:`.Subreddit.submit_video`
will throw :class:`.TooLargeMediaException` if the submitted media is
rejected by Reddit due to the size of the media.
* Class :class:`.Reddit` has an attribute, ``validate_on_submit``, that can be
set after class initialization that causes methods :meth:`.Subreddit.submit`,
:meth:`.Subreddit.submit_image`, :meth:`.Subreddit.submit_video`, and
:meth:`.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, :class:`.RedditErrorItem`, to represent an
individual error item returned from Reddit.
* Class :class:`.RedditAPIException` now serves as a container for the
:class:`.RedditErrorItem`\ s. You can access the items by doing
``RedditAPIException.items``, which returns a list.
* :class:`.APIException` is an alias to :class:`.RedditAPIException`.
* Parameter ``discussion_type`` to methods :meth:`.Subreddit.submit`,
:meth:`.Subreddit.submit_image`, and :meth:`.Subreddit.submit_video` to
support submitting as a live discussion (set to ``CHAT``).
* Instances of :class:`.Trophy` can be compared for equality with each other.
* :class:`.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
:class:`.RedditAPIException`.
* :class:`.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
:class:`.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**
* :class:`.APIException` is deprecated and slated for removal in PRAW 8.0.
**Fixed**
* :meth:`.SubredditFlair.update` will not error out when the flair text
contains quote marks.
**Removed**
* Converting :class:`.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 :meth:`.SubredditLinkFlairTemplates.update` and
:meth:`.SubredditRedditorFlairTemplates.update` will no longer
create flairs that are using an invalid template id, but instead throw a
:class:`.InvalidFlairTemplateID`.
* Method ``reddit.user.moderator_subreddits`` has been removed. Please use
:meth:`.Redditor.moderated` instead.
```
### 6.5.1
```
------------------
**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
```
------------------
**Added**
* :meth:`.set_original_content` supports
marking a submission as original content.
* :meth:`.unset_original_content` supports
unmarking a submission as original content.
* :meth:`.Redditor.moderated` to get a list of a Redditor's
moderated subreddits.
* Parameter ``without_websockets`` to :meth:`~.Subreddit.submit_image` and
:meth:`~.Subreddit.submit_video` to submit without using WebSockets.
* :meth:`.Reddit.redditor` supports ``fullname`` param to fetch a Redditor
by the fullname instead of name.
:class:`.Redditor` constructor now also has ``fullname`` param.
* Add :class:`.RemovalReason` and :class:`.SubredditRemovalReasons` to work
with removal reasons
* Attribute ``removal_reasons`` to :class:`.SubredditModeration` to interact
with new removal reason classes
* Parameters ``mod_note`` and ``reason_id`` to
:meth:`.ThingModerationMixin.remove` to optionally apply a removal reason on
removal
* Add :class:`.SubredditModerationStream` to enable moderation streams
* Attribute ``stream`` to :class:`.SubredditModeration` to interact with new
moderation streams
* Add :meth:`.SubredditModerationStream.edited` to allow streaming
of :meth:`.SubredditModeration.edited`
* Add :meth:`.SubredditModerationStream.log` to allow streaming
of :meth:`.SubredditModeration.log`
* Add :meth:`.SubredditModerationStream.modmail_conversations` to allow
streaming of :meth:`.Modmail.conversations`
* Add :meth:`.SubredditModerationStream.modqueue` to allow streaming
of :meth:`.SubredditModeration.modqueue`
* Add :meth:`.SubredditModerationStream.reports` to allow streaming
of :meth:`.SubredditModeration.reports`
* Add :meth:`.SubredditModerationStream.spam` to allow streaming
of :meth:`.SubredditModeration.spam`
* Add :meth:`.SubredditModerationStream.unmoderated` to allow streaming
of :meth:`.SubredditModeration.unmoderated`
* Add :meth:`.SubredditModerationStream.unread` to allow streaming
of :meth:`.SubredditModeration.unread`
* Parameter ``exclude_before`` to :func:`.stream_generator` to allow
:meth:`.SubredditModerationStream.modmail_conversations` to work
* Parameters ``allowable_content`` and ``max_emojis`` to
:meth:`~.SubredditRedditorFlairTemplates.add`,
:meth:`~.SubredditLinkFlairTemplates.add`, and
:meth:`~.SubredditFlairTemplates.update`, as well as its child classes.
**Deprecated**
* Method ``reddit.user.moderator_subreddits`` as :meth:`.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
```
------------------
**Added**
* :meth:`~.Submission.crosspost` support parameter ``flair_id`` to
flair the submission immediately upon crossposting.
* :meth:`~.Submission.crosspost` support parameter ``flair_text`` to
set a custom text to the flair immediately upon crossposting.
* :meth:`~.Submission.crosspost` support parameter ``nsfw`` to
mark the submission NSFW immediately upon crossposting.
* :meth:`~.Submission.crosspost` support parameter ``spoiler`` to
mark the submission as a spoiler immediately upon crossposting.
**Fixed**
* :meth:`.add_community_list` has parameter ``description`` to support
unannounced upstream Reddit API changes.
* :meth:`~.WidgetModeration.update` supports passing a list of
:class:`.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
```
------------------
**Removed**
* ``SubredditListingMixin.gilded()``, as this was supposed to be removed
in 6.0.0 after deprecation in 5.2.0.
```
### 6.3.0
```
------------------
**Added**
* Collections (:class:`.Collection` and helper classes).
* :meth:`.submit`, :meth:`.submit_image`, and :meth:`.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: (:meth:`.ThingModerationMixin.lock` and
:meth:`.ThingModerationMixin.unlock`).
* ``align`` parameter to :meth:`.SubredditStylesheet.upload_banner_additional_image`
**Changed**
* :meth:`.Reddit.info` now accepts any non-str iterable for fullnames
(not just ``list``).
* :meth:`.Reddit.info` now returns a generator instead of a list when
using the ``url`` parameter.
```
### 6.2.0
```
------------------
**Added**
* :meth:`.SubredditStylesheet.upload_banner`
* :meth:`.SubredditStylesheet.upload_banner_additional_image`
* :meth:`.SubredditStylesheet.upload_banner_hover_image`
* :meth:`.SubredditStylesheet.delete_banner`
* :meth:`.SubredditStylesheet.delete_banner_additional_image`
* :meth:`.SubredditStylesheet.delete_banner_hover_image`
* :meth:`~.Subreddit.submit`, :meth:`~.Subreddit.submit_image`, and
:meth:`~.Subreddit.submit_video` support parameter ``nsfw`` to
mark the submission NSFW immediately upon posting.
* :meth:`~.Subreddit.submit`, :meth:`~.Subreddit.submit_image`, and
:meth:`~.Subreddit.submit_video` support parameter ``spoiler`` to
mark the submission as a spoiler immediately upon posting.
* :meth:`~.Subreddit.submit_image` and :meth:`~.Subreddit.submit_video` support
parameter ``timeout``. Default timeout has been raised from 2 seconds to
10 seconds.
* Added parameter ``function_kwargs`` to :func:`.stream_generator` to
pass additional kwargs to ``function``.
**Fixed**
* :meth:`.Subreddit.random` returns ``None`` instead of raising
:class:`.ClientException` when the subreddit does not support generating
random submissions.
**Other**
* Bumped minimum prawcore version to 1.0.1.
```
### 6.1.1
```
------------------
**Added**
* :meth:`~.SubredditFlair.set` supports parameter ``flair_template_id`` for
giving a user redesign flair.
```
### 6.1.0
```
------------------
**Added**
* Add method :meth:`.Redditor.trophies` to get a list of the Redditor's
trophies.
* Add class :class:`.PostFlairWidget`.
* Add attributes ``reply_limit`` and ``reply_sort`` to class :class:`.Comment`
* Add class :class:`.SubredditWidgetsModeration` (accessible through
:attr:`.SubredditWidgets.mod`) and method :meth:`.add_text_area`.
* Add class :class:`.WidgetModeration` (accessible through the ``.mod``
attribute on any widget) with methods :meth:`~.WidgetModeration.update` and
:meth:`~.WidgetModeration.delete`.
* Add method :meth:`.Reddit.put` for HTTP PUT requests.
* Add methods :meth:`.add_calendar` and :meth:`.add_community_list`.
* Add methods :meth:`.add_image_widget` and :meth:`.upload_image`.
* Add method :meth:`.add_custom_widget`.
* Add method :meth:`.add_post_flair_widget`.
* Add method :meth:`.add_menu`.
* Add method :meth:`.add_button_widget`.
* Add method :meth:`~.SubredditWidgetsModeration.reorder` to reorder a
subreddit's widgets.
* Add :class:`.Redditors` (``reddit.redditors``) to provide Redditor listings.
* Add :meth:`.submit_image` for submitting native images to Reddit.
* Add :meth:`.submit_video` for submitting native videos and videogifs to
Reddit.
**Changed**
* :meth:`.User.me` returns ``None`` in :attr:`~praw.Reddit.read_only` mode.
* :meth:`.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.
* :meth:`.SubredditRedditorFlairTemplates.__iter__` uses the v2 flair API
endpoint. The method will still return the exact same items.
* Methods :meth:`~.SubredditRedditorFlairTemplates.add`,
:meth:`~.SubredditLinkFlairTemplates.add`,
:meth:`~.SubredditRedditorFlairTemplates.update`, and
:meth:`~.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
```
------------------
**Added**
* Add method :meth:`.WikiPage.revision` to get a specific wiki page revision.
* Added parameter ``skip_existing`` to :func:`.stream_generator` to skip
existing items when starting a stream.
* Add method :meth:`.Front.best` to get the front page "best" listing.
* Add :attr:`.Subreddit.widgets`, :class:`.SubredditWidgets`,
and widget subclasses like :class:`.TextArea` to support fetching
Reddit widgets.
* Add method :meth:`.Submission.mark_visited` to mark a submission as visited
on the Reddit backend.
**Fixed**
* Fix ``RecursionError`` on :class:`.SubredditEmoji`'s ``repr`` and ``str``.
* :meth:`.SubredditFilters.add` and :meth:`.SubredditFilters.remove`
also accept a :class:`.Subreddit` for the ``subreddit`` parameter.
* Remove restriction which prevents installed (non-confidential) apps from
using OAuth2 authorization code grant flow.
**Removed**
* ``Subreddit.submissions`` as the API endpoint backing the method is no
more. See
https://www.reddit.com/r/changelog/comments/7tus5f/update_to_search_api/.
```
### 5.4.0
```
------------------
**Added**
* Add method :meth:`~.Reddit.patch` to :class:`.Reddit` class to support HTTP
PATCH requests.
* Add class :class:`.Preferences` to access and update Reddit preferences.
* Add attribute :attr:`.User.preferences` to access an instance of
:class:`.Preferences`.
* Add method :meth:`.Message.delete()`.
* Add class :class:`.Emoji` to work with custom subreddit emoji.
**Deprecated**
* ``Subreddit.submissions`` as the API endpoint backing the method is going
away. See
https://www.reddit.com/r/changelog/comments/7tus5f/update_to_search_api/.
**Fixed**
* Fix bug with positive ``pause_after`` values in streams provided by
:func:`.stream_generator` where the wait time was not reset after a yielded
``None``.
* Parse URLs with trailing slashes and no ``'comments'`` element when creating
:class:`.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
```
------------------
**Added**
* :attr:`.Multireddit.stream`, to stream submissions and comments from a
Multireddit.
* :meth:`.Redditor.block`
**Fixed**
* Now raises ``prawcore.UnavailableForLegalReasons`` instead of an
``AssertionError`` when encountering a HTTP 451 response.
```
### 5.2.0
```
------------------
**Changed**
* An attribute on :class:`.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
```
------------------
**Added**
* :attr:`.Redditor.stream`, with methods :meth:`.RedditorStream.submissions()`
and :meth:`.RedditorStream.comments()` to stream a Redditor's
comments or submissions
* :class:`.RedditorStream` has been added to facilitate
:attr:`.Redditor.stream`
* :meth:`.Inbox.collapse` to mark messages as collapsed.
* :meth:`.Inbox.uncollapse` to mark messages as uncollapsed.
* Raise :class:`.ClientException` when calling :meth:`~.Comment.refresh` when
the comment does not appear in the resulting comment tree.
* :meth:`.Submission.crosspost` to crosspost to a subreddit.
**Fixed**
* Calling :meth:`~.Comment.refresh` on a directly fetched, deeply nested
:class:`.Comment` will additionally pull in as many parent comments as
possible (currently 8) enabling significantly quicker traversal to the
top-most :class:`.Comment` via successive :meth:`.parent()` calls.
* Calling :meth:`~.Comment.refresh` previously could have resulted in a
``AttributeError: 'MoreComments' object has no attribute '_replies'``
exception. This situation will now result in a :class:`.ClientException`.
* Properly handle ``BAD_CSS_NAME`` errors when uploading stylesheet images with
invalid filenames. Previously an ``AssertionError`` was raised.
* :class:`.Submission`'s ``gilded`` attribute properly returns the expected
value from reddit.
```
### 5.0.1
```
------------------
**Fixed**
* Calls to :meth:`.hide()` and :meth:`.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
```
------------------
**Added**
* :meth:`.Comment.disable_inbox_replies`, :meth:`.Comment.enable_inbox_replies`
:meth:`.Submission.disable_inbox_replies`, and
:meth:`.Submission.enable_inbox_replies` to toggle inbox replies on comments
and submissions.
**Changed**
* ``cloudsearch`` is no longer the default syntax for
:meth:`.Subreddit.search`. ``lucene`` is now the default
syntax so that PRAW's default is aligned with Reddit's default.
* :meth:`.Reddit.info` will now take either a list of fullnames
or a single URL string.
* :meth:`.Subreddit.submit` accepts a flair template ID and text.
**Fixed**
* Fix accessing :attr:`.LiveUpdate.contrib` raises ``AttributeError``.
**Removed**
* Iterating directly over :class:`.SubredditRelationship` (e.g.,
``subreddit.banned``, ``subreddit.contributor``, ``subreddit.moderator``,
etc) and :class:`.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 :class:`.Submission` to :meth:`.SubredditFlair.set`
is removed.
* The ``thing`` argument to :meth:`.SubredditFlair.set` is removed.
* Return values from :meth:`.Comment.block`, :meth:`.Message.block`,
:meth:`.SubredditMessage.block`, :meth:`.SubredditFlair.delete`,
:meth:`.friend`, :meth:`.Redditor.message`, :meth:`.Subreddit.message`,
:meth:`.select`, and :meth:`.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 :meth:`.SubredditRedditorFlairTemplates.add` and
:meth:`.SubredditRedditorFlairTemplates.clear`. Use
:class:`.SubredditLinkFlairTemplates` instead.
```
### 4.6.0
```
------------------
The release's sole purpose is to announce the deprecation of the ``is_link``
parameter as described below:
**Added**
* :attr:`.SubredditFlair.link_templates` to manage link flair templates.
**Deprecated**
* ``is_link`` parameter of :meth:`.SubredditRedditorFlairTemplates.add` and
:meth:`.SubredditRedditorFlairTemplates.clear`. Use
:class:`.SubredditLinkFlairTemplates` instead.
```
### 4.5.1
```
------------------
**Fixed**
* Calling :meth:`.parent` works on :class:`.Comment` instances obtained via
:meth:`.comment_replies`.
```
### 4.5.0
```
------------------
**Added**
* :meth:`~praw.models.reddit.subreddit.Modmail.unread_count` to get unread
count by conversation state.
* :meth:`~praw.models.reddit.subreddit.Modmail.bulk_read` to mark conversations
as read by conversation state.
* :meth:`~praw.models.reddit.subreddit.Modmail.subreddits` to fetch subreddits
using new modmail.
* :meth:`~praw.models.reddit.subreddit.Modmail.create` to create a new modmail
conversation.
* :meth:`~praw.models.ModmailConversation.read` to mark modmail conversations
as read.
* :meth:`~praw.models.ModmailConversation.unread` to mark modmail conversations
as unread.
* :meth:`~praw.models.reddit.subreddit.Modmail.conversations` to get new
modmail conversations.
* :meth:`~praw.models.ModmailConversation.highlight` to highlight modmail
conversations.
* :meth:`~praw.models.ModmailConversation.unhighlight` to unhighlight modmail
conversations.
* :meth:`~praw.models.ModmailConversation.mute` to mute modmail conversations.
* :meth:`~praw.models.ModmailConversation.unmute` to unmute modmail
conversations.
* :meth:`~praw.models.ModmailConversation.archive` to archive modmail
conversations.
* :meth:`~praw.models.ModmailConversation.unarchive` to unarchive modmail
conversations.
* :meth:`~praw.models.ModmailConversation.reply` to reply to modmail
conversations.
* :meth:`~praw.models.reddit.subreddit.Modmail.__call__` to get a new modmail
conversation.
* :meth:`.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**
* :meth:`.submit` accepts ``selftext=''`` to create a title-only submission.
* :class:`.Reddit` accepts ``requestor_class=cls`` for a customized requestor
class and ``requestor_kwargs={'param': value}`` for passing arguments to
requestor initialization.
* :meth:`~praw.models.reddit.subreddit.SubredditStream.comments`,
:meth:`~praw.models.reddit.subreddit.SubredditStream.submissions`, and
:meth:`~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
:meth:`.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 :class:`.WikiPage` revisions with deleted authors caused
``TypeError``.
* :class:`.Submission` attributes ``comment_limit`` and ``comment_sort``
maintain their values after making instances non-lazy.
```
### 4.4.0
```
------------------
**Added**
* :meth:`.LiveThreadContribution.update` to update settings of a live thread.
* ``reset_timestamp`` to :meth:`.limits` to provide insight into when the
current rate limit window will expire.
* :meth:`.upload_mobile_header` to upload subreddit mobile header.
* :meth:`.upload_mobile_icon` to upload subreddit mobile icon.
* :meth:`.delete_mobile_header` to remove subreddit mobile header.
* :meth:`.delete_mobile_icon` to remove subreddit mobile icon.
* :meth:`.LiveUpdateContribution.strike` to strike a content of a live thread.
* :meth:`.LiveContributorRelationship.update` to update contributor
permissions for a redditor.
* :meth:`.LiveContributorRelationship.update_invite` to update contributor
invite permissions for a redditor.
* :meth:`.LiveThread.discussions` to get submissions linking to the thread.
* :meth:`.LiveThread.report` to report the thread violating the Reddit rules.
* :meth:`.LiveHelper.now` to get the currently featured live thread.
* :meth:`.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`.
* :class:`.Redditor` instances obtained via :attr:`.moderator` (e.g.,
``reddit.subreddit('subreddit').moderator()``) will contain attributes with
the relationship metadata (e.g., ``mod_permissions``).
* :class:`.Message` instances retrieved from the inbox now have attributes
``author``, ``dest`` ``replies`` and ``subreddit`` properly converted to
their appropriate PRAW model.
```
Links
- PyPI: https://pypi.org/project/praw
- Changelog: https://pyup.io/changelogs/praw/
- Docs: https://praw.readthedocs.org/
This PR updates praw from 4.3.0 to 7.0.0.
Changelog
### 7.0.0 ``` ------------------ **Added** * ``config_interpolation`` parameter for :class:`.Reddit` supporting basic and extended modes. * Add :meth:`.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. * :meth:`.User.friends` has a new parameter ``user`` that takes either an instance of :class:`.Redditor` or a string containing a redditor name and returns an instance of :class:`.Redditor` if the authenticated user is friends with the user, otherwise throws an exception. * :meth:`.SubmissionModeration.flair` has the parameter ``flair_template_id`` for applying flairs with template IDs. * :meth:`~.Emoji.update` supports modifying an emoji's permissions. * :meth:`~.SubredditEmoji.add` now supports optionally passing booleans to set an emoji's permissions upon upload. * Methods :meth:`.SubredditLinkFlairTemplates.update` and :meth:`.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 :meth:`.SubredditLinkFlairTemplates.update` and :meth:`.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 :meth:`.SubredditLinkFlairTemplates.update` and :meth:`.SubredditRedditorFlairTemplates.update` is no longer required. * There is a new method, :meth:`.Subreddit.post_requirements`, to fetch a subreddit's post requirements. * Method :meth:`.SubmissionModeration.sticky` will now ignore the Confict exception generated by trying to sticky the same post multiple times. * A new method :meth:`.CommentModeration.show` will uncollapse a comment that was collapsed because of Crowd Control * Methods :meth:`.Subreddit.submit_image` and :meth:`.Subreddit.submit_video` will throw :class:`.TooLargeMediaException` if the submitted media is rejected by Reddit due to the size of the media. * Class :class:`.Reddit` has an attribute, ``validate_on_submit``, that can be set after class initialization that causes methods :meth:`.Subreddit.submit`, :meth:`.Subreddit.submit_image`, :meth:`.Subreddit.submit_video`, and :meth:`.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, :class:`.RedditErrorItem`, to represent an individual error item returned from Reddit. * Class :class:`.RedditAPIException` now serves as a container for the :class:`.RedditErrorItem`\ s. You can access the items by doing ``RedditAPIException.items``, which returns a list. * :class:`.APIException` is an alias to :class:`.RedditAPIException`. * Parameter ``discussion_type`` to methods :meth:`.Subreddit.submit`, :meth:`.Subreddit.submit_image`, and :meth:`.Subreddit.submit_video` to support submitting as a live discussion (set to ``CHAT``). * Instances of :class:`.Trophy` can be compared for equality with each other. * :class:`.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 :class:`.RedditAPIException`. * :class:`.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 :class:`.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** * :class:`.APIException` is deprecated and slated for removal in PRAW 8.0. **Fixed** * :meth:`.SubredditFlair.update` will not error out when the flair text contains quote marks. **Removed** * Converting :class:`.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 :meth:`.SubredditLinkFlairTemplates.update` and :meth:`.SubredditRedditorFlairTemplates.update` will no longer create flairs that are using an invalid template id, but instead throw a :class:`.InvalidFlairTemplateID`. * Method ``reddit.user.moderator_subreddits`` has been removed. Please use :meth:`.Redditor.moderated` instead. ``` ### 6.5.1 ``` ------------------ **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 ``` ------------------ **Added** * :meth:`.set_original_content` supports marking a submission as original content. * :meth:`.unset_original_content` supports unmarking a submission as original content. * :meth:`.Redditor.moderated` to get a list of a Redditor's moderated subreddits. * Parameter ``without_websockets`` to :meth:`~.Subreddit.submit_image` and :meth:`~.Subreddit.submit_video` to submit without using WebSockets. * :meth:`.Reddit.redditor` supports ``fullname`` param to fetch a Redditor by the fullname instead of name. :class:`.Redditor` constructor now also has ``fullname`` param. * Add :class:`.RemovalReason` and :class:`.SubredditRemovalReasons` to work with removal reasons * Attribute ``removal_reasons`` to :class:`.SubredditModeration` to interact with new removal reason classes * Parameters ``mod_note`` and ``reason_id`` to :meth:`.ThingModerationMixin.remove` to optionally apply a removal reason on removal * Add :class:`.SubredditModerationStream` to enable moderation streams * Attribute ``stream`` to :class:`.SubredditModeration` to interact with new moderation streams * Add :meth:`.SubredditModerationStream.edited` to allow streaming of :meth:`.SubredditModeration.edited` * Add :meth:`.SubredditModerationStream.log` to allow streaming of :meth:`.SubredditModeration.log` * Add :meth:`.SubredditModerationStream.modmail_conversations` to allow streaming of :meth:`.Modmail.conversations` * Add :meth:`.SubredditModerationStream.modqueue` to allow streaming of :meth:`.SubredditModeration.modqueue` * Add :meth:`.SubredditModerationStream.reports` to allow streaming of :meth:`.SubredditModeration.reports` * Add :meth:`.SubredditModerationStream.spam` to allow streaming of :meth:`.SubredditModeration.spam` * Add :meth:`.SubredditModerationStream.unmoderated` to allow streaming of :meth:`.SubredditModeration.unmoderated` * Add :meth:`.SubredditModerationStream.unread` to allow streaming of :meth:`.SubredditModeration.unread` * Parameter ``exclude_before`` to :func:`.stream_generator` to allow :meth:`.SubredditModerationStream.modmail_conversations` to work * Parameters ``allowable_content`` and ``max_emojis`` to :meth:`~.SubredditRedditorFlairTemplates.add`, :meth:`~.SubredditLinkFlairTemplates.add`, and :meth:`~.SubredditFlairTemplates.update`, as well as its child classes. **Deprecated** * Method ``reddit.user.moderator_subreddits`` as :meth:`.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 ``` ------------------ **Added** * :meth:`~.Submission.crosspost` support parameter ``flair_id`` to flair the submission immediately upon crossposting. * :meth:`~.Submission.crosspost` support parameter ``flair_text`` to set a custom text to the flair immediately upon crossposting. * :meth:`~.Submission.crosspost` support parameter ``nsfw`` to mark the submission NSFW immediately upon crossposting. * :meth:`~.Submission.crosspost` support parameter ``spoiler`` to mark the submission as a spoiler immediately upon crossposting. **Fixed** * :meth:`.add_community_list` has parameter ``description`` to support unannounced upstream Reddit API changes. * :meth:`~.WidgetModeration.update` supports passing a list of :class:`.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 ``` ------------------ **Removed** * ``SubredditListingMixin.gilded()``, as this was supposed to be removed in 6.0.0 after deprecation in 5.2.0. ``` ### 6.3.0 ``` ------------------ **Added** * Collections (:class:`.Collection` and helper classes). * :meth:`.submit`, :meth:`.submit_image`, and :meth:`.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: (:meth:`.ThingModerationMixin.lock` and :meth:`.ThingModerationMixin.unlock`). * ``align`` parameter to :meth:`.SubredditStylesheet.upload_banner_additional_image` **Changed** * :meth:`.Reddit.info` now accepts any non-str iterable for fullnames (not just ``list``). * :meth:`.Reddit.info` now returns a generator instead of a list when using the ``url`` parameter. ``` ### 6.2.0 ``` ------------------ **Added** * :meth:`.SubredditStylesheet.upload_banner` * :meth:`.SubredditStylesheet.upload_banner_additional_image` * :meth:`.SubredditStylesheet.upload_banner_hover_image` * :meth:`.SubredditStylesheet.delete_banner` * :meth:`.SubredditStylesheet.delete_banner_additional_image` * :meth:`.SubredditStylesheet.delete_banner_hover_image` * :meth:`~.Subreddit.submit`, :meth:`~.Subreddit.submit_image`, and :meth:`~.Subreddit.submit_video` support parameter ``nsfw`` to mark the submission NSFW immediately upon posting. * :meth:`~.Subreddit.submit`, :meth:`~.Subreddit.submit_image`, and :meth:`~.Subreddit.submit_video` support parameter ``spoiler`` to mark the submission as a spoiler immediately upon posting. * :meth:`~.Subreddit.submit_image` and :meth:`~.Subreddit.submit_video` support parameter ``timeout``. Default timeout has been raised from 2 seconds to 10 seconds. * Added parameter ``function_kwargs`` to :func:`.stream_generator` to pass additional kwargs to ``function``. **Fixed** * :meth:`.Subreddit.random` returns ``None`` instead of raising :class:`.ClientException` when the subreddit does not support generating random submissions. **Other** * Bumped minimum prawcore version to 1.0.1. ``` ### 6.1.1 ``` ------------------ **Added** * :meth:`~.SubredditFlair.set` supports parameter ``flair_template_id`` for giving a user redesign flair. ``` ### 6.1.0 ``` ------------------ **Added** * Add method :meth:`.Redditor.trophies` to get a list of the Redditor's trophies. * Add class :class:`.PostFlairWidget`. * Add attributes ``reply_limit`` and ``reply_sort`` to class :class:`.Comment` * Add class :class:`.SubredditWidgetsModeration` (accessible through :attr:`.SubredditWidgets.mod`) and method :meth:`.add_text_area`. * Add class :class:`.WidgetModeration` (accessible through the ``.mod`` attribute on any widget) with methods :meth:`~.WidgetModeration.update` and :meth:`~.WidgetModeration.delete`. * Add method :meth:`.Reddit.put` for HTTP PUT requests. * Add methods :meth:`.add_calendar` and :meth:`.add_community_list`. * Add methods :meth:`.add_image_widget` and :meth:`.upload_image`. * Add method :meth:`.add_custom_widget`. * Add method :meth:`.add_post_flair_widget`. * Add method :meth:`.add_menu`. * Add method :meth:`.add_button_widget`. * Add method :meth:`~.SubredditWidgetsModeration.reorder` to reorder a subreddit's widgets. * Add :class:`.Redditors` (``reddit.redditors``) to provide Redditor listings. * Add :meth:`.submit_image` for submitting native images to Reddit. * Add :meth:`.submit_video` for submitting native videos and videogifs to Reddit. **Changed** * :meth:`.User.me` returns ``None`` in :attr:`~praw.Reddit.read_only` mode. * :meth:`.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. * :meth:`.SubredditRedditorFlairTemplates.__iter__` uses the v2 flair API endpoint. The method will still return the exact same items. * Methods :meth:`~.SubredditRedditorFlairTemplates.add`, :meth:`~.SubredditLinkFlairTemplates.add`, :meth:`~.SubredditRedditorFlairTemplates.update`, and :meth:`~.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 ``` ------------------ **Added** * Add method :meth:`.WikiPage.revision` to get a specific wiki page revision. * Added parameter ``skip_existing`` to :func:`.stream_generator` to skip existing items when starting a stream. * Add method :meth:`.Front.best` to get the front page "best" listing. * Add :attr:`.Subreddit.widgets`, :class:`.SubredditWidgets`, and widget subclasses like :class:`.TextArea` to support fetching Reddit widgets. * Add method :meth:`.Submission.mark_visited` to mark a submission as visited on the Reddit backend. **Fixed** * Fix ``RecursionError`` on :class:`.SubredditEmoji`'s ``repr`` and ``str``. * :meth:`.SubredditFilters.add` and :meth:`.SubredditFilters.remove` also accept a :class:`.Subreddit` for the ``subreddit`` parameter. * Remove restriction which prevents installed (non-confidential) apps from using OAuth2 authorization code grant flow. **Removed** * ``Subreddit.submissions`` as the API endpoint backing the method is no more. See https://www.reddit.com/r/changelog/comments/7tus5f/update_to_search_api/. ``` ### 5.4.0 ``` ------------------ **Added** * Add method :meth:`~.Reddit.patch` to :class:`.Reddit` class to support HTTP PATCH requests. * Add class :class:`.Preferences` to access and update Reddit preferences. * Add attribute :attr:`.User.preferences` to access an instance of :class:`.Preferences`. * Add method :meth:`.Message.delete()`. * Add class :class:`.Emoji` to work with custom subreddit emoji. **Deprecated** * ``Subreddit.submissions`` as the API endpoint backing the method is going away. See https://www.reddit.com/r/changelog/comments/7tus5f/update_to_search_api/. **Fixed** * Fix bug with positive ``pause_after`` values in streams provided by :func:`.stream_generator` where the wait time was not reset after a yielded ``None``. * Parse URLs with trailing slashes and no ``'comments'`` element when creating :class:`.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 ``` ------------------ **Added** * :attr:`.Multireddit.stream`, to stream submissions and comments from a Multireddit. * :meth:`.Redditor.block` **Fixed** * Now raises ``prawcore.UnavailableForLegalReasons`` instead of an ``AssertionError`` when encountering a HTTP 451 response. ``` ### 5.2.0 ``` ------------------ **Changed** * An attribute on :class:`.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 ``` ------------------ **Added** * :attr:`.Redditor.stream`, with methods :meth:`.RedditorStream.submissions()` and :meth:`.RedditorStream.comments()` to stream a Redditor's comments or submissions * :class:`.RedditorStream` has been added to facilitate :attr:`.Redditor.stream` * :meth:`.Inbox.collapse` to mark messages as collapsed. * :meth:`.Inbox.uncollapse` to mark messages as uncollapsed. * Raise :class:`.ClientException` when calling :meth:`~.Comment.refresh` when the comment does not appear in the resulting comment tree. * :meth:`.Submission.crosspost` to crosspost to a subreddit. **Fixed** * Calling :meth:`~.Comment.refresh` on a directly fetched, deeply nested :class:`.Comment` will additionally pull in as many parent comments as possible (currently 8) enabling significantly quicker traversal to the top-most :class:`.Comment` via successive :meth:`.parent()` calls. * Calling :meth:`~.Comment.refresh` previously could have resulted in a ``AttributeError: 'MoreComments' object has no attribute '_replies'`` exception. This situation will now result in a :class:`.ClientException`. * Properly handle ``BAD_CSS_NAME`` errors when uploading stylesheet images with invalid filenames. Previously an ``AssertionError`` was raised. * :class:`.Submission`'s ``gilded`` attribute properly returns the expected value from reddit. ``` ### 5.0.1 ``` ------------------ **Fixed** * Calls to :meth:`.hide()` and :meth:`.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 ``` ------------------ **Added** * :meth:`.Comment.disable_inbox_replies`, :meth:`.Comment.enable_inbox_replies` :meth:`.Submission.disable_inbox_replies`, and :meth:`.Submission.enable_inbox_replies` to toggle inbox replies on comments and submissions. **Changed** * ``cloudsearch`` is no longer the default syntax for :meth:`.Subreddit.search`. ``lucene`` is now the default syntax so that PRAW's default is aligned with Reddit's default. * :meth:`.Reddit.info` will now take either a list of fullnames or a single URL string. * :meth:`.Subreddit.submit` accepts a flair template ID and text. **Fixed** * Fix accessing :attr:`.LiveUpdate.contrib` raises ``AttributeError``. **Removed** * Iterating directly over :class:`.SubredditRelationship` (e.g., ``subreddit.banned``, ``subreddit.contributor``, ``subreddit.moderator``, etc) and :class:`.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 :class:`.Submission` to :meth:`.SubredditFlair.set` is removed. * The ``thing`` argument to :meth:`.SubredditFlair.set` is removed. * Return values from :meth:`.Comment.block`, :meth:`.Message.block`, :meth:`.SubredditMessage.block`, :meth:`.SubredditFlair.delete`, :meth:`.friend`, :meth:`.Redditor.message`, :meth:`.Subreddit.message`, :meth:`.select`, and :meth:`.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 :meth:`.SubredditRedditorFlairTemplates.add` and :meth:`.SubredditRedditorFlairTemplates.clear`. Use :class:`.SubredditLinkFlairTemplates` instead. ``` ### 4.6.0 ``` ------------------ The release's sole purpose is to announce the deprecation of the ``is_link`` parameter as described below: **Added** * :attr:`.SubredditFlair.link_templates` to manage link flair templates. **Deprecated** * ``is_link`` parameter of :meth:`.SubredditRedditorFlairTemplates.add` and :meth:`.SubredditRedditorFlairTemplates.clear`. Use :class:`.SubredditLinkFlairTemplates` instead. ``` ### 4.5.1 ``` ------------------ **Fixed** * Calling :meth:`.parent` works on :class:`.Comment` instances obtained via :meth:`.comment_replies`. ``` ### 4.5.0 ``` ------------------ **Added** * :meth:`~praw.models.reddit.subreddit.Modmail.unread_count` to get unread count by conversation state. * :meth:`~praw.models.reddit.subreddit.Modmail.bulk_read` to mark conversations as read by conversation state. * :meth:`~praw.models.reddit.subreddit.Modmail.subreddits` to fetch subreddits using new modmail. * :meth:`~praw.models.reddit.subreddit.Modmail.create` to create a new modmail conversation. * :meth:`~praw.models.ModmailConversation.read` to mark modmail conversations as read. * :meth:`~praw.models.ModmailConversation.unread` to mark modmail conversations as unread. * :meth:`~praw.models.reddit.subreddit.Modmail.conversations` to get new modmail conversations. * :meth:`~praw.models.ModmailConversation.highlight` to highlight modmail conversations. * :meth:`~praw.models.ModmailConversation.unhighlight` to unhighlight modmail conversations. * :meth:`~praw.models.ModmailConversation.mute` to mute modmail conversations. * :meth:`~praw.models.ModmailConversation.unmute` to unmute modmail conversations. * :meth:`~praw.models.ModmailConversation.archive` to archive modmail conversations. * :meth:`~praw.models.ModmailConversation.unarchive` to unarchive modmail conversations. * :meth:`~praw.models.ModmailConversation.reply` to reply to modmail conversations. * :meth:`~praw.models.reddit.subreddit.Modmail.__call__` to get a new modmail conversation. * :meth:`.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** * :meth:`.submit` accepts ``selftext=''`` to create a title-only submission. * :class:`.Reddit` accepts ``requestor_class=cls`` for a customized requestor class and ``requestor_kwargs={'param': value}`` for passing arguments to requestor initialization. * :meth:`~praw.models.reddit.subreddit.SubredditStream.comments`, :meth:`~praw.models.reddit.subreddit.SubredditStream.submissions`, and :meth:`~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 :meth:`.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 :class:`.WikiPage` revisions with deleted authors caused ``TypeError``. * :class:`.Submission` attributes ``comment_limit`` and ``comment_sort`` maintain their values after making instances non-lazy. ``` ### 4.4.0 ``` ------------------ **Added** * :meth:`.LiveThreadContribution.update` to update settings of a live thread. * ``reset_timestamp`` to :meth:`.limits` to provide insight into when the current rate limit window will expire. * :meth:`.upload_mobile_header` to upload subreddit mobile header. * :meth:`.upload_mobile_icon` to upload subreddit mobile icon. * :meth:`.delete_mobile_header` to remove subreddit mobile header. * :meth:`.delete_mobile_icon` to remove subreddit mobile icon. * :meth:`.LiveUpdateContribution.strike` to strike a content of a live thread. * :meth:`.LiveContributorRelationship.update` to update contributor permissions for a redditor. * :meth:`.LiveContributorRelationship.update_invite` to update contributor invite permissions for a redditor. * :meth:`.LiveThread.discussions` to get submissions linking to the thread. * :meth:`.LiveThread.report` to report the thread violating the Reddit rules. * :meth:`.LiveHelper.now` to get the currently featured live thread. * :meth:`.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`. * :class:`.Redditor` instances obtained via :attr:`.moderator` (e.g., ``reddit.subreddit('subreddit').moderator()``) will contain attributes with the relationship metadata (e.g., ``mod_permissions``). * :class:`.Message` instances retrieved from the inbox now have attributes ``author``, ``dest`` ``replies`` and ``subreddit`` properly converted to their appropriate PRAW model. ```Links
- PyPI: https://pypi.org/project/praw - Changelog: https://pyup.io/changelogs/praw/ - Docs: https://praw.readthedocs.org/