These changelogs are also at https://github.com/tweepy/tweepy/releases as release notes.
- 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.
- 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.