{"package":"airunner","ecosystem":"pypi","latest_version":"5.6.1","description":"Run local opensource AI models (Stable Diffusion, LLMs, TTS, STT, chatbots) in a lightweight Python GUI","license":"Apache-2.0","license_risk":"permissive","commercial_use_notes":"Permissive: commercial closed-source use OK; preserve the copyright notice.","homepage":"https://github.com/Capsize-Games/airunner","repository":"https://github.com/Capsize-Games/airunner","downloads_weekly":190,"health":{"score":60,"risk":"moderate","breakdown":{"maintenance":15,"popularity":3,"security":25,"maturity":15,"community":2},"deprecated":false,"max_score":100},"vulnerabilities":{"count":0,"critical":0,"high":0,"medium":0,"low":0,"details":[]},"versions":{"latest":"5.6.1","total_count":241,"recent":["4.11.2","4.11.3","5.0.0","5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.1.0","5.2.0","5.3.0","5.3.1","5.3.2","5.3.3","5.4.0","5.4.1","5.4.2","5.5.0","5.6.0","5.6.1"]},"metadata":{"deprecated":false,"deprecated_message":null,"maintainers_count":1,"first_published":null,"last_published":"2025-12-11T19:36:32.836164Z","dependencies_count":882,"dependencies":["pip==25.3","torch","torchvision","torchaudio","torchao","accelerate==1.7.0","huggingface-hub<1.0,>=0.24.0","tokenizers==0.22.0","optimum==1.25.1","numpy==2.2.5","pillow==12.0.0","alembic==1.15.2","aiosqlite==0.21.0","sqlalchemy==2.0.38","setuptools==80.9.0","etils[epath]==1.12.2","jinja2==3.1.6","pyyaml==6.0.2","fastapi==0.115.0","uvicorn[standard]==0.34.0","nvidia-cuda-runtime; extra == \"nvidia\"","diffusers==0.35.1; extra == \"huggingface\"","controlnet_aux==0.0.10; extra == \"huggingface\"","safetensors==0.6.2; extra == \"huggingface\"","compel==2.1.1; extra == \"huggingface\"","transformers==4.57.3; extra == \"huggingface\"","datasets==4.0.0; extra == \"huggingface\"","peft==0.17.1; extra == \"huggingface\"","PySide6==6.9.0; extra == \"gui\"","PySide6_Addons==6.9.0; extra == \"gui\"","PySide6_Essentials==6.9.0; extra == \"gui\"","pytest; extra == \"dev\"","pytest-timeout; extra == \"dev\"","responses>=0.25.0; extra == \"dev\"","python-dotenv==1.0.1; extra == \"dev\"","coverage==7.8.0; extra == \"dev\"","black==25.1.0; extra == \"dev\"","pyinstaller==6.12.0; extra == \"dev\"","flake8==7.2.0; extra == \"dev\"","mypy==1.16.0; extra == \"dev\"","autoflake==2.3.1; extra == \"dev\"","pandas>=2.0.0; extra == \"dev\"","pyarrow>=14.0.0; extra == \"dev\"","tqdm>=4.0.0; extra == \"dev\"","DeepCache==0.1.1; extra == \"art\"","tomesd==0.1.3; extra == \"art\"","gguf==0.17.1; extra == \"art\"","bitsandbytes==0.45.5; extra == \"llm\"","sentence_transformers==3.4.1; extra == \"llm\"","sounddevice==0.5.1; extra == \"llm\"","pyttsx3==2.91; extra == \"llm\"","cryptography==44.0.3; extra == \"llm\"","faster-whisper>=1.0.0; extra == \"llm\"","llama-cpp-python==0.3.16; extra == \"llm\"","sumy==0.11.0; extra == \"llm\"","sentencepiece==0.2.0; extra == \"llm\"","lingua-language-detector==2.1.0; extra == \"llm\"","markdown==3.8; extra == \"llm\"","libzim==3.7.0; extra == \"llm\"","mistral_common>=1.8.5; extra == \"llm\"","rank-bm25>=0.2.2; extra == \"llm\"","llama-index==0.12.36; extra == \"llm\"","llama-index-readers-file==0.4.0; extra == \"llm\"","llama-index-embeddings-huggingface==0.4.0; extra == \"llm\"","llama-cloud==0.1.23; extra == \"llm\"","llama-index-core==0.12.36; extra == \"llm\"","llama-index-embeddings-openai==0.3.0; extra == \"llm\"","llama-index-question-gen-openai==0.3.0; extra == \"llm\"","llama-index-program-openai==0.3.0; extra == \"llm\"","llama-index-multi-modal-llms-openai==0.4.0; extra == \"llm\"","llama-index-cli==0.4.1; extra == \"llm\"","llama-index-agent-openai==0.4.8; extra == \"llm\"","llama-index-indices-managed-llama-cloud==0.7.1; extra == \"llm\"","langchain==1.0.0; extra == \"llm\"","langchain-core==1.0.0; extra == \"llm\"","langchain-community>=0.4.0; extra == \"llm\"","langchain-huggingface>=0.1.0; extra == \"llm\"","langgraph==1.0.0; extra == \"llm\"","langsmith>=0.1.0; extra == \"llm\"","langchain-ollama==1.0.0; extra == \"llm\"","EbookLib==0.19; extra == \"llm\"","html2text==2025.4.15; extra == \"llm\"","rake_nltk==1.0.6; extra == \"llm\"","markdownify>=0.13.1; extra == \"llm\"","requests-cache==1.2.1; extra == \"llm-weather\"","retry-requests==2.0.0; extra == \"llm-weather\"","openmeteo_requests==1.4.0; extra == \"llm-weather\"","uszipcode==1.0.1; extra == \"llm-weather\"","inflect==7.5.0; extra == \"tts\"","pycountry==24.6.1; extra == \"tts\"","librosa==0.11.0; extra == \"tts\"","torchcodec>=0.8.0; extra == \"tts\"","pika; extra == \"rabbitmq\"","librosa==0.11.0; extra == \"openvoice\"","pydub==0.25.1; extra == \"openvoice\"","wavmark==0.0.3; extra == \"openvoice\"","eng_to_ipa==0.0.2; extra == \"openvoice\"","inflect==7.5.0; extra == \"openvoice\"","unidecode==1.4.0; extra == \"openvoice\"","langid==1.1.6; extra == \"openvoice\"","txtsplit==1.0.0; extra == \"melotts\"","cached_path==1.7.3; extra == \"melotts\"","num2words==0.5.14; extra == \"melotts\"","g2p_en==2.1.0; extra == \"melotts\"","anyascii==0.3.2; extra == \"melotts\"","loguru==0.7.3; extra == \"melotts\"","pypinyin==0.54.0; extra == \"openvoice-cn\"","jieba==0.42.1; extra == \"openvoice-cn\"","cn2an==0.5.23; extra == \"openvoice-cn\"","unidic_lite==1.0.8; extra == \"openvoice-jp\"","unidic==1.1.0; extra == \"openvoice-jp\"","mecab-python3==1.0.10; extra == \"openvoice-jp\"","fugashi==1.4.0; extra == \"openvoice-jp\"","pykakasi==2.3.0; extra == \"openvoice-jp\"","jamo==0.4.1; extra == \"openvoice-kr\"","python-mecab-ko==1.3.7; extra == \"openvoice-kr\"","python-mecab-ko-dic==2.1.1.post2; extra == \"openvoice-kr\"","g2pkk>=0.1.2; extra == \"openvoice-tw\"","gruut[de,es,fr]==2.4.0; extra == \"gruut-support\"","networkx==3.4.2; extra == \"gruut-support\"","ddgs>=9.0.0; extra == \"search\"","aiohttp>=3.11.0; extra == \"search\"","google-api-python-client>=2.170.0; extra == \"search\"","wikipedia>=1.4.0; extra == \"search\"","scrapy==2.13.1; extra == \"search\"","trafilatura==2.0.0; extra == \"search\"","pyautogui>=0.9.54; extra == \"computer-use\"","pillow>=12.0.0; extra == \"computer-use\"","pyscreeze>=1.0.1; extra == \"computer-use\"","python-xlib>=0.33; platform_system == \"Linux\" and extra == \"computer-use\"","pygetwindow>=0.0.9; extra == \"computer-use\"","nvidia-cuda-runtime; extra == \"all\"","diffusers==0.35.1; extra == \"all\"","controlnet_aux==0.0.10; extra == \"all\"","safetensors==0.6.2; extra == \"all\"","compel==2.1.1; extra == \"all\"","transformers==4.57.3; extra == \"all\"","datasets==4.0.0; extra == \"all\"","peft==0.17.1; extra == \"all\"","PySide6==6.9.0; extra == \"all\"","PySide6_Addons==6.9.0; extra == \"all\"","PySide6_Essentials==6.9.0; extra == \"all\"","DeepCache==0.1.1; extra == \"all\"","tomesd==0.1.3; extra == \"all\"","gguf==0.17.1; extra == \"all\"","bitsandbytes==0.45.5; extra == \"all\"","sentence_transformers==3.4.1; extra == \"all\"","sounddevice==0.5.1; extra == \"all\"","pyttsx3==2.91; extra == \"all\"","cryptography==44.0.3; extra == \"all\"","faster-whisper>=1.0.0; extra == \"all\"","llama-cpp-python==0.3.16; extra == \"all\"","sumy==0.11.0; extra == \"all\"","sentencepiece==0.2.0; extra == \"all\"","lingua-language-detector==2.1.0; extra == \"all\"","markdown==3.8; extra == \"all\"","libzim==3.7.0; extra == \"all\"","mistral_common>=1.8.5; extra == \"all\"","rank-bm25>=0.2.2; extra == \"all\"","llama-index==0.12.36; extra == \"all\"","llama-index-readers-file==0.4.0; extra == \"all\"","llama-index-embeddings-huggingface==0.4.0; extra == \"all\"","llama-cloud==0.1.23; extra == \"all\"","llama-index-core==0.12.36; extra == \"all\"","llama-index-embeddings-openai==0.3.0; extra == \"all\"","llama-index-question-gen-openai==0.3.0; extra == \"all\"","llama-index-program-openai==0.3.0; extra == \"all\"","llama-index-multi-modal-llms-openai==0.4.0; extra == \"all\"","llama-index-cli==0.4.1; extra == \"all\"","llama-index-agent-openai==0.4.8; extra == \"all\"","llama-index-indices-managed-llama-cloud==0.7.1; extra == \"all\"","langchain==1.0.0; extra == \"all\"","langchain-core==1.0.0; extra == \"all\"","langchain-community>=0.4.0; extra == \"all\"","langchain-huggingface>=0.1.0; extra == \"all\"","langgraph==1.0.0; extra == \"all\"","langsmith>=0.1.0; extra == \"all\"","langchain-ollama==1.0.0; extra == \"all\"","EbookLib==0.19; extra == \"all\"","html2text==2025.4.15; extra == \"all\"","rake_nltk==1.0.6; extra == \"all\"","markdownify>=0.13.1; extra == \"all\"","requests-cache==1.2.1; extra == \"all\"","retry-requests==2.0.0; extra == \"all\"","openmeteo_requests==1.4.0; extra == \"all\"","uszipcode==1.0.1; extra == \"all\"","inflect==7.5.0; extra == \"all\"","pycountry==24.6.1; extra == \"all\"","librosa==0.11.0; extra == \"all\"","torchcodec>=0.8.0; extra == \"all\"","pika; extra == \"all\"","librosa==0.11.0; extra == \"all\"","pydub==0.25.1; extra == \"all\"","wavmark==0.0.3; extra == \"all\"","eng_to_ipa==0.0.2; extra == \"all\"","inflect==7.5.0; extra == \"all\"","unidecode==1.4.0; extra == \"all\"","langid==1.1.6; extra == \"all\"","txtsplit==1.0.0; extra == \"all\"","cached_path==1.7.3; extra == \"all\"","num2words==0.5.14; extra == \"all\"","g2p_en==2.1.0; extra == \"all\"","anyascii==0.3.2; extra == \"all\"","loguru==0.7.3; extra == \"all\"","pypinyin==0.54.0; extra == \"all\"","jieba==0.42.1; extra == \"all\"","cn2an==0.5.23; extra == \"all\"","unidic_lite==1.0.8; extra == \"all\"","unidic==1.1.0; extra == \"all\"","mecab-python3==1.0.10; extra == \"all\"","fugashi==1.4.0; extra == \"all\"","pykakasi==2.3.0; extra == \"all\"","jamo==0.4.1; extra == \"all\"","python-mecab-ko==1.3.7; extra == \"all\"","python-mecab-ko-dic==2.1.1.post2; extra == \"all\"","g2pkk>=0.1.2; extra == \"all\"","gruut[de,es,fr]==2.4.0; extra == \"all\"","networkx==3.4.2; extra == \"all\"","ddgs>=9.0.0; extra == \"all\"","aiohttp>=3.11.0; extra == \"all\"","google-api-python-client>=2.170.0; extra == \"all\"","wikipedia>=1.4.0; extra == \"all\"","scrapy==2.13.1; extra == \"all\"","trafilatura==2.0.0; extra == \"all\"","pyautogui>=0.9.54; extra == \"all\"","pillow>=12.0.0; extra == \"all\"","pyscreeze>=1.0.1; extra == \"all\"","python-xlib>=0.33; platform_system == \"Linux\" and extra == \"all\"","pygetwindow>=0.0.9; extra == \"all\"","nvidia-cuda-runtime; extra == \"all\"","diffusers==0.35.1; extra == \"all\"","controlnet_aux==0.0.10; extra == \"all\"","safetensors==0.6.2; extra == \"all\"","compel==2.1.1; extra == \"all\"","transformers==4.57.3; extra == \"all\"","datasets==4.0.0; extra == \"all\"","peft==0.17.1; extra == \"all\"","PySide6==6.9.0; extra == \"all\"","PySide6_Addons==6.9.0; extra == \"all\"","PySide6_Essentials==6.9.0; extra == \"all\"","pytest; extra == \"all\"","pytest-timeout; extra == \"all\"","responses>=0.25.0; extra == \"all\"","python-dotenv==1.0.1; extra == \"all\"","coverage==7.8.0; extra == \"all\"","black==25.1.0; extra == \"all\"","pyinstaller==6.12.0; extra == \"all\"","flake8==7.2.0; extra == \"all\"","mypy==1.16.0; extra == \"all\"","autoflake==2.3.1; extra == \"all\"","pandas>=2.0.0; extra == \"all\"","pyarrow>=14.0.0; extra == \"all\"","tqdm>=4.0.0; extra == \"all\"","DeepCache==0.1.1; extra == \"all\"","tomesd==0.1.3; extra == \"all\"","gguf==0.17.1; extra == \"all\"","bitsandbytes==0.45.5; extra == \"all\"","sentence_transformers==3.4.1; extra == \"all\"","sounddevice==0.5.1; extra == \"all\"","pyttsx3==2.91; extra == \"all\"","cryptography==44.0.3; extra == \"all\"","faster-whisper>=1.0.0; extra == \"all\"","llama-cpp-python==0.3.16; extra == \"all\"","sumy==0.11.0; extra == \"all\"","sentencepiece==0.2.0; extra == \"all\"","lingua-language-detector==2.1.0; extra == \"all\"","markdown==3.8; extra == \"all\"","libzim==3.7.0; extra == \"all\"","mistral_common>=1.8.5; extra == \"all\"","rank-bm25>=0.2.2; extra == \"all\"","llama-index==0.12.36; extra == \"all\"","llama-index-readers-file==0.4.0; extra == \"all\"","llama-index-embeddings-huggingface==0.4.0; extra == \"all\"","llama-cloud==0.1.23; extra == \"all\"","llama-index-core==0.12.36; extra == \"all\"","llama-index-embeddings-openai==0.3.0; extra == \"all\"","llama-index-question-gen-openai==0.3.0; extra == \"all\"","llama-index-program-openai==0.3.0; extra == \"all\"","llama-index-multi-modal-llms-openai==0.4.0; extra == \"all\"","llama-index-cli==0.4.1; extra == \"all\"","llama-index-agent-openai==0.4.8; extra == \"all\"","llama-index-indices-managed-llama-cloud==0.7.1; extra == \"all\"","langchain==1.0.0; extra == \"all\"","langchain-core==1.0.0; extra == \"all\"","langchain-community>=0.4.0; extra == \"all\"","langchain-huggingface>=0.1.0; extra == \"all\"","langgraph==1.0.0; extra == \"all\"","langsmith>=0.1.0; extra == \"all\"","langchain-ollama==1.0.0; extra == \"all\"","EbookLib==0.19; extra == \"all\"","html2text==2025.4.15; extra == \"all\"","rake_nltk==1.0.6; extra == \"all\"","markdownify>=0.13.1; extra == \"all\"","requests-cache==1.2.1; extra == \"all\"","retry-requests==2.0.0; extra == \"all\"","openmeteo_requests==1.4.0; extra == \"all\"","uszipcode==1.0.1; extra == \"all\"","inflect==7.5.0; extra == \"all\"","pycountry==24.6.1; extra == \"all\"","librosa==0.11.0; extra == \"all\"","torchcodec>=0.8.0; extra == \"all\"","pika; extra == \"all\"","librosa==0.11.0; extra == \"all\"","pydub==0.25.1; extra == \"all\"","wavmark==0.0.3; extra == \"all\"","eng_to_ipa==0.0.2; extra == \"all\"","inflect==7.5.0; extra == \"all\"","unidecode==1.4.0; extra == \"all\"","langid==1.1.6; extra == \"all\"","txtsplit==1.0.0; extra == \"all\"","cached_path==1.7.3; extra == \"all\"","num2words==0.5.14; extra == \"all\"","g2p_en==2.1.0; extra == \"all\"","anyascii==0.3.2; extra == \"all\"","loguru==0.7.3; extra == \"all\"","pypinyin==0.54.0; extra == \"all\"","jieba==0.42.1; extra == \"all\"","cn2an==0.5.23; extra == \"all\"","unidic_lite==1.0.8; extra == \"all\"","unidic==1.1.0; extra == \"all\"","mecab-python3==1.0.10; extra == \"all\"","fugashi==1.4.0; extra == \"all\"","pykakasi==2.3.0; extra == \"all\"","jamo==0.4.1; extra == \"all\"","python-mecab-ko==1.3.7; extra == \"all\"","python-mecab-ko-dic==2.1.1.post2; extra == \"all\"","g2pkk>=0.1.2; extra == \"all\"","gruut[de,es,fr]==2.4.0; extra == \"all\"","networkx==3.4.2; extra == \"all\"","ddgs>=9.0.0; extra == \"all\"","aiohttp>=3.11.0; extra == \"all\"","google-api-python-client>=2.170.0; extra == \"all\"","wikipedia>=1.4.0; extra == \"all\"","scrapy==2.13.1; extra == \"all\"","trafilatura==2.0.0; extra == \"all\"","pyautogui>=0.9.54; extra == \"all\"","pillow>=12.0.0; extra == \"all\"","pyscreeze>=1.0.1; extra == \"all\"","python-xlib>=0.33; platform_system == \"Linux\" and extra == \"all\"","pygetwindow>=0.0.9; extra == \"all\"","nvidia-cuda-runtime; extra == \"all\"","diffusers==0.35.1; extra == \"all\"","controlnet_aux==0.0.10; extra == \"all\"","safetensors==0.6.2; extra == \"all\"","compel==2.1.1; extra == \"all\"","transformers==4.57.3; extra == \"all\"","datasets==4.0.0; extra == \"all\"","peft==0.17.1; extra == \"all\"","PySide6==6.9.0; extra == \"all\"","PySide6_Addons==6.9.0; extra == \"all\"","PySide6_Essentials==6.9.0; extra == \"all\"","DeepCache==0.1.1; extra == \"all\"","tomesd==0.1.3; extra == \"all\"","gguf==0.17.1; extra == \"all\"","bitsandbytes==0.45.5; extra == \"all\"","sentence_transformers==3.4.1; extra == \"all\"","sounddevice==0.5.1; extra == \"all\"","pyttsx3==2.91; extra == \"all\"","cryptography==44.0.3; extra == \"all\"","faster-whisper>=1.0.0; extra == \"all\"","llama-cpp-python==0.3.16; extra == \"all\"","sumy==0.11.0; extra == \"all\"","sentencepiece==0.2.0; extra == \"all\"","lingua-language-detector==2.1.0; extra == \"all\"","markdown==3.8; extra == \"all\"","libzim==3.7.0; extra == \"all\"","mistral_common>=1.8.5; extra == \"all\"","rank-bm25>=0.2.2; extra == \"all\"","llama-index==0.12.36; extra == \"all\"","llama-index-readers-file==0.4.0; extra == \"all\"","llama-index-embeddings-huggingface==0.4.0; extra == \"all\"","llama-cloud==0.1.23; extra == \"all\"","llama-index-core==0.12.36; extra == \"all\"","llama-index-embeddings-openai==0.3.0; extra == \"all\"","llama-index-question-gen-openai==0.3.0; extra == \"all\"","llama-index-program-openai==0.3.0; extra == \"all\"","llama-index-multi-modal-llms-openai==0.4.0; extra == \"all\"","llama-index-cli==0.4.1; extra == \"all\"","llama-index-agent-openai==0.4.8; extra == \"all\"","llama-index-indices-managed-llama-cloud==0.7.1; extra == \"all\"","langchain==1.0.0; extra == \"all\"","langchain-core==1.0.0; extra == \"all\"","langchain-community>=0.4.0; extra == \"all\"","langchain-huggingface>=0.1.0; extra == \"all\"","langgraph==1.0.0; extra == \"all\"","langsmith>=0.1.0; extra == \"all\"","langchain-ollama==1.0.0; extra == \"all\"","EbookLib==0.19; extra == \"all\"","html2text==2025.4.15; extra == \"all\"","rake_nltk==1.0.6; extra == \"all\"","markdownify>=0.13.1; extra == \"all\"","requests-cache==1.2.1; extra == \"all\"","retry-requests==2.0.0; extra == \"all\"","openmeteo_requests==1.4.0; extra == \"all\"","uszipcode==1.0.1; extra == \"all\"","inflect==7.5.0; extra == \"all\"","pycountry==24.6.1; extra == \"all\"","librosa==0.11.0; extra == \"all\"","torchcodec>=0.8.0; extra == \"all\"","pika; extra == \"all\"","librosa==0.11.0; extra == \"all\"","pydub==0.25.1; extra == \"all\"","wavmark==0.0.3; extra == \"all\"","eng_to_ipa==0.0.2; extra == \"all\"","inflect==7.5.0; extra == \"all\"","unidecode==1.4.0; extra == \"all\"","langid==1.1.6; extra == \"all\"","txtsplit==1.0.0; extra == \"all\"","cached_path==1.7.3; extra == \"all\"","num2words==0.5.14; extra == \"all\"","g2p_en==2.1.0; extra == \"all\"","anyascii==0.3.2; extra == \"all\"","loguru==0.7.3; extra == \"all\"","pypinyin==0.54.0; extra == \"all\"","jieba==0.42.1; extra == \"all\"","cn2an==0.5.23; extra == \"all\"","unidic_lite==1.0.8; extra == \"all\"","unidic==1.1.0; extra == \"all\"","mecab-python3==1.0.10; extra == \"all\"","fugashi==1.4.0; extra == \"all\"","pykakasi==2.3.0; extra == \"all\"","jamo==0.4.1; extra == \"all\"","python-mecab-ko==1.3.7; extra == \"all\"","python-mecab-ko-dic==2.1.1.post2; extra == \"all\"","g2pkk>=0.1.2; extra == \"all\"","gruut[de,es,fr]==2.4.0; extra == \"all\"","networkx==3.4.2; extra == \"all\"","ddgs>=9.0.0; extra == \"all\"","aiohttp>=3.11.0; extra == \"all\"","google-api-python-client>=2.170.0; extra == \"all\"","wikipedia>=1.4.0; extra == \"all\"","scrapy==2.13.1; extra == \"all\"","trafilatura==2.0.0; extra == \"all\"","pyautogui>=0.9.54; extra == \"all\"","pillow>=12.0.0; extra == \"all\"","pyscreeze>=1.0.1; extra == \"all\"","python-xlib>=0.33; platform_system == \"Linux\" and extra == \"all\"","pygetwindow>=0.0.9; extra == \"all\"","nvidia-cuda-runtime; extra == \"all-dev\"","diffusers==0.35.1; extra == \"all-dev\"","controlnet_aux==0.0.10; extra == \"all-dev\"","safetensors==0.6.2; extra == \"all-dev\"","compel==2.1.1; extra == \"all-dev\"","transformers==4.57.3; extra == \"all-dev\"","datasets==4.0.0; extra == \"all-dev\"","peft==0.17.1; extra == \"all-dev\"","PySide6==6.9.0; extra == \"all-dev\"","PySide6_Addons==6.9.0; extra == \"all-dev\"","PySide6_Essentials==6.9.0; extra == \"all-dev\"","pytest; extra == \"all-dev\"","pytest-timeout; extra == \"all-dev\"","responses>=0.25.0; extra == \"all-dev\"","python-dotenv==1.0.1; extra == \"all-dev\"","coverage==7.8.0; extra == \"all-dev\"","black==25.1.0; extra == \"all-dev\"","pyinstaller==6.12.0; extra == \"all-dev\"","flake8==7.2.0; extra == \"all-dev\"","mypy==1.16.0; extra == \"all-dev\"","autoflake==2.3.1; extra == \"all-dev\"","pandas>=2.0.0; extra == \"all-dev\"","pyarrow>=14.0.0; extra == \"all-dev\"","tqdm>=4.0.0; extra == \"all-dev\"","DeepCache==0.1.1; extra == \"all-dev\"","tomesd==0.1.3; extra == \"all-dev\"","gguf==0.17.1; extra == \"all-dev\"","bitsandbytes==0.45.5; extra == \"all-dev\"","sentence_transformers==3.4.1; extra == \"all-dev\"","sounddevice==0.5.1; extra == \"all-dev\"","pyttsx3==2.91; extra == \"all-dev\"","cryptography==44.0.3; extra == \"all-dev\"","faster-whisper>=1.0.0; extra == \"all-dev\"","llama-cpp-python==0.3.16; extra == \"all-dev\"","sumy==0.11.0; extra == \"all-dev\"","sentencepiece==0.2.0; extra == \"all-dev\"","lingua-language-detector==2.1.0; extra == \"all-dev\"","markdown==3.8; extra == \"all-dev\"","libzim==3.7.0; extra == \"all-dev\"","mistral_common>=1.8.5; extra == \"all-dev\"","rank-bm25>=0.2.2; extra == \"all-dev\"","llama-index==0.12.36; extra == \"all-dev\"","llama-index-readers-file==0.4.0; extra == \"all-dev\"","llama-index-embeddings-huggingface==0.4.0; extra == \"all-dev\"","llama-cloud==0.1.23; extra == \"all-dev\"","llama-index-core==0.12.36; extra == \"all-dev\"","llama-index-embeddings-openai==0.3.0; extra == \"all-dev\"","llama-index-question-gen-openai==0.3.0; extra == \"all-dev\"","llama-index-program-openai==0.3.0; extra == \"all-dev\"","llama-index-multi-modal-llms-openai==0.4.0; extra == \"all-dev\"","llama-index-cli==0.4.1; extra == \"all-dev\"","llama-index-agent-openai==0.4.8; extra == \"all-dev\"","llama-index-indices-managed-llama-cloud==0.7.1; extra == \"all-dev\"","langchain==1.0.0; extra == \"all-dev\"","langchain-core==1.0.0; extra == \"all-dev\"","langchain-community>=0.4.0; extra == \"all-dev\"","langchain-huggingface>=0.1.0; extra == \"all-dev\"","langgraph==1.0.0; extra == \"all-dev\"","langsmith>=0.1.0; extra == \"all-dev\"","langchain-ollama==1.0.0; extra == \"all-dev\"","EbookLib==0.19; extra == \"all-dev\"","html2text==2025.4.15; extra == \"all-dev\"","rake_nltk==1.0.6; extra == \"all-dev\"","markdownify>=0.13.1; extra == \"all-dev\"","requests-cache==1.2.1; extra == \"all-dev\"","retry-requests==2.0.0; extra == \"all-dev\"","openmeteo_requests==1.4.0; extra == \"all-dev\"","uszipcode==1.0.1; extra == \"all-dev\"","inflect==7.5.0; extra == \"all-dev\"","pycountry==24.6.1; extra == \"all-dev\"","librosa==0.11.0; extra == \"all-dev\"","torchcodec>=0.8.0; extra == \"all-dev\"","pika; extra == \"all-dev\"","librosa==0.11.0; extra == \"all-dev\"","pydub==0.25.1; extra == \"all-dev\"","wavmark==0.0.3; extra == \"all-dev\"","eng_to_ipa==0.0.2; extra == \"all-dev\"","inflect==7.5.0; extra == \"all-dev\"","unidecode==1.4.0; extra == \"all-dev\"","langid==1.1.6; extra == \"all-dev\"","txtsplit==1.0.0; extra == \"all-dev\"","cached_path==1.7.3; extra == \"all-dev\"","num2words==0.5.14; extra == \"all-dev\"","g2p_en==2.1.0; extra == \"all-dev\"","anyascii==0.3.2; extra == \"all-dev\"","loguru==0.7.3; extra == \"all-dev\"","pypinyin==0.54.0; extra == \"all-dev\"","jieba==0.42.1; extra == \"all-dev\"","cn2an==0.5.23; extra == \"all-dev\"","unidic_lite==1.0.8; extra == \"all-dev\"","unidic==1.1.0; extra == \"all-dev\"","mecab-python3==1.0.10; extra == \"all-dev\"","fugashi==1.4.0; extra == \"all-dev\"","pykakasi==2.3.0; extra == \"all-dev\"","jamo==0.4.1; extra == \"all-dev\"","python-mecab-ko==1.3.7; extra == \"all-dev\"","python-mecab-ko-dic==2.1.1.post2; extra == \"all-dev\"","g2pkk>=0.1.2; extra == \"all-dev\"","gruut[de,es,fr]==2.4.0; extra == \"all-dev\"","networkx==3.4.2; extra == \"all-dev\"","ddgs>=9.0.0; extra == \"all-dev\"","aiohttp>=3.11.0; extra == \"all-dev\"","google-api-python-client>=2.170.0; extra == \"all-dev\"","wikipedia>=1.4.0; extra == \"all-dev\"","scrapy==2.13.1; extra == \"all-dev\"","trafilatura==2.0.0; extra == \"all-dev\"","pyautogui>=0.9.54; extra == \"all-dev\"","pillow>=12.0.0; extra == \"all-dev\"","pyscreeze>=1.0.1; extra == \"all-dev\"","python-xlib>=0.33; platform_system == \"Linux\" and extra == \"all-dev\"","pygetwindow>=0.0.9; extra == \"all-dev\"","nvidia-cuda-runtime; extra == \"all-dev\"","diffusers==0.35.1; extra == \"all-dev\"","controlnet_aux==0.0.10; extra == \"all-dev\"","safetensors==0.6.2; extra == \"all-dev\"","compel==2.1.1; extra == \"all-dev\"","transformers==4.57.3; extra == \"all-dev\"","datasets==4.0.0; extra == \"all-dev\"","peft==0.17.1; extra == \"all-dev\"","PySide6==6.9.0; extra == \"all-dev\"","PySide6_Addons==6.9.0; extra == \"all-dev\"","PySide6_Essentials==6.9.0; extra == \"all-dev\"","pytest; extra == \"all-dev\"","pytest-timeout; extra == \"all-dev\"","responses>=0.25.0; extra == \"all-dev\"","python-dotenv==1.0.1; extra == \"all-dev\"","coverage==7.8.0; extra == \"all-dev\"","black==25.1.0; extra == \"all-dev\"","pyinstaller==6.12.0; extra == \"all-dev\"","flake8==7.2.0; extra == \"all-dev\"","mypy==1.16.0; extra == \"all-dev\"","autoflake==2.3.1; extra == \"all-dev\"","pandas>=2.0.0; extra == \"all-dev\"","pyarrow>=14.0.0; extra == \"all-dev\"","tqdm>=4.0.0; extra == \"all-dev\"","DeepCache==0.1.1; extra == \"all-dev\"","tomesd==0.1.3; extra == \"all-dev\"","gguf==0.17.1; extra == \"all-dev\"","bitsandbytes==0.45.5; extra == \"all-dev\"","sentence_transformers==3.4.1; extra == \"all-dev\"","sounddevice==0.5.1; extra == \"all-dev\"","pyttsx3==2.91; extra == \"all-dev\"","cryptography==44.0.3; extra == \"all-dev\"","faster-whisper>=1.0.0; extra == \"all-dev\"","llama-cpp-python==0.3.16; extra == \"all-dev\"","sumy==0.11.0; extra == \"all-dev\"","sentencepiece==0.2.0; extra == \"all-dev\"","lingua-language-detector==2.1.0; extra == \"all-dev\"","markdown==3.8; extra == \"all-dev\"","libzim==3.7.0; extra == \"all-dev\"","mistral_common>=1.8.5; extra == \"all-dev\"","rank-bm25>=0.2.2; extra == \"all-dev\"","llama-index==0.12.36; extra == \"all-dev\"","llama-index-readers-file==0.4.0; extra == \"all-dev\"","llama-index-embeddings-huggingface==0.4.0; extra == \"all-dev\"","llama-cloud==0.1.23; extra == \"all-dev\"","llama-index-core==0.12.36; extra == \"all-dev\"","llama-index-embeddings-openai==0.3.0; extra == \"all-dev\"","llama-index-question-gen-openai==0.3.0; extra == \"all-dev\"","llama-index-program-openai==0.3.0; extra == \"all-dev\"","llama-index-multi-modal-llms-openai==0.4.0; extra == \"all-dev\"","llama-index-cli==0.4.1; extra == \"all-dev\"","llama-index-agent-openai==0.4.8; extra == \"all-dev\"","llama-index-indices-managed-llama-cloud==0.7.1; extra == \"all-dev\"","langchain==1.0.0; extra == \"all-dev\"","langchain-core==1.0.0; extra == \"all-dev\"","langchain-community>=0.4.0; extra == \"all-dev\"","langchain-huggingface>=0.1.0; extra == \"all-dev\"","langgraph==1.0.0; extra == \"all-dev\"","langsmith>=0.1.0; extra == \"all-dev\"","langchain-ollama==1.0.0; extra == \"all-dev\"","EbookLib==0.19; extra == \"all-dev\"","html2text==2025.4.15; extra == \"all-dev\"","rake_nltk==1.0.6; extra == \"all-dev\"","markdownify>=0.13.1; extra == \"all-dev\"","requests-cache==1.2.1; extra == \"all-dev\"","retry-requests==2.0.0; extra == \"all-dev\"","openmeteo_requests==1.4.0; extra == \"all-dev\"","uszipcode==1.0.1; extra == \"all-dev\"","inflect==7.5.0; extra == \"all-dev\"","pycountry==24.6.1; extra == \"all-dev\"","librosa==0.11.0; extra == \"all-dev\"","torchcodec>=0.8.0; extra == \"all-dev\"","pika; extra == \"all-dev\"","librosa==0.11.0; extra == \"all-dev\"","pydub==0.25.1; extra == \"all-dev\"","wavmark==0.0.3; extra == \"all-dev\"","eng_to_ipa==0.0.2; extra == \"all-dev\"","inflect==7.5.0; extra == \"all-dev\"","unidecode==1.4.0; extra == \"all-dev\"","langid==1.1.6; extra == \"all-dev\"","txtsplit==1.0.0; extra == \"all-dev\"","cached_path==1.7.3; extra == \"all-dev\"","num2words==0.5.14; extra == \"all-dev\"","g2p_en==2.1.0; extra == \"all-dev\"","anyascii==0.3.2; extra == \"all-dev\"","loguru==0.7.3; extra == \"all-dev\"","pypinyin==0.54.0; extra == \"all-dev\"","jieba==0.42.1; extra == \"all-dev\"","cn2an==0.5.23; extra == \"all-dev\"","unidic_lite==1.0.8; extra == \"all-dev\"","unidic==1.1.0; extra == \"all-dev\"","mecab-python3==1.0.10; extra == \"all-dev\"","fugashi==1.4.0; extra == \"all-dev\"","pykakasi==2.3.0; extra == \"all-dev\"","jamo==0.4.1; extra == \"all-dev\"","python-mecab-ko==1.3.7; extra == \"all-dev\"","python-mecab-ko-dic==2.1.1.post2; extra == \"all-dev\"","g2pkk>=0.1.2; extra == \"all-dev\"","gruut[de,es,fr]==2.4.0; extra == \"all-dev\"","networkx==3.4.2; extra == \"all-dev\"","ddgs>=9.0.0; extra == \"all-dev\"","aiohttp>=3.11.0; extra == \"all-dev\"","google-api-python-client>=2.170.0; extra == \"all-dev\"","wikipedia>=1.4.0; extra == \"all-dev\"","scrapy==2.13.1; extra == \"all-dev\"","trafilatura==2.0.0; extra == \"all-dev\"","pyautogui>=0.9.54; extra == \"all-dev\"","pillow>=12.0.0; extra == \"all-dev\"","pyscreeze>=1.0.1; extra == \"all-dev\"","python-xlib>=0.33; platform_system == \"Linux\" and extra == \"all-dev\"","pygetwindow>=0.0.9; extra == \"all-dev\"","nvidia-cuda-runtime; extra == \"all-dev\"","diffusers==0.35.1; extra == \"all-dev\"","controlnet_aux==0.0.10; extra == \"all-dev\"","safetensors==0.6.2; extra == \"all-dev\"","compel==2.1.1; extra == \"all-dev\"","transformers==4.57.3; extra == \"all-dev\"","datasets==4.0.0; extra == \"all-dev\"","peft==0.17.1; extra == \"all-dev\"","PySide6==6.9.0; extra == \"all-dev\"","PySide6_Addons==6.9.0; extra == \"all-dev\"","PySide6_Essentials==6.9.0; extra == \"all-dev\"","pytest; extra == \"all-dev\"","pytest-timeout; extra == \"all-dev\"","responses>=0.25.0; extra == \"all-dev\"","python-dotenv==1.0.1; extra == \"all-dev\"","coverage==7.8.0; extra == \"all-dev\"","black==25.1.0; extra == \"all-dev\"","pyinstaller==6.12.0; extra == \"all-dev\"","flake8==7.2.0; extra == \"all-dev\"","mypy==1.16.0; extra == \"all-dev\"","autoflake==2.3.1; extra == \"all-dev\"","pandas>=2.0.0; extra == \"all-dev\"","pyarrow>=14.0.0; extra == \"all-dev\"","tqdm>=4.0.0; extra == \"all-dev\"","DeepCache==0.1.1; extra == \"all-dev\"","tomesd==0.1.3; extra == \"all-dev\"","gguf==0.17.1; extra == \"all-dev\"","bitsandbytes==0.45.5; extra == \"all-dev\"","sentence_transformers==3.4.1; extra == \"all-dev\"","sounddevice==0.5.1; extra == \"all-dev\"","pyttsx3==2.91; extra == \"all-dev\"","cryptography==44.0.3; extra == \"all-dev\"","faster-whisper>=1.0.0; extra == \"all-dev\"","llama-cpp-python==0.3.16; extra == \"all-dev\"","sumy==0.11.0; extra == \"all-dev\"","sentencepiece==0.2.0; extra == \"all-dev\"","lingua-language-detector==2.1.0; extra == \"all-dev\"","markdown==3.8; extra == \"all-dev\"","libzim==3.7.0; extra == \"all-dev\"","mistral_common>=1.8.5; extra == \"all-dev\"","rank-bm25>=0.2.2; extra == \"all-dev\"","llama-index==0.12.36; extra == \"all-dev\"","llama-index-readers-file==0.4.0; extra == \"all-dev\"","llama-index-embeddings-huggingface==0.4.0; extra == \"all-dev\"","llama-cloud==0.1.23; extra == \"all-dev\"","llama-index-core==0.12.36; extra == \"all-dev\"","llama-index-embeddings-openai==0.3.0; extra == \"all-dev\"","llama-index-question-gen-openai==0.3.0; extra == \"all-dev\"","llama-index-program-openai==0.3.0; extra == \"all-dev\"","llama-index-multi-modal-llms-openai==0.4.0; extra == \"all-dev\"","llama-index-cli==0.4.1; extra == \"all-dev\"","llama-index-agent-openai==0.4.8; extra == \"all-dev\"","llama-index-indices-managed-llama-cloud==0.7.1; extra == \"all-dev\"","langchain==1.0.0; extra == \"all-dev\"","langchain-core==1.0.0; extra == \"all-dev\"","langchain-community>=0.4.0; extra == \"all-dev\"","langchain-huggingface>=0.1.0; extra == \"all-dev\"","langgraph==1.0.0; extra == \"all-dev\"","langsmith>=0.1.0; extra == \"all-dev\"","langchain-ollama==1.0.0; extra == \"all-dev\"","EbookLib==0.19; extra == \"all-dev\"","html2text==2025.4.15; extra == \"all-dev\"","rake_nltk==1.0.6; extra == \"all-dev\"","markdownify>=0.13.1; extra == \"all-dev\"","requests-cache==1.2.1; extra == \"all-dev\"","retry-requests==2.0.0; extra == \"all-dev\"","openmeteo_requests==1.4.0; extra == \"all-dev\"","uszipcode==1.0.1; extra == \"all-dev\"","inflect==7.5.0; extra == \"all-dev\"","pycountry==24.6.1; extra == \"all-dev\"","librosa==0.11.0; extra == \"all-dev\"","torchcodec>=0.8.0; extra == \"all-dev\"","pika; extra == \"all-dev\"","librosa==0.11.0; extra == \"all-dev\"","pydub==0.25.1; extra == \"all-dev\"","wavmark==0.0.3; extra == \"all-dev\"","eng_to_ipa==0.0.2; extra == \"all-dev\"","inflect==7.5.0; extra == \"all-dev\"","unidecode==1.4.0; extra == \"all-dev\"","langid==1.1.6; extra == \"all-dev\"","txtsplit==1.0.0; extra == \"all-dev\"","cached_path==1.7.3; extra == \"all-dev\"","num2words==0.5.14; extra == \"all-dev\"","g2p_en==2.1.0; extra == \"all-dev\"","anyascii==0.3.2; extra == \"all-dev\"","loguru==0.7.3; extra == \"all-dev\"","pypinyin==0.54.0; extra == \"all-dev\"","jieba==0.42.1; extra == \"all-dev\"","cn2an==0.5.23; extra == \"all-dev\"","unidic_lite==1.0.8; extra == \"all-dev\"","unidic==1.1.0; extra == \"all-dev\"","mecab-python3==1.0.10; extra == \"all-dev\"","fugashi==1.4.0; extra == \"all-dev\"","pykakasi==2.3.0; extra == \"all-dev\"","jamo==0.4.1; extra == \"all-dev\"","python-mecab-ko==1.3.7; extra == \"all-dev\"","python-mecab-ko-dic==2.1.1.post2; extra == \"all-dev\"","g2pkk>=0.1.2; extra == \"all-dev\"","gruut[de,es,fr]==2.4.0; extra == \"all-dev\"","networkx==3.4.2; extra == \"all-dev\"","ddgs>=9.0.0; extra == \"all-dev\"","aiohttp>=3.11.0; extra == \"all-dev\"","google-api-python-client>=2.170.0; extra == \"all-dev\"","wikipedia>=1.4.0; extra == \"all-dev\"","scrapy==2.13.1; extra == \"all-dev\"","trafilatura==2.0.0; extra == \"all-dev\"","pyautogui>=0.9.54; extra == \"all-dev\"","pillow>=12.0.0; extra == \"all-dev\"","pyscreeze>=1.0.1; extra == \"all-dev\"","python-xlib>=0.33; platform_system == \"Linux\" and extra == \"all-dev\"","pygetwindow>=0.0.9; extra == \"all-dev\"","nvidia-cuda-runtime; extra == \"windows\"","diffusers==0.35.1; extra == \"windows\"","controlnet_aux==0.0.10; extra == \"windows\"","safetensors==0.6.2; extra == \"windows\"","compel==2.1.1; extra == \"windows\"","transformers==4.57.3; extra == \"windows\"","datasets==4.0.0; extra == \"windows\"","peft==0.17.1; extra == \"windows\"","PySide6==6.9.0; extra == \"windows\"","PySide6_Addons==6.9.0; extra == \"windows\"","PySide6_Essentials==6.9.0; extra == \"windows\"","pytest; extra == \"windows\"","pytest-timeout; extra == \"windows\"","responses>=0.25.0; extra == \"windows\"","python-dotenv==1.0.1; extra == \"windows\"","coverage==7.8.0; extra == \"windows\"","black==25.1.0; extra == \"windows\"","pyinstaller==6.12.0; extra == \"windows\"","flake8==7.2.0; extra == \"windows\"","mypy==1.16.0; extra == \"windows\"","autoflake==2.3.1; extra == \"windows\"","pandas>=2.0.0; extra == \"windows\"","pyarrow>=14.0.0; extra == \"windows\"","tqdm>=4.0.0; extra == \"windows\"","DeepCache==0.1.1; extra == \"windows\"","tomesd==0.1.3; extra == \"windows\"","gguf==0.17.1; extra == \"windows\"","bitsandbytes==0.45.5; extra == \"windows\"","sentence_transformers==3.4.1; extra == \"windows\"","sounddevice==0.5.1; extra == \"windows\"","pyttsx3==2.91; extra == \"windows\"","cryptography==44.0.3; extra == \"windows\"","faster-whisper>=1.0.0; extra == \"windows\"","llama-cpp-python==0.3.16; extra == \"windows\"","sumy==0.11.0; extra == \"windows\"","sentencepiece==0.2.0; extra == \"windows\"","lingua-language-detector==2.1.0; extra == \"windows\"","markdown==3.8; extra == \"windows\"","libzim==3.7.0; extra == \"windows\"","mistral_common>=1.8.5; extra == \"windows\"","rank-bm25>=0.2.2; extra == \"windows\"","llama-index==0.12.36; extra == \"windows\"","llama-index-readers-file==0.4.0; extra == \"windows\"","llama-index-embeddings-huggingface==0.4.0; extra == \"windows\"","llama-cloud==0.1.23; extra == \"windows\"","llama-index-core==0.12.36; extra == \"windows\"","llama-index-embeddings-openai==0.3.0; extra == \"windows\"","llama-index-question-gen-openai==0.3.0; extra == \"windows\"","llama-index-program-openai==0.3.0; extra == \"windows\"","llama-index-multi-modal-llms-openai==0.4.0; extra == \"windows\"","llama-index-cli==0.4.1; extra == \"windows\"","llama-index-agent-openai==0.4.8; extra == \"windows\"","llama-index-indices-managed-llama-cloud==0.7.1; extra == \"windows\"","langchain==1.0.0; extra == \"windows\"","langchain-core==1.0.0; extra == \"windows\"","langchain-community>=0.4.0; extra == \"windows\"","langchain-huggingface>=0.1.0; extra == \"windows\"","langgraph==1.0.0; extra == \"windows\"","langsmith>=0.1.0; extra == \"windows\"","langchain-ollama==1.0.0; extra == \"windows\"","EbookLib==0.19; extra == \"windows\"","html2text==2025.4.15; extra == \"windows\"","rake_nltk==1.0.6; extra == \"windows\"","markdownify>=0.13.1; extra == \"windows\"","requests-cache==1.2.1; extra == \"windows\"","retry-requests==2.0.0; extra == \"windows\"","openmeteo_requests==1.4.0; extra == \"windows\"","uszipcode==1.0.1; extra == \"windows\"","inflect==7.5.0; extra == \"windows\"","pycountry==24.6.1; extra == \"windows\"","librosa==0.11.0; extra == \"windows\"","torchcodec>=0.8.0; extra == \"windows\"","pika; extra == \"windows\"","librosa==0.11.0; extra == \"windows\"","pydub==0.25.1; extra == \"windows\"","wavmark==0.0.3; extra == \"windows\"","eng_to_ipa==0.0.2; extra == \"windows\"","inflect==7.5.0; extra == \"windows\"","unidecode==1.4.0; extra == \"windows\"","langid==1.1.6; extra == \"windows\"","txtsplit==1.0.0; extra == \"windows\"","cached_path==1.7.3; extra == \"windows\"","num2words==0.5.14; extra == \"windows\"","g2p_en==2.1.0; extra == \"windows\"","anyascii==0.3.2; extra == \"windows\"","loguru==0.7.3; extra == \"windows\"","pypinyin==0.54.0; extra == \"windows\"","jieba==0.42.1; extra == \"windows\"","cn2an==0.5.23; extra == \"windows\"","unidic_lite==1.0.8; extra == \"windows\"","unidic==1.1.0; extra == \"windows\"","mecab-python3==1.0.10; extra == \"windows\"","fugashi==1.4.0; extra == \"windows\"","pykakasi==2.3.0; extra == \"windows\"","jamo==0.4.1; extra == \"windows\"","python-mecab-ko==1.3.7; extra == \"windows\"","python-mecab-ko-dic==2.1.1.post2; extra == \"windows\"","g2pkk>=0.1.2; extra == \"windows\"","gruut[de,es,fr]==2.4.0; extra == \"windows\"","networkx==3.4.2; extra == \"windows\"","ddgs>=9.0.0; extra == \"windows\"","aiohttp>=3.11.0; extra == \"windows\"","google-api-python-client>=2.170.0; extra == \"windows\"","wikipedia>=1.4.0; extra == \"windows\"","scrapy==2.13.1; extra == \"windows\"","trafilatura==2.0.0; extra == \"windows\"","pyautogui>=0.9.54; extra == \"windows\"","pillow>=12.0.0; extra == \"windows\"","pyscreeze>=1.0.1; extra == \"windows\"","python-xlib>=0.33; platform_system == \"Linux\" and extra == \"windows\"","pygetwindow>=0.0.9; extra == \"windows\""]},"github_stats":null,"bundle":null,"typescript":null,"known_issues":{"bugs_count":0,"bugs_severity":{},"status_breakdown":{},"link":null,"scope":"none"},"historical_compromise":null,"recommendation":{"action":"use_with_caution","issues":["Moderate health score (60/100) — verify manually"],"use_version":"5.6.1","version_hint":null,"summary":"airunner@5.6.1 low health (60/100) — consider alternatives"},"version_scoped":null,"_meta":{"endpoint":"check","tier":"full","philosophy":"DepScope is free. Use the cheapest endpoint that answers your real question.","cheaper_alternatives":[{"endpoint":"/api/exists/pypi/airunner","tokens_estimated":12,"use_when":"you only need to know if the package exists (hallucination guard)"},{"endpoint":"/api/health/pypi/airunner","tokens_estimated":80,"use_when":"you only need a 0-100 score for go/no-go (>=70 = safe)"},{"endpoint":"/api/prompt/pypi/airunner","tokens_estimated":280,"use_when":"you want a plain-text LLM-friendly brief instead of JSON"},{"endpoint":"POST /api/check_bulk","tokens_estimated":60,"use_when":"you have 5+ packages to check; sends one round-trip instead of N"}],"docs":"https://depscope.dev/integrate","hint_bulk":"You've called /api/check 9 times in 60s. Save bandwidth + tokens with POST /api/check_bulk (1 round-trip for N pkgs)."},"requested_version":null,"_cache":"miss","_response_ms":885,"_powered_by":"depscope.dev — free package intelligence for AI agents","typosquat":{"is_suspected":false},"maintainer_trust":{"available":false},"malicious":{"is_malicious":false},"scorecard":{"available":false},"quality":{"available":false},"version_history_summary":{"total_versions":20,"first_release_age_days":null,"last_release_days_ago":142,"avg_days_between_releases":null,"release_velocity":"moderate"}}