[ 
https://issues.apache.org/jira/browse/BEAM-7746?focusedWorklogId=369304&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-369304
 ]

ASF GitHub Bot logged work on BEAM-7746:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 09/Jan/20 19:52
            Start Date: 09/Jan/20 19:52
    Worklog Time Spent: 10m 
      Work Description: chadrik commented on pull request #10367: [BEAM-7746] 
Add python type hints (part 2)
URL: https://github.com/apache/beam/pull/10367#discussion_r364930741
 
 

 ##########
 File path: sdks/python/apache_beam/runners/common.py
 ##########
 @@ -437,13 +439,15 @@ def invoke_start_bundle(self):
     # type: () -> None
     """Invokes the DoFn.start_bundle() method.
     """
+    assert self.output_processor is not None
 
 Review comment:
   I have not done performance testing on this.  Is there a way that we can 
invoke the perf suite on Jenkins from github?
   
   The underlying issue in this case is that it's possible to instantiate a 
`DoFnInvoker` without an `output_processor` and that's considered ok as long as 
you don't call any of the methods that use the `output_processor`.   If you do, 
then it would raise an exception.  The asserts obviously also raise an 
exception, but it serves as a way to communicate to mypy that you're aware of 
it, and it can adjust its type analysis within that scope.
   
   **Solutions**
   
   Easy:  Judiciously add `type: ignore` comments.  I say "judiciously" because 
ignoring an error does not change the type analysis, so similar errors can pop 
up nearby in the same scope.  In this particular case the methods are brief, so 
a `type: ignore` comment would suffice.
   
   Not Easy:  Rework the code so there's a subclass of `DoFnInvoker` that 
always has a non-optional `output_processor`, and only this class possesses 
these "safe if you're careful" methods, which would, under that design, always 
be safe.
   
   The easy solution is fine for this particular case (we're aware there could 
be an error, but we accept it), but it's not a general solution to this 
problem.  Choosing the right solution for each case takes some consideration.
   
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 369304)
    Time Spent: 42h 50m  (was: 42h 40m)

> Add type hints to python code
> -----------------------------
>
>                 Key: BEAM-7746
>                 URL: https://issues.apache.org/jira/browse/BEAM-7746
>             Project: Beam
>          Issue Type: New Feature
>          Components: sdk-py-core
>            Reporter: Chad Dombrova
>            Assignee: Chad Dombrova
>            Priority: Major
>          Time Spent: 42h 50m
>  Remaining Estimate: 0h
>
> As a developer of the beam source code, I would like the code to use pep484 
> type hints so that I can clearly see what types are required, get completion 
> in my IDE, and enforce code correctness via a static analyzer like mypy.
> This may be considered a precursor to BEAM-7060
> Work has been started here:  [https://github.com/apache/beam/pull/9056]
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to