From 1d5fa61890142ba25b3948f7e9836c777bd9a627 Mon Sep 17 00:00:00 2001 From: Andy963 Date: Fri, 15 Dec 2023 22:58:16 +0800 Subject: [PATCH 1/3] aiter, anext not exist error --- google/generativeai/types/generation_types.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/google/generativeai/types/generation_types.py b/google/generativeai/types/generation_types.py index dc95b4cab..29f17b0bf 100644 --- a/google/generativeai/types/generation_types.py +++ b/google/generativeai/types/generation_types.py @@ -27,6 +27,21 @@ "GenerateContentResponse", ] +if sys.version_info < (3,10): + def aiter(obj): + yield obj.__next__() + + async def anext(obj, default=None): + try: + return obj.__anext__() + except StopAsyncIteration: + if default is not None: + return default + else: + raise StopAsyncIteration("stop iteration") from None + except Exception as e: + return obj.__next__() + class BlockedPromptException(Exception): pass From 7f1e1650a31f7f4048a0abea2c5e833954d8c419 Mon Sep 17 00:00:00 2001 From: Mark Daoust Date: Fri, 15 Dec 2023 11:13:12 -0800 Subject: [PATCH 2/3] Un-skip test, format with black. --- google/generativeai/types/generation_types.py | 5 +++-- tests/test_generative_models_async.py | 4 ---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/google/generativeai/types/generation_types.py b/google/generativeai/types/generation_types.py index 29f17b0bf..50570926d 100644 --- a/google/generativeai/types/generation_types.py +++ b/google/generativeai/types/generation_types.py @@ -27,9 +27,10 @@ "GenerateContentResponse", ] -if sys.version_info < (3,10): +if sys.version_info < (3, 10): + def aiter(obj): - yield obj.__next__() + yield obj.__next__() async def anext(obj, default=None): try: diff --git a/tests/test_generative_models_async.py b/tests/test_generative_models_async.py index 1c48f3476..3fe4e9ddc 100644 --- a/tests/test_generative_models_async.py +++ b/tests/test_generative_models_async.py @@ -75,10 +75,6 @@ async def test_basic(self): self.assertEqual(response.text, "world!") - @unittest.skipIf( - sys.version_info.major == 3 and sys.version_info.minor < 10, - "streaming async requires python 3.10+", - ) async def test_streaming(self): # Generate text from text prompt model = generative_models.GenerativeModel(model_name="gemini-m") From 3cd1d8b405d1bdf1dff04875f05bdc6bfd77ccdb Mon Sep 17 00:00:00 2001 From: Mark Daoust Date: Fri, 15 Dec 2023 11:21:38 -0800 Subject: [PATCH 3/3] Fix aiter & anext implementations. --- google/generativeai/types/generation_types.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/google/generativeai/types/generation_types.py b/google/generativeai/types/generation_types.py index 50570926d..ff2ce1441 100644 --- a/google/generativeai/types/generation_types.py +++ b/google/generativeai/types/generation_types.py @@ -30,18 +30,16 @@ if sys.version_info < (3, 10): def aiter(obj): - yield obj.__next__() + return obj.__aiter__() async def anext(obj, default=None): try: - return obj.__anext__() + return await obj.__anext__() except StopAsyncIteration: if default is not None: return default else: - raise StopAsyncIteration("stop iteration") from None - except Exception as e: - return obj.__next__() + raise class BlockedPromptException(Exception):