[ 
https://issues.apache.org/jira/browse/BEAM-7060?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16847151#comment-16847151
 ] 

Udi Meiri commented on BEAM-7060:
---------------------------------

I was thinking of using Beam runtime checks (which only happen during pipeline 
construction) and supporting static checks. By supporting I mean adding adding 
annotations to Beam (note that Beam still support Python 2 so inline 
annotations aren't possible yet).

We will support Beam-style type hints (on pipeline objects such as DoFn), but 
also use PEP 484 annotations if provided (such as on DoFn.process()).
I do want to get static type checks working on Beam and Beam user code.

I'm not convinced that it'd be simple to switch over entirely to static checks.
Some things to consider:
- Beam uses type hints to determine which coders to use for pipeline elements.
- Beam constructs pipelines using the pipe symbol/apply() method. The operands 
are classes (PTransforms), which don't get type hints in Python (AFAIK).
  - Some PTransforms are composite transforms that expand() into sub-pipelines. 
Would mypy handle this case? It seems it would have to simulate the pipeline 
construction process.


> Design Py3-compatible typehints annotation support in Beam 3.
> -------------------------------------------------------------
>
>                 Key: BEAM-7060
>                 URL: https://issues.apache.org/jira/browse/BEAM-7060
>             Project: Beam
>          Issue Type: Sub-task
>          Components: sdk-py-core
>            Reporter: Valentyn Tymofieiev
>            Assignee: Udi Meiri
>            Priority: Major
>
> Existing [Typehints implementaiton in 
> Beam|[https://github.com/apache/beam/blob/master/sdks/python/apache_beam/typehints/
> ] heavily relies on internal details of CPython implementation, and some of 
> the assumptions of this implementation broke as of Python 3.6, see for 
> example: https://issues.apache.org/jira/browse/BEAM-6877, which makes  
> typehints support unusable on Python 3.6 as of now. [Python 3 Kanban 
> Board|https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=245&view=detail]
>  lists several specific typehints-related breakages, prefixed with "TypeHints 
> Py3 Error".
> We need to decide whether to:
> - Deprecate in-house typehints implementation.
> - Continue to support in-house implementation, which at this point is a stale 
> code and has other known issues.
> - Attempt to use some off-the-shelf libraries for supporting 
> type-annotations, like  Pytype, Mypy, PyAnnotate.
> WRT to this decision we also need to plan on immediate next steps to unblock 
> adoption of Beam for  Python 3.6+ users. One potential option may be to have 
> Beam SDK ignore any typehint annotations on Py 3.6+.
> cc: [~udim], [~altay], [~robertwb].



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to