Files
beefy-player/pyproject.toml
T
beefcarver e30ca09627 refactor!: rename somafm-tui to beefy-player
The app is now a general internet-radio player rather than a SomaFM client, so the package, console script, MPRIS identity, mpv namespaces, macOS tap names, XDG directories and docs all move to beefy-player.

Environment variables are now BEEFY_* (the old SOMAFM_* spellings are still honoured) and an existing ~/.config/somafm-tui/config.json is migrated on first run, so favourites and volume survive the rename.

The visible interface is untouched: same layout, same logo, same keys.
2026-11-03 16:10:25 -05:00

68 lines
1.9 KiB
TOML

[project]
name = "beefy-player"
version = "0.1.0"
description = "A flashy terminal player for internet radio — live spectrum analyser, MPRIS / macOS Now Playing support, song history and pluggable station catalogues (SomaFM included)"
readme = "README.md"
license = "WTFPL"
license-files = ["LICENSE"]
requires-python = ">=3.10"
authors = [{ name = "beefy-player contributors" }]
keywords = ["radio", "internet-radio", "tui", "terminal", "mpris", "audio", "somafm"]
classifiers = [
"Environment :: Console",
"Intended Audience :: End Users/Desktop",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Multimedia :: Sound/Audio",
"Operating System :: POSIX :: Linux",
"Operating System :: MacOS",
"Environment :: MacOS X",
]
dependencies = [
"textual>=8.0,<9",
"rich>=14.2",
"httpx>=0.27",
"numpy>=2.0",
"pillow>=10.0",
"dbus-next>=0.2.3; sys_platform == 'linux'",
]
[project.scripts]
beefy-player = "beefy_player.__main__:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["beefy_player"]
[tool.hatch.build.targets.wheel.force-include]
"beefy_player/theme.tcss" = "beefy_player/theme.tcss"
[dependency-groups]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.24",
]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
[tool.ruff]
target-version = "py310"
line-length = 100
extend-exclude = ["dist", ".venv", "build"]
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F", "I", "UP", "B", "SIM", "RUF"]
ignore = ["RUF001"] # en/em dashes are part of real station metadata
# dbus-next needs short signature strings ("s", "a{sv}", "x", …) in
# annotations; they are not Python names.
[tool.ruff.lint.per-file-ignores]
"beefy_player/mpris.py" = ["F821", "F722", "UP037"]