Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-spotipy for openSUSE:Factory checked in at 2025-11-27 15:21:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-spotipy (Old) and /work/SRC/openSUSE:Factory/.python-spotipy.new.14147 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-spotipy" Thu Nov 27 15:21:45 2025 rev:16 rq:1320285 version:2.25.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-spotipy/python-spotipy.changes 2025-02-28 17:40:51.516432649 +0100 +++ /work/SRC/openSUSE:Factory/.python-spotipy.new.14147/python-spotipy.changes 2025-11-27 15:23:30.917924342 +0100 @@ -1,0 +2,16 @@ +Thu Nov 27 07:15:05 UTC 2025 - Daniel Garcia <[email protected]> + +- Update to 2.25.2 (bsc#1254285): + * Security + + CVE-2025-66040 – HTML for OAuth flow now sanitized: prevents + potential XSS attacks (by @yueyueL) Upgrade if you run spotipy + with the default OAuth flow (uses a local HTTP server as a + callback method) (bsc#1254285) + * Added + + Adds additional_types parameter to retrieve currently playing episode + + Add deprecation warnings to documentation + * Fixed + + Fixed dead link in README.md + + Corrected Spotify/Spotipy typo in documentation + +------------------------------------------------------------------- @@ -4 +20 @@ -- Update to 2.25.1: +- Update to 2.25.1 (bsc#1238059): Old: ---- 2.25.1.tar.gz New: ---- 2.25.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-spotipy.spec ++++++ --- /var/tmp/diff_new_pack.X1VDrk/_old 2025-11-27 15:23:31.537950490 +0100 +++ /var/tmp/diff_new_pack.X1VDrk/_new 2025-11-27 15:23:31.541950659 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-spotipy # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-spotipy -Version: 2.25.1 +Version: 2.25.2 Release: 0 Summary: Client for the Spotify Web API License: MIT ++++++ 2.25.1.tar.gz -> 2.25.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/.github/workflows/integration_tests.yml new/spotipy-2.25.2/.github/workflows/integration_tests.yml --- old/spotipy-2.25.1/.github/workflows/integration_tests.yml 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/.github/workflows/integration_tests.yml 2025-11-26 21:16:13.000000000 +0100 @@ -4,7 +4,7 @@ jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 env: SPOTIPY_CLIENT_ID: ${{ secrets.SPOTIPY_CLIENT_ID }} SPOTIPY_CLIENT_SECRET: ${{ secrets.SPOTIPY_CLIENT_SECRET }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/.github/workflows/lint.yml new/spotipy-2.25.2/.github/workflows/lint.yml --- old/spotipy-2.25.1/.github/workflows/lint.yml 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/.github/workflows/lint.yml 2025-11-26 21:16:13.000000000 +0100 @@ -4,8 +4,7 @@ jobs: build: - - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Set up Python diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/.github/workflows/publish.yml new/spotipy-2.25.2/.github/workflows/publish.yml --- old/spotipy-2.25.1/.github/workflows/publish.yml 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/.github/workflows/publish.yml 2025-11-26 21:16:13.000000000 +0100 @@ -10,8 +10,7 @@ jobs: build-n-publish: name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI - runs-on: ubuntu-latest - + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Set up Python diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/.github/workflows/pull_request.yml new/spotipy-2.25.2/.github/workflows/pull_request.yml --- old/spotipy-2.25.1/.github/workflows/pull_request.yml 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/.github/workflows/pull_request.yml 2025-11-26 21:16:13.000000000 +0100 @@ -6,7 +6,7 @@ jobs: # Enforces the update of a changelog file on every pull request changelog: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: dangoslen/[email protected] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/.github/workflows/unit_tests.yml new/spotipy-2.25.2/.github/workflows/unit_tests.yml --- old/spotipy-2.25.1/.github/workflows/unit_tests.yml 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/.github/workflows/unit_tests.yml 2025-11-26 21:16:13.000000000 +0100 @@ -4,7 +4,7 @@ jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/CHANGELOG.md new/spotipy-2.25.2/CHANGELOG.md --- old/spotipy-2.25.1/CHANGELOG.md 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/CHANGELOG.md 2025-11-26 21:16:13.000000000 +0100 @@ -15,6 +15,19 @@ ### Removed +## [2.25.2] - 2025-11-26 + +### Added + +- Adds `additional_types` parameter to retrieve currently playing episode +- Add deprecation warnings to documentation + +### Fixed + +- Fixed dead link in README.md +- Corrected Spotify/Spotipy typo in documentation +- Sanitize HTML error message output for OAuth flow: https://github.com/spotipy-dev/spotipy/security/advisories/GHSA-r77h-rpp9-w2xm + ## [2.25.1] - 2025-02-27 ### Added @@ -26,6 +39,8 @@ - Fixed scripts in examples directory that didn't run correctly - Updated documentation for `Client.current_user_top_artists` to indicate maximum number of artists limit - Set auth cache file permissions to `600`: https://github.com/spotipy-dev/spotipy/security/advisories/GHSA-pwhh-q4h6-w599 +- Fixed `__del__` methods by preventing garbage collection for `requests.Session` +- Improved retry warning by using `logger` instead of `logging` and making sure that `retry_header` is an int ### Changed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/README.md new/spotipy-2.25.2/README.md --- old/spotipy-2.25.1/README.md 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/README.md 2025-11-26 21:16:13.000000000 +0100 @@ -36,7 +36,7 @@ ## Quick Start -A full set of examples can be found in the [online documentation](http://spotipy.readthedocs.org/) and in the [Spotipy examples directory](https://github.com/plamere/spotipy/tree/master/examples). +A full set of examples can be found in the [online documentation](http://spotipy.readthedocs.org/) and in the [Spotipy examples directory](https://github.com/spotipy-dev/spotipy-examples). To get started, [install spotipy](#installation), create a new account or log in on https://developers.spotify.com/. Go to the [dashboard](https://developer.spotify.com/dashboard), create an app and add your new ID and SECRET (ID and SECRET can be found on an app setting) to your environment: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/docs/index.rst new/spotipy-2.25.2/docs/index.rst --- old/spotipy-2.25.1/docs/index.rst 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/docs/index.rst 2025-11-26 21:16:13.000000000 +0100 @@ -23,7 +23,7 @@ pip install spotipy --upgrade -You can also obtain the source code from the `Spotify GitHub repository <https://github.com/plamere/spotipy>`_. +You can also obtain the source code from the `Spotipy GitHub repository <https://github.com/plamere/spotipy>`_. Getting Started diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/setup.py new/spotipy-2.25.2/setup.py --- old/spotipy-2.25.1/setup.py 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/setup.py 2025-11-26 21:16:13.000000000 +0100 @@ -21,7 +21,7 @@ setup( name='spotipy', - version='2.25.1', + version='2.25.2', description='A light weight Python library for the Spotify Web API', long_description=long_description, long_description_content_type="text/markdown", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/spotipy/client.py new/spotipy-2.25.2/spotipy/client.py --- old/spotipy-2.25.1/spotipy/client.py 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/spotipy/client.py 2025-11-26 21:16:13.000000000 +0100 @@ -11,7 +11,7 @@ import requests from spotipy.exceptions import SpotifyException -from spotipy.util import Retry +from spotipy.util import REQUESTS_SESSION, Retry logger = logging.getLogger(__name__) @@ -211,11 +211,8 @@ def __del__(self): """Make sure the connection (pool) gets closed""" - try: - if isinstance(self._session, requests.Session): - self._session.close() - except AttributeError: - pass + if getattr(self, "_session", None) and isinstance(self._session, REQUESTS_SESSION): + self._session.close() def _build_session(self): self._session = requests.Session() @@ -407,6 +404,10 @@ ): """ Get Spotify catalog information about an artist's albums + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `artist_albums(..., include_groups='...')` instead. + Parameters: - artist_id - the artist ID, URI or URL - include_groups - the types of items to return. One or more of 'album', 'single', @@ -452,6 +453,9 @@ identified artist. Similarity is based on analysis of the Spotify community's listening history. + .. deprecated:: + This endpoint has been removed by Spotify and is no longer available. + Parameters: - artist_id - the artist ID, URI or URL """ @@ -683,6 +687,10 @@ ): """ Get full details of the tracks of a playlist. + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_items(playlist_id, ..., additional_types=('track',))` instead. + Parameters: - playlist_id - the playlist ID, URI or URL - fields - which fields to return @@ -755,18 +763,22 @@ ) def user_playlist(self, user, playlist_id=None, fields=None, market=None): - warnings.warn( - "You should use `playlist(playlist_id)` instead", - DeprecationWarning, - ) - """ Gets a single playlist of a user + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist(playlist_id)` instead. + Parameters: - user - the id of the user - playlist_id - the id of the playlist - fields - which fields to return """ + warnings.warn( + "You should use `playlist(playlist_id)` instead", + DeprecationWarning, + ) + if playlist_id is None: return self._get(f"users/{user}/starred") return self.playlist(playlist_id, fields=fields, market=market) @@ -780,13 +792,12 @@ offset=0, market=None, ): - warnings.warn( - "You should use `playlist_tracks(playlist_id)` instead", - DeprecationWarning, - ) - """ Get full details of the tracks of a playlist owned by a user. + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_tracks(playlist_id)` instead. + Parameters: - user - the id of the user - playlist_id - the id of the playlist @@ -795,6 +806,10 @@ - offset - the index of the first track to return - market - an ISO 3166-1 alpha-2 country code. """ + warnings.warn( + "You should use `playlist_tracks(playlist_id)` instead", + DeprecationWarning, + ) return self.playlist_tracks( playlist_id, limit=limit, @@ -847,6 +862,10 @@ Changes a playlist's name and/or public/private state + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_change_details(playlist_id, ...)` instead. + Parameters: - user - the id of the user - playlist_id - the id of the playlist @@ -868,6 +887,10 @@ Unfollows (deletes) a playlist for a user + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `current_user_unfollow_playlist(playlist_id)` instead. + Parameters: - user - the id of the user - name - the name of the playlist @@ -885,6 +908,10 @@ Adds tracks to a playlist + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_add_items(playlist_id, tracks)` instead. + Parameters: - user - the id of the user - playlist_id - the id of the playlist @@ -906,6 +933,10 @@ Adds episodes to a playlist + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_add_items(playlist_id, episodes)` instead. + Parameters: - user - the id of the user - playlist_id - the id of the playlist @@ -925,6 +956,10 @@ Replace all tracks in a playlist for a user + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_replace_items(playlist_id, tracks)` instead. + Parameters: - user - the id of the user - playlist_id - the id of the playlist @@ -949,6 +984,10 @@ Reorder tracks in a playlist from a user + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_reorder_items(playlist_id, ...)` instead. + Parameters: - user - the id of the user - playlist_id - the id of the playlist @@ -974,6 +1013,10 @@ Removes all occurrences of the given tracks from the given playlist + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_remove_all_occurrences_of_items(playlist_id, tracks)` instead. + Parameters: - user - the id of the user - playlist_id - the id of the playlist @@ -994,7 +1037,10 @@ ): """ This function is no longer in use, please use the recommended function in the warning! - Removes all occurrences of the given tracks from the given playlist + Removes specific occurrences of the given tracks from the given playlist + + .. deprecated:: + This endpoint has been removed by Spotify and is no longer available. Parameters: - user - the id of the user @@ -1007,8 +1053,8 @@ - snapshot_id - optional id of the playlist snapshot """ warnings.warn( - "You should use `playlist_remove_specific_occurrences_of_items" - "(playlist_id, tracks)` instead", + "You're using `user_playlist_remove_specific_occurrences_of_tracks(...)`, " + "which is marked as deprecated by Spotify.", DeprecationWarning, ) plid = self._get_id("playlist", playlist_id) @@ -1032,6 +1078,10 @@ Add the current authenticated user as a follower of a playlist. + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `current_user_follow_playlist(playlist_id)` instead. + Parameters: - playlist_owner_id - the user id of the playlist owner - playlist_id - the id of the playlist @@ -1049,6 +1099,10 @@ Check to see if the given users are following the given playlist + .. deprecated:: + This method is deprecated and may be removed in a future version. Use + `playlist_is_following(playlist_id, user_ids)` instead. + Parameters: - playlist_owner_id - the user id of the playlist owner - playlist_id - the id of the playlist @@ -1259,10 +1313,20 @@ """ return self.me() - def current_user_playing_track(self): + def current_user_playing_track(self, market=None, additional_types=("track",)): """ Get information about the current users currently playing track. + + Parameters: + - market - An ISO 3166-1 alpha-2 country code or the + string from_token. + - additional_types - list of item types to return. + valid types are: track and episode """ - return self._get("me/player/currently-playing") + return self._get( + "me/player/currently-playing", + market=market, + additional_types=",".join(additional_types) + ) def current_user_saved_albums(self, limit=20, offset=0, market=None): """ Gets a list of the albums saved in the current authorized user's @@ -1568,6 +1632,9 @@ ): """ Get a list of Spotify featured playlists + .. deprecated:: + This endpoint has been removed by Spotify and is no longer available. + Parameters: - locale - The desired language, consisting of a lowercase ISO 639-1 alpha-2 language code and an uppercase ISO 3166-1 alpha-2 @@ -1664,6 +1731,9 @@ ): """ Get a list of playlists for a specific Spotify category + .. deprecated:: + This endpoint has been removed by Spotify and is no longer available. + Parameters: - category_id - The Spotify category ID for the category. @@ -1701,6 +1771,9 @@ (at least one of `seed_artists`, `seed_tracks` and `seed_genres` are needed) + .. deprecated:: + This endpoint has been removed by Spotify and is no longer available. + Parameters: - seed_artists - a list of artist IDs, URIs or URLs - seed_tracks - a list of track IDs, URIs or URLs @@ -1761,17 +1834,24 @@ return self._get("recommendations", **params) def recommendation_genre_seeds(self): + """ Get a list of genres available for the recommendations function. + + .. deprecated:: + This endpoint has been removed by Spotify and is no longer available. + """ warnings.warn( "You're using `recommendation_genre_seeds(...)`, " "which is marked as deprecated by Spotify.", DeprecationWarning, ) - """ Get a list of genres available for the recommendations function. - """ return self._get("recommendations/available-genre-seeds") def audio_analysis(self, track_id): """ Get audio analysis for a track based upon its Spotify ID + + .. deprecated:: + This endpoint has been removed by Spotify and is no longer available. + Parameters: - track_id - a track URI, URL or ID """ @@ -1785,6 +1865,10 @@ def audio_features(self, tracks=[]): """ Get audio features for one or multiple tracks based upon their Spotify IDs + + .. deprecated:: + This endpoint has been removed by Spotify and is no longer available. + Parameters: - tracks - a list of track URIs, URLs or IDs, maximum: 100 ids """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/spotipy/oauth2.py new/spotipy-2.25.2/spotipy/oauth2.py --- old/spotipy-2.25.1/spotipy/oauth2.py 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/spotipy/oauth2.py 2025-11-26 21:16:13.000000000 +0100 @@ -8,6 +8,7 @@ ] import base64 +import html import logging import os import time @@ -21,7 +22,8 @@ from spotipy.cache_handler import CacheFileHandler, CacheHandler from spotipy.exceptions import SpotifyOauthError, SpotifyStateError -from spotipy.util import CLIENT_CREDS_ENV_VARS, get_host_port, normalize_scope +from spotipy.util import (CLIENT_CREDS_ENV_VARS, REQUESTS_SESSION, + get_host_port, normalize_scope) logger = logging.getLogger(__name__) @@ -122,7 +124,7 @@ def __del__(self): """Make sure the connection (pool) gets closed""" - if isinstance(self._session, requests.Session): + if getattr(self, "_session", None) and isinstance(self._session, REQUESTS_SESSION): self._session.close() @@ -185,7 +187,7 @@ Else fetches a new token and returns it Parameters: - - as_dict - a boolean indicating if returning the access token + - as_dict: (deprecated) a boolean indicating if returning the access token as a token_info dictionary, otherwise it will be returned as a string. """ @@ -483,8 +485,8 @@ """ Gets the access token for the app given the code Parameters: - - code - the response code - - as_dict - a boolean indicating if returning the access token + - code: the response code + - as_dict: (deprecated) a boolean indicating if returning the access token as a token_info dictionary, otherwise it will be returned as a string. """ @@ -577,6 +579,11 @@ return token_info def get_cached_token(self): + """ Gets the cached token for the app + + .. deprecated:: + This method is deprecated and may be removed in a future version. + """ warnings.warn("Calling get_cached_token directly on the SpotifyOAuth object will be " + "deprecated. Instead, please specify a CacheFileHandler instance as " + "the cache_handler in SpotifyOAuth and use the CacheFileHandler's " + @@ -1203,6 +1210,11 @@ return token_info def get_cached_token(self): + """ Gets the cached token for the app + + .. deprecated:: + This method is deprecated and may be removed in a future version. + """ warnings.warn("Calling get_cached_token directly on the SpotifyImplicitGrant " + "object will be deprecated. Instead, please specify a " + "CacheFileHandler instance as the cache_handler in SpotifyOAuth " + @@ -1241,7 +1253,7 @@ if self.server.auth_code: status = "successful" elif self.server.error: - status = f"failed ({self.server.error})" + status = f"failed ({html.escape(str(self.server.error))})" else: self._write("<html><body><h1>Invalid request</h1></body></html>") return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spotipy-2.25.1/spotipy/util.py new/spotipy-2.25.2/spotipy/util.py --- old/spotipy-2.25.1/spotipy/util.py 2025-02-27 08:30:09.000000000 +0100 +++ new/spotipy-2.25.2/spotipy/util.py 2025-11-26 21:16:13.000000000 +0100 @@ -9,11 +9,12 @@ import warnings from types import TracebackType +import requests import urllib3 import spotipy -LOGGER = logging.getLogger(__name__) +logger = logging.getLogger(__name__) CLIENT_CREDS_ENV_VARS = { "client_id": "SPOTIPY_CLIENT_ID", @@ -22,6 +23,9 @@ "redirect_uri": "SPOTIPY_REDIRECT_URI", } +# workaround for garbage collection +REQUESTS_SESSION = requests.Session + def prompt_for_user_token( username=None, @@ -33,15 +37,11 @@ oauth_manager=None, show_dialog=False ): - warnings.warn( - "'prompt_for_user_token' is deprecated." - "Use the following instead: " - " auth_manager=SpotifyOAuth(scope=scope)" - " spotipy.Spotify(auth_manager=auth_manager)", - DeprecationWarning - ) - """Prompt the user to login if necessary and returns a user token - suitable for use with the spotipy.Spotify constructor. + """ Prompt the user to login if necessary and returns a user token + suitable for use with the spotipy.Spotify constructor. + + .. deprecated:: + This method is deprecated and may be removed in a future version. Parameters: - username - the Spotify username. (optional) @@ -53,6 +53,14 @@ - oauth_manager - OAuth manager object. (optional) - show_dialog - If True, a login prompt always shows or defaults to False. (optional) """ + warnings.warn( + "'prompt_for_user_token' is deprecated." + "Use the following instead: " + " auth_manager=SpotifyOAuth(scope=scope)" + " spotipy.Spotify(auth_manager=auth_manager)", + DeprecationWarning + ) + if not oauth_manager: if not client_id: client_id = os.getenv("SPOTIPY_CLIENT_ID") @@ -64,7 +72,7 @@ redirect_uri = os.getenv("SPOTIPY_REDIRECT_URI") if not client_id: - LOGGER.warning( + logger.warning( """ You need to set your Spotify API credentials. You can do this by setting environment variables like so: @@ -166,8 +174,9 @@ if response: retry_header = response.headers.get("Retry-After") if self.is_retry(method, response.status, bool(retry_header)): - logging.warning("Your application has reached a rate/request limit. " - f"Retry will occur after: {retry_header}") + retry_header = retry_header or 0 + logger.warning("Your application has reached a rate/request limit. " + f"Retry will occur after: {retry_header} s") return super().increment(method, url, response=response,
