PDFTranslator / pdf2zh /webapp /config.py
hoang.nguyen6
deploy
f66643d unverified
Raw
History Blame Contribute Delete
1.71 kB
"""UI-facing configuration: provider/page presets and helpers (no Gradio deps)."""
from __future__ import annotations
# UI label -> Phase-2 provider key.
PROVIDER_KEY = {
"OpenRouter": "openrouter",
"Gemini": "gemini",
"OpenAI": "openai",
"DeepSeek": "deepseek",
"MiniMax": "minimax",
"Anthropic": "anthropic",
"LiteLLM": "litellm",
}
PROVIDER_CHOICES = list(PROVIDER_KEY)
# Default model placeholders (mirror translation/config.py PROVIDERS).
PROVIDER_DEFAULT_MODEL = {
"OpenRouter": "google/gemini-2.5-flash-lite",
"Gemini": "gemini-2.5-flash-lite",
"OpenAI": "gpt-4o-mini",
"DeepSeek": "deepseek-chat",
"MiniMax": "MiniMax-Text-01",
"Anthropic": "claude-haiku-4-5",
"LiteLLM": "gpt-4o-mini",
}
# Page-selection modes. "All" translates the whole document; "Range" uses the
# 1-based from/to boxes.
PAGE_MODE_ALL = "Toàn bộ"
PAGE_MODE_RANGE = "Khoảng trang"
PAGE_MODES = [PAGE_MODE_ALL, PAGE_MODE_RANGE]
MAX_CUSTOM_PAGES = 50 # guardrail against OOM on a single T4
def resolve_pages(mode: str, from_page, to_page) -> list[int] | None:
"""Map the page mode (+ 1-based from/to) to a 0-based page index list or None.
``All`` → None (whole document). ``Range`` → inclusive 1-based ``[from, to]``
converted to 0-based indices, with the span capped at ``MAX_CUSTOM_PAGES``.
Out-of-range high values are harmless: the parser and compositor both drop
indices past the document's last page.
"""
if mode != PAGE_MODE_RANGE:
return None
lo = max(1, int(from_page or 1))
hi = max(lo, int(to_page or lo))
hi = min(hi, lo + MAX_CUSTOM_PAGES - 1) # cap the span
return list(range(lo - 1, hi))