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

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

                Author: ASF GitHub Bot
            Created on: 05/Feb/22 02:19
            Start Date: 05/Feb/22 02:19
    Worklog Time Spent: 10m 
      Work Description: aaltay commented on pull request #16517:
URL: https://github.com/apache/beam/pull/16517#issuecomment-1030501495


   @tvalentyn - Would you be able to take a look at this change? Or find 
another person to review?


-- 
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: 721344)
    Time Spent: 50m  (was: 40m)

> 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: 50m
>  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)

Reply via email to