mirror of
https://github.com/VinciGit00/Scrapegraph-ai.git
synced 2026-07-09 21:19:20 +08:00
fix: better playwright installation handling
This commit is contained in:
parent
e374e055d6
commit
f6009d1abf
89
README.md
89
README.md
@ -24,21 +24,6 @@ Just say which information you want to extract and the library will do it for yo
|
|||||||
<img src="https://raw.githubusercontent.com/VinciGit00/Scrapegraph-ai/main/docs/assets/sgai-hero.png" alt="ScrapeGraphAI Hero" style="width: 100%;">
|
<img src="https://raw.githubusercontent.com/VinciGit00/Scrapegraph-ai/main/docs/assets/sgai-hero.png" alt="ScrapeGraphAI Hero" style="width: 100%;">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## 🔗 ScrapeGraph API & SDKs
|
|
||||||
If you are looking for a quick solution to integrate ScrapeGraph in your system, check out our powerful API [here!](https://dashboard.scrapegraphai.com/login)
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<img src="https://raw.githubusercontent.com/VinciGit00/Scrapegraph-ai/main/docs/assets/api-banner.png" alt="ScrapeGraph API Banner" style="width: 100%;">
|
|
||||||
</p>
|
|
||||||
|
|
||||||
We offer SDKs in both Python and Node.js, making it easy to integrate into your projects. Check them out below:
|
|
||||||
|
|
||||||
| SDK | Language | GitHub Link |
|
|
||||||
|-----------|----------|-----------------------------------------------------------------------------|
|
|
||||||
| Python SDK | Python | [scrapegraph-py](https://github.com/ScrapeGraphAI/scrapegraph-sdk/tree/main/scrapegraph-py) |
|
|
||||||
| Node.js SDK | Node.js | [scrapegraph-js](https://github.com/ScrapeGraphAI/scrapegraph-sdk/tree/main/scrapegraph-js) |
|
|
||||||
|
|
||||||
The Official API Documentation can be found [here](https://docs.scrapegraphai.com/).
|
|
||||||
|
|
||||||
## 🚀 Quick install
|
## 🚀 Quick install
|
||||||
|
|
||||||
@ -47,6 +32,7 @@ The reference page for Scrapegraph-ai is available on the official page of PyPI:
|
|||||||
```bash
|
```bash
|
||||||
pip install scrapegraphai
|
pip install scrapegraphai
|
||||||
|
|
||||||
|
# IMPORTANT (to fetch webpage content)
|
||||||
playwright install
|
playwright install
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -84,13 +70,12 @@ The most common one is the `SmartScraperGraph`, which extracts information from
|
|||||||
|
|
||||||
|
|
||||||
```python
|
```python
|
||||||
import json
|
|
||||||
from scrapegraphai.graphs import SmartScraperGraph
|
from scrapegraphai.graphs import SmartScraperGraph
|
||||||
|
|
||||||
# Define the configuration for the scraping pipeline
|
# Define the configuration for the scraping pipeline
|
||||||
graph_config = {
|
graph_config = {
|
||||||
"llm": {
|
"llm": {
|
||||||
"api_key": "YOUR_OPENAI_APIKEY",
|
"api_key": "YOUR_OPENAI_API_KEY",
|
||||||
"model": "openai/gpt-4o-mini",
|
"model": "openai/gpt-4o-mini",
|
||||||
},
|
},
|
||||||
"verbose": True,
|
"verbose": True,
|
||||||
@ -99,33 +84,45 @@ graph_config = {
|
|||||||
|
|
||||||
# Create the SmartScraperGraph instance
|
# Create the SmartScraperGraph instance
|
||||||
smart_scraper_graph = SmartScraperGraph(
|
smart_scraper_graph = SmartScraperGraph(
|
||||||
prompt="Extract me all the news from the website",
|
prompt="Extract useful information from the webpage, including a description of what the company does, founders and social media links",
|
||||||
source="https://www.wired.com",
|
source="https://scrapegraphai.com/",
|
||||||
config=graph_config
|
config=graph_config
|
||||||
)
|
)
|
||||||
|
|
||||||
# Run the pipeline
|
# Run the pipeline
|
||||||
result = smart_scraper_graph.run()
|
result = smart_scraper_graph.run()
|
||||||
|
|
||||||
|
import json
|
||||||
print(json.dumps(result, indent=4))
|
print(json.dumps(result, indent=4))
|
||||||
```
|
```
|
||||||
|
|
||||||
The output will be a dictionary like the following:
|
The output will be a dictionary like the following:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
"result": {
|
{
|
||||||
"news": [
|
"description": "ScrapeGraphAI transforms websites into clean, organized data for AI agents and data analytics. It offers an AI-powered API for effortless and cost-effective data extraction.",
|
||||||
{
|
"founders": [
|
||||||
"title": "The New Jersey Drone Mystery May Not Actually Be That Mysterious",
|
{
|
||||||
"link": "https://www.wired.com/story/new-jersey-drone-mystery-maybe-not-drones/",
|
"name": "Marco Perini",
|
||||||
"author": "Lily Hay Newman"
|
"role": "Founder & Technical Lead",
|
||||||
},
|
"linkedin": "https://www.linkedin.com/in/perinim/"
|
||||||
{
|
},
|
||||||
"title": "Former ByteDance Intern Accused of Sabotage Among Winners of Prestigious AI Award",
|
{
|
||||||
"link": "https://www.wired.com/story/bytedance-intern-best-paper-neurips/",
|
"name": "Marco Vinciguerra",
|
||||||
"author": "Louise Matsakis"
|
"role": "Founder & Software Engineer",
|
||||||
},
|
"linkedin": "https://www.linkedin.com/in/marco-vinciguerra-7ba365242/"
|
||||||
...
|
},
|
||||||
]
|
{
|
||||||
|
"name": "Lorenzo Padoan",
|
||||||
|
"role": "Founder & Product Engineer",
|
||||||
|
"linkedin": "https://www.linkedin.com/in/lorenzo-padoan-4521a2154/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"social_media_links": {
|
||||||
|
"linkedin": "https://www.linkedin.com/company/101881123",
|
||||||
|
"twitter": "https://x.com/scrapegraphai",
|
||||||
|
"github": "https://github.com/ScrapeGraphAI/Scrapegraph-ai"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
There are other pipelines that can be used to extract information from multiple pages, generate Python scripts, or even generate audio files.
|
There are other pipelines that can be used to extract information from multiple pages, generate Python scripts, or even generate audio files.
|
||||||
@ -145,20 +142,30 @@ It is possible to use different LLM through APIs, such as **OpenAI**, **Groq**,
|
|||||||
|
|
||||||
Remember to have [Ollama](https://ollama.com/) installed and download the models using the **ollama pull** command, if you want to use local models.
|
Remember to have [Ollama](https://ollama.com/) installed and download the models using the **ollama pull** command, if you want to use local models.
|
||||||
|
|
||||||
## 🔍 Demo
|
|
||||||
Official streamlit demo:
|
|
||||||
|
|
||||||
[](https://scrapegraph-demo-demo.streamlit.app)
|
|
||||||
|
|
||||||
Try it directly on the web using Google Colab:
|
|
||||||
|
|
||||||
[](https://colab.research.google.com/drive/1sEZBonBMGP44CtO6GQTwAlL0BGJXjtfd?usp=sharing)
|
|
||||||
|
|
||||||
## 📖 Documentation
|
## 📖 Documentation
|
||||||
|
|
||||||
|
[](https://colab.research.google.com/drive/1sEZBonBMGP44CtO6GQTwAlL0BGJXjtfd?usp=sharing)
|
||||||
|
|
||||||
The documentation for ScrapeGraphAI can be found [here](https://scrapegraph-ai.readthedocs.io/en/latest/).
|
The documentation for ScrapeGraphAI can be found [here](https://scrapegraph-ai.readthedocs.io/en/latest/).
|
||||||
Check out also the Docusaurus [here](https://docs-oss.scrapegraphai.com/).
|
Check out also the Docusaurus [here](https://docs-oss.scrapegraphai.com/).
|
||||||
|
|
||||||
|
## 🔗 ScrapeGraph API & SDKs
|
||||||
|
If you are looking for a quick solution to integrate ScrapeGraph in your system, check out our powerful API [here!](https://dashboard.scrapegraphai.com/login)
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://raw.githubusercontent.com/VinciGit00/Scrapegraph-ai/main/docs/assets/api-banner.png" alt="ScrapeGraph API Banner" style="width: 100%;">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
We offer SDKs in both Python and Node.js, making it easy to integrate into your projects. Check them out below:
|
||||||
|
|
||||||
|
| SDK | Language | GitHub Link |
|
||||||
|
|-----------|----------|-----------------------------------------------------------------------------|
|
||||||
|
| Python SDK | Python | [scrapegraph-py](https://github.com/ScrapeGraphAI/scrapegraph-sdk/tree/main/scrapegraph-py) |
|
||||||
|
| Node.js SDK | Node.js | [scrapegraph-js](https://github.com/ScrapeGraphAI/scrapegraph-sdk/tree/main/scrapegraph-js) |
|
||||||
|
|
||||||
|
The Official API Documentation can be found [here](https://docs.scrapegraphai.com/).
|
||||||
|
|
||||||
## 🏆 Sponsors
|
## 🏆 Sponsors
|
||||||
<div style="text-align: center;">
|
<div style="text-align: center;">
|
||||||
<a href="https://2ly.link/1zaXG">
|
<a href="https://2ly.link/1zaXG">
|
||||||
|
|||||||
@ -32,13 +32,9 @@ dependencies = [
|
|||||||
"fastembed>=0.3.6",
|
"fastembed>=0.3.6",
|
||||||
"semchunk>=2.2.0",
|
"semchunk>=2.2.0",
|
||||||
"transformers>=4.44.2",
|
"transformers>=4.44.2",
|
||||||
"transformers>=4.44.2",
|
|
||||||
"googlesearch-python>=1.2.5",
|
"googlesearch-python>=1.2.5",
|
||||||
"async-timeout>=4.0.3",
|
"async-timeout>=4.0.3",
|
||||||
"transformers>=4.44.2",
|
|
||||||
"googlesearch-python>=1.2.5",
|
|
||||||
"simpleeval>=1.0.0",
|
"simpleeval>=1.0.0",
|
||||||
"async_timeout>=4.0.3",
|
|
||||||
"scrapegraph-py>=1.7.0"
|
"scrapegraph-py>=1.7.0"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@ -23,9 +23,6 @@ class ChromiumLoader(BaseLoader):
|
|||||||
requires_js_support: Flag to determine if JS rendering is required.
|
requires_js_support: Flag to determine if JS rendering is required.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
RETRY_LIMIT = 3
|
|
||||||
TIMEOUT = 10
|
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
urls: List[str],
|
urls: List[str],
|
||||||
@ -37,6 +34,8 @@ class ChromiumLoader(BaseLoader):
|
|||||||
requires_js_support: bool = False,
|
requires_js_support: bool = False,
|
||||||
storage_state: Optional[str] = None,
|
storage_state: Optional[str] = None,
|
||||||
browser_name: str = "chromium", #default chromium
|
browser_name: str = "chromium", #default chromium
|
||||||
|
retry_limit: int = 1,
|
||||||
|
timeout: int = 10,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
):
|
):
|
||||||
"""Initialize the loader with a list of URL paths.
|
"""Initialize the loader with a list of URL paths.
|
||||||
@ -47,6 +46,8 @@ class ChromiumLoader(BaseLoader):
|
|||||||
proxy: A dictionary containing proxy information; None disables protection.
|
proxy: A dictionary containing proxy information; None disables protection.
|
||||||
urls: A list of URLs to scrape content from.
|
urls: A list of URLs to scrape content from.
|
||||||
requires_js_support: Whether to use JS rendering for scraping.
|
requires_js_support: Whether to use JS rendering for scraping.
|
||||||
|
retry_limit: Maximum number of retry attempts for scraping. Defaults to 3.
|
||||||
|
timeout: Maximum time in seconds to wait for scraping. Defaults to 10.
|
||||||
kwargs: A dictionary containing additional browser kwargs.
|
kwargs: A dictionary containing additional browser kwargs.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
@ -68,12 +69,17 @@ class ChromiumLoader(BaseLoader):
|
|||||||
self.requires_js_support = requires_js_support
|
self.requires_js_support = requires_js_support
|
||||||
self.storage_state = storage_state
|
self.storage_state = storage_state
|
||||||
self.browser_name = browser_name
|
self.browser_name = browser_name
|
||||||
|
self.retry_limit = retry_limit
|
||||||
|
self.timeout = timeout
|
||||||
|
|
||||||
async def scrape(self, url:str) -> str:
|
async def scrape(self, url:str) -> str:
|
||||||
if self.backend == "playwright":
|
if self.backend == "playwright":
|
||||||
return await self.ascrape_playwright(url)
|
return await self.ascrape_playwright(url)
|
||||||
elif self.backend == "selenium":
|
elif self.backend == "selenium":
|
||||||
return await self.ascrape_undetected_chromedriver(url)
|
try:
|
||||||
|
return await self.ascrape_undetected_chromedriver(url)
|
||||||
|
except Exception as e:
|
||||||
|
raise ValueError(f"Failed to scrape with undetected chromedriver: {e}")
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unsupported backend: {self.backend}")
|
raise ValueError(f"Unsupported backend: {self.backend}")
|
||||||
|
|
||||||
@ -97,9 +103,9 @@ class ChromiumLoader(BaseLoader):
|
|||||||
results = ""
|
results = ""
|
||||||
attempt = 0
|
attempt = 0
|
||||||
|
|
||||||
while attempt < self.RETRY_LIMIT:
|
while attempt < self.retry_limit:
|
||||||
try:
|
try:
|
||||||
async with async_timeout.timeout(self.TIMEOUT):
|
async with async_timeout.timeout(self.timeout):
|
||||||
# Handling browser selection
|
# Handling browser selection
|
||||||
if self.backend == "selenium":
|
if self.backend == "selenium":
|
||||||
if self.browser_name == "chromium":
|
if self.browser_name == "chromium":
|
||||||
@ -134,9 +140,9 @@ class ChromiumLoader(BaseLoader):
|
|||||||
except (aiohttp.ClientError, asyncio.TimeoutError) as e:
|
except (aiohttp.ClientError, asyncio.TimeoutError) as e:
|
||||||
attempt += 1
|
attempt += 1
|
||||||
logger.error(f"Attempt {attempt} failed: {e}")
|
logger.error(f"Attempt {attempt} failed: {e}")
|
||||||
if attempt == self.RETRY_LIMIT:
|
if attempt == self.retry_limit:
|
||||||
results = (
|
results = (
|
||||||
f"Error: Network error after {self.RETRY_LIMIT} attempts - {e}"
|
f"Error: Network error after {self.retry_limit} attempts - {e}"
|
||||||
)
|
)
|
||||||
finally:
|
finally:
|
||||||
driver.quit()
|
driver.quit()
|
||||||
@ -204,7 +210,7 @@ class ChromiumLoader(BaseLoader):
|
|||||||
results = ""
|
results = ""
|
||||||
attempt = 0
|
attempt = 0
|
||||||
|
|
||||||
while attempt < self.RETRY_LIMIT:
|
while attempt < self.retry_limit:
|
||||||
try:
|
try:
|
||||||
async with async_playwright() as p:
|
async with async_playwright() as p:
|
||||||
browser = None
|
browser = None
|
||||||
@ -268,8 +274,8 @@ class ChromiumLoader(BaseLoader):
|
|||||||
except (aiohttp.ClientError, asyncio.TimeoutError, Exception) as e:
|
except (aiohttp.ClientError, asyncio.TimeoutError, Exception) as e:
|
||||||
attempt += 1
|
attempt += 1
|
||||||
logger.error(f"Attempt {attempt} failed: {e}")
|
logger.error(f"Attempt {attempt} failed: {e}")
|
||||||
if attempt == self.RETRY_LIMIT:
|
if attempt == self.retry_limit:
|
||||||
results = f"Error: Network error after {self.RETRY_LIMIT} attempts - {e}"
|
results = f"Error: Network error after {self.retry_limit} attempts - {e}"
|
||||||
finally:
|
finally:
|
||||||
await browser.close()
|
await browser.close()
|
||||||
|
|
||||||
@ -283,7 +289,11 @@ class ChromiumLoader(BaseLoader):
|
|||||||
url (str): The URL to scrape.
|
url (str): The URL to scrape.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: The scraped HTML content or an error message if an exception occurs.
|
str: The scraped HTML content
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
RuntimeError: When retry limit is reached without successful scraping
|
||||||
|
ValueError: When an invalid browser name is provided
|
||||||
"""
|
"""
|
||||||
from playwright.async_api import async_playwright
|
from playwright.async_api import async_playwright
|
||||||
from undetected_playwright import Malenia
|
from undetected_playwright import Malenia
|
||||||
@ -292,9 +302,9 @@ class ChromiumLoader(BaseLoader):
|
|||||||
results = ""
|
results = ""
|
||||||
attempt = 0
|
attempt = 0
|
||||||
|
|
||||||
while attempt < self.RETRY_LIMIT:
|
while attempt < self.retry_limit:
|
||||||
try:
|
try:
|
||||||
async with async_playwright() as p, async_timeout.timeout(self.TIMEOUT):
|
async with async_playwright() as p, async_timeout.timeout(self.timeout):
|
||||||
browser = None
|
browser = None
|
||||||
if browser_name == "chromium":
|
if browser_name == "chromium":
|
||||||
browser = await p.chromium.launch(
|
browser = await p.chromium.launch(
|
||||||
@ -315,22 +325,16 @@ class ChromiumLoader(BaseLoader):
|
|||||||
await page.wait_for_load_state(self.load_state)
|
await page.wait_for_load_state(self.load_state)
|
||||||
results = await page.content()
|
results = await page.content()
|
||||||
logger.info("Content scraped")
|
logger.info("Content scraped")
|
||||||
break
|
return results
|
||||||
except (aiohttp.ClientError, asyncio.TimeoutError, Exception) as e:
|
except (aiohttp.ClientError, asyncio.TimeoutError, Exception) as e:
|
||||||
attempt += 1
|
attempt += 1
|
||||||
logger.error(f"Attempt {attempt} failed: {e}")
|
logger.error(f"Attempt {attempt} failed: {e}")
|
||||||
if attempt == self.RETRY_LIMIT:
|
if attempt == self.retry_limit:
|
||||||
results = f"Error: Network error after {self.RETRY_LIMIT} attempts - {e}"
|
raise RuntimeError(f"Failed to scrape after {self.retry_limit} attempts: {str(e)}")
|
||||||
finally:
|
finally:
|
||||||
if "browser" in locals():
|
await browser.close()
|
||||||
await browser.close()
|
|
||||||
|
|
||||||
|
async def ascrape_with_js_support(self, url: str, browser_name: str = "chromium") -> str:
|
||||||
return results
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def ascrape_with_js_support(self, url: str , browser_name:str = "chromium") -> str:
|
|
||||||
"""
|
"""
|
||||||
Asynchronously scrape the content of a given URL by rendering JavaScript using Playwright.
|
Asynchronously scrape the content of a given URL by rendering JavaScript using Playwright.
|
||||||
|
|
||||||
@ -338,18 +342,20 @@ class ChromiumLoader(BaseLoader):
|
|||||||
url (str): The URL to scrape.
|
url (str): The URL to scrape.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: The fully rendered HTML content after JavaScript execution,
|
str: The fully rendered HTML content after JavaScript execution
|
||||||
or an error message if an exception occurs.
|
|
||||||
|
Raises:
|
||||||
|
RuntimeError: When retry limit is reached without successful scraping
|
||||||
|
ValueError: When an invalid browser name is provided
|
||||||
"""
|
"""
|
||||||
from playwright.async_api import async_playwright
|
from playwright.async_api import async_playwright
|
||||||
|
|
||||||
logger.info(f"Starting scraping with JavaScript support for {url}...")
|
logger.info(f"Starting scraping with JavaScript support for {url}...")
|
||||||
results = ""
|
|
||||||
attempt = 0
|
attempt = 0
|
||||||
|
|
||||||
while attempt < self.RETRY_LIMIT:
|
while attempt < self.retry_limit:
|
||||||
try:
|
try:
|
||||||
async with async_playwright() as p, async_timeout.timeout(self.TIMEOUT):
|
async with async_playwright() as p, async_timeout.timeout(self.timeout):
|
||||||
browser = None
|
browser = None
|
||||||
if browser_name == "chromium":
|
if browser_name == "chromium":
|
||||||
browser = await p.chromium.launch(
|
browser = await p.chromium.launch(
|
||||||
@ -368,19 +374,15 @@ class ChromiumLoader(BaseLoader):
|
|||||||
await page.goto(url, wait_until="networkidle")
|
await page.goto(url, wait_until="networkidle")
|
||||||
results = await page.content()
|
results = await page.content()
|
||||||
logger.info("Content scraped after JavaScript rendering")
|
logger.info("Content scraped after JavaScript rendering")
|
||||||
break
|
return results
|
||||||
except (aiohttp.ClientError, asyncio.TimeoutError, Exception) as e:
|
except (aiohttp.ClientError, asyncio.TimeoutError, Exception) as e:
|
||||||
attempt += 1
|
attempt += 1
|
||||||
logger.error(f"Attempt {attempt} failed: {e}")
|
logger.error(f"Attempt {attempt} failed: {e}")
|
||||||
if attempt == self.RETRY_LIMIT:
|
if attempt == self.retry_limit:
|
||||||
results = (
|
raise RuntimeError(f"Failed to scrape after {self.retry_limit} attempts: {str(e)}")
|
||||||
f"Error: Network error after {self.RETRY_LIMIT} attempts - {e}"
|
|
||||||
)
|
|
||||||
finally:
|
finally:
|
||||||
await browser.close()
|
await browser.close()
|
||||||
|
|
||||||
return results
|
|
||||||
|
|
||||||
def lazy_load(self) -> Iterator[Document]:
|
def lazy_load(self) -> Iterator[Document]:
|
||||||
"""
|
"""
|
||||||
Lazily load text content from the provided URLs.
|
Lazily load text content from the provided URLs.
|
||||||
|
|||||||
@ -12,10 +12,8 @@ from langchain_aws import ChatBedrock
|
|||||||
from langchain_community.chat_models import ChatOllama
|
from langchain_community.chat_models import ChatOllama
|
||||||
from tqdm import tqdm
|
from tqdm import tqdm
|
||||||
from .base_node import BaseNode
|
from .base_node import BaseNode
|
||||||
from ..utils.output_parser import get_structured_output_parser, get_pydantic_output_parser
|
from ..utils.output_parser import get_pydantic_output_parser
|
||||||
from requests.exceptions import Timeout
|
from requests.exceptions import Timeout
|
||||||
from langchain.callbacks.manager import CallbackManager
|
|
||||||
from langchain.callbacks import get_openai_callback
|
|
||||||
from ..prompts import (
|
from ..prompts import (
|
||||||
TEMPLATE_CHUNKS, TEMPLATE_NO_CHUNKS, TEMPLATE_MERGE,
|
TEMPLATE_CHUNKS, TEMPLATE_NO_CHUNKS, TEMPLATE_MERGE,
|
||||||
TEMPLATE_CHUNKS_MD, TEMPLATE_NO_CHUNKS_MD, TEMPLATE_MERGE_MD
|
TEMPLATE_CHUNKS_MD, TEMPLATE_NO_CHUNKS_MD, TEMPLATE_MERGE_MD
|
||||||
|
|||||||
@ -7,8 +7,7 @@ Classes:
|
|||||||
|
|
||||||
import threading
|
import threading
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from langchain_community.callbacks import get_openai_callback
|
from langchain_community.callbacks.manager import get_openai_callback, get_bedrock_anthropic_callback
|
||||||
from langchain_community.callbacks.manager import get_bedrock_anthropic_callback
|
|
||||||
from langchain_openai import ChatOpenAI, AzureChatOpenAI
|
from langchain_openai import ChatOpenAI, AzureChatOpenAI
|
||||||
from langchain_aws import ChatBedrock
|
from langchain_aws import ChatBedrock
|
||||||
from .custom_callback import get_custom_callback
|
from .custom_callback import get_custom_callback
|
||||||
|
|||||||
173
uv.lock
173
uv.lock
@ -1,21 +1,51 @@
|
|||||||
version = 1
|
version = 1
|
||||||
requires-python = ">=3.10, <4.0"
|
requires-python = ">=3.10, <4.0"
|
||||||
resolution-markers = [
|
resolution-markers = [
|
||||||
"python_full_version < '3.11' and sys_platform == 'darwin'",
|
"python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
"python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
"(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
"python_full_version == '3.11.*' and sys_platform == 'darwin'",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
"(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
"python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform == 'darwin'",
|
"(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
"(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
"python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform == 'darwin'",
|
"python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
"python_full_version >= '3.13' and sys_platform == 'darwin'",
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
"python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
"(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
|
"(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
|
"(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
|
"(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
|
"(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
|
"(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
|
"(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
|
"python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
|
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
|
"(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
|
"(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
|
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -222,12 +252,24 @@ name = "async-timeout"
|
|||||||
version = "4.0.3"
|
version = "4.0.3"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
resolution-markers = [
|
resolution-markers = [
|
||||||
"python_full_version < '3.11' and sys_platform == 'darwin'",
|
"python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
"python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
"(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
"python_full_version == '3.11.*' and sys_platform == 'darwin'",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
"(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
|
"(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version < '3.11' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
|
"(python_full_version < '3.11' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version < '3.11' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
|
"(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
|
"(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version == '3.11.*' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
|
"(python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version == '3.11.*' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/87/d6/21b30a550dafea84b1b8eee21b5e23fa16d010ae006011221f33dcd8d7f8/async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", size = 8345 }
|
sdist = { url = "https://files.pythonhosted.org/packages/87/d6/21b30a550dafea84b1b8eee21b5e23fa16d010ae006011221f33dcd8d7f8/async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", size = 8345 }
|
||||||
wheels = [
|
wheels = [
|
||||||
@ -239,15 +281,33 @@ name = "async-timeout"
|
|||||||
version = "5.0.1"
|
version = "5.0.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
resolution-markers = [
|
resolution-markers = [
|
||||||
"python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform == 'darwin'",
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
"(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
"python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform == 'darwin'",
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
"python_full_version >= '3.13' and sys_platform == 'darwin'",
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
"python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'",
|
"(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
"(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
|
"(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
|
"python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform == 'darwin'",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'darwin'",
|
||||||
|
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform == 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'darwin')",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Darwin' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform == 'linux'",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform == 'linux'",
|
||||||
|
"(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
|
"(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system == 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system == 'Darwin' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
"python_full_version >= '3.13' and platform_machine == 'aarch64' and platform_system == 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||||
|
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin' and sys_platform != 'darwin') or (python_full_version >= '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 }
|
||||||
wheels = [
|
wheels = [
|
||||||
@ -457,7 +517,7 @@ name = "click"
|
|||||||
version = "8.1.7"
|
version = "8.1.7"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
{ name = "colorama", marker = "platform_system == 'Windows'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 }
|
sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 }
|
||||||
wheels = [
|
wheels = [
|
||||||
@ -2461,7 +2521,7 @@ version = "2.10.2"
|
|||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "pygments" },
|
{ name = "pygments" },
|
||||||
{ name = "pywin32", marker = "sys_platform == 'win32'" },
|
{ name = "pywin32", marker = "platform_system == 'Windows'" },
|
||||||
{ name = "tqdm" },
|
{ name = "tqdm" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/3a/93/80ac75c20ce54c785648b4ed363c88f148bf22637e10c9863db4fbe73e74/mpire-2.10.2.tar.gz", hash = "sha256:f66a321e93fadff34585a4bfa05e95bd946cf714b442f51c529038eb45773d97", size = 271270 }
|
sdist = { url = "https://files.pythonhosted.org/packages/3a/93/80ac75c20ce54c785648b4ed363c88f148bf22637e10c9863db4fbe73e74/mpire-2.10.2.tar.gz", hash = "sha256:f66a321e93fadff34585a4bfa05e95bd946cf714b442f51c529038eb45773d97", size = 271270 }
|
||||||
@ -2675,7 +2735,7 @@ name = "nvidia-cudnn-cu12"
|
|||||||
version = "9.1.0.70"
|
version = "9.1.0.70"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
{ name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and platform_system != 'Darwin') or (platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" },
|
||||||
]
|
]
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/9f/fd/713452cd72343f682b1c7b9321e23829f00b842ceaedcda96e742ea0b0b3/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f", size = 664752741 },
|
{ url = "https://files.pythonhosted.org/packages/9f/fd/713452cd72343f682b1c7b9321e23829f00b842ceaedcda96e742ea0b0b3/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f", size = 664752741 },
|
||||||
@ -2686,7 +2746,7 @@ name = "nvidia-cufft-cu12"
|
|||||||
version = "11.2.1.3"
|
version = "11.2.1.3"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and platform_system != 'Darwin') or (platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" },
|
||||||
]
|
]
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/7a/8a/0e728f749baca3fbeffad762738276e5df60851958be7783af121a7221e7/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5dad8008fc7f92f5ddfa2101430917ce2ffacd86824914c82e28990ad7f00399", size = 211422548 },
|
{ url = "https://files.pythonhosted.org/packages/7a/8a/0e728f749baca3fbeffad762738276e5df60851958be7783af121a7221e7/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5dad8008fc7f92f5ddfa2101430917ce2ffacd86824914c82e28990ad7f00399", size = 211422548 },
|
||||||
@ -2707,9 +2767,9 @@ name = "nvidia-cusolver-cu12"
|
|||||||
version = "11.6.1.9"
|
version = "11.6.1.9"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
{ name = "nvidia-cublas-cu12", marker = "(platform_machine != 'aarch64' and platform_system != 'Darwin') or (platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" },
|
||||||
{ name = "nvidia-cusparse-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
{ name = "nvidia-cusparse-cu12", marker = "(platform_machine != 'aarch64' and platform_system != 'Darwin') or (platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" },
|
||||||
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and platform_system != 'Darwin') or (platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" },
|
||||||
]
|
]
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/46/6b/a5c33cf16af09166845345275c34ad2190944bcc6026797a39f8e0a282e0/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d338f155f174f90724bbde3758b7ac375a70ce8e706d70b018dd3375545fc84e", size = 127634111 },
|
{ url = "https://files.pythonhosted.org/packages/46/6b/a5c33cf16af09166845345275c34ad2190944bcc6026797a39f8e0a282e0/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d338f155f174f90724bbde3758b7ac375a70ce8e706d70b018dd3375545fc84e", size = 127634111 },
|
||||||
@ -2721,7 +2781,7 @@ name = "nvidia-cusparse-cu12"
|
|||||||
version = "12.3.1.170"
|
version = "12.3.1.170"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and platform_system != 'Darwin') or (platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" },
|
||||||
]
|
]
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/96/a9/c0d2f83a53d40a4a41be14cea6a0bf9e668ffcf8b004bd65633f433050c0/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9d32f62896231ebe0480efd8a7f702e143c98cfaa0e8a76df3386c1ba2b54df3", size = 207381987 },
|
{ url = "https://files.pythonhosted.org/packages/96/a9/c0d2f83a53d40a4a41be14cea6a0bf9e668ffcf8b004bd65633f433050c0/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9d32f62896231ebe0480efd8a7f702e143c98cfaa0e8a76df3386c1ba2b54df3", size = 207381987 },
|
||||||
@ -3132,7 +3192,7 @@ name = "portalocker"
|
|||||||
version = "2.10.1"
|
version = "2.10.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "pywin32", marker = "sys_platform == 'win32'" },
|
{ name = "pywin32", marker = "platform_system == 'Windows'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/ed/d3/c6c64067759e87af98cc668c1cc75171347d0f1577fab7ca3749134e3cd4/portalocker-2.10.1.tar.gz", hash = "sha256:ef1bf844e878ab08aee7e40184156e1151f228f103aa5c6bd0724cc330960f8f", size = 40891 }
|
sdist = { url = "https://files.pythonhosted.org/packages/ed/d3/c6c64067759e87af98cc668c1cc75171347d0f1577fab7ca3749134e3cd4/portalocker-2.10.1.tar.gz", hash = "sha256:ef1bf844e878ab08aee7e40184156e1151f228f103aa5c6bd0724cc330960f8f", size = 40891 }
|
||||||
wheels = [
|
wheels = [
|
||||||
@ -4081,8 +4141,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "scrapegraphai"
|
name = "scrapegraphai"
|
||||||
version = "1.34.0b11"
|
version = "1.34.0b15"
|
||||||
|
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "async-timeout", version = "4.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
|
{ name = "async-timeout", version = "4.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" },
|
||||||
@ -4567,7 +4626,7 @@ dependencies = [
|
|||||||
{ name = "toml" },
|
{ name = "toml" },
|
||||||
{ name = "tornado" },
|
{ name = "tornado" },
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
{ name = "watchdog", marker = "sys_platform != 'darwin'" },
|
{ name = "watchdog", marker = "platform_system != 'Darwin'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/b0/e5/2bf2daa9c98658f1474bb64e7de030cbc4182b5f2b2196536efedaef02cb/streamlit-1.40.2.tar.gz", hash = "sha256:0cc131fc9b18065feaff8f6f241c81164ad37d8d9e3a85499a0240aaaf6a6a61", size = 8265763 }
|
sdist = { url = "https://files.pythonhosted.org/packages/b0/e5/2bf2daa9c98658f1474bb64e7de030cbc4182b5f2b2196536efedaef02cb/streamlit-1.40.2.tar.gz", hash = "sha256:0cc131fc9b18065feaff8f6f241c81164ad37d8d9e3a85499a0240aaaf6a6a61", size = 8265763 }
|
||||||
wheels = [
|
wheels = [
|
||||||
@ -4771,21 +4830,21 @@ dependencies = [
|
|||||||
{ name = "fsspec" },
|
{ name = "fsspec" },
|
||||||
{ name = "jinja2" },
|
{ name = "jinja2" },
|
||||||
{ name = "networkx" },
|
{ name = "networkx" },
|
||||||
{ name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "setuptools", marker = "python_full_version >= '3.12'" },
|
{ name = "setuptools", marker = "python_full_version >= '3.12'" },
|
||||||
{ name = "sympy" },
|
{ name = "sympy" },
|
||||||
{ name = "triton", marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
{ name = "triton", marker = "python_full_version < '3.13' and platform_machine == 'x86_64' and platform_system == 'Linux'" },
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
]
|
]
|
||||||
wheels = [
|
wheels = [
|
||||||
@ -4827,7 +4886,7 @@ name = "tqdm"
|
|||||||
version = "4.67.1"
|
version = "4.67.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
{ name = "colorama", marker = "platform_system == 'Windows'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 }
|
||||||
wheels = [
|
wheels = [
|
||||||
@ -4869,7 +4928,7 @@ name = "triton"
|
|||||||
version = "3.1.0"
|
version = "3.1.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "filelock", marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')" },
|
{ name = "filelock", marker = "(python_full_version < '3.13' and platform_machine != 'aarch64' and platform_system != 'Darwin') or (python_full_version < '3.13' and platform_system != 'Darwin' and platform_system != 'Linux' and sys_platform != 'linux')" },
|
||||||
]
|
]
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/98/29/69aa56dc0b2eb2602b553881e34243475ea2afd9699be042316842788ff5/triton-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b0dd10a925263abbe9fa37dcde67a5e9b2383fc269fdf59f5657cac38c5d1d8", size = 209460013 },
|
{ url = "https://files.pythonhosted.org/packages/98/29/69aa56dc0b2eb2602b553881e34243475ea2afd9699be042316842788ff5/triton-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b0dd10a925263abbe9fa37dcde67a5e9b2383fc269fdf59f5657cac38c5d1d8", size = 209460013 },
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user