Changelog

These changelogs are also at https://github.com/tweepy/tweepy/releases as release notes.

Version 3.10.0

This will be the last major and minor version to support Python 2.7 (#1253) and Python 3.5.
The next non-patch release should be version 4.0.0.

New Features / Improvements

  • Add API.search_30_day and API.search_full_archive (#1175, #1294)

  • Update allowed parameters for API.home_timeline (#1410, #1458)

    • Add trim_user, exclude_replies, include_entities

    • Remove page as erroneously documented parameter

    • Reorder count to be the first parameter

  • Update allowed parameters for API.get_oembed

    • Add hide_thread, theme, link_color, widget_type, dnt

    • Remove id

  • Remove API.update_profile_background_image (#1466)

  • Add support for Python 3.9

  • Switch from Travis CI to GitHub Actions to run tests and deploy releases (#1402)

  • Update and improve various documentation

Bug Fixes

  • Use mimetypes.guess_type as fallback for determining image file type (#1411)

  • Use proper MIME type in Content-Type header for uploaded images

  • Allow file parameter to be used again for API.media_upload (#1412, #1413)

  • Allow file parameter to be used again for API.update_profile_banner, API.update_profile_image, and API.update_with_media (#1475)

  • Fix User.lists, User.lists_memberships, and User.lists_subscriptions to retrieve information about the user in question rather than the authenticating user (#1443, #1444)

Version 3.9.0

New Features / Improvements

  • Add API.create_media_metadata (#716)

  • Update allowed parameters for API.update_status (#1101)

    • Add exclude_reply_user_ids, attachment_url, possibly_sensitive, trim_user, enable_dmcommands, fail_dmcommands, card_uri

    • Remove in_reply_to_status_id_str, source

  • Add allowed parameters to API.get_status

    • trim_user, include_my_retweet, include_entities, include_ext_alt_text, include_card_uri

  • Add allowed parameters to API.statuses_lookup

    • include_ext_alt_text, include_card_uri

  • Improve API.lookup_users (#706)

  • Improve and optimize API.statuses_lookup, API.create_media_metadata, API.update_status

  • Add reverse as allowed parameter for API.lists_all

  • Add count as allowed parameter for API.lists_memberships

  • Add count as allowed parameter for API.lists_subscriptions

  • Add include_entities as allowed parameter for API.list_timeline

  • Add allowed parameters to API.list_subscribers

    • count, include_entities, skip_status

  • Add support for Python 3.8

  • Update and improve setup.py

  • Use requests socks extra instead of requiring PySocks directly

  • Allow uploading of images with file names without extensions (#1060, #1086)

  • Support uploading WebP images (#1298)

  • Add missing attributes to Relationship model (#1375)

  • Update max allowed size for uploaded GIFs (#1336, #1338)

  • Add _json attribute to DirectMessage model (#1342)

  • Update and improve tests (#1217)

  • Add documentation for extended Tweets

  • Document API.lookup_users (#539)

  • Add documentation for running tests (#681)

  • Add Korean translation of documentation (#1296)

  • Add Polish translation of documentation (#1316)

  • Document API.lookup_friendships (#1375)

  • Update and improve various documentation

Bug Fixes

  • Fix handling of invalid credentials for API.verify_credentials

  • Handle boolean value for API.verify_credentials include_email parameter (#890)

  • Allow Cursor to be used with API.list_direct_messages by adding DMCursorIterator (#1261, #1262)

Version 3.8.0

New Features / Improvements

  • Allow streams to use daemon threads (#1126)

  • Remove API.set_delivery_device (#1203)

  • Remove simplejson import and usage (#832)

  • Allow cursor parameter for API.blocks_ids and API.mutes_ids (#1208)

  • Drop support for Python 3.4

  • Allow perform_block parameter for API.report_spam (#1090)

  • Add API.mutes (#1197, #1215)

  • Allow count parameter for API.friends (#577)

  • Remove since, from, to, and source as allowed parameters for API.search

  • Handle location deletion and withheld content notices for streams (#886)

  • Allow usage of equality and difference operators with User objects (#939)

  • Add _json attribute to Category, Friendship, and List models (#590, #1169)

  • Remove API.suggested_categories, API.suggested_users, and API.suggested_users_tweets

  • Update and improve tests and cassettes (#1242)

  • Update DirectMessage model (#1081, #1228)

  • Replace API.direct_messages and API.sent_direct_messages with API.list_direct_messages (#1081, #1228)

  • Update API.get_direct_message, API.send_direct_message, and API.destroy_direct_message (#1081, #1228)

  • Update and improve various documentation

Bug Fixes

  • Exclude examples during installation (#1141, #1164)

  • Properly initialize OAuthHandler.request_token (#1149)

  • Properly handle map_ parameter for API.statuses_lookup (#598)

  • Support cursor pagination for API.blocks_ids and API.mutes_ids (#930, #931)

  • Return values for API.update_profile_background_image and API.update_profile_banner (#904)

  • Replace usage of root logger

  • Close Requests sessions (#810, #1093, #1237)

Version 3.7.0

New Features / Improvements

  • Allow trim_user and exclude_replies as parameters for API.user_timeline (#909)

  • Allow tweet_mode parameter for API.statuses_lookup (#840, #926)

  • Drop support for Python 2.6 and 3.3

  • Discord Server

  • Add proxy support for streams (#1033)

  • Add API.create_mute, API.destroy_mute, and API.mutes_ids (#1055)

  • Allow tweet_mode parameter for API.lookup_users (#1130)

Bug Fixes

  • Fix AttributeError during streaming (#1026, #1027)

  • Update how requirements are specified (#1029, #1030)

  • Fix compatibility issue with Python 3.7 (#1017, #1042)

Version 3.6.0

New Features / Improvements

  • Parse Status.quoted_status as a Status object (#633)

  • Allow in_reply_to_status_id_str as a parameter for API.update_status and API.update_with_media (#693)

  • Add stall_warnings parameter to Stream.sample (#701)

  • Add API.unretweet (#735, #736)

  • Allow auto_populate_reply_metadata as a parameter for API.update_status and API.update_with_media (#761)

  • Allow profile_link_color as a parameter for API.update_profile

  • Add support for Python 3.6 (#831, #884)

Bug Fixes

  • Update file size limit for API.media_upload (#717)

  • Fix JSONParser.parse returning None in certain cases (#765, #766)

  • Include URL parameters when accessing cache (#777)

  • Properly re-raise exceptions during streaming

  • Fix AttributeError and TypeError during streaming (#698)

  • Properly encode filter_level for Stream.filter (#782)

Version 3.5.0

Features / Improvements

  • Allow ‘full_text’ param when getting direct messages ( #664 )

  • Explicitly return api code when parsing error ( #666 )

  • Remove deprecated function and clean up codes ( #583 )

Bug Fixes

  • update_status: first positional argument should be ‘status’ ( #578 )

  • Fix “TypeError: Can’t convert ‘bytes’ object to str implicitly” ( #615 #658 #635 )

  • Fix duplicate raise in auth.py ( #667 )

Version 3.4.0

New Features

  • Add API for account/settings (PR #596)

  • Added RateLimitError for easily working with the rate limit. (Issue #600, PR #611) @obskyr

  • Allow include_email param for verify_credentials API (PR #623)

  • Added support for the “filter_level” parameter for the streaming API (PR #619)

Bug Fixes

  • Streaming: don’t decode stream bytes until json.decode (PR #606)

  • Typo fix on _add_list_members, _remove_list_members properties. (PR #593)

  • Fixes issue #570 - add “exception” when raising one

  • Change raise in streaming.py to raise exception (PR #621)

Version 3.3.0

  • Loosen our dependency requirements for Requests (>= 2.4.3)

  • Fix issue with streams freezing up on Python 3 (Issue #556)

  • Add keep_alive() callback to StreamListener when keep alive messages arrive

  • Fix issue with stream session headers not being used when restarting connection

  • Fix issue with streams getting stuck in a loop when connection dies. (PR #561)

Version 3.2.0

  • Remove deprecated trends methods.

  • Fix tweepy.debug() to work in Python 3.

  • Fixed issue #529 - StreamListener language filter stopped working.

  • Add Documentation Page for streaming.

  • Add media/upload endpoint.

  • Add media_ids parameter to update_status().

Version 3.1.0

  • Allow specifying your own ssl certificates for streaming client.

  • Distribute Python Wheels instead of dumb binaries.

  • Fix cursor invocation, passing args to underlying method. (https://github.com/tweepy/tweepy/issues/515)

  • Upgrade to Request 2.4.3

Version 3.0

  • Added multiple list members operation api methods (add_list_members, remove_list_members).

  • Added sitestream endpoint.

  • Switch to using Requests instead of httplib.

  • Fully removed support for non-secure HTTP.

  • Proxy support.

  • Add API method for /statuses/lookup.json

  • Add missing ‘count’ parameter to followers_ids

  • Added allowed_param to update_profile_image

  • Comparison between Status objects

  • Extend on_data method by including a conditional to process warning messages and add the definition of the method to manage those warning messages

  • Better Python 3 support.

Version 2.2

  • Added update_profile_banner endpoint.

  • Don’t treat HTTP status codes in 200 range as errors.

  • Tests no longer packaged into egg releases.

  • Improve test stability and enable CI testing on pull requests.

  • Removed Basic Auth.

  • Use built-in timeout feature of httplib to fix appengine.

  • Added retweeters() endpoint.

  • Removed deprecated retweeted_by and retweeted_by_ids.

  • Improved datetime parsing. Should be more thread safe.

  • Enable coverage reporting. Upload reports to Coveralls.

    • https://coveralls.io/r/tweepy/tweepy

  • Removed deprecated test() endpoint.

  • New stream listeners callback on_disconnect(). Called whenever “disconnect” messages arrive from Twitter before connection is killed.

    • https://dev.twitter.com/docs/streaming-apis/messages#Disconnect_messages_disconnect

  • Compare View

  • Use HTTPS by default.

  • Support setting the starting cursor postion (ex: Ex: Cursor(api.friends_ids, cursor=123456))

  • Added API.cached_result instance flag that is “True” when cached result is returned.

  • New Streaming client callbacks

    • on_event(status): called when new events arrive

    • on_direct_message(status): called when a new direct message arrives.

  • Improvements to streaming client re-connection behavior / configuration. (https://github.com/tweepy/tweepy/commit/447f69cd3de67b0d241b9d4f669ecc9b9c0cdb54)

Version 2.1

  • Added get_oembed().

  • friends() and followers() are back and updated to v1.1.

  • Fixed report_spam() endpoint.

  • Added “languages” parameter to streaming filter() method.

  • Added “timeout” support for API object. Ex: API(timeout=1000).

  • Python 2.5 no longer supported.

  • Added compression support. Ex: API(compression=True).

  • Added on_connect() callback to StreamListener.

  • Switched API search() to v1.1 endpoint. Some breaking changes.

  • Drop “page” based cursors and use “ID” based ones instead.

  • Compare View

Version 2.0

Dedicated in memory of Aaron Swartz

  • Twitter API 1.1 support.

  • Basic Authentication deprecated.

  • friends_timeline() removed.

  • mentions() removed and replaced by mentions_timeline().

  • retweeted_by_user() removed.

  • retweeted_by_me() removed.

  • retweeted_to_me() removed.

  • retweeted_by_user() removed.

  • friends() removed.

  • followers() removed.

  • enable_notifications() removed.

  • disable_notifications() removed.

  • exists_block() removed.

  • lists() removed and replaced by lists_all().

  • is_list_member() removed.

  • show_list_member added.

  • is_subscribed_list() removed.

  • show_list_subscriber() added.

  • trends_location() removed.

  • nearby_places() removed.