--- /dev/null
+change-template: "- #$NUMBER - $TITLE (@$AUTHOR)"
+categories:
+ - title: "⚠ Breaking Changes"
+ labels:
+ - "breaking change"
+template: |
+ ## What’s Changed
+
+ $CHANGES
--- /dev/null
+name: Publish releases to PyPI
+
+on:
+ release:
+ types: [published, prereleased]
+
+jobs:
+ build-and-publish:
+ name: Builds and publishes releases to PyPI
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@master
+ - name: Set up Python 3.7
+ uses: actions/setup-python@v1
+ with:
+ python-version: 3.7
+ - name: Install wheel
+ run: >-
+ pip install wheel
+ - name: Build
+ run: >-
+ python3 setup.py sdist bdist_wheel
+ - name: Publish release to PyPI
+ uses: pypa/gh-action-pypi-publish@master
+ with:
+ user: __token__
+ password: ${{ secrets.PYPI_TOKEN }}
--- /dev/null
+name: Release Drafter
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ update_release_draft:
+ runs-on: ubuntu-latest
+ steps:
+ # Drafts your next Release notes as Pull Requests are merged into "master"
+ - uses: release-drafter/release-drafter@v5
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
--- /dev/null
+# This workflow will install Python dependencies, run tests and lint
+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
+
+name: Test with Pre-commit and Tox
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: [3.7, 3.8]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install tox tox-gh-actions pre-commit
+ pre-commit install-hooks
+ - name: Lint with pre-commit
+ run: pre-commit run --all-files
+ - name: Test with tox
+ run: tox
{
"python.linting.pylintEnabled": true,
"python.linting.enabled": true,
- "python.pythonPath": "/Users/marcelvanderveldt/Workdir/musicassistant/venv/bin/python3"
+ "python.pythonPath": "venv/bin/python3"
}
\ No newline at end of file
-Metadata-Version: 2.1
+Metadata-Version: 1.2
Name: music-assistant
-Version: 0.0.20
-Summary: Music library manager and player based on sox.
-Home-page: https://github.com/marcelveldt/musicassistant
+Version: 1.0.0
+Summary: UNKNOWN
+Home-page: https://music-assistant.github.io/
Author: Marcel van der Veldt
-Author-email: m.vanderveldt@outlook.com
+Author-email: marcelveldt@users.noreply.github.com
License: UNKNOWN
-Download-URL: https://github.com/marcelveldt/musicassistant
-Description: # musicassistant
- Music Assistant - A library manager for (streaming) media
-
- work in progress !!
- More info soon
-
+Download-URL: https://github.com/music-assistant/server/archive/1.0.0.zip
+Project-URL: Bug Reports, https://github.com/music-assistant/server/issues
+Project-URL: Website, https://music-assistant.github.io/
+Project-URL: Discord, https://discord.gg/9xHYFY
+Description: UNKNOWN
Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
-Classifier: Intended Audience :: Developers
-Classifier: Natural Language :: English
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Topic :: Home Automation
Requires-Python: >=3.7
-Description-Content-Type: text/markdown
music_assistant/config.py
music_assistant/constants.py
music_assistant/database.py
-music_assistant/homeassistant.py
music_assistant/http_streamer.py
music_assistant/mass.py
music_assistant/metadata.py
music_assistant.egg-info/PKG-INFO
music_assistant.egg-info/SOURCES.txt
music_assistant.egg-info/dependency_links.txt
+music_assistant.egg-info/entry_points.txt
music_assistant.egg-info/not-zip-safe
music_assistant.egg-info/requires.txt
music_assistant.egg-info/top_level.txt
music_assistant/models/__init__.py
+music_assistant/models/config_entry.py
music_assistant/models/media_types.py
music_assistant/models/musicprovider.py
music_assistant/models/player.py
music_assistant/models/player_queue.py
music_assistant/models/playerprovider.py
-music_assistant/models/playerstate.py
-music_assistant/musicproviders/__init__.py
-music_assistant/musicproviders/file.py
-music_assistant/musicproviders/qobuz.py
-music_assistant/musicproviders/spotify.py
-music_assistant/musicproviders/tunein.py
-music_assistant/playerproviders/__init__.py
-music_assistant/playerproviders/chromecast.py
-music_assistant/playerproviders/sonos.py
-music_assistant/playerproviders/squeezebox.py
-music_assistant/playerproviders/webplayer.py
\ No newline at end of file
+music_assistant/models/provider.py
+music_assistant/models/streamdetails.py
+music_assistant/providers/__init__.py
+music_assistant/providers/chromecast/__init__.py
+music_assistant/providers/chromecast/const.py
+music_assistant/providers/chromecast/models.py
+music_assistant/providers/chromecast/player.py
+music_assistant/providers/demo/__init__.py
+music_assistant/providers/demo/demo_musicprovider.py
+music_assistant/providers/demo/demo_playerprovider.py
+music_assistant/providers/home_assistant/__init__.py
+music_assistant/providers/qobuz/__init__.py
+music_assistant/providers/sonos/__init__.py
+music_assistant/providers/sonos/sonos.py
+music_assistant/providers/spotify/__init__.py
+music_assistant/providers/squeezebox/__init__.py
+music_assistant/providers/squeezebox/constants.py
+music_assistant/providers/squeezebox/discovery.py
+music_assistant/providers/squeezebox/socket_client.py
+music_assistant/providers/tunein/__init__.py
\ No newline at end of file
--- /dev/null
+[console_scripts]
+mass = music_assistant.__main__:main
+musicassistant = music_assistant.__main__:main
+
argparse==1.4.0
cytoolz==0.10.1
-aiohttp==3.6.2
+aiohttp[speedups]==3.6.2
requests==2.24.0
pychromecast==7.2.1
asyncio-throttle==1.0.1
-aiosqlite==0.3.0
+aiosqlite==0.15.0
pytaglib==1.4.6
python-slugify==4.0.1
memory-tempfile==2.2.3
pillow==7.2.0
aiohttp_cors==0.7.0
unidecode==1.1.1
+hass-client==0.0.6
+PyJWT==1.7.1
+aiohttp_jwt==0.6.1
+zeroconf==0.28.4
+passlib==1.7.2
+cryptography==3.1
uvloop
"""All constants for Music Assistant."""
-__version__ = 1.0.0
-REQUIRED_PYTHON_VER = 3.7
+__version__ = "1.0.0"
+REQUIRED_PYTHON_VER = "3.7"
CONF_USERNAME = "username"
CONF_PASSWORD = "password"
]
)
webdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "web/")
- app.router.add_static("/", webdir, append_version=True)
+ if os.path.isdir(webdir):
+ app.router.add_static("/", webdir, append_version=True)
# Add CORS support to all routes
cors = aiohttp_cors.setup(
async def async_index(self, request):
# pylint: disable=unused-argument
- index_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), "web/index.html")
- return web.FileResponse(index_file)
+ webdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "web/")
+ if not os.path.isdir(webdir):
+ raise web.HTTPFound('https://music-assistant.github.io/app')
+ return web.FileResponse(os.path.join(webdir, "index.html"))
@login_required
@routes.get("/api/library/artists")
"""Music Assistant setup."""
+import os
from datetime import datetime as dt
from setuptools import find_packages, setup
-import music_assistant.const as mass_const
+import music_assistant.constants as mass_const
PROJECT_NAME = "Music Assistant"
PROJECT_PACKAGE_NAME = "music_assistant"
}
PACKAGES = find_packages(exclude=["tests", "tests.*"])
+PACKAGE_FILES = []
+for (path, directories, filenames) in os.walk('music_assistant/'):
+ for filename in filenames:
+ PACKAGE_FILES.append(os.path.join('..', path, filename))
with open("requirements.txt") as f:
REQUIRES = f.read().splitlines()
include_package_data=True,
zip_safe=False,
install_requires=REQUIRES,
- python_requires=f">={MIN_PY_VERSION}",
+ python_requires=f">={mass_const.REQUIRED_PYTHON_VER}",
test_suite="tests",
entry_points={"console_scripts": ["mass = music_assistant.__main__:main", "musicassistant = music_assistant.__main__:main"]},
+ package_data={
+ 'music_assistant': PACKAGE_FILES,
+ },
)