[project] name = "syng" version = "2.4.4.dev1" description = "Easily host karaoke events" license = "AGPL-3.0-or-later" readme = "README.md" requires-python = ">=3.12" authors = [ { name = "Christoph Stahl", email = "christoph.stahl@tu-dortmund.de" } ] keywords = ["karaoke", "youtube", "web", "audio", "video", "player", "qt"] classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Environment :: X11 Applications :: Qt", "Framework :: AsyncIO", "Intended Audience :: End Users/Desktop", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.12", "Topic :: Multimedia :: Sound/Audio :: Players", "Topic :: Multimedia :: Video :: Display", "Typing :: Typed" ] dependencies = [ "python-socketio>=5.14.3", "aiohttp>=3.9.1", "platformdirs>=4.0.0", "packaging>=25.0", "pyyaml>=6.0.1", ] [project.optional-dependencies] client = [ "minio>=7.2.0", "pillow>=11.0.0", "qrcode>=8.2", "pymediainfo>=6.1.0", "mpv>=1.0.7", "pyside6>=6.7.0", "yt-dlp[default]>=2026.08.19", ] server = [ "glin-profanity>=3.4.0", ] [project.urls] homepage = "https://syng.rocks" repository = "https://git.k-fortytwo.de/christofsteel/syng" "Bug Tracker" = "https://github.com/christofsteel/syng/issues" [project.scripts] syng = "syng.main:main" [tool.uv.build-backend] module-root = "" source-include = ["syng/static/**"] [dependency-groups] dev = [ "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", "ruff>=0.14.3", ] [build-system] requires = ["uv_build>=0.9.10,<0.12.0"] build-backend = "uv_build" [tool.pylint."MESSAGES CONTROL"] disable = '''too-many-lines, too-many-ancestors ''' [tool.mypy] mypy_path = "typings" exclude = "syng/resources.py" [[tool.mypy.overrides]] module = [ "yt_dlp", "yt_dlp.utils.*", "engineio", "glin_profanity.*" ] follow_untyped_imports = true [tool.ruff] line-length = 100 exclude = ["syng/resources.py"] [tool.ruff.lint] preview = true select = ["E", "D", "DOC", "F", "UP", "B", "SIM", "TID", "I", "ANN"] ignore = ["ANN401", "D203", "D213"] [tool.ruff.lint.flake8-tidy-imports] ban-relative-imports = "all" [tool.ruff.lint.pydocstyle] convention = "google" [tool.black] line-length = 100