[ project ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								name  =  "openpilot" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								requires-python  =  ">= 3.11, < 3.13" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								license  =  { text  =  "MIT License" } 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								version  =  "0.1.0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								description  =  "an open source driver assistance system" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								authors  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { name  = "Vehicle Researcher" ,  email = "user@comma.ai" } 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								dependencies  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # multiple users 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "sounddevice" ,   # micd + soundd 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pyserial" ,      # pigeond + qcomgpsd 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "requests" ,      # many one-off uses 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "sympy" ,         # rednose + friends 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "crcmod" ,        # cars + qcomgpsd 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "tqdm" ,          # cars (fw_versions.py) on start + many one-off uses 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # hardwared 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "smbus2" ,  # configuring amp 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # core 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "cffi" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "scons" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pycapnp==2.1.0" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "Cython" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "setuptools" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "numpy >=2.0" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # body / webrtcd 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "aiohttp" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "aiortc" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # aiortc does not put an upper bound on pyopenssl and is now incompatible 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # with the latest release 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pyopenssl < 24.3.0" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pyaudio" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # ubloxd (TODO: just use struct) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "kaitaistruct" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # panda 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "libusb1" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "spidev; platform_system == 'Linux'" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # modeld 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "onnx >= 1.14.0" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # logging 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pyzmq" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "sentry-sdk" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "xattr" ,  # used in place of 'os.getxattr' for macos compatibility 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # athena 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "PyJWT" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "json-rpc" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "websocket_client" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # acados deps 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "casadi >=3.6.6" ,   # 3.12 fixed in 3.6.6 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "future-fstrings" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # joystickd 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "inputs" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # these should be removed 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "psutil" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pycryptodome" ,  # used in updated/casync, panda, body, and a test 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "setproctitle" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # logreader 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "zstandard" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  # ui 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "raylib < 5.5.0.3" ,  # TODO: unpin when they fix https://github.com/electronstudio/raylib-python-cffi/issues/186 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "qrcode" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "mapbox-earcut" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ project . optional-dependencies ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								docs  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "Jinja2" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "natsort" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "mkdocs" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								testing  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "hypothesis ==6.47.*" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "mypy" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pytest" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pytest-cpp" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pytest-subtests" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  # https://github.com/pytest-dev/pytest-xdist/pull/1229 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pytest-xdist @ git+https://github.com/sshane/pytest-xdist@2b4372bd62699fb412c4fe2f95bf9f01bd2018da" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pytest-timeout" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pytest-randomly" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pytest-asyncio" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pytest-mock" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pytest-repeat" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "ruff" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "codespell" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pre-commit-hooks" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								dev  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "av" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "azure-identity" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "azure-storage-blob" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "dbus-next" ,  # TODO: remove once we moved everything to jeepney 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "dictdiffer" , 
 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												raylib: clean up networking (#36039)
* stasj
* remove one of many classes
* clean up and fix
* clean up
* stash/draft: oh this is sick
* so epic
* some clean up
* what the fuck, it doesn't even use these
* more epic initializers + make it kind of work
* so simple, wonder if we should further 2x reduce line count
* i've never ever seen this pattern b4, rm
* remove bs add niceness
* minor organization
* set security type and support listing and rming conns
* forget and connect
* jeepney is actually pretty good, it's 2x faster to get wifi device (0.005s to 0.002s)
* temp
* do blocking add in worker thread
* add jeepney
* lets finish with python-dbus first then evaluate - revert jeepney
This reverts commit 7de04b11c2285c298bb1ec907782026c795ab207.
and
* safe wrap
* missing
* saved connections
* set rest of callbacks
* skip hidden APs, simplify _running
* add state management
* either wrong password or disconnected for now
* i can't believe we didn't check this...
* disable button if unsupported!!!
* hide/show event no lag hopefully yayay
* fix hide event
* remove old wifi manager
* cache wifi device path + some clean up
* more clean up
* more clean up
* temp disable blocking prime thread
* hackily get device path once
* ok
* debug
* fix open networks
* debug
* clean up
* all threads wait for device path, and user functions dont ever attempt to get, just skip
* same place
* helper
* Revert "helper"
This reverts commit e237d9a720915fb6bd67c539123d3e2d9d582ce1.
* organize?
* Revert "organize?"
This reverts commit 3aca3e5d629c947711ade88799febeb3f61eda87.
* c word is a bad word
* rk monitor debug for now
* nothing crazy
* improve checkmark responsiveness
* when forgetting: this is correct, but feels unresponsive
* this feels good
* need these two to keep forgetting and activating responsive
* sort by connected, strength, then name
* handle non-critical race condition
* log more
* unused
* oh jubilee is sick you can block on signals!!
* proof of concept to see if works on device
whoiops
* so sucking fick
* ah this is not generic, it's a filter on the return vals
* flip around to not drop
* oh thank god
* fix
* stash
* atomic replace
* clean up
* add old to keep track of what's moved over
* these are already moved
* so much junk
* so much junk
* more
* tethering wasn't used so we can ignore that for now
* no params now
* rm duplicate imports
* not used anymore
* move get wifi device over to jeepney! ~no additional lines
* request scan w/ keepney
* get_conns
* _connection_by_ssid_jeepney is 2x faster (0.01 vs 0.02s)
* do forget and activate
* _update_networks matches!
* rm old update_networks
* replace connect_to_network, about same time (yes i removed thread call)
* no more python-dbus!k
* doesn't hurt
* AP.from_dbus: actually handle incorrect paths w/ jeep + more efficient single call
* properly handle errors
* it's jeepney now
* less state
* using the thread safe router passes a race condition test that conn failed!
* bad to copy from old wifimanager
* fix conn usage
* clean up
* curious if locks are lagging
* not for now
* Revert "curious if locks are lagging"
This reverts commit 085dd185b083f5905a4e71ba3e8c0565175e04aa.
* clean up _monitor_state
* remove tests
* clean up dataclasses
* sort
* lint: okay fine it can be non by virtue of exiting right at the perfect time
* some network clean up
* some wifi manager clean up
* this is handled
* stop can be called manually, from deleting wifimanager, or exiting python. some protection
* its not mutable anymore
* scan on enter
* clean up
* back
* lint
* catch dbus fail to connect
catch dbus fail to connect
											 
										 
										
											2 months ago 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "jeepney" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "matplotlib" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "opencv-python-headless" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "parameterized >=0.8, <0.9" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pyautogui" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pygame" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pyopencl; platform_machine != 'aarch64'" ,  # broken on arm64 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pytools < 2024.1.11; platform_machine != 'aarch64'" ,  # pyopencl use a broken version 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "pywinctl" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "pyprof2calltree" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "tabulate" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "types-requests" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "types-tabulate" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tools  =  [ 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "metadrive-simulator @ https://github.com/commaai/metadrive/releases/download/MetaDrive-minimal-0.4.2.4/metadrive_simulator-0.4.2.4-py3-none-any.whl ; (platform_machine != 'aarch64')" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "dearpygui>=2.1.0" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ project . urls ] 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Homepage  =  "https://github.com/commaai/openpilot" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ build-system ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								requires  =  [ "hatchling" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								build-backend  =  "hatchling.build" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ tool . hatch . build . targets . wheel ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								packages  =  [  "."  ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ tool . hatch . metadata ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								allow-direct-references  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ tool . pytest . ini_options ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								minversion  =  "6.0" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								addopts  =  "--ignore=openpilot/ --ignore=opendbc/ --ignore=panda/ --ignore=rednose_repo/ --ignore=tinygrad_repo/ --ignore=teleoprtc_repo/ --ignore=msgq/  -Werror --strict-config --strict-markers --durations=10 -n auto --dist=loadgroup" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								cpp_files  =  "test_*" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								cpp_harness  =  "selfdrive/test/cpp_harness.py" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								python_files  =  "test_*.py" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								asyncio_default_fixture_loop_scope  =  "function" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#timeout = "30"  # you get this long by default 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								markers  =  [ 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "slow: tests that take awhile to run and can be skipped with -m 'not slow'" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "tici: tests that are only meant to run on the C3/C3X" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "skip_tici_setup: mark test to skip tici setup fixture" 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								testpaths  =  [ 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "common" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "selfdrive" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "system/manager" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "system/updated" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "system/athena" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "system/camerad" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "system/hardware" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "system/loggerd" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "system/tests" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "system/ubloxd" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "system/webrtc" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "tools/lib/tests" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "tools/replay" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "tools/cabana" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "cereal/messaging/tests" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ tool . codespell ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								quiet-level  =  3 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# if you've got a short variable name that's getting flagged, add it here 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								ignore-words-list  =  "bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints,whit,indexIn,ws,uint,grey,deque,stdio,amin,BA,LITE,atEnd,UIs,errorString,arange,FocusIn,od,tim,relA,hist,copyable,jupyter,thead,TGE,abl,lite" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								builtin  =  "clear,rare,informal,code,names,en-GB_to_en-US" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								skip  =  "./third_party/*, ./tinygrad/*, ./tinygrad_repo/*, ./msgq/*, ./panda/*, ./opendbc/*, ./opendbc_repo/*, ./rednose/*, ./rednose_repo/*, ./teleoprtc/*, ./teleoprtc_repo/*, *.ts, uv.lock, *.onnx, ./cereal/gen/*, */c_generated_code/*, docs/assets/*, tools/plotjuggler/layouts/*" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ tool . mypy ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								python_version  =  "3.11" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								exclude  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "cereal/" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "msgq/" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "msgq_repo/" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "opendbc/" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "opendbc_repo/" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "panda/" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "rednose/" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "rednose_repo/" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "tinygrad/" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "tinygrad_repo/" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "teleoprtc/" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "teleoprtc_repo/" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "third_party/" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# 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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# allow implicit optionals for default args 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								implicit_optional  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								local_partial_types = true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								explicit_package_bases = true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								disable_error_code  =  "annotation-unchecked" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# https://beta.ruff.rs/docs/configuration/#using-pyprojecttoml 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								[ tool . ruff ] 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								indent-width  =  2 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								lint . select  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "E" ,  "F" ,  "W" ,  "PIE" ,  "C4" ,  "ISC" ,  "A" ,  "B" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "NPY" ,  # numpy 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "UP" ,   # pyupgrade 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "TRY203" ,  "TRY400" ,  "TRY401" ,  # try/excepts 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "RUF008" ,  "RUF100" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "TID251" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "PLR1704" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								lint . ignore  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "E741" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "E402" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "C408" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "ISC003" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "B027" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "B024" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "NPY002" ,   # new numpy random syntax is worse 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "UP038" ,    # (x, y) -> x|y for isinstance 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								line-length  =  160 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								target-version  = "py311" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								exclude  =  [ 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "body" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "cereal" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "panda" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "opendbc" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "opendbc_repo" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "rednose_repo" , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  "tinygrad_repo" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "teleoprtc" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "teleoprtc_repo" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "third_party" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "*.ipynb" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  "generated" , 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								] 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								lint . flake8-implicit-str-concat . allow-multiline  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ tool . ruff . lint . flake8-tidy-imports . banned-api ] 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								"selfdrive" . msg  =  "Use openpilot.selfdrive" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								"common" . msg  =  "Use openpilot.common" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								"system" . msg  =  "Use openpilot.system" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								"third_party" . msg  =  "Use openpilot.third_party" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								"tools" . msg  =  "Use openpilot.tools" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								"pytest.main" . msg  =  "pytest.main requires special handling that is easy to mess up!" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								"unittest" . msg  =  "Use pytest" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								"time.time" . msg  =  "Use time.monotonic" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# raylib banned APIs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								"pyray.measure_text_ex" . msg  =  "Use openpilot.system.ui.lib.text_measure" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								"pyray.is_mouse_button_pressed" . msg  =  "This can miss events. Use Widget._handle_mouse_press" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								"pyray.is_mouse_button_released" . msg  =  "This can miss events. Use Widget._handle_mouse_release" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								"pyray.draw_text" . msg  =  "Use a function (such as rl.draw_font_ex) that takes font as an argument" 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ tool . ruff . format ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								quote-style  =  "preserve"