pypi / praw
praw
What changed in praw 8, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-21.
43 breaking12 new APIs and options1 behavior and defaults2 tooling7 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initpraw 865 changes
Breaking changes 43
The APIException class is removed.
Comment.award is removed.
Comment.gild is removed.
The after argument is removed.
InboxableMixin.unblock_subreddit is removed.
The path argument is replaced by media, which takes a PostMedia instance.
The reset_timestamp key is removed from limits.
Uploads to Reddit S3 buckets respect the configured timeout and raise prawcore.RequestException on transport errors.
The data argument must now be passed by keyword.
PRAW no longer supports Python 3.8.
PRAW no longer supports Python 3.9.
The token_manager keyword argument and all associated token managers are removed.
Reddit.random_subreddit is removed.
Raises ReadOnlyException when called in read_only mode.
The validate_on_submit configuration attribute is removed.
Redditor.gild is removed.
Redditor.gilded is removed.
Redditor.gildings is removed.
The reason_id argument is renamed to id.
comment_sort and comment_limit must be set before fetching; setting either afterward raises ClientException instead of logging a warning.
Raises ClientException when called after a submission has been fetched, rather than logging a warning.
Submission.award is removed.
Submission.gild is removed.
Subreddit.gilded is removed.
Subreddit.mod.inbox is removed.
Subreddit.mod.stream.unread is removed.
Subreddit.mod.unread is removed.
The mark_read argument must now be passed by keyword.
Subreddit.random is removed.
Subreddit.random_rising is removed.
Gallery, image, poll, and video submission methods are merged into submit; the submission kind is selected by keyword argument, with optional Markdown body text.
The image_path argument is replaced by media, which takes an EmojiMedia instance.
The flair_type argument must now be passed by keyword.
SubredditMessage.mute is removed.
SubredditMessage.unmute is removed.
Subreddits.gold is removed.
Subreddits.search_by_topic is removed.
Stylesheet upload methods replace image_path with a positional media argument taking a StylesheetImage or StylesheetAsset as appropriate.
The file_path argument is replaced by a positional media argument taking a WidgetMedia instance.
Uploading an unknown media type now raises ClientException instead of falling back to JPEG.
This obsolete configuration option is removed because adding fetch parameters after fetching now raises ClientException.
This obsolete configuration option is removed because setting comment_sort or comment_limit after fetching now raises ClientException.
WebSocketException.original_exception is removed.
New APIs and options 12
Returns the announcement's read timestamp as a timezone-aware datetime, or None for unread announcements.
Returns the announcement's sent timestamp as a timezone-aware datetime.
Collection gains a timezone-aware updated_datetime attribute.
Objects with a creation time gain a timezone-aware created_datetime attribute.
Media classes consolidate uploads and can be constructed from a file path or from bytes with a name, avoiding the need to write content to disk before uploading.
PollData gains a timezone-aware voting_end_datetime attribute.
This environment variable silences the warning for a current-directory praw.ini that sets oauth_url or reddit_url.
Provides access to announcements for listing, hiding, and marking the authenticated user's announcements as read.
Iterates over a Redditor's combined comments and submissions, mirroring Reddit's user overview page.
Link, image, gallery, and video submissions can include optional Markdown-formatted body text.
The exception_handler keyword argument receives exceptions raised while fetching items, allowing a stream to resume; re-raising stops the stream.
Video submissions accept an optional Markdown-formatted selftext parameter.
Behavior and default changes 1
selftext and url are no longer mutually exclusive; selftext can accompany a link submission, but inline_media cannot be used with selftext for a url submission.
Tooling 2
Declared in praw and praw.models so type checkers recognize documented imports as public re-exports instead of reporting them as private.
A PEP 561 marker lets downstream projects type check against PRAW's inline annotations.
Fixes and other changes 7
Rewinds seekable file objects before retrying after a rate limit response, preventing empty or truncated file uploads.
Objectifying a response whose json.errors field is null no longer raises TypeError.
The subreddit module is now a package with Subreddit and helper classes moved to dedicated modules; classes remain importable from praw.models.reddit.subreddit and praw.models for backward compatibility.
PRAW adds support for Python 3.13.
PRAW adds support for Python 3.14.
The subreddit attribute of Redditor is a UserSubreddit instance.
The API endpoint used by Submission.hide and Submission.unhide is fixed.