From f244ee0c83e8db09b7e8ce3d7f9696e6a88080fa Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Dec 2025 08:33:43 +0100 Subject: [PATCH] Fix undefined names, type errors, and code quality issues (#3288) * Initial plan * Fix critical code issues: undefined names, unused nonlocal, and type annotations Co-authored-by: hlohaus <983577+hlohaus@users.noreply.github.com> * Fix code style issues: improve None comparisons, membership tests, and lambda usage Co-authored-by: hlohaus <983577+hlohaus@users.noreply.github.com> * Remove unused imports: clean up re and os imports from tools Co-authored-by: hlohaus <983577+hlohaus@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hlohaus <983577+hlohaus@users.noreply.github.com> --- g4f/Provider/Yupp.py | 2 +- g4f/Provider/needs_auth/GithubCopilot.py | 2 +- g4f/Provider/needs_auth/You.py | 6 ++++++ g4f/cookies.py | 6 +++++- g4f/tools/fetch_and_scrape.py | 1 + g4f/tools/files.py | 1 - g4f/tools/run_tools.py | 1 - g4f/typing.py | 2 +- 8 files changed, 15 insertions(+), 6 deletions(-) diff --git a/g4f/Provider/Yupp.py b/g4f/Provider/Yupp.py index 271d0c5e..f3ba49b7 100644 --- a/g4f/Provider/Yupp.py +++ b/g4f/Provider/Yupp.py @@ -518,7 +518,7 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin): - If for_target=True → chunk belongs to the target model output. """ - nonlocal is_thinking, thinking_content, normal_content, variant_text, session + nonlocal normal_content if not is_valid_content(content): return diff --git a/g4f/Provider/needs_auth/GithubCopilot.py b/g4f/Provider/needs_auth/GithubCopilot.py index 6fe92567..a6106323 100644 --- a/g4f/Provider/needs_auth/GithubCopilot.py +++ b/g4f/Provider/needs_auth/GithubCopilot.py @@ -131,7 +131,7 @@ class GithubCopilot(AsyncGeneratorProvider, ProviderModelMixin): "streaming": stream, "confirmations": [], "customInstructions": [], - "model": api_model, + "model": model, "mode": "immersive" } diff --git a/g4f/Provider/needs_auth/You.py b/g4f/Provider/needs_auth/You.py index baf36790..40c184ea 100644 --- a/g4f/Provider/needs_auth/You.py +++ b/g4f/Provider/needs_auth/You.py @@ -4,6 +4,12 @@ import re import json import uuid +try: + import nodriver + has_nodriver = True +except ImportError: + has_nodriver = False + from ...typing import AsyncResult, Messages, ImageType, Cookies from ..base_provider import AsyncGeneratorProvider, ProviderModelMixin from ..helper import format_prompt diff --git a/g4f/cookies.py b/g4f/cookies.py index 1e04679e..b412111c 100644 --- a/g4f/cookies.py +++ b/g4f/cookies.py @@ -50,7 +50,11 @@ class CookiesConfig: class BrowserConfig: port: int = None host: str = "127.0.0.1" - stop_browser = lambda: None + + @staticmethod + def stop_browser(): + return None + browser_executable_path: str = None DOMAINS = ( diff --git a/g4f/tools/fetch_and_scrape.py b/g4f/tools/fetch_and_scrape.py index 9bc52891..bcd42fa2 100644 --- a/g4f/tools/fetch_and_scrape.py +++ b/g4f/tools/fetch_and_scrape.py @@ -25,6 +25,7 @@ def scrape_text(html: str, max_words: Optional[int] = None, add_source: bool = T soup = BeautifulSoup(html, "html.parser") # Read the meta tags + seen_texts = [] # Initialize seen_texts list to track already processed text if add_metadata: metadata: Dict[str, str] = {} diff --git a/g4f/tools/files.py b/g4f/tools/files.py index 4c89719a..8acc5762 100644 --- a/g4f/tools/files.py +++ b/g4f/tools/files.py @@ -1,6 +1,5 @@ from __future__ import annotations -import re import os import json from pathlib import Path diff --git a/g4f/tools/run_tools.py b/g4f/tools/run_tools.py index d84f8d76..e1c4c013 100644 --- a/g4f/tools/run_tools.py +++ b/g4f/tools/run_tools.py @@ -1,6 +1,5 @@ from __future__ import annotations -import os import re import json import math diff --git a/g4f/typing.py b/g4f/typing.py index 40d15270..2ce4db58 100644 --- a/g4f/typing.py +++ b/g4f/typing.py @@ -85,7 +85,7 @@ __all__ = [ "Message", "ContentPart", "Cookies", - "Image", + "PILImage", # Changed from "Image" to "PILImage" to match the actual class name "ImageType", "MediaListType", "ResponseType",