unstale

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 init

@unstale/cli 0.2.1 on npm

praw 865 changes

Breaking changes 43

  • The APIException class is removed.

    8.0.0release notes

  • Comment.award is removed.

    8.0.0release notes

  • Comment.gild is removed.

    8.0.0release notes

  • The after argument is removed.

    8.0.0release notes

  • InboxableMixin.unblock_subreddit is removed.

    8.0.0release notes

  • The path argument is replaced by media, which takes a PostMedia instance.

    8.0.0release notes

  • The reset_timestamp key is removed from limits.

    8.0.0release notes

  • Uploads to Reddit S3 buckets respect the configured timeout and raise prawcore.RequestException on transport errors.

    8.0.0release notes

  • The data argument must now be passed by keyword.

    8.0.0release notes

  • PRAW no longer supports Python 3.8.

    8.0.0release notes

  • PRAW no longer supports Python 3.9.

    8.0.0release notes

  • The token_manager keyword argument and all associated token managers are removed.

    8.0.0release notes

  • Reddit.random_subreddit is removed.

    8.0.0release notes

  • Raises ReadOnlyException when called in read_only mode.

    8.0.0release notes

  • The validate_on_submit configuration attribute is removed.

    8.0.0release notes

  • Redditor.gild is removed.

    8.0.0release notes

  • Redditor.gilded is removed.

    8.0.0release notes

  • Redditor.gildings is removed.

    8.0.0release notes

  • The reason_id argument is renamed to id.

    8.0.0release notes

  • comment_sort and comment_limit must be set before fetching; setting either afterward raises ClientException instead of logging a warning.

    8.0.0release notes

  • Raises ClientException when called after a submission has been fetched, rather than logging a warning.

    8.0.0release notes

  • Submission.award is removed.

    8.0.0release notes

  • Submission.gild is removed.

    8.0.0release notes

  • Subreddit.gilded is removed.

    8.0.0release notes

  • Subreddit.mod.inbox is removed.

    8.0.0release notes

  • Subreddit.mod.stream.unread is removed.

    8.0.0release notes

  • Subreddit.mod.unread is removed.

    8.0.0release notes

  • The mark_read argument must now be passed by keyword.

    8.0.0release notes

  • Subreddit.random is removed.

    8.0.0release notes

  • Subreddit.random_rising is removed.

    8.0.0release notes

  • Gallery, image, poll, and video submission methods are merged into submit; the submission kind is selected by keyword argument, with optional Markdown body text.

    8.0.0release notes

  • The image_path argument is replaced by media, which takes an EmojiMedia instance.

    8.0.0release notes

  • The flair_type argument must now be passed by keyword.

    8.0.0release notes

  • SubredditMessage.mute is removed.

    8.0.0release notes

  • SubredditMessage.unmute is removed.

    8.0.0release notes

  • Subreddits.gold is removed.

    8.0.0release notes

  • Subreddits.search_by_topic is removed.

    8.0.0release notes

  • Stylesheet upload methods replace image_path with a positional media argument taking a StylesheetImage or StylesheetAsset as appropriate.

    8.0.0release notes

  • The file_path argument is replaced by a positional media argument taking a WidgetMedia instance.

    8.0.0release notes

  • Uploading an unknown media type now raises ClientException instead of falling back to JPEG.

    8.0.0release notes

  • This obsolete configuration option is removed because adding fetch parameters after fetching now raises ClientException.

    8.0.0release notes

  • This obsolete configuration option is removed because setting comment_sort or comment_limit after fetching now raises ClientException.

    8.0.0release notes

  • WebSocketException.original_exception is removed.

    8.0.0release notes

New APIs and options 12

  • Returns the announcement's read timestamp as a timezone-aware datetime, or None for unread announcements.

    8.0.0release notes

  • Returns the announcement's sent timestamp as a timezone-aware datetime.

    8.0.0release notes

  • Collection gains a timezone-aware updated_datetime attribute.

    8.0.0release notes

  • Objects with a creation time gain a timezone-aware created_datetime attribute.

    8.0.0release notes

  • 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.

    8.0.0release notes

  • PollData gains a timezone-aware voting_end_datetime attribute.

    8.0.0release notes

  • This environment variable silences the warning for a current-directory praw.ini that sets oauth_url or reddit_url.

    8.0.0release notes

  • Provides access to announcements for listing, hiding, and marking the authenticated user's announcements as read.

    8.0.0release notes

  • Iterates over a Redditor's combined comments and submissions, mirroring Reddit's user overview page.

    8.0.0release notes

  • Link, image, gallery, and video submissions can include optional Markdown-formatted body text.

    8.0.0release notes

  • The exception_handler keyword argument receives exceptions raised while fetching items, allowing a stream to resume; re-raising stops the stream.

    8.0.0release notes

  • Video submissions accept an optional Markdown-formatted selftext parameter.

    8.0.0release notes

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.

    8.0.0release notes

Tooling 2

  • Declared in praw and praw.models so type checkers recognize documented imports as public re-exports instead of reporting them as private.

    8.0.1release notes

  • A PEP 561 marker lets downstream projects type check against PRAW's inline annotations.

    8.0.0release notes

Fixes and other changes 7

  • Rewinds seekable file objects before retrying after a rate limit response, preventing empty or truncated file uploads.

    8.0.3release notes

  • Objectifying a response whose json.errors field is null no longer raises TypeError.

    8.0.0release notes

  • 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.

    8.0.0release notes

  • PRAW adds support for Python 3.13.

    8.0.0release notes

  • PRAW adds support for Python 3.14.

    8.0.0release notes

  • The subreddit attribute of Redditor is a UserSubreddit instance.

    8.0.0release notes

  • The API endpoint used by Submission.hide and Submission.unhide is fixed.

    8.0.0release notes