beets/setup.py
Šarūnas Nejus 0966e3c653
Test aura (#5239)
In #4746 I was making a small adjustment in beetsplug/aura.py and found
that the module wasn't tested. So this PR adds some high-level tests to
act a safeguard for any future adjustments.
2024-06-10 13:07:48 +01:00

189 lines
5.5 KiB
Python
Executable file

#!/usr/bin/env python
# This file is part of beets.
# Copyright 2016, Adrian Sampson.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
import os
import shutil
import subprocess
import sys
from setuptools import setup
def _read(fn):
path = os.path.join(os.path.dirname(__file__), fn)
return open(path).read()
def build_manpages():
# Go into the docs directory and build the manpage.
docdir = os.path.join(os.path.dirname(__file__), "docs")
curdir = os.getcwd()
os.chdir(docdir)
try:
subprocess.check_call(["make", "man"])
except OSError:
print("Could not build manpages (make man failed)!", file=sys.stderr)
return
finally:
os.chdir(curdir)
# Copy resulting manpages.
mandir = os.path.join(os.path.dirname(__file__), "man")
if os.path.exists(mandir):
shutil.rmtree(mandir)
shutil.copytree(os.path.join(docdir, "_build", "man"), mandir)
# Build manpages if we're making a source distribution tarball.
if "sdist" in sys.argv:
build_manpages()
setup(
name="beets",
version="2.0.0",
description="music tagger and library organizer",
author="Adrian Sampson",
author_email="adrian@radbox.org",
url="https://beets.io/",
license="MIT",
platforms="ALL",
long_description=_read("README.rst"),
test_suite="test.testall.suite",
zip_safe=False,
include_package_data=True, # Install plugin resources.
packages=[
"beets",
"beets.autotag",
"beets.dbcore",
"beets.test",
"beets.ui",
"beets.util",
"beetsplug",
"beetsplug.bpd",
"beetsplug.lastgenre",
"beetsplug.metasync",
"beetsplug.web",
],
entry_points={
"console_scripts": [
"beet = beets.ui:main",
],
},
install_requires=[
"confuse>=1.5.0",
"jellyfish",
"mediafile>=0.12.0",
"munkres>=1.0.0",
"musicbrainzngs>=0.4",
"pyyaml",
"typing_extensions",
"unidecode>=1.3.6",
]
+ (
# Support for ANSI console colors on Windows.
["colorama"]
if (sys.platform == "win32")
else []
),
extras_require={
"test": [
"beautifulsoup4",
"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",
],
"lint": [
"flake8",
"flake8-docstrings",
"pep8-naming",
],
"mypy": [
"mypy",
"types-beautifulsoup4",
"types-Flask-Cors",
"types-Pillow",
"types-PyYAML",
"types-requests",
"types-urllib3",
],
"docs": [
"pydata_sphinx_theme",
"sphinx",
],
# Plugin (optional) dependencies:
"absubmit": ["requests"],
"beatport": ["requests-oauthlib>=0.6.1"],
"bpd": ["PyGObject"],
"chroma": ["pyacoustid"],
"discogs": ["python3-discogs-client>=2.3.15"],
"embedart": ["Pillow"],
"embyupdate": ["requests"],
"fetchart": ["requests", "Pillow", "beautifulsoup4"],
"import": ["rarfile", "py7zr"],
"kodiupdate": ["requests"],
"lastgenre": ["pylast"],
"lastimport": ["pylast"],
"lyrics": ["requests", "beautifulsoup4", "langdetect"],
"metasync": ["dbus-python"],
"mpdstats": ["python-mpd2>=0.4.2"],
"plexupdate": ["requests"],
"reflink": ["reflink"],
"replaygain": ["PyGObject"],
"scrub": ["mutagen>=1.33"],
"sonosupdate": ["soco"],
"thumbnails": ["pyxdg", "Pillow"],
"web": ["flask", "flask-cors"],
},
# Non-Python/non-PyPI plugin dependencies:
# chroma: chromaprint or fpcalc
# convert: ffmpeg
# badfiles: mp3val and flac
# bpd: python-gi and GStreamer 1.0+
# embedart: ImageMagick
# absubmit: extractor binary from https://acousticbrainz.org/download
# keyfinder: KeyFinder
# replaygain: python-gi and GStreamer 1.0+
# or mp3gain/aacgain
# or Python Audio Tools
# or ffmpeg
# ipfs: go-ipfs
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",
],
)