Mypy improvements (#890)

* Mypy improvements

* Change protocol, add a test

* Relax fields return type

* Test fixes

Co-authored-by: Hynek Schlawack <hs@ox.cx>
2 files changed