+1

We should enable this on jenkins, plus trivial instructions (ideally a
one-liner tox command) to run it locally. Hopefully the errors will be
easy enough for contributors to figure out (in particular local to and
commensurate in complexity with the code that they're editing), and I
agree it's the only way to keep them accurate (which is a net positive
for tooling and developers).

Running it as part of a pre-commit hook could be discussed once we
have a bit more experience (but 10s is certainly on the long side).

On Mon, Mar 2, 2020 at 10:01 AM Luke Cwik <lc...@google.com> wrote:
>
> +1
>
> The typing information has really helped me several times figuring out that 
> API contracts and expected types.
>
> On Mon, Mar 2, 2020 at 9:54 AM Pablo Estrada <pabl...@google.com> wrote:
>>
>> I am in favor of enabling the test, and also am happy to start answering 
>> questions too.
>> Thanks so much Chad for leading this.
>> Best
>> -P.
>>
>> On Mon, Mar 2, 2020 at 9:44 AM Chad Dombrova <chad...@gmail.com> wrote:
>>>
>>> Good news everyone!
>>> We nearly have the full beam codebase passing in mypy.
>>>
>>> As we are now approaching the zero-error event horizon, I'd like to open up 
>>> a discussion around enabling mypy in the PythonLint job.  Every day or so a 
>>> PR is merged that introduces some new mypy errors, so enabling this test is 
>>> the only way I see to keep the annotations accurate and thus useful.
>>>
>>> Developer fatigue is a real concern here, since static typing has a a steep 
>>> learning curve, and there are still not a lot of experts to help consult on 
>>> PRs.  Here are some things that I hope will mitigate those concerns:
>>>
>>> We have a lot of tying coverage, so that means plenty of examples of how to 
>>> solve different types of problems
>>> Running mypy only takes 10 seconds to complete (if you execute it outside 
>>> of gradle / tox), and that will get better when we get to 0 errors.  Also, 
>>> running mypy in daemon mode should speed that up even more
>>> I have a PR[1] to allow developers to easily (and optionally) setup yapf to 
>>> run in a local git pre-commit hook;  I'd like to do the same for mypy.
>>> I will make myself and members of my team available to help out with typing 
>>> questions in PRs
>>>
>>> Is there anyone else on the list who is knowledgable about python static 
>>> typing who would like to volunteer to be flagged on typing questions?
>>>
>>> What else can we do to make this transition easier?
>>>
>>> [1] https://github.com/apache/beam/pull/10810
>>>
>>> -chad
>>>

Reply via email to