[project]
name = "xiaomusic"
version = "0.3.39"
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"

[project.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.dev-dependencies]
lint = [
    "ruff>=0.4.8",
]
dev = [
    "commitizen>=3.27.0",
]

[tool.pdm.scripts]
lint = "ruff check ."
fmt = "ruff format ."

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

[tool.ruff]
include = [
    "**/*.py",
    "**/*.pyi",
    "**/pyproject.toml",
]

[tool.ruff.lint]
select = [
    "B",
    "C4",
    "E",
    "F",
    "I",
    "W",
    "UP",
]
ignore = [
    "E501",
    "W191",
]

[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.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",
]
