[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
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)
Version 4.12.0 (2022-10-27)
New Features / Improvements
Add support for Direct Messages with Twitter API v2 (#1995)
Add
DirectMessageEvent
modelAdd
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 support for Python 3.11 (a391c66)
Bug Fixes
Misc
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)
Version 4.11.0 (2022-10-24)
New Features / Improvements
Bug Fixes
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)
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
, andpoll_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 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 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)
Misc
Version 4.10.0 (2022-05-20)
New Features / Improvements
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
Update the User-Agent header based on
AsyncStream.user_agent
even ifAsyncStream.session
is already initialized/set (096a62c)
Twitter API Deprecations
Misc
Update and improve various documentation and tests
Version 4.9.0 (2022-05-05)
New Features / Improvements
Twitter API Deprecations
Deprecate
Stream.sample
and note deprecation of compliance messages forStream.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 thanHTTPException
when encountering 404 response status codes inBaseClient.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
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)
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
andStream
to inherit from newBaseClient
andBaseStream
classes and addStreamingClient
,StreamResponse
, andStreamRule
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
Use oauthlib to create code challenge and verifier for PKCE (eb22416)
Bug Fixes
Fix datetime endpoint parameter formatting in
Client._make_request
(#1793)
Misc
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
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
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 support for
Media.url
(#1722)Use requests exception to handle
JSONDecodeError
(b492b0a)Update requests dependency requirement to >= 2.27.0 (ed66e8e)
Bug Fixes
Misc
Version 4.4.0 (2021-11-17)
New Features / Improvements
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
Version 4.2.0 (2021-10-29)
New Features / Improvements
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
Twitter API Changes
Change
state
to optional parameter forClient.search_spaces
(e61d5d6)
Bug Fixes
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
modelAdd
Client.search_spaces
,Client.get_spaces
, andClient.get_space
Add support for batch compliance (6ca75e1)
Add
Client.get_compliance_jobs
,Client.get_compliance_job
, andClient.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
andend_time
that accept datetimes
Handle simplejson being installed when handling
JSONDecodeError
inHTTPException
(586c162)
Misc
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
API
Replace
bind_api
andAPIMethod
withAPI.request
Stop using property decorators for
API
methodsUse
pagination
decorator
Add
requests.Session
instance asAPI.session
attribute (2f28757)Initialize a single
requests.Session
instance perAPI
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 otherAPI
methods
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 valuesAllow 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)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
API
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)
Stream
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
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
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)
Twitter API Backwards-Incompatible Changes
Remove
API.configuration
(#1614)Remove
API.geo_similar_places
(c6cfd97)Remove
API.related_results
(068273b)Remove
Relation
model (cc4479a)
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)
Other
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)
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
Documentation For Existing Methods
Dependencies
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
andStream.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 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)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
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 parameterReorder
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 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)
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 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)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
Bug Fixes
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 forAPI.blocks_ids
andAPI.mutes_ids
(#1208)Drop support for Python 3.4
Allow
perform_block
parameter forAPI.report_spam
(#1090)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)
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
Bug Fixes
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
Version 3.7.0 (2018-11-27)
New Features / Improvements
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
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)
Bug Fixes
Version 3.6.0 (2015-03-02)
New Features / Improvements
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)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
Bug Fixes
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)
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)
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
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.
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)
Version 1.12 (2012-11-08)
Version 1.11 (2012-08-14)
Version 1.10 (2012-07-08)
Version 1.9 (2012-03-17)
Version 1.8 (2011-10-31)
Version 1.7.1 (2010-05-25)
Version 1.7 (2010-05-23)
Version 1.6 (2010-03-18)
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