mirror of
https://github.com/beetbox/beets.git
synced 2025-12-15 21:14:19 +01:00
224 lines
6.6 KiB
TOML
224 lines
6.6 KiB
TOML
[tool.poetry]
|
|
name = "beets"
|
|
version = "2.0.0"
|
|
description = "music tagger and library organizer"
|
|
authors = ["Adrian Sampson <adrian@radbox.org>"]
|
|
maintainers = ["Serene-Arc"]
|
|
license = "MIT"
|
|
readme = "README.rst"
|
|
homepage = "https://beets.io/"
|
|
repository = "https://github.com/beetbox/beets"
|
|
documentation = "https://beets.readthedocs.io/en/stable/"
|
|
classifiers = [
|
|
"Topic :: Multimedia :: Sound/Audio",
|
|
"Topic :: Multimedia :: Sound/Audio :: Players :: MP3",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Environment :: Console",
|
|
"Environment :: Web Environment",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.8",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
]
|
|
packages = [
|
|
{ include = "beets" },
|
|
{ include = "beetsplug" },
|
|
]
|
|
|
|
[tool.poetry.urls]
|
|
Changelog = "https://github.com/beetbox/beets/blob/master/docs/changelog.rst"
|
|
"Bug Tracker" = "https://github.com/beetbox/beets/issues"
|
|
|
|
[tool.poetry.dependencies]
|
|
python = ">=3.8,<4"
|
|
|
|
colorama = { version = "*", markers = "sys_platform == 'win32'" }
|
|
confuse = ">=1.5.0"
|
|
jellyfish = "*"
|
|
mediafile = ">=0.12.0"
|
|
munkres = ">=1.0.0"
|
|
musicbrainzngs = ">=0.4"
|
|
pyyaml = "*"
|
|
typing_extensions = "*"
|
|
unidecode = ">=1.3.6"
|
|
beautifulsoup4 = { version = "*", optional = true }
|
|
dbus-python = { version = "*", optional = true }
|
|
flask = { version = "*", optional = true }
|
|
flask-cors = { version = "*", optional = true }
|
|
langdetect = { version = "*", optional = true }
|
|
mutagen = { version = ">=1.33", optional = true }
|
|
Pillow = { version = "*", optional = true }
|
|
py7zr = { version = "*", optional = true }
|
|
pyacoustid = { version = "*", optional = true }
|
|
PyGObject = { version = "*", optional = true }
|
|
pylast = { version = "*", optional = true }
|
|
python-mpd2 = { version = ">=0.4.2", optional = true }
|
|
python3-discogs-client = { version = ">=2.3.15", optional = true }
|
|
pyxdg = { version = "*", optional = true }
|
|
rarfile = { version = "*", optional = true }
|
|
reflink = { version = "*", optional = true }
|
|
requests = { version = "*", optional = true }
|
|
requests-oauthlib = { version = ">=0.6.1", optional = true }
|
|
soco = { version = "*", optional = true }
|
|
|
|
[tool.poetry.group.test.dependencies]
|
|
beautifulsoup4 = "*"
|
|
codecov = ">=2.1.13"
|
|
flask = "*"
|
|
mock = "*"
|
|
pylast = "*"
|
|
pytest = "*"
|
|
pytest-cov = "*"
|
|
pytest-flask = "*"
|
|
python-mpd2 = "*"
|
|
python3-discogs-client = ">=2.3.15"
|
|
py7zr = "*"
|
|
pyxdg = "*"
|
|
rarfile = "*"
|
|
reflink = "*"
|
|
requests_oauthlib = "*"
|
|
responses = ">=0.3.0"
|
|
|
|
[tool.poetry.group.format.dependencies]
|
|
isort = { version = "<5.14", extras = ["colors"] }
|
|
black = ">=24.3,<25"
|
|
|
|
[tool.poetry.group.lint.dependencies]
|
|
flake8 = "*"
|
|
pep8-naming = "*"
|
|
|
|
[tool.poetry.group.typing.dependencies]
|
|
mypy = "*"
|
|
types-beautifulsoup4 = "*"
|
|
types-Flask-Cors = "*"
|
|
types-Pillow = "*"
|
|
types-PyYAML = "*"
|
|
types-requests = "*"
|
|
types-urllib3 = "*"
|
|
|
|
[tool.poetry.group.docs.dependencies]
|
|
pydata-sphinx-theme = "*"
|
|
sphinx = "*"
|
|
|
|
[tool.poetry.group.release.dependencies]
|
|
click = ">=8.1.7"
|
|
packaging = ">=24.0"
|
|
tomli = ">=2.0.1"
|
|
|
|
[tool.poetry.extras]
|
|
# inline comments note required external / non-python dependencies
|
|
absubmit = ["requests"] # extractor binary from https://acousticbrainz.org/download
|
|
aura = ["flask", "flask-cors", "Pillow"]
|
|
# badfiles # mp3val and flac
|
|
beatport = ["requests-oauthlib"]
|
|
bpd = ["PyGObject"] # python-gi and GStreamer 1.0+
|
|
chroma = ["pyacoustid"] # chromaprint or fpcalc
|
|
# convert # ffmpeg
|
|
discogs = ["python3-discogs-client"]
|
|
embedart = ["Pillow"] # ImageMagick
|
|
embyupdate = ["requests"]
|
|
fetchart = ["beautifulsoup4", "langdetect", "Pillow", "requests"]
|
|
import = ["py7zr", "rarfile"]
|
|
# ipfs # go-ipfs
|
|
# keyfinder # KeyFinder
|
|
kodiupdate = ["requests"]
|
|
lastgenre = ["pylast"]
|
|
lastimport = ["pylast"]
|
|
lyrics = ["beautifulsoup4", "langdetect", "requests"]
|
|
metasync = ["dbus-python"]
|
|
mpdstats = ["python-mpd2"]
|
|
plexupdate = ["requests"]
|
|
reflink = ["reflink"]
|
|
replaygain = [
|
|
"PyGObject",
|
|
] # python-gi and GStreamer 1.0+ or mp3gain/aacgain or Python Audio Tools or ffmpeg
|
|
scrub = ["mutagen"]
|
|
sonosupdate = ["soco"]
|
|
thumbnails = ["Pillow", "pyxdg"]
|
|
web = ["flask", "flask-cors"]
|
|
|
|
[tool.poetry.scripts]
|
|
beet = "beets.ui:main"
|
|
|
|
[build-system]
|
|
requires = ["poetry-core>=1.0.0"]
|
|
build-backend = "poetry.core.masonry.api"
|
|
|
|
[tool.pipx-install]
|
|
poethepoet = ">=0.26"
|
|
poetry = ">=1.8"
|
|
|
|
# We use a default path '.' to make black and isort behave like flake8 and
|
|
# mypy do: they act on the entire codebase (flake8 does it by default, and
|
|
# mypy follows our configuration) by default. Positional command-line arguments
|
|
# override this. Therefore, locally you can run `poe check-format <some-path>`
|
|
# to quickly check a specific path.
|
|
#
|
|
# Note: both tools respect .gitignore, therefore if we see them format
|
|
# something unwanted locally, we should add these paths to .gitignore.
|
|
[tool.poe.tasks._black]
|
|
help = "Run black"
|
|
cmd = "black $OPTS $path"
|
|
args = { path = { help = "Path to blacken", positional = true, multiple = true, default = "." } }
|
|
|
|
[tool.poe.tasks._isort]
|
|
help = "Run isort"
|
|
cmd = "isort $OPTS $path"
|
|
args = { path = { help = "Path to isort", positional = true, multiple = true, default = "." } }
|
|
|
|
[tool.poe.tasks.bump]
|
|
help = "Bump project version and update relevant files"
|
|
cmd = "python ./extra/release.py bump $version"
|
|
args = { version = { help = "The new version to set", positional = true, required = true } }
|
|
|
|
[tool.poe.tasks.changelog]
|
|
help = "Print the latest version's changelog in Markdown"
|
|
cmd = "python ./extra/release.py changelog"
|
|
|
|
[tool.poe.tasks.check-docs-links]
|
|
help = "Check the documentation for broken URLs"
|
|
cmd = "make -C docs linkcheck"
|
|
|
|
[tool.poe.tasks.check-format]
|
|
help = "Check the code for style issues"
|
|
ref = "format"
|
|
env.OPTS = "--check --diff --color"
|
|
|
|
[tool.poe.tasks.check-types]
|
|
help = "Check the code for typing issues. Accepts mypy options."
|
|
cmd = "mypy"
|
|
|
|
[tool.poe.tasks.docs]
|
|
help = "Build documentation"
|
|
cmd = "make -C docs html"
|
|
|
|
[tool.poe.tasks.format]
|
|
help = "Format the codebase"
|
|
ignore_fail = "return_non_zero"
|
|
sequence = ["_black $path", "_isort $path"]
|
|
args = { path = { help = "Path to format", positional = true, multiple = true, default = "." } }
|
|
|
|
[tool.poe.tasks.lint]
|
|
help = "Check the code for linting issues. Accepts flake8 options."
|
|
cmd = "flake8"
|
|
|
|
[tool.poe.tasks.update-dependencies]
|
|
help = "Update dependencies to their latest versions."
|
|
cmd = "poetry update -vv"
|
|
|
|
[tool.poe.tasks.test]
|
|
help = "Run tests with pytest"
|
|
cmd = "pytest"
|
|
|
|
[tool.black]
|
|
line-length = 80
|
|
target-version = ["py38", "py39", "py310", "py311"]
|
|
|
|
[tool.isort]
|
|
profile = "black"
|
|
py_version = 38
|
|
multi_line_output = 3
|
|
line_length = 80
|
|
indent = 4
|