mirror of
https://github.com/beetbox/beets.git
synced 2026-02-28 18:23:32 +01:00
This reverts commit fc373f5fef8c8dd1656dfdf31c14b3365a0a75bc. See CONTRIBUTING.rst which has tools setup guidelines for users. They are expected to install both poetry and poethepoet globally in their system.
219 lines
6.4 KiB
TOML
219 lines
6.4 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"
|
|
|
|
click = ">=8.1.7"
|
|
colorama = { version = "*", markers = "sys_platform == 'win32'" }
|
|
confuse = ">=1.5.0"
|
|
jellyfish = "*"
|
|
mediafile = ">=0.12.0"
|
|
munkres = ">=1.0.0"
|
|
musicbrainzngs = ">=0.4"
|
|
packaging = ">=24.0"
|
|
pyyaml = "*"
|
|
tomli = ">=2.0.1"
|
|
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"
|
|
|
|
[tool.poetry.group.lint.dependencies]
|
|
flake8 = "*"
|
|
flake8-docstrings = "*"
|
|
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.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"
|
|
release = "extra.release:cli"
|
|
|
|
[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 it. This allows us to check changed files _only_ in CI in a
|
|
# consistent way.
|
|
# 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 = "release 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 = "release 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.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
|