Subject: [bug#41395] [PATCH 1/2] gnu: python-prompt-toolkit: Update to 3.0.5

From: Marius Bakke <[email-masked]>
Date: Sat, 23 May 2020 20:35:42 +0200

Edouard Klein <[email-masked]> writes:

> * /gnu/packages/python-xyz.scm (python-widgetsnbextension): Pin python-prompt-toolkit to version 2
> * /gnu/packages/python-xyz.scm (python-ipywidgets): Pin python-prompt-toolkit to version 2
> * /gnu/packages/python-xyz.scm (python-jupyter-console): Pin python-prompt-toolkit to version 2
> * /gnu/packages/python-xyz.scm (python-prompt-toolkit): Update to 3.0.5
> * /gnu/packages/python-xyz.scm (python-prompt-toolkit-2): New variable
> * /gnu/packages/python-xyz.scm (python-prompt-toolkit-2-instead-of-prompt-toolkit): New variable
> * /gnu/packages/machine-learning.scm (python-iml): Pin ipython to python-prompt-toolkit-2 variant

You only need to mention the file name once.

> @@ -1803,12 +1804,14 @@ advanced research.")
>           "1k8szlpm19rcwcxdny9qdm3gmaqq8akb4xlvrzyz8c2d679aak6l"))))
>      (build-system python-build-system)
>      (propagated-inputs
> -     `(("ipython" ,python-ipython)
> -       ("nose" ,python-nose)
> +     `(("ipython" ,(prompt-toolkit-2-instead-of-prompt-toolkit
> +                    python-ipython))
>         ("numpy" ,python-numpy)
>         ("pandas" ,python-pandas)
>         ("scipy" ,python-scipy)))
> -    (home-page "http://github.com/interpretable-ml/iml")
> +    (native-inputs
> +     `(("nose" ,python-nose)))
> +    (home-page "https://github.com/interpretable-ml/iml")

Can you submit the home page and inputs change of this package as two
separate patches?

>      (synopsis "Interpretable Machine Learning (iML) package")
>      (description "Interpretable ML (iML) is a set of data type objects,
>  visualizations, and interfaces that can be used by any method designed to
> diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
> index b8a51570c3..5fd7e274e9 100644
> --- a/gnu/packages/python-xyz.scm
> +++ b/gnu/packages/python-xyz.scm
> @@ -8922,6 +8922,7 @@ interactive computing.")
>      (build-system python-build-system)
>      (propagated-inputs
>       `(("python-ipykernel" ,python-ipykernel)
> +       ("python-prompt-toolkit" ,python-prompt-toolkit-2)
>         ("python-notebook" ,python-notebook)))
>      (native-inputs
>       `(("python-certifi" ,python-certifi)
> @@ -8950,6 +8951,7 @@ notebooks.")
>      (propagated-inputs
>       `(("python-ipython" ,python-ipython)
>         ("python-traitlets" ,python-traitlets)
> +       ("python-prompt-toolkit" ,python-prompt-toolkit-2)
>         ("python-widgetsnbextension" ,python-widgetsnbextension)))
>      (native-inputs
>       `(("python-nose" ,python-nose)
> @@ -8980,7 +8982,7 @@ in the data.")
>      (propagated-inputs
>       `(("python-ipykernel" ,python-ipykernel)
>         ("python-jupyter-client" ,python-jupyter-client)
> -       ("python-prompt-toolkit" ,python-prompt-toolkit)
> +       ("python-prompt-toolkit" ,python-prompt-toolkit-2)
>         ("python-pygments" ,python-pygments)))
>      (native-inputs
>       `(("python-nose" ,python-nose)))
> @@ -12049,6 +12051,44 @@ collections of data.")
>    (package-with-python2 python-backpack))

It would be great to update these packages instead of pinning to the old
version.  I won't blame you if you don't feel like embarking on that
journey though.

>  (define-public python-prompt-toolkit
> +  (package
> +    (name "python-prompt-toolkit")
> +    (version "3.0.5")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "prompt_toolkit" version))
> +       (sha256
> +        (base32
> +         "1j3x5s4gp4ih73sbcni0a0vffbzvrxbrbnkvb3fzjgxn810ilgan"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (delete 'check)
> +         (add-after 'install 'post-install-check
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             ;; HOME is needed for the test
> +             ;; "test_pathcompleter_can_expanduser".
> +             (setenv "HOME" "/tmp")
> +             (add-installed-pythonpath inputs outputs)
> +             (invoke "py.test"))))))
> +    (propagated-inputs
> +     `(("python-wcwidth" ,python-wcwidth)))
> +    (native-inputs
> +     `(("python-pytest" ,python-pytest)))
> +    (home-page
> +     "https://github.com/prompt-toolkit/python-prompt-toolkit")
> +    (synopsis "Library for building command line interfaces in Python")
> +    (description
> +     "Prompt-Toolkit is a library for building interactive command line
> +interfaces in Python.  It's like GNU Readline but it also features syntax
> +highlighting while typing, out-of-the-box multi-line input editing, advanced
> +code completion, incremental search, support for Chinese double-width
> +characters, mouse support, and auto suggestions.")
> +    (license license:bsd-3)))

Can you make python-prompt-toolkit-2 inherit from this package to avoid
duplicating the entire expression?

> +(define-public python-prompt-toolkit-2
>    (package
>      (name "python-prompt-toolkit")
>      (version "2.0.7")
> @@ -12077,7 +12117,7 @@ collections of data.")
>         ("python-pygments" ,python-pygments)))
>      (native-inputs
>       `(("python-pytest" ,python-pytest)))
> -    (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
> +    (home-page "https://github.com/prompt-toolkit/python-prompt-toolkit")
>      (synopsis "Library for building command line interfaces in Python")
>      (description
>       "Prompt-Toolkit is a library for building interactive command line
> @@ -12104,6 +12144,10 @@ characters, mouse support, and auto suggestions.")
>  (define-public python2-prompt-toolkit-1
>    (package-with-python2 python-prompt-toolkit-1))
>  
> +(define-public prompt-toolkit-2-instead-of-prompt-toolkit
> +  (package-input-rewriting/spec
> +   `(("python-prompt-toolkit" . ,(const python-prompt-toolkit-2)))))

Is this actually necessary?  Just changing the inputs as you did above
should be sufficient I think.