diff --git a/.gitignore b/.gitignore --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ version.txt .tox docs/apidoc +.mypy_cache/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,45 @@ +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.4.0 + hooks: + - id: trailing-whitespace + - id: flake8 + - id: check-json + - id: check-yaml + +- repo: https://github.com/codespell-project/codespell + rev: v1.16.0 + hooks: + - id: codespell + +- repo: local + hooks: + - id: mypy + name: mypy + entry: mypy + args: [swh] + pass_filenames: false + language: system + types: [python] + +- repo: https://github.com/python/black + rev: 19.10b0 + hooks: + - id: black + +# unfortunately, we are far from being able to enable this... +# - repo: https://github.com/PyCQA/pydocstyle.git +# rev: 4.0.0 +# hooks: +# - id: pydocstyle +# name: pydocstyle +# description: pydocstyle is a static analysis tool for checking compliance with Python docstring conventions. +# entry: pydocstyle --convention=google +# language: python +# types: [python] + +#- repo: https://github.com/asottile/blacken-docs +# rev: v1.0.0-1 +# hooks: +# - id: blacken-docs +# additional_dependencies: [black==19.3b0] diff --git a/mypy.ini b/mypy.ini new file mode 100644 --- /dev/null +++ b/mypy.ini @@ -0,0 +1,8 @@ +[mypy] +namespace_packages = True +warn_unused_ignores = True + +# 3rd party libraries without stubs (yet) + +[mypy-sphinx.*] +ignore_missing_imports = True diff --git a/swh/__init__.py b/swh/__init__.py --- a/swh/__init__.py +++ b/swh/__init__.py @@ -1 +1,3 @@ -__path__ = __import__("pkgutil").extend_path(__path__, __name__) +from typing import Iterable + +__path__: Iterable[str] = __import__("pkgutil").extend_path(__path__, __name__) diff --git a/swh/docs/sphinx/conf.py b/swh/docs/sphinx/conf.py --- a/swh/docs/sphinx/conf.py +++ b/swh/docs/sphinx/conf.py @@ -2,6 +2,8 @@ # -*- coding: utf-8 -*- # +from typing import Dict + import django import os @@ -139,7 +141,7 @@ modindex_common_prefix = ["swh."] # for the extlinks extension, sub-projects should fill that dict -extlinks = {} +extlinks: Dict = {} # XXX Kill this ASA this PR is accepted and released