├── .github └── workflows │ ├── contribute.yml │ └── publish.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .pylint.cfg ├── CHANGELOG.md ├── LICENSE ├── Makefile ├── README.md ├── VERSION ├── design └── hit.puml ├── poetry.lock ├── pyproject.toml ├── sonar-project.properties ├── tests ├── __init__.py ├── acceptance │ ├── __init__.py │ ├── acceptance_test.py │ ├── features │ │ └── fastapi_limiter.feature │ └── steps │ │ ├── __init__.py │ │ └── fastapi.py ├── conftest.py ├── unit │ ├── __init__.py │ ├── decorator_test.py │ ├── fastapi_utils_test.py │ ├── fixed_window_test.py │ └── moving_window_test.py └── utils_for_test.py └── throttled ├── __init__.py ├── exceptions.py ├── fastapi ├── __init__.py ├── base.py ├── limiters.py └── utils.py ├── limiter.py ├── models.py ├── py.typed ├── storage ├── __init__.py ├── _abstract.py ├── _duration.py ├── memory.py └── redis.py └── strategies.py /.github/workflows/contribute.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/.github/workflows/contribute.yml -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/.github/workflows/publish.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/.gitignore -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /.pylint.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/.pylint.cfg -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/README.md -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 0.2.1 2 | -------------------------------------------------------------------------------- /design/hit.puml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/design/hit.puml -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/poetry.lock -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/pyproject.toml -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/sonar-project.properties -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/acceptance/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/acceptance/acceptance_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/acceptance/acceptance_test.py -------------------------------------------------------------------------------- /tests/acceptance/features/fastapi_limiter.feature: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/acceptance/features/fastapi_limiter.feature -------------------------------------------------------------------------------- /tests/acceptance/steps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/acceptance/steps/fastapi.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/acceptance/steps/fastapi.py -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/conftest.py -------------------------------------------------------------------------------- /tests/unit/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/decorator_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/unit/decorator_test.py -------------------------------------------------------------------------------- /tests/unit/fastapi_utils_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/unit/fastapi_utils_test.py -------------------------------------------------------------------------------- /tests/unit/fixed_window_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/unit/fixed_window_test.py -------------------------------------------------------------------------------- /tests/unit/moving_window_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/unit/moving_window_test.py -------------------------------------------------------------------------------- /tests/utils_for_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/tests/utils_for_test.py -------------------------------------------------------------------------------- /throttled/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "0.2.1" 2 | -------------------------------------------------------------------------------- /throttled/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/exceptions.py -------------------------------------------------------------------------------- /throttled/fastapi/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/fastapi/__init__.py -------------------------------------------------------------------------------- /throttled/fastapi/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/fastapi/base.py -------------------------------------------------------------------------------- /throttled/fastapi/limiters.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/fastapi/limiters.py -------------------------------------------------------------------------------- /throttled/fastapi/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/fastapi/utils.py -------------------------------------------------------------------------------- /throttled/limiter.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/limiter.py -------------------------------------------------------------------------------- /throttled/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/models.py -------------------------------------------------------------------------------- /throttled/py.typed: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /throttled/storage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/storage/__init__.py -------------------------------------------------------------------------------- /throttled/storage/_abstract.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/storage/_abstract.py -------------------------------------------------------------------------------- /throttled/storage/_duration.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/storage/_duration.py -------------------------------------------------------------------------------- /throttled/storage/memory.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/storage/memory.py -------------------------------------------------------------------------------- /throttled/storage/redis.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/storage/redis.py -------------------------------------------------------------------------------- /throttled/strategies.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santunioni/ThrottledAPI/HEAD/throttled/strategies.py --------------------------------------------------------------------------------