Added type annotation to public classes.#1074
Draft
jackgene wants to merge 2 commits intoaio-libs:masterfrom
Draft
Added type annotation to public classes.#1074jackgene wants to merge 2 commits intoaio-libs:masterfrom
jackgene wants to merge 2 commits intoaio-libs:masterfrom
Conversation
| from typing import Any, Callable, Optional, Sequence, Set, TypedDict, Union | ||
|
|
||
| from aiokafka import errors as Errors | ||
| from aiokafka.client import CoordinationType |
Check failure
Code scanning / CodeQL
Module-level cyclic import Error
shuckc
reviewed
Apr 14, 2025
|
|
||
| @abc.abstractmethod | ||
| async def token(self): | ||
| async def token(self) -> None: |
Contributor
Author
There was a problem hiding this comment.
Good catch. Based on the doc comment, I think you are right. I believe these are auto-generated though, so let me look to see if there are any concrete implementations, and what those are returning.
2b0a9b7 to
ce97a90
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Adds type annotation to public classes, and
py.typedso that client code can type check against this library.Fixes #980 (kind of)
Note that the issue in question seems to be more ambitious in that it aims to provide type information to the entire library:
This PR only aims to solve the latter.
Per providing type annotations, there are several ways to distribute type information:
This is the first option, and makes changes to
.pyfiles mostly just adding type annotations. If you prefer to go with the second option (which doesn't touch any.pyfile), please have a look at #1075 instead.Details about this PR:
from __future__ import annotationsx | Noneinstead ofOptional[x]x | yinstead ofUnion[x, y]list[x]/set[x]/dict[x, y]instead oftyping.List[x]/typing.Set[x]/typing.Dict[x, y]list, but varargs/default value istupleNoneNote that this is introducing a breaking change that may affect a small minority of users. The key/value serializer/deserializer functions no longer optional (with the identity function defined as the default parameter). This is so that the generic parameters
KT/VTcan be inferred.This means that:
Noneas their key/value serializer/deserializer function, there should be no change.However, if a client is explicitly passing in
None, e.g., withAIOKafkaConsumer:Or with
AIOKafkaProducer:The type checker will reject it.

You can ignore the type checker though, and the application should work the same as before, as this PR does not change any runtime logic.
Checklist
CHANGESfolder<issue_id>.<type>(e.g.588.bugfix)issue_idchange it to the pr id after creating the PR.feature: Signifying a new feature..bugfix: Signifying a bug fix..doc: Signifying a documentation improvement..removal: Signifying a deprecation or removal of public API..misc: A ticket has been closed, but it is not of interest to users.Fix issue with non-ascii contents in doctest text files.