# https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html [project] name = "codespell" description = "Fix common misspellings in text files" readme = { file = "README.rst", content-type = "text/x-rst" } requires-python = ">=3.8" license = {text = "GPL-2.0-only"} authors = [ {name = "Lucas De Marchi", email = "lucas.de.marchi@gmail.com"}, ] classifiers = [ "Intended Audience :: Developers", "License :: OSI Approved", "Programming Language :: Python", "Topic :: Software Development", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Operating System :: MacOS", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] dependencies = [] dynamic = ["version"] [project.optional-dependencies] dev = [ "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "Pygments", "ruff", "tomli", "twine" ] hard-encoding-detection = [ "chardet" ] toml = [ "tomli; python_version < '3.11'" ] types = [ "chardet>=5.1.0", "mypy", "pytest", "pytest-cov", "pytest-dependency", ] [project.scripts] codespell = "codespell_lib:_script_main" [project.urls] homepage = "https://github.com/codespell-project/codespell" repository = "https://github.com/codespell-project/codespell" [build-system] build-backend = "setuptools.build_meta" requires = ["setuptools>=64", "setuptools_scm[toml]>=6.2, != 8.0.0"] [tool.setuptools_scm] write_to = "codespell_lib/_version.py" [tool.setuptools.packages.find] exclude = [ "dist", "snap", ] [tool.setuptools.package-data] codespell_lib = [ "data/dictionary*.txt", "data/linux-kernel.exclude", "py.typed", ] # TODO: reintegrate codespell configuration after updating test cases #[tool.codespell] #builtin = ["clear","rare","informal","usage","code","names"] #ignore-words-list = ["uint"] #skip=[ "./.*","codespell_lib/data/*","codespell_lib/tests/*"] [tool.mypy] pretty = true hide_error_codes = false strict = true warn_unused_ignores = false enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"] [tool.pytest.ini_options] minversion = "6" testpaths = ["codespell_lib/tests"] log_cli_level = "INFO" xfail_strict = true addopts = ["--cov=codespell_lib", "-rs", "--strict-config", "--strict-markers", "--cov-report=", "--tb=short", "--junit-xml=junit-results.xml"] filterwarnings = ["error"] [tool.ruff] line-length = 88 [tool.ruff.lint] select = [ "A", "ANN", "B", "C40", "C9", "E", "F", "I", "N", "PLC", "PLE", "PLR", "PT", "PLW", "RET", "RUF", "S", "SIM", "TRY", "U", "UP", "W", "YTT", ] ignore = [ "B904", "PLR0914", "PLR6201", "PLW2901", "RET505", "S404", "SIM105", "SIM115", "UP038", # https://github.com/astral-sh/ruff/issues/7871 # https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules "W191", "E111", "E114", "E117", "D206", "D300", "Q000", "Q001", "Q002", "Q003", "COM812", "COM819", ] [tool.ruff.lint.mccabe] max-complexity = 45 [tool.ruff.lint.per-file-ignores] "codespell_lib/_codespell.py" = ["A003"] "codespell_lib/tests/test_*" = ["S101"] "codespell_lib/tests/test_basic.py" = ["ANN401", "N802"] [tool.ruff.lint.pylint] allow-magic-value-types = ["bytes", "int", "str",] max-args = 13 max-branches = 48 max-returns = 12 max-statements = 119