Subject: Re: [bug#66930] [PATCH] gnu: Add python-pyamg.

From: Vinicius Monego <[email-masked]>
Date: Sat, 4 Nov 2023 15:41:30 +0000

Hello,

Em 04/11/2023 12:05, Felix Gruber escreveu:
> * gnu/packages/python-science.scm (python-pyamg): New variable.
>
> Change-Id: Ibf39fecd14d4e6fd72078b217737e5e5cbbf2321
> ---
>   gnu/packages/python-science.scm | 36 +++++++++++++++++++++++++++++++++
>   1 file changed, 36 insertions(+)
>
> diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
> index 4063797a30..1c2edda118 100644
> --- a/gnu/packages/python-science.scm
> +++ b/gnu/packages/python-science.scm
> @@ -387,6 +387,42 @@ (define-public python-trimesh
>   library.")
>       (license license:expat)))
>   
> +(define-public python-pyamg
> +  (package
> +    (name "python-pyamg")
> +    (version "5.0.0")

I saw that version 5.0.1 is out since Jul 3, 2023. Does it fail to build?

> +    (source (origin
> +              (method url-fetch)
> +              (uri (pypi-uri "pyamg" version))
> +              (sha256
> +               (base32
> +                "0bm0cbqcj5zgs4k7djs5ga98pb95raxxdd674g744hv1iwi6gfga"))))
> +    (build-system pyproject-build-system)
> +    (propagated-inputs (list pybind11 python-numpy python-scipy))

Pybind11 is usually a native or normal input. Does it have to be 
propagated here?

> +    (native-inputs (list python-setuptools-scm python-pytest))
> +    (arguments
> +     (list
> +      #:test-flags
> +      ;; Test installed package in order to find C++ modules.
> +      #~(list "--pyargs" "pyamg.tests")))
> +    (home-page "https://github.com/pyamg/pyamg")
> +    (synopsis "Algebraic Multigrid Solvers in Python")
> +    (description "PyAMG is a Python library of Algebraic Multigrid
> +(AMG) solvers.
> +
> +PyAMG features implementations of:

Nitpick: to avoid repeating "PyAMG", you can say "It" in the second 
paragraph and join with the first.

> +@itemize
> +@item Ruge-Stuben (RS) or Classical AMG
> +@item AMG based on Smoothed Aggregation (SA)
> +@item Adaptive Smoothed Aggregation (αSA)
> +@item Compatible Relaxation (CR)
> +@item Krylov methods such as CG, GMRES, FGMRES, BiCGStab, MINRES, etc.
> +@end itemize
> +PyAMG is primarily written in Python with supporting C++ code for
> +performance critical operations.
> +")

Implementation details like in this last sentence about languages and 
performance should be transparent to the user and can be omitted.

> +    (license license:expat)))
> +
>   (define-public python-tspex
>     (package
>       (name "python-tspex")
>
> base-commit: 9dcd8802f5bc472579f23a38dcf437f8a9ac976c

I also noticed that amg_core contains cpp files generated by the 
pyamg/amg_core/bindthem.py script. I'd suggest to grep 'DO NOT EDIT' on 
that directory to find the files, delete them in a snippet and rerun the 
bindthem.py script in a new phase after unpacking.

Thanks,

Vinicius