[build-system] requires = ["setuptools~=84.0.0"] build-backend = "setuptools.build_meta" [project] name = "moviepilot" dynamic = ["version"] requires-python = ">=3.14" dependencies = [ "aiofiles~=25.1.0", "aioshutil~=1.6", "aiosqlite~=0.22.1", "alembic~=1.18.4", "anitopy~=2.1.1", "anthropic~=0.109.1", "anyio~=4.14.2", "apscheduler~=3.11.2", "asyncpg~=0.31.0", "bcrypt~=4.3.0", "beautifulsoup4~=4.15.0", "boto3~=1.42.42", "cachetools~=7.1.4", "chardet~=7.4.3", "click~=8.4.1", "cloakbrowser~=0.5.3", "cn2an~=0.5.24", "cryptography~=50.0.0", "dateparser~=1.4.0", "ddgs~=9.14.4", "discord.py==2.7.1", "docker~=7.1.0", "fast-bencode~=1.1.8", "fastapi~=0.141.1", "google-genai~=2.8.0", "httpx[http2,socks]~=0.28.1", "httpx2[http2,socks]~=2.12.0", "jieba-next~=1.0.0rc1", "jinja2~=3.1.6", "langchain~=1.3.15", "langchain-anthropic~=1.4.6", "langchain-aws~=1.6.2", "langchain-community~=0.4.2", "langchain-core~=1.5.4", "langchain-deepseek~=1.1.0", "langchain-google-genai~=4.2.5", "langchain-openai~=1.3.2", "langgraph~=1.2.11", "langgraph-checkpoint~=4.2.0", "lark-oapi~=1.6.8", "lxml~=6.1.2", "moviepilot-rust~=0.2.8", "mutagen~=1.47.0", "openai~=2.41.1", "oss2~=2.19.1", "packaging~=26.3", "parse~=1.22.1", "pillow~=12.3.0", "pillow-avif-plugin~=1.5.5", "pinyin2hanzi~=0.1.1", "plexapi~=4.18.1", "psutil~=7.2.2", "psycopg2-binary~=2.9.12", "pycryptodome~=3.23.0", "pydantic>=2.13.4,<3.0.0", "pydantic-settings>=2.14.2,<3.0.0", "pyjwt~=2.13.0", "pympler~=1.1", "pyotp~=2.9.0", "pyparsing~=3.3.2", "pyquery~=2.0.1", "pystray~=0.19.5", "pytelegrambotapi~=4.36.0", "python-dateutil~=2.9.0.post0", "python-dotenv~=1.2.2", "python-multipart~=0.0.32", "pytz~=2026.2", "pyvirtualdisplay~=3.0", "pywebpush~=2.3.0", "pywin32==312 ; sys_platform == 'win32'", "pyyaml~=6.0.3", "qbittorrent-api==2026.6.0", "redis~=8.1.0", "regex~=2026.5.9", "requests[socks]~=2.34.2", "rsa~=4.9.1", "ruamel-yaml~=0.19.1", "setproctitle~=1.3.7", "setuptools~=84.0.0", "slack-bolt~=1.28.0", "slack-sdk~=3.42.0", "smbprotocol~=1.16.1", "sqlalchemy~=2.0.50", "starlette~=1.6.0", "telegramify-markdown~=1.2.0", "torrentool~=1.2.0", "tqdm~=4.68.2", "transmission-rpc~=7.0.11", "urllib3~=2.7.0", "uvicorn~=0.52.4", "watchdog~=6.0.0", "watchfiles~=1.2.0", "webauthn~=2.8.0", "websocket-client~=1.9.0", "zhconv-rs~=0.4.1", ] [dependency-groups] dev = [ "cython~=3.2.5", "mypy~=1.18.2", "pylint~=4.0.6", "pytest~=9.0.3", "pytest-asyncio~=1.4.0", "pytest-cov~=7.1.0", "pytest-timeout~=2.4.0", ] [tool.uv] package = false required-version = "==0.12.5" environments = [ "sys_platform == 'linux' and platform_machine == 'x86_64'", "sys_platform == 'linux' and platform_machine == 'aarch64'", "sys_platform == 'darwin' and platform_machine == 'x86_64'", "sys_platform == 'darwin' and platform_machine == 'arm64'", "sys_platform == 'win32' and platform_machine == 'AMD64'", ] required-environments = [ "sys_platform == 'linux' and platform_machine == 'x86_64'", "sys_platform == 'linux' and platform_machine == 'aarch64'", "sys_platform == 'darwin' and platform_machine == 'x86_64'", "sys_platform == 'darwin' and platform_machine == 'arm64'", "sys_platform == 'win32' and platform_machine == 'AMD64'", ] [tool.setuptools] py-modules = ["version"] [tool.setuptools.dynamic] version = { attr = "version.APP_VERSION" }