[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" }
