-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
73 lines (63 loc) · 2.86 KB
/
Copy pathpyproject.toml
File metadata and controls
73 lines (63 loc) · 2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[build-system]
requires = ["setuptools>=61"]
build-backend = "setuptools.build_meta"
[project]
name = "codegen-compare-tool"
authors = [{ name = "Long Vo Thien" }]
description = "Diff two AUTOSAR MATLAB/Simulink codegen folders, filtering out generator noise"
readme = "README.md"
license = { text = "MIT" }
requires-python = ">=3.8"
keywords = ["autosar", "simulink", "matlab", "embedded-coder", "codegen", "diff", "arxml", "a2l", "code-review"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Environment :: X11 Applications :: Qt",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Software Development :: Quality Assurance",
"Topic :: Software Development :: Embedded Systems",
]
dynamic = ["version"]
# core tool is stdlib-only; the side-by-side viewer (--qt) needs PySide6.
# install with: pip install codegen-compare-tool[viewer]
[project.optional-dependencies]
viewer = ["PySide6>=6.5"]
[project.urls]
Homepage = "https://github.com/longvo92/codegen-compare-tool"
Issues = "https://github.com/longvo92/codegen-compare-tool/issues"
[project.scripts]
compare-tool = "compare_tool.main:main"
[tool.setuptools]
packages = ["compare_tool", "compare_tool.qtviewer"]
[tool.setuptools.dynamic]
version = { attr = "compare_tool.__version__" }
# Lint is a correctness gate, not a style gate. The point is the 3.8 promise:
# FA catches `list[str]` or `X | Y` written without `from __future__ import
# annotations`, which passes locally on a modern interpreter and dies on the
# 3.8 CI leg -- at import time, in front of a user. F and B catch the rest of
# what actually breaks. ruff reads requires-python above for its target
# version, so the two can never drift apart.
[tool.ruff]
exclude = ["resources/gen"] # one-off icon generator, not part of the tool
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F", "B", "FA"]
# `l` is this codebase's name for a line of text, used consistently in the
# diff hot paths. Renaming 9 call sites to satisfy a legibility rule that
# nobody here has been confused by is churn, not a fix.
ignore = ["E741"]
# Type-check the stdlib core -- what ships in compare_tool.pyz, where a type
# error would break the fallback build on a locked-down machine. Run in CI with
# `python -m mypy compare_tool`; the same command works locally.
[tool.mypy]
ignore_missing_imports = true
# The Qt viewer is built on PySide6's dynamic enums (`Qt.UserRole` and the
# like) that a static checker cannot resolve, so mypy fights the framework
# rather than the code there. The core is the part that matters and stays
# clean; the viewer is exercised by the headless Qt tests instead.
[[tool.mypy.overrides]]
module = "compare_tool.qtviewer.*"
ignore_errors = true