[build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" [project] name = "novelWriter" authors = [ {name = "Veronica Berglyd Olsen", email = "code@vkbo.net"}, ] description = "A markdown-like text editor for planning and writing novels" readme = {file = "setup/description_pypi.md", content-type = "text/markdown"} license = {text = "GNU General Public License v3"} classifiers = [ "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Development Status :: 5 - Production/Stable", "Operating System :: OS Independent", "Intended Audience :: End Users/Desktop", "Natural Language :: English", "Topic :: Text Editors", ] requires-python = ">=3.10" dependencies = [ "pyqt6>=6.4", "pyenchant>=3.0.0", ] dynamic = ["version"] [project.urls] Homepage = "https://novelwriter.io" Documentation = "https://docs.novelwriter.io" Repository = "https://github.com/vkbo/novelWriter" Issues = "https://github.com/vkbo/novelWriter/issues" [project.gui-scripts] novelwriter = "novelwriter:main" [tool.setuptools.dynamic] version = {attr = "novelwriter.__version__"} [tool.setuptools.packages.find] include = ["novelwriter*"] [tool.isort] py_version="310" line_length = 99 wrap_length = 79 multi_line_output = 5 force_grid_wrap = 0 lines_between_types = 1 forced_separate = ["tests.*"] [tool.ruff] line-length = 99 [tool.ruff.lint] preview = true select = [ "A", # flake8-builtins (A) "B", # flake8-bugbear (B) "E", # pycodestyle (E) "F", # Pyflakes (F) "W", # pycodestyle (W) "UP", # pyupgrade (UP) "ANN", # flake8-annotations (ANN) "PLE", # Pylint Error (PLE) "FA", # flake8-future-annotations (FA) ] ignore = [ "E221", # multiple-spaces-before-operator "E226", # missing-whitespace-around-arithmetic-operator "E228", # missing-whitespace-around-modulo-operator "E241", # multiple-spaces-after-comma "E272", # multiple-spaces-before-keyword "ANN401", # any-type "UP015", # redundant-open-modes "UP030", # format-literals ] [tool.ruff.lint.per-file-ignores] "tests/*" = ["ANN"] [tool.ruff.format] quote-style = "double" [tool.pyright] include = ["novelwriter"] exclude = ["**/__pycache__"] reportIncompatibleMethodOverride = false pythonVersion = "3.10" [tool.pytest.ini_options] log_level = "DEBUG" qt_api = "pyqt6" markers = [ "base: Base classes tests", "core: Core classes tests", "gui: GUI classes tests", "serial", ] [tool.coverage.run] branch = false [tool.coverage.report] precision = 2