Spaces:
No application file
No application file
Commit ·
758273a
1
Parent(s): 345fd89
wokring
Browse files- pyproject.toml +3 -0
- src/_agents.py +137 -10
- src/main.py +82 -36
- src/utils/image-generation.py +174 -47
- uv.lock +460 -0
pyproject.toml
CHANGED
|
@@ -8,6 +8,9 @@ dependencies = [
|
|
| 8 |
"google>=3.0.0",
|
| 9 |
"google-genai>=1.31.0",
|
| 10 |
"huggingface-hub>=0.34.4",
|
|
|
|
|
|
|
|
|
|
| 11 |
"langfuse>=3.3.4",
|
| 12 |
"nest-asyncio>=1.6.0",
|
| 13 |
"openai-agents>=0.2.8",
|
|
|
|
| 8 |
"google>=3.0.0",
|
| 9 |
"google-genai>=1.31.0",
|
| 10 |
"huggingface-hub>=0.34.4",
|
| 11 |
+
"ipython>=9.5.0",
|
| 12 |
+
"langchain>=0.3.27",
|
| 13 |
+
"langchain-core>=0.3.75",
|
| 14 |
"langfuse>=3.3.4",
|
| 15 |
"nest-asyncio>=1.6.0",
|
| 16 |
"openai-agents>=0.2.8",
|
src/_agents.py
CHANGED
|
@@ -1,20 +1,40 @@
|
|
| 1 |
from agents import Agent, RunContextWrapper
|
| 2 |
from model import get_model
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
|
| 4 |
|
| 5 |
#----------------------- content agent ----------------------------------
|
| 6 |
|
| 7 |
def content_prompt(context: RunContextWrapper, agent: Agent):
|
| 8 |
-
"""You are a
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
-
|
| 14 |
-
-
|
| 15 |
-
-
|
| 16 |
-
-
|
| 17 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
"""
|
| 19 |
|
| 20 |
|
|
@@ -35,8 +55,115 @@ content_agent = Agent(
|
|
| 35 |
|
| 36 |
|
| 37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
|
| 40 |
|
| 41 |
|
|
|
|
|
|
|
| 42 |
|
|
|
|
|
|
| 1 |
from agents import Agent, RunContextWrapper
|
| 2 |
from model import get_model
|
| 3 |
+
import os
|
| 4 |
+
from dotenv import load_dotenv
|
| 5 |
+
from agents import Agent, AsyncOpenAI, Runner,function_tool, AgentHooks, TContext
|
| 6 |
+
from model import get_model
|
| 7 |
+
from contextlib import AsyncExitStack
|
| 8 |
+
from agents.mcp.server import MCPServerStdio, MCPServerStdioParams
|
| 9 |
+
from agents.mcp import ToolFilterContext, create_static_tool_filter
|
| 10 |
+
import asyncio
|
| 11 |
+
import uuid
|
| 12 |
+
import base64
|
| 13 |
+
from typing import Any
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
|
| 18 |
|
| 19 |
|
| 20 |
#----------------------- content agent ----------------------------------
|
| 21 |
|
| 22 |
def content_prompt(context: RunContextWrapper, agent: Agent):
|
| 23 |
+
"""You are a social media Content Writer Agent.
|
| 24 |
+
You will be provided a raw text on which you need to create a content of social media post.
|
| 25 |
+
Your task is to transform a user's idea, event, or announcement into a highly engaging post tailored for the specified platform.
|
| 26 |
+
|
| 27 |
+
Instructions:
|
| 28 |
+
- The user query will indicate the platform (LinkedIn, Twitter/X, Instagram, Facebook, etc.). Adjust tone, style, and length accordingly.
|
| 29 |
+
- LinkedIn: professional, insightful, concise.
|
| 30 |
+
- Twitter/X: short, punchy, with impactful hashtags.
|
| 31 |
+
- Instagram: friendly, visual, creative, with hashtags.
|
| 32 |
+
- Facebook: approachable, slightly longer, storytelling style.
|
| 33 |
+
- Begin with a compelling hook or headline.
|
| 34 |
+
- Write a concise, engaging body (2-5 sentences) that conveys the key message.
|
| 35 |
+
- Include 3-6 relevant, trending hashtags appropriate for the platform.
|
| 36 |
+
- End with a clear, platform-suitable call-to-action (CTA), e.g., “Join the discussion”, “Check it out”, “Comment below”.
|
| 37 |
+
- Ensure readability: short sentences, scannable text, and consistent tone.
|
| 38 |
"""
|
| 39 |
|
| 40 |
|
|
|
|
| 55 |
|
| 56 |
|
| 57 |
|
| 58 |
+
#----------------------- Web Browser agent ---------------------------Start----------------
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
@function_tool
|
| 64 |
+
def save_temp_screenshot(image_data: str, is_base64: bool = True) -> str:
|
| 65 |
+
"""
|
| 66 |
+
Save a screenshot to the tmpshot folder.
|
| 67 |
+
|
| 68 |
+
Args:
|
| 69 |
+
image_data: Either base64 string (default) or raw bytes.
|
| 70 |
+
is_base64: Set True if input is base64, False if raw bytes.
|
| 71 |
+
|
| 72 |
+
Returns:
|
| 73 |
+
str: Path to the saved screenshot.
|
| 74 |
+
"""
|
| 75 |
+
print(image_data, is_base64)
|
| 76 |
+
# Ensure folder exists
|
| 77 |
+
folder = "tmpshot"
|
| 78 |
+
os.makedirs(folder, exist_ok=True)
|
| 79 |
+
|
| 80 |
+
# Generate unique filename
|
| 81 |
+
filename = f"screenshot_{uuid.uuid4().hex}.png"
|
| 82 |
+
path = os.path.join(folder, filename)
|
| 83 |
+
|
| 84 |
+
# Decode and save
|
| 85 |
+
if is_base64:
|
| 86 |
+
with open(path, "wb") as f:
|
| 87 |
+
f.write(base64.b64decode(image_data))
|
| 88 |
+
else:
|
| 89 |
+
with open(path, "wb") as f:
|
| 90 |
+
f.write(image_data)
|
| 91 |
+
|
| 92 |
+
return path
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
def site_analyzer_prompt():
|
| 96 |
+
|
| 97 |
+
return """
|
| 98 |
+
You are Site Analyzer, which extract the details for a website.
|
| 99 |
+
|
| 100 |
+
- Your role is to analyze a webpage and always return three things:
|
| 101 |
+
1. Raw visible text from the page.
|
| 102 |
+
2. Extract only the 4-5 most frequent distinct colors from the page's CSS as theme colors, and indicate whether the overall theme is dark or light.
|
| 103 |
+
3. A screenshot of the page saved via the `save_temp_screenshot` function for design/theme analysis.
|
| 104 |
+
|
| 105 |
+
- Must follow these *STEPS* in order to complete the task:
|
| 106 |
+
1 Open the webpage in a browser.
|
| 107 |
+
2. Navigate to the given URL with browser_navigate.
|
| 108 |
+
3. Wait for the body to load using browser_wait_for 2 seconds.
|
| 109 |
+
4. Extract raw text using browser_evaluate with `document.body.innerText`.
|
| 110 |
+
5. Extract color themes using browser_evaluate with `getComputedStyle`.
|
| 111 |
+
6. Capture a screenshot with browser_take_screenshot with fullPage=False.
|
| 112 |
+
|
| 113 |
+
- Final Output Format (MUST be JSON only):
|
| 114 |
+
```json
|
| 115 |
+
{
|
| 116 |
+
"raw_text": "...raw text...",
|
| 117 |
+
"theme":{
|
| 118 |
+
"type": "dark"|"light"
|
| 119 |
+
"colors": ["#RRGGBB", "rgb(...)", ...],
|
| 120 |
+
},
|
| 121 |
+
"screenshot_file_name": "<screenshot file name returned by browser_take_screenshot>"
|
| 122 |
+
}
|
| 123 |
+
"""
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
|
| 128 |
+
async def custom_filter(context: ToolFilterContext, tool) -> bool:
|
| 129 |
+
# Only allow tools that start with "mood"
|
| 130 |
+
return context.agent.name == "site_analyzer_agent" and (tool.name == 'browser_navigate' or tool.name == 'browser_wait_for' or tool.name == 'browser_evaluate' or tool.name == 'browser_take_screenshot')
|
| 131 |
+
|
| 132 |
+
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
|
| 136 |
+
async def get_site_analyzer_agent():
|
| 137 |
+
async with MCPServerStdio(
|
| 138 |
+
# params=MCPServerStdioParams(
|
| 139 |
+
# command="npx",
|
| 140 |
+
# args=["@playwright/mcp@latest", "--output-dir", "./tmpshot", "--headless"],
|
| 141 |
+
# ), name="Playwrite",
|
| 142 |
+
# client_session_timeout_seconds=30,
|
| 143 |
+
params={
|
| 144 |
+
"command": "npx",
|
| 145 |
+
"args": ["@playwright/mcp@latest", "--output-dir", "./tmpshot", "--headless"],
|
| 146 |
+
},
|
| 147 |
+
tool_filter=create_static_tool_filter(
|
| 148 |
+
allowed_tool_names=["browser_navigate", "browser_wait_for", "browser_evaluate", "browser_take_screenshot", "write_file"]
|
| 149 |
+
)
|
| 150 |
+
) as playwrite_client:
|
| 151 |
+
|
| 152 |
+
|
| 153 |
+
site_analyzer_agent = Agent(
|
| 154 |
+
name="site_analyzer_agent",
|
| 155 |
+
instructions=site_analyzer_prompt(),
|
| 156 |
+
model=get_model('gemini-2.0-flash'),
|
| 157 |
+
mcp_servers=[playwrite_client],
|
| 158 |
+
)
|
| 159 |
+
|
| 160 |
+
return site_analyzer_agent, playwrite_client
|
| 161 |
+
|
| 162 |
|
| 163 |
|
| 164 |
|
| 165 |
|
| 166 |
+
# if __name__ == "__main__":
|
| 167 |
+
# asyncio.run(create_browser_agent())
|
| 168 |
|
| 169 |
+
#----------------------- Web Browser agent ---------------------------END----------------
|
src/main.py
CHANGED
|
@@ -1,14 +1,18 @@
|
|
| 1 |
import os
|
| 2 |
import asyncio
|
| 3 |
from dataclasses import dataclass
|
| 4 |
-
from agents import set_tracing_disabled, Runner, SQLiteSession
|
| 5 |
-
from _agents import content_agent
|
| 6 |
from pydantic import BaseModel, Field, ConfigDict
|
|
|
|
| 7 |
from typing import Optional
|
| 8 |
import nest_asyncio
|
| 9 |
import logfire
|
| 10 |
from langfuse import get_client
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
# set_tracing_disabled(disabled=True)
|
| 14 |
|
|
@@ -37,56 +41,98 @@ else:
|
|
| 37 |
|
| 38 |
|
| 39 |
|
|
|
|
| 40 |
class AgentContext(BaseModel):
|
| 41 |
user_input: Optional[str] = Field(default=None,description="The input provided by the user to the agent.")
|
| 42 |
post_content: Optional[str] = Field(default=None,description="The generated content for the post.")
|
| 43 |
-
|
| 44 |
model_config= ConfigDict(extra='forbid')
|
| 45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
async def main():
|
| 47 |
print("Hello from smpg!")
|
| 48 |
-
|
| 49 |
session = SQLiteSession("conversation_123")
|
| 50 |
|
| 51 |
agent_context = AgentContext(
|
| 52 |
user_input="Write a LinkedIn post about the importance of AI in modern business strategies."
|
| 53 |
)
|
| 54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
|
|
|
|
|
|
|
|
|
|
| 56 |
|
| 57 |
-
#
|
| 58 |
-
#
|
| 59 |
-
#
|
| 60 |
-
|
| 61 |
-
#
|
| 62 |
-
#
|
| 63 |
-
|
| 64 |
-
#
|
| 65 |
-
#
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
# ),
|
| 69 |
-
# french_agent.as_tool(
|
| 70 |
-
# tool_name="translate_to_french",
|
| 71 |
-
# tool_description="Translate the user's message to French",
|
| 72 |
-
# ),
|
| 73 |
-
# italian_agent.as_tool(
|
| 74 |
-
# tool_name="translate_to_italian",
|
| 75 |
-
# tool_description="Translate the user's message to Italian",
|
| 76 |
-
# ),
|
| 77 |
-
# ],
|
| 78 |
-
# model=model
|
| 79 |
-
# )
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
result = await Runner.run(content_agent, context=agent_context, input=agent_context.user_input, session=session ,max_turns=5)
|
| 84 |
-
|
| 85 |
-
agent_context.post_content = result.final_output
|
| 86 |
-
print("Generated Post Content:")
|
| 87 |
-
print(agent_context.post_content)
|
| 88 |
|
| 89 |
|
| 90 |
|
| 91 |
if __name__ == "__main__":
|
|
|
|
|
|
|
|
|
|
| 92 |
asyncio.run(main())
|
|
|
|
| 1 |
import os
|
| 2 |
import asyncio
|
| 3 |
from dataclasses import dataclass
|
| 4 |
+
from agents import set_tracing_disabled, Runner, SQLiteSession, Agent, AgentHooks, RunContextWrapper, TContext
|
| 5 |
+
from _agents import content_agent, get_site_analyzer_agent
|
| 6 |
from pydantic import BaseModel, Field, ConfigDict
|
| 7 |
+
from model import get_model
|
| 8 |
from typing import Optional
|
| 9 |
import nest_asyncio
|
| 10 |
import logfire
|
| 11 |
from langfuse import get_client
|
| 12 |
+
import shutil
|
| 13 |
+
from typing import Any
|
| 14 |
+
|
| 15 |
+
|
| 16 |
|
| 17 |
# set_tracing_disabled(disabled=True)
|
| 18 |
|
|
|
|
| 41 |
|
| 42 |
|
| 43 |
|
| 44 |
+
|
| 45 |
class AgentContext(BaseModel):
|
| 46 |
user_input: Optional[str] = Field(default=None,description="The input provided by the user to the agent.")
|
| 47 |
post_content: Optional[str] = Field(default=None,description="The generated content for the post.")
|
| 48 |
+
raw_text: Optional[str] = Field(default=None,description="Raw text extracted from web pages.")
|
| 49 |
model_config= ConfigDict(extra='forbid')
|
| 50 |
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
class MyAgentHooks(AgentHooks):
|
| 54 |
+
async def on_tool_start(self, context, agent, output):
|
| 55 |
+
print(f"Agent {agent.name} finished with output: {output}")
|
| 56 |
+
async def on_start(self, context, agent):
|
| 57 |
+
print(f"Agent {agent.name} started.")
|
| 58 |
+
|
| 59 |
+
|
| 60 |
async def main():
|
| 61 |
print("Hello from smpg!")
|
|
|
|
| 62 |
session = SQLiteSession("conversation_123")
|
| 63 |
|
| 64 |
agent_context = AgentContext(
|
| 65 |
user_input="Write a LinkedIn post about the importance of AI in modern business strategies."
|
| 66 |
)
|
| 67 |
|
| 68 |
+
site_analyzer_agent, playwrite_client = await get_site_analyzer_agent()
|
| 69 |
+
|
| 70 |
+
orchestrator_agent = Agent(
|
| 71 |
+
name="orchestrator_agent",
|
| 72 |
+
instructions="""You are the Orchestrator Agent for social media post creation.
|
| 73 |
+
Your task is to coordinate multiple agents to produce a complete social media post.
|
| 74 |
+
|
| 75 |
+
Steps:
|
| 76 |
+
1. Receive user input including a brief and a URL.
|
| 77 |
+
2. Call the Site Analysis Agent to extract key details from the URL.
|
| 78 |
+
3. Pass the extracted text and user brief to the Content Agent to generate engaging platform-specific post text.
|
| 79 |
+
4. Provide the generated content and relevant details to the Media Generation Agent to create images or media.
|
| 80 |
+
5. Combine all outputs into a coherent final post suitable for the requested platform.
|
| 81 |
+
|
| 82 |
+
Rules:
|
| 83 |
+
- Do not generate text or media yourself.
|
| 84 |
+
- Always follow the above order.
|
| 85 |
+
- Validate each agent's output before proceeding to the next step.
|
| 86 |
+
- Ask the user for clarification only if the input is missing or ambiguous.""",
|
| 87 |
+
tools=[
|
| 88 |
+
content_agent.as_tool(
|
| 89 |
+
tool_name="content_agent",
|
| 90 |
+
tool_description="""
|
| 91 |
+
Generates engaging social media post content based on user input and extracted text.
|
| 92 |
+
Input: A brief description and raw text from the Site Analysis Agent.
|
| 93 |
+
"""
|
| 94 |
+
),
|
| 95 |
+
site_analyzer_agent.as_tool(
|
| 96 |
+
tool_name="site_analyzer_agent",
|
| 97 |
+
tool_description="""Analyzes a webpage and extracts key details such as raw text, theme colors, and a screenshot.
|
| 98 |
+
Input: A valid URL to analyze.
|
| 99 |
+
Output: JSON with raw text, theme colors, and screenshot file name.
|
| 100 |
+
"""
|
| 101 |
+
),
|
| 102 |
+
],
|
| 103 |
+
model=get_model('gemini-2.0-flash'),
|
| 104 |
+
hooks=MyAgentHooks(),
|
| 105 |
+
)
|
| 106 |
+
|
| 107 |
+
result = await Runner.run(orchestrator_agent,
|
| 108 |
+
input="""
|
| 109 |
+
Create a LinkedIn post about the importance of AI in modern business strategies.
|
| 110 |
+
Website URL : https://denovers.com
|
| 111 |
+
""" ,
|
| 112 |
+
)
|
| 113 |
+
print(result)
|
| 114 |
+
playwrite_client.cleanup()
|
| 115 |
|
| 116 |
+
|
| 117 |
+
|
| 118 |
+
# result = await Runner.run(content_agent, context=agent_context, input=agent_context.user_input, session=session ,max_turns=5)
|
| 119 |
|
| 120 |
+
# agent_context.post_content = result.final_output
|
| 121 |
+
# print("Generated Post Content:")
|
| 122 |
+
# print(agent_context.post_content)
|
| 123 |
+
|
| 124 |
+
# result = await Runner.run(site_analyzer_agent, input="URL : https://www.denovers.com, give raw_text, theme and screenshot_name" ,max_turns=15)
|
| 125 |
+
# print(result)
|
| 126 |
+
|
| 127 |
+
# agent_context.raw_text = result.final_output
|
| 128 |
+
# print(agent_context.raw_text)
|
| 129 |
+
|
| 130 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 131 |
|
| 132 |
|
| 133 |
|
| 134 |
if __name__ == "__main__":
|
| 135 |
+
if not shutil.which("npx"):
|
| 136 |
+
raise RuntimeError("npx is not installed. Please install it with `npm install -g npx`.")
|
| 137 |
+
|
| 138 |
asyncio.run(main())
|
src/utils/image-generation.py
CHANGED
|
@@ -3,6 +3,14 @@ import re
|
|
| 3 |
from google import genai
|
| 4 |
from huggingface_hub import InferenceClient
|
| 5 |
from dotenv import load_dotenv, find_dotenv
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
|
| 7 |
_: bool = load_dotenv(find_dotenv())
|
| 8 |
|
|
@@ -12,14 +20,19 @@ client = genai.Client(
|
|
| 12 |
)
|
| 13 |
|
| 14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
aspect_ratios = {
|
| 16 |
-
"1:1": (
|
| 17 |
-
"16:9": (
|
| 18 |
-
"9:16": (928, 1664),
|
| 19 |
-
"4:3": (1472, 1140),
|
| 20 |
-
"3:4": (1140, 1472),
|
| 21 |
-
"3:2": (1584, 1056),
|
| 22 |
-
"2:3": (1056, 1584),
|
| 23 |
}
|
| 24 |
|
| 25 |
hf_client = InferenceClient(
|
|
@@ -28,17 +41,42 @@ hf_client = InferenceClient(
|
|
| 28 |
)
|
| 29 |
|
| 30 |
|
| 31 |
-
def generate_json_from_idea(idea: str, defaultValues:str) -> str:
|
| 32 |
-
"""Generates a detailed JSON prompt from a simple idea using a Gemini model."""
|
| 33 |
-
|
| 34 |
-
# The prompt template includes the desired JSON schema structure.
|
| 35 |
-
schema_template = """Convert the attached user idea into a detailed JSON object for generating an image. The output should only be the raw JSON object, without any markdown formatting like ```json ... ```.
|
| 36 |
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
-
|
| 40 |
|
| 41 |
-
|
| 42 |
{{
|
| 43 |
"meta": {{
|
| 44 |
"styleName": "...", // A unique, descriptive name for this specific image style or preset (e.g., "Ethereal Forest Magic", "Cyberpunk Noir Alley").
|
|
@@ -97,15 +135,56 @@ Schema:
|
|
| 97 |
}}
|
| 98 |
}}
|
| 99 |
"""
|
| 100 |
-
prompt = schema_template.format(idea=idea,defaultValues=defaultValues)
|
| 101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 102 |
response = client.models.generate_content(
|
| 103 |
model="gemini-2.5-pro",
|
| 104 |
contents=prompt,
|
|
|
|
| 105 |
)
|
| 106 |
|
| 107 |
-
print(response
|
| 108 |
-
|
|
|
|
|
|
|
|
|
|
| 109 |
|
| 110 |
|
| 111 |
def generate_images(
|
|
@@ -114,6 +193,7 @@ def generate_images(
|
|
| 114 |
aspectRatio: str = "1:1", # "1:1", "3:4", "4:3", "9:16", and "16:9".
|
| 115 |
output_dir: str = "images",
|
| 116 |
num_images: int = 1,
|
|
|
|
| 117 |
):
|
| 118 |
"""Generates images using Imagen and saves them to the output directory."""
|
| 119 |
|
|
@@ -130,32 +210,48 @@ def generate_images(
|
|
| 130 |
# ),
|
| 131 |
# )
|
| 132 |
|
| 133 |
-
width, height = aspect_ratios[aspectRatio]
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
|
|
|
|
|
|
|
|
|
|
| 140 |
)
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 159 |
|
| 160 |
except Exception as e:
|
| 161 |
print(f"An error occurred during image generation: {e}")
|
|
@@ -171,15 +267,37 @@ def generate(
|
|
| 171 |
os.makedirs(output_dir, exist_ok=True)
|
| 172 |
|
| 173 |
ideaJson = generate_json_from_idea(idea,f"aspect_ratio:{aspectRatio}")
|
| 174 |
-
|
| 175 |
generate_images(
|
|
|
|
| 176 |
idea=idea,
|
| 177 |
prompt=f"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 178 |
{idea}
|
| 179 |
|
| 180 |
-
|
| 181 |
-
{ideaJson}
|
| 182 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 183 |
""",
|
| 184 |
aspectRatio="1:1",
|
| 185 |
output_dir=output_dir,
|
|
@@ -187,6 +305,9 @@ def generate(
|
|
| 187 |
)
|
| 188 |
|
| 189 |
|
|
|
|
|
|
|
|
|
|
| 190 |
if __name__ == "__main__":
|
| 191 |
ideas = [
|
| 192 |
# "A energy drink with water drops on it, ultra realistic, for a commercial.",
|
|
@@ -199,7 +320,13 @@ if __name__ == "__main__":
|
|
| 199 |
# "A magical man with sparkling pink hair and large from an anime.",
|
| 200 |
# "A cartoon robot waving happily, with a simple, bold outline and bright, flat colors. ",
|
| 201 |
# "A full-body character sheet of a realistic pirate captain, showing front, back, and side views.",
|
| 202 |
-
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
]
|
| 204 |
|
| 205 |
for idea in ideas:
|
|
|
|
| 3 |
from google import genai
|
| 4 |
from huggingface_hub import InferenceClient
|
| 5 |
from dotenv import load_dotenv, find_dotenv
|
| 6 |
+
from pydantic import BaseModel, Field, ConfigDict
|
| 7 |
+
from langchain_core.output_parsers import JsonOutputParser
|
| 8 |
+
import json
|
| 9 |
+
import time
|
| 10 |
+
|
| 11 |
+
from PIL import Image
|
| 12 |
+
from io import BytesIO
|
| 13 |
+
from IPython.display import display
|
| 14 |
|
| 15 |
_: bool = load_dotenv(find_dotenv())
|
| 16 |
|
|
|
|
| 20 |
)
|
| 21 |
|
| 22 |
|
| 23 |
+
# aspect_ratios = {
|
| 24 |
+
# "1:1": (1328, 1328),
|
| 25 |
+
# "16:9": (1664, 928),
|
| 26 |
+
# "9:16": (928, 1664),
|
| 27 |
+
# "4:3": (1472, 1140),
|
| 28 |
+
# "3:4": (1140, 1472),
|
| 29 |
+
# "3:2": (1584, 1056),
|
| 30 |
+
# "2:3": (1056, 1584),
|
| 31 |
+
# }
|
| 32 |
+
|
| 33 |
aspect_ratios = {
|
| 34 |
+
"1:1": (1200, 1200), # Standard LinkedIn square post
|
| 35 |
+
"16:9": (1200, 627), # LinkedIn horizontal post
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
}
|
| 37 |
|
| 38 |
hf_client = InferenceClient(
|
|
|
|
| 41 |
)
|
| 42 |
|
| 43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
+
post_schema = """{
|
| 46 |
+
"meta": {
|
| 47 |
+
"platform": "LinkedIn | Instagram | Twitter | TikTok",
|
| 48 |
+
"aspectRatio": "1:1 | 16:9 | 9:16 | 4:5",
|
| 49 |
+
"style": "Modern | Minimal | Bold | Corporate | Playful"
|
| 50 |
+
},
|
| 51 |
+
"brand": {
|
| 52 |
+
"company": "Company Name",
|
| 53 |
+
"logo": "Include | Exclude",
|
| 54 |
+
"colors": ["#HEX1", "#HEX2", "#HEX3"]
|
| 55 |
+
},
|
| 56 |
+
"content": {
|
| 57 |
+
"headline": "Main text (max 8 words)",
|
| 58 |
+
"subtext": "Optional supporting line (max 15 words)",
|
| 59 |
+
"tone": "Professional | Inspirational | Energetic | Friendly"
|
| 60 |
+
},
|
| 61 |
+
"visuals": {
|
| 62 |
+
"primarySubject": "Headline with abstract icons | Infographic shapes | Product mockup",
|
| 63 |
+
"elements": ["Icons", "Illustrations", "Charts", "Abstract shapes"],
|
| 64 |
+
"composition": "Centered | Rule of Thirds | Balanced layout"
|
| 65 |
+
},
|
| 66 |
+
"design": {
|
| 67 |
+
"typography": "Bold, clean, sans-serif | Minimal serif",
|
| 68 |
+
"contrast": "High | Medium",
|
| 69 |
+
"background": "Solid color | Gradient | Abstract"
|
| 70 |
+
},
|
| 71 |
+
"finishing": {
|
| 72 |
+
"quality": "Ultra-sharp, high-resolution",
|
| 73 |
+
"effects": "Subtle shadows | Soft gradients | None"
|
| 74 |
+
}
|
| 75 |
+
}
|
| 76 |
|
| 77 |
+
"""
|
| 78 |
|
| 79 |
+
normal_schema = """
|
| 80 |
{{
|
| 81 |
"meta": {{
|
| 82 |
"styleName": "...", // A unique, descriptive name for this specific image style or preset (e.g., "Ethereal Forest Magic", "Cyberpunk Noir Alley").
|
|
|
|
| 135 |
}}
|
| 136 |
}}
|
| 137 |
"""
|
|
|
|
| 138 |
|
| 139 |
+
|
| 140 |
+
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
def generate_json_from_idea(user_input: str, defaultValues:str) -> dict:
|
| 144 |
+
"""Generates a detailed JSON prompt from a simple idea using a Gemini model."""
|
| 145 |
+
|
| 146 |
+
# The prompt template includes the desired JSON schema structure.
|
| 147 |
+
schema_template = """
|
| 148 |
+
You are a professional creative director preparing a design brief for a graphic designer or an AI image generation model.
|
| 149 |
+
The user will give you a topic, idea, or post concept. Your task is to create a structured, detailed, and clear **image brief** that a designer can immediately use to create the visual.
|
| 150 |
+
|
| 151 |
+
Steps to follow:
|
| 152 |
+
1. Understand the user query and extract the main theme and goal.
|
| 153 |
+
2. Specify a **headline** (4–10 words, bold, attention-grabbing).
|
| 154 |
+
3. Write a **subtext** (1–2 sentences, persuasive or explanatory).
|
| 155 |
+
4. Suggest **visual style / mood** (e.g., modern, bold, minimal, futuristic, playful, professional, corporate).
|
| 156 |
+
5. Recommend **visual elements** (icons, illustrations, product mockups, abstract shapes, characters).
|
| 157 |
+
6. Suggest a **color palette** (2–3 colors, HEX or descriptive names).
|
| 158 |
+
7. Provide **layout guidance** (hierarchy: headline first, subtext second, CTA last, placement of visuals).
|
| 159 |
+
8. Optionally, include a **call-to-action** (if relevant).
|
| 160 |
+
|
| 161 |
+
User's input: "{user_input}"
|
| 162 |
+
|
| 163 |
+
defaultValues:{defaultValues}
|
| 164 |
+
Schema:
|
| 165 |
+
{post_schema}
|
| 166 |
+
|
| 167 |
+
The output should only be the raw JSON object, without any markdown formatting like ```json ... ```.
|
| 168 |
+
Output format:
|
| 169 |
+
imagefileName: str = name for the image file
|
| 170 |
+
image_brief: str = detailed image brief for designer/AI
|
| 171 |
+
generatedSchema: dict = generated schema
|
| 172 |
+
"""
|
| 173 |
+
|
| 174 |
+
prompt = schema_template.format(user_input=user_input,defaultValues=defaultValues,post_schema=post_schema, )
|
| 175 |
+
|
| 176 |
+
|
| 177 |
response = client.models.generate_content(
|
| 178 |
model="gemini-2.5-pro",
|
| 179 |
contents=prompt,
|
| 180 |
+
|
| 181 |
)
|
| 182 |
|
| 183 |
+
print(response)
|
| 184 |
+
data = JsonOutputParser().invoke(response.text)
|
| 185 |
+
|
| 186 |
+
print(data)
|
| 187 |
+
return data
|
| 188 |
|
| 189 |
|
| 190 |
def generate_images(
|
|
|
|
| 193 |
aspectRatio: str = "1:1", # "1:1", "3:4", "4:3", "9:16", and "16:9".
|
| 194 |
output_dir: str = "images",
|
| 195 |
num_images: int = 1,
|
| 196 |
+
file_name: str = "",
|
| 197 |
):
|
| 198 |
"""Generates images using Imagen and saves them to the output directory."""
|
| 199 |
|
|
|
|
| 210 |
# ),
|
| 211 |
# )
|
| 212 |
|
| 213 |
+
# width, height = aspect_ratios[aspectRatio]
|
| 214 |
+
# print(width, height)
|
| 215 |
+
# response = hf_client.text_to_image(
|
| 216 |
+
# prompt=prompt,
|
| 217 |
+
# negative_prompt="social media logos, LinkedIn icon, Instagram logo, Twitter logo, browser bars, fake UI, buttons, links, gibberish text, distorted fonts",
|
| 218 |
+
# model="Qwen/Qwen-Image",
|
| 219 |
+
# width=width,
|
| 220 |
+
# height=height,
|
| 221 |
+
# guidance_scale=10.0,
|
| 222 |
+
|
| 223 |
+
# )
|
| 224 |
+
# print(response)
|
| 225 |
|
| 226 |
+
response = client.models.generate_content(
|
| 227 |
+
model="gemini-2.5-flash-image-preview",
|
| 228 |
+
contents=prompt,
|
| 229 |
)
|
| 230 |
+
|
| 231 |
+
image_parts = [
|
| 232 |
+
part.inline_data.data
|
| 233 |
+
for part in response.candidates[0].content.parts
|
| 234 |
+
if part.inline_data
|
| 235 |
+
]
|
| 236 |
+
|
| 237 |
+
if image_parts:
|
| 238 |
+
image = Image.open(BytesIO(image_parts[0]))
|
| 239 |
+
timestamp = str(int(time.time()))
|
| 240 |
+
image_path = os.path.join(output_dir, f"{file_name}-{timestamp}.png")
|
| 241 |
+
image.save(image_path)
|
| 242 |
+
with open(os.path.join(output_dir, f"{file_name}.json"), "w") as f:
|
| 243 |
+
f.write(prompt)
|
| 244 |
+
print(f"Saved image and prompt to {image_path}")
|
| 245 |
+
display(image)
|
| 246 |
+
|
| 247 |
+
# clean_idea = (re.sub(r"[^a-zA-Z0-9\s]", "", idea[:30]).lower().replace(" ", "-"))
|
| 248 |
+
# timestamp = str(int(time.time()))
|
| 249 |
+
# image_path = os.path.join(output_dir, f"{file_name}-{timestamp}.png")
|
| 250 |
+
# response.save(image_path)
|
| 251 |
+
# with open(os.path.join(output_dir, f"{file_name}.json"), "w") as f:
|
| 252 |
+
# f.write(prompt)
|
| 253 |
+
# print(f"Saved image and prompt to {image_path}")
|
| 254 |
+
|
| 255 |
|
| 256 |
except Exception as e:
|
| 257 |
print(f"An error occurred during image generation: {e}")
|
|
|
|
| 267 |
os.makedirs(output_dir, exist_ok=True)
|
| 268 |
|
| 269 |
ideaJson = generate_json_from_idea(idea,f"aspect_ratio:{aspectRatio}")
|
| 270 |
+
|
| 271 |
generate_images(
|
| 272 |
+
file_name=ideaJson.get("imagefileName", "image"),
|
| 273 |
idea=idea,
|
| 274 |
prompt=f"""
|
| 275 |
+
You are a professional social media graphic designer AI specialized in creating high-quality, visually striking images for social media posts.
|
| 276 |
+
Your goal is to generate attention-grabbing, brand-aligned images that clearly communicate the given message.
|
| 277 |
+
|
| 278 |
+
Guidelines:
|
| 279 |
+
- Style: Modern, clean, bold typography, high contrast, professional and visually engaging.
|
| 280 |
+
- Composition: Balanced layout with focal points, readable text placement, and strong visual hierarchy.
|
| 281 |
+
- Colors: Use brand-relevant palettes, with consistent tones suitable for LinkedIn/Twitter/Instagram audiences.
|
| 282 |
+
- Typography: Ensure clear, legible fonts with strong emphasis for headlines.
|
| 283 |
+
- Elements: Use relevant icons, illustrations, or abstract visuals to reinforce the message. Avoid clutter.
|
| 284 |
+
- Aspect Ratios: Default to 1:1 (Instagram/LinkedIn) unless otherwise specified. Optionally support 16:9 (Twitter, YouTube) and 9:16 (Stories/Reels).
|
| 285 |
+
- Text handling: Highlight key message with 4-10 words max, never overcrowd.
|
| 286 |
+
- Do NOT include watermarks, stock photo watermarks, or irrelevant artifacts.
|
| 287 |
+
- Quality: Ultra-sharp, high-resolution, and aesthetically polished for professional social media usage.
|
| 288 |
+
|
| 289 |
+
|
| 290 |
+
|
| 291 |
+
User's input:
|
| 292 |
{idea}
|
| 293 |
|
| 294 |
+
Image brief: Follow these steps to create the image
|
| 295 |
+
{ideaJson.get("image_brief", "")}
|
| 296 |
+
|
| 297 |
+
Schema (use this structured format when interpreting inputs/brief):
|
| 298 |
+
{ideaJson.get("generatedSchema", {})}
|
| 299 |
+
|
| 300 |
+
|
| 301 |
""",
|
| 302 |
aspectRatio="1:1",
|
| 303 |
output_dir=output_dir,
|
|
|
|
| 305 |
)
|
| 306 |
|
| 307 |
|
| 308 |
+
|
| 309 |
+
|
| 310 |
+
|
| 311 |
if __name__ == "__main__":
|
| 312 |
ideas = [
|
| 313 |
# "A energy drink with water drops on it, ultra realistic, for a commercial.",
|
|
|
|
| 320 |
# "A magical man with sparkling pink hair and large from an anime.",
|
| 321 |
# "A cartoon robot waving happily, with a simple, bold outline and bright, flat colors. ",
|
| 322 |
# "A full-body character sheet of a realistic pirate captain, showing front, back, and side views.",
|
| 323 |
+
"""
|
| 324 |
+
Create a media for posting on linkedin plateform, make it modren and professional.
|
| 325 |
+
|
| 326 |
+
companydetails:
|
| 327 |
+
Design Atom is a subscription-based design service tailored for AI and tech startups, offering comprehensive product design, branding, and web development solutions. With a fixed monthly rate, dedicated designers, and fast 4-hour average turnaround times, they have completed over 200 projects, helped clients raise $45M+, and reached 100M+ users with their designs. Trusted by 45+ global companies, including Y Combinator-backed startups, Design Atom delivers startup-proven results, streamlining UX, boosting retention, and enhancing conversions. Their free design trial eliminates bottlenecks, supporting startups in building investor-ready, user-friendly products.
|
| 328 |
+
|
| 329 |
+
"""
|
| 330 |
]
|
| 331 |
|
| 332 |
for idea in ideas:
|
uv.lock
CHANGED
|
@@ -153,6 +153,15 @@ wheels = [
|
|
| 153 |
{ url = "https://files.pythonhosted.org/packages/31/da/e42d7a9d8dd33fa775f467e4028a47936da2f01e4b0e561f9ba0d74cb0ca/argcomplete-3.6.2-py3-none-any.whl", hash = "sha256:65b3133a29ad53fb42c48cf5114752c7ab66c1c38544fdf6460f450c09b42591", size = 43708 },
|
| 154 |
]
|
| 155 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
[[package]]
|
| 157 |
name = "attrs"
|
| 158 |
version = "25.3.0"
|
|
@@ -324,6 +333,15 @@ wheels = [
|
|
| 324 |
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
|
| 325 |
]
|
| 326 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 327 |
[[package]]
|
| 328 |
name = "distro"
|
| 329 |
version = "1.9.0"
|
|
@@ -547,6 +565,48 @@ wheels = [
|
|
| 547 |
{ url = "https://files.pythonhosted.org/packages/86/f1/62a193f0227cf15a920390abe675f386dec35f7ae3ffe6da582d3ade42c7/googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8", size = 294530 },
|
| 548 |
]
|
| 549 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 550 |
[[package]]
|
| 551 |
name = "griffe"
|
| 552 |
version = "1.12.1"
|
|
@@ -691,6 +751,52 @@ wheels = [
|
|
| 691 |
{ url = "https://files.pythonhosted.org/packages/0a/66/7f8c48009c72d73bc6bbe6eb87ac838d6a526146f7dab14af671121eb379/invoke-2.2.0-py3-none-any.whl", hash = "sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820", size = 160274 },
|
| 692 |
]
|
| 693 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 694 |
[[package]]
|
| 695 |
name = "jiter"
|
| 696 |
version = "0.10.0"
|
|
@@ -760,6 +866,27 @@ wheels = [
|
|
| 760 |
{ url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 },
|
| 761 |
]
|
| 762 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 763 |
[[package]]
|
| 764 |
name = "jsonschema"
|
| 765 |
version = "4.25.1"
|
|
@@ -787,6 +914,54 @@ wheels = [
|
|
| 787 |
{ url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 },
|
| 788 |
]
|
| 789 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 790 |
[[package]]
|
| 791 |
name = "langfuse"
|
| 792 |
version = "3.3.4"
|
|
@@ -807,6 +982,24 @@ wheels = [
|
|
| 807 |
{ url = "https://files.pythonhosted.org/packages/dc/46/edd370d47ca72ed4ca36b3c3b8f3a4ce71a310629d0bcb6ed760b04b08b1/langfuse-3.3.4-py3-none-any.whl", hash = "sha256:15b9d20878cf39a48ca9cfa7e52acdfeb043603d3a9cef8cf451687a4d838c6b", size = 318389 },
|
| 808 |
]
|
| 809 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 810 |
[[package]]
|
| 811 |
name = "logfire"
|
| 812 |
version = "4.4.0"
|
|
@@ -851,6 +1044,18 @@ wheels = [
|
|
| 851 |
{ url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321 },
|
| 852 |
]
|
| 853 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 854 |
[[package]]
|
| 855 |
name = "mcp"
|
| 856 |
version = "1.13.0"
|
|
@@ -1161,6 +1366,70 @@ wheels = [
|
|
| 1161 |
{ url = "https://files.pythonhosted.org/packages/0b/a6/b98d508d189b9c208f5978d0906141747d7e6df7c7cafec03657ed1ed559/opentelemetry_util_http-0.57b0-py3-none-any.whl", hash = "sha256:e54c0df5543951e471c3d694f85474977cd5765a3b7654398c83bab3d2ffb8e9", size = 7643 },
|
| 1162 |
]
|
| 1163 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1164 |
[[package]]
|
| 1165 |
name = "packaging"
|
| 1166 |
version = "25.0"
|
|
@@ -1170,6 +1439,27 @@ wheels = [
|
|
| 1170 |
{ url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 },
|
| 1171 |
]
|
| 1172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1173 |
[[package]]
|
| 1174 |
name = "pillow"
|
| 1175 |
version = "11.3.0"
|
|
@@ -1353,6 +1643,24 @@ wheels = [
|
|
| 1353 |
{ url = "https://files.pythonhosted.org/packages/7e/cc/7e77861000a0691aeea8f4566e5d3aa716f2b1dece4a24439437e41d3d25/protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5", size = 172823 },
|
| 1354 |
]
|
| 1355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1356 |
[[package]]
|
| 1357 |
name = "pyasn1"
|
| 1358 |
version = "0.6.1"
|
|
@@ -1713,6 +2021,18 @@ wheels = [
|
|
| 1713 |
{ url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738 },
|
| 1714 |
]
|
| 1715 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1716 |
[[package]]
|
| 1717 |
name = "rich"
|
| 1718 |
version = "14.1.0"
|
|
@@ -1875,6 +2195,9 @@ dependencies = [
|
|
| 1875 |
{ name = "google" },
|
| 1876 |
{ name = "google-genai" },
|
| 1877 |
{ name = "huggingface-hub" },
|
|
|
|
|
|
|
|
|
|
| 1878 |
{ name = "langfuse" },
|
| 1879 |
{ name = "nest-asyncio" },
|
| 1880 |
{ name = "openai-agents" },
|
|
@@ -1888,6 +2211,9 @@ requires-dist = [
|
|
| 1888 |
{ name = "google", specifier = ">=3.0.0" },
|
| 1889 |
{ name = "google-genai", specifier = ">=1.31.0" },
|
| 1890 |
{ name = "huggingface-hub", specifier = ">=0.34.4" },
|
|
|
|
|
|
|
|
|
|
| 1891 |
{ name = "langfuse", specifier = ">=3.3.4" },
|
| 1892 |
{ name = "nest-asyncio", specifier = ">=1.6.0" },
|
| 1893 |
{ name = "openai-agents", specifier = ">=0.2.8" },
|
|
@@ -1914,6 +2240,43 @@ wheels = [
|
|
| 1914 |
{ url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 },
|
| 1915 |
]
|
| 1916 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1917 |
[[package]]
|
| 1918 |
name = "sse-starlette"
|
| 1919 |
version = "3.0.2"
|
|
@@ -1926,6 +2289,20 @@ wheels = [
|
|
| 1926 |
{ url = "https://files.pythonhosted.org/packages/ef/10/c78f463b4ef22eef8491f218f692be838282cd65480f6e423d7730dfd1fb/sse_starlette-3.0.2-py3-none-any.whl", hash = "sha256:16b7cbfddbcd4eaca11f7b586f3b8a080f1afe952c15813455b162edea619e5a", size = 11297 },
|
| 1927 |
]
|
| 1928 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1929 |
[[package]]
|
| 1930 |
name = "starlette"
|
| 1931 |
version = "0.47.2"
|
|
@@ -2004,6 +2381,15 @@ wheels = [
|
|
| 2004 |
{ url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 },
|
| 2005 |
]
|
| 2006 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2007 |
[[package]]
|
| 2008 |
name = "types-protobuf"
|
| 2009 |
version = "6.30.2.20250822"
|
|
@@ -2268,3 +2654,77 @@ sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50e
|
|
| 2268 |
wheels = [
|
| 2269 |
{ url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276 },
|
| 2270 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
{ url = "https://files.pythonhosted.org/packages/31/da/e42d7a9d8dd33fa775f467e4028a47936da2f01e4b0e561f9ba0d74cb0ca/argcomplete-3.6.2-py3-none-any.whl", hash = "sha256:65b3133a29ad53fb42c48cf5114752c7ab66c1c38544fdf6460f450c09b42591", size = 43708 },
|
| 154 |
]
|
| 155 |
|
| 156 |
+
[[package]]
|
| 157 |
+
name = "asttokens"
|
| 158 |
+
version = "3.0.0"
|
| 159 |
+
source = { registry = "https://pypi.org/simple" }
|
| 160 |
+
sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 }
|
| 161 |
+
wheels = [
|
| 162 |
+
{ url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 },
|
| 163 |
+
]
|
| 164 |
+
|
| 165 |
[[package]]
|
| 166 |
name = "attrs"
|
| 167 |
version = "25.3.0"
|
|
|
|
| 333 |
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
|
| 334 |
]
|
| 335 |
|
| 336 |
+
[[package]]
|
| 337 |
+
name = "decorator"
|
| 338 |
+
version = "5.2.1"
|
| 339 |
+
source = { registry = "https://pypi.org/simple" }
|
| 340 |
+
sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 }
|
| 341 |
+
wheels = [
|
| 342 |
+
{ url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 },
|
| 343 |
+
]
|
| 344 |
+
|
| 345 |
[[package]]
|
| 346 |
name = "distro"
|
| 347 |
version = "1.9.0"
|
|
|
|
| 565 |
{ url = "https://files.pythonhosted.org/packages/86/f1/62a193f0227cf15a920390abe675f386dec35f7ae3ffe6da582d3ade42c7/googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8", size = 294530 },
|
| 566 |
]
|
| 567 |
|
| 568 |
+
[[package]]
|
| 569 |
+
name = "greenlet"
|
| 570 |
+
version = "3.2.4"
|
| 571 |
+
source = { registry = "https://pypi.org/simple" }
|
| 572 |
+
sdist = { url = "https://files.pythonhosted.org/packages/03/b8/704d753a5a45507a7aab61f18db9509302ed3d0a27ac7e0359ec2905b1a6/greenlet-3.2.4.tar.gz", hash = "sha256:0dca0d95ff849f9a364385f36ab49f50065d76964944638be9691e1832e9f86d", size = 188260 }
|
| 573 |
+
wheels = [
|
| 574 |
+
{ url = "https://files.pythonhosted.org/packages/a4/de/f28ced0a67749cac23fecb02b694f6473f47686dff6afaa211d186e2ef9c/greenlet-3.2.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:96378df1de302bc38e99c3a9aa311967b7dc80ced1dcc6f171e99842987882a2", size = 272305 },
|
| 575 |
+
{ url = "https://files.pythonhosted.org/packages/09/16/2c3792cba130000bf2a31c5272999113f4764fd9d874fb257ff588ac779a/greenlet-3.2.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1ee8fae0519a337f2329cb78bd7a8e128ec0f881073d43f023c7b8d4831d5246", size = 632472 },
|
| 576 |
+
{ url = "https://files.pythonhosted.org/packages/ae/8f/95d48d7e3d433e6dae5b1682e4292242a53f22df82e6d3dda81b1701a960/greenlet-3.2.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:94abf90142c2a18151632371140b3dba4dee031633fe614cb592dbb6c9e17bc3", size = 644646 },
|
| 577 |
+
{ url = "https://files.pythonhosted.org/packages/d5/5e/405965351aef8c76b8ef7ad370e5da58d57ef6068df197548b015464001a/greenlet-3.2.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:4d1378601b85e2e5171b99be8d2dc85f594c79967599328f95c1dc1a40f1c633", size = 640519 },
|
| 578 |
+
{ url = "https://files.pythonhosted.org/packages/25/5d/382753b52006ce0218297ec1b628e048c4e64b155379331f25a7316eb749/greenlet-3.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0db5594dce18db94f7d1650d7489909b57afde4c580806b8d9203b6e79cdc079", size = 639707 },
|
| 579 |
+
{ url = "https://files.pythonhosted.org/packages/1f/8e/abdd3f14d735b2929290a018ecf133c901be4874b858dd1c604b9319f064/greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8", size = 587684 },
|
| 580 |
+
{ url = "https://files.pythonhosted.org/packages/5d/65/deb2a69c3e5996439b0176f6651e0052542bb6c8f8ec2e3fba97c9768805/greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52", size = 1116647 },
|
| 581 |
+
{ url = "https://files.pythonhosted.org/packages/3f/cc/b07000438a29ac5cfb2194bfc128151d52f333cee74dd7dfe3fb733fc16c/greenlet-3.2.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:55e9c5affaa6775e2c6b67659f3a71684de4c549b3dd9afca3bc773533d284fa", size = 1142073 },
|
| 582 |
+
{ url = "https://files.pythonhosted.org/packages/d8/0f/30aef242fcab550b0b3520b8e3561156857c94288f0332a79928c31a52cf/greenlet-3.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:9c40adce87eaa9ddb593ccb0fa6a07caf34015a29bf8d344811665b573138db9", size = 299100 },
|
| 583 |
+
{ url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079 },
|
| 584 |
+
{ url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997 },
|
| 585 |
+
{ url = "https://files.pythonhosted.org/packages/3b/16/035dcfcc48715ccd345f3a93183267167cdd162ad123cd93067d86f27ce4/greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968", size = 655185 },
|
| 586 |
+
{ url = "https://files.pythonhosted.org/packages/31/da/0386695eef69ffae1ad726881571dfe28b41970173947e7c558d9998de0f/greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9", size = 649926 },
|
| 587 |
+
{ url = "https://files.pythonhosted.org/packages/68/88/69bf19fd4dc19981928ceacbc5fd4bb6bc2215d53199e367832e98d1d8fe/greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6", size = 651839 },
|
| 588 |
+
{ url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586 },
|
| 589 |
+
{ url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281 },
|
| 590 |
+
{ url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142 },
|
| 591 |
+
{ url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899 },
|
| 592 |
+
{ url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814 },
|
| 593 |
+
{ url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073 },
|
| 594 |
+
{ url = "https://files.pythonhosted.org/packages/f7/0b/bc13f787394920b23073ca3b6c4a7a21396301ed75a655bcb47196b50e6e/greenlet-3.2.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:710638eb93b1fa52823aa91bf75326f9ecdfd5e0466f00789246a5280f4ba0fc", size = 655191 },
|
| 595 |
+
{ url = "https://files.pythonhosted.org/packages/f2/d6/6adde57d1345a8d0f14d31e4ab9c23cfe8e2cd39c3baf7674b4b0338d266/greenlet-3.2.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c5111ccdc9c88f423426df3fd1811bfc40ed66264d35aa373420a34377efc98a", size = 649516 },
|
| 596 |
+
{ url = "https://files.pythonhosted.org/packages/7f/3b/3a3328a788d4a473889a2d403199932be55b1b0060f4ddd96ee7cdfcad10/greenlet-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76383238584e9711e20ebe14db6c88ddcedc1829a9ad31a584389463b5aa504", size = 652169 },
|
| 597 |
+
{ url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497 },
|
| 598 |
+
{ url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662 },
|
| 599 |
+
{ url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210 },
|
| 600 |
+
{ url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685 },
|
| 601 |
+
{ url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586 },
|
| 602 |
+
{ url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346 },
|
| 603 |
+
{ url = "https://files.pythonhosted.org/packages/c0/aa/687d6b12ffb505a4447567d1f3abea23bd20e73a5bed63871178e0831b7a/greenlet-3.2.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c17b6b34111ea72fc5a4e4beec9711d2226285f0386ea83477cbb97c30a3f3a5", size = 699218 },
|
| 604 |
+
{ url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659 },
|
| 605 |
+
{ url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355 },
|
| 606 |
+
{ url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512 },
|
| 607 |
+
{ url = "https://files.pythonhosted.org/packages/e3/a5/6ddab2b4c112be95601c13428db1d8b6608a8b6039816f2ba09c346c08fc/greenlet-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:e37ab26028f12dbb0ff65f29a8d3d44a765c61e729647bf2ddfbbed621726f01", size = 303425 },
|
| 608 |
+
]
|
| 609 |
+
|
| 610 |
[[package]]
|
| 611 |
name = "griffe"
|
| 612 |
version = "1.12.1"
|
|
|
|
| 751 |
{ url = "https://files.pythonhosted.org/packages/0a/66/7f8c48009c72d73bc6bbe6eb87ac838d6a526146f7dab14af671121eb379/invoke-2.2.0-py3-none-any.whl", hash = "sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820", size = 160274 },
|
| 752 |
]
|
| 753 |
|
| 754 |
+
[[package]]
|
| 755 |
+
name = "ipython"
|
| 756 |
+
version = "9.5.0"
|
| 757 |
+
source = { registry = "https://pypi.org/simple" }
|
| 758 |
+
dependencies = [
|
| 759 |
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
| 760 |
+
{ name = "decorator" },
|
| 761 |
+
{ name = "ipython-pygments-lexers" },
|
| 762 |
+
{ name = "jedi" },
|
| 763 |
+
{ name = "matplotlib-inline" },
|
| 764 |
+
{ name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
|
| 765 |
+
{ name = "prompt-toolkit" },
|
| 766 |
+
{ name = "pygments" },
|
| 767 |
+
{ name = "stack-data" },
|
| 768 |
+
{ name = "traitlets" },
|
| 769 |
+
{ name = "typing-extensions", marker = "python_full_version < '3.12'" },
|
| 770 |
+
]
|
| 771 |
+
sdist = { url = "https://files.pythonhosted.org/packages/6e/71/a86262bf5a68bf211bcc71fe302af7e05f18a2852fdc610a854d20d085e6/ipython-9.5.0.tar.gz", hash = "sha256:129c44b941fe6d9b82d36fc7a7c18127ddb1d6f02f78f867f402e2e3adde3113", size = 4389137 }
|
| 772 |
+
wheels = [
|
| 773 |
+
{ url = "https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl", hash = "sha256:88369ffa1d5817d609120daa523a6da06d02518e582347c29f8451732a9c5e72", size = 612426 },
|
| 774 |
+
]
|
| 775 |
+
|
| 776 |
+
[[package]]
|
| 777 |
+
name = "ipython-pygments-lexers"
|
| 778 |
+
version = "1.1.1"
|
| 779 |
+
source = { registry = "https://pypi.org/simple" }
|
| 780 |
+
dependencies = [
|
| 781 |
+
{ name = "pygments" },
|
| 782 |
+
]
|
| 783 |
+
sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 }
|
| 784 |
+
wheels = [
|
| 785 |
+
{ url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 },
|
| 786 |
+
]
|
| 787 |
+
|
| 788 |
+
[[package]]
|
| 789 |
+
name = "jedi"
|
| 790 |
+
version = "0.19.2"
|
| 791 |
+
source = { registry = "https://pypi.org/simple" }
|
| 792 |
+
dependencies = [
|
| 793 |
+
{ name = "parso" },
|
| 794 |
+
]
|
| 795 |
+
sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 }
|
| 796 |
+
wheels = [
|
| 797 |
+
{ url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 },
|
| 798 |
+
]
|
| 799 |
+
|
| 800 |
[[package]]
|
| 801 |
name = "jiter"
|
| 802 |
version = "0.10.0"
|
|
|
|
| 866 |
{ url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 },
|
| 867 |
]
|
| 868 |
|
| 869 |
+
[[package]]
|
| 870 |
+
name = "jsonpatch"
|
| 871 |
+
version = "1.33"
|
| 872 |
+
source = { registry = "https://pypi.org/simple" }
|
| 873 |
+
dependencies = [
|
| 874 |
+
{ name = "jsonpointer" },
|
| 875 |
+
]
|
| 876 |
+
sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699 }
|
| 877 |
+
wheels = [
|
| 878 |
+
{ url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898 },
|
| 879 |
+
]
|
| 880 |
+
|
| 881 |
+
[[package]]
|
| 882 |
+
name = "jsonpointer"
|
| 883 |
+
version = "3.0.0"
|
| 884 |
+
source = { registry = "https://pypi.org/simple" }
|
| 885 |
+
sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 }
|
| 886 |
+
wheels = [
|
| 887 |
+
{ url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 },
|
| 888 |
+
]
|
| 889 |
+
|
| 890 |
[[package]]
|
| 891 |
name = "jsonschema"
|
| 892 |
version = "4.25.1"
|
|
|
|
| 914 |
{ url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 },
|
| 915 |
]
|
| 916 |
|
| 917 |
+
[[package]]
|
| 918 |
+
name = "langchain"
|
| 919 |
+
version = "0.3.27"
|
| 920 |
+
source = { registry = "https://pypi.org/simple" }
|
| 921 |
+
dependencies = [
|
| 922 |
+
{ name = "langchain-core" },
|
| 923 |
+
{ name = "langchain-text-splitters" },
|
| 924 |
+
{ name = "langsmith" },
|
| 925 |
+
{ name = "pydantic" },
|
| 926 |
+
{ name = "pyyaml" },
|
| 927 |
+
{ name = "requests" },
|
| 928 |
+
{ name = "sqlalchemy" },
|
| 929 |
+
]
|
| 930 |
+
sdist = { url = "https://files.pythonhosted.org/packages/83/f6/f4f7f3a56626fe07e2bb330feb61254dbdf06c506e6b59a536a337da51cf/langchain-0.3.27.tar.gz", hash = "sha256:aa6f1e6274ff055d0fd36254176770f356ed0a8994297d1df47df341953cec62", size = 10233809 }
|
| 931 |
+
wheels = [
|
| 932 |
+
{ url = "https://files.pythonhosted.org/packages/f6/d5/4861816a95b2f6993f1360cfb605aacb015506ee2090433a71de9cca8477/langchain-0.3.27-py3-none-any.whl", hash = "sha256:7b20c4f338826acb148d885b20a73a16e410ede9ee4f19bb02011852d5f98798", size = 1018194 },
|
| 933 |
+
]
|
| 934 |
+
|
| 935 |
+
[[package]]
|
| 936 |
+
name = "langchain-core"
|
| 937 |
+
version = "0.3.75"
|
| 938 |
+
source = { registry = "https://pypi.org/simple" }
|
| 939 |
+
dependencies = [
|
| 940 |
+
{ name = "jsonpatch" },
|
| 941 |
+
{ name = "langsmith" },
|
| 942 |
+
{ name = "packaging" },
|
| 943 |
+
{ name = "pydantic" },
|
| 944 |
+
{ name = "pyyaml" },
|
| 945 |
+
{ name = "tenacity" },
|
| 946 |
+
{ name = "typing-extensions" },
|
| 947 |
+
]
|
| 948 |
+
sdist = { url = "https://files.pythonhosted.org/packages/06/63/270b71a23e849984505ddc7c5c9fd3f4bd9cb14b1a484ee44c4e51c33cc2/langchain_core-0.3.75.tar.gz", hash = "sha256:ab0eb95a06ed6043f76162e6086b45037690cb70b7f090bd83b5ebb8a05b70ed", size = 570876 }
|
| 949 |
+
wheels = [
|
| 950 |
+
{ url = "https://files.pythonhosted.org/packages/fb/42/0d0221cce6f168f644d7d96cb6c87c4e42fc55d2941da7a36e970e3ab8ab/langchain_core-0.3.75-py3-none-any.whl", hash = "sha256:03ca1fadf955ee3c7d5806a841f4b3a37b816acea5e61a7e6ba1298c05eea7f5", size = 443986 },
|
| 951 |
+
]
|
| 952 |
+
|
| 953 |
+
[[package]]
|
| 954 |
+
name = "langchain-text-splitters"
|
| 955 |
+
version = "0.3.11"
|
| 956 |
+
source = { registry = "https://pypi.org/simple" }
|
| 957 |
+
dependencies = [
|
| 958 |
+
{ name = "langchain-core" },
|
| 959 |
+
]
|
| 960 |
+
sdist = { url = "https://files.pythonhosted.org/packages/11/43/dcda8fd25f0b19cb2835f2f6bb67f26ad58634f04ac2d8eae00526b0fa55/langchain_text_splitters-0.3.11.tar.gz", hash = "sha256:7a50a04ada9a133bbabb80731df7f6ddac51bc9f1b9cab7fa09304d71d38a6cc", size = 46458 }
|
| 961 |
+
wheels = [
|
| 962 |
+
{ url = "https://files.pythonhosted.org/packages/58/0d/41a51b40d24ff0384ec4f7ab8dd3dcea8353c05c973836b5e289f1465d4f/langchain_text_splitters-0.3.11-py3-none-any.whl", hash = "sha256:cf079131166a487f1372c8ab5d0bfaa6c0a4291733d9c43a34a16ac9bcd6a393", size = 33845 },
|
| 963 |
+
]
|
| 964 |
+
|
| 965 |
[[package]]
|
| 966 |
name = "langfuse"
|
| 967 |
version = "3.3.4"
|
|
|
|
| 982 |
{ url = "https://files.pythonhosted.org/packages/dc/46/edd370d47ca72ed4ca36b3c3b8f3a4ce71a310629d0bcb6ed760b04b08b1/langfuse-3.3.4-py3-none-any.whl", hash = "sha256:15b9d20878cf39a48ca9cfa7e52acdfeb043603d3a9cef8cf451687a4d838c6b", size = 318389 },
|
| 983 |
]
|
| 984 |
|
| 985 |
+
[[package]]
|
| 986 |
+
name = "langsmith"
|
| 987 |
+
version = "0.4.25"
|
| 988 |
+
source = { registry = "https://pypi.org/simple" }
|
| 989 |
+
dependencies = [
|
| 990 |
+
{ name = "httpx" },
|
| 991 |
+
{ name = "orjson", marker = "platform_python_implementation != 'PyPy'" },
|
| 992 |
+
{ name = "packaging" },
|
| 993 |
+
{ name = "pydantic" },
|
| 994 |
+
{ name = "requests" },
|
| 995 |
+
{ name = "requests-toolbelt" },
|
| 996 |
+
{ name = "zstandard" },
|
| 997 |
+
]
|
| 998 |
+
sdist = { url = "https://files.pythonhosted.org/packages/0c/84/2f01d51a557d14a9a5590c32de5dde3b466b00a55521450c2c9e77ffa438/langsmith-0.4.25.tar.gz", hash = "sha256:56f0c45810384fba37582ca17fdbcf6ead51934d26d72672e5a810452c0d4ae3", size = 940274 }
|
| 999 |
+
wheels = [
|
| 1000 |
+
{ url = "https://files.pythonhosted.org/packages/a5/85/8a5ca8f6044bd74acd0d364878b459d84ec460cf40aec17ed9cd5716e908/langsmith-0.4.25-py3-none-any.whl", hash = "sha256:adb61784ff58e65f0290ba45770626219fb06a776e69fbcf98aec580478b4686", size = 379416 },
|
| 1001 |
+
]
|
| 1002 |
+
|
| 1003 |
[[package]]
|
| 1004 |
name = "logfire"
|
| 1005 |
version = "4.4.0"
|
|
|
|
| 1044 |
{ url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321 },
|
| 1045 |
]
|
| 1046 |
|
| 1047 |
+
[[package]]
|
| 1048 |
+
name = "matplotlib-inline"
|
| 1049 |
+
version = "0.1.7"
|
| 1050 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1051 |
+
dependencies = [
|
| 1052 |
+
{ name = "traitlets" },
|
| 1053 |
+
]
|
| 1054 |
+
sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 }
|
| 1055 |
+
wheels = [
|
| 1056 |
+
{ url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 },
|
| 1057 |
+
]
|
| 1058 |
+
|
| 1059 |
[[package]]
|
| 1060 |
name = "mcp"
|
| 1061 |
version = "1.13.0"
|
|
|
|
| 1366 |
{ url = "https://files.pythonhosted.org/packages/0b/a6/b98d508d189b9c208f5978d0906141747d7e6df7c7cafec03657ed1ed559/opentelemetry_util_http-0.57b0-py3-none-any.whl", hash = "sha256:e54c0df5543951e471c3d694f85474977cd5765a3b7654398c83bab3d2ffb8e9", size = 7643 },
|
| 1367 |
]
|
| 1368 |
|
| 1369 |
+
[[package]]
|
| 1370 |
+
name = "orjson"
|
| 1371 |
+
version = "3.11.3"
|
| 1372 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1373 |
+
sdist = { url = "https://files.pythonhosted.org/packages/be/4d/8df5f83256a809c22c4d6792ce8d43bb503be0fb7a8e4da9025754b09658/orjson-3.11.3.tar.gz", hash = "sha256:1c0603b1d2ffcd43a411d64797a19556ef76958aef1c182f22dc30860152a98a", size = 5482394 }
|
| 1374 |
+
wheels = [
|
| 1375 |
+
{ url = "https://files.pythonhosted.org/packages/cd/8b/360674cd817faef32e49276187922a946468579fcaf37afdfb6c07046e92/orjson-3.11.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d2ae0cc6aeb669633e0124531f342a17d8e97ea999e42f12a5ad4adaa304c5f", size = 238238 },
|
| 1376 |
+
{ url = "https://files.pythonhosted.org/packages/05/3d/5fa9ea4b34c1a13be7d9046ba98d06e6feb1d8853718992954ab59d16625/orjson-3.11.3-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:ba21dbb2493e9c653eaffdc38819b004b7b1b246fb77bfc93dc016fe664eac91", size = 127713 },
|
| 1377 |
+
{ url = "https://files.pythonhosted.org/packages/e5/5f/e18367823925e00b1feec867ff5f040055892fc474bf5f7875649ecfa586/orjson-3.11.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00f1a271e56d511d1569937c0447d7dce5a99a33ea0dec76673706360a051904", size = 123241 },
|
| 1378 |
+
{ url = "https://files.pythonhosted.org/packages/0f/bd/3c66b91c4564759cf9f473251ac1650e446c7ba92a7c0f9f56ed54f9f0e6/orjson-3.11.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b67e71e47caa6680d1b6f075a396d04fa6ca8ca09aafb428731da9b3ea32a5a6", size = 127895 },
|
| 1379 |
+
{ url = "https://files.pythonhosted.org/packages/82/b5/dc8dcd609db4766e2967a85f63296c59d4722b39503e5b0bf7fd340d387f/orjson-3.11.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7d012ebddffcce8c85734a6d9e5f08180cd3857c5f5a3ac70185b43775d043d", size = 130303 },
|
| 1380 |
+
{ url = "https://files.pythonhosted.org/packages/48/c2/d58ec5fd1270b2aa44c862171891adc2e1241bd7dab26c8f46eb97c6c6f1/orjson-3.11.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd759f75d6b8d1b62012b7f5ef9461d03c804f94d539a5515b454ba3a6588038", size = 132366 },
|
| 1381 |
+
{ url = "https://files.pythonhosted.org/packages/73/87/0ef7e22eb8dd1ef940bfe3b9e441db519e692d62ed1aae365406a16d23d0/orjson-3.11.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6890ace0809627b0dff19cfad92d69d0fa3f089d3e359a2a532507bb6ba34efb", size = 135180 },
|
| 1382 |
+
{ url = "https://files.pythonhosted.org/packages/bb/6a/e5bf7b70883f374710ad74faf99bacfc4b5b5a7797c1d5e130350e0e28a3/orjson-3.11.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d4a5e041ae435b815e568537755773d05dac031fee6a57b4ba70897a44d9d2", size = 132741 },
|
| 1383 |
+
{ url = "https://files.pythonhosted.org/packages/bd/0c/4577fd860b6386ffaa56440e792af01c7882b56d2766f55384b5b0e9d39b/orjson-3.11.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d68bf97a771836687107abfca089743885fb664b90138d8761cce61d5625d55", size = 131104 },
|
| 1384 |
+
{ url = "https://files.pythonhosted.org/packages/66/4b/83e92b2d67e86d1c33f2ea9411742a714a26de63641b082bdbf3d8e481af/orjson-3.11.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bfc27516ec46f4520b18ef645864cee168d2a027dbf32c5537cb1f3e3c22dac1", size = 403887 },
|
| 1385 |
+
{ url = "https://files.pythonhosted.org/packages/6d/e5/9eea6a14e9b5ceb4a271a1fd2e1dec5f2f686755c0fab6673dc6ff3433f4/orjson-3.11.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f66b001332a017d7945e177e282a40b6997056394e3ed7ddb41fb1813b83e824", size = 145855 },
|
| 1386 |
+
{ url = "https://files.pythonhosted.org/packages/45/78/8d4f5ad0c80ba9bf8ac4d0fc71f93a7d0dc0844989e645e2074af376c307/orjson-3.11.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:212e67806525d2561efbfe9e799633b17eb668b8964abed6b5319b2f1cfbae1f", size = 135361 },
|
| 1387 |
+
{ url = "https://files.pythonhosted.org/packages/0b/5f/16386970370178d7a9b438517ea3d704efcf163d286422bae3b37b88dbb5/orjson-3.11.3-cp311-cp311-win32.whl", hash = "sha256:6e8e0c3b85575a32f2ffa59de455f85ce002b8bdc0662d6b9c2ed6d80ab5d204", size = 136190 },
|
| 1388 |
+
{ url = "https://files.pythonhosted.org/packages/09/60/db16c6f7a41dd8ac9fb651f66701ff2aeb499ad9ebc15853a26c7c152448/orjson-3.11.3-cp311-cp311-win_amd64.whl", hash = "sha256:6be2f1b5d3dc99a5ce5ce162fc741c22ba9f3443d3dd586e6a1211b7bc87bc7b", size = 131389 },
|
| 1389 |
+
{ url = "https://files.pythonhosted.org/packages/3e/2a/bb811ad336667041dea9b8565c7c9faf2f59b47eb5ab680315eea612ef2e/orjson-3.11.3-cp311-cp311-win_arm64.whl", hash = "sha256:fafb1a99d740523d964b15c8db4eabbfc86ff29f84898262bf6e3e4c9e97e43e", size = 126120 },
|
| 1390 |
+
{ url = "https://files.pythonhosted.org/packages/3d/b0/a7edab2a00cdcb2688e1c943401cb3236323e7bfd2839815c6131a3742f4/orjson-3.11.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8c752089db84333e36d754c4baf19c0e1437012242048439c7e80eb0e6426e3b", size = 238259 },
|
| 1391 |
+
{ url = "https://files.pythonhosted.org/packages/e1/c6/ff4865a9cc398a07a83342713b5932e4dc3cb4bf4bc04e8f83dedfc0d736/orjson-3.11.3-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:9b8761b6cf04a856eb544acdd82fc594b978f12ac3602d6374a7edb9d86fd2c2", size = 127633 },
|
| 1392 |
+
{ url = "https://files.pythonhosted.org/packages/6e/e6/e00bea2d9472f44fe8794f523e548ce0ad51eb9693cf538a753a27b8bda4/orjson-3.11.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b13974dc8ac6ba22feaa867fc19135a3e01a134b4f7c9c28162fed4d615008a", size = 123061 },
|
| 1393 |
+
{ url = "https://files.pythonhosted.org/packages/54/31/9fbb78b8e1eb3ac605467cb846e1c08d0588506028b37f4ee21f978a51d4/orjson-3.11.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f83abab5bacb76d9c821fd5c07728ff224ed0e52d7a71b7b3de822f3df04e15c", size = 127956 },
|
| 1394 |
+
{ url = "https://files.pythonhosted.org/packages/36/88/b0604c22af1eed9f98d709a96302006915cfd724a7ebd27d6dd11c22d80b/orjson-3.11.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6fbaf48a744b94091a56c62897b27c31ee2da93d826aa5b207131a1e13d4064", size = 130790 },
|
| 1395 |
+
{ url = "https://files.pythonhosted.org/packages/0e/9d/1c1238ae9fffbfed51ba1e507731b3faaf6b846126a47e9649222b0fd06f/orjson-3.11.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc779b4f4bba2847d0d2940081a7b6f7b5877e05408ffbb74fa1faf4a136c424", size = 132385 },
|
| 1396 |
+
{ url = "https://files.pythonhosted.org/packages/a3/b5/c06f1b090a1c875f337e21dd71943bc9d84087f7cdf8c6e9086902c34e42/orjson-3.11.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd4b909ce4c50faa2192da6bb684d9848d4510b736b0611b6ab4020ea6fd2d23", size = 135305 },
|
| 1397 |
+
{ url = "https://files.pythonhosted.org/packages/a0/26/5f028c7d81ad2ebbf84414ba6d6c9cac03f22f5cd0d01eb40fb2d6a06b07/orjson-3.11.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:524b765ad888dc5518bbce12c77c2e83dee1ed6b0992c1790cc5fb49bb4b6667", size = 132875 },
|
| 1398 |
+
{ url = "https://files.pythonhosted.org/packages/fe/d4/b8df70d9cfb56e385bf39b4e915298f9ae6c61454c8154a0f5fd7efcd42e/orjson-3.11.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:84fd82870b97ae3cdcea9d8746e592b6d40e1e4d4527835fc520c588d2ded04f", size = 130940 },
|
| 1399 |
+
{ url = "https://files.pythonhosted.org/packages/da/5e/afe6a052ebc1a4741c792dd96e9f65bf3939d2094e8b356503b68d48f9f5/orjson-3.11.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:fbecb9709111be913ae6879b07bafd4b0785b44c1eb5cac8ac76da048b3885a1", size = 403852 },
|
| 1400 |
+
{ url = "https://files.pythonhosted.org/packages/f8/90/7bbabafeb2ce65915e9247f14a56b29c9334003536009ef5b122783fe67e/orjson-3.11.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9dba358d55aee552bd868de348f4736ca5a4086d9a62e2bfbbeeb5629fe8b0cc", size = 146293 },
|
| 1401 |
+
{ url = "https://files.pythonhosted.org/packages/27/b3/2d703946447da8b093350570644a663df69448c9d9330e5f1d9cce997f20/orjson-3.11.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eabcf2e84f1d7105f84580e03012270c7e97ecb1fb1618bda395061b2a84a049", size = 135470 },
|
| 1402 |
+
{ url = "https://files.pythonhosted.org/packages/38/70/b14dcfae7aff0e379b0119c8a812f8396678919c431efccc8e8a0263e4d9/orjson-3.11.3-cp312-cp312-win32.whl", hash = "sha256:3782d2c60b8116772aea8d9b7905221437fdf53e7277282e8d8b07c220f96cca", size = 136248 },
|
| 1403 |
+
{ url = "https://files.pythonhosted.org/packages/35/b8/9e3127d65de7fff243f7f3e53f59a531bf6bb295ebe5db024c2503cc0726/orjson-3.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:79b44319268af2eaa3e315b92298de9a0067ade6e6003ddaef72f8e0bedb94f1", size = 131437 },
|
| 1404 |
+
{ url = "https://files.pythonhosted.org/packages/51/92/a946e737d4d8a7fd84a606aba96220043dcc7d6988b9e7551f7f6d5ba5ad/orjson-3.11.3-cp312-cp312-win_arm64.whl", hash = "sha256:0e92a4e83341ef79d835ca21b8bd13e27c859e4e9e4d7b63defc6e58462a3710", size = 125978 },
|
| 1405 |
+
{ url = "https://files.pythonhosted.org/packages/fc/79/8932b27293ad35919571f77cb3693b5906cf14f206ef17546052a241fdf6/orjson-3.11.3-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:af40c6612fd2a4b00de648aa26d18186cd1322330bd3a3cc52f87c699e995810", size = 238127 },
|
| 1406 |
+
{ url = "https://files.pythonhosted.org/packages/1c/82/cb93cd8cf132cd7643b30b6c5a56a26c4e780c7a145db6f83de977b540ce/orjson-3.11.3-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:9f1587f26c235894c09e8b5b7636a38091a9e6e7fe4531937534749c04face43", size = 127494 },
|
| 1407 |
+
{ url = "https://files.pythonhosted.org/packages/a4/b8/2d9eb181a9b6bb71463a78882bcac1027fd29cf62c38a40cc02fc11d3495/orjson-3.11.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61dcdad16da5bb486d7227a37a2e789c429397793a6955227cedbd7252eb5a27", size = 123017 },
|
| 1408 |
+
{ url = "https://files.pythonhosted.org/packages/b4/14/a0e971e72d03b509190232356d54c0f34507a05050bd026b8db2bf2c192c/orjson-3.11.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:11c6d71478e2cbea0a709e8a06365fa63da81da6498a53e4c4f065881d21ae8f", size = 127898 },
|
| 1409 |
+
{ url = "https://files.pythonhosted.org/packages/8e/af/dc74536722b03d65e17042cc30ae586161093e5b1f29bccda24765a6ae47/orjson-3.11.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff94112e0098470b665cb0ed06efb187154b63649403b8d5e9aedeb482b4548c", size = 130742 },
|
| 1410 |
+
{ url = "https://files.pythonhosted.org/packages/62/e6/7a3b63b6677bce089fe939353cda24a7679825c43a24e49f757805fc0d8a/orjson-3.11.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae8b756575aaa2a855a75192f356bbda11a89169830e1439cfb1a3e1a6dde7be", size = 132377 },
|
| 1411 |
+
{ url = "https://files.pythonhosted.org/packages/fc/cd/ce2ab93e2e7eaf518f0fd15e3068b8c43216c8a44ed82ac2b79ce5cef72d/orjson-3.11.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9416cc19a349c167ef76135b2fe40d03cea93680428efee8771f3e9fb66079d", size = 135313 },
|
| 1412 |
+
{ url = "https://files.pythonhosted.org/packages/d0/b4/f98355eff0bd1a38454209bbc73372ce351ba29933cb3e2eba16c04b9448/orjson-3.11.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b822caf5b9752bc6f246eb08124c3d12bf2175b66ab74bac2ef3bbf9221ce1b2", size = 132908 },
|
| 1413 |
+
{ url = "https://files.pythonhosted.org/packages/eb/92/8f5182d7bc2a1bed46ed960b61a39af8389f0ad476120cd99e67182bfb6d/orjson-3.11.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:414f71e3bdd5573893bf5ecdf35c32b213ed20aa15536fe2f588f946c318824f", size = 130905 },
|
| 1414 |
+
{ url = "https://files.pythonhosted.org/packages/1a/60/c41ca753ce9ffe3d0f67b9b4c093bdd6e5fdb1bc53064f992f66bb99954d/orjson-3.11.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:828e3149ad8815dc14468f36ab2a4b819237c155ee1370341b91ea4c8672d2ee", size = 403812 },
|
| 1415 |
+
{ url = "https://files.pythonhosted.org/packages/dd/13/e4a4f16d71ce1868860db59092e78782c67082a8f1dc06a3788aef2b41bc/orjson-3.11.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ac9e05f25627ffc714c21f8dfe3a579445a5c392a9c8ae7ba1d0e9fb5333f56e", size = 146277 },
|
| 1416 |
+
{ url = "https://files.pythonhosted.org/packages/8d/8b/bafb7f0afef9344754a3a0597a12442f1b85a048b82108ef2c956f53babd/orjson-3.11.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e44fbe4000bd321d9f3b648ae46e0196d21577cf66ae684a96ff90b1f7c93633", size = 135418 },
|
| 1417 |
+
{ url = "https://files.pythonhosted.org/packages/60/d4/bae8e4f26afb2c23bea69d2f6d566132584d1c3a5fe89ee8c17b718cab67/orjson-3.11.3-cp313-cp313-win32.whl", hash = "sha256:2039b7847ba3eec1f5886e75e6763a16e18c68a63efc4b029ddf994821e2e66b", size = 136216 },
|
| 1418 |
+
{ url = "https://files.pythonhosted.org/packages/88/76/224985d9f127e121c8cad882cea55f0ebe39f97925de040b75ccd4b33999/orjson-3.11.3-cp313-cp313-win_amd64.whl", hash = "sha256:29be5ac4164aa8bdcba5fa0700a3c9c316b411d8ed9d39ef8a882541bd452fae", size = 131362 },
|
| 1419 |
+
{ url = "https://files.pythonhosted.org/packages/e2/cf/0dce7a0be94bd36d1346be5067ed65ded6adb795fdbe3abd234c8d576d01/orjson-3.11.3-cp313-cp313-win_arm64.whl", hash = "sha256:18bd1435cb1f2857ceb59cfb7de6f92593ef7b831ccd1b9bfb28ca530e539dce", size = 125989 },
|
| 1420 |
+
{ url = "https://files.pythonhosted.org/packages/ef/77/d3b1fef1fc6aaeed4cbf3be2b480114035f4df8fa1a99d2dac1d40d6e924/orjson-3.11.3-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cf4b81227ec86935568c7edd78352a92e97af8da7bd70bdfdaa0d2e0011a1ab4", size = 238115 },
|
| 1421 |
+
{ url = "https://files.pythonhosted.org/packages/e4/6d/468d21d49bb12f900052edcfbf52c292022d0a323d7828dc6376e6319703/orjson-3.11.3-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:bc8bc85b81b6ac9fc4dae393a8c159b817f4c2c9dee5d12b773bddb3b95fc07e", size = 127493 },
|
| 1422 |
+
{ url = "https://files.pythonhosted.org/packages/67/46/1e2588700d354aacdf9e12cc2d98131fb8ac6f31ca65997bef3863edb8ff/orjson-3.11.3-cp314-cp314-manylinux_2_34_aarch64.whl", hash = "sha256:88dcfc514cfd1b0de038443c7b3e6a9797ffb1b3674ef1fd14f701a13397f82d", size = 122998 },
|
| 1423 |
+
{ url = "https://files.pythonhosted.org/packages/3b/94/11137c9b6adb3779f1b34fd98be51608a14b430dbc02c6d41134fbba484c/orjson-3.11.3-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:d61cd543d69715d5fc0a690c7c6f8dcc307bc23abef9738957981885f5f38229", size = 132915 },
|
| 1424 |
+
{ url = "https://files.pythonhosted.org/packages/10/61/dccedcf9e9bcaac09fdabe9eaee0311ca92115699500efbd31950d878833/orjson-3.11.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2b7b153ed90ababadbef5c3eb39549f9476890d339cf47af563aea7e07db2451", size = 130907 },
|
| 1425 |
+
{ url = "https://files.pythonhosted.org/packages/0e/fd/0e935539aa7b08b3ca0f817d73034f7eb506792aae5ecc3b7c6e679cdf5f/orjson-3.11.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7909ae2460f5f494fecbcd10613beafe40381fd0316e35d6acb5f3a05bfda167", size = 403852 },
|
| 1426 |
+
{ url = "https://files.pythonhosted.org/packages/4a/2b/50ae1a5505cd1043379132fdb2adb8a05f37b3e1ebffe94a5073321966fd/orjson-3.11.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:2030c01cbf77bc67bee7eef1e7e31ecf28649353987775e3583062c752da0077", size = 146309 },
|
| 1427 |
+
{ url = "https://files.pythonhosted.org/packages/cd/1d/a473c158e380ef6f32753b5f39a69028b25ec5be331c2049a2201bde2e19/orjson-3.11.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a0169ebd1cbd94b26c7a7ad282cf5c2744fce054133f959e02eb5265deae1872", size = 135424 },
|
| 1428 |
+
{ url = "https://files.pythonhosted.org/packages/da/09/17d9d2b60592890ff7382e591aa1d9afb202a266b180c3d4049b1ec70e4a/orjson-3.11.3-cp314-cp314-win32.whl", hash = "sha256:0c6d7328c200c349e3a4c6d8c83e0a5ad029bdc2d417f234152bf34842d0fc8d", size = 136266 },
|
| 1429 |
+
{ url = "https://files.pythonhosted.org/packages/15/58/358f6846410a6b4958b74734727e582ed971e13d335d6c7ce3e47730493e/orjson-3.11.3-cp314-cp314-win_amd64.whl", hash = "sha256:317bbe2c069bbc757b1a2e4105b64aacd3bc78279b66a6b9e51e846e4809f804", size = 131351 },
|
| 1430 |
+
{ url = "https://files.pythonhosted.org/packages/28/01/d6b274a0635be0468d4dbd9cafe80c47105937a0d42434e805e67cd2ed8b/orjson-3.11.3-cp314-cp314-win_arm64.whl", hash = "sha256:e8f6a7a27d7b7bec81bd5924163e9af03d49bbb63013f107b48eb5d16db711bc", size = 125985 },
|
| 1431 |
+
]
|
| 1432 |
+
|
| 1433 |
[[package]]
|
| 1434 |
name = "packaging"
|
| 1435 |
version = "25.0"
|
|
|
|
| 1439 |
{ url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 },
|
| 1440 |
]
|
| 1441 |
|
| 1442 |
+
[[package]]
|
| 1443 |
+
name = "parso"
|
| 1444 |
+
version = "0.8.5"
|
| 1445 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1446 |
+
sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205 }
|
| 1447 |
+
wheels = [
|
| 1448 |
+
{ url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668 },
|
| 1449 |
+
]
|
| 1450 |
+
|
| 1451 |
+
[[package]]
|
| 1452 |
+
name = "pexpect"
|
| 1453 |
+
version = "4.9.0"
|
| 1454 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1455 |
+
dependencies = [
|
| 1456 |
+
{ name = "ptyprocess" },
|
| 1457 |
+
]
|
| 1458 |
+
sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 }
|
| 1459 |
+
wheels = [
|
| 1460 |
+
{ url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 },
|
| 1461 |
+
]
|
| 1462 |
+
|
| 1463 |
[[package]]
|
| 1464 |
name = "pillow"
|
| 1465 |
version = "11.3.0"
|
|
|
|
| 1643 |
{ url = "https://files.pythonhosted.org/packages/7e/cc/7e77861000a0691aeea8f4566e5d3aa716f2b1dece4a24439437e41d3d25/protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5", size = 172823 },
|
| 1644 |
]
|
| 1645 |
|
| 1646 |
+
[[package]]
|
| 1647 |
+
name = "ptyprocess"
|
| 1648 |
+
version = "0.7.0"
|
| 1649 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1650 |
+
sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 }
|
| 1651 |
+
wheels = [
|
| 1652 |
+
{ url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 },
|
| 1653 |
+
]
|
| 1654 |
+
|
| 1655 |
+
[[package]]
|
| 1656 |
+
name = "pure-eval"
|
| 1657 |
+
version = "0.2.3"
|
| 1658 |
+
source = { registry = "https://pypi.org/simple" }
|
| 1659 |
+
sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 }
|
| 1660 |
+
wheels = [
|
| 1661 |
+
{ url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 },
|
| 1662 |
+
]
|
| 1663 |
+
|
| 1664 |
[[package]]
|
| 1665 |
name = "pyasn1"
|
| 1666 |
version = "0.6.1"
|
|
|
|
| 2021 |
{ url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738 },
|
| 2022 |
]
|
| 2023 |
|
| 2024 |
+
[[package]]
|
| 2025 |
+
name = "requests-toolbelt"
|
| 2026 |
+
version = "1.0.0"
|
| 2027 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2028 |
+
dependencies = [
|
| 2029 |
+
{ name = "requests" },
|
| 2030 |
+
]
|
| 2031 |
+
sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888 }
|
| 2032 |
+
wheels = [
|
| 2033 |
+
{ url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481 },
|
| 2034 |
+
]
|
| 2035 |
+
|
| 2036 |
[[package]]
|
| 2037 |
name = "rich"
|
| 2038 |
version = "14.1.0"
|
|
|
|
| 2195 |
{ name = "google" },
|
| 2196 |
{ name = "google-genai" },
|
| 2197 |
{ name = "huggingface-hub" },
|
| 2198 |
+
{ name = "ipython" },
|
| 2199 |
+
{ name = "langchain" },
|
| 2200 |
+
{ name = "langchain-core" },
|
| 2201 |
{ name = "langfuse" },
|
| 2202 |
{ name = "nest-asyncio" },
|
| 2203 |
{ name = "openai-agents" },
|
|
|
|
| 2211 |
{ name = "google", specifier = ">=3.0.0" },
|
| 2212 |
{ name = "google-genai", specifier = ">=1.31.0" },
|
| 2213 |
{ name = "huggingface-hub", specifier = ">=0.34.4" },
|
| 2214 |
+
{ name = "ipython", specifier = ">=9.5.0" },
|
| 2215 |
+
{ name = "langchain", specifier = ">=0.3.27" },
|
| 2216 |
+
{ name = "langchain-core", specifier = ">=0.3.75" },
|
| 2217 |
{ name = "langfuse", specifier = ">=3.3.4" },
|
| 2218 |
{ name = "nest-asyncio", specifier = ">=1.6.0" },
|
| 2219 |
{ name = "openai-agents", specifier = ">=0.2.8" },
|
|
|
|
| 2240 |
{ url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 },
|
| 2241 |
]
|
| 2242 |
|
| 2243 |
+
[[package]]
|
| 2244 |
+
name = "sqlalchemy"
|
| 2245 |
+
version = "2.0.43"
|
| 2246 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2247 |
+
dependencies = [
|
| 2248 |
+
{ name = "greenlet", marker = "(python_full_version < '3.14' and platform_machine == 'AMD64') or (python_full_version < '3.14' and platform_machine == 'WIN32') or (python_full_version < '3.14' and platform_machine == 'aarch64') or (python_full_version < '3.14' and platform_machine == 'amd64') or (python_full_version < '3.14' and platform_machine == 'ppc64le') or (python_full_version < '3.14' and platform_machine == 'win32') or (python_full_version < '3.14' and platform_machine == 'x86_64')" },
|
| 2249 |
+
{ name = "typing-extensions" },
|
| 2250 |
+
]
|
| 2251 |
+
sdist = { url = "https://files.pythonhosted.org/packages/d7/bc/d59b5d97d27229b0e009bd9098cd81af71c2fa5549c580a0a67b9bed0496/sqlalchemy-2.0.43.tar.gz", hash = "sha256:788bfcef6787a7764169cfe9859fe425bf44559619e1d9f56f5bddf2ebf6f417", size = 9762949 }
|
| 2252 |
+
wheels = [
|
| 2253 |
+
{ url = "https://files.pythonhosted.org/packages/9d/77/fa7189fe44114658002566c6fe443d3ed0ec1fa782feb72af6ef7fbe98e7/sqlalchemy-2.0.43-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:52d9b73b8fb3e9da34c2b31e6d99d60f5f99fd8c1225c9dad24aeb74a91e1d29", size = 2136472 },
|
| 2254 |
+
{ url = "https://files.pythonhosted.org/packages/99/ea/92ac27f2fbc2e6c1766bb807084ca455265707e041ba027c09c17d697867/sqlalchemy-2.0.43-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f42f23e152e4545157fa367b2435a1ace7571cab016ca26038867eb7df2c3631", size = 2126535 },
|
| 2255 |
+
{ url = "https://files.pythonhosted.org/packages/94/12/536ede80163e295dc57fff69724caf68f91bb40578b6ac6583a293534849/sqlalchemy-2.0.43-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fb1a8c5438e0c5ea51afe9c6564f951525795cf432bed0c028c1cb081276685", size = 3297521 },
|
| 2256 |
+
{ url = "https://files.pythonhosted.org/packages/03/b5/cacf432e6f1fc9d156eca0560ac61d4355d2181e751ba8c0cd9cb232c8c1/sqlalchemy-2.0.43-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db691fa174e8f7036afefe3061bc40ac2b770718be2862bfb03aabae09051aca", size = 3297343 },
|
| 2257 |
+
{ url = "https://files.pythonhosted.org/packages/ca/ba/d4c9b526f18457667de4c024ffbc3a0920c34237b9e9dd298e44c7c00ee5/sqlalchemy-2.0.43-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe2b3b4927d0bc03d02ad883f402d5de201dbc8894ac87d2e981e7d87430e60d", size = 3232113 },
|
| 2258 |
+
{ url = "https://files.pythonhosted.org/packages/aa/79/c0121b12b1b114e2c8a10ea297a8a6d5367bc59081b2be896815154b1163/sqlalchemy-2.0.43-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d3d9b904ad4a6b175a2de0738248822f5ac410f52c2fd389ada0b5262d6a1e3", size = 3258240 },
|
| 2259 |
+
{ url = "https://files.pythonhosted.org/packages/79/99/a2f9be96fb382f3ba027ad42f00dbe30fdb6ba28cda5f11412eee346bec5/sqlalchemy-2.0.43-cp311-cp311-win32.whl", hash = "sha256:5cda6b51faff2639296e276591808c1726c4a77929cfaa0f514f30a5f6156921", size = 2101248 },
|
| 2260 |
+
{ url = "https://files.pythonhosted.org/packages/ee/13/744a32ebe3b4a7a9c7ea4e57babae7aa22070d47acf330d8e5a1359607f1/sqlalchemy-2.0.43-cp311-cp311-win_amd64.whl", hash = "sha256:c5d1730b25d9a07727d20ad74bc1039bbbb0a6ca24e6769861c1aa5bf2c4c4a8", size = 2126109 },
|
| 2261 |
+
{ url = "https://files.pythonhosted.org/packages/61/db/20c78f1081446095450bdc6ee6cc10045fce67a8e003a5876b6eaafc5cc4/sqlalchemy-2.0.43-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:20d81fc2736509d7a2bd33292e489b056cbae543661bb7de7ce9f1c0cd6e7f24", size = 2134891 },
|
| 2262 |
+
{ url = "https://files.pythonhosted.org/packages/45/0a/3d89034ae62b200b4396f0f95319f7d86e9945ee64d2343dcad857150fa2/sqlalchemy-2.0.43-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b9fc27650ff5a2c9d490c13c14906b918b0de1f8fcbb4c992712d8caf40e83", size = 2123061 },
|
| 2263 |
+
{ url = "https://files.pythonhosted.org/packages/cb/10/2711f7ff1805919221ad5bee205971254845c069ee2e7036847103ca1e4c/sqlalchemy-2.0.43-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6772e3ca8a43a65a37c88e2f3e2adfd511b0b1da37ef11ed78dea16aeae85bd9", size = 3320384 },
|
| 2264 |
+
{ url = "https://files.pythonhosted.org/packages/6e/0e/3d155e264d2ed2778484006ef04647bc63f55b3e2d12e6a4f787747b5900/sqlalchemy-2.0.43-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a113da919c25f7f641ffbd07fbc9077abd4b3b75097c888ab818f962707eb48", size = 3329648 },
|
| 2265 |
+
{ url = "https://files.pythonhosted.org/packages/5b/81/635100fb19725c931622c673900da5efb1595c96ff5b441e07e3dd61f2be/sqlalchemy-2.0.43-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4286a1139f14b7d70141c67a8ae1582fc2b69105f1b09d9573494eb4bb4b2687", size = 3258030 },
|
| 2266 |
+
{ url = "https://files.pythonhosted.org/packages/0c/ed/a99302716d62b4965fded12520c1cbb189f99b17a6d8cf77611d21442e47/sqlalchemy-2.0.43-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:529064085be2f4d8a6e5fab12d36ad44f1909a18848fcfbdb59cc6d4bbe48efe", size = 3294469 },
|
| 2267 |
+
{ url = "https://files.pythonhosted.org/packages/5d/a2/3a11b06715149bf3310b55a98b5c1e84a42cfb949a7b800bc75cb4e33abc/sqlalchemy-2.0.43-cp312-cp312-win32.whl", hash = "sha256:b535d35dea8bbb8195e7e2b40059e2253acb2b7579b73c1b432a35363694641d", size = 2098906 },
|
| 2268 |
+
{ url = "https://files.pythonhosted.org/packages/bc/09/405c915a974814b90aa591280623adc6ad6b322f61fd5cff80aeaef216c9/sqlalchemy-2.0.43-cp312-cp312-win_amd64.whl", hash = "sha256:1c6d85327ca688dbae7e2b06d7d84cfe4f3fffa5b5f9e21bb6ce9d0e1a0e0e0a", size = 2126260 },
|
| 2269 |
+
{ url = "https://files.pythonhosted.org/packages/41/1c/a7260bd47a6fae7e03768bf66451437b36451143f36b285522b865987ced/sqlalchemy-2.0.43-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e7c08f57f75a2bb62d7ee80a89686a5e5669f199235c6d1dac75cd59374091c3", size = 2130598 },
|
| 2270 |
+
{ url = "https://files.pythonhosted.org/packages/8e/84/8a337454e82388283830b3586ad7847aa9c76fdd4f1df09cdd1f94591873/sqlalchemy-2.0.43-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:14111d22c29efad445cd5021a70a8b42f7d9152d8ba7f73304c4d82460946aaa", size = 2118415 },
|
| 2271 |
+
{ url = "https://files.pythonhosted.org/packages/cf/ff/22ab2328148492c4d71899d62a0e65370ea66c877aea017a244a35733685/sqlalchemy-2.0.43-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21b27b56eb2f82653168cefe6cb8e970cdaf4f3a6cb2c5e3c3c1cf3158968ff9", size = 3248707 },
|
| 2272 |
+
{ url = "https://files.pythonhosted.org/packages/dc/29/11ae2c2b981de60187f7cbc84277d9d21f101093d1b2e945c63774477aba/sqlalchemy-2.0.43-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c5a9da957c56e43d72126a3f5845603da00e0293720b03bde0aacffcf2dc04f", size = 3253602 },
|
| 2273 |
+
{ url = "https://files.pythonhosted.org/packages/b8/61/987b6c23b12c56d2be451bc70900f67dd7d989d52b1ee64f239cf19aec69/sqlalchemy-2.0.43-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d79f9fdc9584ec83d1b3c75e9f4595c49017f5594fee1a2217117647225d738", size = 3183248 },
|
| 2274 |
+
{ url = "https://files.pythonhosted.org/packages/86/85/29d216002d4593c2ce1c0ec2cec46dda77bfbcd221e24caa6e85eff53d89/sqlalchemy-2.0.43-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9df7126fd9db49e3a5a3999442cc67e9ee8971f3cb9644250107d7296cb2a164", size = 3219363 },
|
| 2275 |
+
{ url = "https://files.pythonhosted.org/packages/b6/e4/bd78b01919c524f190b4905d47e7630bf4130b9f48fd971ae1c6225b6f6a/sqlalchemy-2.0.43-cp313-cp313-win32.whl", hash = "sha256:7f1ac7828857fcedb0361b48b9ac4821469f7694089d15550bbcf9ab22564a1d", size = 2096718 },
|
| 2276 |
+
{ url = "https://files.pythonhosted.org/packages/ac/a5/ca2f07a2a201f9497de1928f787926613db6307992fe5cda97624eb07c2f/sqlalchemy-2.0.43-cp313-cp313-win_amd64.whl", hash = "sha256:971ba928fcde01869361f504fcff3b7143b47d30de188b11c6357c0505824197", size = 2123200 },
|
| 2277 |
+
{ url = "https://files.pythonhosted.org/packages/b8/d9/13bdde6521f322861fab67473cec4b1cc8999f3871953531cf61945fad92/sqlalchemy-2.0.43-py3-none-any.whl", hash = "sha256:1681c21dd2ccee222c2fe0bef671d1aef7c504087c9c4e800371cfcc8ac966fc", size = 1924759 },
|
| 2278 |
+
]
|
| 2279 |
+
|
| 2280 |
[[package]]
|
| 2281 |
name = "sse-starlette"
|
| 2282 |
version = "3.0.2"
|
|
|
|
| 2289 |
{ url = "https://files.pythonhosted.org/packages/ef/10/c78f463b4ef22eef8491f218f692be838282cd65480f6e423d7730dfd1fb/sse_starlette-3.0.2-py3-none-any.whl", hash = "sha256:16b7cbfddbcd4eaca11f7b586f3b8a080f1afe952c15813455b162edea619e5a", size = 11297 },
|
| 2290 |
]
|
| 2291 |
|
| 2292 |
+
[[package]]
|
| 2293 |
+
name = "stack-data"
|
| 2294 |
+
version = "0.6.3"
|
| 2295 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2296 |
+
dependencies = [
|
| 2297 |
+
{ name = "asttokens" },
|
| 2298 |
+
{ name = "executing" },
|
| 2299 |
+
{ name = "pure-eval" },
|
| 2300 |
+
]
|
| 2301 |
+
sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 }
|
| 2302 |
+
wheels = [
|
| 2303 |
+
{ url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 },
|
| 2304 |
+
]
|
| 2305 |
+
|
| 2306 |
[[package]]
|
| 2307 |
name = "starlette"
|
| 2308 |
version = "0.47.2"
|
|
|
|
| 2381 |
{ url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 },
|
| 2382 |
]
|
| 2383 |
|
| 2384 |
+
[[package]]
|
| 2385 |
+
name = "traitlets"
|
| 2386 |
+
version = "5.14.3"
|
| 2387 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2388 |
+
sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 }
|
| 2389 |
+
wheels = [
|
| 2390 |
+
{ url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 },
|
| 2391 |
+
]
|
| 2392 |
+
|
| 2393 |
[[package]]
|
| 2394 |
name = "types-protobuf"
|
| 2395 |
version = "6.30.2.20250822"
|
|
|
|
| 2654 |
wheels = [
|
| 2655 |
{ url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276 },
|
| 2656 |
]
|
| 2657 |
+
|
| 2658 |
+
[[package]]
|
| 2659 |
+
name = "zstandard"
|
| 2660 |
+
version = "0.24.0"
|
| 2661 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2662 |
+
sdist = { url = "https://files.pythonhosted.org/packages/09/1b/c20b2ef1d987627765dcd5bf1dadb8ef6564f00a87972635099bb76b7a05/zstandard-0.24.0.tar.gz", hash = "sha256:fe3198b81c00032326342d973e526803f183f97aa9e9a98e3f897ebafe21178f", size = 905681 }
|
| 2663 |
+
wheels = [
|
| 2664 |
+
{ url = "https://files.pythonhosted.org/packages/01/1f/5c72806f76043c0ef9191a2b65281dacdf3b65b0828eb13bb2c987c4fb90/zstandard-0.24.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:addfc23e3bd5f4b6787b9ca95b2d09a1a67ad5a3c318daaa783ff90b2d3a366e", size = 795228 },
|
| 2665 |
+
{ url = "https://files.pythonhosted.org/packages/0b/ba/3059bd5cd834666a789251d14417621b5c61233bd46e7d9023ea8bc1043a/zstandard-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b005bcee4be9c3984b355336283afe77b2defa76ed6b89332eced7b6fa68b68", size = 640520 },
|
| 2666 |
+
{ url = "https://files.pythonhosted.org/packages/57/07/f0e632bf783f915c1fdd0bf68614c4764cae9dd46ba32cbae4dd659592c3/zstandard-0.24.0-cp311-cp311-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:3f96a9130171e01dbb6c3d4d9925d604e2131a97f540e223b88ba45daf56d6fb", size = 5347682 },
|
| 2667 |
+
{ url = "https://files.pythonhosted.org/packages/a6/4c/63523169fe84773a7462cd090b0989cb7c7a7f2a8b0a5fbf00009ba7d74d/zstandard-0.24.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd0d3d16e63873253bad22b413ec679cf6586e51b5772eb10733899832efec42", size = 5057650 },
|
| 2668 |
+
{ url = "https://files.pythonhosted.org/packages/c6/16/49013f7ef80293f5cebf4c4229535a9f4c9416bbfd238560edc579815dbe/zstandard-0.24.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:b7a8c30d9bf4bd5e4dcfe26900bef0fcd9749acde45cdf0b3c89e2052fda9a13", size = 5404893 },
|
| 2669 |
+
{ url = "https://files.pythonhosted.org/packages/4d/38/78e8bcb5fc32a63b055f2b99e0be49b506f2351d0180173674f516cf8a7a/zstandard-0.24.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:52cd7d9fa0a115c9446abb79b06a47171b7d916c35c10e0c3aa6f01d57561382", size = 5452389 },
|
| 2670 |
+
{ url = "https://files.pythonhosted.org/packages/55/8a/81671f05619edbacd49bd84ce6899a09fc8299be20c09ae92f6618ccb92d/zstandard-0.24.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a0f6fc2ea6e07e20df48752e7700e02e1892c61f9a6bfbacaf2c5b24d5ad504b", size = 5558888 },
|
| 2671 |
+
{ url = "https://files.pythonhosted.org/packages/49/cc/e83feb2d7d22d1f88434defbaeb6e5e91f42a4f607b5d4d2d58912b69d67/zstandard-0.24.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e46eb6702691b24ddb3e31e88b4a499e31506991db3d3724a85bd1c5fc3cfe4e", size = 5048038 },
|
| 2672 |
+
{ url = "https://files.pythonhosted.org/packages/08/c3/7a5c57ff49ef8943877f85c23368c104c2aea510abb339a2dc31ad0a27c3/zstandard-0.24.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5e3b9310fd7f0d12edc75532cd9a56da6293840c84da90070d692e0bb15f186", size = 5573833 },
|
| 2673 |
+
{ url = "https://files.pythonhosted.org/packages/f9/00/64519983cd92535ba4bdd4ac26ac52db00040a52d6c4efb8d1764abcc343/zstandard-0.24.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76cdfe7f920738ea871f035568f82bad3328cbc8d98f1f6988264096b5264efd", size = 4961072 },
|
| 2674 |
+
{ url = "https://files.pythonhosted.org/packages/72/ab/3a08a43067387d22994fc87c3113636aa34ccd2914a4d2d188ce365c5d85/zstandard-0.24.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3f2fe35ec84908dddf0fbf66b35d7c2878dbe349552dd52e005c755d3493d61c", size = 5268462 },
|
| 2675 |
+
{ url = "https://files.pythonhosted.org/packages/49/cf/2abb3a1ad85aebe18c53e7eca73223f1546ddfa3bf4d2fb83fc5a064c5ca/zstandard-0.24.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:aa705beb74ab116563f4ce784fa94771f230c05d09ab5de9c397793e725bb1db", size = 5443319 },
|
| 2676 |
+
{ url = "https://files.pythonhosted.org/packages/40/42/0dd59fc2f68f1664cda11c3b26abdf987f4e57cb6b6b0f329520cd074552/zstandard-0.24.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:aadf32c389bb7f02b8ec5c243c38302b92c006da565e120dfcb7bf0378f4f848", size = 5822355 },
|
| 2677 |
+
{ url = "https://files.pythonhosted.org/packages/99/c0/ea4e640fd4f7d58d6f87a1e7aca11fb886ac24db277fbbb879336c912f63/zstandard-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e40cd0fc734aa1d4bd0e7ad102fd2a1aefa50ce9ef570005ffc2273c5442ddc3", size = 5365257 },
|
| 2678 |
+
{ url = "https://files.pythonhosted.org/packages/27/a9/92da42a5c4e7e4003271f2e1f0efd1f37cfd565d763ad3604e9597980a1c/zstandard-0.24.0-cp311-cp311-win32.whl", hash = "sha256:cda61c46343809ecda43dc620d1333dd7433a25d0a252f2dcc7667f6331c7b61", size = 435559 },
|
| 2679 |
+
{ url = "https://files.pythonhosted.org/packages/e2/8e/2c8e5c681ae4937c007938f954a060fa7c74f36273b289cabdb5ef0e9a7e/zstandard-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:3b95fc06489aa9388400d1aab01a83652bc040c9c087bd732eb214909d7fb0dd", size = 505070 },
|
| 2680 |
+
{ url = "https://files.pythonhosted.org/packages/52/10/a2f27a66bec75e236b575c9f7b0d7d37004a03aa2dcde8e2decbe9ed7b4d/zstandard-0.24.0-cp311-cp311-win_arm64.whl", hash = "sha256:ad9fd176ff6800a0cf52bcf59c71e5de4fa25bf3ba62b58800e0f84885344d34", size = 461507 },
|
| 2681 |
+
{ url = "https://files.pythonhosted.org/packages/26/e9/0bd281d9154bba7fc421a291e263911e1d69d6951aa80955b992a48289f6/zstandard-0.24.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a2bda8f2790add22773ee7a4e43c90ea05598bffc94c21c40ae0a9000b0133c3", size = 795710 },
|
| 2682 |
+
{ url = "https://files.pythonhosted.org/packages/36/26/b250a2eef515caf492e2d86732e75240cdac9d92b04383722b9753590c36/zstandard-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cc76de75300f65b8eb574d855c12518dc25a075dadb41dd18f6322bda3fe15d5", size = 640336 },
|
| 2683 |
+
{ url = "https://files.pythonhosted.org/packages/79/bf/3ba6b522306d9bf097aac8547556b98a4f753dc807a170becaf30dcd6f01/zstandard-0.24.0-cp312-cp312-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:d2b3b4bda1a025b10fe0269369475f420177f2cb06e0f9d32c95b4873c9f80b8", size = 5342533 },
|
| 2684 |
+
{ url = "https://files.pythonhosted.org/packages/ea/ec/22bc75bf054e25accdf8e928bc68ab36b4466809729c554ff3a1c1c8bce6/zstandard-0.24.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b84c6c210684286e504022d11ec294d2b7922d66c823e87575d8b23eba7c81f", size = 5062837 },
|
| 2685 |
+
{ url = "https://files.pythonhosted.org/packages/48/cc/33edfc9d286e517fb5b51d9c3210e5bcfce578d02a675f994308ca587ae1/zstandard-0.24.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c59740682a686bf835a1a4d8d0ed1eefe31ac07f1c5a7ed5f2e72cf577692b00", size = 5393855 },
|
| 2686 |
+
{ url = "https://files.pythonhosted.org/packages/73/36/59254e9b29da6215fb3a717812bf87192d89f190f23817d88cb8868c47ac/zstandard-0.24.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6324fde5cf5120fbf6541d5ff3c86011ec056e8d0f915d8e7822926a5377193a", size = 5451058 },
|
| 2687 |
+
{ url = "https://files.pythonhosted.org/packages/9a/c7/31674cb2168b741bbbe71ce37dd397c9c671e73349d88ad3bca9e9fae25b/zstandard-0.24.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51a86bd963de3f36688553926a84e550d45d7f9745bd1947d79472eca27fcc75", size = 5546619 },
|
| 2688 |
+
{ url = "https://files.pythonhosted.org/packages/e6/01/1a9f22239f08c00c156f2266db857545ece66a6fc0303d45c298564bc20b/zstandard-0.24.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d82ac87017b734f2fb70ff93818c66f0ad2c3810f61040f077ed38d924e19980", size = 5046676 },
|
| 2689 |
+
{ url = "https://files.pythonhosted.org/packages/a7/91/6c0cf8fa143a4988a0361380ac2ef0d7cb98a374704b389fbc38b5891712/zstandard-0.24.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92ea7855d5bcfb386c34557516c73753435fb2d4a014e2c9343b5f5ba148b5d8", size = 5576381 },
|
| 2690 |
+
{ url = "https://files.pythonhosted.org/packages/e2/77/1526080e22e78871e786ccf3c84bf5cec9ed25110a9585507d3c551da3d6/zstandard-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3adb4b5414febf074800d264ddf69ecade8c658837a83a19e8ab820e924c9933", size = 4953403 },
|
| 2691 |
+
{ url = "https://files.pythonhosted.org/packages/6e/d0/a3a833930bff01eab697eb8abeafb0ab068438771fa066558d96d7dafbf9/zstandard-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6374feaf347e6b83ec13cc5dcfa70076f06d8f7ecd46cc71d58fac798ff08b76", size = 5267396 },
|
| 2692 |
+
{ url = "https://files.pythonhosted.org/packages/f3/5e/90a0db9a61cd4769c06374297ecfcbbf66654f74cec89392519deba64d76/zstandard-0.24.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:13fc548e214df08d896ee5f29e1f91ee35db14f733fef8eabea8dca6e451d1e2", size = 5433269 },
|
| 2693 |
+
{ url = "https://files.pythonhosted.org/packages/ce/58/fc6a71060dd67c26a9c5566e0d7c99248cbe5abfda6b3b65b8f1a28d59f7/zstandard-0.24.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0a416814608610abf5488889c74e43ffa0343ca6cf43957c6b6ec526212422da", size = 5814203 },
|
| 2694 |
+
{ url = "https://files.pythonhosted.org/packages/5c/6a/89573d4393e3ecbfa425d9a4e391027f58d7810dec5cdb13a26e4cdeef5c/zstandard-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0d66da2649bb0af4471699aeb7a83d6f59ae30236fb9f6b5d20fb618ef6c6777", size = 5359622 },
|
| 2695 |
+
{ url = "https://files.pythonhosted.org/packages/60/ff/2cbab815d6f02a53a9d8d8703bc727d8408a2e508143ca9af6c3cca2054b/zstandard-0.24.0-cp312-cp312-win32.whl", hash = "sha256:ff19efaa33e7f136fe95f9bbcc90ab7fb60648453b03f95d1de3ab6997de0f32", size = 435968 },
|
| 2696 |
+
{ url = "https://files.pythonhosted.org/packages/ce/a3/8f96b8ddb7ad12344218fbd0fd2805702dafd126ae9f8a1fb91eef7b33da/zstandard-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc05f8a875eb651d1cc62e12a4a0e6afa5cd0cc231381adb830d2e9c196ea895", size = 505195 },
|
| 2697 |
+
{ url = "https://files.pythonhosted.org/packages/a3/4a/bfca20679da63bfc236634ef2e4b1b4254203098b0170e3511fee781351f/zstandard-0.24.0-cp312-cp312-win_arm64.whl", hash = "sha256:b04c94718f7a8ed7cdd01b162b6caa1954b3c9d486f00ecbbd300f149d2b2606", size = 461605 },
|
| 2698 |
+
{ url = "https://files.pythonhosted.org/packages/ec/ef/db949de3bf81ed122b8ee4db6a8d147a136fe070e1015f5a60d8a3966748/zstandard-0.24.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e4ebb000c0fe24a6d0f3534b6256844d9dbf042fdf003efe5cf40690cf4e0f3e", size = 795700 },
|
| 2699 |
+
{ url = "https://files.pythonhosted.org/packages/99/56/fc04395d6f5eabd2fe6d86c0800d198969f3038385cb918bfbe94f2b0c62/zstandard-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:498f88f5109666c19531f0243a90d2fdd2252839cd6c8cc6e9213a3446670fa8", size = 640343 },
|
| 2700 |
+
{ url = "https://files.pythonhosted.org/packages/9b/0f/0b0e0d55f2f051d5117a0d62f4f9a8741b3647440c0ee1806b7bd47ed5ae/zstandard-0.24.0-cp313-cp313-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:0a9e95ceb180ccd12a8b3437bac7e8a8a089c9094e39522900a8917745542184", size = 5342571 },
|
| 2701 |
+
{ url = "https://files.pythonhosted.org/packages/5d/43/d74e49f04fbd62d4b5d89aeb7a29d693fc637c60238f820cd5afe6ca8180/zstandard-0.24.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bcf69e0bcddbf2adcfafc1a7e864edcc204dd8171756d3a8f3340f6f6cc87b7b", size = 5062723 },
|
| 2702 |
+
{ url = "https://files.pythonhosted.org/packages/8e/97/df14384d4d6a004388e6ed07ded02933b5c7e0833a9150c57d0abc9545b7/zstandard-0.24.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:10e284748a7e7fbe2815ca62a9d6e84497d34cfdd0143fa9e8e208efa808d7c4", size = 5393282 },
|
| 2703 |
+
{ url = "https://files.pythonhosted.org/packages/7e/09/8f5c520e59a4d41591b30b7568595eda6fd71c08701bb316d15b7ed0613a/zstandard-0.24.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1bda8a85e5b9d5e73af2e61b23609a8cc1598c1b3b2473969912979205a1ff25", size = 5450895 },
|
| 2704 |
+
{ url = "https://files.pythonhosted.org/packages/d9/3d/02aba892327a67ead8cba160ee835cfa1fc292a9dcb763639e30c07da58b/zstandard-0.24.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1b14bc92af065d0534856bf1b30fc48753163ea673da98857ea4932be62079b1", size = 5546353 },
|
| 2705 |
+
{ url = "https://files.pythonhosted.org/packages/6a/6e/96c52afcde44da6a5313a1f6c356349792079808f12d8b69a7d1d98ef353/zstandard-0.24.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:b4f20417a4f511c656762b001ec827500cbee54d1810253c6ca2df2c0a307a5f", size = 5046404 },
|
| 2706 |
+
{ url = "https://files.pythonhosted.org/packages/da/b6/eefee6b92d341a7db7cd1b3885d42d30476a093720fb5c181e35b236d695/zstandard-0.24.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:337572a7340e1d92fd7fb5248c8300d0e91071002d92e0b8cabe8d9ae7b58159", size = 5576095 },
|
| 2707 |
+
{ url = "https://files.pythonhosted.org/packages/a3/29/743de3131f6239ba6611e17199581e6b5e0f03f268924d42468e29468ca0/zstandard-0.24.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:df4be1cf6e8f0f2bbe2a3eabfff163ef592c84a40e1a20a8d7db7f27cfe08fc2", size = 4953448 },
|
| 2708 |
+
{ url = "https://files.pythonhosted.org/packages/c9/11/bd36ef49fba82e307d69d93b5abbdcdc47d6a0bcbc7ffbbfe0ef74c2fec5/zstandard-0.24.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6885ae4b33aee8835dbdb4249d3dfec09af55e705d74d9b660bfb9da51baaa8b", size = 5267388 },
|
| 2709 |
+
{ url = "https://files.pythonhosted.org/packages/c0/23/a4cfe1b871d3f1ce1f88f5c68d7e922e94be0043f3ae5ed58c11578d1e21/zstandard-0.24.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:663848a8bac4fdbba27feea2926049fdf7b55ec545d5b9aea096ef21e7f0b079", size = 5433383 },
|
| 2710 |
+
{ url = "https://files.pythonhosted.org/packages/77/26/f3fb85f00e732cca617d4b9cd1ffa6484f613ea07fad872a8bdc3a0ce753/zstandard-0.24.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:05d27c953f2e0a3ecc8edbe91d6827736acc4c04d0479672e0400ccdb23d818c", size = 5813988 },
|
| 2711 |
+
{ url = "https://files.pythonhosted.org/packages/3d/8c/d7e3b424b73f3ce66e754595cbcb6d94ff49790c9ac37d50e40e8145cd44/zstandard-0.24.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:77b8b7b98893eaf47da03d262816f01f251c2aa059c063ed8a45c50eada123a5", size = 5359756 },
|
| 2712 |
+
{ url = "https://files.pythonhosted.org/packages/90/6c/f1f0e11f1b295138f9da7e7ae22dcd9a1bb96a9544fa3b31507e431288f5/zstandard-0.24.0-cp313-cp313-win32.whl", hash = "sha256:cf7fbb4e54136e9a03c7ed7691843c4df6d2ecc854a2541f840665f4f2bb2edd", size = 435957 },
|
| 2713 |
+
{ url = "https://files.pythonhosted.org/packages/9f/03/ab8b82ae5eb49eca4d3662705399c44442666cc1ce45f44f2d263bb1ae31/zstandard-0.24.0-cp313-cp313-win_amd64.whl", hash = "sha256:d64899cc0f33a8f446f1e60bffc21fa88b99f0e8208750d9144ea717610a80ce", size = 505171 },
|
| 2714 |
+
{ url = "https://files.pythonhosted.org/packages/db/12/89a2ecdea4bc73a934a30b66a7cfac5af352beac94d46cf289e103b65c34/zstandard-0.24.0-cp313-cp313-win_arm64.whl", hash = "sha256:57be3abb4313e0dd625596376bbb607f40059d801d51c1a1da94d7477e63b255", size = 461596 },
|
| 2715 |
+
{ url = "https://files.pythonhosted.org/packages/c9/56/f3d2c4d64aacee4aab89e788783636884786b6f8334c819f09bff1aa207b/zstandard-0.24.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b7fa260dd2731afd0dfa47881c30239f422d00faee4b8b341d3e597cface1483", size = 795747 },
|
| 2716 |
+
{ url = "https://files.pythonhosted.org/packages/32/2d/9d3e5f6627e4cb5e511803788be1feee2f0c3b94594591e92b81db324253/zstandard-0.24.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e05d66239d14a04b4717998b736a25494372b1b2409339b04bf42aa4663bf251", size = 640475 },
|
| 2717 |
+
{ url = "https://files.pythonhosted.org/packages/be/5d/48e66abf8c146d95330e5385633a8cfdd556fa8bd14856fe721590cbab2b/zstandard-0.24.0-cp314-cp314-manylinux2010_i686.manylinux2014_i686.manylinux_2_12_i686.manylinux_2_17_i686.whl", hash = "sha256:622e1e04bd8a085994e02313ba06fbcf4f9ed9a488c6a77a8dbc0692abab6a38", size = 5343866 },
|
| 2718 |
+
{ url = "https://files.pythonhosted.org/packages/95/6c/65fe7ba71220a551e082e4a52790487f1d6bb8dfc2156883e088f975ad6d/zstandard-0.24.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:55872e818598319f065e8192ebefecd6ac05f62a43f055ed71884b0a26218f41", size = 5062719 },
|
| 2719 |
+
{ url = "https://files.pythonhosted.org/packages/cb/68/15ed0a813ff91be80cc2a610ac42e0fc8d29daa737de247bbf4bab9429a1/zstandard-0.24.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:bb2446a55b3a0fd8aa02aa7194bd64740015464a2daaf160d2025204e1d7c282", size = 5393090 },
|
| 2720 |
+
{ url = "https://files.pythonhosted.org/packages/d4/89/e560427b74fa2da6a12b8f3af8ee29104fe2bb069a25e7d314c35eec7732/zstandard-0.24.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:2825a3951f945fb2613ded0f517d402b1e5a68e87e0ee65f5bd224a8333a9a46", size = 5450383 },
|
| 2721 |
+
{ url = "https://files.pythonhosted.org/packages/a3/95/0498328cbb1693885509f2fc145402b108b750a87a3af65b7250b10bd896/zstandard-0.24.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:09887301001e7a81a3618156bc1759e48588de24bddfdd5b7a4364da9a8fbc20", size = 5546142 },
|
| 2722 |
+
{ url = "https://files.pythonhosted.org/packages/8a/8a/64aa15a726594df3bf5d8decfec14fe20cd788c60890f44fcfc74d98c2cc/zstandard-0.24.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:98ca91dc9602cf351497d5600aa66e6d011a38c085a8237b370433fcb53e3409", size = 4953456 },
|
| 2723 |
+
{ url = "https://files.pythonhosted.org/packages/b0/b6/e94879c5cd6017af57bcba08519ed1228b1ebb15681efd949f4a00199449/zstandard-0.24.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:e69f8e534b4e254f523e2f9d4732cf9c169c327ca1ce0922682aac9a5ee01155", size = 5268287 },
|
| 2724 |
+
{ url = "https://files.pythonhosted.org/packages/fd/e5/1a3b3a93f953dbe9e77e2a19be146e9cd2af31b67b1419d6cc8e8898d409/zstandard-0.24.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:444633b487a711e34f4bccc46a0c5dfbe1aee82c1a511e58cdc16f6bd66f187c", size = 5433197 },
|
| 2725 |
+
{ url = "https://files.pythonhosted.org/packages/39/83/b6eb1e1181de994b29804e1e0d2dc677bece4177f588c71653093cb4f6d5/zstandard-0.24.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f7d3fe9e1483171e9183ffdb1fab07c5fef80a9c3840374a38ec2ab869ebae20", size = 5813161 },
|
| 2726 |
+
{ url = "https://files.pythonhosted.org/packages/f6/d3/2fb4166561591e9d75e8e35c79182aa9456644e2f4536f29e51216d1c513/zstandard-0.24.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:27b6fa72b57824a3f7901fc9cc4ce1c1c834b28f3a43d1d4254c64c8f11149d4", size = 5359831 },
|
| 2727 |
+
{ url = "https://files.pythonhosted.org/packages/11/94/6a9227315b774f64a67445f62152c69b4e5e49a52a3c7c4dad8520a55e20/zstandard-0.24.0-cp314-cp314-win32.whl", hash = "sha256:fdc7a52a4cdaf7293e10813fd6a3abc0c7753660db12a3b864ab1fb5a0c60c16", size = 444448 },
|
| 2728 |
+
{ url = "https://files.pythonhosted.org/packages/fc/de/67acaba311013e0798cb96d1a2685cb6edcdfc1cae378b297ea7b02c319f/zstandard-0.24.0-cp314-cp314-win_amd64.whl", hash = "sha256:656ed895b28c7e42dd5b40dfcea3217cfc166b6b7eef88c3da2f5fc62484035b", size = 516075 },
|
| 2729 |
+
{ url = "https://files.pythonhosted.org/packages/10/ae/45fd8921263cea0228b20aa31bce47cc66016b2aba1afae1c6adcc3dbb1f/zstandard-0.24.0-cp314-cp314-win_arm64.whl", hash = "sha256:0101f835da7de08375f380192ff75135527e46e3f79bef224e3c49cb640fef6a", size = 476847 },
|
| 2730 |
+
]
|