openml / automlbenchmark

OpenML AutoML Benchmarking Framework
https://openml.github.io/automlbenchmark
MIT License
391 stars 130 forks source link

Start adding static type checking #567

Closed PGijsbers closed 11 months ago

PGijsbers commented 11 months ago

As part of a larger effort to improve developer experience (#566), I started adding mypy to the dev tool chain. This PR adds a minimal configuration that checks as I am following the using mypy with an existing codebase recommendations. This PR adds mypy only for amlb.utils.

The mypy configuration globally ignores the "attr-defined" error, because of the amlb.utils.core.Namespace class which uses dynamically created attributes (technically not even that, but it is mimicked with __getattr__). I tried to narrow down the filtering of this error by just the Namespace class (either through configuration, or by redefining Namespace as Any for type checking purposes), but unfortunately I could not get that to work - so a global ignore it is. Reducing (or removing) the use of Namespace is something I'd like to refactor anyway, hopefully it will be enough so that we can remove the global ignore (possibly by adding specific line-level ignores if need be).