Subject: [bug#60838] [PATCH 0/8] Add datasette and python-sqlite-utils.

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 21 Mar 2023 21:26:02 -0400

Hello,

Felix Gruber <[email-masked]> writes:

> * gnu/packages/databases.scm (datasette): New variable.
> ---
>  gnu/packages/databases.scm | 47 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>
> diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
> index d9ea2bba34..72960396fc 100644
> --- a/gnu/packages/databases.scm
> +++ b/gnu/packages/databases.scm
> @@ -59,6 +59,7 @@
>  ;;; Copyright © 2022 muradm <[email-masked]>
>  ;;; Copyright © 2022 Thomas Albers Raviola <[email-masked]>
>  ;;; Copyright © 2021, 2022 jgart <[email-masked]>
> +;;; Copyright © 2023 Felix Gruber <[email-masked]>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -5049,3 +5050,49 @@ (define-public python-dogpile.cache
>  provides API hooks which integrate these cache backends with the locking
>  mechanism of @code{dogpile}.")
>      (license license:expat)))
> +
> +(define-public datasette
> +  (package
> +    (name "datasette")
> +    (version "0.64.2")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (pypi-uri "datasette" version))
> +        (sha256
> +         (base32
> +          "1z2qwj7gmyph4dnbr44p332f9ydpv7c4z5jiyai12bmgsgdnxqg9"))))
> +    (build-system pyproject-build-system)
> +    (arguments
> +     (list
> +      #:tests? #f                    ; pypi package contains no tests

That's a lame excuse for disabling the test suite, in my opinion (and I
know it can be tempting to use it!) :-).  Please fetch from git when
there are no tests in the sdist releases (which is increasingly common,
it seems).

> +      #:phases
> +      #~(modify-phases %standard-phases
> +          (add-after 'unpack 'loosen-requirements

Nitpick: I call these phases 'relax-requirements.

> +            (lambda _
> +              ;; The package needlessly specifies exact versions
> +              ;; of dependencies, when it works fine with others.
> +              (substitute* "setup.py"
> +                (("(black)==[0-9\\.]+" all package)
> +                 package)))))))

The above only affects the 'black' package, right?  Since the 'all'
binding is not used, it can be set to '_' instead.

> +    (propagated-inputs (list python-aiofiles
> +                             python-asgi-csrf
> +                             python-asgiref
> +                             python-click-7
> +                             python-click-default-group-wheel
> +                             python-httpx
> +                             python-hupper
> +                             python-itsdangerous
> +                             python-janus
> +                             python-jinja2
> +                             python-mergedeep
> +                             python-pint
> +                             python-pluggy-next
> +                             python-pyyaml
> +                             python-uvicorn))
> +    (home-page "https://datasette.io/")
> +    (synopsis "Multi-tool for exploring and publishing data")
> +    (description "Datasette is a tool for exploring and publishing data.
> +It helps people take data of any shape or size and publish that as an
> +interactive, explorable website and accompanying API.")
> +    (license license:asl2.0)))

It otherwise looks very good!  Apart from enabling the tests suite where
applicable, my comments are mostly cosmetic, so a v2 and we should be
good!  Thank you for the contribution!

-- 
Maxim