[PR]

Changelog

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

Version 4.12.1 (2022-11-06)

Bug Fixes

  • Add 1 second buffer to API v2 streaming timeout (51a5d61)

    • The keep-alive is often received after marginally longer than 20 seconds, causing unnecessary timeouts and reconnects with a timeout of exactly 20 seconds

  • Default AsyncBaseStream to abort closed SSL transports (#1904)

  • Warn when Tweet data is missing default edit_history_tweet_ids field (3dea0df, #1994)

  • Change initial network_error_wait to 0 for streaming (b18c1a6)

    • Attempt to reconnect immediately when established streaming connection drops

Misc

  • Document limit and pagination_token parameters for Paginator and AsyncPaginator (e98ab02, bb934fc)

  • Use separate method to construct Response in Client and AsyncClient (#1997, 9983735)

  • Log streaming connection error exceptions (b7f02c6)

  • Add CITATION.cff (2547b44)

  • Add DOI badge to README (72a33c9)

  • Replace docs/requirements.txt with docs extra (0ccfe86)

  • Fix Intersphinx link to namedtuple in documentation for Response (352c74a)

  • Improve format of badges in README (d41c813)

Version 4.12.0 (2022-10-27)

New Features / Improvements

  • Add support for Direct Messages with Twitter API v2 (#1995)

    • Add DirectMessageEvent model

    • Add Client.get_direct_message_events, Client.create_direct_message, and Client.create_direct_message_conversation

    • Add AsyncClient.get_direct_message_events, AsyncClient.create_direct_message, and AsyncClient.create_direct_message_conversation

  • Add support for Python 3.11 (a391c66)

  • Add support for variants Media field (#1910, e31be15)

Bug Fixes

  • Handle different method return types in API v2 pagination (#1843, #1861, 381bf91, 3874579)

  • Add missing angle bracket to string representation of ReferencedTweet (d4df069)

Misc

  • Add documentation for edit_history_tweet_ids and edit_controls Tweet fields (2b1e159)

    • This documentation was previously missing from Twitter's API documentation

  • Fix class references in notes in documentation for AsyncClient methods (f737b87)

  • Fix signature of Client.get_quote_tweets in documentation (6f7de39)

  • Update actions/setup-python from v2 to v4 (f16b3dc, 0148be7)

Version 4.11.0 (2022-10-24)

New Features / Improvements

  • Add support for retrieving edited Tweet metadata

    • Add support for include_ext_edit_control parameter for API methods (e122f35, e736770)

    • Add support for edit_history_tweet_ids and edit_controls Tweet fields (#1979, a1c104f)

  • Add asynchronous.AsyncPaginator for pagination for AsyncClient (33e444a)

  • Add support for exclude parameter for get_quote_tweets (4f28bd8, 17e02b7, 48ebdb7)

Bug Fixes

  • Handle 429 HTTP errors for streaming (#1982, #1986)

  • Lower API v2 streaming timeout to 20 seconds (#1986)

  • Regenerate Authorization header prior to any reconnection requests for AsyncStream (29bbb7b, a4c6325, 5ade386)

  • Use tuple for endpoint_parameters argument in API.indicate_direct_message_typing (396ab84)

  • Update models.List methods to pass keyword arguments to API methods (#1987)

  • Update models.List methods to use list ID instead of slug (73f6308)

Misc

  • Log text of HTTP response when handling request error in AsyncBaseStream (51c3762)

  • Update signature for get_list_tweets in documentation (86577b1)

    • Add media_fields, place_fields, and poll_fields parameters

  • Add version changed directive to documentation for get_list_tweets (5cb2616)

  • Improve documentation for wait_on_rate_limit parameter for streaming (#1986)

  • Add release dates to changelog (f665ce6, eafa665, 3f0cc76)

  • Add sections for old and previously missing versions to changelog (6aa1b77)

  • Update cassettes for testing methods that return Tweet objects (872b33e)

Version 4.10.1 (2022-08-22)

Bug Fixes

  • Fix AsyncBaseClient rate limit handling (#1902)

  • Fix handling of StreamRule when passed in list to StreamingClient.delete_rules or AsyncStreamingClient.delete_rules (#1942)

  • Add support for media_fields, place_fields, and poll_fields parameters for Client.get_list_tweets and AsyncClient.get_list_tweets (#1931)

  • Ignore AsyncClient method parameters explicitly passed as None (#1944)

Misc

  • Log text of HTTP response when handling request error in BaseStream (598ea64)

  • Update Requests documentation URL for Intersphinx linking (2c7213d)

  • Correct typo in documentation for StreamingClient and AsyncStreamingClient add_rules and delete_rules methods (#1937)

Version 4.10.0 (2022-05-20)

New Features / Improvements

  • Add asynchronous interfaces for Twitter API v2

    • Add asynchronous.AsyncClient (0aadd53)

      • Add async_lru as requirement for async extra

    • Add asynchronous.AsyncStreamingClient (9051ba6)

  • Add support for reverse chronological home timeline with Twitter API v2 (#1900)

    • Add Client.get_home_timeline and AsyncClient.get_home_timeline

  • Update the User-Agent header based on AsyncStream.user_agent even if AsyncStream.session is already initialized/set (096a62c)

Twitter API Deprecations

  • Deprecate AsyncStream.sample and note deprecation of compliance messages for AsyncStream.filter (e043074, 1b77007)

Misc

  • Update and improve various documentation and tests

Version 4.9.0 (2022-05-05)

New Features / Improvements

  • Add support for Direct Message typing indicator and read receipts (#1856)

    • Add API.indicate_direct_message_typing and API.mark_direct_message_read

  • Fallback to "detail" response value for HTTPException message (b6b8241)

  • Handle "error" key of response being a string in HTTPException (2da4452)

Twitter API Deprecations

  • Deprecate Stream.sample and note deprecation of compliance messages for Stream.filter (#1876)

Misc

  • Use setup.cfg for coverage.py configuration (e24bb2f)

    • Explicitly specify coverage >= 4.4.2 requirement for dev extra (b5bd35e)

  • Use setup.cfg for tox configuration (e24bb2f)

    • Update lower bound for dev extra tox requirement to >= 3.21.0 (ba6e6b1)

  • Remove tests_require from setup.py (2870031)

  • Stop creating universal wheels (9d93ec8)

  • Update and improve various documentation and tests

Version 4.8.0 (2022-03-24)

New Features / Improvements

  • Add support for Bookmarks with Twitter API v2 (#1848)

    • Add Client.remove_bookmark, Client.get_bookmarks, Client.bookmark

  • Add support for using OAuth 2.0 Authorization Code Flow with Client methods that require the authenticating user's ID (0157d0b)

    • Raise TypeError for those methods when the access token isn't set

  • Raise NotFound rather than HTTPException when encountering 404 response status codes in BaseClient.request (b6b8219)

Version 4.7.0 (2022-03-17)

New Features / Improvements

  • Add support for Quote Tweets lookup with Twitter API v2 (#1844)

    • Add Client.get_quote_tweets

Python Backwards-Incompatible Changes

  • Drop support for Python 3.6, which has reached end-of-life status (#1788)

Bug Fixes

  • Fix Client.follow to return response from Client.follow_user rather than None (0742f54)

  • Fix Client.unfollow to return response from Client.unfollow_user rather than None (c1787f0)

Misc

  • Organize documentation arrangement and improve index / table of contents categorization (c5310d1)

  • Add documentation for API v2 models

    • Add documentation for List (360594b)

    • Add documentation for Media (c2dacc8)

    • Add documentation for Place (e3fa223)

    • Add documentation for Poll (61ed5d7)

    • Add documentation for Space (1a7ea1f)

    • Add documentation for Tweet (b9cef72)

    • Add documentation for ReferencedTweet (9a995b5)

    • Add documentation for User (aa3658e)

  • Use Read the Docs Sphinx search extension for documentation (72c7e01)

  • Add and improve API v2 examples (#1835, 6a6ef98)

  • Use dash instead of underscore for requests-oauthlib requirement (2c94758)

  • Optimize Tweet.referenced_tweets initialization (3299881)

  • Update and improve various documentation

Version 4.6.0 (2022-02-24)

This will be the last minor version to support Python 3.6 (#1788).

New Features / Improvements

  • Add support for streaming with Twitter API v2 (86244c1)

    • Refactor Client and Stream to inherit from new BaseClient and BaseStream classes and add StreamingClient, StreamResponse, and StreamRule

  • Add support for new max_results and pagination_token parameters for Client.get_liking_users (bdd6b55)

  • Add support for new max_results and pagination_token parameters for Client.get_retweeters (3479e56)

  • Add support for new sort_order parameter for Client.search_all_tweets (bd202e5)

  • Add support for new sort_order parameter for Client.search_recent_tweets (8b47170)

  • Add Client.get_space_tweets (c8d5d9a)

  • Add Space.subscriber_count (1ffc8cd)

  • Use repr of text in Tweet.__repr__ (4e2997e)

    • This avoids including inconstant newlines, rather than escaped newlines, in the string representation of the Tweet object, making it more consistent

  • Override Mapping.__contains__ in DataMapping (9f10a58)

    • This allows membership tests to check for existence within data in Twitter API v2 models, rather than existence of the attribute at all

  • Initialize Stream.session within Stream.__init__ (80adf5b)

    • Update the user agent based on Stream.user_agent even if Stream.session is already initialized

  • Use oauthlib to create code challenge and verifier for PKCE (eb22416)

    • Explicitly specify oauthlib dependency requirement as >= 3.2.0 (fc0d967)

      • Update requests_oauthlib dependency requirement to >= 1.2.0 (dd7e2c9)

Bug Fixes

  • Fix datetime endpoint parameter formatting in Client._make_request (#1793)

Misc

  • Remove undocumented debug function (a702325)

  • Add logging documentation (7701506)

  • Update and improve various documentation

Version 4.5.0 (2022-01-24)

New Features / Improvements

  • Revamp authentication interface

    • Add support for OAuth 2.0 Authorization Code Flow with PKCE

    • Rename OAuthHandler to OAuth1UserHandler (fb6eb7d)

      • OAuthHandler is kept as a deprecated alias (cba7317)

    • Rename AppAuthHandler to Oauth2AppHandler (529d793)

      • AppAuthHandler is kept as a deprecated alias (d4ceb1a)

    • Rename OAuth2Bearer to OAuth2BearerHandler (0781fde)

    • Allow passing access token and secret directly to OAuth1UserHandler.__init__ (99f3583)

      • Note, this changes the callback parameter to be the fifth argument, positionally

    • Allow OAuth2BearerHandler to be used as auth parameter for API (5a2a3fc)

    • Remove AuthHandler (d600c4c)

    • Remove OAuth1UserHandler.get_xauth_access_token (8e2de9f)

    • Update and improve authentication documentation (f9a722b)

    • Other improvements and optimizations

  • Add Client.get_me (c49cbdf, 62b5b58, f6895d3, bb87b26)

  • Add support for Media.url (#1722)

  • Use requests exception to handle JSONDecodeError (b492b0a)

    • Update requests dependency requirement to >= 2.27.0 (ed66e8e)

Bug Fixes

  • Fix Response.includes["polls"] not being Poll objects (#1733)

  • Fix Paginator handling of Client.get_all_tweets_count (#1761)

Misc

  • Improve and optimize Model.__getstate__ (#1707)

  • Add API v2 examples to documentation (bbdbb7b)

  • Update and improve various documentation

Version 4.4.0 (2021-11-17)

New Features / Improvements

  • Add support for List lookup with Twitter API v2 (0aa2366)

  • Add Client.get_space_buyers (8bf58ca)

  • Add Space.ended_at and Space.topic_ids (c89a233)

Bug Fixes

  • Remove erroneous Space.__str__ (ebb4bfd)

Version 4.3.0 (2021-11-03)

New Features / Improvements

  • Add support for managing Tweets with Twitter API v2 (7884e3a)

Misc

  • Document HTTPException attributes (c62c31a)

  • Add table to documentation mapping Client methods to Twitter API v2 endpoints (0572b03)

  • Add and improve examples

  • Revamp examples page in documentation

  • Update and improve various documentation and tests

Version 4.2.0 (2021-10-29)

New Features / Improvements

  • Add support for managing lists with Twitter API v2 (b1342bf)

  • Rename Client.follow and Client.unfollow to Client.follow_user and Client.unfollow_user, respectively (8f8de15)

    • Client.follow and Client.unfollow are kept as deprecated aliases

  • Add FAQ section in documentation

  • Update and improve various documentation and tests

Twitter API Changes

  • Change state to optional parameter for Client.search_spaces (e61d5d6)

Bug Fixes

  • Fix parsing of datetime strings for API v2 models with Python 3.6 (5bf2446)

  • Fix models missing an API instance attribute when using Cursor with pagination by ID (451e921)

Version 4.1.0 (2021-10-07)

New Features / Improvements

  • Add support for Python 3.10 (229b738)

    • Update minimum dev requirement version for tox to 3.14.0

  • Add support for Spaces (5c68892)

    • Add Space model

    • Add Client.search_spaces, Client.get_spaces, and Client.get_space

  • Add support for batch compliance (6ca75e1)

    • Add Client.get_compliance_jobs, Client.get_compliance_job, and Client.create_compliance_job

  • Add Client.get_muted (00cdab8)

  • Minor documentation corrections

Version 4.0.1 (2021-10-01)

Bug Fixes

  • Fix handling of strings passed as fields parameters for Client methods (d61a5d9)

  • Include unexpected parameters passed to Client methods in Twitter API request (618d1c2)

    • This future-proofs for new endpoint parameters

  • Stop checking parameter names when converting parameters passed to Client methods from datetimes to strings (1320a37)

    • This future-proofs for new endpoint parameters besides start_time and end_time that accept datetimes

  • Handle simplejson being installed when handling JSONDecodeError in HTTPException (586c162)

Misc

  • Update documentation requirements (3fa38b6, 388e2f6, 4315ab0)

  • Remove nose usage from tests (b4c06a4)

  • Remove mock and nose from tests extra and requirements (0f071fd, b4c06a4)

  • Update and improve various documentation and tests

Version 4.0.0 (2021-09-25)

Major New Features / Improvements

  • Support Twitter API v2 (#1472, #1535)

    • Replace API v1.1 models in package namespace

  • Rework media uploading (#640, #1486, #1501)

  • Support asynchronous streaming (#732, #1491)

  • Rework API

    • Replace bind_api and APIMethod with API.request

      • Stop using property decorators for API methods

      • Use pagination decorator

    • Add requests.Session instance as API.session attribute (2f28757)

      • Initialize a single requests.Session instance per API instance, rather than for each request

    • Log warning when API.request is passed an unexpected keyword argument that isn't an endpoint parameter (c82d7ac)

    • Rename allowed parameters (allowed_param) to endpoint parameters (endpoint_parameters) (b4fc6a0)

    • Rename methods and method parameters (see Backwards-Incompatible Changes section)

    • Require parameters for methods (see Backwards-Incompatible Changes section)

    • Stop allowing arbitrary positional arguments for methods (see Backwards-Incompatible Changes section)

    • Remove unnecessary attributes and parameters (see Backwards-Incompatible Changes section)

    • Improve, optimize, and simplify API.request and other API methods

  • Rework streaming

    • StreamListener has been merged into Stream (see Backwards-Incompatible Changes section)

    • Stream data/event handling methods (i.e. those starting with on_) now log by default and disregard return values

    • Allow the stream to disconnect when any line of data is received, including keep-alive signals (#773, #897)

    • Remove, rename, and replace attributes, methods, and parameters (see Backwards-Incompatible Changes section)

    • Improve, optimize, and simplify Stream

  • Rework documentation

    • Automatically use docstrings for documentation

    • Use NumPy style docstrings

    • Use Intersphinx linking

    • Add tooltips for cross references using sphinx-hoverxref

    • Document Stream (18a6059)

    • Document models (0724060, 78a0c22)

    • Document pagination (695d531, 652fece)

    • Add table for API documentation (6db8e4c)

    • Separate documentation for exceptions (8a831b1)

    • Move changelog to documentation (fc98629)

    • Update, improve, and organize documentation

  • Rework exceptions

Backwards-Incompatible Changes

  • Drop support for Python 2 (#1253, #1482)

  • Drop support for Python 3.5 (#1487)

API

  • Rename API and models methods

    • API.blocks -> API.get_blocks (9541794)

    • API.blocks_ids -> API.get_blocked_ids (e241ca4)

    • API.destroy_direct_message -> API.delete_direct_message (2731fc9)

      • DirectMessage.destroy -> DirectMessage.delete (2731fc9)

    • API.favorites -> API.get_favorites (3c467da)

    • API.followers -> API.get_followers (ce768d9)

    • API.followers_ids -> API.get_follower_ids (fa5e7c4)

      • models.User.followers_ids -> models.User.follower_ids (fa5e7c4)

    • API.friends -> API.get_friends (6f3fccb)

    • API.friends_ids -> API.get_friend_ids (bab3e5e)

    • API.friendships_incoming -> API.incoming_friendships (007bd07)

    • API.friendships_outgoing -> API.outgoing_friendships (1400065)

    • API.geo_search -> API.search_geo (6f4fb39)

    • API.list_direct_messages -> API.get_direct_messages (ff1186f)

    • API.list_members -> API.get_list_members (5845f02)

    • API.list_subscribers -> API.get_list_subscribers (a05b630)

    • API.lists_all -> API.get_lists (458e0e8)

    • API.lists_memberships -> API.get_list_memberships (9dddc12)

      • models.User.lists_memberships -> models.User.list_memberships (9dddc12)

    • API.lists_subscriptions -> API.get_list_subscriptions (51945a7)

      • models.User.lists_subscriptions -> models.User.list_subscriptions (51945a7)

    • API.mutes -> API.get_mutes (744edc2)

    • API.mutes_ids -> API.get_muted_ids (ea26a29)

    • API.retweeters -> API.get_retweeter_ids (588c342)

    • API.retweets -> API.get_retweets (3b3ba24)

    • API.retweets_of_me -> API.get_retweets_of_me (737bd0b)

    • API.saved_searches -> API.get_saved_searches (8b39f74)

    • API.search -> API.search_tweets (7fac253)

    • API.show_friendship -> API.get_friendship (ee9ea2e)

    • API.show_list_member -> API.get_list_member (431ab15)

    • API.show_list_subscriber -> API.get_list_subscriber (bf26301)

    • API.statuses_lookup -> API.lookup_statuses (#477)

    • API.trends_available -> API.available_trends (68b33d7)

    • API.trends_closest -> API.closest_trends (2e18162)

    • API.trends_place -> API.get_place_trends (4912a7c)

    • API.update_with_media -> API.update_status_with_media (0a5e533)

  • Rename API method parameters

    • API.geo_id: id -> place_id (78051e8)

    • API.lookup_friendships: screen_names -> screen_name (4573b35), user_ids -> user_id (3bcccf8)

    • API.lookup_statuses: id_ -> id (f13a34b)

    • API.lookup_users: screen_names -> screen_name (17a2e7c), user_ids -> user_id (e7d9e55)

    • API.search_30_day: environment_name -> label (6c66c60)

    • API.search_full_archive: environment_name -> label (295bfe4)

    • API.update_profile_image: file_ -> file (69f6c1d)

  • Require API method parameters

    • API.closest_trends: lat, long (75b9616)

    • API.create_favorite: id (d3d2abe)

    • API.create_list: name (5e7385a)

    • API.create_saved_search: query (c57a4be)

    • API.delete_direct_message: id (bcb56ab)

    • API.destroy_favorite: id (a9d41b6)

    • API.get_direct_message: id (f5775ee)

    • API.get_oembed: url (af0cc51)

    • API.get_place_trends: id (c50f540)

    • API.get_retweeter_ids: id (66f6704)

    • API.get_status: id (bac73c3)

    • API.reverse_geocode: lat, long (87d8646)

    • API.search_30_day: query (52874b7)

    • API.search_full_archive: query (801f15d)

    • API.search_tweets: q (9377e7e)

    • API.search_users: q (21802f9)

    • API.update_status: status (f64c076)

    • API.update_status_with_media: status (0726263)

  • Stop allowing positional arguments for API methods (change to be keyword-only arguments):

    • API.add_list_member (ae18ee5)

    • API.add_list_members (8eb900f)

    • API.available_trends (7a74863)

    • API.closest_trends, besides lat and long (7946490)

    • API.create_block (caa34c6)

    • API.create_favorite, besides id (0b83984)

    • API.create_friendship (82cd798)

    • API.create_list, besides name (25cb01e)

    • API.create_mute (4aae710)

    • API.create_saved_search, besides query (76be2d9)

    • API.delete_direct_message, besides id (53ca00f)

    • API.destroy_block (c49cfb2)

    • API.destroy_favorite, besides id (8afee87)

    • API.destroy_friendship (b2d44fe)

    • API.destroy_list (4b2cfc4)

    • API.destroy_mute (009b54e)

    • API.destroy_saved_search, besides id (b7afca2)

    • API.destroy_status, besides id (876c8ca)

    • API.geo_id, besides place_id (a0cff22)

    • API.get_blocked_ids (ff38b70)

    • API.get_blocks (dc81854)

    • API.get_direct_message, besides id (4ae0ec8)

    • API.get_direct_messages (8e0507d)

    • API.get_favorites (e80b49a)

    • API.get_follower_ids (7d42597)

    • API.get_followers (c6ab5a0)

    • API.get_friend_ids (c65641b)

    • API.get_friends (e6965fa)

    • API.get_friendship (6dea7de)

    • API.get_list (92dc37f)

    • API.get_list_member (0af06db)

    • API.get_list_members (7c8be8d)

    • API.get_list_memberships (ec7601f)

    • API.get_list_subscriber (a175cdd)

    • API.get_list_subscribers (3ee84ef)

    • API.get_list_subscriptions (178d719)

    • API.get_lists (3cd0058)

    • API.get_muted_ids (2967104)

    • API.get_mutes (9e9d370)

    • API.get_oembed, besides url (d13d853)

    • API.get_place_trends, besides id (548810c)

    • API.get_retweeter_ids, besides id (9907c25)

    • API.get_retweets, besides id (0bd0292)

    • API.get_retweets_of_me (2b2ed0a)

    • API.get_saved_search, besides id (1d3d3ae)

    • API.get_saved_searches (c5f5b4b)

    • API.get_settings (2c2f0ec)

    • API.get_status, besides id (30af3ac)

    • API.get_user (6b761ce)

    • API.home_timeline (b91be22)

    • API.incoming_friendships (6d3b7f2)

    • API.list_timeline (e3ec5c1)

    • API.lookup_friendships (0eff951)

    • API.lookup_statuses, besides id (cf9845d)

    • API.lookup_users (7317109)

    • API.media_upload, besides filename (ec2498f)

    • API.mentions_timeline (3614ce4)

    • API.outgoing_friendships (09f8504)

    • API.rate_limit_status (b4b91c1)

    • API.remove_list_member (e7fa800)

    • API.remove_list_members (593ef1c)

    • API.report_spam (f55efcf)

    • API.retweet, besides id (4f7be88)

    • API.reverse_geocode: besides lat and long (b209c48)

    • API.search_30_day, besides label and query (434fd35)

    • API.search_full_archive, besides label and query (44391bc)

    • API.search_geo (0a6bec9)

    • API.search_tweets, besides q (445da4e)

    • API.search_users, besides q (76ca416)

    • API.send_direct_message, besides recipient_id and text (7d1a549)

    • API.set_settings (bf1d928)

    • API.supported_languages (2034efc)

    • API.subscribe_list (ee3b718)

    • API.unretweet, besides id (4626c42)

    • API.unsubscribe_list (2df2311)

    • API.update_list (8b3b4fb)

    • API.update_profile (99cd815)

    • API.update_profile_banner, besides filename (1ca22be)

    • API.update_profile_image, besides filename (3539fa2)

    • API.update_status, besides status (761cbfe)

    • API.update_status_with_media, besides filename and status (0ac4e83)

    • API.user_timeline (0ef964f)

  • Reorder API.update_status_with_media parameters (87abdcd)

  • Rename API initialization parameter: auth_handler -> auth (ee313bd)

  • Stop allowing positional arguments besides auth for API initialization (da2f276)

  • Remove API.api_root and API.upload_root (e757919)

  • Remove API.compression (4590c7a)

  • Remove API.me, AuthHandler.get_username, and OAuthHandler.get_username (807f937)

  • Remove API.search_host and API.search_root (92db0cf)

  • Remove API.wait_on_rate_limit_notify (f325738)

    • Always log warning when rate limit reached

  • Remove map_ keyword argument aliasing for API.lookup_statuses (0a404c3)

Stream

  • Remove and replace StreamListener by merging it into Stream (39abff4)

    • StreamListener.keep_alive -> Stream.on_keep_alive (abf4d5d)

    • StreamListener.on_connect -> Stream.on_connect

    • StreamListener.on_data -> Stream.on_data

    • StreamListener.on_delete -> Stream.on_delete

    • StreamListener.on_disconnect -> Stream.on_disconnect_message (6c3b997)

    • StreamListener.on_error -> Stream.on_request_error (fe3bb8b)

    • StreamListener.on_exception -> Stream.on_exception

    • StreamListener.on_limit -> Stream.on_limit

    • StreamListener.on_scrub_geo -> Stream.on_scrub_geo

    • StreamListener.on_status -> Stream.on_status

    • StreamListener.on_status_withheld -> Stream.on_status_withheld

    • StreamListener.on_timeout -> Stream.on_connection_error (8f62297)

    • StreamListener.on_user_withheld -> Stream.on_user_withheld

    • StreamListener.on_warning -> Stream.on_warning

  • Remove Stream.api (21a9db2)

  • Remove Stream.body (3e40193)

  • Remove Stream.headers (d07af4e)

  • Remove Stream.host (9cf8518)

  • Remove Stream.new_session (26518ab)

  • Remove Stream.timeout (a2f79f1)

  • Remove Stream.url (48cbf97)

  • Remove Stream parameters and attributes for reconnect wait times (24059d4)

    • Remove Stream.retry_time_start, Stream.retry_420_start, Stream.retry_time_cap, Stream.snooze_time_step, Stream.snooze_time_cap, Stream.retry_time, and Stream.snooze_time

  • Rename Stream.retry_count to Stream.max_retries (3585f13)

  • Replace Stream.auth with parameters and attributes for each credential (c9f59e6)

    • Replace Stream.auth with Stream.consumer_key, Stream.consumer_secret, Stream.access_token, and Stream.access_token_secret

  • Replace Stream parameter, proxies, with proxy (#1272)

  • Remove Stream.filter parameter: encoding (b3f2db2)

  • Rename Stream.filter and Stream.sample parameters: is_async -> threaded (6c96c15)

  • Stop allowing positional arguments for Stream.filter (0629d5f)

  • Stop allowing positional arguments for Stream.sample (b170720)

Twitter API Backwards-Incompatible Changes

  • Remove API.configuration (#1614)

  • Remove API.geo_similar_places (c6cfd97)

  • Remove API.related_results (068273b)

  • Remove id endpoint parameter for API.create_block (e4eaa4b)

  • Remove id endpoint parameter for API.create_friendship (6a3c1ab)

  • Remove id endpoint parameter for API.create_mute (bb25d69)

  • Remove id endpoint parameter for API.destroy_block (1a9b52d)

  • Remove id endpoint parameter for API.destroy_friendship (66f1612)

  • Remove id endpoint parameter for API.destroy_mute (8c444c5)

  • Remove id endpoint parameter for API.get_follower_ids (5cddd12)

  • Remove id endpoint parameter for API.get_followers (a3fb959)

  • Remove id endpoint parameter for API.get_friend_ids(7cbf818)

  • Remove id endpoint parameter for API.get_friends (6875e15)

  • Remove id endpoint parameter for API.get_user (a2681ed)

  • Remove accuracy and contained_within endpoint parameters for API.search_geo (d37a409)

  • Remove allow_contributor_request endpoint parameter for API.set_settings (1cc33b2)

  • Update API.update_profile_banner endpoint parameters: offset_right -> offset_top (83f9b79)

  • Remove enable_dmcommands and fail_dmcommands parameters for API.update_status (fe5b3ef)

  • Remove in_reply_to_status_id_str and auto_populate_reply_metadata endpoint parameters for API.update_status_with_media (c3c9d29)

  • Remove id endpoint parameter for API.user_timeline (#1484)

  • Remove Stream.firehose (ad50cdc)

  • Remove Stream.retweet(6b1944b)

  • Remove Stream.sitestream and Stream.userstream (96f7e63)

    • Remove StreamListener.on_direct_message and StreamListener.on_friends (ab2479b)

    • Remove StreamListener.on_event (20b5afb)

Other

  • Datetime objects for models.List.created_at, models.SavedSearch.created_at, models.Status.created_at, and models.User.created_at are now aware (59d4d92)

  • Change return_cursors parameter for JSONParser.parse and ModelParser.parse to be keyword-only argument (56b8e31)

  • Remove method parameter from parse method for Parser and its subclasses (dda2ec6)

  • Remove handling of 401 HTTP status code in API.verify_credentials (7e4d2a4)

  • Remove models.List.is_member and models.List.is_subscribed (b765aee)

New Features / Improvements

New Methods And Parameters / Attributes

  • Add API.get_list_ownerships (#1282, #1498)

    • Add models.User.list_ownerships (#1282)

  • Add API.get_profile_banner (58ac8bb)

  • Add API.no_retweets_friendships (496a399)

  • Add API.remove_profile_banner (f0e53c6)

  • Add API.update_friendship (ddd24a4)

  • Add API.user_agent (bbec64b)

  • Add endpoint parameters for API methods:

    • API.create_block: include_entities, skip_status (5e694b2)

    • API.create_favorite: include_entities (65c7ce7)

    • API.destroy_block: include_entities, skip_status (7299362)

    • API.destroy_favorite: include_entities (ecd19f0)

    • API.destroy_status: trim_user (ed363e6)

    • API.get_blocked_ids: stringify_ids (316b4cc)

    • API.get_blocks: include_entities, skip_status (7ef1e85)

    • API.get_favorites: include_entities (2b91edc)

    • API.get_follower_ids: stringify_ids (c490027)

    • API.get_friend_ids: stringify_ids, count (aba327e)

    • API.get_list_member: include_entities, skip_status (e959787)

    • API.get_list_members: count, include_entities, skip_status (232fa29)

    • API.get_list_subscriber: include_entities, skip_status (783941a)

    • API.get_muted_ids: stringify_ids (8b04108)

    • API.get_retweeter_ids: count (71ca488)

    • API.get_retweets: trim_user (e377188)

    • API.get_retweets_of_me: trim_user, include_entities, include_user_entities (589d97d)

    • API.get_user: include_entities (485691d)

    • API.incoming_friendships: stringify_ids (ffb7c0e)

    • API.media_upload: media_category, additional_owners (#1486)

    • API.mentions_timeline: trim_user, include_entities (eb7c8f6)

    • API.outgoing_friendships: stringify_ids (7ed0762)

    • API.retweet: trim_user (70d9665)

    • API.search_users: include_entities (8d64b61)

    • API.unretweet: trim_user (6d93f3b)

    • API.update_profile: include_entities, skip_status (9715c4a)

  • Add Stream.on_disconnect method (#277)

  • Expose Stream.thread (9c2419d)

New Functionality

  • Allow sending Quick Reply Options with Direct Messages (#1280)

    • Replace API.send_direct_message parameter, quick_reply_type, with quick_reply_options

  • Allow sending Call-To-Action buttons with Direct Messages in API.send_direct_message (#1311)

Documentation For Existing Methods

  • Document API.get_settings (cbac800)

  • Document API.incoming_friendships (09dbe0e)

  • Document API.outgoing_friendships (8ff5f22)

  • Document API.search_geo (a51a097)

  • Document API.set_settings (4703da3)

  • Document API.supported_languages (9bb8446)

  • Document API.update_profile_banner (a5df615)

Dependencies

  • Update requests_oauthlib dependency requirement to >= 1.0.0 (bf629e5)

  • Remove requests socks extra from setup.py install_requires (38b6de6)

    • Add socks extra requiring requests socks extra

Other

  • Check consumer key and secret type when initializing OAuthHandler (#1489)

  • Make models.User hashable (#1306)

  • Reduce extra sleep time for rate limit handling for API (#1049)

  • Handle keyword arguments for API.update_profile_image (ab96f2f)

  • Handle keyword arguments for API.update_profile_banner (88c3fa1)

  • Treat all 2xx HTTP status codes as successful responses (a0f6984)

  • Support gevent for streaming (#651)

  • Return thread when using threaded Stream.filter and Stream.sample (2e957b6)

  • Use specific user agent for Stream (5994c4b)

Misc

  • Update and improve various documentation and tests

  • Various other optimizations and improvements

Bug Fixes

  • Handle connection errors when streaming (#237, #448, #750, #1024, #1113, #1416)

  • Remove dependence on string length delimitation in Stream (#892)

  • Stop reraising exceptions in Stream._connect (#1072)

  • Change Stream.sample method to use GET HTTP method (1b0e869)

  • Default to models.User model in models.Status.parse more broadly for user attribute to handle parsers without model_factory attribute or model factories without user attribute (#538)

  • Default to models.Status model in models.SearchResults.parse more broadly for results to handle parsers without model_factory attribute or model factories without status attribute (71c031b)

  • Start on page 1 for PageIterator (#958)

  • Handle Twitter API issue with duplicate pages for API.search_users (#958, #1465)

  • Allow integer IDs for Stream.filter (#829, #830)

  • Handle ChunkedEncodingError during streaming (e8fcc4d)

  • Handle Twitter API errors with successful HTTP status codes (#1427)

  • Handle initial negative or zero limits in Cursor iterators (c1457b7)

Version 3.10.0 (2020-12-25)

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 (2020-07-11)

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 (2019-07-14)

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 (2018-11-27)

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 (2015-03-02)

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 (2015-11-19)

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 (2015-08-13)

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 (2015-02-21)

  • 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 (2015-01-28)

  • 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 (2014-12-01)

  • 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 (2014-11-30)

  • 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.3.0 (2014-04-26)

https://github.com/tweepy/tweepy/compare/2.2...v2.3.0

Version 2.2 (2014-01-20)

  • 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 (2013-06-16)

  • 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 (2013-02-10)

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.

Version 1.13 (2013-01-17)

https://github.com/tweepy/tweepy/compare/1.12...1.13

Version 1.12 (2012-11-08)

https://github.com/tweepy/tweepy/compare/1.11...1.12

Version 1.11 (2012-08-14)

https://github.com/tweepy/tweepy/compare/1.10...1.11

Version 1.10 (2012-07-08)

https://github.com/tweepy/tweepy/compare/1.9...1.10

Version 1.9 (2012-03-17)

https://github.com/tweepy/tweepy/compare/1.8...1.9

Version 1.8 (2011-10-31)

https://github.com/tweepy/tweepy/compare/1.7.1...1.8

Version 1.7.1 (2010-05-25)

https://github.com/tweepy/tweepy/compare/1.7...1.7.1

Version 1.7 (2010-05-23)

https://github.com/tweepy/tweepy/compare/1.6...1.7

Version 1.6 (2010-03-18)

https://github.com/tweepy/tweepy/compare/1.5...1.6

Version 1.5 (2010-01-12)

  • Models

    • Added some new helper methods to List model

    • User model

      • Added lists_memberships, lists_subscriptions, and lists helpers

      • Added followers_ids helper

    • Added ModelFactory to replace 'models' dict in tweepy.models. Extend this factory to plugin customized models then pass into API().

  • API

    • lists(), lists_memberships(), and lists_subscriptions() now take an "user" parameter for specifying which user to query.

  • OAuthHandler

    • You may now pass in an optional 'secure' boolean to the constructor which will use https for OAuth requests. Ex: auth = OAuthHandler(token,secret,secure=True)

    • Fallback to using 'twitter.com' instead of 'api.twitter.com' for OAuth until issue #8 is resolved.

Version 1.4 (2009-12-10)

  • Added people search API method. API.search_users()

  • Streaming API

    • Moved parameters into POST body to prevent "head too big" errors.

    • Stream can be run either asynchronously (threaded) or synchronously (blocks main thread). By default Stream will run in sync. mode. To change this pass into the stream method 'async=True'. Example: s = Stream('test', 'password', MyListener()) s.sample(async=True) # threaded mode s.filter(track=['pizza']) # synch./blocking mode

    • Listener now has a "on_data" method which can be overridden to manually handle the raw stream data.

  • tweepyshell

    • allow using getpass for more secure password collection new usage: tweepyshell [password] <-- optional now

    • enable debug mode with '-d' flag

  • API

    • retweet() method now works correctly

    • Added local trends method: trends_available() and trends_location()

    • send_direct_message() now accepts either a user/screen_name/user_id for recipient of DM

    • update_status() added 'source' parameter for Identi.ca

    • create_list() and update_list() added 'description' parameter

  • tweepy.debug() enables httplib debug mode

  • New Sphinx documentation (Thanks Kumar!) in doc/

  • User model

    • Fix timeline() to return correct timeline

    • Remove mentions() method

Version 1.3 (2009-11-13)

  • Lists API methods added

  • API.verify_credentials() now returns an User object if credentials are valid. Otherwise false will be returned.

  • API.new() removed

  • Removed model validation. Prone to breakage due to API changes.

  • Moved documentation out of api.py and into wiki.

  • Removed 'email' parameter from API.update_profile. No longer supported.

  • API.auth_handler -> API.auth

  • Moved memcache implementation to tweepy-more repository.

  • Tweepy now uses the versioned API and the new api.twitter.com subdomain

  • Updated retweet parsing for new payload format

Version 1.2 (2009-10-16)

  • API

    • Added automatic request re-try feature Example: API.friends(retry_count=5, retry_delay=10) Retry up to 5 times with a delay of 10 seconds between each attempt. See tutorial/t4.py for more an example.

    • Added cursor parameter to API.friends and API.followers methods. Note: page parameter is being deprecated by twitter on 10/26

    • Update parsing to handle cursor responses. When using 'cursor' parameter, the API method will return a tuple with this format: (data, next_cursor, prev_cursor) Calls not using the 'cursor' parameter are not changed in the way they return.

    • API.friends_ids and API.followers_ids now return a list of integers. Parser updated to handle cursor responses. See above.

    • Fix Status.source_url parsing

    • Fix search result 'source' parsing to properly unescape html and extract source

    • Added report_spam method

  • Cursor Added the Cursor object to help with pagination within the API. Please see the pagination tutorial for more details (tutorial/t6). This is the recommended way for using the 'page' and 'cursor' parameters.

  • Models

    • Status: added retweet, favorite and retweets methods (NOTE: retweet API not live yet on twitter)

  • Python 2.4 support

  • Update OAuth bundled library.

  • Logging removed. Having our own mini-logging system just feels like overkill. Turns out it was not really needed that much. Simply just exposing the last HTTPResponse object should be good enough for most debugging.

Version 1.1 (2009-09-24)

  • Fixes

    • Google App Engine fixes (thanks Thomas Bohmbach, Jr)

  • API

    • Added Retweet API methods

    • Added Retweet Streaming method

    • New model: Retweet

    • Updated statuses parser to handle retweet_details

    • Added new parameters for statuses/update; lat & long

    • friends_ids() & followers_ids() parameter changed page -> cursor

    • search() added "locale" parameter

    • expose last httplib.HTTPResponse object received as API.last_response

  • OAuthHandler

    • Added set_request_token() method

    • Added support for "sign in with twitter". get_authorization_url() now takes a boolean that when true uses the "sign in with twitter" flow. See http://apiwiki.twitter.com/Sign-in-with-Twitter

  • Logging

    • Added TweepyLogger interface which allows applications to collect log messages from Tweepy for debugging purposes.

    • Dummy, console, and file loggers available

  • Examples

    • Appengine demo (oauth)

  • Documentation of each method in api.py

Version 1.0.1 (2009-09-13)

  • Status.user --> Status.author

  • User:

    • follow()

    • unfollow()

  • API:

    • init() signature change; no longer accepts 'username' parameter which is now autodetected.

    • added new() method. shortcut for setting up new API instances example: API.new(auth='basic', username='testuser', password='testpass')

    • update_profile_image() and update_profile_background_image() method added.

    • Added search API methods: trends, trends_current, trends_daily, and trends_weekly

  • Streaming:

    • Update to new streaming API methods

    • New StreamListener class replacing callback function

  • Fixes

    • User.following is now set to False instead of None when user is not followed.

    • python 2.5 import syntax error fixed

    • python 2.5 timeout support for streaming API

    • win32 failed import of fcntl in cache.py

  • Changed indents from 2 to 4 spaces

Version 1.0 (2009-08-13)

https://github.com/tweepy/tweepy/commits/e62f8c18977fd755c9d24a0abebd3b8087c75b45