Files
mediahive/pyproject.toml
T
LeoVasanko aea73ccd36
release / gui-build (linux, bash) (push) Successful in 57s
release / gui-build (windows, cmd) (push) Successful in 1m20s
release / gui-build (macos, bash) (push) Successful in 1m57s
macOS: PyQt6-WebEngine backend (modern Chromium ~122, variant A)
PyQt5's QtWebEngine is Chromium 87, too old for aspect-ratio and other
modern CSS. Qt6 WebEngine tracks current Chromium.
2026-09-23 03:51:32 +00:00

126 lines
2.7 KiB
TOML

[project]
name = "mediahive"
dynamic = ["version"]
description = "MediaHive - Media scanning, indexing, and Netflix-style streaming"
readme = "README.md"
requires-python = ">=3.14"
dependencies = [
"aiofiles>=25.1.0",
"aiopathlib>=0.6.0",
"bencodepy>=0.9.5",
"fastapi-vue>=1.4.1",
"fastapi[standard]>=0.128.0",
"httpx[http2]>=0.28.1",
"msgspec>=0.19",
"parse-torrent-title>=2.8.1",
"platformdirs>=4.0",
"tomli-w>=1.2.0",
"uvicorn[standard]>=0.40.0",
]
[project.scripts]
mediahive = "mediahive.__main__:main"
[project.urls]
Repository = "https://git.zi.fi/LeoVasanko/mediahive"
[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "vcs"
[tool.hatch.build]
packages = ["mediahive"]
artifacts = ["mediahive/frontend-build"]
only-packages = true
[tool.hatch.build.targets.sdist.hooks.custom]
path = "scripts/fastapi-vue/buildhook.py"
[tool.hatch.build.targets.sdist.force-include]
"scripts/fastapi-vue/buildhook.py" = "scripts/fastapi-vue/buildhook.py"
"scripts/fastapi-vue/buildutil.py" = "scripts/fastapi-vue/buildutil.py"
[tool.uv]
package = true
[tool.uv.sources]
parse-torrent-title = { git = "https://github.com/platelminto/parse-torrent-title.git" }
[project.optional-dependencies]
gui = [
"pywebview[qt]>=6.2.1; platform_system != 'Windows'",
"pywebview>=6.2.1; platform_system == 'Windows'",
"velopack>=1.2",
"qtpy>=2.4.1; platform_system == 'Darwin'",
# macOS Qt backend (bundled modern Chromium); PyQt6-WebEngine pulls PyQt6
"PyQt6-WebEngine>=6.7.0; platform_system == 'Darwin'",
"pythonnet>=3.1.0rc0; platform_system == 'Windows' and python_version >= '3.14'",
"pyinstaller>=6.0",
]
[dependency-groups]
dev = [
"httpx>=0.28.1",
"ruff>=0.15.14",
"setuptools-scm>=8",
]
[tool.ruff]
preview = true
[tool.ruff.lint]
select = ["ALL"]
ignore = [
"D203",
"D213",
"DOC201",
"COM812",
"T201",
"EM",
"TC",
"TRY003",
"S",
"CPY001",
"PLR",
"PLW",
# TEMP suppressions - revisit and remove after focused cleanup passes.
"C901",
"DOC501",
"ANN201",
"D103",
"FBT001",
"ANN001",
"D102",
"TRY300",
"D107",
"ANN202",
"B904",
"ASYNC220",
"E501",
"INP001",
"FBT002",
"PLC0415",
"D101",
"RUF006",
"SLF001",
"ASYNC240",
"N801",
"SIM102",
"DTZ005",
"RUF034",
"D415",
"D400",
"ANN401",
# Allow en-dash in docstrings (used for list formatting)
"RUF002",
# Allow ctypes COM variable names (CLSID_*, IID_*, etc.)
"N806",
# Allow inline comments that describe output formats
"ERA001",
# Allow unused local variables in ctypes COM boilerplate
"F841",
]