[tool.poetry]
name = "syng"
version = "2.1.0"
description = "Easily host karaoke events"
authors = ["Christoph Stahl <christoph.stahl@tu-dortmund.de>"]
license = "AGPL-3.0-or-later"
readme = "README.md"
include = ["syng/static"]
classifiers = [
  "Development Status :: 5 - Production/Stable",
  "Environment :: Web Environment",
  "Environment :: X11 Applications :: Qt",
  "Framework :: AsyncIO",
  "Intended Audience :: End Users/Desktop",
  "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
  "Operating System :: POSIX :: Linux",
  "Programming Language :: Python :: 3.9",
  "Topic :: Multimedia :: Sound/Audio :: Players",
  "Topic :: Multimedia :: Video :: Display",
  "Typing :: Typed"
]
homepage = "https://syng.rocks"
repository = "https://github.com/christofsteel/syng"
keywords = ["karaoke", "youtube", "web", "audio", "video", "player", "qt"]



[tool.poetry.scripts]
syng = "syng.main:main"

[tool.poetry.dependencies]
python = "^3.9"
python-socketio = "^5.10.0"
aiohttp = "^3.9.1"
yarl = "<1.14.0"
platformdirs = "^4.0.0"
yt-dlp = { version = ">=2024.11.18", extras = ["default"] }
minio = { version = "^7.2.0", optional = true }
pillow = { version = "^10.1.0", optional = true}
qrcode = { version = "^7.4.2", optional = true }
pymediainfo = { version = "^6.1.0", optional = true }
pyyaml = { version = "^6.0.1", optional = true }
alt-profanity-check = {version = "^1.4.1", optional = true}
pyqt6 = {version="^6.7.1", optional = true}
mpv = {version = "^1.0.7", optional = true}
qasync = {version = "^0.27.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"
requirements-parser = "^0.11.0"


[tool.poetry.extras]
client = ["minio", "pillow", "qrcode", "pymediainfo", "pyyaml", "pyqt6", "mpv", "qasync"]

[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