diff mbox series

[bug#36194,05/10] gnu: Add python-leather.

Message ID 20190613150627.1882-5-pierre.langlois@gmx.com
State Accepted
Headers show
Series Add csvkit. | expand

Checks

Context Check Description
cbaines/applying patch success Successfully applied

Commit Message

Pierre Langlois June 13, 2019, 3:06 p.m. UTC
* gnu/packages/wireservice.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk                 |  1 +
 gnu/packages/wireservice.scm | 91 ++++++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+)
 create mode 100644 gnu/packages/wireservice.scm

--
2.22.0

Comments

Ludovic Courtès July 7, 2019, 1:47 p.m. UTC | #1
Hi Pierre!

I applied the whole series after tweaking two descriptions.

Two minor comments:

Pierre Langlois <pierre.langlois@gmx.com> skribis:

> +;; Base package definition for packages from https://github.com/wireservice.
> +;; This is done so we can share how to run tests and build documentation.
> +(define base-package
> +  (package
> +    (name #f)
> +    (version #f)
> +    (source #f)
> +    (home-page #f)
> +    (synopsis #f)
> +    (description #f)
> +    (build-system python-build-system)

As a matter of style, I would prefer to never have fields with a value
of an invalid type, as is the case above; if one forgets to override
these fields, we end up with an incorrect package.

What about using ‘python-leather’ as the base package and defining a
macro like:

  (define-syntax-rule (wireservice-package fields ...)
    (package
      (build-system python-build-system)
      (arguments (package-arguments python-leather))
      (native-inputs (package-native-inputs python-leather))
      fields ...))
        
?

> diff --git a/gnu/packages/patches/csvkit-fix-tests.patch b/gnu/packages/patches/csvkit-fix-tests.patch
> new file mode 100644
> index 0000000000..e62b601fe4
> --- /dev/null
> +++ b/gnu/packages/patches/csvkit-fix-tests.patch
> @@ -0,0 +1,45 @@
> +diff --git a/tests/test_utilities/test_csvsql.py b/tests/test_utilities/test_csvsql.py
> +index e6ec4af..4f47980 100644
> +--- a/tests/test_utilities/test_csvsql.py
> ++++ b/tests/test_utilities/test_csvsql.py
> +@@ -197,7 +197,7 @@ class TestCSVSQL(CSVKitTestCase, EmptyFileTests):
> +         utility.run()

For your future self and for your fellow hackers ;-), it’d be great if
you could add just a couple of lines at the top of each patch stating
(1) where they come from, and (2) what they do.

Thanks for the patch series, and apologies for the delay!

Ludo’.
Pierre Langlois July 7, 2019, 2:35 p.m. UTC | #2
Ludovic Courtès writes:

> Hi Pierre!
>
> I applied the whole series after tweaking two descriptions.
>
> Two minor comments:
>
> Pierre Langlois <pierre.langlois@gmx.com> skribis:
>
>> +;; Base package definition for packages from https://github.com/wireservice.
>> +;; This is done so we can share how to run tests and build documentation.
>> +(define base-package
>> +  (package
>> +    (name #f)
>> +    (version #f)
>> +    (source #f)
>> +    (home-page #f)
>> +    (synopsis #f)
>> +    (description #f)
>> +    (build-system python-build-system)
>
> As a matter of style, I would prefer to never have fields with a value
> of an invalid type, as is the case above; if one forgets to override
> these fields, we end up with an incorrect package.
>
> What about using ‘python-leather’ as the base package and defining a
> macro like:
>
>   (define-syntax-rule (wireservice-package fields ...)
>     (package
>       (build-system python-build-system)
>       (arguments (package-arguments python-leather))
>       (native-inputs (package-native-inputs python-leather))
>       fields ...))
>
> ?

Ah yeah I agree it's a much a better idea, I'll look into it as a
follow-up!

>
>> diff --git a/gnu/packages/patches/csvkit-fix-tests.patch b/gnu/packages/patches/csvkit-fix-tests.patch
>> new file mode 100644
>> index 0000000000..e62b601fe4
>> --- /dev/null
>> +++ b/gnu/packages/patches/csvkit-fix-tests.patch
>> @@ -0,0 +1,45 @@
>> +diff --git a/tests/test_utilities/test_csvsql.py b/tests/test_utilities/test_csvsql.py
>> +index e6ec4af..4f47980 100644
>> +--- a/tests/test_utilities/test_csvsql.py
>> ++++ b/tests/test_utilities/test_csvsql.py
>> +@@ -197,7 +197,7 @@ class TestCSVSQL(CSVKitTestCase, EmptyFileTests):
>> +         utility.run()
>
> For your future self and for your fellow hackers ;-), it’d be great if
> you could add just a couple of lines at the top of each patch stating
> (1) where they come from, and (2) what they do.

Noted!

>
> Thanks for the patch series, and apologies for the delay!

Thanks for applying this and making adjustments!

Pierre
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f8c33dd8c2..e9e5009276 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -485,6 +485,7 @@  GNU_SYSTEM_MODULES =				\
   %D%/packages/wget.scm				\
   %D%/packages/wicd.scm				\
   %D%/packages/wine.scm				\
+  %D%/packages/wireservice.scm				\
   %D%/packages/wm.scm				\
   %D%/packages/wordnet.scm			\
   %D%/packages/wv.scm				\
diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm
new file mode 100644
index 0000000000..290b027e7b
--- /dev/null
+++ b/gnu/packages/wireservice.scm
@@ -0,0 +1,91 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages wireservice)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system python)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages sphinx))
+
+;; Base package definition for packages from https://github.com/wireservice.
+;; This is done so we can share how to run tests and build documentation.
+(define base-package
+  (package
+    (name #f)
+    (version #f)
+    (source #f)
+    (home-page #f)
+    (synopsis #f)
+    (description #f)
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)
+       ("python-sphinx" ,python-sphinx)
+       ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "nosetests" "tests")))
+         (add-after 'install 'install-docs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/"
+                                        ,(package-name this-package)
+                                        "-"
+                                        ,(package-version this-package))))
+               (with-directory-excursion "docs"
+                 (for-each
+                  (lambda (target)
+                    (invoke "make" target)
+                    (copy-recursively (string-append "_build/" target)
+                                      (string-append doc "/" target)))
+                  '("html" "dirhtml" "singlehtml" "text")))
+               #t))))))
+    (license license:expat)))
+
+(define-public python-leather
+  (package
+    (inherit base-package)
+    (name "python-leather")
+    (version "0.3.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/wireservice/leather.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ck3dplni99sv4s117cbm07ydwwjsrxkhdy19rnk0iglia1d4s5i"))))
+    (native-inputs
+     `(("python-cssselect" ,python-cssselect)
+       ("python-lxml" ,python-lxml)
+       ,@(package-native-inputs base-package)))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page "https://leather.rtfd.org")
+    (synopsis "Python charting for 80% of humans")
+    (description "Leather is a Python charting library for those who need
+charts now and don't care if they're perfect.")))