diff --git a/.gitignore b/.gitignore index dfe7351..d7b6b6b 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,9 @@ share/python-wheels/ *.egg MANIFEST +# Ruff +.ruff_cache/ + # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. diff --git a/examples/in_memory/main.py b/examples/in_memory/main.py index 44ad088..724681f 100644 --- a/examples/in_memory/main.py +++ b/examples/in_memory/main.py @@ -4,13 +4,13 @@ from typing import Dict, Optional import pendulum import uvicorn from fastapi import FastAPI +from pydantic import BaseModel from starlette.requests import Request from starlette.responses import JSONResponse, Response from fastapi_cache import FastAPICache from fastapi_cache.backends.inmemory import InMemoryBackend from fastapi_cache.decorator import cache -from pydantic import BaseModel app = FastAPI() diff --git a/fastapi_cache/__init__.py b/fastapi_cache/__init__.py index 77abb35..6ab9947 100644 --- a/fastapi_cache/__init__.py +++ b/fastapi_cache/__init__.py @@ -4,7 +4,6 @@ from fastapi_cache.coder import Coder, JsonCoder from fastapi_cache.key_builder import default_key_builder from fastapi_cache.types import Backend, KeyBuilder - __all__ = [ "Backend", "Coder", diff --git a/fastapi_cache/backends/__init__.py b/fastapi_cache/backends/__init__.py index 261af6c..23bd0a5 100644 --- a/fastapi_cache/backends/__init__.py +++ b/fastapi_cache/backends/__init__.py @@ -1,6 +1,5 @@ -from fastapi_cache.types import Backend from fastapi_cache.backends import inmemory - +from fastapi_cache.types import Backend __all__ = ["Backend", "inmemory"] diff --git a/fastapi_cache/coder.py b/fastapi_cache/coder.py index 1652d7b..255c9a2 100644 --- a/fastapi_cache/coder.py +++ b/fastapi_cache/coder.py @@ -2,7 +2,16 @@ import datetime import json import pickle # nosec:B403 from decimal import Decimal -from typing import Any, Callable, ClassVar, Dict, Optional, TypeVar, Union, overload +from typing import ( + Any, + Callable, + ClassVar, + Dict, + Optional, + TypeVar, + Union, + overload, +) import pendulum from fastapi.encoders import jsonable_encoder diff --git a/fastapi_cache/decorator.py b/fastapi_cache/decorator.py index 73221f9..cbcac0f 100644 --- a/fastapi_cache/decorator.py +++ b/fastapi_cache/decorator.py @@ -2,7 +2,16 @@ import logging import sys from functools import wraps from inspect import Parameter, Signature, isawaitable, iscoroutinefunction -from typing import Awaitable, Callable, List, Optional, Type, TypeVar, Union, cast +from typing import ( + Awaitable, + Callable, + List, + Optional, + Type, + TypeVar, + Union, + cast, +) if sys.version_info >= (3, 10): from typing import ParamSpec @@ -10,7 +19,10 @@ else: from typing_extensions import ParamSpec from fastapi.concurrency import run_in_threadpool -from fastapi.dependencies.utils import get_typed_return_annotation, get_typed_signature +from fastapi.dependencies.utils import ( + get_typed_return_annotation, + get_typed_signature, +) from starlette.requests import Request from starlette.responses import Response from starlette.status import HTTP_304_NOT_MODIFIED @@ -37,15 +49,16 @@ def _augment_signature(signature: Signature, *extra: Parameter) -> Signature: return signature.replace(parameters=[*parameters, *extra, *variadic_keyword_params]) -def _locate_param(sig: Signature, dep: Parameter, to_inject: List[Parameter]) -> Parameter: +def _locate_param( + sig: Signature, dep: Parameter, to_inject: List[Parameter] +) -> Parameter: """Locate an existing parameter in the decorated endpoint If not found, returns the injectable parameter, and adds it to the to_inject list. """ param = next( - (param for param in sig.parameters.values() if param.annotation is dep.annotation), - None, + (p for p in sig.parameters.values() if p.annotation is dep.annotation), None ) if param is None: to_inject.append(dep) @@ -99,7 +112,9 @@ def cache( kind=Parameter.KEYWORD_ONLY, ) - def wrapper(func: Callable[P, Awaitable[R]]) -> Callable[P, Awaitable[Union[R, Response]]]: + def wrapper( + func: Callable[P, Awaitable[R]] + ) -> Callable[P, Awaitable[Union[R, Response]]]: # get_typed_signature ensures that any forward references are resolved first wrapped_signature = get_typed_signature(func) to_inject: List[Parameter] = [] @@ -162,7 +177,8 @@ def cache( ttl, cached = await backend.get_with_ttl(cache_key) except Exception: logger.warning( - f"Error retrieving cache key '{cache_key}' from backend:", exc_info=True + f"Error retrieving cache key '{cache_key}' from backend:", + exc_info=True, ) ttl, cached = 0, None @@ -174,7 +190,8 @@ def cache( await backend.set(cache_key, to_cache, expire) except Exception: logger.warning( - f"Error setting cache key '{cache_key}' in backend:", exc_info=True + f"Error setting cache key '{cache_key}' in backend:", + exc_info=True, ) if response: @@ -206,7 +223,8 @@ def cache( return result - setattr(inner, "__signature__", _augment_signature(wrapped_signature, *to_inject)) + inner.__signature__ = _augment_signature(wrapped_signature, *to_inject) # type: ignore[attr-defined] + return inner return wrapper diff --git a/fastapi_cache/types.py b/fastapi_cache/types.py index 1ae4069..551746e 100644 --- a/fastapi_cache/types.py +++ b/fastapi_cache/types.py @@ -5,7 +5,6 @@ from starlette.requests import Request from starlette.responses import Response from typing_extensions import Protocol - _Func = Callable[..., Any] diff --git a/poetry.lock b/poetry.lock index deceead..bf7b9ba 100644 --- a/poetry.lock +++ b/poetry.lock @@ -231,55 +231,6 @@ docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib- tests = ["attrs[tests-no-zope]", "zope-interface"] tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -[[package]] -name = "black" -version = "23.3.0" -description = "The uncompromising code formatter." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, - {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, - {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, -] - -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - [[package]] name = "botocore" version = "1.20.106" @@ -711,23 +662,6 @@ files = [ docs = ["furo (>=2023.3.27)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] -[[package]] -name = "flake8" -version = "6.0.0" -description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" -optional = false -python-versions = ">=3.8.1" -files = [ - {file = "flake8-6.0.0-py2.py3-none-any.whl", hash = "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7"}, - {file = "flake8-6.0.0.tar.gz", hash = "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"}, -] - -[package.dependencies] -mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.10.0,<2.11.0" -pyflakes = ">=3.0.0,<3.1.0" - [[package]] name = "frozenlist" version = "1.3.3" @@ -918,24 +852,6 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -[[package]] -name = "isort" -version = "5.12.0" -description = "A Python utility / library to sort Python imports." -category = "dev" -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, -] - -[package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] - [[package]] name = "jmespath" version = "0.10.0" @@ -948,18 +864,6 @@ files = [ {file = "jmespath-0.10.0.tar.gz", hash = "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9"}, ] -[[package]] -name = "mccabe" -version = "0.7.0" -description = "McCabe checker, plugin for flake8" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] - [[package]] name = "multidict" version = "6.0.4" @@ -1130,18 +1034,6 @@ files = [ {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, ] -[[package]] -name = "pathspec" -version = "0.11.1" -description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, -] - [[package]] name = "pendulum" version = "2.1.2" @@ -1215,18 +1107,6 @@ importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "pycodestyle" -version = "2.10.0" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"}, - {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"}, -] - [[package]] name = "pycparser" version = "2.21" @@ -1292,18 +1172,6 @@ typing-extensions = ">=4.2.0" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] -[[package]] -name = "pyflakes" -version = "3.0.1" -description = "passive checker of Python programs" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pyflakes-3.0.1-py2.py3-none-any.whl", hash = "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf"}, - {file = "pyflakes-3.0.1.tar.gz", hash = "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"}, -] - [[package]] name = "pyproject-api" version = "1.5.1" @@ -1437,6 +1305,33 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "ruff" +version = "0.0.267" +description = "An extremely fast Python linter, written in Rust." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.0.267-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:4adbbbe314d8fcc539a245065bad89446a3cef2e0c9cf70bf7bb9ed6fe31856d"}, + {file = "ruff-0.0.267-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:67254ae34c38cba109fdc52e4a70887de1f850fb3971e5eeef343db67305d1c1"}, + {file = "ruff-0.0.267-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbe104f21a429b77eb5ac276bd5352fd8c0e1fbb580b4c772f77ee8c76825654"}, + {file = "ruff-0.0.267-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:db33deef2a5e1cf528ca51cc59dd764122a48a19a6c776283b223d147041153f"}, + {file = "ruff-0.0.267-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9adf1307fa9d840d1acaa477eb04f9702032a483214c409fca9dc46f5f157fe3"}, + {file = "ruff-0.0.267-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:0afca3633c8e2b6c0a48ad0061180b641b3b404d68d7e6736aab301c8024c424"}, + {file = "ruff-0.0.267-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2972241065b1c911bce3db808837ed10f4f6f8a8e15520a4242d291083605ab6"}, + {file = "ruff-0.0.267-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f731d81cb939e757b0335b0090f18ca2e9ff8bcc8e6a1cf909245958949b6e11"}, + {file = "ruff-0.0.267-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20c594eb56c19063ef5a57f89340e64c6550e169d6a29408a45130a8c3068adc"}, + {file = "ruff-0.0.267-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:45d61a2b01bdf61581a2ee039503a08aa603dc74a6bbe6fb5d1ce3052f5370e5"}, + {file = "ruff-0.0.267-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2107cec3699ca4d7bd41543dc1d475c97ae3a21ea9212238b5c2088fa8ee7722"}, + {file = "ruff-0.0.267-py3-none-musllinux_1_2_i686.whl", hash = "sha256:786de30723c71fc46b80a173c3313fc0dbe73c96bd9da8dd1212cbc2f84cdfb2"}, + {file = "ruff-0.0.267-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5a898953949e37c109dd242cfcf9841e065319995ebb7cdfd213b446094a942f"}, + {file = "ruff-0.0.267-py3-none-win32.whl", hash = "sha256:d12ab329474c46b96d962e2bdb92e3ad2144981fe41b89c7770f370646c0101f"}, + {file = "ruff-0.0.267-py3-none-win_amd64.whl", hash = "sha256:d09aecc9f5845586ba90911d815f9772c5a6dcf2e34be58c6017ecb124534ac4"}, + {file = "ruff-0.0.267-py3-none-win_arm64.whl", hash = "sha256:7df7eb5f8d791566ba97cc0b144981b9c080a5b861abaf4bb35a26c8a77b83e9"}, + {file = "ruff-0.0.267.tar.gz", hash = "sha256:632cec7bbaf3c06fcf0a72a1dd029b7d8b7f424ba95a574aaa135f5d20a00af7"}, +] + [[package]] name = "setuptools" version = "67.7.2" @@ -2227,4 +2122,4 @@ redis = ["redis"] [metadata] lock-version = "2.0" python-versions = "^3.7" -content-hash = "edb317193b26f7b00f1a4998cb61a56b2f3fd542c15218f0c3858d8e60a33bf0" +content-hash = "2bc8487caa2aa1bffd3e97013826ba5c137de0b4d26902026b77c7e78374ece1" diff --git a/pyproject.toml b/pyproject.toml index b25fc31..5f41d1c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,13 +29,11 @@ aiohttp = { version = ">=3.8.3", markers = "python_version >= \"3.11\"" } optional = true [tool.poetry.group.linting.dependencies] -flake8 = { version = "*", markers = "python_version >= \"3.10\"" } -isort = { version = "*", markers = "python_version >= \"3.10\"" } -black = { version = "*", markers = "python_version >= \"3.10\"" } mypy = { version = "^1.2.0", markers = "python_version >= \"3.10\"" } pyright = { version = "^1.1.306", markers="python_version >= \"3.10\"" } types-aiobotocore = { extras = ["dynamodb"], version = "^2.5.0.post2", markers = "python_version >= \"3.10\"" } types-redis = { version = "^4.5.4.2", markers = "python_version >= \"3.10\"" } +ruff = { version = "^0.0.267", markers = "python_version >= \"3.10\"" } [tool.poetry.group.dev.dependencies] pytest = "*" @@ -50,10 +48,6 @@ memcache = ["aiomcache"] dynamodb = ["aiobotocore"] all = ["redis", "aiomcache", "aiobotocore"] -[tool.black] -line-length = 100 -target-version = ['py36', 'py37', 'py38', 'py39'] - [tool.mypy] files = ["fastapi_cache", "examples", "tests"] python_version = "3.7" @@ -82,6 +76,21 @@ include = ["fastapi_cache", "tests", "examples"] strict = ["fastapi_cache", "tests"] pythonVersion = "3.7" +[tool.pytest] +addopts = "-p no:warnings" + +[tool.ruff] +ignore = ["E501"] +line-length = 80 +select = [ + "B", # flake8-bugbear + "E", # pycodestyle errors + "F", # pyflakes + "I", # isort + "W", # pycodestyle warnings +] +target-version = "py37" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 53d2b2f..0000000 --- a/setup.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[flake8] -ignore = E501,W503 - -[tool:pytest] -addopts = -p no:warnings \ No newline at end of file diff --git a/tests/test_decorator.py b/tests/test_decorator.py index 5e2f62e..ba86fd5 100644 --- a/tests/test_decorator.py +++ b/tests/test_decorator.py @@ -1,5 +1,5 @@ import time -from typing import Generator, Any +from typing import Any, Generator import pendulum import pytest diff --git a/tox.ini b/tox.ini index 617bb34..c62e50b 100644 --- a/tox.ini +++ b/tox.ini @@ -32,8 +32,7 @@ skip_install = true commands_pre = poetry install --no-root --with=linting --sync --all-extras commands = - black --check --diff . - flake8 + ruff check --show-source . mypy pyright @@ -43,5 +42,4 @@ skip_install = true commands_pre = poetry install --no-root --sync --with=linting commands = - black . - isort . + ruff check --fix .