at master 2.0 kB view raw
1{ 2 lib, 3 buildPythonPackage, 4 fetchPypi, 5 ply, 6 roman, 7 uqbar, 8 pythonOlder, 9 pythonAtLeast, 10 pytestCheckHook, 11 lilypond, 12 typing-extensions, 13}: 14 15buildPythonPackage rec { 16 pname = "abjad"; 17 version = "3.28"; 18 format = "setuptools"; 19 20 # see issue upstream indicating Python 3.12 support will come 21 # with version 3.20: https://github.com/Abjad/abjad/issues/1574 22 disabled = pythonOlder "3.10" || pythonAtLeast "3.12"; 23 24 src = fetchPypi { 25 inherit pname version; 26 hash = "sha256-J4LPOSz34GvDRwpCG8yt4LAqt+dhDrfG/W451bZRpgk="; 27 }; 28 29 propagatedBuildInputs = [ 30 ply 31 roman 32 uqbar 33 typing-extensions 34 ]; 35 36 buildInputs = [ lilypond ]; 37 38 nativeCheckInputs = [ pytestCheckHook ]; 39 40 postPatch = '' 41 substituteInPlace abjad/io.py \ 42 --replace-fail 'lilypond_path = self.get_lilypond_path()' \ 43 'lilypond_path = "${lilypond}/bin/lilypond"' 44 # general invocations of binary for IO purposes 45 46 substituteInPlace abjad/configuration.py \ 47 --replace-fail '["lilypond"' '["${lilypond}/bin/lilypond"' 48 # get_lilypond_version_string 49 ''; 50 51 pythonImportsCheck = [ "abjad" ]; 52 53 meta = { 54 description = "GNU LilyPond wrapper for Python"; 55 longDescription = '' 56 Abjad helps composers build up complex pieces of music notation in 57 iterative and incremental ways. Use Abjad to create a symbolic 58 representation of all the notes, rests, chords, tuplets, beams and slurs 59 in any score. Because Abjad extends the Python programming language, you 60 can use Abjad to make systematic changes to music as you work. Because 61 Abjad wraps the LilyPond music notation package, you can use Abjad to 62 control the typographic detail of symbols on the page. 63 ''; 64 license = lib.licenses.mit; 65 homepage = "https://abjad.github.io/"; 66 changelog = "https://abjad.github.io/appendices/changes.html"; 67 maintainers = [ lib.maintainers.davisrichard437 ]; 68 }; 69}