- Add `user_auth` parameters to `Client` methods ([8f38429](https://github.com/tweepy/tweepy/commit/8f384294405c6d14507441a5d1a7040d927b3fc2), [e88b074](https://github.com/tweepy/tweepy/commit/e88b07465fbcf6013be89cf938eae718391cc1df), [0d6b68a](https://github.com/tweepy/tweepy/commit/0d6b68aeb3ed36e8d0e3d400b99351ed628ba1e0))
- Rename `OAuthHandler` to `OAuth1UserHandler` ([fb6eb7d](https://github.com/tweepy/tweepy/commit/fb6eb7d53d78bcaca997586f95270a43753a9ae6))
- `OAuthHandler` is kept as a deprecated alias ([cba7317](https://github.com/tweepy/tweepy/commit/cba7317a4aa298a65eda7825589eb40a01a370f6))
- Rename `AppAuthHandler` to `Oauth2AppHandler` ([529d793](https://github.com/tweepy/tweepy/commit/529d7936201f05f4167225be3bbcaf38eafadb8c))
- `AppAuthHandler` is kept as a deprecated alias ([d4ceb1a](https://github.com/tweepy/tweepy/commit/d4ceb1aedba5380d95c8efee7d21f5e478715fe6))
- Rename `OAuth2Bearer` to `OAuth2BearerHandler` ([0781fde](https://github.com/tweepy/tweepy/commit/0781fde83c31cef45e0d7d8b2155a2624fb93b77))
- Allow passing access token and secret directly to `OAuth1UserHandler.__init__` ([99f3583](https://github.com/tweepy/tweepy/commit/99f3583d99ac9a0003273318e7628235bba707f0))
- Allow `OAuth2BearerHandler` to be used as `auth` parameter for `API` ([5a2a3fc](https://github.com/tweepy/tweepy/commit/5a2a3fc6020b6fe91141a753a2e293976addf48e))
- Add table to documentation mapping `Client` methods to Twitter API v2 endpoints ([0572b03](https://github.com/tweepy/tweepy/commit/0572b03b7fe1a2384951ebc2c0002f9d8bd6b68a))
- Add and improve examples
- Revamp examples page in documentation
- Update and improve various documentation and tests
- update to version 4.2.0:
- New Features / Improvements:
- Add support for managing lists with Twitter API v2 ([b1342bf](https://github.com/tweepy/tweepy/commit/b1342bfc998bee334437f2b7a8d2aef4df7c3838))
- Rename `Client.follow` and `Client.unfollow` to `Client.follow_user` and `Client.unfollow_user`, respectively ([8f8de15](https://github.com/tweepy/tweepy/commit/8f8de15e13f11d042a521d2adae24d0c09fa2098))
- `Client.follow` and `Client.unfollow` are kept as deprecated aliases
- Add FAQ section in documentation
- Update and improve various documentation and tests
- Twitter API Changes:
- Change `state` to optional parameter for `Client.search_spaces` ([e61d5d6](https://github.com/tweepy/tweepy/commit/e61d5d6f017db7f28871331b515fcfd87666f352))
- Bug Fixes:
- Fix parsing of datetime strings for API v2 models with Python 3.6 ([5bf2446](https://github.com/tweepy/tweepy/commit/5bf24464b00257a9fa5f66047a2f7815c1e4f8fb))
- Fix models missing an `API` instance attribute when using `Cursor` with pagination by ID ([451e921](https://github.com/tweepy/tweepy/commit/451e921210677ee0a618849f189bdfeea497a00c))
- update to version 4.1.0:
- New Features / Improvements:
- Add support for Python 3.10 ([229b738](https://github.com/tweepy/tweepy/commit/229b73858c93bd5997385445f522816c374d41ea))
- Update minimum dev requirement version for tox to 3.14.0
- Add support for Spaces ([5c68892](https://github.com/tweepy/tweepy/commit/5c688922cf0f8e89d401ea5108b06aaa8c12d71b))
- Add `Space` model
- Add `Client.search_spaces`, `Client.get_spaces`, and `Client.get_space`
- Add support for batch compliance ([6ca75e1](https://github.com/tweepy/tweepy/commit/6ca75e1b69a1085ac43215b30fc8269b91faa790))
- Add `Client.get_compliance_jobs`, `Client.get_compliance_job`, and `Client.create_compliance_job`
- Fix handling of strings passed as fields parameters for `Client` methods ([d61a5d9](https://github.com/tweepy/tweepy/commit/d61a5d9f52a9d9ee3f40d23515d6ffd1f2a02e14))
- Include unexpected parameters passed to `Client` methods in Twitter API request ([618d1c2](https://github.com/tweepy/tweepy/commit/618d1c25c7743443686f27006f558f4d78972da3))
- This future-proofs for new endpoint parameters
- Stop checking parameter names when converting parameters passed to `Client` methods from datetimes to strings ([1320a37](https://github.com/tweepy/tweepy/commit/1320a3709b1683cb32b69abdaa9e7e120b6ed59c))
- This future-proofs for new endpoint parameters besides `start_time` and `end_time` that accept datetimes
- Handle simplejson being installed when handling `JSONDecodeError` in `HTTPException` ([586c162](https://github.com/tweepy/tweepy/commit/586c1621f71c9569c17b6bdbee99a7c238bb301d))
- Remove nose usage from tests ([b4c06a4](https://github.com/tweepy/tweepy/commit/b4c06a4bb7800026809cfabf69565845dbc00923))
- Remove mock and nose from tests extra and requirements ([0f071fd](https://github.com/tweepy/tweepy/commit/0f071fd2dbbbb5eb7efccc16a8121eb22ebabf12), [b4c06a4](https://github.com/tweepy/tweepy/commit/b4c06a4bb7800026809cfabf69565845dbc00923))
- Update and improve various documentation and tests
- update to version 4.0.0:
- Major New Features / Improvements:
- Support Twitter API v2 ([#1472](https://github.com/tweepy/tweepy/issues/1472), [#1535](https://github.com/tweepy/tweepy/pull/1535))
- Replace API v1.1 models in package namespace
- Rework media uploading ([#640](https://github.com/tweepy/tweepy/issues/640), [#1486](https://github.com/tweepy/tweepy/pull/1486), [#1501](https://github.com/tweepy/tweepy/issues/1501))
- Support asynchronous streaming ([#732](https://github.com/tweepy/tweepy/issues/732), [#1491](https://github.com/tweepy/tweepy/pull/1491))
- Rework `API`
- Replace `bind_api` and `APIMethod` with `API.request`
- Stop using property decorators for `API` methods
- Use `pagination` decorator
- Add `requests.Session` instance as `API.session` attribute ([2f28757](https://github.com/tweepy/tweepy/commit/2f28757fc3f060d14ce4e42a8ca441cd172fd8e5))
- Initialize a single `requests.Session` instance per `API` instance, rather than for each request
- Log warning when API.request is passed an unexpected keyword argument that isn't an endpoint parameter ([c82d7ac](https://github.com/tweepy/tweepy/commit/c82d7ac1789ee9f3f1bdc2b0743376f518cdb0de))
- Rename allowed parameters (`allowed_param`) to endpoint parameters (`endpoint_parameters`) ([b4fc6a0](https://github.com/tweepy/tweepy/commit/b4fc6a09a1f8942f000d97a182368ba1e9b8f7f5))
- Rename methods and method parameters (see Breaking Changes section)
- Require parameters for methods (see Breaking Changes section)
- Stop allowing arbitrary positional arguments for methods (see Breaking Changes section)
- Remove unnecessary attributes and parameters (see Breaking Changes section)
- Improve, optimize, and simplify `API.request` and other `API` methods
- Rework streaming
- `StreamListener` has been merged into `Stream` (see Breaking Changes section)
- `Stream` data/event handling methods (i.e. those starting with `on_`) now log by default and disregard return values
- Allow the stream to disconnect when any line of data is received, including keep-alive signals ([#773](https://github.com/tweepy/tweepy/issues/773), [#897](https://github.com/tweepy/tweepy/issues/897))
- Remove, rename, and replace attributes, methods, and parameters (see Breaking 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
- Add table for `API` documentation ([6db8e4c](https://github.com/tweepy/tweepy/commit/6db8e4c06d20f6ad7bdfade7b44b13ac45dd51c0))
- Separate documentation for exceptions ([8a831b1](https://github.com/tweepy/tweepy/commit/8a831b16f1bd1288781bc924fe82397decd93b3d))
- Move changelog to documentation ([fc98629](https://github.com/tweepy/tweepy/commit/fc9862963702eb02f33106ca13110b369ee86e47))
- Update, improve, and organize documentation
- Rework exceptions
- Replace `TweepError` with `TweepyException` ([5c39cd1](https://github.com/tweepy/tweepy/commit/5c39cd159ef761500f3cb0292a3da40d5e250417)) and `HTTPException` ([#599](https://github.com/tweepy/tweepy/issues/599))
- Replace `RateLimitError` with `TooManyRequests` ([cd5f696](https://github.com/tweepy/tweepy/commit/cd5f696d09530f86ac0edf1ec0fe0a02578a3920))
- Remove `map_` keyword argument aliasing for `API.lookup_statuses` ([0a404c3](https://github.com/tweepy/tweepy/commit/0a404c3fc66399271b1a1d769fc18665d1a7a37a))
- `Stream`:
- Remove and replace `StreamListener` by merging it into `Stream` ([39abff4](https://github.com/tweepy/tweepy/commit/39abff4520e291180425ac2219d1d8597ac5da96))
- Remove Stream parameters and attributes for reconnect wait times ([24059d4](https://github.com/tweepy/tweepy/commit/24059d41c13084003d88a8e62de081c7869db8ca))
- Remove `Stream.retry_time_start`, `Stream.retry_420_start`, `Stream.retry_time_cap`, `Stream.snooze_time_step`, `Stream.snooze_time_cap`, `Stream.retry_time`, and `Stream.snooze_time`
- Rename `Stream.retry_count` to `Stream.max_retries` ([3585f13](https://github.com/tweepy/tweepy/commit/3585f134ecfc5e1c25d37cb6d5bd21fd2d913aa9))
- Replace `Stream.auth` with parameters and attributes for each credential ([c9f59e6](https://github.com/tweepy/tweepy/commit/c9f59e680f17412522206d0999bf9f5ac7788f2f))
- Replace `Stream.auth` with `Stream.consumer_key`, `Stream.consumer_secret`, `Stream.access_token`, and `Stream.access_token_secret`
- Replace `Stream` parameter, `proxies`, with `proxy` ([#1272](https://github.com/tweepy/tweepy/issues/1272))
- Remove `Relation` model ([cc4479a](https://github.com/tweepy/tweepy/commit/cc4479a4d5331cec57880d3bc82f283a8bc8bbc5))
- Remove `id` endpoint parameter for `API.create_block` ([e4eaa4b](https://github.com/tweepy/tweepy/commit/e4eaa4bd8a85f401035f1a0f56debd9eff25c610))
- Remove `id` endpoint parameter for `API.create_friendship` ([6a3c1ab](https://github.com/tweepy/tweepy/commit/6a3c1abae29e04b52ae4e881c337bb735e72a038))
- Remove `id` endpoint parameter for `API.create_mute` ([bb25d69](https://github.com/tweepy/tweepy/commit/bb25d691d2498456a6cd05f7a9f0dc8621a9ece4))
- Remove `id` endpoint parameter for `API.destroy_block` ([1a9b52d](https://github.com/tweepy/tweepy/commit/1a9b52d121d6d00cdb8a8a9863170b748b02574e))
- Remove `id` endpoint parameter for `API.destroy_friendship` ([66f1612](https://github.com/tweepy/tweepy/commit/66f16122addb06fe244f75c44ffd7adb01e57c7f))
- Remove `id` endpoint parameter for `API.destroy_mute` ([8c444c5](https://github.com/tweepy/tweepy/commit/8c444c5b9d135bf39850bbcd757c8471e16d4202))
- Remove `id` endpoint parameter for `API.get_follower_ids` ([5cddd12](https://github.com/tweepy/tweepy/commit/5cddd12d26d22f691039de3cb792da3e9e25e0e8))
- Remove `id` endpoint parameter for `API.get_followers` ([a3fb959](https://github.com/tweepy/tweepy/commit/a3fb9594b4bcc884eb29feb11028509b73328f2a))
- Remove `id` endpoint parameter for `API.get_friend_ids`([7cbf818](https://github.com/tweepy/tweepy/commit/7cbf818e2093a5d866ab72469194df0d1d0d4696))
- Remove `id` endpoint parameter for `API.get_friends` ([6875e15](https://github.com/tweepy/tweepy/commit/6875e1517d4d81b9f5bfb5e7b5d4e076cd3a7bea))
- Remove `id` endpoint parameter for `API.get_user` ([a2681ed](https://github.com/tweepy/tweepy/commit/a2681ed376246677b48156fac66c75d05afdc3ff))
- Remove `accuracy` and `contained_within` endpoint parameters for `API.search_geo` ([d37a409](https://github.com/tweepy/tweepy/commit/d37a409e96553d86621a6caa125c5581cac0b3f7))
- Remove `allow_contributor_request` endpoint parameter for `API.set_settings` ([1cc33b2](https://github.com/tweepy/tweepy/commit/1cc33b209f181d1c729d7931c1b541947423dd4d))
- Remove `enable_dmcommands` and `fail_dmcommands` parameters for `API.update_status` ([fe5b3ef](https://github.com/tweepy/tweepy/commit/fe5b3efd77713d00a7ca516ec20afa54903cba8c))
- Remove `in_reply_to_status_id_str` and `auto_populate_reply_metadata` endpoint parameters for `API.update_status_with_media` ([c3c9d29](https://github.com/tweepy/tweepy/commit/c3c9d29ecfffc75976b6d20b1efcfb084adfafaf))
- Remove `id` endpoint parameter for `API.user_timeline` ([#1484](https://github.com/tweepy/tweepy/pull/1484))
- Datetime objects for `models.List.created_at`, `models.SavedSearch.created_at`, `models.Status.created_at`, and `models.User.created_at` are now aware ([59d4d92](https://github.com/tweepy/tweepy/commit/59d4d920dd4470b52f329d850366721cb52ea0eb))
- Change `return_cursors` parameter for `JSONParser.parse` and `ModelParser.parse` to be keyword-only argument ([56b8e31](https://github.com/tweepy/tweepy/commit/56b8e319a874f6d4cfae7dc9f7c33f32ceea83f4))
- Remove `method` parameter from `parse` method for `Parser` and its subclasses ([dda2ec6](https://github.com/tweepy/tweepy/commit/dda2ec6ccd9b5df44daf7b8574d183ac0c2503fa))
- Remove handling of 401 HTTP status code in `API.verify_credentials` ([7e4d2a4](https://github.com/tweepy/tweepy/commit/7e4d2a4b3bc9b73501d833af349fc8b8986a5197))
- Remove `models.List.is_member` and `models.List.is_subscribed` ([b765aee](https://github.com/tweepy/tweepy/commit/b765aee92ed9a482983c8a7900cbb62a238abb60))
- Update requests_oauthlib dependency requirement to >= 1.0.0 ([bf629e5](https://github.com/tweepy/tweepy/commit/bf629e53abfada2ce58496fe775d81f47a13494e))
- Remove requests socks extra from setup.py `install_requires` ([38b6de6](https://github.com/tweepy/tweepy/commit/38b6de6c464897684cc18638f1b9348f2a7584f2))
- Add socks extra requiring requests socks extra
- Other:
- Check consumer key and secret type when initializing `OAuthHandler` ([#1489](https://github.com/tweepy/tweepy/issues/1489))
- Make `models.User` hashable ([#1306](https://github.com/tweepy/tweepy/pull/1306))
- Reduce extra sleep time for rate limit handling for `API` ([#1049](https://github.com/tweepy/tweepy/issues/1049))
- Handle keyword arguments for `API.update_profile_image` ([ab96f2f](https://github.com/tweepy/tweepy/commit/ab96f2fca9ab6300b2f2be0472bb8458d94dbcac))
- Handle keyword arguments for `API.update_profile_banner` ([88c3fa1](https://github.com/tweepy/tweepy/commit/88c3fa1624af2a9eaaf0b85870ae01115ce0f952))
- Treat all 2xx HTTP status codes as successful responses ([a0f6984](https://github.com/tweepy/tweepy/commit/a0f69848540fceae68de1be2e4dbd3fc6c7794ec))
- Support gevent for streaming ([#651](https://github.com/tweepy/tweepy/issues/651))
- Return thread when using threaded `Stream.filter` and `Stream.sample` ([2e957b6](https://github.com/tweepy/tweepy/commit/2e957b654ed54f7d7c2b92166517f4d15deee240))
- Use specific user agent for `Stream` ([5994c4b](https://github.com/tweepy/tweepy/commit/5994c4b4005f5f909609ff04765b784fcbe9479c))
- Misc:
- Update and improve various documentation and tests
- Remove dependence on string length delimitation in `Stream` ([#892](https://github.com/tweepy/tweepy/issues/892))
- Stop reraising exceptions in `Stream._connect` ([#1072](https://github.com/tweepy/tweepy/issues/1072))
- Change `Stream.sample` method to use GET HTTP method ([1b0e869](https://github.com/tweepy/tweepy/commit/1b0e86968db9702ca258b3df93911952fc934f86))
- Default to `models.User` model in `models.Status.parse` more broadly for `user` attribute to handle parsers without `model_factory` attribute or model factories without `user` attribute ([#538](https://github.com/tweepy/tweepy/issues/538))
- Default to `models.Status` model in `models.SearchResults.parse` more broadly for results to handle parsers without `model_factory` attribute or model factories without `status` attribute ([71c031b](https://github.com/tweepy/tweepy/commit/71c031b64a397c54c8d5f64ead161df63ea1c99c))
- Start on page 1 for `PageIterator` ([#958](https://github.com/tweepy/tweepy/issues/958))
- Handle Twitter API issue with duplicate pages for `API.search_users` ([#958](https://github.com/tweepy/tweepy/issues/958), [#1465](https://github.com/tweepy/tweepy/issues/1465))
- Allow integer IDs for `Stream.filter` ([#829](https://github.com/tweepy/tweepy/issues/829), [#830](https://github.com/tweepy/tweepy/pull/830))
- Handle `ChunkedEncodingError` during streaming ([e8fcc4d](https://github.com/tweepy/tweepy/commit/e8fcc4da695abe15e8da371c1127f548aa8889ad))
- Handle Twitter API errors with successful HTTP status codes ([#1427](https://github.com/tweepy/tweepy/issues/1427))
- Handle initial negative or zero limits in `Cursor` iterators ([c1457b7](https://github.com/tweepy/tweepy/commit/c1457b7785764d736b0b1d60a15deb95581b783f))
- update to version 3.10.0:
- This will be the last major and minor version to support Python 2.7 ([#1253](https://github.com/tweepy/tweepy/issues/1253)) and Python 3.5.
- The next non-patch release should be version 4.0.0.
- New Features / Improvements:
- Add `API.search_30_day` and `API.search_full_archive` ([#1175](https://github.com/tweepy/tweepy/issues/1175), [#1294](https://github.com/tweepy/tweepy/pull/1294))
- Update allowed parameters for `API.home_timeline` ([#1410](https://github.com/tweepy/tweepy/issues/1410), [#1458](https://github.com/tweepy/tweepy/pull/1458))
- Switch from Travis CI to GitHub Actions to run tests and deploy releases ([#1402](https://github.com/tweepy/tweepy/pull/1402))
- Update and improve various documentation
- Bug Fixes:
- Use `mimetypes.guess_type` as fallback for determining image file type ([#1411](https://github.com/tweepy/tweepy/issues/1411))
- Use proper MIME type in Content-Type header for uploaded images
- Allow `file` parameter to be used again for `API.media_upload` ([#1412](https://github.com/tweepy/tweepy/issues/1412), [#1413](https://github.com/tweepy/tweepy/pull/1413))
- Allow `file` parameter to be used again for `API.update_profile_banner`, `API.update_profile_image`, and `API.update_with_media` ([#1475](https://github.com/tweepy/tweepy/pull/1475))
- Fix `User.lists`, `User.lists_memberships`, and `User.lists_subscriptions` to retrieve information about the user in question rather than the authenticating user ([#1443](https://github.com/tweepy/tweepy/issues/1443), [#1444](https://github.com/tweepy/tweepy/pull/1444))
- Improve and optimize `API.statuses_lookup`, `API.create_media_metadata`, `API.update_status`
- Add `reverse` as allowed parameter for `API.lists_all`
- Add `count` as allowed parameter for `API.lists_memberships`
- Add `count` as allowed parameter for `API.lists_subscriptions`
- Add `include_entities` as allowed parameter for `API.list_timeline`
- Add allowed parameters to `API.list_subscribers`
- `count`, `include_entities`, `skip_status`
- Add support for Python 3.8
- Update and improve setup.py
- Use requests socks extra instead of requiring PySocks directly
- Allow uploading of images with file names without extensions ([#1060](https://github.com/tweepy/tweepy/issues/1060), [#1086](https://github.com/tweepy/tweepy/pull/1086))
- Support uploading WebP images ([#1298](https://github.com/tweepy/tweepy/issues/1298))
- Add missing attributes to `Relationship` model ([#1375](https://github.com/tweepy/tweepy/pull/1375))
- Update max allowed size for uploaded GIFs ([#1336](https://github.com/tweepy/tweepy/issues/1336), [#1338](https://github.com/tweepy/tweepy/pull/1338))
- Add `_json` attribute to `DirectMessage` model ([#1342](https://github.com/tweepy/tweepy/pull/1342))
- Update and improve tests ([#1217](https://github.com/tweepy/tweepy/issues/1217))
- Fix handling of invalid credentials for `API.verify_credentials`
- Handle boolean value for `API.verify_credentials` include_email parameter ([#890](https://github.com/tweepy/tweepy/issues/890))
- Allow `Cursor` to be used with `API.list_direct_messages` by adding DMCursorIterator ([#1261](https://github.com/tweepy/tweepy/issues/1261), [#1262](https://github.com/tweepy/tweepy/pull/1262))