Skip to content
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

mypy typing issue: client.aio.models.generate_content_stream requires await twice #316

Open
yosupo06 opened this issue Feb 12, 2025 · 0 comments
Assignees
Labels
priority: p2 Moderately-important priority. Fix may not be included in next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.

Comments

@yosupo06
Copy link

yosupo06 commented Feb 12, 2025

Thanks for stopping by to let us know something could be better!

PLEASE READ: If you have a support contract with Google, please create an issue in the support console instead of filing on GitHub. This will ensure a timely response.

Is this a client library issue or a product issue? We will only be able to assist with issues that pertain to the behaviors of this library. If the issue you're experiencing is due to the behavior of the product itself, please visit the Support page to reach the most relevant engineers.

If the support paths suggested above still do not result in a resolution, please provide the following details.

Environment details

  • Package version: google-genai: 1.1.0 / mypy: 1.15.0

Steps to reproduce

from typing import AsyncGenerator
from google.genai import Client

async def test() -> AsyncGenerator[str | None]:
    client = Client()
    async for chunk in await client.aio.models.generate_content_stream(
        model='gemini-2.0-flash-001', contents='Tell me a story in 300 words.'
    ):
        yield chunk.text

Mypy complains the above code with error: "Awaitable[AsyncIterator[GenerateContentResponse]]" has no attribute "__aiter__"; maybe "__await__"? (not async iterable).

Though the mypy error is resolved by attaching await twice (as the following code), but it doesn't actually work.

    async for chunk in await (await client.aio.models.generate_content_stream(
        model='gemini-2.0-flash-001', contents='Tell me a story in 300 words.'
    )):
        yield chunk.text

I guess the return type of generate_content_stream should be AsyncIterator[types.GenerateContentResponse] instead of Awaitable[AsyncIterator[types.GenerateContentResponse]], but not sure.

Thanks!

@yosupo06 yosupo06 added priority: p2 Moderately-important priority. Fix may not be included in next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns. labels Feb 12, 2025
@sararob sararob self-assigned this Feb 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority: p2 Moderately-important priority. Fix may not be included in next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Projects
None yet
Development

No branches or pull requests

2 participants