pyproject.toml
Rama main · réplica de lectura del repositorio original.
[tool.semantic_release]
version_source = "tag"
commit_version_number = true
branch = "main"
upload_to_pypi = false
upload_to_release = true
build_command = "python scripts/update_versions.py {version}"
[tool.semantic_release.commit_parser_options]
allowed_tags = [
"build",
"chore",
"ci",
"docs",
"feat",
"fix",
"perf",
"style",
"refactor",
"test",
]
minor_tags = ["feat"]
patch_tags = ["fix", "perf", "chore"]
[project]
name = "audiovault"
description = "Self-hosted application for importing, managing, and downloading music from major streaming platforms"
version = "0.6.3"
[tool.ruff]
line-length = 120
target-version = "py314"
# Treat backend/ as a source root so `app` resolves as first-party regardless
# of the working directory ruff is invoked from (repo root vs. cd backend in CI).
src = ["backend"]
[tool.ruff.lint]
select = [
"E", "F", "W", # pycodestyle + pyflakes
"S", # flake8-bandit (security)
"B", # flake8-bugbear (bugs + design issues)
"I", # isort
"UP", # pyupgrade (modern Python syntax)
"N", # pep8-naming
]
ignore = [
"S101", # allow assert
"S311", # allow random (non-security use)
"S603", # subprocess without shell — intentional
"S607", # partial path executable — intentional (ffmpeg, aria2)
]
[tool.ruff.lint.per-file-ignores]
"backend/tests/**" = ["S"]
[tool.ruff.lint.isort]
known-first-party = ["app"]
[tool.mypy]
python_version = "3.14"
ignore_missing_imports = true
disallow_untyped_calls = false
disallow_untyped_defs = false
check_untyped_defs = true
plugins = ["sqlalchemy.ext.mypy.plugin"]
[[tool.mypy.overrides]]
module = ["app.api.*"]
disable_error_code = ["assignment"]
[[tool.mypy.overrides]]
module = [
"app.services.base_music_service",
"app.services.soundcloud_service",
"app.providers.generic",
"app.api.v1.stream",
]
disable_error_code = ["arg-type", "return-value", "union-attr", "operator", "index"]
[tool.pyright]
include = ["backend/app"]
exclude = [
"**/__pycache__",
"**/node_modules",
"backend/.venv",
"backend/tests",
]
pythonVersion = "3.14"
typeCheckingMode = "basic"
venvPath = "."
venv = ".venv"
reportMissingImports = false
reportMissingTypeStubs = false
reportUnusedImport = true
reportUnusedVariable = true
# Dodatkowe wyłączenia dla zgodności z poprzednią konfiguracją
reportOptionalSubscript = "none"
reportOptionalMemberAccess = "none"
reportArgumentType = "none"
reportGeneralTypeIssues = "none"
reportPrivateImportUsage = "none"
reportCallIssue = "none"
reportTypedDictNotRequiredAccess = "none"
reportReturnType = "none"
reportOptionalOperand = "none"
reportOperatorIssue = "none"
extraPaths = ["backend/app"]