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

From: Efraim Flashner <[email-masked]>
Date: Tue, 13 Apr 2021 16:14:48 +0300

I would put this in music.scm near lilypond.

On Sun, Apr 04, 2021 at 03:20:05PM +0300, BonfaceKilz wrote:
> * gnu/packages/python-xyz.scm (python-abjad): New variable.
> 
> Co-authored-by: jgart <[email-masked]>
> ---
>  gnu/packages/python-xyz.scm | 52 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
> 
> diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
> index e87ba6b6b6..baa8534d7a 100644
> --- a/gnu/packages/python-xyz.scm
> +++ b/gnu/packages/python-xyz.scm
> @@ -162,6 +162,7 @@
>    #:use-module (gnu packages maths)
>    #:use-module (gnu packages monitoring)
>    #:use-module (gnu packages multiprecision)
> +  #:use-module (gnu packages music)
>    #:use-module (gnu packages networking)
>    #:use-module (gnu packages ncurses)
>    #:use-module (gnu packages openstack)
> @@ -24356,3 +24357,54 @@ iGoogle subscription lists.")
>      (description
>       "Fast fractions data type for rational numbers. Cythonized version of 'fractions.Fraction'.")
>      (license license:psfl)))
> +

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

> +(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

> +       (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.

> +               (("pytest>=5.4.3") "pytest>=5.3"))

We also have pytest-6. Of course this is also fine.

> +             #t))
> +         (replace 'check
> +           (lambda _

(lambda* (#:key tests? #:allow-other-keys)
  (when tests?

> +             ;; 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.

> +    (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"

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

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted