{ lib, buildPythonPackage, fetchPypi, fetchpatch, capstone_4, cmsis-pack-manager, colorama, importlib-metadata, importlib-resources, intelhex, intervaltree, lark, natsort, prettytable, pyelftools, pylink-square, pyusb, pyyaml, setuptools, setuptools-scm, typing-extensions, stdenv, hidapi, pytestCheckHook, }: buildPythonPackage rec { pname = "pyocd"; version = "0.36.0"; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-k3eCrMna/wVNUPt8b3iM2UqE+A8LhfJarKuZ3Jgihkg="; }; patches = [ # https://github.com/pyocd/pyOCD/pull/1332 (fetchpatch { name = "libusb-package-optional.patch"; url = "https://github.com/pyocd/pyOCD/commit/0b980cf253e3714dd2eaf0bddeb7172d14089649.patch"; hash = "sha256-B2+50VntcQELeakJbCeJdgI1iBU+h2NkXqba+LRYa/0="; }) ]; postPatch = '' substituteInPlace setup.cfg \ --replace "libusb-package>=1.0,<2.0" "" ''; nativeBuildInputs = [ setuptools setuptools-scm ]; propagatedBuildInputs = [ capstone_4 cmsis-pack-manager colorama importlib-metadata importlib-resources intelhex intervaltree lark natsort prettytable pyelftools pylink-square pyusb pyyaml typing-extensions ] ++ lib.optionals (!stdenv.isLinux) [ hidapi ]; pythonImportsCheck = [ "pyocd" ]; nativeCheckInputs = [ pytestCheckHook ]; meta = with lib; { changelog = "https://github.com/pyocd/pyOCD/releases/tag/v${version}"; description = "Python library for programming and debugging Arm Cortex-M microcontrollers"; downloadPage = "https://github.com/pyocd/pyOCD"; homepage = "https://pyocd.io"; license = licenses.asl20; maintainers = with maintainers; [ frogamic sbruder ]; }; }