From 8c73eed7260d91bbb47d5d07842f1c0258fb14a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksi=20Ha=CC=88kli?= Date: Wed, 13 Feb 2019 01:14:26 +0200 Subject: [PATCH] Introduce gradual typing with mypy --- .gitignore | 1 + axes/attempts.py | 12 ++++++------ mypy.ini | 6 ++++++ requirements.txt | 1 + tox.ini | 1 + 5 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 mypy.ini diff --git a/.gitignore b/.gitignore index 01a37ef..e019ef4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ .coverage .DS_Store .idea +.mypy_cache/ .project .pydevproject .python-version diff --git a/axes/attempts.py b/axes/attempts.py index 7e1278d..2efb11e 100644 --- a/axes/attempts.py +++ b/axes/attempts.py @@ -51,7 +51,7 @@ def _query_user_attempts(request, credentials=None): return attempts -def get_cache_key(request_or_obj, credentials=None): +def get_cache_key(request_or_obj, credentials=None) -> str: """ Build cache key name from request or AccessAttempt object. @@ -132,28 +132,28 @@ def get_user_attempts(request, credentials=None): return attempts -def reset_user_attempts(request, credentials=None): +def reset_user_attempts(request, credentials=None) -> int: attempts = _query_user_attempts(request, credentials) count, _ = attempts.delete() return count -def ip_in_whitelist(ip): +def ip_in_whitelist(ip) -> bool: if not settings.AXES_IP_WHITELIST: return False return ip in settings.AXES_IP_WHITELIST -def ip_in_blacklist(ip): +def ip_in_blacklist(ip) -> bool: if not settings.AXES_IP_BLACKLIST: return False return ip in settings.AXES_IP_BLACKLIST -def is_user_lockable(request, credentials=None): +def is_user_lockable(request, credentials=None) -> bool: if request.method != 'POST': return True @@ -176,7 +176,7 @@ def is_user_lockable(request, credentials=None): return True -def is_already_locked(request, credentials=None): +def is_already_locked(request, credentials=None) -> bool: ip = get_client_ip(request) if ( diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 0000000..81bba3f --- /dev/null +++ b/mypy.ini @@ -0,0 +1,6 @@ +[mypy] +python_version = 3.5 +ignore_missing_imports = True + +[mypy-axes.migrations.*] +ignore_errors = True diff --git a/requirements.txt b/requirements.txt index e2c7ce0..ab3844c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ -e . coverage==4.5.2 +mypy==0.670 prospector==1.1.6.2 sphinx_rtd_theme==0.4.2 tox==3.7.0 diff --git a/tox.ini b/tox.ini index ad838db..0149841 100644 --- a/tox.ini +++ b/tox.ini @@ -30,5 +30,6 @@ commands = coverage run -a manage.py test -v2 coverage report prospector + mypy axes setenv = PYTHONDONTWRITEBYTECODE=1