[ 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)