Add basic mypy linting
Based on pytest setup, though more lax. Currently only the tests are annotated so only helpful for them. Fix #721.
This commit is contained in:
@@ -28,3 +28,12 @@ repos:
|
|||||||
files: ^(CHANGELOG.rst|HOWTORELEASE.rst|README.rst|changelog/.*)$
|
files: ^(CHANGELOG.rst|HOWTORELEASE.rst|README.rst|changelog/.*)$
|
||||||
language: python
|
language: python
|
||||||
additional_dependencies: [pygments, restructuredtext_lint]
|
additional_dependencies: [pygments, restructuredtext_lint]
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
|
rev: v0.910-1
|
||||||
|
hooks:
|
||||||
|
- id: mypy
|
||||||
|
files: ^(src/|testing/)
|
||||||
|
args: []
|
||||||
|
additional_dependencies:
|
||||||
|
- pytest>=6.2.0
|
||||||
|
- py>=1.10.0
|
||||||
|
|||||||
1
changelog/721.trivial.rst
Normal file
1
changelog/721.trivial.rst
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Started using type annotations and mypy checking internally. The types are incomplete and not published.
|
||||||
16
setup.cfg
16
setup.cfg
@@ -58,3 +58,19 @@ setproctitle = setproctitle
|
|||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
max-line-length = 100
|
max-line-length = 100
|
||||||
|
|
||||||
|
[mypy]
|
||||||
|
mypy_path = src
|
||||||
|
# TODO: Enable this & fix errors.
|
||||||
|
# check_untyped_defs = True
|
||||||
|
disallow_any_generics = True
|
||||||
|
ignore_missing_imports = True
|
||||||
|
no_implicit_optional = True
|
||||||
|
show_error_codes = True
|
||||||
|
strict_equality = True
|
||||||
|
warn_redundant_casts = True
|
||||||
|
warn_return_any = True
|
||||||
|
warn_unreachable = True
|
||||||
|
warn_unused_configs = True
|
||||||
|
# TODO: Enable this & fix errors.
|
||||||
|
# no_implicit_reexport = True
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ def is_xdist_controller(request_or_session) -> bool:
|
|||||||
is_xdist_master = is_xdist_controller
|
is_xdist_master = is_xdist_controller
|
||||||
|
|
||||||
|
|
||||||
def get_xdist_worker_id(request_or_session) -> str:
|
def get_xdist_worker_id(request_or_session):
|
||||||
"""Return the id of the current worker ('gw0', 'gw1', etc) or 'master'
|
"""Return the id of the current worker ('gw0', 'gw1', etc) or 'master'
|
||||||
if running on the controller node.
|
if running on the controller node.
|
||||||
|
|
||||||
|
|||||||
@@ -236,8 +236,8 @@ def setup_config(config, basetemp):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__channelexec__":
|
if __name__ == "__channelexec__":
|
||||||
channel = channel # noqa
|
channel = channel # type: ignore[name-defined] # noqa: F821
|
||||||
workerinput, args, option_dict, change_sys_path = channel.receive()
|
workerinput, args, option_dict, change_sys_path = channel.receive() # type: ignore[name-defined]
|
||||||
|
|
||||||
if change_sys_path is None:
|
if change_sys_path is None:
|
||||||
importpath = os.getcwd()
|
importpath = os.getcwd()
|
||||||
@@ -260,7 +260,7 @@ if __name__ == "__channelexec__":
|
|||||||
|
|
||||||
setup_config(config, option_dict.get("basetemp"))
|
setup_config(config, option_dict.get("basetemp"))
|
||||||
config._parser.prog = os.path.basename(workerinput["mainargv"][0])
|
config._parser.prog = os.path.basename(workerinput["mainargv"][0])
|
||||||
config.workerinput = workerinput
|
config.workerinput = workerinput # type: ignore[attr-defined]
|
||||||
config.workeroutput = {}
|
config.workeroutput = {} # type: ignore[attr-defined]
|
||||||
interactor = WorkerInteractor(config, channel)
|
interactor = WorkerInteractor(config, channel) # type: ignore[name-defined]
|
||||||
config.hook.pytest_cmdline_main(config=config)
|
config.hook.pytest_cmdline_main(config=config)
|
||||||
|
|||||||
Reference in New Issue
Block a user