[project] name = "nvda-voicemeeter" version = "1.1.0" description = "A Voicemeeter app compatible with NVDA" authors = [{ name = "Onyx and Iris", email = "code@onyxandiris.online" }] dependencies = [ "pyparsing>=3.2.1", "voicemeeter-api>=2.7.2", "freesimplegui>=5.1.1", ] requires-python = ">=3.10,<3.13" readme = "README.md" license = { text = "MIT" } [dependency-groups] format = ["ruff>=0.9.2"] build = ["pyinstaller>=6.3.0"] [project.scripts] nvda-voicemeeter-basic = "nvda_voicemeeter.gui.basic:run" nvda-voicemeeter-banana = "nvda_voicemeeter.gui.banana:run" nvda-voicemeeter-potato = "nvda_voicemeeter.gui.potato:run" [build-system] requires = ["pdm-backend"] build-backend = "pdm.backend" [tool.pdm] distribution = true [tool.pdm.dev-dependencies] dev = [ "-e file:///${PROJECT_ROOT}/../voicemeeter-api-python#egg=voicemeeter-api", ] [tool.ruff] exclude = [ ".bzr", ".direnv", ".eggs", ".git", ".git-rewrite", ".hg", ".mypy_cache", ".nox", ".pants.d", ".pytype", ".ruff_cache", ".svn", ".tox", ".venv", "__pypackages__", "_build", "buck-out", "build", "dist", "node_modules", "venv", ] line-length = 119 indent-width = 4 # Assume Python 3.10 target-version = "py310" [tool.ruff.lint] # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. # Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or # McCabe complexity (`C901`) by default. select = ["E4", "E7", "E9", "F"] ignore = [] # Allow fix for all enabled rules (when `--fix`) is provided. fixable = ["ALL"] unfixable = [] # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.ruff.format] # Unlike Black, use single quotes for strings. quote-style = "single" # Like Black, indent with spaces, rather than tabs. indent-style = "space" # Like Black, respect magic trailing commas. skip-magic-trailing-comma = false # Like Black, automatically detect the appropriate line ending. line-ending = "auto" # Enable auto-formatting of code examples in docstrings. Markdown, # reStructuredText code/literal blocks and doctests are all supported. # # This is currently disabled by default, but it is planned for this # to be opt-out in the future. docstring-code-format = false # Set the line length limit used when formatting code snippets in # docstrings. # # This only has an effect when the `docstring-code-format` setting is # enabled. docstring-code-line-length = "dynamic" [tool.ruff.lint.mccabe] max-complexity = 10 [tool.ruff.lint.per-file-ignores] "__init__.py" = ["E402", "F401"]