Files
2026-08-22 23:42:41 -05:00

86 lines
2.1 KiB
TOML

[project]
name = "panda"
version = "0.0.10"
description = "Code powering the comma.ai panda"
requires-python = ">=3.11,<3.13" # macOS doesn't work with 3.13 due to pycapnp from iqdbc
license = {text = "MIT"}
authors = [{name = "comma.ai"}]
classifiers = [
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Topic :: System :: Hardware",
]
dependencies = [
"libusb1",
"iqdbc",
"spidev; platform_system == 'Linux'",
]
[project.optional-dependencies]
dev = [
"scons",
"pycryptodome >= 3.9.8",
"cffi",
"flaky",
"pytest",
"pytest-mock",
"pytest-timeout",
"pytest-randomly",
"ruff",
"mypy",
"setuptools",
"spidev; platform_system == 'Linux'",
]
[build-system]
requires = [
"setuptools>=64",
"scons; platform_system != 'Windows'",
"pycryptodome >= 3.9.8; platform_system != 'Windows'",
]
build-backend = "setuptools.build_meta"
[tool.setuptools]
packages = ["panda", "panda.python", "panda.board", "panda.board.body", "panda.board.jungle", "panda.board.obj"]
include-package-data = true
[tool.setuptools.package-dir]
panda = "."
[tool.setuptools.package-data]
"panda.board" = ["health.h", "can.h", "comms_definitions.h"]
"panda.board.jungle" = ["jungle_health.h"]
"panda.board.obj" = ["*.bin", "*.signed"]
[tool.mypy]
# third-party packages
ignore_missing_imports = true
# helpful warnings
warn_redundant_casts = true
warn_unreachable = true
warn_unused_ignores = true
# restrict dynamic typing
warn_return_any = true
# https://beta.ruff.rs/docs/configuration/#using-pyprojecttoml
[tool.ruff]
line-length = 160
target-version="py311"
[tool.ruff.lint]
select = ["E", "F", "W", "PIE", "C4", "ISC", "RUF100", "A"]
ignore = ["W292", "E741", "E402", "C408", "ISC003"]
flake8-implicit-str-concat.allow-multiline=false
[tool.ruff.lint.flake8-tidy-imports.banned-api]
"pytest.main".msg = "pytest.main requires special handling that is easy to mess up!"
[tool.pytest.ini_options]
addopts = "-Werror --strict-config --strict-markers --durations=10 --ignore-glob='*.sh' --ignore=tests/misra --ignore=tests/som --ignore=tests/hitl"
python_files = "test_*.py"
testpaths = [
"tests/"
]