[tool.poetry]
name = "syng"
version = "2.0.0"
description = "A all-in-one webbased karaoke system with youtube support"
authors = ["Christoph Stahl <christoph.stahl@tu-dortmund.de>"]
license = "GPL3"
readme = "README.md"
include = ["syng/static"]

[tool.poetry.scripts]
syng-client = "syng.client:main"
syng-server = "syng.server:main"
syng-gui = "syng.gui:main"
syng = "syng.main:main"

[tool.poetry.dependencies]
python = "^3.9"
python-socketio = "^5.10.0"
aiohttp = "^3.9.1"
yt-dlp = { version = "*"}
minio = { version = "^7.2.0", optional = true }
mutagen = { version = "^1.47.0", optional = true }
pillow = { version = "^10.1.0", optional = true}
customtkinter = { version = "^5.2.1", optional = true}
qrcode = { version = "^7.4.2", optional = true }
pymediainfo = { version = "^6.1.0", optional = true }
pyyaml = { version = "^6.0.1", optional = true }
tkcalendar = { version = "^1.6.1", optional = true }
tktimepicker = { version = "^2.0.2", optional = true }
platformdirs = { version = "^4.0.0", optional = true }
packaging = {version = "^23.2", optional = true}
alt-profanity-check = {version = "^1.4.1", optional = true}

[tool.poetry.group.dev.dependencies]
types-pyyaml = "^6.0.12.12"
types-pillow = "^10.1.0.2"
mypy = "^1.10.0"
pylint = "^3.2.7"


[tool.poetry.extras]
client = ["minio", "mutagen", "pillow", "customtkinter", "qrcode",
  "pymediainfo", "pyyaml", "tkcalendar", "tktimepicker", "platformdirs",
  "packaging"]
server = ["alt-profanity-check"]

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.pyright]
exclude = [ ".venv" ]
venvPath = "."
venv = ".venv"

[tool.pylint."MESSAGES CONTROL"]
disable = '''too-many-lines,
too-many-ancestors
'''

[tool.mypy]
mypy_path = "typings"

[[tool.mypy.overrides]]
module = [
  "yt_dlp",
  "yt_dlp.utils",
  "pymediainfo",
  "minio",
  "qrcode",
  "engineio",
  "tkcalendar",
  "customtkinter",
  "aiohttp",
  "tktimepicker",
  "platformdirs"
]
ignore_missing_imports = true

[tool.ruff]
line-length = 100

[tool.black]
line-length = 100