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.