On Thu, Oct 29, 2020 at 7:56 PM David Gow <davidgow@xxxxxxxxxx> wrote: > > On Thu, Oct 22, 2020 at 6:08 AM Daniel Latypov <dlatypov@xxxxxxxxxx> wrote: > > > > The code uses annotations, but they aren't accurate. > > Note that type checking in python is a separate process, running > > `kunit.py run` will not check and complain about invalid types at > > runtime. > > > > Fix pre-existing issues found by running a type checker > > $ mypy *.py > > > > All but one of these were returning `None` without denoting this > > properly (via `Optional[Type]`). > > > > Signed-off-by: Daniel Latypov <dlatypov@xxxxxxxxxx> > > --- > > I'm not going to pretend to really understand python annotations > completely, but this all seems correct from what I know of the code, > and I was able to install mypy and verify the issues were fixed. > > Clearly, if we're going to have type annotations here, we should be > verifying the code against them. Is there a way we could get python > itself to verify this code when the script runs, rather than have to > use mypy as a tool to verify it separately? Otherwise, maybe we can Type annotations are https://www.python.org/dev/peps/pep-0484/ There isn't support for python itself to type check and it calls out (only) mypy by name as a type-checker. I don't have a good answer for how we prevent them from bitrotting :/ > run it automatically from the kunit_tool_test.py unit tests or > something similar? I don't think it's possible to do so cleanly. E.g. I don't know python that well, but here's my guess at what it'd have to look like: * We have to assume mypy is installed * dynamically loading the module inside a `try` (so we don't break users who don't have it) * figure out what func is the entry point to mypy and call it on "./kunit.py" somehow > > Regardless, this is > > Reviewed-by: David Gow <davidgow@xxxxxxxxxx> > > Cheers, > -- David