Upload folder using huggingface_hub
Browse files- ankigen/agents/base.py +10 -3
- ankigen/card_generator.py +10 -16
- ankigen/cli.py +8 -1
- requirements.txt +44 -99
- uv.lock +0 -0
ankigen/agents/base.py
CHANGED
|
@@ -69,17 +69,24 @@ class BaseAgentWrapper:
|
|
| 69 |
set_default_openai_client(self.openai_client, use_for_tracing=False)
|
| 70 |
|
| 71 |
# Create model settings with temperature and optional reasoning effort
|
| 72 |
-
model_settings_kwargs = {"temperature": self.config.temperature}
|
| 73 |
effort = self.config.reasoning_effort
|
| 74 |
if effort in ("auto", "", None):
|
| 75 |
effort = None
|
| 76 |
|
| 77 |
# GPT-5.x (not chat-latest) supports reasoning_effort
|
| 78 |
-
|
| 79 |
effort
|
| 80 |
and self.config.model.startswith("gpt-5")
|
| 81 |
and "chat-latest" not in self.config.model
|
| 82 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
from openai.types.shared import Reasoning
|
| 84 |
|
| 85 |
model_settings_kwargs["reasoning"] = Reasoning(effort=effort)
|
|
|
|
| 69 |
set_default_openai_client(self.openai_client, use_for_tracing=False)
|
| 70 |
|
| 71 |
# Create model settings with temperature and optional reasoning effort
|
|
|
|
| 72 |
effort = self.config.reasoning_effort
|
| 73 |
if effort in ("auto", "", None):
|
| 74 |
effort = None
|
| 75 |
|
| 76 |
# GPT-5.x (not chat-latest) supports reasoning_effort
|
| 77 |
+
is_reasoning_model = (
|
| 78 |
effort
|
| 79 |
and self.config.model.startswith("gpt-5")
|
| 80 |
and "chat-latest" not in self.config.model
|
| 81 |
+
)
|
| 82 |
+
# GPT-5.x with reasoning effort > none doesn't support temperature
|
| 83 |
+
model_settings_kwargs = (
|
| 84 |
+
{}
|
| 85 |
+
if is_reasoning_model and effort != "none"
|
| 86 |
+
else {"temperature": self.config.temperature}
|
| 87 |
+
)
|
| 88 |
+
|
| 89 |
+
if is_reasoning_model:
|
| 90 |
from openai.types.shared import Reasoning
|
| 91 |
|
| 92 |
model_settings_kwargs["reasoning"] = Reasoning(effort=effort)
|
ankigen/card_generator.py
CHANGED
|
@@ -63,24 +63,18 @@ GENERATION_MODES = [
|
|
| 63 |
def _parse_model_selection(model_selection: str) -> tuple[str, str | None]:
|
| 64 |
"""Parse model selection into model name and reasoning effort."""
|
| 65 |
if not model_selection:
|
| 66 |
-
return "gpt-5.
|
| 67 |
|
| 68 |
normalized = model_selection.strip().lower()
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
return "gpt-5.2", "none"
|
| 79 |
-
if "thinking" in normalized:
|
| 80 |
-
return "gpt-5.2", "high"
|
| 81 |
-
if "auto" in normalized:
|
| 82 |
-
return "gpt-5.2", None
|
| 83 |
-
return "gpt-5.2", None
|
| 84 |
|
| 85 |
# Fallback for direct model names
|
| 86 |
return model_selection, None
|
|
|
|
| 63 |
def _parse_model_selection(model_selection: str) -> tuple[str, str | None]:
|
| 64 |
"""Parse model selection into model name and reasoning effort."""
|
| 65 |
if not model_selection:
|
| 66 |
+
return "gpt-5.4", None
|
| 67 |
|
| 68 |
normalized = model_selection.strip().lower()
|
| 69 |
+
|
| 70 |
+
# Match exact gpt-5.X-{auto,instant,thinking} variants only
|
| 71 |
+
for base in ("gpt-5.4", "gpt-5.2"):
|
| 72 |
+
if normalized == base or normalized == f"{base}-auto":
|
| 73 |
+
return base, None
|
| 74 |
+
if normalized == f"{base}-instant":
|
| 75 |
+
return base, "none"
|
| 76 |
+
if normalized == f"{base}-thinking":
|
| 77 |
+
return base, "high"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
|
| 79 |
# Fallback for direct model names
|
| 80 |
return model_selection, None
|
ankigen/cli.py
CHANGED
|
@@ -221,7 +221,14 @@ def export_cards(
|
|
| 221 |
@click.option(
|
| 222 |
"--model",
|
| 223 |
type=click.Choice(
|
| 224 |
-
[
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 225 |
case_sensitive=False,
|
| 226 |
),
|
| 227 |
help="Model to use for generation (auto-selected if not specified)",
|
|
|
|
| 221 |
@click.option(
|
| 222 |
"--model",
|
| 223 |
type=click.Choice(
|
| 224 |
+
[
|
| 225 |
+
"gpt-5.2-auto",
|
| 226 |
+
"gpt-5.2-instant",
|
| 227 |
+
"gpt-5.2-thinking",
|
| 228 |
+
"gpt-5.4-auto",
|
| 229 |
+
"gpt-5.4-instant",
|
| 230 |
+
"gpt-5.4-thinking",
|
| 231 |
+
],
|
| 232 |
case_sensitive=False,
|
| 233 |
),
|
| 234 |
help="Model to use for generation (auto-selected if not specified)",
|
requirements.txt
CHANGED
|
@@ -1,5 +1,6 @@
|
|
| 1 |
# This file was autogenerated by uv via the following command:
|
| 2 |
-
# uv
|
|
|
|
| 3 |
aiofiles==24.1.0
|
| 4 |
# via gradio
|
| 5 |
annotated-doc==0.0.4
|
|
@@ -14,20 +15,19 @@ anyio==4.12.1
|
|
| 14 |
# httpx
|
| 15 |
# mcp
|
| 16 |
# openai
|
| 17 |
-
# pytest-anyio
|
| 18 |
# sse-starlette
|
| 19 |
# starlette
|
| 20 |
-
attrs==
|
| 21 |
# via
|
| 22 |
# jsonschema
|
| 23 |
# referencing
|
|
|
|
|
|
|
| 24 |
beautifulsoup4==4.13.5
|
| 25 |
-
# via ankigen
|
| 26 |
-
black==26.3.0
|
| 27 |
-
# via ankigen (pyproject.toml)
|
| 28 |
brotli==1.2.0
|
| 29 |
# via
|
| 30 |
-
# ankigen
|
| 31 |
# gradio
|
| 32 |
cached-property==2.0.1
|
| 33 |
# via genanki
|
|
@@ -36,40 +36,33 @@ certifi==2026.2.25
|
|
| 36 |
# httpcore
|
| 37 |
# httpx
|
| 38 |
# requests
|
| 39 |
-
cffi==2.0.0
|
| 40 |
# via cryptography
|
| 41 |
-
|
| 42 |
-
# via pre-commit
|
| 43 |
-
charset-normalizer==3.4.5
|
| 44 |
# via requests
|
| 45 |
chevron==0.14.0
|
| 46 |
# via genanki
|
| 47 |
click==8.3.1
|
| 48 |
# via
|
| 49 |
-
# ankigen (pyproject.toml)
|
| 50 |
-
# black
|
| 51 |
# typer
|
| 52 |
# uvicorn
|
| 53 |
colorama==0.4.6
|
| 54 |
-
# via
|
| 55 |
-
|
| 56 |
-
#
|
|
|
|
| 57 |
cryptography==46.0.5
|
| 58 |
# via pyjwt
|
| 59 |
-
distlib==0.4.0
|
| 60 |
-
# via virtualenv
|
| 61 |
distro==1.9.0
|
| 62 |
# via openai
|
| 63 |
fastapi==0.135.1
|
| 64 |
# via gradio
|
| 65 |
ffmpy==1.0.0
|
| 66 |
# via gradio
|
| 67 |
-
filelock==3.25.
|
| 68 |
# via
|
| 69 |
-
# ankigen
|
| 70 |
# huggingface-hub
|
| 71 |
-
# python-discovery
|
| 72 |
-
# virtualenv
|
| 73 |
frozendict==2.4.7
|
| 74 |
# via genanki
|
| 75 |
fsspec==2026.2.0
|
|
@@ -77,9 +70,9 @@ fsspec==2026.2.0
|
|
| 77 |
# gradio-client
|
| 78 |
# huggingface-hub
|
| 79 |
genanki==0.13.1
|
| 80 |
-
# via ankigen
|
| 81 |
gradio==6.9.0
|
| 82 |
-
# via ankigen
|
| 83 |
gradio-client==2.3.0
|
| 84 |
# via gradio
|
| 85 |
griffe==1.15.0
|
|
@@ -90,7 +83,7 @@ h11==0.16.0
|
|
| 90 |
# via
|
| 91 |
# httpcore
|
| 92 |
# uvicorn
|
| 93 |
-
hf-xet==1.
|
| 94 |
# via huggingface-hub
|
| 95 |
httpcore==1.0.9
|
| 96 |
# via httpx
|
|
@@ -104,19 +97,15 @@ httpx==0.28.1
|
|
| 104 |
# safehttpx
|
| 105 |
httpx-sse==0.4.3
|
| 106 |
# via mcp
|
| 107 |
-
huggingface-hub==1.
|
| 108 |
# via
|
| 109 |
# gradio
|
| 110 |
# gradio-client
|
| 111 |
-
identify==2.6.17
|
| 112 |
-
# via pre-commit
|
| 113 |
idna==3.11
|
| 114 |
# via
|
| 115 |
# anyio
|
| 116 |
# httpx
|
| 117 |
# requests
|
| 118 |
-
iniconfig==2.3.0
|
| 119 |
-
# via pytest
|
| 120 |
jinja2==3.1.6
|
| 121 |
# via gradio
|
| 122 |
jiter==0.13.0
|
|
@@ -126,7 +115,7 @@ jsonschema==4.26.0
|
|
| 126 |
jsonschema-specifications==2025.9.1
|
| 127 |
# via jsonschema
|
| 128 |
lxml==6.0.2
|
| 129 |
-
# via ankigen
|
| 130 |
markdown-it-py==4.0.0
|
| 131 |
# via rich
|
| 132 |
markupsafe==3.0.3
|
|
@@ -137,57 +126,38 @@ mcp==1.26.0
|
|
| 137 |
# via openai-agents
|
| 138 |
mdurl==0.1.2
|
| 139 |
# via markdown-it-py
|
| 140 |
-
mypy-extensions==1.1.0
|
| 141 |
-
# via black
|
| 142 |
-
nodeenv==1.10.0
|
| 143 |
-
# via pre-commit
|
| 144 |
numpy==2.4.3
|
| 145 |
# via
|
| 146 |
# gradio
|
| 147 |
# pandas
|
| 148 |
-
openai==2.
|
| 149 |
# via
|
| 150 |
-
# ankigen
|
| 151 |
# openai-agents
|
| 152 |
-
openai-agents==0.
|
| 153 |
-
# via ankigen
|
| 154 |
orjson==3.11.7
|
| 155 |
# via
|
| 156 |
-
# ankigen
|
| 157 |
# gradio
|
| 158 |
packaging==26.0
|
| 159 |
# via
|
| 160 |
-
# black
|
| 161 |
# gradio
|
| 162 |
# gradio-client
|
| 163 |
# huggingface-hub
|
| 164 |
-
# pytest
|
| 165 |
pandas==3.0.1
|
| 166 |
# via
|
| 167 |
-
# ankigen
|
| 168 |
# gradio
|
| 169 |
-
pathspec==1.0.4
|
| 170 |
-
# via black
|
| 171 |
pillow==12.1.1
|
| 172 |
# via
|
| 173 |
-
# ankigen
|
| 174 |
# gradio
|
| 175 |
-
|
| 176 |
-
# via
|
| 177 |
-
# black
|
| 178 |
-
# python-discovery
|
| 179 |
-
# virtualenv
|
| 180 |
-
pluggy==1.6.0
|
| 181 |
-
# via
|
| 182 |
-
# pytest
|
| 183 |
-
# pytest-cov
|
| 184 |
-
pre-commit==4.5.1
|
| 185 |
-
# via ankigen (pyproject.toml)
|
| 186 |
-
pycparser==3.0
|
| 187 |
# via cffi
|
| 188 |
pydantic==2.12.5
|
| 189 |
# via
|
| 190 |
-
# ankigen
|
| 191 |
# fastapi
|
| 192 |
# gradio
|
| 193 |
# mcp
|
|
@@ -201,46 +171,27 @@ pydantic-settings==2.13.1
|
|
| 201 |
pydub==0.25.1
|
| 202 |
# via gradio
|
| 203 |
pygments==2.19.2
|
| 204 |
-
# via
|
| 205 |
-
|
| 206 |
-
# rich
|
| 207 |
-
pyjwt==2.11.0
|
| 208 |
# via mcp
|
| 209 |
-
pytest==9.0.2
|
| 210 |
-
# via
|
| 211 |
-
# ankigen (pyproject.toml)
|
| 212 |
-
# pytest-anyio
|
| 213 |
-
# pytest-cov
|
| 214 |
-
# pytest-mock
|
| 215 |
-
pytest-anyio==0.0.0
|
| 216 |
-
# via ankigen (pyproject.toml)
|
| 217 |
-
pytest-cov==7.0.0
|
| 218 |
-
# via ankigen (pyproject.toml)
|
| 219 |
-
pytest-mock==3.15.1
|
| 220 |
-
# via ankigen (pyproject.toml)
|
| 221 |
python-dateutil==2.9.0.post0
|
| 222 |
# via pandas
|
| 223 |
-
python-discovery==1.1.3
|
| 224 |
-
# via virtualenv
|
| 225 |
python-dotenv==1.2.2
|
| 226 |
-
# via
|
| 227 |
-
# ankigen (pyproject.toml)
|
| 228 |
-
# pydantic-settings
|
| 229 |
python-multipart==0.0.22
|
| 230 |
# via
|
| 231 |
-
# ankigen
|
| 232 |
# gradio
|
| 233 |
# mcp
|
| 234 |
-
pytokens==0.4.1
|
| 235 |
-
# via black
|
| 236 |
pytz==2026.1.post1
|
| 237 |
# via gradio
|
|
|
|
|
|
|
| 238 |
pyyaml==6.0.3
|
| 239 |
# via
|
| 240 |
# genanki
|
| 241 |
# gradio
|
| 242 |
# huggingface-hub
|
| 243 |
-
# pre-commit
|
| 244 |
referencing==0.37.0
|
| 245 |
# via
|
| 246 |
# jsonschema
|
|
@@ -252,15 +203,11 @@ requests==2.32.5
|
|
| 252 |
# openai-agents
|
| 253 |
# tiktoken
|
| 254 |
rich==14.3.3
|
| 255 |
-
# via
|
| 256 |
-
# ankigen (pyproject.toml)
|
| 257 |
-
# typer
|
| 258 |
rpds-py==0.30.0
|
| 259 |
# via
|
| 260 |
# jsonschema
|
| 261 |
# referencing
|
| 262 |
-
ruff==0.15.5
|
| 263 |
-
# via ankigen (pyproject.toml)
|
| 264 |
safehttpx==0.1.7
|
| 265 |
# via gradio
|
| 266 |
semantic-version==2.10.0
|
|
@@ -273,19 +220,19 @@ sniffio==1.3.1
|
|
| 273 |
# via openai
|
| 274 |
soupsieve==2.8.3
|
| 275 |
# via beautifulsoup4
|
| 276 |
-
sse-starlette==3.3.
|
| 277 |
# via mcp
|
| 278 |
starlette==0.52.1
|
| 279 |
# via
|
| 280 |
-
# ankigen
|
| 281 |
# fastapi
|
| 282 |
# gradio
|
| 283 |
# mcp
|
| 284 |
# sse-starlette
|
| 285 |
tenacity==9.1.4
|
| 286 |
-
# via ankigen
|
| 287 |
tiktoken==0.12.0
|
| 288 |
-
# via ankigen
|
| 289 |
tomlkit==0.13.3
|
| 290 |
# via gradio
|
| 291 |
tqdm==4.67.3
|
|
@@ -320,16 +267,14 @@ typing-inspection==0.4.2
|
|
| 320 |
# mcp
|
| 321 |
# pydantic
|
| 322 |
# pydantic-settings
|
|
|
|
|
|
|
| 323 |
urllib3==2.6.3
|
| 324 |
# via
|
| 325 |
-
# ankigen
|
| 326 |
# requests
|
| 327 |
# types-requests
|
| 328 |
-
uvicorn==0.
|
| 329 |
# via
|
| 330 |
# gradio
|
| 331 |
# mcp
|
| 332 |
-
virtualenv==21.2.0
|
| 333 |
-
# via
|
| 334 |
-
# ankigen (pyproject.toml)
|
| 335 |
-
# pre-commit
|
|
|
|
| 1 |
# This file was autogenerated by uv via the following command:
|
| 2 |
+
# uv export --no-hashes --frozen -o requirements.txt
|
| 3 |
+
-e .
|
| 4 |
aiofiles==24.1.0
|
| 5 |
# via gradio
|
| 6 |
annotated-doc==0.0.4
|
|
|
|
| 15 |
# httpx
|
| 16 |
# mcp
|
| 17 |
# openai
|
|
|
|
| 18 |
# sse-starlette
|
| 19 |
# starlette
|
| 20 |
+
attrs==26.1.0
|
| 21 |
# via
|
| 22 |
# jsonschema
|
| 23 |
# referencing
|
| 24 |
+
audioop-lts==0.2.2 ; python_full_version >= '3.13'
|
| 25 |
+
# via gradio
|
| 26 |
beautifulsoup4==4.13.5
|
| 27 |
+
# via ankigen
|
|
|
|
|
|
|
| 28 |
brotli==1.2.0
|
| 29 |
# via
|
| 30 |
+
# ankigen
|
| 31 |
# gradio
|
| 32 |
cached-property==2.0.1
|
| 33 |
# via genanki
|
|
|
|
| 36 |
# httpcore
|
| 37 |
# httpx
|
| 38 |
# requests
|
| 39 |
+
cffi==2.0.0 ; platform_python_implementation != 'PyPy'
|
| 40 |
# via cryptography
|
| 41 |
+
charset-normalizer==3.4.6
|
|
|
|
|
|
|
| 42 |
# via requests
|
| 43 |
chevron==0.14.0
|
| 44 |
# via genanki
|
| 45 |
click==8.3.1
|
| 46 |
# via
|
|
|
|
|
|
|
| 47 |
# typer
|
| 48 |
# uvicorn
|
| 49 |
colorama==0.4.6
|
| 50 |
+
# via
|
| 51 |
+
# click
|
| 52 |
+
# griffe
|
| 53 |
+
# tqdm
|
| 54 |
cryptography==46.0.5
|
| 55 |
# via pyjwt
|
|
|
|
|
|
|
| 56 |
distro==1.9.0
|
| 57 |
# via openai
|
| 58 |
fastapi==0.135.1
|
| 59 |
# via gradio
|
| 60 |
ffmpy==1.0.0
|
| 61 |
# via gradio
|
| 62 |
+
filelock==3.25.2
|
| 63 |
# via
|
| 64 |
+
# ankigen
|
| 65 |
# huggingface-hub
|
|
|
|
|
|
|
| 66 |
frozendict==2.4.7
|
| 67 |
# via genanki
|
| 68 |
fsspec==2026.2.0
|
|
|
|
| 70 |
# gradio-client
|
| 71 |
# huggingface-hub
|
| 72 |
genanki==0.13.1
|
| 73 |
+
# via ankigen
|
| 74 |
gradio==6.9.0
|
| 75 |
+
# via ankigen
|
| 76 |
gradio-client==2.3.0
|
| 77 |
# via gradio
|
| 78 |
griffe==1.15.0
|
|
|
|
| 83 |
# via
|
| 84 |
# httpcore
|
| 85 |
# uvicorn
|
| 86 |
+
hf-xet==1.4.2 ; platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'
|
| 87 |
# via huggingface-hub
|
| 88 |
httpcore==1.0.9
|
| 89 |
# via httpx
|
|
|
|
| 97 |
# safehttpx
|
| 98 |
httpx-sse==0.4.3
|
| 99 |
# via mcp
|
| 100 |
+
huggingface-hub==1.7.2
|
| 101 |
# via
|
| 102 |
# gradio
|
| 103 |
# gradio-client
|
|
|
|
|
|
|
| 104 |
idna==3.11
|
| 105 |
# via
|
| 106 |
# anyio
|
| 107 |
# httpx
|
| 108 |
# requests
|
|
|
|
|
|
|
| 109 |
jinja2==3.1.6
|
| 110 |
# via gradio
|
| 111 |
jiter==0.13.0
|
|
|
|
| 115 |
jsonschema-specifications==2025.9.1
|
| 116 |
# via jsonschema
|
| 117 |
lxml==6.0.2
|
| 118 |
+
# via ankigen
|
| 119 |
markdown-it-py==4.0.0
|
| 120 |
# via rich
|
| 121 |
markupsafe==3.0.3
|
|
|
|
| 126 |
# via openai-agents
|
| 127 |
mdurl==0.1.2
|
| 128 |
# via markdown-it-py
|
|
|
|
|
|
|
|
|
|
|
|
|
| 129 |
numpy==2.4.3
|
| 130 |
# via
|
| 131 |
# gradio
|
| 132 |
# pandas
|
| 133 |
+
openai==2.29.0
|
| 134 |
# via
|
| 135 |
+
# ankigen
|
| 136 |
# openai-agents
|
| 137 |
+
openai-agents==0.12.5
|
| 138 |
+
# via ankigen
|
| 139 |
orjson==3.11.7
|
| 140 |
# via
|
| 141 |
+
# ankigen
|
| 142 |
# gradio
|
| 143 |
packaging==26.0
|
| 144 |
# via
|
|
|
|
| 145 |
# gradio
|
| 146 |
# gradio-client
|
| 147 |
# huggingface-hub
|
|
|
|
| 148 |
pandas==3.0.1
|
| 149 |
# via
|
| 150 |
+
# ankigen
|
| 151 |
# gradio
|
|
|
|
|
|
|
| 152 |
pillow==12.1.1
|
| 153 |
# via
|
| 154 |
+
# ankigen
|
| 155 |
# gradio
|
| 156 |
+
pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
# via cffi
|
| 158 |
pydantic==2.12.5
|
| 159 |
# via
|
| 160 |
+
# ankigen
|
| 161 |
# fastapi
|
| 162 |
# gradio
|
| 163 |
# mcp
|
|
|
|
| 171 |
pydub==0.25.1
|
| 172 |
# via gradio
|
| 173 |
pygments==2.19.2
|
| 174 |
+
# via rich
|
| 175 |
+
pyjwt==2.12.1
|
|
|
|
|
|
|
| 176 |
# via mcp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 177 |
python-dateutil==2.9.0.post0
|
| 178 |
# via pandas
|
|
|
|
|
|
|
| 179 |
python-dotenv==1.2.2
|
| 180 |
+
# via pydantic-settings
|
|
|
|
|
|
|
| 181 |
python-multipart==0.0.22
|
| 182 |
# via
|
| 183 |
+
# ankigen
|
| 184 |
# gradio
|
| 185 |
# mcp
|
|
|
|
|
|
|
| 186 |
pytz==2026.1.post1
|
| 187 |
# via gradio
|
| 188 |
+
pywin32==311 ; sys_platform == 'win32'
|
| 189 |
+
# via mcp
|
| 190 |
pyyaml==6.0.3
|
| 191 |
# via
|
| 192 |
# genanki
|
| 193 |
# gradio
|
| 194 |
# huggingface-hub
|
|
|
|
| 195 |
referencing==0.37.0
|
| 196 |
# via
|
| 197 |
# jsonschema
|
|
|
|
| 203 |
# openai-agents
|
| 204 |
# tiktoken
|
| 205 |
rich==14.3.3
|
| 206 |
+
# via typer
|
|
|
|
|
|
|
| 207 |
rpds-py==0.30.0
|
| 208 |
# via
|
| 209 |
# jsonschema
|
| 210 |
# referencing
|
|
|
|
|
|
|
| 211 |
safehttpx==0.1.7
|
| 212 |
# via gradio
|
| 213 |
semantic-version==2.10.0
|
|
|
|
| 220 |
# via openai
|
| 221 |
soupsieve==2.8.3
|
| 222 |
# via beautifulsoup4
|
| 223 |
+
sse-starlette==3.3.3
|
| 224 |
# via mcp
|
| 225 |
starlette==0.52.1
|
| 226 |
# via
|
| 227 |
+
# ankigen
|
| 228 |
# fastapi
|
| 229 |
# gradio
|
| 230 |
# mcp
|
| 231 |
# sse-starlette
|
| 232 |
tenacity==9.1.4
|
| 233 |
+
# via ankigen
|
| 234 |
tiktoken==0.12.0
|
| 235 |
+
# via ankigen
|
| 236 |
tomlkit==0.13.3
|
| 237 |
# via gradio
|
| 238 |
tqdm==4.67.3
|
|
|
|
| 267 |
# mcp
|
| 268 |
# pydantic
|
| 269 |
# pydantic-settings
|
| 270 |
+
tzdata==2025.3 ; sys_platform == 'emscripten' or sys_platform == 'win32'
|
| 271 |
+
# via pandas
|
| 272 |
urllib3==2.6.3
|
| 273 |
# via
|
| 274 |
+
# ankigen
|
| 275 |
# requests
|
| 276 |
# types-requests
|
| 277 |
+
uvicorn==0.42.0
|
| 278 |
# via
|
| 279 |
# gradio
|
| 280 |
# mcp
|
|
|
|
|
|
|
|
|
|
|
|
uv.lock
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|