blob: d55c2bf5d324d06852d34c4baeac784fa0bf9130 [file]
[project]
name = "emscripten"
requires-python = ">=3.10"
[tool.ruff]
preview = true
line-length = 100
indent-width = 2
exclude = [
"./cache/",
"./node_modules/",
"./site/source/_themes/",
"./site/source/conf.py",
"./test/third_party/",
"./third_party/",
"./tools/filelock.py",
".git",
]
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",
"multi-line-summary-second-line",
"non-imperative-mood",
"assert-false", # See https://github.com/PyCQA/flake8-bugbear/issues/66
"function-uses-loop-variable",
"star-arg-unpacking-after-keyword-arg",
"multiple-spaces-before-keyword",
"module-import-not-at-top-of-file",
"multiple-spaces-after-comma",
"multiple-leading-hashes-for-block-comment",
"line-too-long",
"type-comparison",
"ambiguous-variable-name",
"indentation-with-invalid-multiple", # Does not seem to honor `indent-width = 2` above
"indentation-with-invalid-multiple-comment", # Does not seem to honor `indent-width = 2` above
"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",
"redefined-argument-from-local",
"collapsible-else-if",
"no-self-use",
"global-variable-not-assigned",
"global-statement",
"too-many-statements-in-try-clause",
"subprocess-run-without-check",
"redefined-loop-name",
"mutable-class-default",
"unnecessary-iterable-allocation-for-first-element",
"missing-f-string-syntax",
"unraw-re-pattern",
"non-empty-init-module",
"format-literals", # TODO
"printf-string-formatting", # TODO
"f-string", # TODO
]
lint.per-file-ignores."tools/ports/*.py" = [ "unused-function-argument", "unused-lambda-argument" ]
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" ]
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"]