[
https://issues.apache.org/jira/browse/BEAM-13439?focusedWorklogId=722587&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-722587
]
ASF GitHub Bot logged work on BEAM-13439:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 08/Feb/22 05:12
Start Date: 08/Feb/22 05:12
Worklog Time Spent: 10m
Work Description: tvalentyn commented on pull request #16517:
URL: https://github.com/apache/beam/pull/16517#issuecomment-1032221258
Our type checking tool now kicked in:
```
08:06:01 apache_beam/transforms/ptransform.py:1005: error: syntax error in
type comment '(Callable) -> (...) -> _PTransformFnPTransform' [syntax]
08:06:01 Found 1 error in 1 file (checked 818 source files)
08:06:02 error: mypy exited with status 2
```
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 722587)
Time Spent: 3h (was: 2h 50m)
> Correct type signature on ptransform_fn to better support typecheckers
> ----------------------------------------------------------------------
>
> Key: BEAM-13439
> URL: https://issues.apache.org/jira/browse/BEAM-13439
> Project: Beam
> Issue Type: Improvement
> Components: sdk-py-core
> Affects Versions: 2.34.0
> Reporter: Sandy Chapman
> Priority: P2
> Labels: transform, typecheck
> Time Spent: 3h
> Remaining Estimate: 0h
>
> Because the return type of the ptransform_fn is not specified, [certain
> typecheckers|https://github.com/microsoft/pyright/issues/2688#issuecomment-990238720]
> will assume the type signature of functions decorated with it remain
> unchanged. However, ptransform_fn specifically adjusts the type signature
> such that the function no longer takes a pcoll.
> This can be corrected by changing the the definition of ptransform_fn from:
> {code:python}
> def ptransform_fn(fn):
> {code}
> to:
> {code:python}
> def ptransform_fn(fn) -> Callable[..., _PTransformFnPTransform]: {code}
> This allows the typechecker to understand the return type of a function
> decorated with ptransform_fn will instead be a _PTransformFnPTransform type.
> Additionally, for Python 3.10,
> [ParamSpec|https://www.python.org/dev/peps/pep-0612/#parameter-specification-variables]
> could be used to preserve the signature of the internal function as well.
> {code:python}
> from typing import ParamSpec, TypeVar, Concatenate
> P = ParamSpec("P")
> T = TypeVar("T")
> R = TypeVar("R")
> def ptransform_fn(fn: Callable[Concatenate[PCollection[T], P], R]) ->
> Callable[[P], _PTransformFnPTransform]: ...{code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)