Files
MoviePilot/pyproject.toml
T

176 lines
4.4 KiB
TOML

[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",
"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",
"crcmod-plus==2.3.1",
"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",
"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",
"moviepilot-rust~=0.3.2",
"mutagen~=1.47.0",
"openai~=2.41.1",
"orjson==3.12.0",
"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",
"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",
]
[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",
"ruff~=0.16.4",
]
runtime-standard = [
"Brotli==1.2.0",
"bcrypt~=4.3.0",
"lxml~=6.1.2",
"psycopg2-binary~=2.9.12",
"zhconv-rs~=0.4.1",
]
runtime-free-threaded = [
"Brotli==1.2.0",
"bcrypt~=5.0.0",
"lxml==7.0.0b1",
"psycopg[c]==3.3.4",
]
[tool.ruff]
target-version = "py314"
line-length = 120
exclude = ["app/plugins"]
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F", "I"]
[tool.uv]
package = false
required-version = "==0.12.5"
default-groups = ["dev", "runtime-standard"]
conflicts = [
[
{ group = "runtime-standard" },
{ group = "runtime-free-threaded" },
],
]
exclude-dependencies = [
{ package = { name = "oss2" }, dependencies = ["crcmod"] },
]
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.uv.extra-build-variables]
orjson = { ORJSON_BUILD_FREETHREADED = "1" }
[tool.uv.sources]
brotli = { url = "https://github.com/google/brotli/archive/51be27dbd9782f9fe27bc6e06cee6ff18311702d.tar.gz", group = "runtime-free-threaded" }
[tool.setuptools]
py-modules = ["version"]
[tool.setuptools.dynamic]
version = { attr = "version.APP_VERSION" }