nielsr HF Staff Claude Sonnet 4.5 commited on
Commit
ff3f7cc
·
1 Parent(s): 26d48f5

Update ESANN: add 2026 edition and refactor to new deadlines format

Browse files

- Add ESANN 2026 (April 22-24, Bruges, Belgium)
- Submission deadline: November 19, 2025
- Notification: January 23, 2026
- Conference is hybrid (in-person and online)
- Refactor 2025 entry from legacy deadline format to new deadlines format
- Add machine learning tag and start/end dates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

.gitignore CHANGED
@@ -22,3 +22,22 @@ dist-ssr
22
  *.njsproj
23
  *.sln
24
  *.sw?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  *.njsproj
23
  *.sln
24
  *.sw?
25
+
26
+ # Environments
27
+ env/
28
+ .venv
29
+
30
+ # Keys
31
+ *.env
32
+
33
+ # Byte-compiled / optimized / DLL files
34
+ __pycache__/
35
+
36
+ # DS_Store files
37
+ .DS_Store
38
+
39
+ # Outputs folder
40
+ outputs/
41
+
42
+ # Claude Code local settings (contains secrets)
43
+ .claude/settings.local.json
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.12
agents/agent.py ADDED
@@ -0,0 +1,233 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Agent for finding and editing deadlines of a given conference using the Claude Agent SDK.
2
+
3
+ Usage:
4
+
5
+ ```bash
6
+ uv run --env-file keys.env -m agents.agent --conference_name <name>
7
+ ```
8
+ """
9
+
10
+ import argparse
11
+ import asyncio
12
+ from datetime import datetime
13
+ import os
14
+ from pathlib import Path
15
+
16
+ import aiofiles
17
+
18
+ from claude_agent_sdk import (
19
+ AssistantMessage,
20
+ ClaudeAgentOptions,
21
+ ResultMessage,
22
+ TextBlock,
23
+ ToolResultBlock,
24
+ ToolUseBlock,
25
+ UserMessage,
26
+ query,
27
+ )
28
+ from claude_agent_sdk.types import McpHttpServerConfig
29
+
30
+ # Script directory for resolving relative paths
31
+ SCRIPT_DIR = Path(__file__).parent
32
+
33
+ # Project root directory (parent of agents/)
34
+ PROJECT_ROOT = SCRIPT_DIR.parent
35
+
36
+
37
+ async def read_prompt(filename: str) -> str:
38
+ """Read a prompt file from the script directory."""
39
+ filepath = SCRIPT_DIR / filename
40
+ async with aiofiles.open(filepath, "r", encoding="utf-8") as f:
41
+ return await f.read()
42
+
43
+
44
+ async def read_app_readme() -> str:
45
+ """Read the app README.md from the project root."""
46
+ readme_path = PROJECT_ROOT / "README.md"
47
+ async with aiofiles.open(readme_path, "r", encoding="utf-8") as f:
48
+ return await f.read()
49
+
50
+
51
+ async def load_conference_data(conference_name: str) -> str:
52
+ """Load conference data from YAML file.
53
+
54
+ Args:
55
+ conference_name: The name of the conference (e.g., 'neurips', 'aaai')
56
+
57
+ Returns:
58
+ The YAML content as a string, or an empty string if file not found.
59
+ """
60
+ yaml_path = PROJECT_ROOT / "src" / "data" / "conferences" / f"{conference_name}.yml"
61
+
62
+ if not yaml_path.exists():
63
+ print(f"Warning: Conference file not found at {yaml_path}")
64
+ return ""
65
+
66
+ async with aiofiles.open(yaml_path, "r", encoding="utf-8") as f:
67
+ return await f.read()
68
+
69
+
70
+ def format_user_prompt(template: str, conference_name: str, conference_data: str) -> str:
71
+ """Format the user prompt template with conference name and data.
72
+
73
+ Args:
74
+ template: The user prompt template with placeholders.
75
+ conference_name: The name of the conference.
76
+ conference_data: The YAML content of the conference data.
77
+
78
+ Returns:
79
+ The formatted user prompt.
80
+ """
81
+ return template.format(
82
+ conference_name=conference_name,
83
+ conference_data=conference_data if conference_data else "No existing data found.",
84
+ )
85
+
86
+
87
+ async def find_conference_deadlines(conference_name: str) -> None:
88
+ """Find the deadlines of a given conference using the Claude Agent SDK.
89
+
90
+ Args:
91
+ conference_name: The name of the conference to find the deadlines of.
92
+ """
93
+ print(f"Processing conference: {conference_name}")
94
+
95
+ # Load conference data from YAML file
96
+ conference_data = await load_conference_data(conference_name)
97
+
98
+ # Read app README for system prompt
99
+ app_readme = await read_app_readme()
100
+
101
+ # Read and format system prompt
102
+ system_prompt_template = await read_prompt("prompts/system_prompt.md")
103
+ from datetime import datetime
104
+
105
+ def format_date_verbose(dt: datetime) -> str:
106
+ # e.g. "Monday, the 1st of April, 2025"
107
+ day = dt.day
108
+ suffix = "th" if 11 <= day <= 13 else {1: "st", 2: "nd", 3: "rd"}.get(day % 10, "th")
109
+ return f"{dt.strftime('%A')}, the {day}{suffix} of {dt.strftime('%B')}, {dt.year}"
110
+
111
+ system_prompt = system_prompt_template.format(
112
+ date=format_date_verbose(datetime.now()),
113
+ app_readme=app_readme,
114
+ )
115
+
116
+ # User prompt is a simple instruction to find deadlines
117
+ user_prompt_template = await read_prompt("prompts/user_prompt.md")
118
+ user_prompt = format_user_prompt(
119
+ user_prompt_template, conference_name, conference_data
120
+ )
121
+
122
+ # Configure the agent
123
+ # See: https://platform.claude.com/docs/en/agent-sdk/subagents
124
+ # Use absolute path for settings to work both locally and in Modal
125
+ settings_path = PROJECT_ROOT / ".claude" / "settings.local.json"
126
+ if not settings_path.exists():
127
+ # Fallback to home directory (for Modal non-root user)
128
+ settings_path = Path.home() / ".claude" / "settings.local.json"
129
+ settings_path = str(settings_path)
130
+
131
+ # Configure Exa MCP server for web search capabilities
132
+ # See: https://docs.exa.ai/reference/exa-mcp
133
+ exa_api_key = os.environ.get("EXA_API_KEY", "")
134
+ # ?exaApiKey={exa_api_key}
135
+ exa_mcp_url = f"https://mcp.exa.ai/mcp"
136
+
137
+ mcp_servers: dict[str, McpHttpServerConfig] = {
138
+ "exa": McpHttpServerConfig(
139
+ type="http",
140
+ url=exa_mcp_url,
141
+ )
142
+ }
143
+
144
+ options = ClaudeAgentOptions(
145
+ system_prompt=system_prompt,
146
+ permission_mode="bypassPermissions",
147
+ settings=settings_path,
148
+ mcp_servers=mcp_servers,
149
+ )
150
+
151
+ # Run the agent query
152
+ # See: https://platform.claude.com/docs/en/agent-sdk/python
153
+ # Track subagent names by their parent_tool_use_id
154
+ subagent_names: dict[str, str] = {}
155
+ # Track tool names by their tool_use_id for better result logging
156
+ tool_names: dict[str, str] = {}
157
+
158
+ print(f"Starting agent query with settings: {settings_path}")
159
+ print(f"Settings path exists: {Path(settings_path).exists()}")
160
+ print(f"System prompt length: {len(system_prompt)}")
161
+ print(f"Conference data loaded: {len(conference_data)} characters")
162
+ print(f"Exa MCP server configured: {'Yes (API key set)' if exa_api_key else 'Yes (no API key)'}")
163
+
164
+ message_count = 0
165
+ try:
166
+ async for message in query(
167
+ prompt=user_prompt,
168
+ options=options,
169
+ ):
170
+ message_count += 1
171
+ if isinstance(message, AssistantMessage):
172
+ # Determine which agent is making this call
173
+ if message.parent_tool_use_id is None:
174
+ agent_prefix = "[main]"
175
+ else:
176
+ subagent_name = subagent_names.get(
177
+ message.parent_tool_use_id, "subagent"
178
+ )
179
+ agent_prefix = f"[{subagent_name}]"
180
+
181
+ for block in message.content:
182
+ if isinstance(block, TextBlock):
183
+ print(f"{agent_prefix} Claude: {block.text}")
184
+ elif isinstance(block, ToolUseBlock):
185
+ print(f"{agent_prefix} Tool: {block.name}({block.input})")
186
+ # Track tool names for result logging
187
+ tool_names[block.id] = block.name
188
+ # Track Task tool calls to map subagent names
189
+ if block.name == "Task" and isinstance(block.input, dict):
190
+ subagent_type = block.input.get("subagent_type", "subagent")
191
+ subagent_names[block.id] = subagent_type
192
+ elif isinstance(message, UserMessage):
193
+ # UserMessage can contain tool results
194
+ if isinstance(message.content, list):
195
+ for block in message.content:
196
+ if isinstance(block, ToolResultBlock):
197
+ # Get the tool name from our tracking dict
198
+ tool_name = tool_names.get(block.tool_use_id, "unknown")
199
+ # Truncate long results for readability
200
+ content_str = str(block.content) if block.content else "(empty)"
201
+ if len(content_str) > 500:
202
+ content_str = content_str[:500] + "... (truncated)"
203
+ error_indicator = " [ERROR]" if block.is_error else ""
204
+ print(f"[result]{error_indicator} {tool_name}: {content_str}")
205
+ elif (
206
+ isinstance(message, ResultMessage)
207
+ and message.total_cost_usd
208
+ and message.total_cost_usd > 0
209
+ ):
210
+ print(f"\nCost: ${message.total_cost_usd:.4f}")
211
+ except Exception as e:
212
+ print(f"Error during agent query: {type(e).__name__}: {e}")
213
+ import traceback
214
+
215
+ traceback.print_exc()
216
+
217
+ print(f"\nAgent query completed. Total messages received: {message_count}")
218
+
219
+
220
+ if __name__ == "__main__":
221
+ parser = argparse.ArgumentParser(
222
+ description="Find conference deadlines using Claude Agent SDK"
223
+ )
224
+ parser.add_argument(
225
+ "--conference_name",
226
+ type=str,
227
+ required=True,
228
+ help="The name of the conference to find the deadlines of",
229
+ )
230
+ args = parser.parse_args()
231
+ conference_name = args.conference_name
232
+
233
+ asyncio.run(find_conference_deadlines(conference_name))
agents/prompts/system_prompt.md ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ You are an AI assistant responsible for managing the data and finding relevant information of a given AI conference such as the dates, location, venue and deadlines.
2
+
3
+ A colleague of yours has built a web app called "AI deadlines", which allows researchers in the field of artificial intelligence (AI) to keep track of the various deadlines for upcoming conferences they are submitting a paper to, such as NeurIPS, CVPR and ICLR. The app is hosted on Hugging Face Spaces at https://huggingface.co/spaces/huggingface/ai-deadlines. The app is written using Vite, TypeScript and React.
4
+
5
+ Each conference has a YAML file which defines various data of the conference like the city, country, venue, deadlines and tags such as "computer vision", "natural language processing".
6
+
7
+ Based on this data, the app allows to view all upcoming deadlines, sorted chronologically. It also allows to filter conferences based on:
8
+ - domain (e.g. "computer vision") based on the "tags" field
9
+ - by country based on the "country" field
10
+ - by their ERA rating (which rates conferences in terms of their quality by giving an A, B or C rating) based on the "era_rating" field.
11
+
12
+ ## Date
13
+
14
+ Today is {date}.
15
+
16
+ ## Task
17
+
18
+ Your task is to search the web and find relevant information of a given AI conference and edit the YAML file accordingly, if possible.
19
+
20
+ ## App README
21
+
22
+ Find the README of the web app below:
23
+
24
+ {app_readme}
25
+
26
+ ## Conference data
27
+
28
+ The data of each conference is stored as a YAML file at /Users/nielsrogge/Documents/python_projecten/ai-deadlines-hub/src/data/conferences.
29
+ Note that an "append-only" format is used: when a new year is added, the data is simply duplicated for the new year and adapted accordingly at the bottom of the YAML file.
30
+ Below, we list some details about how the data of each conference is maintained.
31
+
32
+ ### Date
33
+
34
+ The "date" field is always defined by the format "Month x - y, year", e.g. July 3 - 6, 2026.
35
+ Besides, each conference has a "start" and an "end" field which define the start and end date of the conference respectively. These follow the format 'YYYY-MM-DD'.
36
+
37
+ ### Deadlines
38
+
39
+ For deadlines, each deadline is defined by 4 fields:
40
+ - the type e.g. "abstract", "paper", "rebuttal" etc. which is a standardized, predictable identifier for code logic
41
+ - a label e.g. "Abstract submission", "Paper submission", "Rebuttal period start", etc. which is a human-readable label used to display a deadline in the app
42
+ - the date, e.g. '2026-03-26 23:59:59'
43
+ - the timezone, e.g. AoE (which is short for Anywhere-on-Earth).
44
+
45
+ There are 13 distinct type values in use:
46
+
47
+ Type Description
48
+ -----------------------------------------------------------
49
+ abstract Abstract submission deadline
50
+ paper Full paper submission
51
+ submission General submission deadline
52
+ supplementary Supplementary material deadline
53
+ review_release When reviews are released to authors
54
+ rebuttal_start Start of rebuttal period
55
+ rebuttal_end End of rebuttal period
56
+ rebuttal_and_revision Combined rebuttal/revision period
57
+ notification Author notification date
58
+ camera_ready Camera-ready deadline
59
+ registration Paper registration deadline
60
+
61
+ ## Rules
62
+
63
+ When performing web searches, use short queries like "EMNLP 2026 location", "EMNLP 2026 deadlines", and so on.
64
+ Only edit the YAML file in case you find new information that is relevant to be included.
65
+ **IMPORTANT** If you don't Òfind any new information, do not edit any files.
66
+ Only add data which is factual and for which you find evidence.
67
+ Do not search for data of conferences which already have taken place.
68
+ If only a conference of the given year is defined, it makes sense to search for data of the conference for the next year.
69
+ Do not overwrite data of a year, only append in case you add data of a new year.
70
+ Only add deadlines which are upcoming.
71
+ When no timezone information is given, use the Anywhere on Earth (AoE) timezone (UTC+12).
72
+
73
+ ## Refactoring
74
+
75
+ If a conference still uses the legacy "deadline:" and "abstract_deadline" formats, feel free to refactor them to the newer "deadlines" format which lists the type, label, label and timezone of each deadline.
agents/prompts/user_prompt.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Please look at the data for the following conference, and update accordingly if possible:
2
+
3
+ ## Conference name
4
+
5
+ Name: {conference_name}
6
+
7
+ ## Conference data
8
+
9
+ Currently, the following data is in place:
10
+
11
+ {conference_data}
pyproject.toml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "ai-deadlines-hub"
3
+ version = "0.1.0"
4
+ description = "Add your description here"
5
+ readme = "README.md"
6
+ requires-python = ">=3.12"
7
+ dependencies = [
8
+ "aiofiles>=25.1.0",
9
+ "claude-agent-sdk>=0.1.18",
10
+ ]
src/data/conferences/aaai.yml CHANGED
@@ -3,40 +3,90 @@
3
  id: aaai25
4
  full_name: AAAI Conference on Artificial Intelligence
5
  link: https://aaai.org/conference/aaai/aaai-25/
6
- deadline: '2024-08-15 23:59:59'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  timezone: UTC-12
8
  date: February 25 - March 4, 2025
 
 
9
  tags:
10
  - data-mining
11
  - machine-learning
12
  - natural-language-processing
13
  - computer-vision
14
- city: PHILADELPHIA
15
- country: PENNSYLVANIA
16
- abstract_deadline: '2024-08-07 23:59:59'
17
  rankings: 'CCF: A, CORE: A*, THCPL: A'
18
  venue: Pennsylvania Convention Center, Philadelphia, USA
19
  hindex: 212
20
- note: Mandatory abstract deadline on Aug 07, 2024, and supplementary material deadline
21
- on Aug 19, 2024. More info <a href='https://aaai.org/conference/aaai/aaai-25/'>here</a>.
22
 
23
  - title: AAAI
24
  year: 2026
25
  id: aaai26
26
  full_name: AAAI Conference on Artificial Intelligence
27
  link: https://aaai.org/conference/aaai/aaai-26/
28
- deadline: '2025-08-01 23:59:59'
29
- abstract_deadline: '2025-07-25 23:59:59'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  timezone: UTC-12
31
- date: January 20 January 27, 2026
 
 
32
  tags:
33
  - data-mining
34
  - machine-learning
35
  - natural-language-processing
36
  - computer-vision
 
37
  country: Singapore
38
  rankings: 'CCF: A, CORE: A*, THCPL: A'
39
  venue: Singapore EXPO, Singapore
40
  hindex: 220
41
- note: Mandatory abstract deadline on Jul 25, 2025, and supplementary material deadline
42
- on Aug 04, 2025. More info <a href='https://aaai.org/conference/aaai/aaai-26/'>here</a>.
 
3
  id: aaai25
4
  full_name: AAAI Conference on Artificial Intelligence
5
  link: https://aaai.org/conference/aaai/aaai-25/
6
+ deadlines:
7
+ - type: abstract
8
+ label: Abstract submission deadline
9
+ date: '2024-08-07 23:59:59'
10
+ timezone: UTC-12
11
+ - type: paper
12
+ label: Paper submission deadline
13
+ date: '2024-08-15 23:59:59'
14
+ timezone: UTC-12
15
+ - type: notification
16
+ label: Author notification
17
+ date: '2024-12-09 23:59:59'
18
+ timezone: UTC-12
19
+ - type: camera_ready
20
+ label: Camera-ready deadline
21
+ date: '2024-12-19 23:59:59'
22
+ timezone: UTC-12
23
  timezone: UTC-12
24
  date: February 25 - March 4, 2025
25
+ start: 2025-02-25
26
+ end: 2025-03-04
27
  tags:
28
  - data-mining
29
  - machine-learning
30
  - natural-language-processing
31
  - computer-vision
32
+ city: Philadelphia
33
+ country: Pennsylvania
 
34
  rankings: 'CCF: A, CORE: A*, THCPL: A'
35
  venue: Pennsylvania Convention Center, Philadelphia, USA
36
  hindex: 212
37
+ note: All deadlines are "anywhere on earth" (UTC-12). More info <a href='https://aaai.org/conference/aaai/aaai-25/'>here</a>.
 
38
 
39
  - title: AAAI
40
  year: 2026
41
  id: aaai26
42
  full_name: AAAI Conference on Artificial Intelligence
43
  link: https://aaai.org/conference/aaai/aaai-26/
44
+ deadlines:
45
+ - type: abstract
46
+ label: Abstract submission deadline
47
+ date: '2025-07-25 23:59:59'
48
+ timezone: UTC-12
49
+ - type: paper
50
+ label: Paper submission deadline
51
+ date: '2025-08-01 23:59:59'
52
+ timezone: UTC-12
53
+ - type: supplementary
54
+ label: Supplementary material and code deadline
55
+ date: '2025-08-04 23:59:59'
56
+ timezone: UTC-12
57
+ - type: notification
58
+ label: Phase 1 rejection notifications
59
+ date: '2025-09-15 23:59:59'
60
+ timezone: UTC-12
61
+ - type: rebuttal_start
62
+ label: Author feedback window start
63
+ date: '2025-10-07 23:59:59'
64
+ timezone: UTC-12
65
+ - type: rebuttal_end
66
+ label: Author feedback window end
67
+ date: '2025-10-13 23:59:59'
68
+ timezone: UTC-12
69
+ - type: notification
70
+ label: Final acceptance/rejection notices
71
+ date: '2025-11-08 23:59:59'
72
+ timezone: UTC-12
73
+ - type: camera_ready
74
+ label: Camera-ready deadline
75
+ date: '2025-11-13 23:59:59'
76
+ timezone: UTC-12
77
  timezone: UTC-12
78
+ date: January 20 - 27, 2026
79
+ start: 2026-01-20
80
+ end: 2026-01-27
81
  tags:
82
  - data-mining
83
  - machine-learning
84
  - natural-language-processing
85
  - computer-vision
86
+ city: Singapore
87
  country: Singapore
88
  rankings: 'CCF: A, CORE: A*, THCPL: A'
89
  venue: Singapore EXPO, Singapore
90
  hindex: 220
91
+ note: All deadlines are "anywhere on earth" (UTC-12). More info <a href='https://aaai.org/conference/aaai/aaai-26/'>here</a>.
92
+ era_rating: a
src/data/conferences/aamas.yml CHANGED
@@ -16,22 +16,46 @@
16
  end: '2025-05-23'
17
  rankings: 'CCF: B, CORE: A*, THCPL: B'
18
  note: Mandatory abstract deadline on Oct 09, 2024. More info <a href='https://aamas2025.org/'>here</a>.
 
19
  - title: AAMAS
20
  year: 2026
21
  id: aamas26
22
  full_name: International Conference on Autonomous Agents and Multiagent Systems
23
- link: https://aamas2026.org/
24
  deadlines:
25
- - type: submission
26
- label: Abstract deadline on 2025-10-01 23:59:59 UTC-12!
27
- date: '2025-10-09 13:59:59'
28
- timezone: GMT+02
29
- timezone: GMT+02
30
- date: May 27-29, 2026
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  city: Paphos
32
  country: Cyprus
33
- start: 2026-05-27
 
34
  end: 2026-05-29
35
  tags:
36
- - other
37
- note: Abstract deadline on 2025-10-01 23:59:59 UTC-12!
 
 
 
16
  end: '2025-05-23'
17
  rankings: 'CCF: B, CORE: A*, THCPL: B'
18
  note: Mandatory abstract deadline on Oct 09, 2024. More info <a href='https://aamas2025.org/'>here</a>.
19
+
20
  - title: AAMAS
21
  year: 2026
22
  id: aamas26
23
  full_name: International Conference on Autonomous Agents and Multiagent Systems
24
+ link: https://cyprusconferences.org/aamas2026/
25
  deadlines:
26
+ - type: abstract
27
+ label: Abstract submission
28
+ date: '2025-10-01 23:59:59'
29
+ timezone: UTC-12
30
+ - type: paper
31
+ label: Paper submission
32
+ date: '2025-10-08 23:59:59'
33
+ timezone: UTC-12
34
+ - type: rebuttal_start
35
+ label: Rebuttal period start
36
+ date: '2025-11-21 23:59:59'
37
+ timezone: UTC-12
38
+ - type: rebuttal_end
39
+ label: Rebuttal period end
40
+ date: '2025-11-25 23:59:59'
41
+ timezone: UTC-12
42
+ - type: notification
43
+ label: Author notification
44
+ date: '2025-12-22 23:59:59'
45
+ timezone: UTC-12
46
+ - type: camera_ready
47
+ label: Camera-ready deadline
48
+ date: '2026-02-11 23:59:59'
49
+ timezone: UTC-12
50
+ timezone: UTC-12
51
+ date: May 25-29, 2026
52
  city: Paphos
53
  country: Cyprus
54
+ venue: Coral Beach Hotel & Resort, Paphos, Cyprus
55
+ start: 2026-05-25
56
  end: 2026-05-29
57
  tags:
58
+ - machine-learning
59
+ - robotics
60
+ rankings: 'CCF: B, CORE: A*, THCPL: B'
61
+ era_rating: a
src/data/conferences/acl.yml CHANGED
@@ -3,7 +3,19 @@
3
  id: acl25
4
  full_name: Annual Meeting of the Association for Computational Linguistics
5
  link: https://2025.aclweb.org/
6
- deadline: '2025-02-15 23:59:59'
 
 
 
 
 
 
 
 
 
 
 
 
7
  timezone: UTC-12
8
  date: July 27 - August 1, 2025
9
  era_rating: a
@@ -12,8 +24,6 @@
12
  city: Vienna
13
  country: Austria
14
  rankings: 'CCF: A, CORE: A*, THCPL: A'
15
- final_decision_date: '2025-05-15 23:59:59'
16
- commitment_deadline: '2025-04-10 23:59:59'
17
  note: ARR commitment deadline on April 10th, 2025.
18
 
19
  - title: ACL
@@ -21,7 +31,19 @@
21
  id: acl26
22
  full_name: Annual Meeting of the Association for Computational Linguistics
23
  link: https://2026.aclweb.org/
24
- deadline: '2026-01-05 23:59:59'
 
 
 
 
 
 
 
 
 
 
 
 
25
  timezone: UTC-12
26
  date: July 2-7, 2026
27
  era_rating: a
@@ -30,5 +52,3 @@
30
  city: San Diego
31
  country: USA
32
  rankings: 'CCF: A, CORE: A*, THCPL: A'
33
- final_decision_date: '2026-04-04 23:59:59'
34
- commitment_deadline: '2026-03-14 23:59:59'
 
3
  id: acl25
4
  full_name: Annual Meeting of the Association for Computational Linguistics
5
  link: https://2025.aclweb.org/
6
+ deadlines:
7
+ - type: paper
8
+ label: Paper submission deadline
9
+ date: '2025-02-15 23:59:59'
10
+ timezone: UTC-12
11
+ - type: commitment_deadline
12
+ label: ARR commitment deadline
13
+ date: '2025-04-10 23:59:59'
14
+ timezone: UTC-12
15
+ - type: notification
16
+ label: Author notification date
17
+ date: '2025-05-15 23:59:59'
18
+ timezone: UTC-12
19
  timezone: UTC-12
20
  date: July 27 - August 1, 2025
21
  era_rating: a
 
24
  city: Vienna
25
  country: Austria
26
  rankings: 'CCF: A, CORE: A*, THCPL: A'
 
 
27
  note: ARR commitment deadline on April 10th, 2025.
28
 
29
  - title: ACL
 
31
  id: acl26
32
  full_name: Annual Meeting of the Association for Computational Linguistics
33
  link: https://2026.aclweb.org/
34
+ deadlines:
35
+ - type: paper
36
+ label: Paper submission deadline
37
+ date: '2026-01-05 23:59:59'
38
+ timezone: UTC-12
39
+ - type: commitment_deadline
40
+ label: ARR commitment deadline
41
+ date: '2026-03-14 23:59:59'
42
+ timezone: UTC-12
43
+ - type: notification
44
+ label: Author notification date
45
+ date: '2026-04-04 23:59:59'
46
+ timezone: UTC-12
47
  timezone: UTC-12
48
  date: July 2-7, 2026
49
  era_rating: a
 
52
  city: San Diego
53
  country: USA
54
  rankings: 'CCF: A, CORE: A*, THCPL: A'
 
 
src/data/conferences/acm_mm.yml CHANGED
@@ -3,20 +3,33 @@
3
  id: acm25
4
  full_name: ACM Multimedia
5
  link: https://acmmm2025.org/
6
- deadline: '2025-04-11 23:59:59'
7
- abstract_deadline: '2025-04-04 23:59:59'
8
- rebuttal_period_start: '2025-06-22'
9
- rebuttal_period_end: '2025-06-09'
10
- final_decision_date: '2025-07-04'
11
- timezone: UTC-12
 
 
 
 
 
 
 
 
 
 
 
 
12
  city: Dublin
13
  country: Ireland
14
  date: October 27-31, 2025
15
  start: '2025-10-27'
16
  end: '2025-10-31'
17
  venue: Dublin Royal Convention Center, Dublin, Ireland
18
- note: All important dates can be found <a href='https://acmmm2025.org/important-dates/'>here</a>.
19
  tags:
20
  - computer-vision
21
  - machine-learning
22
  - human-computer-interaction
 
 
3
  id: acm25
4
  full_name: ACM Multimedia
5
  link: https://acmmm2025.org/
6
+ deadlines:
7
+ - type: abstract
8
+ label: Abstract submission for regular papers
9
+ date: '2025-04-04 23:59:59'
10
+ timezone: AoE
11
+ - type: paper
12
+ label: Regular paper submission (including supplementary materials, if applicable)
13
+ date: '2025-04-11 23:59:59'
14
+ timezone: AoE
15
+ - type: rebuttal_start
16
+ label: Rebuttal period start
17
+ date: '2025-06-09 23:59:59'
18
+ timezone: AoE
19
+ - type: rebuttal_end
20
+ label: Rebuttal period end
21
+ date: '2025-06-19 23:59:59'
22
+ timezone: AoE
23
+ timezone: AoE
24
  city: Dublin
25
  country: Ireland
26
  date: October 27-31, 2025
27
  start: '2025-10-27'
28
  end: '2025-10-31'
29
  venue: Dublin Royal Convention Center, Dublin, Ireland
30
+ note: All important dates can be found <a href='https://acmmm2025.org/important-dates/'>here</a>. The time for all dates is 23:59 AoE (Anywhere-on-Earth).
31
  tags:
32
  - computer-vision
33
  - machine-learning
34
  - human-computer-interaction
35
+ era_rating: a
src/data/conferences/aistats.yml CHANGED
@@ -17,17 +17,34 @@
17
  venue: TBA
18
  hindex: 100
19
  note: Abstract deadline on October 3, 2024. More info <a href='https://aistats.org/aistats2025/call-for-papers.html'>here</a>
 
20
  - title: AISTATS
21
  year: 2026
22
  id: aistats26
23
  full_name: International Conference on Artificial Intelligence and Statistics
24
  link: https://virtual.aistats.org/Conferences/2026
25
  deadlines:
26
- - type: submission
27
- label: Abstract deadline on 2025-09-25 23:59:59 UTC-12!
28
- date: '2025-10-03 13:59:59'
29
- timezone: GMT+02
30
- timezone: GMT+02
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  date: May 2-5, 2026
32
  tags:
33
  - machine-learning
@@ -38,4 +55,5 @@
38
  rankings: 'CCF: C, CORE: A, THCPL: B'
39
  venue: TBA
40
  hindex: 101
41
- note: Abstract deadline on 2025-09-25 23:59:59 UTC-12!
 
 
17
  venue: TBA
18
  hindex: 100
19
  note: Abstract deadline on October 3, 2024. More info <a href='https://aistats.org/aistats2025/call-for-papers.html'>here</a>
20
+
21
  - title: AISTATS
22
  year: 2026
23
  id: aistats26
24
  full_name: International Conference on Artificial Intelligence and Statistics
25
  link: https://virtual.aistats.org/Conferences/2026
26
  deadlines:
27
+ - type: abstract
28
+ label: Abstract submission deadline
29
+ date: '2025-09-25 23:59:59'
30
+ timezone: AoE
31
+ - type: paper
32
+ label: Full paper submission deadline
33
+ date: '2025-10-02 23:59:59'
34
+ timezone: AoE
35
+ - type: supplementary
36
+ label: Supplementary material deadline
37
+ date: '2025-10-09 23:59:59'
38
+ timezone: AoE
39
+ - type: notification
40
+ label: Paper decision notifications
41
+ date: '2026-01-23 23:59:59'
42
+ timezone: AoE
43
+ - type: camera_ready
44
+ label: Camera-ready deadline
45
+ date: '2026-01-31 23:59:59'
46
+ timezone: AoE
47
+ timezone: AoE
48
  date: May 2-5, 2026
49
  tags:
50
  - machine-learning
 
55
  rankings: 'CCF: C, CORE: A, THCPL: B'
56
  venue: TBA
57
  hindex: 101
58
+ note: More info <a href='https://virtual.aistats.org/Conferences/2026/CallForPapers'>here</a>
59
+ era_rating: b
src/data/conferences/alt.yml CHANGED
@@ -12,3 +12,37 @@
12
  country: Italy
13
  rankings: 'CCF: C, CORE: B, THCPL: B'
14
  venue: Politecnico di Milano, Milan, Italy
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  country: Italy
13
  rankings: 'CCF: C, CORE: B, THCPL: B'
14
  venue: Politecnico di Milano, Milan, Italy
15
+ - title: ALT
16
+ year: 2026
17
+ id: alt2026
18
+ full_name: International Conference on Algorithmic Learning Theory
19
+ link: https://algorithmiclearningtheory.org/alt2026/
20
+ deadlines:
21
+ - type: paper
22
+ label: Paper submission deadline
23
+ date: '2025-10-02 23:59:59'
24
+ timezone: AoE
25
+ - type: notification
26
+ label: Author notification
27
+ date: '2025-12-18 23:59:59'
28
+ timezone: AoE
29
+ - type: rebuttal_start
30
+ label: Author feedback period start
31
+ date: '2025-11-17 23:59:59'
32
+ timezone: AoE
33
+ - type: rebuttal_end
34
+ label: Author feedback period end
35
+ date: '2025-11-23 23:59:59'
36
+ timezone: AoE
37
+ timezone: America/Toronto
38
+ date: February 23-26, 2026
39
+ start: 2026-02-23
40
+ end: 2026-02-26
41
+ tags:
42
+ - machine-learning
43
+ city: Toronto
44
+ country: Canada
45
+ rankings: 'CCF: C, CORE: B, THCPL: B'
46
+ venue: Fields Institute, Toronto, Canada
47
+ note: In-person conference. ShaiFest event on February 27, 2026
48
+ era_rating: a
src/data/conferences/bis.yml CHANGED
@@ -3,7 +3,19 @@
3
  id: bis2026
4
  full_name: International Conference on Business Information Systems
5
  link: https://bisconf.org/2026
6
- deadline: 2026-01-15 23:59
 
 
 
 
 
 
 
 
 
 
 
 
7
  timezone: UTC-12
8
  city: Prague
9
  country: Czech Republic
@@ -18,4 +30,4 @@
18
  - data-mining
19
  - large-language-models
20
  - knowledge-graphs
21
- venue: Prague, Czech Republic
 
3
  id: bis2026
4
  full_name: International Conference on Business Information Systems
5
  link: https://bisconf.org/2026
6
+ deadlines:
7
+ - type: submission
8
+ label: Paper submission deadline
9
+ date: '2026-01-15 23:59:59'
10
+ timezone: UTC-12
11
+ - type: notification
12
+ label: Author notification
13
+ date: '2026-03-04 23:59:59'
14
+ timezone: UTC-12
15
+ - type: camera_ready
16
+ label: Final paper submission
17
+ date: '2026-03-25 23:59:59'
18
+ timezone: UTC-12
19
  timezone: UTC-12
20
  city: Prague
21
  country: Czech Republic
 
30
  - data-mining
31
  - large-language-models
32
  - knowledge-graphs
33
+ venue: Prague University of Economics and Business, Nám. W. Churchilla 4, Prague 130 67, Czech Republic
src/data/conferences/cec.yml CHANGED
@@ -11,3 +11,21 @@
11
  city: Hangzhou
12
  country: China
13
  rankings: 'CCF: N, CORE: B, THCPL: N'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  city: Hangzhou
12
  country: China
13
  rankings: 'CCF: N, CORE: B, THCPL: N'
14
+ - title: CEC
15
+ year: 2026
16
+ id: cec2026
17
+ full_name: IEEE Congress on Evolutionary Computation
18
+ link: https://attend.ieee.org/wcci-2026/
19
+ deadlines:
20
+ - type: paper
21
+ label: Paper submission deadline
22
+ date: '2026-01-31 23:59:59'
23
+ timezone: UTC-12
24
+ timezone: UTC-12
25
+ date: June 21-26, 2026
26
+ tags:
27
+ - machine-learning
28
+ city: Maastricht
29
+ country: Netherlands
30
+ rankings: 'CCF: N, CORE: B, THCPL: N'
31
+ era_rating: a
src/data/conferences/chi.yml CHANGED
@@ -3,9 +3,16 @@
3
  id: chi25
4
  full_name: The ACM Conference on Human Factors in Computing Systems
5
  link: https://chi2025.acm.org/
6
- deadline: '2024-09-12 23:59:59'
7
- abstract_deadline: '2024-09-05 23:59:59'
8
- timezone: UTC-12
 
 
 
 
 
 
 
9
  city: Yokohama
10
  country: Japan
11
  venue: Pacifico Yokohama Conference Center, Yokohama, Japan
@@ -16,14 +23,34 @@
16
  tags:
17
  - human-computer-interaction
18
  note: Mandatory abstract deadline on Sep 05, 2024. More info <a href='https://chi2025.acm.org/for-authors/papers/'>here</a>.
 
19
  - title: CHI
20
  year: 2026
21
  id: chi26
22
  full_name: The ACM Conference on Human Factors in Computing Systems
23
  link: https://chi2026.acm.org/
24
- deadline: '2025-09-11 23:59:59'
25
- abstract_deadline: '2025-09-04 23:59:59'
26
- timezone: UTC-12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  city: Barcelona
28
  country: Spain
29
  venue: Centre de Convencions Internacional de Barcelona, Barcelona, Spain
 
3
  id: chi25
4
  full_name: The ACM Conference on Human Factors in Computing Systems
5
  link: https://chi2025.acm.org/
6
+ deadlines:
7
+ - type: abstract
8
+ label: Abstract/Metadata Due
9
+ date: '2024-09-05 23:59:59'
10
+ timezone: AoE
11
+ - type: paper
12
+ label: Full Paper Due
13
+ date: '2024-09-12 23:59:59'
14
+ timezone: AoE
15
+ timezone: AoE
16
  city: Yokohama
17
  country: Japan
18
  venue: Pacifico Yokohama Conference Center, Yokohama, Japan
 
23
  tags:
24
  - human-computer-interaction
25
  note: Mandatory abstract deadline on Sep 05, 2024. More info <a href='https://chi2025.acm.org/for-authors/papers/'>here</a>.
26
+
27
  - title: CHI
28
  year: 2026
29
  id: chi26
30
  full_name: The ACM Conference on Human Factors in Computing Systems
31
  link: https://chi2026.acm.org/
32
+ deadlines:
33
+ - type: abstract
34
+ label: Abstract/Metadata Due
35
+ date: '2025-09-04 23:59:59'
36
+ timezone: AoE
37
+ - type: paper
38
+ label: Full Paper Due
39
+ date: '2025-09-11 23:59:59'
40
+ timezone: AoE
41
+ - type: review_release
42
+ label: Reviews Released
43
+ date: '2025-11-04 23:59:59'
44
+ timezone: AoE
45
+ - type: rebuttal_and_revision
46
+ label: Resubmission Due
47
+ date: '2025-12-04 23:59:59'
48
+ timezone: AoE
49
+ - type: notification
50
+ label: Decisions Notification
51
+ date: '2026-01-15 23:59:59'
52
+ timezone: AoE
53
+ timezone: AoE
54
  city: Barcelona
55
  country: Spain
56
  venue: Centre de Convencions Internacional de Barcelona, Barcelona, Spain
src/data/conferences/cikm.yml CHANGED
@@ -2,19 +2,35 @@
2
  year: 2025
3
  id: cikm25
4
  full_name: Conference on Information and Knowledge Management
5
- note: Abstract deadline on May 16, 2025
6
  link: https://cikm2025.org/
7
- deadline: '2025-05-23 23:59:00'
8
- timezone: UTC-12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  city: Seoul
10
  country: South Korea
11
  venue: COEX, Seoul, South Korea
12
- date: November 11-14, 2025
13
- start: 2025-11-11
14
  end: 2025-11-14
15
  tags:
16
  - web-search
17
  - data-mining
18
  - machine-learning
19
- abstract_deadline: '2025-05-16 23:59:00'
20
  hindex: 91.0
 
 
2
  year: 2025
3
  id: cikm25
4
  full_name: Conference on Information and Knowledge Management
5
+ note: All deadlines are at 11:59pm AoE
6
  link: https://cikm2025.org/
7
+ deadlines:
8
+ - type: abstract
9
+ label: Abstract submission deadline
10
+ date: '2025-05-16 23:59:00'
11
+ timezone: AoE
12
+ - type: paper
13
+ label: Full paper submission deadline
14
+ date: '2025-05-23 23:59:00'
15
+ timezone: AoE
16
+ - type: notification
17
+ label: Author notification
18
+ date: '2025-08-04 23:59:00'
19
+ timezone: AoE
20
+ - type: camera_ready
21
+ label: Camera-ready deadline
22
+ date: '2025-08-27 23:59:00'
23
+ timezone: AoE
24
+ timezone: AoE
25
  city: Seoul
26
  country: South Korea
27
  venue: COEX, Seoul, South Korea
28
+ date: November 10-14, 2025
29
+ start: 2025-11-10
30
  end: 2025-11-14
31
  tags:
32
  - web-search
33
  - data-mining
34
  - machine-learning
 
35
  hindex: 91.0
36
+ era_rating: a
src/data/conferences/coling.yml CHANGED
@@ -1,9 +1,13 @@
1
  - title: COLING
2
  year: 2025
3
  id: coling25
4
- full_name: INTERNATIONNAL CONFERENCE ON COMPUTATIONAL LINGUISTICS
5
  link: https://coling2025.org/
6
- deadline: '2024-09-16 23:59:59'
 
 
 
 
7
  timezone: UTC-12
8
  date: Jan 19 - Jan 24, 2025
9
  tags:
@@ -15,4 +19,5 @@
15
  rankings: 'CCF: B, CORE: B, THCPL: B'
16
  venue: Abu Dhabi National Exhibition Centre (ADNEC), Abu Dhabi, UAE
17
  hindex: 73
 
18
  note: More info can be found <a href="https://coling2025.org/calls/main_conference_papers/#important-dates">here</a>.
 
1
  - title: COLING
2
  year: 2025
3
  id: coling25
4
+ full_name: International Conference on Computational Linguistics
5
  link: https://coling2025.org/
6
+ deadlines:
7
+ - type: submission
8
+ label: Paper submission deadline
9
+ date: '2024-09-16 23:59:59'
10
+ timezone: UTC-12
11
  timezone: UTC-12
12
  date: Jan 19 - Jan 24, 2025
13
  tags:
 
19
  rankings: 'CCF: B, CORE: B, THCPL: B'
20
  venue: Abu Dhabi National Exhibition Centre (ADNEC), Abu Dhabi, UAE
21
  hindex: 73
22
+ era_rating: a
23
  note: More info can be found <a href="https://coling2025.org/calls/main_conference_papers/#important-dates">here</a>.
src/data/conferences/collas.yml CHANGED
@@ -3,9 +3,16 @@
3
  id: collas25
4
  full_name: Conference on Lifelong Learning Agents
5
  link: https://lifelong-ml.cc
6
- deadline: '2025-03-03 23:59:59'
7
- abstract_deadline: '2025-02-26 23:59:59'
8
- timezone: UTC-12
 
 
 
 
 
 
 
9
  city: Philadelphia
10
  country: USA
11
  date: August 11-14, 2025
@@ -14,4 +21,4 @@
14
  tags:
15
  - machine-learning
16
  - lifelong-learning
17
- note: Abstract deadline on February 26, 2025. More info <a href='https://lifelong-ml.cc/Conferences/2025/call'>here</a>
 
3
  id: collas25
4
  full_name: Conference on Lifelong Learning Agents
5
  link: https://lifelong-ml.cc
6
+ deadlines:
7
+ - type: abstract
8
+ label: Abstract submission deadline
9
+ date: '2025-02-26 23:59:59'
10
+ timezone: AoE
11
+ - type: paper
12
+ label: Paper submission deadline
13
+ date: '2025-03-03 23:59:59'
14
+ timezone: AoE
15
+ timezone: AoE
16
  city: Philadelphia
17
  country: USA
18
  date: August 11-14, 2025
 
21
  tags:
22
  - machine-learning
23
  - lifelong-learning
24
+ note: This conference has already taken place. More info <a href='https://lifelong-ml.cc/Conferences/2025/call'>here</a>
src/data/conferences/colm.yml CHANGED
@@ -3,15 +3,22 @@
3
  id: colm25
4
  full_name: Conference on Language Modeling
5
  link: https://colmweb.org/cfp.html
6
- deadline: '2025-03-27 23:59:59'
 
 
 
 
 
 
 
 
7
  timezone: AoE
8
- date: October 7-9, 2025
9
  era_rating: a
10
  tags:
11
  - natural-language-processing
12
  city: Montreal
13
  country: Canada
14
- abstract_deadline: '2025-03-20 23:59:59'
15
  rankings: 'CCF: N, CORE: N, THCPL: N'
16
  venue: Palais des Congrès Montreal, Canada
17
 
@@ -30,7 +37,7 @@
30
  date: '2026-03-31 23:59:59'
31
  timezone: AoE
32
  timezone: AoE
33
- date: October 7-9, 2026
34
  city: San Francisco
35
  country: USA
36
  era_rating: a
 
3
  id: colm25
4
  full_name: Conference on Language Modeling
5
  link: https://colmweb.org/cfp.html
6
+ deadlines:
7
+ - type: abstract
8
+ label: Abstract Submission
9
+ date: '2025-03-22 23:59:59'
10
+ timezone: AoE
11
+ - type: paper
12
+ label: Paper Submission
13
+ date: '2025-03-28 23:59:59'
14
+ timezone: AoE
15
  timezone: AoE
16
+ date: October 7-10, 2025
17
  era_rating: a
18
  tags:
19
  - natural-language-processing
20
  city: Montreal
21
  country: Canada
 
22
  rankings: 'CCF: N, CORE: N, THCPL: N'
23
  venue: Palais des Congrès Montreal, Canada
24
 
 
37
  date: '2026-03-31 23:59:59'
38
  timezone: AoE
39
  timezone: AoE
40
+ date: October 6-9, 2026
41
  city: San Francisco
42
  country: USA
43
  era_rating: a
src/data/conferences/colt.yml CHANGED
@@ -3,7 +3,11 @@
3
  id: colt25
4
  full_name: Annual Conference on Learning Theory
5
  link: https://learningtheory.org/colt2025/
6
- deadline: '2025-02-06 16:59:59'
 
 
 
 
7
  timezone: UTC-5
8
  date: June 30 - July 4, 2025
9
  tags:
@@ -11,3 +15,38 @@
11
  city: Lyon
12
  country: France
13
  rankings: 'CCF: B, CORE: A*, THCPL: A'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  id: colt25
4
  full_name: Annual Conference on Learning Theory
5
  link: https://learningtheory.org/colt2025/
6
+ deadlines:
7
+ - type: submission
8
+ label: Paper submission deadline
9
+ date: '2025-02-06 16:59:59'
10
+ timezone: UTC-5
11
  timezone: UTC-5
12
  date: June 30 - July 4, 2025
13
  tags:
 
15
  city: Lyon
16
  country: France
17
  rankings: 'CCF: B, CORE: A*, THCPL: A'
18
+ era_rating: a
19
+ - title: COLT
20
+ year: 2026
21
+ id: colt26
22
+ full_name: Annual Conference on Learning Theory
23
+ link: https://learningtheory.org/colt2026/
24
+ deadlines:
25
+ - type: submission
26
+ label: Paper submission deadline
27
+ date: '2026-02-04 23:59:59'
28
+ timezone: UTC-12
29
+ - type: review_release
30
+ label: Reviews released
31
+ date: '2026-04-03 00:00:00'
32
+ timezone: UTC-12
33
+ - type: rebuttal_start
34
+ label: Initial author response due
35
+ date: '2026-04-10 00:00:00'
36
+ timezone: UTC-12
37
+ - type: rebuttal_end
38
+ label: Discussion period
39
+ date: '2026-04-20 23:59:59'
40
+ timezone: UTC-12
41
+ - type: notification
42
+ label: Author notification
43
+ date: '2026-05-04 00:00:00'
44
+ timezone: UTC-12
45
+ timezone: UTC-12
46
+ date: June 29 - July 3, 2026
47
+ tags:
48
+ - machine-learning
49
+ city: San Diego
50
+ country: United States
51
+ rankings: 'CCF: B, CORE: A*, THCPL: A'
52
+ era_rating: a
src/data/conferences/conll.yml CHANGED
@@ -21,13 +21,13 @@
21
  full_name: The SIGNLL Conference on Computational Natural Language Learning
22
  link: https://conll.org/
23
  deadlines:
24
- - type: abstract
25
- label: Abstract Submission
26
  date: '2026-02-19 23:59:59'
27
  timezone: UTC-12
28
  - type: notification
29
  label: Notification of acceptance
30
- date: '2026-05-21 23:59:59'
31
  timezone: UTC-12
32
  - type: camera_ready
33
  label: Camera-ready papers due
@@ -38,4 +38,6 @@
38
  country: USA
39
  date: July 3-4, 2026
40
  tags:
41
- - natural-language-processing
 
 
 
21
  full_name: The SIGNLL Conference on Computational Natural Language Learning
22
  link: https://conll.org/
23
  deadlines:
24
+ - type: paper
25
+ label: Paper submission deadline
26
  date: '2026-02-19 23:59:59'
27
  timezone: UTC-12
28
  - type: notification
29
  label: Notification of acceptance
30
+ date: '2026-04-21 23:59:59'
31
  timezone: UTC-12
32
  - type: camera_ready
33
  label: Camera-ready papers due
 
38
  country: USA
39
  date: July 3-4, 2026
40
  tags:
41
+ - natural-language-processing
42
+ rankings: 'CCF: B, CORE: A, THCPL: B'
43
+ era_rating: a
src/data/conferences/corl.yml CHANGED
@@ -15,3 +15,22 @@
15
  venue: COEX Convention & Exhibition Center, Seoul, South Korea
16
  start: '2025-09-27'
17
  end: '2025-09-30'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  venue: COEX Convention & Exhibition Center, Seoul, South Korea
16
  start: '2025-09-27'
17
  end: '2025-09-30'
18
+
19
+ - title: CoRL
20
+ year: 2026
21
+ id: corl26
22
+ full_name: The Conference on Robot Learning
23
+ link: https://www.corl.org/
24
+ deadline: null
25
+ timezone: AoE
26
+ date: TBD 2026
27
+ tags:
28
+ - machine-learning
29
+ - robotics
30
+ city: Austin
31
+ country: United States
32
+ rankings: 'CCF: N, CORE: N, THCPL: N'
33
+ venue: TBD
34
+ start: null
35
+ end: null
36
+ note: Conference announced for Austin, TX. Specific dates and venue TBD.
src/data/conferences/cpal.yml CHANGED
@@ -3,11 +3,46 @@
3
  id: cpal25
4
  full_name: The Conference on Parsimony and Learning
5
  link: https://cpal.cc/
6
- deadline: '2024-11-25 23:59:59'
 
 
 
 
7
  timezone: AoE
8
  date: March 24-27, 2025
 
 
9
  tags:
10
  - machine-learning
11
- city: California
12
  country: USA
 
13
  rankings: 'CCF: N, CORE: N, THCPL: N'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  id: cpal25
4
  full_name: The Conference on Parsimony and Learning
5
  link: https://cpal.cc/
6
+ deadlines:
7
+ - type: submission
8
+ label: Paper submission deadline
9
+ date: '2024-11-25 23:59:59'
10
+ timezone: AoE
11
  timezone: AoE
12
  date: March 24-27, 2025
13
+ start: '2025-03-24'
14
+ end: '2025-03-27'
15
  tags:
16
  - machine-learning
17
+ city: Stanford
18
  country: USA
19
+ venue: Simonyi Conference Center, Stanford University
20
  rankings: 'CCF: N, CORE: N, THCPL: N'
21
+ - title: CPAL
22
+ year: 2026
23
+ id: cpal26
24
+ full_name: The Conference on Parsimony and Learning
25
+ link: https://cpal.cc/
26
+ deadlines:
27
+ - type: submission
28
+ label: Paper submission deadline
29
+ date: '2025-12-12 23:59:59'
30
+ timezone: AoE
31
+ - type: abstract
32
+ label: Tutorial proposals deadline
33
+ date: '2025-12-10 23:59:59'
34
+ timezone: AoE
35
+ - type: submission
36
+ label: Rising Stars Award applications
37
+ date: '2025-12-15 23:59:59'
38
+ timezone: AoE
39
+ timezone: AoE
40
+ date: March 23-26, 2026
41
+ start: '2026-03-23'
42
+ end: '2026-03-26'
43
+ tags:
44
+ - machine-learning
45
+ city: Tübingen
46
+ country: Germany
47
+ venue: Max Planck Institute for Intelligent Systems
48
+ note: Organized by Max Planck Institute for Intelligent Systems and ELLIS Institute Tübingen
src/data/conferences/cvpr.yml CHANGED
@@ -70,7 +70,7 @@
70
  country: USA
71
  abstract_deadline: '2025-11-06 23:59:59'
72
  rankings: 'CCF: A, CORE: A*, THCPL: A'
73
- venue: TBD
74
  hindex: 450
75
  rebuttal_period_end: '2026-01-29 23:59:59'
76
  final_decision_date: '2026-02-20 23:59:59'
 
70
  country: USA
71
  abstract_deadline: '2025-11-06 23:59:59'
72
  rankings: 'CCF: A, CORE: A*, THCPL: A'
73
+ venue: Denver Convention Center, Denver, USA
74
  hindex: 450
75
  rebuttal_period_end: '2026-01-29 23:59:59'
76
  final_decision_date: '2026-02-20 23:59:59'
src/data/conferences/eccv.yml CHANGED
@@ -3,11 +3,19 @@
3
  id: eecv26
4
  full_name: European Conference on Computer Vision
5
  link: https://eccv.ecva.net/Conferences/2026
6
- deadline: '2026-03-06 11:00:00'
7
- timezone: UTC+0
8
  city: Malmö
9
  country: Sweden
10
  date: September 8-13, 2026
11
  era_rating: a
12
  tags:
13
  - computer-vision
 
 
 
 
 
 
 
 
 
 
 
3
  id: eecv26
4
  full_name: European Conference on Computer Vision
5
  link: https://eccv.ecva.net/Conferences/2026
 
 
6
  city: Malmö
7
  country: Sweden
8
  date: September 8-13, 2026
9
  era_rating: a
10
  tags:
11
  - computer-vision
12
+ deadlines:
13
+ - type: submission
14
+ label: Paper Submission
15
+ date: '2026-03-06 11:00:00'
16
+ timezone: UTC+1
17
+ - type: submission
18
+ label: Workshop/Tutorial Proposal Submission
19
+ date: '2026-02-14 23:59:59'
20
+ timezone: UTC-12
21
+ note: Paper submission deadline on March 6th, 2026 at 12:00 PM CET. Workshop/tutorial proposal deadline on February 14th, 2026 (AOE). Additional deadlines including abstract submission, supplementary materials, review release, rebuttal period, notification, and camera ready will be announced closer to the submission date.
src/data/conferences/emnlp.yml CHANGED
@@ -1,16 +1,33 @@
1
  - title: EMNLP
2
- year: 2025
3
- id: emnlp25
4
  full_name: The annual Conference on Empirical Methods in Natural Language Processing
5
- link: https://2025.emnlp.org/
6
- deadline: '2025-05-19 23:59:59'
7
  timezone: UTC-12
8
- date: November 5 - 9, 2025
9
  tags:
10
  - natural-language-processing
11
- city: Suzhou
12
- country: China
13
  rankings: 'CCF: B, CORE: A*, THCPL: A'
14
- venue: Suzhou, China
15
- start: '2025-11-05'
16
- end: '2025-11-09'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  - title: EMNLP
2
+ year: 2026
3
+ id: emnlp26
4
  full_name: The annual Conference on Empirical Methods in Natural Language Processing
5
+ link: https://2026.emnlp.org/
6
+ deadline: '2026-05-19 23:59:59'
7
  timezone: UTC-12
8
+ date: November 5 - 9, 2026
9
  tags:
10
  - natural-language-processing
11
+ city: TBA
12
+ country: TBA
13
  rankings: 'CCF: B, CORE: A*, THCPL: A'
14
+ venue: TBA
15
+ start: '2026-11-05'
16
+ end: '2026-11-09'
17
+
18
+ - title: EMNLP
19
+ year: 2026
20
+ id: emnlp26
21
+ full_name: The annual Conference on Empirical Methods in Natural Language Processing
22
+ link: https://2026.emnlp.org/
23
+ deadline: '2026-05-19 23:59:59'
24
+ timezone: UTC-12
25
+ date: November 5 - 9, 2026
26
+ tags:
27
+ - natural-language-processing
28
+ city: TBA
29
+ country: TBA
30
+ rankings: 'CCF: B, CORE: A*, THCPL: A'
31
+ venue: TBA
32
+ start: '2026-11-05'
33
+ end: '2026-11-09'
src/data/conferences/esann.yml CHANGED
@@ -4,11 +4,41 @@
4
  full_name: European Symposium on Artificial Neural Networks, Computational Intelligence
5
  and Machine Learning
6
  link: https://www.esann.org/
7
- deadline: '2024-11-20 00:00:00'
8
- timezone: UTC-8
9
- date: April 23 - April 25, 2025
10
- tags: []
 
 
 
 
 
 
11
  city: Bruges
12
  country: Belgium
13
- abstract_deadline: '2024-11-20 00:00:00'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  rankings: 'CCF: N, CORE: B, THCPL: N'
 
4
  full_name: European Symposium on Artificial Neural Networks, Computational Intelligence
5
  and Machine Learning
6
  link: https://www.esann.org/
7
+ deadlines:
8
+ - type: paper
9
+ label: Paper submission deadline
10
+ date: '2024-11-20 00:00:00'
11
+ timezone: UTC-8
12
+ date: April 23 - 25, 2025
13
+ start: 2025-04-23
14
+ end: 2025-04-25
15
+ tags:
16
+ - machine learning
17
  city: Bruges
18
  country: Belgium
19
+ rankings: 'CCF: N, CORE: B, THCPL: N'
20
+
21
+ - title: ESANN
22
+ year: 2026
23
+ id: esann26
24
+ full_name: European Symposium on Artificial Neural Networks, Computational Intelligence
25
+ and Machine Learning
26
+ link: https://www.esann.org/
27
+ deadlines:
28
+ - type: paper
29
+ label: Paper submission deadline
30
+ date: '2025-11-19 23:59:59'
31
+ timezone: AoE
32
+ - type: notification
33
+ label: Author notification
34
+ date: '2026-01-23 23:59:59'
35
+ timezone: AoE
36
+ date: April 22 - 24, 2026
37
+ start: 2026-04-22
38
+ end: 2026-04-24
39
+ tags:
40
+ - machine learning
41
+ city: Bruges
42
+ country: Belgium
43
+ note: Hybrid event (in-person and online)
44
  rankings: 'CCF: N, CORE: B, THCPL: N'
src/data/conferences/icann.yml CHANGED
@@ -17,3 +17,40 @@
17
  - machine-learning
18
  note: Deadline for full paper submission extended to 29th March 2025. More info
19
  <a href='https://e-nns.org/icann2025'>here</a>.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  - machine-learning
18
  note: Deadline for full paper submission extended to 29th March 2025. More info
19
  <a href='https://e-nns.org/icann2025'>here</a>.
20
+
21
+ - title: ICANN
22
+ year: 2026
23
+ id: icann26
24
+ full_name: 35th International Conference on Artificial Neural Networks
25
+ link: https://e-nns.org/icann2026/
26
+ deadlines:
27
+ - type: abstract
28
+ label: Abstract and Full Paper Submission
29
+ date: '2026-03-16 23:59:59'
30
+ timezone: UTC-12
31
+ - type: submission
32
+ label: Full Paper Submission
33
+ date: '2026-03-16 23:59:59'
34
+ timezone: UTC-12
35
+ - type: notification
36
+ label: Final Notification
37
+ date: '2026-05-29 23:59:59'
38
+ timezone: UTC-12
39
+ - type: camera_ready
40
+ label: Camera-ready Paper Upload and Author Registration
41
+ date: '2026-06-29 23:59:59'
42
+ timezone: UTC-12
43
+ timezone: UTC-12
44
+ city: Padua
45
+ country: Italy
46
+ venue: University of Padua, Padua, Italy
47
+ date: September 14-17, 2026
48
+ start: 2026-09-14
49
+ end: 2026-09-17
50
+ paperslink: https://link.springer.com/conference/icann
51
+ hindex: 32.0
52
+ tags:
53
+ - machine-learning
54
+ - neural-networks
55
+ - artificial-intelligence
56
+ note: 35th International Conference on Artificial Neural Networks. More info <a href='https://e-nns.org/icann2026/call-for-papers-2/'>here</a>.
src/data/conferences/icassp.yml CHANGED
@@ -17,6 +17,7 @@
17
  end: 2025-04-11
18
  tags:
19
  - signal-processing
 
20
  - title: ICASSP
21
  year: 2026
22
  id: icassp26
 
17
  end: 2025-04-11
18
  tags:
19
  - signal-processing
20
+
21
  - title: ICASSP
22
  year: 2026
23
  id: icassp26
src/data/conferences/iclr.yml CHANGED
@@ -20,6 +20,7 @@
20
  hindex: 304
21
  note: Mandatory abstract deadline on September 27, 2024. More info <a href='https://iclr.cc/Conferences/2025/CallForPapers'>here</a>.
22
  city: Singapore
 
23
  - title: ICLR
24
  year: 2026
25
  id: iclr26
 
20
  hindex: 304
21
  note: Mandatory abstract deadline on September 27, 2024. More info <a href='https://iclr.cc/Conferences/2025/CallForPapers'>here</a>.
22
  city: Singapore
23
+
24
  - title: ICLR
25
  year: 2026
26
  id: iclr26
uv.lock ADDED
@@ -0,0 +1,632 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version = 1
2
+ revision = 1
3
+ requires-python = ">=3.12"
4
+
5
+ [[package]]
6
+ name = "ai-deadlines-hub"
7
+ version = "0.1.0"
8
+ source = { virtual = "." }
9
+ dependencies = [
10
+ { name = "aiofiles" },
11
+ { name = "claude-agent-sdk" },
12
+ ]
13
+
14
+ [package.metadata]
15
+ requires-dist = [
16
+ { name = "aiofiles", specifier = ">=25.1.0" },
17
+ { name = "claude-agent-sdk", specifier = ">=0.1.18" },
18
+ ]
19
+
20
+ [[package]]
21
+ name = "aiofiles"
22
+ version = "25.1.0"
23
+ source = { registry = "https://pypi.org/simple" }
24
+ sdist = { url = "https://files.pythonhosted.org/packages/41/c3/534eac40372d8ee36ef40df62ec129bee4fdb5ad9706e58a29be53b2c970/aiofiles-25.1.0.tar.gz", hash = "sha256:a8d728f0a29de45dc521f18f07297428d56992a742f0cd2701ba86e44d23d5b2", size = 46354 }
25
+ wheels = [
26
+ { url = "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl", hash = "sha256:abe311e527c862958650f9438e859c1fa7568a141b22abcd015e120e86a85695", size = 14668 },
27
+ ]
28
+
29
+ [[package]]
30
+ name = "annotated-types"
31
+ version = "0.7.0"
32
+ source = { registry = "https://pypi.org/simple" }
33
+ sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 }
34
+ wheels = [
35
+ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 },
36
+ ]
37
+
38
+ [[package]]
39
+ name = "anyio"
40
+ version = "4.12.0"
41
+ source = { registry = "https://pypi.org/simple" }
42
+ dependencies = [
43
+ { name = "idna" },
44
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
45
+ ]
46
+ sdist = { url = "https://files.pythonhosted.org/packages/16/ce/8a777047513153587e5434fd752e89334ac33e379aa3497db860eeb60377/anyio-4.12.0.tar.gz", hash = "sha256:73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0", size = 228266 }
47
+ wheels = [
48
+ { url = "https://files.pythonhosted.org/packages/7f/9c/36c5c37947ebfb8c7f22e0eb6e4d188ee2d53aa3880f3f2744fb894f0cb1/anyio-4.12.0-py3-none-any.whl", hash = "sha256:dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb", size = 113362 },
49
+ ]
50
+
51
+ [[package]]
52
+ name = "attrs"
53
+ version = "25.4.0"
54
+ source = { registry = "https://pypi.org/simple" }
55
+ sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251 }
56
+ wheels = [
57
+ { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615 },
58
+ ]
59
+
60
+ [[package]]
61
+ name = "certifi"
62
+ version = "2025.11.12"
63
+ source = { registry = "https://pypi.org/simple" }
64
+ sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538 }
65
+ wheels = [
66
+ { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438 },
67
+ ]
68
+
69
+ [[package]]
70
+ name = "cffi"
71
+ version = "2.0.0"
72
+ source = { registry = "https://pypi.org/simple" }
73
+ dependencies = [
74
+ { name = "pycparser", marker = "implementation_name != 'PyPy'" },
75
+ ]
76
+ sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588 }
77
+ wheels = [
78
+ { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271 },
79
+ { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048 },
80
+ { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529 },
81
+ { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097 },
82
+ { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983 },
83
+ { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519 },
84
+ { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572 },
85
+ { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963 },
86
+ { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361 },
87
+ { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932 },
88
+ { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557 },
89
+ { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762 },
90
+ { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230 },
91
+ { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043 },
92
+ { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446 },
93
+ { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101 },
94
+ { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948 },
95
+ { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422 },
96
+ { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499 },
97
+ { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928 },
98
+ { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302 },
99
+ { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909 },
100
+ { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402 },
101
+ { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780 },
102
+ { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320 },
103
+ { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487 },
104
+ { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049 },
105
+ { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793 },
106
+ { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300 },
107
+ { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244 },
108
+ { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828 },
109
+ { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926 },
110
+ { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328 },
111
+ { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650 },
112
+ { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687 },
113
+ { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773 },
114
+ { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013 },
115
+ { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593 },
116
+ { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354 },
117
+ { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480 },
118
+ { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584 },
119
+ { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443 },
120
+ { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437 },
121
+ { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487 },
122
+ { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726 },
123
+ { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195 },
124
+ ]
125
+
126
+ [[package]]
127
+ name = "claude-agent-sdk"
128
+ version = "0.1.18"
129
+ source = { registry = "https://pypi.org/simple" }
130
+ dependencies = [
131
+ { name = "anyio" },
132
+ { name = "mcp" },
133
+ ]
134
+ sdist = { url = "https://files.pythonhosted.org/packages/fd/3d/a8c6ad873e8448696d44441c9eb2c24dded620fb32415d68f576a542ccde/claude_agent_sdk-0.1.18.tar.gz", hash = "sha256:4fcb8730cc77dea562fbe9aa48c65eced3ef58a6bb1f34f77e50e8258902477d", size = 56162 }
135
+ wheels = [
136
+ { url = "https://files.pythonhosted.org/packages/06/14/f529f7c4bab7c71dcbcc8c66f12f491e644ee8a027ac5111d13705df207e/claude_agent_sdk-0.1.18-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9e45b4e3c20c072c3e3325fa60bab9a4b5a7cbbce64ca274b8d7d0af42dd9dd8", size = 54560828 },
137
+ { url = "https://files.pythonhosted.org/packages/2c/68/6e83005aa7bb9056bfad0aef0605249f877dc0c78724c9c0fadebff600fb/claude_agent_sdk-0.1.18-py3-none-manylinux_2_17_aarch64.whl", hash = "sha256:3c41bd8f38848609ae0d5da8d7327a4c2d7057a363feafb6fd70df611ea204cc", size = 68743107 },
138
+ { url = "https://files.pythonhosted.org/packages/fb/85/7d6dd85f402135a610894734c442f1166ffed61d03eced39d6bfd14efccd/claude_agent_sdk-0.1.18-py3-none-manylinux_2_17_x86_64.whl", hash = "sha256:983f15e51253f40c55136a86d7cc63e023a3576428b05fa1459093d461b2d215", size = 70444964 },
139
+ { url = "https://files.pythonhosted.org/packages/3c/fa/d2b22b7a713c4c049cbd5f9f635836ea5429ff65c1f3bcf4658a8e1c1cf5/claude_agent_sdk-0.1.18-py3-none-win_amd64.whl", hash = "sha256:36f5b84d5c3c8773ee9b56aeb5ab345d1033231db37f80d1f20ac15239bef41c", size = 72637215 },
140
+ ]
141
+
142
+ [[package]]
143
+ name = "click"
144
+ version = "8.3.1"
145
+ source = { registry = "https://pypi.org/simple" }
146
+ dependencies = [
147
+ { name = "colorama", marker = "sys_platform == 'win32'" },
148
+ ]
149
+ sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065 }
150
+ wheels = [
151
+ { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274 },
152
+ ]
153
+
154
+ [[package]]
155
+ name = "colorama"
156
+ version = "0.4.6"
157
+ source = { registry = "https://pypi.org/simple" }
158
+ sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 }
159
+ wheels = [
160
+ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
161
+ ]
162
+
163
+ [[package]]
164
+ name = "cryptography"
165
+ version = "46.0.3"
166
+ source = { registry = "https://pypi.org/simple" }
167
+ dependencies = [
168
+ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
169
+ ]
170
+ sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258 }
171
+ wheels = [
172
+ { url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004 },
173
+ { url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667 },
174
+ { url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807 },
175
+ { url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615 },
176
+ { url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800 },
177
+ { url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707 },
178
+ { url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541 },
179
+ { url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464 },
180
+ { url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838 },
181
+ { url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596 },
182
+ { url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782 },
183
+ { url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381 },
184
+ { url = "https://files.pythonhosted.org/packages/96/92/8a6a9525893325fc057a01f654d7efc2c64b9de90413adcf605a85744ff4/cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018", size = 3055988 },
185
+ { url = "https://files.pythonhosted.org/packages/7e/bf/80fbf45253ea585a1e492a6a17efcb93467701fa79e71550a430c5e60df0/cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", size = 3514451 },
186
+ { url = "https://files.pythonhosted.org/packages/2e/af/9b302da4c87b0beb9db4e756386a7c6c5b8003cd0e742277888d352ae91d/cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", size = 2928007 },
187
+ { url = "https://files.pythonhosted.org/packages/f5/e2/a510aa736755bffa9d2f75029c229111a1d02f8ecd5de03078f4c18d91a3/cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", size = 7158012 },
188
+ { url = "https://files.pythonhosted.org/packages/73/dc/9aa866fbdbb95b02e7f9d086f1fccfeebf8953509b87e3f28fff927ff8a0/cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", size = 4288728 },
189
+ { url = "https://files.pythonhosted.org/packages/c5/fd/bc1daf8230eaa075184cbbf5f8cd00ba9db4fd32d63fb83da4671b72ed8a/cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", size = 4435078 },
190
+ { url = "https://files.pythonhosted.org/packages/82/98/d3bd5407ce4c60017f8ff9e63ffee4200ab3e23fe05b765cab805a7db008/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", size = 4293460 },
191
+ { url = "https://files.pythonhosted.org/packages/26/e9/e23e7900983c2b8af7a08098db406cf989d7f09caea7897e347598d4cd5b/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", size = 3995237 },
192
+ { url = "https://files.pythonhosted.org/packages/91/15/af68c509d4a138cfe299d0d7ddb14afba15233223ebd933b4bbdbc7155d3/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", size = 4967344 },
193
+ { url = "https://files.pythonhosted.org/packages/ca/e3/8643d077c53868b681af077edf6b3cb58288b5423610f21c62aadcbe99f4/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", size = 4466564 },
194
+ { url = "https://files.pythonhosted.org/packages/0e/43/c1e8726fa59c236ff477ff2b5dc071e54b21e5a1e51aa2cee1676f1c986f/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", size = 4292415 },
195
+ { url = "https://files.pythonhosted.org/packages/42/f9/2f8fefdb1aee8a8e3256a0568cffc4e6d517b256a2fe97a029b3f1b9fe7e/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", size = 4931457 },
196
+ { url = "https://files.pythonhosted.org/packages/79/30/9b54127a9a778ccd6d27c3da7563e9f2d341826075ceab89ae3b41bf5be2/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", size = 4466074 },
197
+ { url = "https://files.pythonhosted.org/packages/ac/68/b4f4a10928e26c941b1b6a179143af9f4d27d88fe84a6a3c53592d2e76bf/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", size = 4420569 },
198
+ { url = "https://files.pythonhosted.org/packages/a3/49/3746dab4c0d1979888f125226357d3262a6dd40e114ac29e3d2abdf1ec55/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", size = 4681941 },
199
+ { url = "https://files.pythonhosted.org/packages/fd/30/27654c1dbaf7e4a3531fa1fc77986d04aefa4d6d78259a62c9dc13d7ad36/cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", size = 3022339 },
200
+ { url = "https://files.pythonhosted.org/packages/f6/30/640f34ccd4d2a1bc88367b54b926b781b5a018d65f404d409aba76a84b1c/cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", size = 3494315 },
201
+ { url = "https://files.pythonhosted.org/packages/ba/8b/88cc7e3bd0a8e7b861f26981f7b820e1f46aa9d26cc482d0feba0ecb4919/cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", size = 2919331 },
202
+ { url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248 },
203
+ { url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089 },
204
+ { url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029 },
205
+ { url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222 },
206
+ { url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280 },
207
+ { url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958 },
208
+ { url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714 },
209
+ { url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970 },
210
+ { url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236 },
211
+ { url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642 },
212
+ { url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126 },
213
+ { url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573 },
214
+ { url = "https://files.pythonhosted.org/packages/0a/6e/1c8331ddf91ca4730ab3086a0f1be19c65510a33b5a441cb334e7a2d2560/cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", size = 3036695 },
215
+ { url = "https://files.pythonhosted.org/packages/90/45/b0d691df20633eff80955a0fc7695ff9051ffce8b69741444bd9ed7bd0db/cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", size = 3501720 },
216
+ { url = "https://files.pythonhosted.org/packages/e8/cb/2da4cc83f5edb9c3257d09e1e7ab7b23f049c7962cae8d842bbef0a9cec9/cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", size = 2918740 },
217
+ ]
218
+
219
+ [[package]]
220
+ name = "h11"
221
+ version = "0.16.0"
222
+ source = { registry = "https://pypi.org/simple" }
223
+ sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 }
224
+ wheels = [
225
+ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 },
226
+ ]
227
+
228
+ [[package]]
229
+ name = "httpcore"
230
+ version = "1.0.9"
231
+ source = { registry = "https://pypi.org/simple" }
232
+ dependencies = [
233
+ { name = "certifi" },
234
+ { name = "h11" },
235
+ ]
236
+ sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 }
237
+ wheels = [
238
+ { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 },
239
+ ]
240
+
241
+ [[package]]
242
+ name = "httpx"
243
+ version = "0.28.1"
244
+ source = { registry = "https://pypi.org/simple" }
245
+ dependencies = [
246
+ { name = "anyio" },
247
+ { name = "certifi" },
248
+ { name = "httpcore" },
249
+ { name = "idna" },
250
+ ]
251
+ sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 }
252
+ wheels = [
253
+ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 },
254
+ ]
255
+
256
+ [[package]]
257
+ name = "httpx-sse"
258
+ version = "0.4.3"
259
+ source = { registry = "https://pypi.org/simple" }
260
+ sdist = { url = "https://files.pythonhosted.org/packages/0f/4c/751061ffa58615a32c31b2d82e8482be8dd4a89154f003147acee90f2be9/httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d", size = 15943 }
261
+ wheels = [
262
+ { url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960 },
263
+ ]
264
+
265
+ [[package]]
266
+ name = "idna"
267
+ version = "3.11"
268
+ source = { registry = "https://pypi.org/simple" }
269
+ sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582 }
270
+ wheels = [
271
+ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008 },
272
+ ]
273
+
274
+ [[package]]
275
+ name = "jsonschema"
276
+ version = "4.25.1"
277
+ source = { registry = "https://pypi.org/simple" }
278
+ dependencies = [
279
+ { name = "attrs" },
280
+ { name = "jsonschema-specifications" },
281
+ { name = "referencing" },
282
+ { name = "rpds-py" },
283
+ ]
284
+ sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342 }
285
+ wheels = [
286
+ { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040 },
287
+ ]
288
+
289
+ [[package]]
290
+ name = "jsonschema-specifications"
291
+ version = "2025.9.1"
292
+ source = { registry = "https://pypi.org/simple" }
293
+ dependencies = [
294
+ { name = "referencing" },
295
+ ]
296
+ sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855 }
297
+ wheels = [
298
+ { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437 },
299
+ ]
300
+
301
+ [[package]]
302
+ name = "mcp"
303
+ version = "1.25.0"
304
+ source = { registry = "https://pypi.org/simple" }
305
+ dependencies = [
306
+ { name = "anyio" },
307
+ { name = "httpx" },
308
+ { name = "httpx-sse" },
309
+ { name = "jsonschema" },
310
+ { name = "pydantic" },
311
+ { name = "pydantic-settings" },
312
+ { name = "pyjwt", extra = ["crypto"] },
313
+ { name = "python-multipart" },
314
+ { name = "pywin32", marker = "sys_platform == 'win32'" },
315
+ { name = "sse-starlette" },
316
+ { name = "starlette" },
317
+ { name = "typing-extensions" },
318
+ { name = "typing-inspection" },
319
+ { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
320
+ ]
321
+ sdist = { url = "https://files.pythonhosted.org/packages/d5/2d/649d80a0ecf6a1f82632ca44bec21c0461a9d9fc8934d38cb5b319f2db5e/mcp-1.25.0.tar.gz", hash = "sha256:56310361ebf0364e2d438e5b45f7668cbb124e158bb358333cd06e49e83a6802", size = 605387 }
322
+ wheels = [
323
+ { url = "https://files.pythonhosted.org/packages/e2/fc/6dc7659c2ae5ddf280477011f4213a74f806862856b796ef08f028e664bf/mcp-1.25.0-py3-none-any.whl", hash = "sha256:b37c38144a666add0862614cc79ec276e97d72aa8ca26d622818d4e278b9721a", size = 233076 },
324
+ ]
325
+
326
+ [[package]]
327
+ name = "pycparser"
328
+ version = "2.23"
329
+ source = { registry = "https://pypi.org/simple" }
330
+ sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734 }
331
+ wheels = [
332
+ { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140 },
333
+ ]
334
+
335
+ [[package]]
336
+ name = "pydantic"
337
+ version = "2.12.5"
338
+ source = { registry = "https://pypi.org/simple" }
339
+ dependencies = [
340
+ { name = "annotated-types" },
341
+ { name = "pydantic-core" },
342
+ { name = "typing-extensions" },
343
+ { name = "typing-inspection" },
344
+ ]
345
+ sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591 }
346
+ wheels = [
347
+ { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580 },
348
+ ]
349
+
350
+ [[package]]
351
+ name = "pydantic-core"
352
+ version = "2.41.5"
353
+ source = { registry = "https://pypi.org/simple" }
354
+ dependencies = [
355
+ { name = "typing-extensions" },
356
+ ]
357
+ sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952 }
358
+ wheels = [
359
+ { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990 },
360
+ { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003 },
361
+ { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200 },
362
+ { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578 },
363
+ { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504 },
364
+ { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816 },
365
+ { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366 },
366
+ { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698 },
367
+ { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603 },
368
+ { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591 },
369
+ { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068 },
370
+ { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908 },
371
+ { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145 },
372
+ { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179 },
373
+ { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403 },
374
+ { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206 },
375
+ { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307 },
376
+ { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258 },
377
+ { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917 },
378
+ { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186 },
379
+ { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164 },
380
+ { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146 },
381
+ { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788 },
382
+ { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133 },
383
+ { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852 },
384
+ { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679 },
385
+ { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766 },
386
+ { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005 },
387
+ { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622 },
388
+ { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725 },
389
+ { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040 },
390
+ { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691 },
391
+ { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897 },
392
+ { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302 },
393
+ { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877 },
394
+ { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680 },
395
+ { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960 },
396
+ { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102 },
397
+ { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039 },
398
+ { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126 },
399
+ { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489 },
400
+ { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288 },
401
+ { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255 },
402
+ { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760 },
403
+ { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092 },
404
+ { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385 },
405
+ { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832 },
406
+ { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585 },
407
+ { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078 },
408
+ { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914 },
409
+ { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560 },
410
+ { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244 },
411
+ { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955 },
412
+ { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906 },
413
+ { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607 },
414
+ { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769 },
415
+ ]
416
+
417
+ [[package]]
418
+ name = "pydantic-settings"
419
+ version = "2.12.0"
420
+ source = { registry = "https://pypi.org/simple" }
421
+ dependencies = [
422
+ { name = "pydantic" },
423
+ { name = "python-dotenv" },
424
+ { name = "typing-inspection" },
425
+ ]
426
+ sdist = { url = "https://files.pythonhosted.org/packages/43/4b/ac7e0aae12027748076d72a8764ff1c9d82ca75a7a52622e67ed3f765c54/pydantic_settings-2.12.0.tar.gz", hash = "sha256:005538ef951e3c2a68e1c08b292b5f2e71490def8589d4221b95dab00dafcfd0", size = 194184 }
427
+ wheels = [
428
+ { url = "https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl", hash = "sha256:fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809", size = 51880 },
429
+ ]
430
+
431
+ [[package]]
432
+ name = "pyjwt"
433
+ version = "2.10.1"
434
+ source = { registry = "https://pypi.org/simple" }
435
+ sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 }
436
+ wheels = [
437
+ { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 },
438
+ ]
439
+
440
+ [package.optional-dependencies]
441
+ crypto = [
442
+ { name = "cryptography" },
443
+ ]
444
+
445
+ [[package]]
446
+ name = "python-dotenv"
447
+ version = "1.2.1"
448
+ source = { registry = "https://pypi.org/simple" }
449
+ sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221 }
450
+ wheels = [
451
+ { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230 },
452
+ ]
453
+
454
+ [[package]]
455
+ name = "python-multipart"
456
+ version = "0.0.21"
457
+ source = { registry = "https://pypi.org/simple" }
458
+ sdist = { url = "https://files.pythonhosted.org/packages/78/96/804520d0850c7db98e5ccb70282e29208723f0964e88ffd9d0da2f52ea09/python_multipart-0.0.21.tar.gz", hash = "sha256:7137ebd4d3bbf70ea1622998f902b97a29434a9e8dc40eb203bbcf7c2a2cba92", size = 37196 }
459
+ wheels = [
460
+ { url = "https://files.pythonhosted.org/packages/aa/76/03af049af4dcee5d27442f71b6924f01f3efb5d2bd34f23fcd563f2cc5f5/python_multipart-0.0.21-py3-none-any.whl", hash = "sha256:cf7a6713e01c87aa35387f4774e812c4361150938d20d232800f75ffcf266090", size = 24541 },
461
+ ]
462
+
463
+ [[package]]
464
+ name = "pywin32"
465
+ version = "311"
466
+ source = { registry = "https://pypi.org/simple" }
467
+ wheels = [
468
+ { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543 },
469
+ { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040 },
470
+ { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102 },
471
+ { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700 },
472
+ { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700 },
473
+ { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318 },
474
+ { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714 },
475
+ { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800 },
476
+ { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540 },
477
+ ]
478
+
479
+ [[package]]
480
+ name = "referencing"
481
+ version = "0.37.0"
482
+ source = { registry = "https://pypi.org/simple" }
483
+ dependencies = [
484
+ { name = "attrs" },
485
+ { name = "rpds-py" },
486
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
487
+ ]
488
+ sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036 }
489
+ wheels = [
490
+ { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766 },
491
+ ]
492
+
493
+ [[package]]
494
+ name = "rpds-py"
495
+ version = "0.30.0"
496
+ source = { registry = "https://pypi.org/simple" }
497
+ sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469 }
498
+ wheels = [
499
+ { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086 },
500
+ { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053 },
501
+ { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763 },
502
+ { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951 },
503
+ { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622 },
504
+ { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492 },
505
+ { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080 },
506
+ { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680 },
507
+ { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589 },
508
+ { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289 },
509
+ { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737 },
510
+ { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120 },
511
+ { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782 },
512
+ { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463 },
513
+ { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868 },
514
+ { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887 },
515
+ { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904 },
516
+ { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945 },
517
+ { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783 },
518
+ { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021 },
519
+ { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589 },
520
+ { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025 },
521
+ { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895 },
522
+ { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799 },
523
+ { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731 },
524
+ { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027 },
525
+ { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020 },
526
+ { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139 },
527
+ { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224 },
528
+ { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645 },
529
+ { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443 },
530
+ { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375 },
531
+ { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850 },
532
+ { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812 },
533
+ { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841 },
534
+ { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149 },
535
+ { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843 },
536
+ { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507 },
537
+ { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949 },
538
+ { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790 },
539
+ { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217 },
540
+ { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806 },
541
+ { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341 },
542
+ { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768 },
543
+ { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099 },
544
+ { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192 },
545
+ { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080 },
546
+ { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841 },
547
+ { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670 },
548
+ { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005 },
549
+ { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112 },
550
+ { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049 },
551
+ { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661 },
552
+ { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606 },
553
+ { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126 },
554
+ { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371 },
555
+ { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298 },
556
+ { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604 },
557
+ { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391 },
558
+ { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868 },
559
+ { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747 },
560
+ { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795 },
561
+ { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330 },
562
+ { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194 },
563
+ { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340 },
564
+ { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765 },
565
+ { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834 },
566
+ { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470 },
567
+ { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630 },
568
+ { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148 },
569
+ { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030 },
570
+ { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570 },
571
+ { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532 },
572
+ ]
573
+
574
+ [[package]]
575
+ name = "sse-starlette"
576
+ version = "3.0.4"
577
+ source = { registry = "https://pypi.org/simple" }
578
+ dependencies = [
579
+ { name = "anyio" },
580
+ { name = "starlette" },
581
+ ]
582
+ sdist = { url = "https://files.pythonhosted.org/packages/17/8b/54651ad49bce99a50fd61a7f19c2b6a79fbb072e693101fbb1194c362054/sse_starlette-3.0.4.tar.gz", hash = "sha256:5e34286862e96ead0eb70f5ddd0bd21ab1f6473a8f44419dd267f431611383dd", size = 22576 }
583
+ wheels = [
584
+ { url = "https://files.pythonhosted.org/packages/71/22/8ab1066358601163e1ac732837adba3672f703818f693e179b24e0d3b65c/sse_starlette-3.0.4-py3-none-any.whl", hash = "sha256:32c80ef0d04506ced4b0b6ab8fe300925edc37d26f666afb1874c754895f5dc3", size = 11764 },
585
+ ]
586
+
587
+ [[package]]
588
+ name = "starlette"
589
+ version = "0.50.0"
590
+ source = { registry = "https://pypi.org/simple" }
591
+ dependencies = [
592
+ { name = "anyio" },
593
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
594
+ ]
595
+ sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985 }
596
+ wheels = [
597
+ { url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl", hash = "sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca", size = 74033 },
598
+ ]
599
+
600
+ [[package]]
601
+ name = "typing-extensions"
602
+ version = "4.15.0"
603
+ source = { registry = "https://pypi.org/simple" }
604
+ sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391 }
605
+ wheels = [
606
+ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614 },
607
+ ]
608
+
609
+ [[package]]
610
+ name = "typing-inspection"
611
+ version = "0.4.2"
612
+ source = { registry = "https://pypi.org/simple" }
613
+ dependencies = [
614
+ { name = "typing-extensions" },
615
+ ]
616
+ sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949 }
617
+ wheels = [
618
+ { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611 },
619
+ ]
620
+
621
+ [[package]]
622
+ name = "uvicorn"
623
+ version = "0.40.0"
624
+ source = { registry = "https://pypi.org/simple" }
625
+ dependencies = [
626
+ { name = "click" },
627
+ { name = "h11" },
628
+ ]
629
+ sdist = { url = "https://files.pythonhosted.org/packages/c3/d1/8f3c683c9561a4e6689dd3b1d345c815f10f86acd044ee1fb9a4dcd0b8c5/uvicorn-0.40.0.tar.gz", hash = "sha256:839676675e87e73694518b5574fd0f24c9d97b46bea16df7b8c05ea1a51071ea", size = 81761 }
630
+ wheels = [
631
+ { url = "https://files.pythonhosted.org/packages/3d/d8/2083a1daa7439a66f3a48589a57d576aa117726762618f6bb09fe3798796/uvicorn-0.40.0-py3-none-any.whl", hash = "sha256:c6c8f55bc8bf13eb6fa9ff87ad62308bbbc33d0b67f84293151efe87e0d5f2ee", size = 68502 },
632
+ ]