{ lib, buildPythonPackage, fetchPypi, fetchpatch2, pythonOlder, # build-system setuptools, setuptools-scm, # dependencies fonttools, defcon, fontmath, booleanoperations, # tests python, }: buildPythonPackage rec { pname = "fontparts"; version = "0.12.1"; pyproject = true; disabled = pythonOlder "3.7"; src = fetchPypi { pname = "fontParts"; inherit version; hash = "sha256-eeU13S1IcC+bsiK3YDlT4rVDeXDGcxx1wY/is8t5pCA="; extension = "zip"; }; patches = [ (fetchpatch2 { # replace remaining usage of assertEquals for Python 3.12 support # https://github.com/robotools/fontParts/pull/720 url = "https://github.com/robotools/fontParts/commit/d7484cd98051aa1588683136da0bb99eac31523b.patch"; hash = "sha256-maoUgbmXY/RC4TUZI4triA9OIfB4T98qjUaQ94uhsbg="; }) ]; nativeBuildInputs = [ setuptools setuptools-scm ]; propagatedBuildInputs = [ booleanoperations defcon fontmath fonttools ] ++ defcon.optional-dependencies.pens ++ fonttools.optional-dependencies.ufo ++ fonttools.optional-dependencies.lxml ++ fonttools.optional-dependencies.unicode; checkPhase = '' runHook preCheck ${python.interpreter} Lib/fontParts/fontshell/test.py runHook postCheck ''; meta = with lib; { description = "An API for interacting with the parts of fonts during the font development process."; homepage = "https://github.com/robotools/fontParts"; changelog = "https://github.com/robotools/fontParts/releases/tag/${version}"; license = licenses.mit; maintainers = [ maintainers.sternenseemann ]; }; }