Changelog¶
- The changes listed below are divided into four categories.
- [BUGFIX] Something was broken before, but is now fixed.
- [CHANGE] Other changes affecting user programs, such as the renaming of a function.
- [FEATURE] Something new has been added.
- [REDDIT] A change caused by an upstream change from reddit.
Read /r/changelog to be notified of upstream changes.
PRAW 2.1.21¶
- [BUGFIX] Fix assertion error in
replace_more_comments()
with continue this thread links that have more than one child.- [BUGFIX]
refresh()
onpraw.objects.Submission
no longer loses comment sort order and other manually specified parameters.- [REDDIT] Add
hide_ads
as a parameter to
set_settings()
. * [REDDIT]create_redditor()
no longer requires a captcha * [REDDIT]create_subreddit()
may require a captcha
PRAW 2.1.20¶
- [BUGFIX] Attempting to lazyload an attribute of a comment that has been removed will explicitly raise a
praw.errors.InvalidComment()
exception, rather than anIndexError
(issue #339).- [BUGFIX]
replace_more_comments()
handles continue this thread typeMoreComments
objects.- [FEATURE] Added
praw.helpers.valid_redditors()
.- [FEATURE] Added a
nsfw
parameter toget_random_subreddit()
that permits fetching a random NSFW Subreddit. This change also supports fetching these subreddits viaget_subreddit('randnsfw')
.- [FEATURE] Added a
from_sr
parameter tosend_message()
to send the private message from a subreddit you moderate (Like the “From” dropdown box when composing a message).- [FEATURE] Added
Multireddit
- [FEATURE] Added
get_multireddit()
to get a single multireddit obj- [FEATURE] Added
get_my_multireddits()
to get all multireddits owned by the logged in user.- [FEATURE] Added
get_multireddit()
toRedditor
to quickly get a multireddit belonging to that user.- [FEATURE]
praw.objects.Comment
,praw.objects.Redditor
, andpraw.objects.Submission
are now gildable.- [FEATURE]
praw.objects.Comment
is now saveable.- [REDDIT] Handle upstream change in reddit’s OAuth2 scope parsing.
PRAW 2.1.19¶
- [BUGFIX] Support URLs in
search()
.- [BUGFIX] Fix bug where
json_dict
was set toNone
when it should not have been.- [BUGFIX] Fix
get_subreddit_recommendations()
to work with the updated API route.- [BUGFIX] Track time between requests using
timeit.default_timer
.- [CHANGE]
get_friends()
andget_banned()
once again work.- [CHANGE]
is_root()
no longer requires fetching submission objects.- [REDDIT] Support
thing_id
lists inget_info()
.- [FEATURE] Support providing HTTPS proxies, that is, proxies specific to handling HTTPS requests.
- [FEATURE]
get_liked()
andget_disliked()
now accept additional arguments, e.g., limit.- [FEATURE] Add
get_messages()
for specifically retreiving messages (not replies).- [REDDIT] Add
collapse_deleted_comments
as a parameter toset_settings()
.- [REDDIT]
get_stylesheet()
now supports using themodconfg
OAuth scope.- [REDDIT]
get_stylesheet()
no longer accepts theprevstyle
argument.
PRAW 2.1.18¶
- [FEATURE] Add the
get_flair_choices()
method to theSubmission
class, which returns the choices for user flair in the subreddit and the current flair of the authenticated user.- [FEATURE] Add the
get_flair_choices()
method to theSubmission
class, which returns the choices for link flair on this submission as well as it’s current flair.- [BUGFIX] Fix python3 issue with
func_defaults
.- [REDDIT] Avoid exceptions caused by upstream changes by reddit with respect to conflicts between json attributes and
RedditContentObject
properties. In such cases, the attribute from reddit will be suffixed with “_reddit”.
PRAW 2.1.17¶
- [BUGFIX] Remove the built-in
score
property from comments as reddit provides that attribute as of 2014/06/18.- [FEATURE]
submit()
now supports aresubmit
argument to allow the submission of an already submitted url.
PRAW 2.1.16¶
- [BUGFIX] Fix incorrect username when building Redditor objects from wikipage submissions.
- [CHANGE] Increase the dependency of
update_checker
to 0.10 or later to prevent ImportWarnings (issue 291).- [CHANGE]
get_banned()
now takes auser_only
argument (default:True
). When the value is explicitly passed asFalse
the return value is not a generator ofRedditor
objects, but a generator of dictionaries whosename
key corresponds to theRedditor
object and whose ban-note is at keynote
.- [FEATURE] Enable gathering of duplicate submissions for a Submission object (issue 290).
- [FEATURE] Add
praw.__init__.AuthenticatedReddit.delete()
.
PRAW 2.1.15¶
- [FEATURE] Add
save
OAuth scope tosave()
andunsave()
.- [BUGFIX] Fix Google AppEngine bug with
platform.platform
.- [REDDIT] Using
get_flair()
now requires moderator access. See this /r/redditdev thread- [CHANGE] Increase the dependency of
update_checker
to 0.9 or later.
PRAW 2.1.14¶
- [CHANGE] Increase the dependency of
six
to 1.4 or later.
PRAW 2.1.13¶
- [FEATURE] Support building wheel binary distributions.
- [FEATURE]
get_submission()
andfrom_url()
now supports url parameters. Both included within the url and explicitly via the “params” argument.- [CHANGE] The dependency on
update_checker
has been increased to >= 0.8.- [REDDIT] Add support for changes to UserLists on reddit.
- [REDDIT] Using get_flair_list now requires moderator access. See this /r/redditdev thread
- [BUGFIX] Fix configuration parsing for
store_json_result
.- [BUGFIX] Fix duplicate bug in
BoundedSet
.
PRAW 2.1.12¶
- [FEATURE] Add
json_dict
toRedditContentObject
.- [FEATURE] You can now give configuration settings directly when instantiating a
BaseReddit
object. See the configuration files- [BUGFIX] Fixed a bug that caused an
AttributeError
to be raised when using a deprecated method.
PRAW 2.1.11¶
- [FEATURE] Added
ignore_reports()
andunignore_reports()
toComment
andSubmission
.- [BUGFIX] The
history
scope is not required forget_comments()
,get_overview()
andget_submitted()
despite the official reddit documentation saying so. Redditors may choose to make their voting record public, in which case no authentication is required forget_disliked()
orget_liked()
. Thehistory
scope requirement for the above-mentioned methods has been removed.
PRAW 2.1.10¶
- [FEATURE] Add
get_new_subreddits()
to return the newest subreddits.- [FEATURE] Add the arguments
save
andsend_replies
tosubmit()
.- [FEATURE] Create and add
history
scope toget_comments()
,get_disliked()
,get_liked()
,get_overview()
,get_submitted()
,get_hidden()
andget_saved()
.
PRAW 2.1.9¶
- [FEATURE]
mark_as_nsfw()
andunmark_as_nsfw()
can now be used if the currently authenticated user is the author of the Submission.- [FEATURE]
get_contributors()
can now be used for accessing the contributor list of protected/private subreddits without requiring moderator access. See issue issue 246.- [BUGFIX] Fixed
Comment
erroneously having the methodsmark_as_nsfw
andunmark_as_nsfw
, despite comments not being able to be marked as NSFW.- [REDDIT] Update
get_subreddit_recommendations()
to handle changed returned data format.
PRAW 2.1.8¶
- [FEATURE] Add
get_subreddit_recommendations()
to get a recommendation of subreddits based on a list of provided subreddits.- [FEATURE]
Subreddit
now has an__repr__
method. So it’s now possible to identify what subreddit the object represents from the human readable representation of the object.- [FEATURE] Add
praw.__init__.UnauthenticatedReddit.get_rising()
that returns the rising listing of the front page in the context of the currently logged-in user (if any).
PRAW 2.1.7¶
- [FEATURE] Add methods
set_contest_mode()
andunset_contest_mode()
toSubmission
, for (un)setting of contest modes. See this Reddit post for information about contest mode.- [FEATURE] Move methods
get_liked()
andget_liked()
toRedditor
fromLoggedInRedditor
. Redditors can make their likes and dislikes public. Havingget_liked()
andget_liked()
onRedditor
allows PRAW to access this info.- [FEATURE] The
has_fetched
attribute has been added to all objects save- [BUGFIX] Fixed a bug that caused the
timeout
configuration setting to always be the default 45 irrespective of what it was set to inpraw.ini
.
PRAW 2.1.6¶
- [BUGFIX] PRAW automatically retries failed requests to reddit if the error is likely to be a temporary one. This resulted in spamming reddit if the error occurred after content had been saved to reddit’s database. Therefore the following methods will no longer retry failed request
upload_image()
,send_message()
,submit()
,send_feedback()
,reply()
andadd_comment()
. Additionallyrequest_json()
now has theretry_on_error
argument, which if set toTrue
will prevent retries of the request if it fails.
PRAW 2.1.5¶
- [FEATURE]
select_flair()
method added, can be used to change your flair without moderator access on subreddits that allow it.- [FEATURE] Add
sticky()
andunsticky()
to sticky and unsticky a submission to the top of a subreddit.- [FEATURE] Add arguments syntax and period to
search()
.- [FEATURE] PRAW will now try to use the http_proxy environment variable for proxy settings, if no proxy is set in the configuration file.
- [BUGFIX]
get_stylesheet()
erroneously required moderator access. It now just requires that the authenticated user has access to the subreddit.- [BUGFIX] Fix bug that prevented the usage of
search()
when called fromSubreddit
.
PRAW 2.1.4¶
- [FEATURE]
get_mod_mail()
can now be used to get moderator mail from individual subreddits, instead of all moderated subreddits, just likeget_mod_queue()
.- [FEATURE] Added
get_mentions()
which is aget_content()
generator for username mentions. Only usable if the authenticated user has gold.- [BUGFIX] Fixed an error in
get_mod_queue()
,get_reports()
,get_spam()
andget_unmoderated()
when calling them from- [REDDIT] New fields
public_traffic
added toset_settings()
as per the upstream change.
PRAW 2.1.3¶
- [FEATURE] Added
UnauthenticatedReddit.get_random_submission()
.- [BUGFIX] Verify that
sys.stdin
hasclosed
attribute before checking if the stream is closed.
PRAW 2.1.2¶
- [BUGFIX] Avoid occasionally processing duplicates in
comment_stream()
.- [CHANGE]
comment_stream()
yields comments in a consitent order (oldest to newest).- [FEATURE] Support fetching submission listings for domains via
get_domain_listing()
.
PRAW 2.1.1¶
- [FEATURE] Added
praw.helpers.comment_stream()
to provide a neverending stream of new comments.- [BUGFIX] Don’t cache requests whose responses will result in an exception. This bug was introduced in version 2.1.0.
PRAW 2.1.0¶
- [FEATURE] PRAW now supports proper rate-limiting and shared caching when running multiple processes. See Concurrent PRAW Instances for usage information.
- [CHANGE] Remove explicit
limit
parameters from functions that utilizeget_content()
but don’t alter the limit. This change will result in broken code if the calling code utilizes positional instead of keyword arguments.- [CHANGE]
get_flair()
returnsNone
when the redditor does not exist.- [CHANGE] Deprecated
get_all_comments()
. Useget_comments()
withall
as the subreddit argument.- [CHANGE] Deprecated
get_my_reddits()
. Useget_my_subreddits()
instead.- [CHANGE] Deprecated
get_popular_reddits()
. Useget_popular_subreddits()
instead.- [BUGFIX] Allow editing non-top-level wiki pages fetched using
Subreddit.get_wiki_page()
.- [BUGFIX] Fix a bug in
submit()
. See https://github.com/praw-dev/praw/issues/213.- [BUGFIX] Fix a python 3.3 bug in
upload_image()
. See https://github.com/praw-dev/praw/issues/211.
PRAW 2.0.15¶
- [FEATURE] PRAW can now use a proxy server, see #206. The parameter
http_proxy
(optional) has been added to the configuration file to define a proxy server in the form host:ip or http://login:user@host:ip.
PRAW 2.0.14¶
- [BUGFIX] Prevent potential invalid redirect exception when using
get_wiki_page()
.
PRAW 2.0.13¶
- [FEATURE] Added
get_submissions()
to batch convert fullnames (t3_bas36id
) intoSubmission
objects.- [FEATURE] Added
get_wiki_banned()
to get a list of wiki banned users.- [FEATURE] Added
add_wiki_ban()
andremove_wiki_ban()
to manage the list of wiki banned users.- [FEATURE] Added
get_wiki_contributors()
to get a list of wiki contributors.- [FEATURE] Added
add_wiki_contributor()
andremove_wiki_contributor()
to manage the list of wiki contributors.- [FEATURE] Added
get_wiki_page()
to fetch an individual WikiPage.- [FEATURE] Added
get_wiki_pages()
to get a list of WikiPage objects.- [FEATURE] Wiki pages can be edited through either the
WikiPage.edit()
method of an already existing WikiPage object, or through theedit_wiki_page()
function.edit_wiki_page()
is also used to create new wiki pages.- [CHANGE] Deprecated
ban()
,unban()
,make_contributor()
, andmake_moderator()
in favor of the consistently namedadd_ban()
,remove_ban()
,add_contributor()
, andadd_moderator()
respectively.
PRAW 2.0.12¶
- [FEATURE] PRAW can now decode HTML entities, see #186. The parameter
decode_html_entities
(defaultFalse
) has been added to the configuration file to control whether this feature is activated.- [FEATURE] Add
InvalidSubreddit
exception which is raised when attempting to get a listing for a nonexistent subreddit.- [FEATURE] All functions that use the
get_content()
generator function now take*args, **kwargs
.- [BUGFIX] Requesting user specific data such as
get_unread()
while OAuthenticated as a user, then switching OAuthentication to another user and re-requesting the data withincache_timeout
would return the cached results matching the previously authenticated user.- [BUGFIX]
friend()
andunfriend()
used to raise anAttributeError
when called without user/pswd authentication. It now properly raisesLoginRequired
.
PRAW 2.0.11¶
- [FEATURE] Add the
raise_captcha_exception
argument toRequireCaptcha
decorator. Whenraise_captcha_exception
isTrue
(defaultFalse
), PRAW wil not prompt for the captcha information but instead raise aInvalidCaptcha
exception.- [REDDIT] An upstream change has split new and rising into their own independent listings. Use the new
praw.objects.Subreddit.get_rising()
method instead of the oldget_new_by_rising()
andget_new()
instead ofget_new_by_date()
.- [CHANGE] The dependency on
update_checker
has been increased from >= 0.4 to >= 0.5.- [BUGFIX] After inviting a moderator invite, the cached set of moderated subreddits would not be updated with the new subreddit. Causing
restrict_access()
to prevent performing moderater actions in the subreddit.
PRAW 2.0.10¶
- [FEATURE] Add
delete_flair()
method toSubreddit
and
PRAW 2.0.9¶
- [FEATURE] Add parameter
update_user
(default False) toget_unread()
if it andunset_has_mail
are both True, then theuser
object in thehas_mail
attribute set toFalse
.- [FEATURE] Add
get_friends()
andget_blocked()
toLoggedInRedditor
.- [FEATURE] Add the read scope to
get_all_comments()
in the- [FEATURE] Add the read scope to
get_comments()
and the subreddit listings such asget_new()
in theReddit()
andSubreddit()
object.- [BUGFIX] Fix bug in
MoreComments.comments()
.- [CHANGE] Break
get_friends()
andget_banned()
until there is an upstream fix to mean that does not require ssl for those endpoints.
PRAW 2.0.8¶
- [FEATURE] Add
unset_has_mail
parameter toget_unread()
, if it’s set toTrue
, then it will sethas_mail
for the logged-in user toFalse
.
PRAW 2.0.7¶
- [REDDIT] A reddit update broke PRAW’s ability to use
login()
if it was authenticated as a logged-in user. This update adds the ability to re-login.- [CHANGE]
get_flair_list()
can now be used when logged-in as a regular user, being logged in as a mod of the subreddit is no longer required.
PRAW 2.0.6¶
- [FEATURE] Add the
get_unmoderated()
method toSubreddit
and base reddit objects. This returns a listings of submissions that haven’t been approved/removed by a moderator.
PRAW 2.0.5¶
- [FEATURE] Add the parameter
gilded_only
toget_comments()
andget_all_comments()
methods inSubreddit
and base reddit objects. Ifgilded_only
is set toTrue
, then only gilded comments will be returned.- [FEATURE] Add
get_comments()
method to Reddit object. It works likeget_comments()
in Subreddit objects except it takes the subreddit as the first argument.
PRAW 2.0.4¶
- [BUGFIX] Fix python 3 failure within the test suite introduced in 2.0.3.
PRAW 2.0.3¶
- [FEATURE] Add
delete_image()
method toSubreddit
objects (also callable on the base reddit object with the subreddit as the first argument).- [CHANGE] PRAW now requires version 0.4 of
update_checker
.
PRAW 2.0.2¶
- [BUGFIX] Fixed bug when comparing
MoreComments
classes in Python 3.x.
PRAW 2.0.1¶
- [BUGFIX] Fix bug with
limit=None
in methodreplace_more_comments()
inSubmission
object.
PRAW 2.0.0¶
- [FEATURE] Support reddit OAuth2 scopes (passwordless authentication). See PRAW and OAuth for usage information.
- [FEATURE] Maximize the number of items fetched when explicit limits are set thus reducing the number of requests up to 4x in some cases.
- [FEATURE] Add the following API methods to
Subreddit
objects (also callable on the base reddit object with the subreddit as the first argument):
accept_moderator_invite()
– accept a pending moderator invite.get_mod_log()
– return ModAction objects for each item (run vars(item), to see available attributes).configure_flair()
– interface to subreddit flair options.upload_image()
– upload an image for the subreddit header or use in CSS.- [FEATURE] Support ‘admin’ and special distinguishing of items via
distinguish()
.- [FEATURE] Ability to specify max-character limit for object-to-string representations via
output_chars_limit
inpraw.ini
.- [CHANGE] Remove
comments_flat
property ofSubmission
objects. The newpraw.helpers.flatten_tree()
can be used to flatten comment trees.- [CHANGE] Remove
all_comments
andall_comments_flat
properties of Submission objects. The now public methodreplace_more_comments()
must now be explicitly called to replace instances ofMoreComments
within the comment tree.- [CHANGE] The
content_id
attribute ofRedditContentObject
has been renamed tofullname
.- [CHANGE] The
info
base Reddit instance method has been renamed toget_info()
.- [CHANGE]
get_saved_links
has been renamed toget_saved()
and moved to theLoggedInRedditor
(r.user
) namespace.- [CHANGE] The Subreddit
get_info
method has been renamed tofrom_url()
and supports parameters for changing the number of comments to fetch and by what sort method.- [CHANGE] The
get_submission()
method also now supports parameters for changing the number of comments to fetch and by what sort method.- [CHANGE]
mark_as_nsfw()
andunmark_as_nsfw()
can no longer be used onSubreddit
objects. Useupdate_settings(nsfw=True)
instead.- [CHANGE] Remove depreciated method
compose_message
.- [CHANGE] Refactored and add a number of exception classes (docs, source) This includes the renaming of:
BadCaptcha
toInvalidCaptcha
.NonExistantUser
toInvalidUser
.- [CHANGE] Simplify content-limit handling and remove the following no-longer necessary parameters from
praw.ini
:
comment_limit
comment_sort
default_content_limit
gold_comments_max
more_comments_max
regular_comments_max
- [CHANGE] Move the following methods from
LoggedInRedditor
to base reddit object.
PRAW 1.0.16¶
- [FEATURE] Add support for /r/random.
PRAW 1.0.15¶
- [FEATURE] Added the functions
hide()
andunhide()
toSubmission
.- [FEATURE] Added function
is_username_available()
to
PRAW 1.0.14¶
- [FEATURE] Extended functionality to Python 3.3.
PRAW 1.0.13¶
- [BUGFIX] Fixed non-equality bug. Before comparing two PRAW objects with != would always return
True
.- [FEATURE] Added the function
my_contributions
toLoggedInRedditor
. Use this to find the subreddits where the user is an approved contributor.- [CHANGE] Voting on something will now force the next call to
get_liked()
orget_disliked()
to re-query from the reddit rather than use the cache.
PRAW 1.0.12¶
- [FEATURE] Support for optional ‘prev’ values added.
PRAW 1.0.10¶
- [FEATURE] Allow for the OS to not be identified when searching for
praw.ini
.
PRAW 1.0.9¶
- [FEATURE] Added the functions
mark_as_nsfw()
andunmark_as_nsfw()
toSubmission
andSubreddit
.
PRAW 1.0.8¶
- [CHANGE] Printing a
Submission
tosys.stdout
will now limit the output length to 80 chars, just likeComment
does.- [FEATURE] The maximum amount of comments that can be retrieved alongside a submission for gold and regular accounts has been exported to
praw.ini
.- [REDDIT] Checks for login/moderator in
get_moderators()
andget_flair()
for Subreddit are no longer necessary.- [FEATURE] Added the function
refresh()
toSubmission
,Subreddit
andRedditor
. This will make PRAW re-query either reddit or the cache, depending on whether the last call was withincache_timeout
, for the latest values and update the objects values.- [FEATURE] Added functions
get_liked()
,get_disliked()
andget_hidden()
toLoggedInRedditor
to allow you to get the Things the user has upvoted, downvoted or hidden.- [BUGFIX] Temporary bugfix until prevstyles become optional.
- [FEATURE] Added prevstyle to set_stylesheet requests.
- [BUGFIX] Putting in
user
orpswd
topraw.ini
without values will no longer make it impossible to login.- [FEATURE] You can now have just
user
filled out inpraw.ini
to ease login while remaining safe.
PRAW 1.0.7¶
- [REDDIT] New fields
prev_description_id
andprev_public_description_id
added toset_settings()
as per the upstream change.
PRAW 1.0.6¶
- [CHANGE]
compose_message
has been renamed tosend_message()
inLoggedInRedditor
.compose_message
is now depreciated and will be removed around the end of 2012.
PRAW 1.0.5¶
- [FEATURE]
get_popular_reddits()
added to
PRAW 1.0.4¶
- [FEATURE] Added
get_new()
andget_controversial()
to
PRAW 1.0.3¶
- [REDDIT] The logged in / moderator checks for
flair_list
in
PRAW 1.0.1¶
- [FEATURE]
require_moderator
decorator now supports multi-reddits.- [FEATURE] Rudimentary logging of the http requests have been implemented.