-
-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Type checking error when using github.paginate #27
Comments
which type checker you are using? the typevar in your change is used to restrict the |
paginator func has overload types: Lines 153 to 176 in 42de20d
the type annotations in the implement should be ignored by checker
|
I am using the builtin type check of PyCharm. The IDE highlights the errors. Its maybe a bug in the checker itself. It appeared to me that you would like to use the TypeVar from the function parameter for other uses. I am not an expert with python type annotations so maybe that is correct to do so. |
Can you test the checker with following change? @staticmethod
def paginate(
- request: R[CP, CT],
+ request: Union[R[CP, List[RT]], R[CP, CT]],
page: int = 1,
per_page: int = 100,
map_func: Optional[Callable[[Response[CT]], List[RT]]] = None,
*args: CP.args,
**kwargs: CP.kwargs,
) -> Paginator[RT]:
return Paginator(request, page, per_page, map_func, *args, **kwargs) # type: ignore |
I tested your change in PyCharm, its basically the same error as before. As I said it might be a bug in the relevant analyser. I checked their issue tracker, and there there seem to be a couple of open issues. This also is a quite complex case. |
Thanks to @RF-Tar-Railt, this issue has been confirmed and tracked by Jetbrains in PY-61022 & PY-61023. This issue maybe fixed in pycharm feature release. |
When trying to use the paginate function like that:
I get the following type checking error in PyCharm 2023.1:
Unexpected type(s): ((org: str, type: Literal["all", "public", "private", "forks", "sources", "member"] | Unset, sort: Literal["created", "updated", "pushed", "full_name"] | Unset, direction: Literal["asc", "desc"] | Unset, per_page: Unset | int, page: Unset | int) -> Response[list[MinimalRepository]]) Possible type(s): ((org: str, type: Literal["all", "public", "private", "forks", "sources", "member"] | Unset, sort: Literal["created", "updated", "pushed", "full_name"] | Unset, direction: Literal["asc", "desc"] | Unset, per_page: Unset | int, page: Unset | int) -> Response | (org: str, type: Literal["all", "public", "private", "forks", "sources", "member"] | Unset, sort: Literal["created", "updated", "pushed", "full_name"] | Unset, direction: Literal["asc", "desc"] | Unset, per_page: Unset | int, page: Unset | int) -> Awaitable[Response]) ((org: str, type: Literal["all", "public", "private", "forks", "sources", "member"] | Unset, sort: Literal["created", "updated", "pushed", "full_name"] | Unset, direction: Literal["asc", "desc"] | Unset, per_page: Unset | int, page: Unset | int) -> Response | (org: str, type: Literal["all", "public", "private", "forks", "sources", "member"] | Unset, sort: Literal["created", "updated", "pushed", "full_name"] | Unset, direction: Literal["asc", "desc"] | Unset, per_page: Unset | int, page: Unset | int) -> Awaitable[Response])
running it works though.
I could fix that error, changing the following code (there are 3 overriden paginate methods, I did change all of them accordingly):
to
so not providing type arguments to R itself, which is not clear to me why this even works as R is not a generic type imho.
The text was updated successfully, but these errors were encountered: