[project] name = "termidi" version = "0.1.0" description = "Terminal midi player with piano roll." authors = [{ name = "HivertMoZara", email = "worldmozara@163.com" }] dependencies = ["rich>=14.3.2", "textual>=7.5.0", "mido>=1.3.3"] requires-python = ">=3.12,<4" readme = "README.md" license = { text = "MIT" } [project.scripts] termidi = "termidi.main:main" [project.optional-dependencies] rtmidi = [ "python-rtmidi>=1.5.8", ] [build-system] requires = ["pdm-backend"] build-backend = "pdm.backend" [dependency-groups] dev = [ "basedpyright>=1.37.4", "ruff>=0.15.0", "viztracer>=1.1.1", ] [tool.basedpyright] typeCheckingMode = "recommended" reportAny = "hint" reportExplicitAny = "hint" [tool.ruff] line-length = 120 target-version = "py312" [tool.ruff.per-file-target-version] # force Python 3.14+ checking in 'typing/' "typings/**/*.pyi" = "py314" [tool.ruff.format] line-ending = "lf" [tool.ruff.lint] select = [ "F", # Pyflakes "W", # pycodestyle warnings "E", # pycodestyle errors "I", # isort "UP", # pyupgrade "ASYNC", # flake8-async "C4", # flake8-comprehensions "T10", # flake8-debugger "T20", # flake8-print "PYI", # flake8-pyi "PT", # flake8-pytest-style "Q", # flake8-quotes "TID", # flake8-tidy-imports "RUF", # Ruff-specific rules ] ignore = [ "RUF001", # ambiguous-unicode-character-string "RUF002", # ambiguous-unicode-character-docstring "RUF003", # ambiguous-unicode-character-comment "PYI021", # keep docstring in stubs "PYI041", # use `int | float` "TID252", ] [tool.pdm] distribution = true