This should prevent ratelimit information from being cleared too early.
In order to prevent the dictionary from growing to large expired keys
are deleted once they've been deleted.
At present I'm unsure if this change would cause too much CPU pressure.
This is useful for cases where a rate limit is known to be
extraordinarily high, but you still want to handle the error.
This is common with routes such as emoji creation.
This should increase throughput of the number of requests that can be
made at once, while simultaneously following the new standard practice
of using the rate limit bucket header.
This is an accumulation of a lot of months of work between a few people
and it has been tested extensively. From the testing it seems to work
fine, but I'm not sure if it's the best way to do it.
This changeset does not currently take into consideration sub
rate limits yet, but the foundation is there via Route.metadata. In the
future, this metadata will be filled in with the known sub rate limit
implementation to allow them to have separate keys in the rate limit
mapping.
Co-authored-by: Josh <[email protected]>
* Initial implementation
* Expose various rich methods to fetch the new models
* Add localize parameters and remove useless payment_source parameters from front-facing fetch methods
* Implement fetching and (partially) redeeming gifts
* Slot remaining models
* Correctly document Gift.redeem() channel parameter
* Implement some stuffs, fix more stuffs, add creating/editing skus/store listings
* Various context properties fixes
* Fix various types, expose SubscriptionPlan
* (Partially) implement purchasing SKUs and gift flags
* Finish and clean-up store/applications API implementations
* Implement build uls, missing sub plan params, purchase sku ret
* Fix upload_files() warning
* Formatter pass
* Normalize include_x to with_x, add various small missing things
* Update sub on manual invoice payment instead of returning new object
* Black pass
* Implement missing integrations/applications API shit
* Implement Application.store_listing_sku_id
* Expose richer subscription metadata guild info
* Implement SKU.system_requirements localization and modification
* Black pass
* Implement premium usage
* Implement application whitelist
* Implement active developer program enrollment
* Readd new team members to cache
* Polishing
* Implement leaving active developer program
* Type everything
* Expose everything
* Implement relationship activity statistics, improve model
* Black pass
* Document everything
* Add crunchyroll connection type (#426)
* Fix type-checking error in PrivateChannel ABC (#427)
* Update required property fetching to new domain
* Pin black to v22.6
* Get pyright to shut up
* Black pass
* Get pyright to shut up