
I have merged a few PR's to trunk which eliminate hundreds of errors encountered with: *tox -e mypy* I think we can take several passes with more PR's to whack away all these mypy errors, and turn on mypy as part of the default CI for Twisted. I have seen a few errors like: src/twisted/words/protocols/jabber/sasl_mechanisms.py:47:1: error: 'Anonymous' is missing following 'ISASLMechanism' interface members: getResponse. [misc] class Anonymous(object): src/twisted/words/protocols/jabber/sasl_mechanisms.py:61:1: error: 'Plain' is missing following 'ISASLMechanism' interface members: getResponse. [misc] class Plain(object): src/twisted/internet/_dumbwin32proc.py:110:1: error: 'Process' is missing following 'twisted.internet.interfaces.ITransport' interface members: getHost, getPeer. [misc] class Process(_pollingfile._PollingTimer, BaseProcess): src/twisted/internet/process.py:959:1: error: 'PTYProcess' is missing following 'twisted.internet.interfaces.ITransport' interface members: getHost, getPeer. [misc] class PTYProcess(abstract.FileDescriptor, _BaseProcess): src/twisted/internet/process.py:959:1: error: 'PTYProcess' is missing following 'IProcessTransport' interface members: closeChildFD, writeToChild. [misc] class PTYProcess(abstract.FileDescriptor, _BaseProcess): src/twisted/internet/base.py:504:1: error: 'ReactorBase' is missing following 'IReactorCore' interface members: run. [misc] class ReactorBase(PluggableResolverMixin) For a class to properly implement a Zope interface, is it mandatory that it implement every method in that interface? If we modify the classes with mypy errors to properly implement these methods (even with no-ops) is that the correct way to go? -- Craig