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

From: Efraim Flashner <[email-masked]>
Date: Wed, 14 Apr 2021 18:19:16 +0300

On Wed, Apr 14, 2021 at 12:00:47AM +0300, Bonface Munyoki K. wrote:
> 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?

The first package I can think of is offlineimap. 'guix import pypi
offlineimap' tries to name it python-offlineimap, but it's more likely
to be used as an actual executable rather than as a library for another
package, so we rename it back to offlineimap and put the python packages
which would have normally been in propagated-inputs in inputs instead.

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

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