Conversation
Author
|
The Python package workflow is waiting for approval. Could a maintainer approve the run and review the qualified route-name change for #173 when convenient? The PR description includes the regression coverage and the compatibility note about endpoint-based storage keys for class methods and nested functions. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rate-limit registration and lookup currently identify endpoints using their module and
__name__, so methods such asFirst.indexandSecond.indexshare configuration. This can apply limits twice or allow one route's exemption to bypass another route's limit.Use
__qualname__consistently for registration, lookup, exemptions, and middleware matching. Add regression tests for synchronous and asynchronous endpoints, static and dynamic limits, both key styles, exemptions, and default limits.With
key_style="endpoint", class methods and nested functions receive new storage keys, so existing counters are not carried over. Module-level functions and URL-based keys keep their existing keys. This behavior is documented in the examples.Validation on Python 3.11 using the existing lock file: all 18 regression cases fail before the fix and pass afterward; all 121 tests pass after the fix. Black, mypy, and flake8 F401 pass. Documentation builds with MkDocs strict in a separate environment using compatible Markdown/importlib-metadata versions; the lock-file documentation environment fails during import on Python 3.11.
Fixes #173.