To clarify, I don't suggest that every variable should have a defined type
that doesn't change. However, I'd like to establish a culture where we
consistently add type annotations when we write new code. Where type is
defined gradually, we can use flexible annotations: "# type: (Any) -> Any"
or something like that.

We can argue that there is a point of diminishing returns as well, and this
is a valid point too. A possible  tradeoff may be to require  annotations,
docstrings or both in *most* functions/methods. Possible definition of
'most' - all functions unless they meet three of the following criteria[1]:
- not externally visible
- very short
- obvious

[1]
http://google.github.io/styleguide/pyguide.html#383-functions-and-methods
<http://google.github.io/styleguide/pyguide.html>

On Fri, Apr 10, 2020 at 4:56 PM Robert Bradshaw <rober...@google.com> wrote:

> On Fri, Apr 10, 2020 at 4:00 PM Valentyn Tymofieiev <valen...@google.com>
> wrote:
>
>> My preference is also for type-comments for now.
>>
>> Is it possible to configure the type checkers that we use to require
>> type-comments in new code?
>>
>
> My personal opinion is that there comes a point where there's
> diminishing return on explicitly typing everything (there's a reason people
> choose Python over Java) which is one of the big selling points of gradual
> typing, but before we can consider this the first step is to simply enable
> the type checkers on presubmit (IIRC we're really close).
>
>
>> On Fri, Apr 10, 2020 at 1:46 PM Robert Bradshaw <rober...@google.com>
>> wrote:
>>
>>> I prefer type-comments, as they can be validated by type checkers. Once
>>> we drop 2.7, we can go with actual type annotations (and the comments can
>>> be automatically converted over).
>>>
>>> On Fri, Apr 10, 2020 at 11:17 AM Valentyn Tymofieiev <
>>> valen...@google.com> wrote:
>>>
>>>> I am seeing several styles we use to annotate non-pipeline code in Beam
>>>> codebase:
>>>>
>>>> - informal docstring comments:
>>>>     file_pattern (str): the file glob to read,
>>>>     assign_context: Instance of AssignContext,
>>>> - type comments like # type: (...) -> iobase.RestrictionTracker
>>>> - pydoc-style annotation: A :class:`PTransform` object .
>>>>
>>>> It may be  a good idea to create a guideline which style to use when,
>>>> that we can point at in code reviews, and be more consistent.
>>>>
>>>> Please suggest your opinions and preferences.
>>>>
>>>> Thanks
>>>>
>>>

Reply via email to