Files
MoviePilot/pyproject.toml
T
InfinityPacer 326b5cf3ad feat: 新增 Python 3.14t 自由线程镜像 (#6434)
* fix(resource): select free-threaded extension ABI

* chore(deps): require moviepilot-rust 0.2.9

* perf: add free-threaded runtime comparison

* feat: add free-threaded runtime profile

* chore(deps): require moviepilot-rust 0.3.0

* test: isolate system endpoint import graph

* fix(docker): preserve runtime profile during recovery

* feat(runtime): expose active GIL state

* feat(plugin): log GIL fallback attribution

* test: refresh runtime observability dependency baseline

* fix(plugin): validate the active uv runtime profile

* test(runtime): expand free-threaded benchmark evidence

* docs(runtime): define v3t governance gates

* test(runtime): separate rust benchmark modes

* docs: sync free-threaded architecture baseline

* perf: add PostgreSQL driver comparison

* docs(runtime): record final free-threaded evidence

* fix(runtime): converge dual-profile dependency verification

* fix(runtime): scope Python 3.14 warning filter

* fix(runtime): match actual oss2 syntax warning

* docs(runtime): refresh free-threaded benchmark evidence

* test(architecture): refresh runtime dependency baseline

* ci: skip unused Trivy Java database

* build: exclude local verification artifacts

* docs(runtime): refresh PostgreSQL driver benchmarks

* docs(runtime): record plugin restore acceptance

* docs(runtime): record amd64 candidate acceptance

* ci: pin beta image publisher action

* test(architecture): merge runtime dependency baseline

* feat(runtime): expose Python GIL status

* docs(runtime): document Python runtime status fields
2026-08-24 17:48:14 +08:00

167 lines
4.3 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.0",
"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",
]
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.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" }