Subject: [bug#47593] [PATCH 6/6] gnu: python-xyz: Add python-abjad.

From: Bonface Munyoki K. <[email-masked]>
Date: Wed, 14 Apr 2021 00:00:47 +0300

Efraim Flashner <[email-masked]> writes:

> I would put this in music.scm near lilypond.
>

Makes sense.

[...]
>
> If this is a package that would be installed then you can change the
> name to abjad, no need to keep the python prefix.
>

I don't quite get this. Do you mean a package that
would be installed and run as some executable as
opposed to a library?

>> +(define-public python-abjad
>> +  (package
>> +    (name "python-abjad")
>> +    (version "3.3")
>> +    (source
>> +     (origin
>> +       (method url-fetch)
>> +       (uri
>> +        (string-append
>> +         "https://github.com/Abjad/abjad/archive/refs/tags/v"
>> +         version ".tar.gz"))
>
> This should be a pypi URI or be downloaded using git-fetch
>
Noted.

>> +       (sha256
>> +        (base32
>> +         "0dvj40g8kq1jdp09gb2chxxb7959vxv5h4m8ywg4qigsw3f11xnx"))))
>> +    (build-system python-build-system)
>> +    (arguments
>> +     `(#:phases
>> +       (modify-phases %standard-phases
>> +         (add-after 'unpack 'patch-source
>> +           (lambda _
>> +             (substitute* "setup.py"
>> +               (("uqbar>=0.4.4, <0.5.0") "uqbar>=0.4.4, <=0.5.1")
>
> I would just take off the <0.5.0 and not try to make it just high enough
> to include the version packaged.
>
Makes sense!
>> +               (("pytest>=5.4.3") "pytest>=5.3"))
>
> We also have pytest-6. Of course this is also fine.
>
Sure!
>> +             #t))
>> +         (replace 'check
>> +           (lambda _
>
> (lambda* (#:key tests? #:allow-other-keys)
>   (when tests?
>
Noted.
>> +             ;; See: https://stackoverflow.com/a/34140498
>> +             (invoke "python" "-m" "pytest" "tests")
>> +             #t)))))
>
> I'm sure that not all of these need to be propagated. The source should
> be patched to refer to lilypond and I'm guessing most of the rest can
> either be inputs (they'll get wrapped with the python wrapper) or
> native-inputs if they're only needed for tests.
>

Makes a lot of sense!

>> +    (propagated-inputs
>> +     `(("lilypond" ,lilypond) ;; Required for tests to pass!
>> +       ("python-black" ,python-black)
>> +       ("python-flake8" ,python-flake8)
>> +       ("python-isort" ,python-isort)
>> +       ("python-mypy" ,python-mypy)
>> +       ("python-ply" ,python-ply)
>> +       ("python-pytest" ,python-pytest)
>> +       ("python-pytest-cov" ,python-pytest-cov)
>> +       ("python-quicktions" ,python-quicktions)
>> +       ("python-roman" ,python-roman)
>> +       ("python-six" ,python-six)
>> +       ("python-sphinx-autodoc-typehints"
>> +        ,python-sphinx-autodoc-typehints)
>> +       ("python-uqbar" ,python-uqbar)))
>> +    (home-page "https://abjad.github.io")
>> +    (synopsis
>> +     "Abjad is a Python API for building LilyPond files.")
>
> I'd shorten this to "Python API for building LilyPind files"
>

Thanks for the suggestions!

>> +    (description
>> +     "Abjad is a Python API for building LilyPond files.")
>> +    (license license:expat)))
>> -- 
>> 2.31.0
>> 
>> 
>> 
>> 

-- 
Bonface M. K. D4F09EB110177E03C28E2FE1F5BBAE1E0392253F
Humble GNU Emacs User / Bearer of scheme-y parens
Curator: <https://upbookclub.com> / Twitter: @BonfaceKilz