diff options
author | Heiner Lohaus <heiner@lohaus.eu> | 2023-10-01 20:29:57 +0200 |
---|---|---|
committer | Heiner Lohaus <heiner@lohaus.eu> | 2023-10-01 20:29:57 +0200 |
commit | 7b9ad21de81cd5129b047d8de3ce8d9e5a53ea9a (patch) | |
tree | b6519bff3c7ee7a37189d67a3247d3db7a316c15 /g4f | |
parent | Disable Wewordle Provider (diff) | |
download | gpt4free-7b9ad21de81cd5129b047d8de3ce8d9e5a53ea9a.tar gpt4free-7b9ad21de81cd5129b047d8de3ce8d9e5a53ea9a.tar.gz gpt4free-7b9ad21de81cd5129b047d8de3ce8d9e5a53ea9a.tar.bz2 gpt4free-7b9ad21de81cd5129b047d8de3ce8d9e5a53ea9a.tar.lz gpt4free-7b9ad21de81cd5129b047d8de3ce8d9e5a53ea9a.tar.xz gpt4free-7b9ad21de81cd5129b047d8de3ce8d9e5a53ea9a.tar.zst gpt4free-7b9ad21de81cd5129b047d8de3ce8d9e5a53ea9a.zip |
Diffstat (limited to '')
-rw-r--r-- | g4f/Provider/helper.py | 11 | ||||
-rw-r--r-- | g4f/requests.py | 31 |
2 files changed, 30 insertions, 12 deletions
diff --git a/g4f/Provider/helper.py b/g4f/Provider/helper.py index 2c00a488..544c5a76 100644 --- a/g4f/Provider/helper.py +++ b/g4f/Provider/helper.py @@ -1,13 +1,20 @@ from __future__ import annotations -import asyncio +import asyncio, sys from asyncio import AbstractEventLoop import browser_cookie3 +# Change event loop policy on windows +if sys.platform == 'win32': + if isinstance( + asyncio.get_event_loop_policy(), asyncio.WindowsProactorEventLoopPolicy + ): + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + +# Local Cookie Storage _cookies: dict[str, dict[str, str]] = {} - # If event loop is already running, handle nested event loops # If "nest_asyncio" is installed, patch the event loop. def get_event_loop() -> AbstractEventLoop: diff --git a/g4f/requests.py b/g4f/requests.py index 6f4b587c..367bafa0 100644 --- a/g4f/requests.py +++ b/g4f/requests.py @@ -8,10 +8,12 @@ from aiohttp.base_protocol import BaseProtocol from curl_cffi.requests import AsyncSession as BaseSession from curl_cffi.requests import Response -from curl_cffi import AsyncCurl -is_newer_0_5_9 = hasattr(AsyncCurl, "remove_handle") -is_newer_0_5_8 = hasattr(BaseSession, "_set_cookies") +import curl_cffi + +is_newer_0_5_8 = hasattr(BaseSession, "_set_cookies") or hasattr(curl_cffi.requests.Cookies, "get_cookies_for_curl") +is_newer_0_5_9 = hasattr(curl_cffi.AsyncCurl, "remove_handle") +is_newer_0_5_10 = hasattr(BaseSession, "release_curl") class StreamResponse: def __init__(self, inner: Response, content: StreamReader, request): @@ -65,13 +67,22 @@ class StreamRequest: async def __aenter__(self) -> StreamResponse: self.curl = await self.session.pop_curl() self.enter = self.loop.create_future() - request, _, header_buffer = self.session._set_curl_options( - self.curl, - self.method, - self.url, - content_callback=self.on_content, - **self.options - ) + if is_newer_0_5_10: + request, _, header_buffer, _, _ = self.session._set_curl_options( + self.curl, + self.method, + self.url, + content_callback=self.on_content, + **self.options + ) + else: + request, _, header_buffer = self.session._set_curl_options( + self.curl, + self.method, + self.url, + content_callback=self.on_content, + **self.options + ) if is_newer_0_5_9: self.handle = self.session.acurl.add_handle(self.curl) else: |