[project] name = "pandacan" version = "0.0.10" description = "Code powering the comma.ai panda" readme = "README.md" requires-python = ">=3.11,<3.13" # macOS doesn't work with 3.13 due to pycapnp from opendbc license = {text = "MIT"} authors = [{name = "comma.ai"}] classifiers = [ "Natural Language :: English", "Programming Language :: Python :: 3", "Topic :: System :: Hardware", ] dependencies = [ "libusb1", "opendbc @ git+https://github.com/commaai/opendbc.git@master#egg=opendbc", ] [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'", "spidev2; platform_system == 'Linux'", ] [build-system] requires = ["setuptools>=61", "wheel"] build-backend = "setuptools.build_meta" [tool.setuptools] packages = ["panda"] [tool.setuptools.package-dir] panda = "." [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/" ]