summaryrefslogtreecommitdiffstats
path: root/g4f/client/helper.py
diff options
context:
space:
mode:
Diffstat (limited to 'g4f/client/helper.py')
-rw-r--r--g4f/client/helper.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/g4f/client/helper.py b/g4f/client/helper.py
index 32aa9183..c502d478 100644
--- a/g4f/client/helper.py
+++ b/g4f/client/helper.py
@@ -1,6 +1,9 @@
+from __future__ import annotations
+
import re
+from typing import Iterable, AsyncIterator
-def read_json(text: str) -> dict:
+def filter_json(text: str) -> str:
"""
Parses JSON code block from a string.
@@ -15,7 +18,7 @@ def read_json(text: str) -> dict:
return match.group("code")
return text
-def find_stop(stop, content: str, chunk: str):
+def find_stop(stop, content: str, chunk: str = None):
first = -1
word = None
if stop is not None:
@@ -24,10 +27,21 @@ def find_stop(stop, content: str, chunk: str):
if first != -1:
content = content[:first]
break
- if stream and first != -1:
+ if chunk is not None and first != -1:
first = chunk.find(word)
if first != -1:
chunk = chunk[:first]
else:
first = 0
return first, content, chunk
+
+def filter_none(**kwargs) -> dict:
+ return {
+ key: value
+ for key, value in kwargs.items()
+ if value is not None
+ }
+
+async def cast_iter_async(iter: Iterable) -> AsyncIterator:
+ for chunk in iter:
+ yield chunk \ No newline at end of file