current commit
260922.7 · [ruff] Use `extend-exclude` rather than `exclude`. NFC (#27767)
[project]
name = "emscripten"
requires-python = ">=3.10"

[tool.ruff]
preview = true
line-length = 100
indent-width = 2
extend-exclude = [
  "./cache/",
  "./site/source/_themes/",
  "./site/source/conf.py",
  "./test/third_party/",
  "./third_party/",
  "./tools/filelock.py",
]

lint.select = [
  "ARG",
  "ASYNC",
  "B",
  "D",
  "C4",
  "C90",
  "COM",
  "E",
  "F",
  "I",
  "PERF",
  "PIE",
  "PL",
  "UP",
  "W",
  "RUF",
  "YTT",
]
lint.external = [ "D" ]
lint.ignore = [
  "undocumented-public-module",
  "undocumented-public-class",
  "undocumented-public-method",
  "undocumented-public-function",
  "undocumented-public-package",
  "undocumented-magic-method",
  "undocumented-public-nested-class",
  "undocumented-public-init",
  "incorrect-blank-line-before-class", # Superceeded by no-blank-line-before-class
  "multi-line-summary-second-line", # Superceeded by multi-line-summary-first-line
  "non-imperative-mood",
  "assert-false", # See https://github.com/PyCQA/flake8-bugbear/issues/66
  "function-uses-loop-variable",
  "module-import-not-at-top-of-file",
  "multiple-leading-hashes-for-block-comment",
  "line-too-long",
  "indentation-with-invalid-multiple", # Does not honor `indent-width`. See https://github.com/astral-sh/ruff/issues/8705
  "indentation-with-invalid-multiple-comment", # Does not honor `indent-width`. See https://github.com/astral-sh/ruff/issues/8705
  "too-few-spaces-before-inline-comment",
  "try-except-in-loop",
  "manual-list-comprehension",
  "import-outside-top-level",
  "too-many-public-methods",
  "too-many-boolean-expressions",
  "too-many-locals",
  "too-many-nested-blocks",
  "no-self-use",
  "global-statement",
  "too-many-statements-in-try-clause",
  "subprocess-run-without-check",
  "redefined-loop-name",
  "mutable-class-default",
  "non-empty-init-module",
]
lint.per-file-ignores."tools/ports/*.py" = [ "unused-function-argument", "unused-lambda-argument" ]
lint.per-file-ignores."tools/webidl_binder.py" = [ "printf-string-formatting", "f-string" ]
lint.per-file-ignores."test/other/ports/*.py" = [ "unused-function-argument" ]
lint.per-file-ignores."test/parallel_testsuite.py" = [ "unused-method-argument" ]
lint.per-file-ignores."test/test_benchmark.py" = [ "unused-method-argument" ]
lint.per-file-ignores."test/*.py" = [ "collection-literal-concatenation", "printf-string-formatting", "multiple-spaces-after-comma" ]
lint.per-file-ignores."system/lib/update_*.py" = [ "multiple-spaces-after-comma" ]
lint.mccabe.max-complexity = 51 # Recommended: 10
lint.pylint.allow-magic-value-types = [
  "bytes",
  "float",
  "int",
  "str",
]
lint.pylint.max-args = 15 # Recommended: 5
lint.pylint.max-branches = 50 # Recommended: 12
lint.pylint.max-returns = 16 # Recommended: 6
lint.pylint.max-statements = 142 # Recommended: 50

[tool.coverage.run]
source = [ "." ]
omit = [
  "./test/*",
  "./third_party/*",
  "./tools/emcoverage.py",
  "test.py",
]

[tool.mypy]
mypy_path = "third_party/,third_party/ply,third_party/websockify"
files = [ "." ]
exclude = '''
(?x)(
out/ |
cache/ |
third_party/ |
conf\.py |
emrun\.py |
site/source/_themes/ |
tools/scons/site_scons/site_tools/emscripten/__init__\.py |
tools/maint/create_dom_pk_codes.py |
site/source/get_wiki\.py |
test/parse_benchmark_output\.py
)'''

[[tool.mypy.overrides]]
module = [
  "tools.webidl_binder",
  "tools.toolchain_profiler",
  "tools.filelock",
  "tools.find_bigvars",
  "leb128",
  "ply.*",
]
ignore_errors = true

[[tool.mypy.overrides]]
module = ["psutil", "win32con", "win32gui", "win32process"]
ignore_missing_imports = true

[tool.deadcode]
exclude = ["out", "cache", "third_party", "test/third_party", "node_modules", "site/source/_themes", "site/source/conf.py"]

[tool.vulture]
exclude = ["out", "cache", "third_party", "test/third_party", "node_modules", "site/source/_themes", "site/source/conf.py"]