[project]
name = "xiaomusic"
version = "0.3.42"
description = "Play Music with xiaomi AI speaker"
authors = [
{name = "涵曦", email = "im.hanxi@gmail.com"},
]
dependencies = [
    "aiohttp>=3.8.6",
    "miservice-fork>=2.7.0",
    "mutagen>=1.47.0",
    "yt-dlp>=2024.07.01",
    "uvicorn>=0.30.1",
    "fastapi>=0.111.0",
    "starlette>=0.37.2",
    "aiofiles>=24.1.0",
    "ga4mp>=2.0.4",
    "apscheduler>=3.10.4",
    "opencc-python-reimplemented==0.1.7",
    "pillow>=10.4.0",
    "python-multipart>=0.0.12",
]
requires-python = ">=3.10,<3.12"
readme = "README.md"
license = {text = "MIT"}

[project.urls]
Homepage = "https://github.com/hanxi/xiaomusic"

[project.scripts]
xiaomusic = "xiaomusic.cli:main"

[build-system]
requires = ["pdm-backend"]
build-backend = "pdm.backend"

[tool.pdm]
[tool.pdm.dev-dependencies]
lint = [
    "ruff>=0.4.8",
]
dev = [
    "commitizen>=3.27.0",
]
[tool.ruff]
lint.select = [
    "B", # flake8-bugbear
    "C4", # flake8-comprehensions
    "E", # pycodestyle - Error
    "F", # Pyflakes
    "I", # isort
    "W", # pycodestyle - Warning
    "UP", # pyupgrade
]
lint.ignore = [
    "E501", # line-too-long
    "W191", # tab-indentation
]
include = ["**/*.py", "**/*.pyi", "**/pyproject.toml"]

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.ruff.lint.flake8-bugbear]
extend-immutable-calls = [
    "fastapi.Depends",
    "fastapi.params.Depends",
    "fastapi.Query",
    "fastapi.params.Query",
    "fastapi.File"
]

[tool.pdm.scripts]
lint = "ruff check ."
fmt = "ruff format ."
lintfmt = {composite = ["ruff check --fix .", "ruff format ."]}

[tool.commitizen]
name = "cz_conventional_commits"
tag_format = "v$version"
version_scheme = "pep440"
version_provider = "pep621"
update_changelog_on_bump = true
major_version_zero = true
version_files = [
    "xiaomusic/__init__.py",
]
