[
https://issues.apache.org/jira/browse/BEAM-7746?focusedWorklogId=339118&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-339118
]
ASF GitHub Bot logged work on BEAM-7746:
----------------------------------------
Author: ASF GitHub Bot
Created on: 06/Nov/19 01:53
Start Date: 06/Nov/19 01:53
Worklog Time Spent: 10m
Work Description: chadrik commented on pull request #9915: [BEAM-7746]
Add python type hints (part 1)
URL: https://github.com/apache/beam/pull/9915#discussion_r342884673
##########
File path: sdks/python/apache_beam/coders/coders.py
##########
@@ -248,7 +281,26 @@ def __ne__(self, other):
def __hash__(self):
return hash(type(self))
- _known_urns = {}
+ _known_urns = {} # type: Dict[str, Tuple[type, ConstructorFn]]
+
+ @classmethod
Review comment:
I'm confused about what you are confused about :)
It's a dictionary of str (URN) to tuple of payload type and constructor
function (type alias defined a the top of the module).
Or are you talking about the `@overloads` just below this?
Overload decorators work conceptually like an overloaded C function.
Without overloads, we'd have to use a bunch of Unions around all the possible
arg and result types, but then the picture of which combinations of arg and
result type are valid is lost (lots of stuff in, lots of stuff out). Using
overloads we can clearly define those relationships. This also lets mypy more
accurately track the results of function invocations as well (e.g. when there's
no `fn` argument, the result will be a `Callable`, but when there is, the
result will be `None`).
More docs:
https://docs.python.org/3/library/typing.html#typing.overload
https://mypy.readthedocs.io/en/latest/more_types.html#function-overloading
----------------------------------------------------------------
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:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 339118)
Time Spent: 19h 40m (was: 19.5h)
> 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: 19h 40m
> 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)