summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiner Lohaus <hlohaus@users.noreply.github.com>2024-04-06 01:18:45 +0200
committerHeiner Lohaus <hlohaus@users.noreply.github.com>2024-04-06 01:18:45 +0200
commita4ca5773bd9602951af0ccc11f7e219dfb93732a (patch)
tree60beaccf6b583663d75f9381cfc0395e4b1d3be6
parentAdd Groq and Openai interfaces, Add integration tests (diff)
downloadgpt4free-a4ca5773bd9602951af0ccc11f7e219dfb93732a.tar
gpt4free-a4ca5773bd9602951af0ccc11f7e219dfb93732a.tar.gz
gpt4free-a4ca5773bd9602951af0ccc11f7e219dfb93732a.tar.bz2
gpt4free-a4ca5773bd9602951af0ccc11f7e219dfb93732a.tar.lz
gpt4free-a4ca5773bd9602951af0ccc11f7e219dfb93732a.tar.xz
gpt4free-a4ca5773bd9602951af0ccc11f7e219dfb93732a.tar.zst
gpt4free-a4ca5773bd9602951af0ccc11f7e219dfb93732a.zip
-rw-r--r--etc/unittest/asyncio.py4
-rw-r--r--etc/unittest/integration.py9
-rw-r--r--g4f/errors.py6
-rw-r--r--g4f/providers/base_provider.py4
4 files changed, 16 insertions, 7 deletions
diff --git a/etc/unittest/asyncio.py b/etc/unittest/asyncio.py
index 57a1fb7d..8931b79a 100644
--- a/etc/unittest/asyncio.py
+++ b/etc/unittest/asyncio.py
@@ -19,8 +19,8 @@ class TestChatCompletion(unittest.TestCase):
return ChatCompletion.create(g4f.models.default, DEFAULT_MESSAGES, AsyncProviderMock)
def test_exception(self):
- if hasattr(asyncio, '_nest_patched'):
- self.skipTest('asyncio is already patched')
+ if has_nest_asyncio:
+ self.skipTest('has nest_asyncio')
self.assertRaises(g4f.errors.NestAsyncioError, asyncio.run, self.run_exception())
def test_create(self):
diff --git a/etc/unittest/integration.py b/etc/unittest/integration.py
index 808a8d1d..36f09c0e 100644
--- a/etc/unittest/integration.py
+++ b/etc/unittest/integration.py
@@ -1,6 +1,12 @@
import unittest
import json
+try:
+ import nest_asyncio
+ has_nest_asyncio = True
+except:
+ has_nest_asyncio = False
+
from g4f.client import Client, ChatCompletion
from g4f.Provider import Bing, OpenaiChat
@@ -8,6 +14,9 @@ DEFAULT_MESSAGES = [{"role": "system", "content": 'Response in json, Example: {"
{"role": "user", "content": "Say success true in json"}]
class TestProviderIntegration(unittest.TestCase):
+ def setUp(self):
+ if not has_nest_asyncio:
+ self.skipTest("nest_asyncio is not installed")
def test_bing(self):
client = Client(provider=Bing)
diff --git a/g4f/errors.py b/g4f/errors.py
index 6cb5d177..3d553ba6 100644
--- a/g4f/errors.py
+++ b/g4f/errors.py
@@ -22,15 +22,15 @@ class RetryNoProviderError(Exception):
class VersionNotFoundError(Exception):
...
-class NestAsyncioError(Exception):
- ...
-
class ModelNotSupportedError(Exception):
...
class MissingRequirementsError(Exception):
...
+class NestAsyncioError(MissingRequirementsError):
+ ...
+
class MissingAuthError(Exception):
...
diff --git a/g4f/providers/base_provider.py b/g4f/providers/base_provider.py
index 37f4af15..f3483fc2 100644
--- a/g4f/providers/base_provider.py
+++ b/g4f/providers/base_provider.py
@@ -9,7 +9,7 @@ from inspect import signature, Parameter
from typing import Callable, Union
from ..typing import CreateResult, AsyncResult, Messages
from .types import BaseProvider, FinishReason
-from ..errors import NestAsyncioError, ModelNotSupportedError, MissingRequirementsError
+from ..errors import NestAsyncioError, ModelNotSupportedError
from .. import debug
if sys.version_info < (3, 10):
@@ -30,7 +30,7 @@ def get_running_loop(check_nested: bool) -> Union[AbstractEventLoop, None]:
import nest_asyncio
nest_asyncio.apply(loop)
except ImportError:
- raise MissingRequirementsError('Install "nest_asyncio" package')
+ raise NestAsyncioError('Install "nest_asyncio" package')
return loop
except RuntimeError:
pass