diff mbox series

[bug#58072] gnu: Add python-textual.

Message ID 20220925125924.sifu3hzebvuoc6ay@peregrine
State Accepted
Headers show
Series [bug#58072] gnu: Add python-textual. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Brian Kubisiak Sept. 25, 2022, 12:59 p.m. UTC
* gnu/packages/python-xyz.scm (python-textual): New variable.
---
 gnu/packages/python-xyz.scm | 44 +++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

Comments

Björn Höfling Sept. 27, 2022, 9:09 p.m. UTC | #1
Hi Brian,

On Sun, 25 Sep 2022 05:59:24 -0700
Brian Kubisiak <brian@kubisiak.com> wrote:

> * gnu/packages/python-xyz.scm (python-textual): New variable.
> ---
>  gnu/packages/python-xyz.scm | 44

 [..]
> +    (source (origin
> +              (method url-fetch)
> +              (uri (pypi-uri "textual" version))
> +              (sha256
> +               (base32
> +
> "08yg5a51hz1axfj5hx28hx31gq5apcj6vpkkmawmiplisa73z25j"))))
> +    (build-system python-build-system)
> +    (arguments
> +     (list #:phases
> +       #~(modify-phases %standard-phases
> +           (replace 'check
> +             (lambda* (#:key inputs tests? #:allow-other-keys)
> +               (when tests?
> +                 (copy-recursively (string-append
> +                                    (assoc-ref inputs "tests")
> "/tests")
> +                                   "tests")
> +                 (invoke "python" "-m" "pytest" "-vv")))))))
> +    (propagated-inputs
> +     (list python-rich python-typing-extensions))
> +    (native-inputs
> +     `(("python-pytest" ,python-pytest)
> +       ("tests"
> +        ;; The release on pypi comes without tests.  We can't build
> from this
> +        ;; checkout, though, because installation requires an
> invocation of
> +        ;; poetry.
> +        ,(origin
> +           (method git-fetch)
> +           (uri (git-reference
> +                 (url "https://github.com/Textualize/textual")
> +                 (commit (string-append "v" version))))
> +           (file-name (git-file-name name version))
> +           (sha256
> +            (base32
> +
> "0b3ycwqhp21mg9fvmadgxhgbvkwq6fd784l2xcmvy77rravrnnax"))))))


You download the sources twice: Once from pypi, and another time from
GitHub as "test" input. I would suggest you use directly the GitHub
sources as main sources. Then you also don't need the modified 'check
phase. 

As an example, I found python-identify, which also comments on the
sources that there are no tests in PyPi (please add that comment too,
it makes it clear why not to use PyPi).

Would you like to send an updated patch?

Thanks,

Björn
Brian Kubisiak Sept. 28, 2022, 12:30 p.m. UTC | #2
> You download the sources twice: Once from pypi, and another time from
> GitHub as "test" input. I would suggest you use directly the GitHub
> sources as main sources. Then you also don't need the modified 'check
> phase.

The GitHub sources are built with poetry and do not have setup.py or
setup.cfg; in order to use the existing python-build-system, the
package must be built from the PyPi sources. The other option would be
to disable the tests completely instead of downloading them from
GitHub, but I think keeping the tests is a better option.

> As an example, I found python-identify, which also comments on the
> sources that there are no tests in PyPi

The patch I wrote is based on python-rich (which is a similar package
by the same author).

> (please add that comment too, it makes it clear why not to use
> PyPi).

I've already got that comment here:

> +        ;; The release on pypi comes without tests.  We can't build from this
> +        ;; checkout, though, because installation requires an invocation of
> +        ;; poetry.

Thanks,
Brian
Ludovic Courtès Oct. 6, 2022, 8:42 p.m. UTC | #3
Hi,

Brian Kubisiak <brian@kubisiak.com> skribis:

> * gnu/packages/python-xyz.scm (python-textual): New variable.

Applied.  Thank you and thanks Björn for taking a look!

I followed up with a change to remove input labels.

Ludo’.
diff mbox series

Patch

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ffcb023d60..5fd7dad8e3 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -15973,6 +15973,50 @@  (define-public python-rich
 syntax highlighting, markdown and more to the terminal.")
     (license license:expat)))
 
+(define-public python-textual
+  (package
+    (name "python-textual")
+    (version "0.1.18")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "textual" version))
+              (sha256
+               (base32
+                "08yg5a51hz1axfj5hx28hx31gq5apcj6vpkkmawmiplisa73z25j"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:phases
+       #~(modify-phases %standard-phases
+           (replace 'check
+             (lambda* (#:key inputs tests? #:allow-other-keys)
+               (when tests?
+                 (copy-recursively (string-append
+                                    (assoc-ref inputs "tests") "/tests")
+                                   "tests")
+                 (invoke "python" "-m" "pytest" "-vv")))))))
+    (propagated-inputs
+     (list python-rich python-typing-extensions))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("tests"
+        ;; The release on pypi comes without tests.  We can't build from this
+        ;; checkout, though, because installation requires an invocation of
+        ;; poetry.
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/Textualize/textual")
+                 (commit (string-append "v" version))))
+           (file-name (git-file-name name version))
+           (sha256
+            (base32
+             "0b3ycwqhp21mg9fvmadgxhgbvkwq6fd784l2xcmvy77rravrnnax"))))))
+    (home-page "https://github.com/Textualize/textual")
+    (synopsis "Build TUIs in python")
+    (description "Textual is a TUI (Text User Interface) framework for Python
+inspired by modern web development.")
+    (license license:expat)))
+
 (define-public python-magic
   (package
     (name "python-magic")