Dev Environment
Requirements
Section titled “Requirements”- Python 3.12+
- uv —
curl -LsSf https://astral.sh/uv/install.sh | sh - ffmpeg 6.1+ (for MA integration tests)
- macOS:
brew install ffmpeg - Ubuntu:
sudo apt-get install ffmpeg
- macOS:
- Fork of trudenboy/ma-server (for dev server)
./scripts/setup.shRe-run after git pull — MA model versions may change.
Running Tests
Section titled “Running Tests”# Unit tests only (no MA server needed)uv run pytest provider/tests/ -m "not integration"
# Full test suiteuv run pytest provider/tests/
# With coverage reportuv run pytest provider/tests/ --cov=provider/ --cov-report=htmlBranch Naming
Section titled “Branch Naming”feature/<description> # new featuresfix/<description> # bug fixeschore/<description> # maintenanceFeature Branch Lifecycle
Section titled “Feature Branch Lifecycle”git checkout dev && git pullgit checkout -b feature/my-feature
# develop + testuv run pytest provider/tests/pre-commit run --all-files
# PR: feature/* → devgit push origin feature/my-featuregh pr create --base devDev Server
Section titled “Dev Server”./scripts/dev-server.sh# UI: http://localhost:8095Conventional Commits
Section titled “Conventional Commits”feat: add feature Xfix: fix bug Ychore: update dependenciestest: add test for ZRelease Process
Section titled “Release Process”- Bump version in
VERSIONfile (e.g.1.2.0or1.2.0b1) - Push to
dev— pipeline auto-tags and releases - Manual fallback: Actions → Release → Run workflow → enter version
Shared Workspace (multi-provider)
Section titled “Shared Workspace (multi-provider)”For simultaneous development of multiple providers with a shared MA server:
# From the ma-provider-tools repository:python3 scripts/dev-workspace.py init --dir ~/ma-workspace --all
# Add a specific provider to an existing workspace:python3 scripts/dev-workspace.py add dlna_receiver
# Connect this repository to a workspace:./scripts/setup.sh --workspace ~/ma-workspace
# Update everything to latest:python3 scripts/dev-workspace.py update --dir ~/ma-workspace
# Start MA server:python3 scripts/dev-workspace.py run --dir ~/ma-workspace
# Workspace status:python3 scripts/dev-workspace.py status --dir ~/ma-workspaceThe workspace uses a single trudenboy/ma-server fork and shared .venv (Python 3.12).
Each provider is connected via symlink into ma-server/music_assistant/providers/.