[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "duckypad-twitch" dynamic = ["version"] description = '' readme = "README.md" requires-python = ">=3.7" license = "MIT" keywords = [] authors = [ { name = "onyx-and-iris", email = "code@onyxandiris.online" }, ] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] dependencies = [ "tomli >= 2.0.1;python_version < '3.11'", "websocket-client", "keyboard", "voicemeeter-api>=2.6.1", "xair-api>=2.4.1", "slobs_websocket@git+https://git@github.com/onyx-and-iris/slobs_websocket@v0.1.4#egg=slobs_websocket", "obsws-python>=1.7.0", "vban-cmd>=2.5.1", ] [project.urls] Documentation = "https://github.com/unknown/duckypad-twitch#readme" Issues = "https://github.com/unknown/duckypad-twitch/issues" Source = "https://github.com/unknown/duckypad-twitch" [tool.hatch.metadata] allow-direct-references = true [tool.hatch.version] path = "duckypad_twitch/__about__.py" [tool.hatch.envs.default] dependencies = ["coverage[toml]>=6.5", "pytest"] [tool.hatch.envs.default.scripts] test = "pytest {args:tests}" test-cov = "coverage run -m pytest {args:tests}" cov-report = ["- coverage combine", "coverage report"] cov = ["test-cov", "cov-report"] [[tool.hatch.envs.all.matrix]] python = ["3.7", "3.8", "3.9", "3.10", "3.11"] [tool.hatch.envs.lint] detached = true dependencies = ["black>=23.1.0", "mypy>=1.0.0", "ruff>=0.0.243"] [tool.hatch.envs.lint.scripts] typing = "mypy --install-types --non-interactive {args:duckypad_twitch tests}" style = ["ruff {args:.}", "black --check --diff {args:.}"] fmt = ["black {args:.}", "ruff --fix {args:.}", "style"] all = ["style", "typing"] [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", ] # Same as Black. line-length = 120 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", ] # Tests can use magic values, assertions, and relative imports "tests/**/*" = ["PLR2004", "S101", "TID252"] [tool.ruff.isort] known-first-party = ["duckypad_twitch"] [tool.ruff.flake8-tidy-imports] ban-relative-imports = "all" [tool.coverage.run] source_pkgs = ["duckypad_twitch", "tests"] branch = true parallel = true omit = ["duckypad_twitch/__about__.py"] [tool.coverage.paths] duckypad_twitch = ["duckypad_twitch", "*/duckypad-twitch/duckypad_twitch"] tests = ["tests", "*/duckypad-twitch/tests"] [tool.coverage.report] exclude_lines = ["no cov", "if __name__ == .__main__.:", "if TYPE_CHECKING:"]