These changelogs are also at https://github.com/tweepy/tweepy/releases as release notes.
- Add constants for potential model object fields (f3f73bc)
DIRECT_MESSAGE_EVENT_FIELDS
DM_EVENT_FIELDS
LIST_FIELDS
MEDIA_FIELDS
PLACE_FIELDS
POLL_FIELDS
PUBLIC_SPACE_FIELDS
SPACE_FIELDS
PUBLIC_TWEET_FIELDS
TWEET_FIELDS
USER_FIELDS
- Add
creator_id
field forSpace
(a13726a)
- Remove support for streaming with Twitter API v1.1 status/filter endpoint (c8a02eb)
Stream
AsyncStream
- Remove support for deprecated Premium v1.1 Search APIs (a955f30)
API.search_30_day
API.search_full_archive
- Overhaul Getting Started documentation (addb9f7)
- Remove no longer valid Twitter API version badges in README (880e7bf)
- Update and improve various documentation
- Add
verified_type
field forUser
(9f7afae)
- Remove streaming methods using retired Twitter API v1.1 features (0cd96b1)
- Twitter API v1.1 statuses/sample endpoint
Stream.sample
AsyncStream.sample
- Compliance messages on the Twitter API v1.1 statuses/filter endpoint
Stream.on_delete
,Stream.on_scrub_geo
,Stream.on_status_withheld
,Stream.on_user_withheld
AsyncStream.on_delete
,AsyncStream.on_scrub_geo
,AsyncStream.on_status_withheld
,AsyncStream.on_user_withheld
- Twitter API v1.1 statuses/sample endpoint
- Deprecate streaming with Twitter API v1.1 statuses/filter endpoint (8b9c547)
Stream
AsyncStream
- Return base class method values in
StreamingClient._process_data
andAsyncStreamingClient._process_data
methods (2744073) - Handle empty payloads in
JSONParser.parse
(e854138, #2051)
- Handle incorrect processing state for errored chunked uploads (a68ce86)
- Support async-lru v2 (f98b345)
- Document specific expansions available for each type of payload (7df6453)
- Add documentation for Direct Message events (c689548)
- Update documentation for
dm_event_fields
parameter (e2fb467) - Add section in documentation about
dm_event_fields
parameter (4b0fa90) - Add expansions documentation for Direct Message conversation events (#2009)
- Add note in documentation about removal of
Tweet
source
field (5d22a01) - Add SECURITY.md (b79a1db, 3d3d58e)
- Update copyright years to include 2023 (ccc9526)
- 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
- Document
limit
andpagination_token
parameters forPaginator
andAsyncPaginator
(e98ab02, bb934fc) - Use separate method to construct
Response
inClient
andAsyncClient
(#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 forResponse
(352c74a) - Improve format of badges in README (d41c813)
- Add support for Direct Messages with Twitter API v2 (#1995)
- Add
DirectMessageEvent
model - Add
Client.get_direct_message_events
,Client.create_direct_message
, andClient.create_direct_message_conversation
- Add
AsyncClient.get_direct_message_events
,AsyncClient.create_direct_message
, andAsyncClient.create_direct_message_conversation
- Add
- Add support for Python 3.11 (a391c66)
- Add support for
variants
Media
field (#1910, e31be15)
- Handle different method return types in API v2 pagination (#1843, #1861, 381bf91, 3874579)
- Add missing angle bracket to string representation of
ReferencedTweet
(d4df069)
- Add documentation for
edit_history_tweet_ids
andedit_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)
- Add support for retrieving edited Tweet metadata
- Add
asynchronous.AsyncPaginator
for pagination forAsyncClient
(33e444a) - Add support for
exclude
parameter forget_quote_tweets
(4f28bd8, 17e02b7, 48ebdb7)
- 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 inAPI.indicate_direct_message_typing
(396ab84) - Update
models.List
methods to pass keyword arguments toAPI
methods (#1987) - Update
models.List
methods to use list ID instead of slug (73f6308)
- 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
, andpoll_fields
parameters
- Add
- 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)
- Fix
AsyncBaseClient
rate limit handling (#1902) - Fix handling of
StreamRule
when passed in list toStreamingClient.delete_rules
orAsyncStreamingClient.delete_rules
(#1942) - Add support for
media_fields
,place_fields
, andpoll_fields
parameters forClient.get_list_tweets
andAsyncClient.get_list_tweets
(#1931) - Ignore
AsyncClient
method parameters explicitly passed asNone
(#1944)
- 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
andAsyncStreamingClient
add_rules
anddelete_rules
methods (#1937)
- Add asynchronous interfaces for Twitter API v2
- Add support for reverse chronological home timeline with Twitter API v2 (#1900)
- Add
Client.get_home_timeline
andAsyncClient.get_home_timeline
- Add
- Update the User-Agent header based on
AsyncStream.user_agent
even ifAsyncStream.session
is already initialized/set (096a62c)
- Deprecate
AsyncStream.sample
and note deprecation of compliance messages forAsyncStream.filter
(e043074, 1b77007)
- Update and improve various documentation and tests
- Add support for Direct Message typing indicator and read receipts (#1856)
- Add
API.indicate_direct_message_typing
andAPI.mark_direct_message_read
- Add
- Fallback to
"detail"
response value forHTTPException
message (b6b8241) - Handle
"error"
key of response being a string inHTTPException
(2da4452)
- Deprecate
Stream.sample
and note deprecation of compliance messages forStream.filter
(#1876)
- 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
- Add support for Bookmarks with Twitter API v2 (#1848)
- Add
Client.remove_bookmark
,Client.get_bookmarks
,Client.bookmark
- Add
- 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
- Raise
NotFound
rather thanHTTPException
when encountering 404 response status codes inBaseClient.request
(b6b8219)
- Add support for Quote Tweets lookup with Twitter API v2 (#1844)
- Add
Client.get_quote_tweets
- Add
- Drop support for Python 3.6, which has reached end-of-life status (#1788)
- Fix
Client.follow
to return response fromClient.follow_user
rather thanNone
(0742f54) - Fix
Client.unfollow
to return response fromClient.unfollow_user
rather thanNone
(c1787f0)
- 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)
- Add documentation for
- 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
This will be the last minor version to support Python 3.6 (#1788).
- Add support for streaming with Twitter API v2 (86244c1)
- Refactor
Client
andStream
to inherit from newBaseClient
andBaseStream
classes and addStreamingClient
,StreamResponse
, andStreamRule
- Refactor
- Add support for new
max_results
andpagination_token
parameters forClient.get_liking_users
(bdd6b55) - Add support for new
max_results
andpagination_token
parameters forClient.get_retweeters
(3479e56) - Add support for new
sort_order
parameter forClient.search_all_tweets
(bd202e5) - Add support for new
sort_order
parameter forClient.search_recent_tweets
(8b47170) - Add
Client.get_space_tweets
(c8d5d9a) - Add
Space.subscriber_count
(1ffc8cd) - Use
repr
of text inTweet.__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__
inDataMapping
(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
withinStream.__init__
(80adf5b)- Update the user agent based on
Stream.user_agent
even ifStream.session
is already initialized
- Update the user agent based on
- Use oauthlib to create code challenge and verifier for PKCE (eb22416)
- Fix datetime endpoint parameter formatting in
Client._make_request
(#1793)
- Remove undocumented
debug
function (a702325) - Add logging documentation (7701506)
- Update and improve various documentation
- Revamp authentication interface
- Add support for OAuth 2.0 Authorization Code Flow with PKCE
- Rename
OAuthHandler
toOAuth1UserHandler
(fb6eb7d)OAuthHandler
is kept as a deprecated alias (cba7317)
- Rename
AppAuthHandler
toOauth2AppHandler
(529d793)AppAuthHandler
is kept as a deprecated alias (d4ceb1a)
- Rename
OAuth2Bearer
toOAuth2BearerHandler
(0781fde) - Allow passing access token and secret directly to
OAuth1UserHandler.__init__
(99f3583)- Note, this changes the
callback
parameter to be the fifth argument, positionally
- Note, this changes the
- Allow
OAuth2BearerHandler
to be used asauth
parameter forAPI
(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)
- Fix
Response.includes["polls"]
not beingPoll
objects (#1733) - Fix
Paginator
handling ofClient.get_all_tweets_count
(#1761)
- Improve and optimize
Model.__getstate__
(#1707) - Add API v2 examples to documentation (bbdbb7b)
- Update and improve various documentation
- Add support for List lookup with Twitter API v2 (0aa2366)
- Add
Client.get_space_buyers
(8bf58ca) - Add
Space.ended_at
andSpace.topic_ids
(c89a233)
- Remove erroneous
Space.__str__
(ebb4bfd)
- Add support for managing Tweets with Twitter API v2 (7884e3a)
- 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
- Add support for managing lists with Twitter API v2 (b1342bf)
- Rename
Client.follow
andClient.unfollow
toClient.follow_user
andClient.unfollow_user
, respectively (8f8de15)Client.follow
andClient.unfollow
are kept as deprecated aliases
- Add FAQ section in documentation
- Update and improve various documentation and tests
- Change
state
to optional parameter forClient.search_spaces
(e61d5d6)
- Fix parsing of datetime strings for API v2 models with Python 3.6 (5bf2446)
- Fix models missing an
API
instance attribute when usingCursor
with pagination by ID (451e921)
- 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
, andClient.get_space
- Add
- Add support for batch compliance (6ca75e1)
- Add
Client.get_compliance_jobs
,Client.get_compliance_job
, andClient.create_compliance_job
- Add
- Add
Client.get_muted
(00cdab8) - Minor documentation corrections
- 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
andend_time
that accept datetimes
- This future-proofs for new endpoint parameters besides
- Handle simplejson being installed when handling
JSONDecodeError
inHTTPException
(586c162)
- 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
-
Support Twitter API v2 (#1472, #1535)
- Replace API v1.1 models in package namespace
-
Rework
API
- Replace
bind_api
andAPIMethod
withAPI.request
- Stop using property decorators for
API
methods - Use
pagination
decorator
- Stop using property decorators for
- Add
requests.Session
instance asAPI.session
attribute (2f28757)- Initialize a single
requests.Session
instance perAPI
instance, rather than for each request
- Initialize a single
- 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 otherAPI
methods
- Replace
-
Rework streaming
StreamListener
has been merged intoStream
(see Backwards-Incompatible Changes section)Stream
data/event handling methods (i.e. those starting withon_
) 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
- Rename
API
andmodels
methodsAPI.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 parametersAPI.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 parametersAPI.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
, besideslat
andlong
(7946490)API.create_block
(caa34c6)API.create_favorite
, besidesid
(0b83984)API.create_friendship
(82cd798)API.create_list
, besidesname
(25cb01e)API.create_mute
(4aae710)API.create_saved_search
, besidesquery
(76be2d9)API.delete_direct_message
, besidesid
(53ca00f)API.destroy_block
(c49cfb2)API.destroy_favorite
, besidesid
(8afee87)API.destroy_friendship
(b2d44fe)API.destroy_list
(4b2cfc4)API.destroy_mute
(009b54e)API.destroy_saved_search
, besidesid
(b7afca2)API.destroy_status
, besidesid
(876c8ca)API.geo_id
, besidesplace_id
(a0cff22)API.get_blocked_ids
(ff38b70)API.get_blocks
(dc81854)API.get_direct_message
, besidesid
(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
, besidesurl
(d13d853)API.get_place_trends
, besidesid
(548810c)API.get_retweeter_ids
, besidesid
(9907c25)API.get_retweets
, besidesid
(0bd0292)API.get_retweets_of_me
(2b2ed0a)API.get_saved_search
, besidesid
(1d3d3ae)API.get_saved_searches
(c5f5b4b)API.get_settings
(2c2f0ec)API.get_status
, besidesid
(30af3ac)API.get_user
(6b761ce)API.home_timeline
(b91be22)API.incoming_friendships
(6d3b7f2)API.list_timeline
(e3ec5c1)API.lookup_friendships
(0eff951)API.lookup_statuses
, besidesid
(cf9845d)API.lookup_users
(7317109)API.media_upload
, besidesfilename
(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
, besidesid
(4f7be88)API.reverse_geocode
: besideslat
andlong
(b209c48)API.search_30_day
, besideslabel
andquery
(434fd35)API.search_full_archive
, besideslabel
andquery
(44391bc)API.search_geo
(0a6bec9)API.search_tweets
, besidesq
(445da4e)API.search_users
, besidesq
(76ca416)API.send_direct_message
, besidesrecipient_id
andtext
(7d1a549)API.set_settings
(bf1d928)API.supported_languages
(2034efc)API.subscribe_list
(ee3b718)API.unretweet
, besidesid
(4626c42)API.unsubscribe_list
(2df2311)API.update_list
(8b3b4fb)API.update_profile
(99cd815)API.update_profile_banner
, besidesfilename
(1ca22be)API.update_profile_image
, besidesfilename
(3539fa2)API.update_status
, besidesstatus
(761cbfe)API.update_status_with_media
, besidesfilename
andstatus
(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
forAPI
initialization (da2f276) - Remove
API.api_root
andAPI.upload_root
(e757919) - Remove
API.compression
(4590c7a) - Remove
API.me
,AuthHandler.get_username
, andOAuthHandler.get_username
(807f937) - Remove
API.search_host
andAPI.search_root
(92db0cf) - Remove
API.wait_on_rate_limit_notify
(f325738)- Always log warning when rate limit reached
- Remove
map_
keyword argument aliasing forAPI.lookup_statuses
(0a404c3)
- Remove and replace
StreamListener
by merging it intoStream
(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
, andStream.snooze_time
- Remove
- Rename
Stream.retry_count
toStream.max_retries
(3585f13) - Replace
Stream.auth
with parameters and attributes for each credential (c9f59e6)- Replace
Stream.auth
withStream.consumer_key
,Stream.consumer_secret
,Stream.access_token
, andStream.access_token_secret
- Replace
- Replace
Stream
parameter,proxies
, withproxy
(#1272) - Remove
Stream.filter
parameter:encoding
(b3f2db2) - Rename
Stream.filter
andStream.sample
parameters:is_async
->threaded
(6c96c15) - Stop allowing positional arguments for
Stream.filter
(0629d5f) - Stop allowing positional arguments for
Stream.sample
(b170720)
- Remove
API.configuration
(#1614) - Remove
API.geo_similar_places
(c6cfd97) - Remove
API.related_results
(068273b)- Remove
Relation
model (cc4479a)
- Remove
- Remove
id
endpoint parameter forAPI.create_block
(e4eaa4b) - Remove
id
endpoint parameter forAPI.create_friendship
(6a3c1ab) - Remove
id
endpoint parameter forAPI.create_mute
(bb25d69) - Remove
id
endpoint parameter forAPI.destroy_block
(1a9b52d) - Remove
id
endpoint parameter forAPI.destroy_friendship
(66f1612) - Remove
id
endpoint parameter forAPI.destroy_mute
(8c444c5) - Remove
id
endpoint parameter forAPI.get_follower_ids
(5cddd12) - Remove
id
endpoint parameter forAPI.get_followers
(a3fb959) - Remove
id
endpoint parameter forAPI.get_friend_ids
(7cbf818) - Remove
id
endpoint parameter forAPI.get_friends
(6875e15) - Remove
id
endpoint parameter forAPI.get_user
(a2681ed) - Remove
accuracy
andcontained_within
endpoint parameters forAPI.search_geo
(d37a409) - Remove
allow_contributor_request
endpoint parameter forAPI.set_settings
(1cc33b2) - Update
API.update_profile_banner
endpoint parameters:offset_right
->offset_top
(83f9b79) - Remove
enable_dmcommands
andfail_dmcommands
parameters forAPI.update_status
(fe5b3ef) - Remove
in_reply_to_status_id_str
andauto_populate_reply_metadata
endpoint parameters forAPI.update_status_with_media
(c3c9d29) - Remove
id
endpoint parameter forAPI.user_timeline
(#1484) - Remove
Stream.firehose
(ad50cdc) - Remove
Stream.retweet
(6b1944b) - Remove
Stream.sitestream
andStream.userstream
(96f7e63)
- Datetime objects for
models.List.created_at
,models.SavedSearch.created_at
,models.Status.created_at
, andmodels.User.created_at
are now aware (59d4d92) - Change
return_cursors
parameter forJSONParser.parse
andModelParser.parse
to be keyword-only argument (56b8e31) - Remove
method
parameter fromparse
method forParser
and its subclasses (dda2ec6) - Remove handling of 401 HTTP status code in
API.verify_credentials
(7e4d2a4) - Remove
models.List.is_member
andmodels.List.is_subscribed
(b765aee)
- Add
API.get_list_ownerships
(#1282, #1498)- Add
models.User.list_ownerships
(#1282)
- Add
- 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)
- Allow sending Quick Reply Options with Direct Messages (#1280)
- Replace
API.send_direct_message
parameter,quick_reply_type
, withquick_reply_options
- Replace
- Allow sending Call-To-Action buttons with Direct Messages in
API.send_direct_message
(#1311)
- 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)
- 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
- 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
andStream.sample
(2e957b6) - Use specific user agent for
Stream
(5994c4b)
- Update and improve various documentation and tests
- Various other optimizations and improvements
- 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 inmodels.Status.parse
more broadly foruser
attribute to handle parsers withoutmodel_factory
attribute or model factories withoutuser
attribute (#538) - Default to
models.Status
model inmodels.SearchResults.parse
more broadly for results to handle parsers withoutmodel_factory
attribute or model factories withoutstatus
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)
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.
- Add
API.search_30_day
andAPI.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
- Add
- Update allowed parameters for
API.get_oembed
- Add
hide_thread
,theme
,link_color
,widget_type
,dnt
- Remove
id
- Add
- 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
- 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 forAPI.media_upload
(#1412, #1413) - Allow
file
parameter to be used again forAPI.update_profile_banner
,API.update_profile_image
, andAPI.update_with_media
(#1475) - Fix
User.lists
,User.lists_memberships
, andUser.lists_subscriptions
to retrieve information about the user in question rather than the authenticating user (#1443, #1444)
- 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
- 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 forAPI.lists_all
- Add
count
as allowed parameter forAPI.lists_memberships
- Add
count
as allowed parameter forAPI.lists_subscriptions
- Add
include_entities
as allowed parameter forAPI.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 toDirectMessage
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
- 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 withAPI.list_direct_messages
by adding DMCursorIterator (#1261, #1262)
- Allow streams to use daemon threads (#1126)
- Remove
API.set_delivery_device
(#1203) - Remove simplejson import and usage (#832)
- Allow
cursor
parameter forAPI.blocks_ids
andAPI.mutes_ids
(#1208) - Drop support for Python 3.4
- Allow
perform_block
parameter forAPI.report_spam
(#1090) - Add
API.mutes
(#1197, #1215) - Allow
count
parameter forAPI.friends
(#577) - Remove
since
,from
,to
, andsource
as allowed parameters forAPI.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 toCategory
,Friendship
, andList
models (#590, #1169) - Remove
API.suggested_categories
,API.suggested_users
, andAPI.suggested_users_tweets
- Update and improve tests and cassettes (#1242)
- Update
DirectMessage
model (#1081, #1228) - Replace
API.direct_messages
andAPI.sent_direct_messages
withAPI.list_direct_messages
(#1081, #1228) - Update
API.get_direct_message
,API.send_direct_message
, andAPI.destroy_direct_message
(#1081, #1228) - Update and improve various documentation
- Exclude examples during installation (#1141, #1164)
- Properly initialize
OAuthHandler.request_token
(#1149) - Properly handle
map_
parameter forAPI.statuses_lookup
(#598) - Support cursor pagination for
API.blocks_ids
andAPI.mutes_ids
(#930, #931) - Return values for
API.update_profile_background_image
andAPI.update_profile_banner
(#904) - Replace usage of root logger
- Close Requests sessions (#810, #1093, #1237)
- Allow
trim_user
andexclude_replies
as parameters forAPI.user_timeline
(#909) - Allow
tweet_mode
parameter forAPI.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
, andAPI.mutes_ids
(#1055) - Allow
tweet_mode
parameter forAPI.lookup_users
(#1130)
- Fix
AttributeError
during streaming (#1026, #1027) - Update how requirements are specified (#1029, #1030)
- Fix compatibility issue with Python 3.7 (#1017, #1042)
- Parse
Status.quoted_status
as aStatus
object (#633) - Allow
in_reply_to_status_id_str
as a parameter forAPI.update_status
andAPI.update_with_media
(#693) - Add
stall_warnings
parameter toStream.sample
(#701) - Add
API.unretweet
(#735, #736) - Allow
auto_populate_reply_metadata
as a parameter forAPI.update_status
andAPI.update_with_media
(#761) - Allow
profile_link_color
as a parameter forAPI.update_profile
- Add support for Python 3.6 (#831, #884)
- Update file size limit for
API.media_upload
(#717) - Fix
JSONParser.parse
returningNone
in certain cases (#765, #766) - Include URL parameters when accessing cache (#777)
- Properly re-raise exceptions during streaming
- Fix
AttributeError
andTypeError
during streaming (#698) - Properly encode
filter_level
forStream.filter
(#782)
- 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 )
- 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 )
- 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)
- 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)
- 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)
- 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().
- Allow specifying your own ssl certificates for streaming client.
- Distribute Python Wheels instead of dumb binaries.
- Fix cursor invocation, passing args to underlying method. (#515)
- Upgrade to Request 2.4.3
- 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.
https://github.com/tweepy/tweepy/compare/2.2...v2.3.0
- 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.
- Removed deprecated test() endpoint.
- New stream listeners callback on_disconnect(). Called whenever "disconnect" messages arrive from Twitter before connection is killed.
- 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)
- 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
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.
https://github.com/tweepy/tweepy/compare/1.12...1.13
https://github.com/tweepy/tweepy/compare/1.11...1.12
https://github.com/tweepy/tweepy/compare/1.10...1.11
https://github.com/tweepy/tweepy/compare/1.9...1.10
https://github.com/tweepy/tweepy/compare/1.8...1.9
https://github.com/tweepy/tweepy/compare/1.7.1...1.8
https://github.com/tweepy/tweepy/compare/1.7...1.7.1
https://github.com/tweepy/tweepy/compare/1.6...1.7
https://github.com/tweepy/tweepy/compare/1.5...1.6
- 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.
- 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
- 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
-
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.
- 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
- 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
https://github.com/tweepy/tweepy/commits/e62f8c18977fd755c9d24a0abebd3b8087c75b45