gnu: Add python-graphene.
[jackhill/guix/guix.git] / gnu / packages / python.scm
CommitLineData
a01b6da7
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
48b311b1 3;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
8e451885 4;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
e99f4211 5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
a480bc41 6;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
da6ce3f1 7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
e99f4211 8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
d95a56c6 9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
534db463 10;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
0bdc1671 11;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
345f0611 12;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
2b2f2fc1 13;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
6a44697d 14;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
02a8a187 15;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
b9893908 16;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
264ae686 17;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
1872f1bb 18;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
daeeea71 19;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
b31fbea5 20;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
88bb4197 21;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
b8fdbca3 22;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
0de78c95 23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
9250b0f3 24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
47d0b292 25;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
42c4b246 26;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
6eb7af2a 27;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
3f641af0 28;;; Copyright © 2016 David Craven <david@craven.ch>
dddcb25c 29;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
4efb9c54 30;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at>
a01b6da7
NK
31;;;
32;;; This file is part of GNU Guix.
33;;;
34;;; GNU Guix is free software; you can redistribute it and/or modify it
35;;; under the terms of the GNU General Public License as published by
36;;; the Free Software Foundation; either version 3 of the License, or (at
37;;; your option) any later version.
38;;;
39;;; GNU Guix is distributed in the hope that it will be useful, but
40;;; WITHOUT ANY WARRANTY; without even the implied warranty of
41;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
42;;; GNU General Public License for more details.
43;;;
44;;; You should have received a copy of the GNU General Public License
45;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
46
1ffa7090 47(define-module (gnu packages python)
3f641af0 48 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 49 #:use-module (gnu packages)
8e451885 50 #:use-module (gnu packages algebra)
d79a343b 51 #:use-module (gnu packages adns)
89b2e0b0 52 #:use-module (gnu packages attr)
d96034ed 53 #:use-module (gnu packages backup)
1ffa7090 54 #:use-module (gnu packages compression)
4ed20663 55 #:use-module (gnu packages databases)
ddc63a56 56 #:use-module (gnu packages django)
5e1c9367 57 #:use-module (gnu packages file)
4ed20663 58 #:use-module (gnu packages fontutils)
4ed20663
AE
59 #:use-module (gnu packages gcc)
60 #:use-module (gnu packages ghostscript)
6eb7af2a 61 #:use-module (gnu packages gl)
4ed20663 62 #:use-module (gnu packages glib)
6eb7af2a 63 #:use-module (gnu packages gstreamer)
4ed20663 64 #:use-module (gnu packages gtk)
421a80a2 65 #:use-module (gnu packages icu4c)
c937562e 66 #:use-module (gnu packages image)
4ed20663 67 #:use-module (gnu packages imagemagick)
d79a343b 68 #:use-module (gnu packages libevent)
b10ab723 69 #:use-module (gnu packages libffi)
89b2e0b0 70 #:use-module (gnu packages linux)
0da98533 71 #:use-module (gnu packages maths)
4ed20663 72 #:use-module (gnu packages multiprecision)
45203542 73 #:use-module (gnu packages networking)
be7134bf 74 #:use-module (gnu packages ncurses)
c9b1b4f9 75 #:use-module (gnu packages pcre)
4ed20663 76 #:use-module (gnu packages perl)
b10ab723 77 #:use-module (gnu packages pkg-config)
4ed20663 78 #:use-module (gnu packages readline)
6eb7af2a 79 #:use-module (gnu packages sdl)
c9b1b4f9 80 #:use-module (gnu packages statistics)
8f9ac901 81 #:use-module (gnu packages tex)
1c65314c 82 #:use-module (gnu packages texinfo)
cc2b77df 83 #:use-module (gnu packages tls)
e25f0174 84 #:use-module (gnu packages version-control)
8d12be1e 85 #:use-module (gnu packages web)
ce0614dd 86 #:use-module (gnu packages base)
26b307e2 87 #:use-module (gnu packages xml)
6fa14469 88 #:use-module (gnu packages xorg)
0bdc1671 89 #:use-module (gnu packages xdisorg)
4ed20663 90 #:use-module (gnu packages zip)
afa181ff 91 #:use-module (gnu packages tcl)
63bcec71
DM
92 #:use-module (gnu packages bdw-gc)
93 #:use-module (gnu packages pcre)
a01b6da7
NK
94 #:use-module (guix packages)
95 #:use-module (guix download)
ea5456c8 96 #:use-module (guix git-download)
11bb85a1 97 #:use-module (guix utils)
acc26ff1 98 #:use-module (guix build-system gnu)
d8c4998f 99 #:use-module (guix build-system cmake)
898238b9 100 #:use-module (guix build-system python)
1c65314c
FB
101 #:use-module (guix build-system trivial)
102 #:use-module (srfi srfi-1))
a01b6da7 103
45848023 104(define-public python-2.7
a01b6da7
NK
105 (package
106 (name "python")
e7e7a1eb 107 (version "2.7.11")
a01b6da7
NK
108 (source
109 (origin
110 (method url-fetch)
9b43a0ff 111 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
112 version "/Python-" version ".tar.xz"))
113 (sha256
114 (base32
e7e7a1eb 115 "0iiz844riiznsyhhyy962710pz228gmhv8qi3yk4w4jhmx2lqawn"))
c3052d6b
ML
116 (patches (search-patches "python-2.7-search-paths.patch"
117 "python-2-deterministic-build-info.patch"
118 "python-2.7-source-date-epoch.patch"))
10a42aa2
EF
119 (modules '((guix build utils)))
120 ;; suboptimal to delete failing tests here, but if we delete them in the
121 ;; arguments then we need to make sure to strip out that phase when it
122 ;; gets inherited by python and python-minimal.
123 (snippet
124 '(begin
125 (for-each delete-file
126 '("Lib/test/test_compileall.py"
127 "Lib/test/test_distutils.py"
128 "Lib/test/test_import.py"
129 "Lib/test/test_shutil.py"
130 "Lib/test/test_socket.py"
1bb163b0 131 "Lib/test/test_subprocess.py"))
10a42aa2 132 #t))))
02f0c3b2
LC
133 (outputs '("out"
134 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 135 (build-system gnu-build-system)
3fdc99da 136 (arguments
10a42aa2 137 `(;; 356 tests OK.
e7e7a1eb
EF
138 ;; 6 tests failed:
139 ;; test_compileall test_distutils test_import test_shutil test_socket
140 ;; test_subprocess
141 ;; 39 tests skipped:
ff6f33cf
ED
142 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
143 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
144 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
145 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
146 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
147 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
148 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
149 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
150 ;; test_winreg test_winsound test_zipfile64
151 ;; 4 skips unexpected on linux2:
152 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 153 #:test-target "test"
3fdc99da 154 #:configure-flags
6a20289d
LC
155 (list "--enable-shared" ;allow embedding
156 "--with-system-ffi" ;build ctypes
157 (string-append "LDFLAGS=-Wl,-rpath="
158 (assoc-ref %outputs "out") "/lib"))
fd982732 159
d2cc9c7c
LC
160 #:modules ((ice-9 ftw) (ice-9 match)
161 (guix build utils) (guix build gnu-build-system))
fd982732 162 #:phases
46472ecd
MW
163 (modify-phases %standard-phases
164 (add-before
165 'configure 'patch-lib-shells
166 (lambda _
167 ;; Filter for existing files, since some may not exist in all
168 ;; versions of python that are built with this recipe.
169 (substitute* (filter file-exists?
170 '("Lib/subprocess.py"
171 "Lib/popen2.py"
172 "Lib/distutils/tests/test_spawn.py"
173 "Lib/test/test_subprocess.py"))
174 (("/bin/sh") (which "sh")))
dedc8320
LC
175
176 ;; Use zero as the timestamp in .pyc files so that builds are
177 ;; deterministic. TODO: Remove it when this variable is set in
178 ;; gnu-build-system.scm.
a665996f 179 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 180 #t))
5b4e2791
LC
181 (add-before 'configure 'do-not-record-configure-flags
182 (lambda* (#:key configure-flags #:allow-other-keys)
183 ;; Remove configure flags from the installed '_sysconfigdata.py'
184 ;; and 'Makefile' so we don't end up keeping references to the
185 ;; build tools.
186 ;;
187 ;; Preserve at least '--with-system-ffi' since otherwise the
188 ;; thing tries to build libffi, fails, and we end up with a
189 ;; Python that lacks ctypes.
190 (substitute* "configure"
191 (("^CONFIG_ARGS=.*$")
192 (format #f "CONFIG_ARGS='~a'\n"
193 (if (member "--with-system-ffi" configure-flags)
194 "--with-system-ffi"
195 ""))))
196 #t))
46472ecd
MW
197 (add-before
198 'check 'pre-check
199 (lambda _
200 ;; 'Lib/test/test_site.py' needs a valid $HOME
201 (setenv "HOME" (getcwd))
1bb163b0
LC
202 ,@(if (string-prefix? "mips64el" (%current-system))
203
204 ;; XXX: The following test fails on mips64el.
205 '((false-if-exception
206 (delete-file "Lib/test/test_ctypes.py")))
207
208 '())
46472ecd
MW
209 #t))
210 (add-after
211 'unpack 'set-source-file-times-to-1980
212 ;; XXX One of the tests uses a ZIP library to pack up some of the
213 ;; source tree, and fails with "ZIP does not support timestamps
214 ;; before 1980". Work around this by setting the file times in the
215 ;; source tree to sometime in early 1980.
216 (lambda _
217 (let ((circa-1980 (* 10 366 24 60 60)))
218 (ftw "." (lambda (file stat flag)
219 (utime file circa-1980 circa-1980)
220 #t))
02f0c3b2 221 #t)))
9ffe61b0
LC
222 (add-after 'install 'remove-tests
223 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
224 ;; because these files are used by some libraries out there.
225 (lambda* (#:key outputs #:allow-other-keys)
226 (let ((out (assoc-ref outputs "out")))
227 (match (scandir (string-append out "/lib")
228 (lambda (name)
229 (string-prefix? "python" name)))
230 ((pythonX.Y)
231 (let ((testdir (string-append out "/lib/" pythonX.Y
232 "/test")))
233 (with-directory-excursion testdir
234 (for-each delete-file-recursively
235 (scandir testdir
236 (match-lambda
237 ((or "." "..") #f)
238 (file
239 (not
240 (string-prefix? "test_support."
241 file))))))
242 (call-with-output-file "__init__.py" (const #t))
243 #t)))))))
216c283b
LC
244 (add-before 'strip 'make-libraries-writable
245 (lambda* (#:key outputs #:allow-other-keys)
246 ;; Make .so files writable so they can be stripped.
247 (let ((out (assoc-ref outputs "out")))
248 (for-each (lambda (file)
249 (chmod file #o755))
250 (find-files (string-append out "/lib")
251 "\\.so"))
252 #t)))
02f0c3b2
LC
253 (add-after 'install 'move-tk-inter
254 (lambda* (#:key outputs #:allow-other-keys)
255 ;; When Tkinter support is built move it to a separate output so
256 ;; that the main output doesn't contain a reference to Tcl/Tk.
257 (let ((out (assoc-ref outputs "out"))
258 (tk (assoc-ref outputs "tk")))
259 (when tk
260 (match (find-files out "tkinter.*\\.so")
261 ((tkinter.so)
262 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
263 ;; want it under TK/lib/pythonX.Y/site-packages.
264 (let* ((len (string-length out))
265 (target (string-append
266 tk "/"
267 (string-drop
268 (dirname (dirname tkinter.so))
269 len)
270 "/site-packages")))
271 (install-file tkinter.so target)
272 (delete-file tkinter.so)))))
273 #t))))))
a01b6da7 274 (inputs
3fdc99da
CR
275 `(("bzip2" ,bzip2)
276 ("gdbm" ,gdbm)
b10ab723 277 ("libffi" ,libffi) ; for ctypes
b88e1b0a 278 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 279 ("openssl" ,openssl)
3fdc99da 280 ("readline" ,readline)
afa181ff
LC
281 ("zlib" ,zlib)
282 ("tcl" ,tcl)
283 ("tk" ,tk))) ; for tkinter
b10ab723
CR
284 (native-inputs
285 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
286 (native-search-paths
287 (list (search-path-specification
288 (variable "PYTHONPATH")
af070955 289 (files '("lib/python2.7/site-packages")))))
a01b6da7 290 (home-page "http://python.org")
afa181ff 291 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
292 (description
293 "Python is a remarkably powerful dynamic programming language that
294is used in a wide variety of application domains. Some of its key
295distinguishing features include: clear, readable syntax; strong
296introspection capabilities; intuitive object orientation; natural
297expression of procedural code; full modularity, supporting hierarchical
298packages; exception-based error handling; and very high level dynamic
299data types.")
3f641af0 300 (license license:psfl)))
acc26ff1 301
45848023
HG
302;; Current 2.x version.
303(define-public python-2 python-2.7)
304
305(define-public python-3.4
b24d1cfc 306 (package (inherit python-2)
08c04509 307 (version "3.4.3")
717003e3
LC
308 (source (origin
309 (method url-fetch)
310 (uri (string-append "https://www.python.org/ftp/python/"
311 version "/Python-" version ".tar.xz"))
fc1adab1
AK
312 (patches (search-patches
313 "python-fix-tests.patch"
314 ;; XXX Try removing this patch for python > 3.4.3
315 "python-disable-ssl-test.patch"
316 "python-3-deterministic-build-info.patch"
317 "python-3-search-paths.patch"))
717003e3
LC
318 (patch-flags '("-p0"))
319 (sha256
320 (base32
08c04509 321 "1f4nm4z08sy0kqwisvv95l02crv6dyysdmx44p1mz3bn6csrdcxm"))))
1f434457
MW
322 (arguments (substitute-keyword-arguments (package-arguments python-2)
323 ((#:tests? _) #t)))
1aebc0cb
AE
324 (native-search-paths
325 (list (search-path-specification
326 (variable "PYTHONPATH")
0e05d01e
SB
327 (files (list (string-append "lib/python"
328 (version-major+minor version)
329 "/site-packages"))))))))
f26a77ff 330
45848023
HG
331;; Current 3.x version.
332(define-public python-3 python-3.4)
333
334;; Current major version.
335(define-public python python-3)
336
95288fcc
LC
337;; Minimal variants of Python, mostly used to break the cycle between Tk and
338;; Python (Tk -> libxcb -> Python.)
339
340(define-public python2-minimal
341 (package (inherit python-2)
342 (name "python-minimal")
02f0c3b2 343 (outputs '("out"))
95288fcc
LC
344 (arguments
345 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
346 ((#:configure-flags cf)
347 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
348 (inputs '()))) ;none of the optional dependencies
349
350(define-public python-minimal
898238b9 351 (package (inherit python)
95288fcc 352 (name "python-minimal")
02f0c3b2 353 (outputs '("out"))
95288fcc
LC
354 (arguments
355 (substitute-keyword-arguments (package-arguments python)
c5a05e31
LC
356 ((#:configure-flags cf)
357 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
358
359 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
360 ;; zlib is required by 'zipimport', used by pip.
361 (inputs `(("openssl" ,openssl)
362 ("zlib" ,zlib)))))
363
64cb064c
LC
364(define* (wrap-python3 python
365 #:optional
366 (name (string-append (package-name python) "-wrapper")))
898238b9 367 (package (inherit python)
95288fcc 368 (name name)
898238b9
AE
369 (source #f)
370 (build-system trivial-build-system)
02f0c3b2 371 (outputs '("out"))
3c0f2329 372 (propagated-inputs `(("python" ,python)))
898238b9
AE
373 (arguments
374 `(#:modules ((guix build utils))
375 #:builder
376 (begin
377 (use-modules (guix build utils))
378 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
379 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
380 (mkdir-p bin)
381 (for-each
382 (lambda (old new)
383 (symlink (string-append python old)
384 (string-append bin "/" new)))
187e9094
LF
385 '("python3" "pydoc3" "idle3")
386 '("python" "pydoc" "idle"))))))
0d56e3e1
LC
387 (synopsis "Wrapper for the Python 3 commands")
388 (description
389 "This package provides wrappers for the commands of Python@tie{}3.x such
390that they can be invoked under their usual name---e.g., @command{python}
391instead of @command{python3}.")))
392
95288fcc
LC
393(define-public python-wrapper (wrap-python3 python))
394(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 395
aaf625b8
RW
396(define-public python-psutil
397 (package
398 (name "python-psutil")
88535a44 399 (version "4.3.0")
aaf625b8
RW
400 (source
401 (origin
402 (method url-fetch)
f56777be 403 (uri (pypi-uri "psutil" version))
aaf625b8
RW
404 (sha256
405 (base32
88535a44 406 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8
RW
407 (build-system python-build-system)
408 (native-inputs
409 `(("python-setuptools" ,python-setuptools)))
88535a44 410 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
411 (synopsis "Library for retrieving information on running processes")
412 (description
413 "psutil (Python system and process utilities) is a library for retrieving
414information on running processes and system utilization (CPU, memory, disks,
415network) in Python. It is useful mainly for system monitoring, profiling and
416limiting process resources and management of running processes. It implements
417many functionalities offered by command line tools such as: ps, top, lsof,
418netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
419pidof, tty, taskset, pmap.")
3f641af0 420 (license license:bsd-3)))
aaf625b8
RW
421
422(define-public python2-psutil
423 (package-with-python2 python-psutil))
898238b9 424
f9da1d8a
ED
425(define-public python-passlib
426 (package
427 (name "python-passlib")
690e8c66 428 (version "1.6.5")
f9da1d8a
ED
429 (source
430 (origin
431 (method url-fetch)
690e8c66 432 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
433 (sha256
434 (base32
690e8c66 435 "1z27wdxs5rj5xhhqfzvzn3yg682irkxw6dcs5jj7mcf97psk8gd8"))))
f9da1d8a
ED
436 (build-system python-build-system)
437 (native-inputs
438 `(("python-nose" ,python-nose)
439 ("python-setuptools" ,python-setuptools)))
440 (inputs
441 `(("python-py-bcrypt" ,python-py-bcrypt)))
442 (arguments
443 `(#:phases
444 (alist-cons-before
445 'check 'set-PYTHON_EGG_CACHE
446 ;; some tests require access to "$HOME/.cython"
447 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
448 %standard-phases)))
449 (home-page "https://bitbucket.org/ecollins/passlib")
450 (synopsis
451 "Comprehensive password hashing framework")
452 (description
453 "Passlib is a password hashing library for Python 2 & 3, which provides
454cross-platform implementations of over 30 password hashing algorithms, as well
455as a framework for managing existing password hashes. It's designed to be
456useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
457to providing full-strength password hashing for multi-user application.")
3f641af0 458 (license license:bsd-3)))
f9da1d8a
ED
459
460(define-public python2-passlib
461 (package-with-python2 python-passlib))
462
feb0d9c3
ED
463(define-public python-py-bcrypt
464 (package
465 (name "python-py-bcrypt")
466 (version "0.4")
467 (source
468 (origin
469 (method url-fetch)
470 (uri (string-append
471 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
472 version
473 ".tar.gz"))
474 (sha256
475 (base32
476 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
477 (build-system python-build-system)
478 (native-inputs
479 `(("python-setuptools" ,python-setuptools)))
480 (home-page "https://code.google.com/p/py-bcrypt")
481 (synopsis
482 "Bcrypt password hashing and key derivation")
483 (description
484 "A python wrapper of OpenBSD's Blowfish password hashing code. This
485system hashes passwords using a version of Bruce Schneier's Blowfish block
486cipher with modifications designed to raise the cost of off-line password
487cracking and frustrate fast hardware implementation. The computation cost of
488the algorithm is parametised, so it can be increased as computers get faster.
489The intent is to make a compromise of a password database less likely to
490result in an attacker gaining knowledge of the plaintext passwords (e.g. using
491John the Ripper).")
492 ;; "sha2.c" is under BSD-3;
493 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
494 ;; the rest is under ISC.
3f641af0 495 (license (list license:isc license:bsd-3 license:bsd-4))))
feb0d9c3
ED
496
497(define-public python2-py-bcrypt
498 (package-with-python2 python-py-bcrypt))
499
500
429fdea1
ED
501(define-public python-paramiko
502 (package
503 (name "python-paramiko")
81b9bbbd 504 (version "1.16.0")
429fdea1
ED
505 (source
506 (origin
507 (method url-fetch)
81b9bbbd 508 (uri (pypi-uri "paramiko" version))
429fdea1
ED
509 (sha256
510 (base32
81b9bbbd 511 "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
429fdea1
ED
512 (build-system python-build-system)
513 (native-inputs
514 `(("python-setuptools" ,python-setuptools)))
a3fc12da
CR
515 (propagated-inputs
516 `(("python-pycrypto" ,python-pycrypto)))
429fdea1 517 (inputs
a3fc12da 518 `(("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
519 (home-page "http://www.paramiko.org/")
520 (synopsis "SSHv2 protocol library")
521 (description "Paramiko is a python implementation of the SSHv2 protocol,
522providing both client and server functionality. While it leverages a Python C
523extension for low level cryptography (PyCrypto), Paramiko itself is a pure
524Python interface around SSH networking concepts.")
3f641af0 525 (license license:lgpl2.1+)))
429fdea1
ED
526
527(define-public python2-paramiko
528 (package-with-python2 python-paramiko))
529
530
de73dbf6
ED
531(define-public python-httplib2
532 (package
533 (name "python-httplib2")
286f1bac 534 (version "0.9.2")
de73dbf6
ED
535 (source
536 (origin
537 (method url-fetch)
286f1bac 538 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
539 (sha256
540 (base32
286f1bac 541 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6
ED
542 (build-system python-build-system)
543 (native-inputs
544 `(("python-setuptools" ,python-setuptools)))
286f1bac 545 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
546 (synopsis "Comprehensive HTTP client library")
547 (description
548 "A comprehensive HTTP client library supporting many features left out of
549other HTTP libraries.")
550 (license license:expat)))
551
552(define-public python2-httplib2
553 (package-with-python2 python-httplib2))
554
67039875
ED
555(define-public python-ecdsa
556 (package
557 (name "python-ecdsa")
558 (version "0.13")
559 (source
560 (origin
561 (method url-fetch)
562 (uri (string-append
563 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
564 version
565 ".tar.gz"))
566 (sha256
567 (base32
568 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
569 (build-system python-build-system)
570 (native-inputs
571 `(("python-setuptools" ,python-setuptools)))
572 (inputs
573 `(("openssl" ,openssl)))
574 (home-page
575 "http://github.com/warner/python-ecdsa")
576 (synopsis
577 "ECDSA cryptographic signature library (pure python)")
578 (description
579 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
580Curve Digital Signature Algorithm), implemented purely in Python. With this
581library, you can quickly create keypairs (signing key and verifying key), sign
582messages, and verify the signatures. The keys and signatures are very short,
583making them easy to handle and incorporate into other protocols.")
584 (license license:expat)))
585
586(define-public python2-ecdsa
587 (package-with-python2 python-ecdsa))
588
52323f32
ED
589(define-public python-ccm
590 (package
591 (name "python-ccm")
db5567f7 592 (version "2.1.6")
52323f32
ED
593 (source
594 (origin
595 (method url-fetch)
db5567f7 596 (uri (pypi-uri "ccm" version))
52323f32
ED
597 (sha256
598 (base32
db5567f7 599 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32
ED
600 (build-system python-build-system)
601 (native-inputs
602 `(("python-setuptools" ,python-setuptools)))
603 (inputs
604 `(("python-pyyaml" ,python-pyyaml)
605 ("python-six" ,python-six)))
606 (home-page "https://github.com/pcmanus/ccm")
607 (synopsis "Cassandra Cluster Manager")
608 (description "A script/library to create, launch and remove an Apache
609Cassandra cluster on localhost.")
3f641af0 610 (license license:asl2.0)))
52323f32
ED
611
612(define-public python2-ccm
613 (package-with-python2 python-ccm))
614
89114f39 615(define-public python-pytz
acc26ff1 616 (package
89114f39 617 (name "python-pytz")
61c9babb 618 (version "2016.3")
acc26ff1
CR
619 (source
620 (origin
621 (method url-fetch)
61c9babb 622 (uri (pypi-uri "pytz" version ".tar.bz2"))
acc26ff1
CR
623 (sha256
624 (base32
61c9babb 625 "1mjmrkk4vc5xzppw7fm0pli1nnbj57cvqv7jjv5whcmccyhxz4y1"))))
acc26ff1 626 (build-system python-build-system)
8498b8cf 627 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 628 (home-page "http://pythonhosted.org/pytz")
9e771e3b 629 (synopsis "Python timezone library")
acc26ff1
CR
630 (description
631 "This library allows accurate and cross platform timezone calculations
632using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 633 (license license:expat)))
5ace6e2f 634
89114f39 635(define-public python2-pytz
11bb85a1 636 (package-with-python2 python-pytz))
89114f39 637
fc50e9c6 638
89114f39 639(define-public python-babel
5ace6e2f 640 (package
89114f39 641 (name "python-babel")
3f37db6b 642 (version "2.3.2")
5ace6e2f
CR
643 (source
644 (origin
645 (method url-fetch)
b850a6d8 646 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
647 (sha256
648 (base32
3f37db6b 649 "0k43pi0p1dwpds2w0km3fw92wixzxv2vw7p09capxmjz5cfh23lw"))))
5ace6e2f
CR
650 (build-system python-build-system)
651 (inputs
e1804763
AE
652 `(("python-pytz" ,python-pytz)
653 ("python-setuptools" ,python-setuptools)))
8498b8cf 654 (arguments `(#:tests? #f)) ; no test target
e1804763 655 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
656 (synopsis
657 "Tools for internationalizing Python applications")
658 (description
659 "Babel is composed of two major parts:
660- tools to build and work with gettext message catalogs
661- a Python interface to the CLDR (Common Locale Data Repository), providing
662access to various locale display names, localized number and date formatting,
663etc. ")
3f641af0 664 (license license:bsd-3)))
89114f39
AE
665
666(define-public python2-babel
11bb85a1 667 (package-with-python2 python-babel))
73adf220 668
ed377cc6
RW
669(define-public python2-backport-ssl-match-hostname
670 (package
671 (name "python2-backport-ssl-match-hostname")
f2d06d46 672 (version "3.5.0.1")
ed377cc6
RW
673 (source
674 (origin
675 (method url-fetch)
676 (uri (string-append
677 "https://pypi.python.org/packages/source/b/"
678 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
679 version ".tar.gz"))
680 (sha256
681 (base32
f2d06d46 682 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 683 (build-system python-build-system)
f2d06d46
EF
684 (arguments
685 `(#:python ,python-2
686 #:tests? #f)) ; no test target
ed377cc6
RW
687 (inputs
688 `(("python2-setuptools" ,python2-setuptools)))
f2d06d46
EF
689 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
690 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
691 (description
692 "This backport brings the ssl.match_hostname() function to users of
693earlier versions of Python. The function checks the hostname in the
694certificate returned by the server to which a connection has been established,
695and verifies that it matches the intended target hostname.")
3f641af0 696 (license license:psfl)))
ed377cc6 697
ef5cbf9b
RW
698(define-public python-h5py
699 (package
700 (name "python-h5py")
fe147c41 701 (version "2.6.0")
ef5cbf9b
RW
702 (source
703 (origin
704 (method url-fetch)
fe147c41 705 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
706 (sha256
707 (base32
fe147c41 708 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
ef5cbf9b 709 (build-system python-build-system)
797e1401
RW
710 (arguments
711 `(#:tests? #f ; no test target
712 #:phases
713 (modify-phases %standard-phases
714 (add-after 'unpack 'fix-hdf5-paths
715 (lambda* (#:key inputs #:allow-other-keys)
716 (let ((prefix (assoc-ref inputs "hdf5")))
717 (substitute* "setup_build.py"
718 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
719 (string-append "['" prefix "/lib" "']"))
720 (("'/opt/local/include', '/usr/local/include'")
721 (string-append "'" prefix "/include" "'")))
722 (substitute* "setup_configure.py"
723 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
724 (string-append "['" prefix "/lib" "']")))
725 #t))))))
3c4010b1
RW
726 (propagated-inputs
727 `(("python-numpy" ,python-numpy)))
ef5cbf9b 728 (inputs
fe147c41
EF
729 `(("hdf5" ,hdf5)
730 ("python-six" ,python-six)))
ef5cbf9b 731 (native-inputs
fe147c41
EF
732 `(("python-cython" ,python-cython)
733 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
734 (home-page "http://www.h5py.org/")
735 (synopsis "Read and write HDF5 files from Python")
736 (description
737 "The h5py package provides both a high- and low-level interface to the
738HDF5 library from Python. The low-level interface is intended to be a
739complete wrapping of the HDF5 API, while the high-level component supports
740access to HDF5 files, datasets and groups using established Python and NumPy
741concepts.")
3f641af0 742 (license license:bsd-3)
fe147c41 743 (properties `((python2-variant . ,(delay python2-h5py))))))
ef5cbf9b
RW
744
745(define-public python2-h5py
fe147c41 746 (package-with-python2 (strip-python2-variant python-h5py)))
ef5cbf9b 747
c1448c69
EB
748(define-public python-lockfile
749 (package
750 (name "python-lockfile")
692add53 751 (version "0.12.2")
c1448c69
EB
752 (source
753 (origin
754 (method url-fetch)
755 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
756 "lockfile-" version ".tar.gz"))
757 (sha256
758 (base32
692add53 759 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
760 (build-system python-build-system)
761 (arguments '(#:test-target "check"))
692add53
BW
762 (native-inputs
763 `(("python-pbr" ,python-pbr)))
c1448c69
EB
764 (home-page "http://code.google.com/p/pylockfile/")
765 (synopsis "Platform-independent file locking module")
766 (description
767 "The lockfile package exports a LockFile class which provides a simple
768API for locking files.")
1804527a
BW
769 (license license:expat)
770 (properties `((python2-variant . ,(delay python2-lockfile))))))
c1448c69
EB
771
772(define-public python2-lockfile
1804527a
BW
773 (let ((base (package-with-python2 (strip-python2-variant python-lockfile))))
774 (package
692add53
BW
775 (inherit base)
776 (native-inputs `(("python2-setuptools" ,python2-setuptools)
777 ,@(package-native-inputs base))))))
c1448c69 778
5a1a4bf6
EB
779(define-public python-mock
780 (package
781 (name "python-mock")
782 (version "1.0.1")
783 (source
784 (origin
785 (method url-fetch)
786 (uri (string-append "https://pypi.python.org/packages/source/m/mock/"
787 "mock-" version ".tar.gz"))
788 (sha256
789 (base32
790 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
791 (build-system python-build-system)
792 (arguments '(#:test-target "check"))
07af3e5e 793 (home-page "http://code.google.com/p/mock/")
9e771e3b 794 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
795 (description
796 "Mock is a library for testing in Python. It allows you to replace parts
797of your system under test with mock objects and make assertions about how they
798have been used.")
bd3fa666 799 (license license:expat)))
5a1a4bf6
EB
800
801(define-public python2-mock
802 (package-with-python2 python-mock))
803
fc50e9c6 804
73adf220
AE
805(define-public python-setuptools
806 (package
807 (name "python-setuptools")
62a9a23b 808 (version "18.3.1")
73adf220
AE
809 (source
810 (origin
811 (method url-fetch)
812 (uri (string-append "https://pypi.python.org/packages/source/s/setuptools/setuptools-"
813 version ".tar.gz"))
814 (sha256
815 (base32
62a9a23b 816 "0kc7rbav00ks6iaw14p38y81q12fx0lpkhgf5m97xc04f5r318ig"))))
73adf220 817 (build-system python-build-system)
d3d656c5
AE
818 ;; FIXME: Tests require pytest, which itself relies on setuptools.
819 ;; One could bootstrap with an internal untested setuptools.
73adf220 820 (arguments
824af8ca 821 `(#:tests? #f))
73adf220
AE
822 (home-page "https://pypi.python.org/pypi/setuptools")
823 (synopsis
824 "Library designed to facilitate packaging Python projects")
825 (description
826 "Setuptools is a fully-featured, stable library designed to facilitate
827packaging Python projects, where packaging includes:
828Python package and module definitions,
829distribution package metadata,
830test hooks,
831project installation,
832platform-specific details,
833Python 3 support.")
3f641af0 834 (license license:psfl)))
73adf220
AE
835
836(define-public python2-setuptools
837 (package-with-python2 python-setuptools))
fc50e9c6
AE
838
839
cafc3f5a
EB
840(define-public python-pycrypto
841 (package
842 (name "python-pycrypto")
843 (version "2.6.1")
844 (source
845 (origin
846 (method url-fetch)
847 (uri (string-append "https://pypi.python.org/packages/source/p/"
848 "pycrypto/pycrypto-" version ".tar.gz"))
849 (sha256
850 (base32
851 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
852 (build-system python-build-system)
853 (native-inputs
854 `(("python-setuptools" ,python-setuptools)))
855 (inputs
856 `(("python" ,python)
857 ("gmp" ,gmp)))
858 (arguments
859 `(#:phases
860 (alist-cons-before
861 'build 'set-build-env
862 ;; pycrypto runs an autoconf configure script behind the scenes
863 (lambda _
864 (setenv "CONFIG_SHELL" (which "bash")))
865 %standard-phases)))
866 (home-page "http://www.pycrypto.org/")
867 (synopsis "Cryptographic modules for Python")
868 (description
869 "Pycrypto is a collection of both secure hash functions (such as SHA256
870and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 871etc.). The package is structured to make adding new modules easy.")
3f641af0 872 (license license:public-domain)))
cafc3f5a 873
345f0611 874(define-public python2-pycrypto
1c0059da
EF
875 (let ((pycrypto (package-with-python2 python-pycrypto)))
876 (package (inherit pycrypto)
877 (inputs
878 `(("python" ,python-2)
879 ,@(alist-delete
880 "python"
881 (package-inputs pycrypto)))))))
345f0611 882
cafc3f5a
EB
883(define-public python-keyring
884 (package
885 (name "python-keyring")
13f3ff35 886 (version "8.7")
cafc3f5a
EB
887 (source
888 (origin
889 (method url-fetch)
664e6c3a 890 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
891 (sha256
892 (base32
13f3ff35 893 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
894 (build-system python-build-system)
895 (native-inputs
13f3ff35 896 `(("python-setuptools-scm" ,python-setuptools-scm)))
cafc3f5a
EB
897 (inputs
898 `(("python-pycrypto" ,python-pycrypto)))
899 (arguments
664e6c3a 900 `(#:tests? #f)) ;TODO: tests require pytest
cafc3f5a
EB
901 (home-page "http://bitbucket.org/kang/python-keyring-lib")
902 (synopsis "Store and access your passwords safely")
903 (description
904 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 905service from python. It can be used in any application that needs safe
cafc3f5a
EB
906password storage.")
907 ;; "MIT" and PSF dual license
3f641af0 908 (license license:x11)
13f3ff35 909 (properties `((python2-variant . ,(delay python2-keyring))))))
cafc3f5a 910
d7af1069 911(define-public python2-keyring
13f3ff35
EF
912 (let ((base (package-with-python2 (strip-python2-variant python-keyring))))
913 (package
914 (inherit base)
915 (native-inputs `(("python2-setuptools" ,python2-setuptools)
916 ,@(package-native-inputs base))))))
d7af1069 917
a480bc41
EB
918(define-public python-six
919 (package
920 (name "python-six")
b6ab89ef 921 (version "1.10.0")
a480bc41
EB
922 (source
923 (origin
924 (method url-fetch)
b6ab89ef 925 (uri (pypi-uri "six" version))
a480bc41
EB
926 (sha256
927 (base32
b6ab89ef 928 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41
EB
929 (build-system python-build-system)
930 (inputs
931 `(("python-setuptools" ,python-setuptools)))
932 (home-page "http://pypi.python.org/pypi/six/")
933 (synopsis "Python 2 and 3 compatibility utilities")
934 (description
35b9e423 935 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
936functions for smoothing over the differences between the Python versions with
937the goal of writing Python code that is compatible on both Python versions.
35b9e423 938Six supports every Python version since 2.5. It is contained in only one
a480bc41 939Python file, so it can be easily copied into your project.")
3f641af0 940 (license license:x11)))
a480bc41 941
0c20025c
AE
942(define-public python2-six
943 (package-with-python2 python-six))
944
cafc3f5a
EB
945(define-public python-dateutil-2
946 (package
947 (name "python-dateutil")
394b8060 948 (version "2.5.2")
cafc3f5a
EB
949 (source
950 (origin
951 (method url-fetch)
394b8060 952 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
953 (sha256
954 (base32
394b8060 955 "0jrfpcgvgya6hs45dhrd9yiqgdgz9qp9aa07zsw8gqgn8zphff86"))))
cafc3f5a
EB
956 (build-system python-build-system)
957 (inputs
394b8060 958 `(("python-six" ,python-six)))
cafc3f5a
EB
959 (home-page "http://labix.org/python-dateutil")
960 (synopsis "Extensions to the standard datetime module")
961 (description
962 "The dateutil module provides powerful extensions to the standard
963datetime module, available in Python 2.3+.")
3f641af0 964 (license license:bsd-3)
394b8060 965 (properties `((python2-variant . ,(delay python2-dateutil-2))))))
cafc3f5a
EB
966
967(define-public python2-dateutil-2
394b8060
EF
968 (let ((base (package-with-python2 (strip-python2-variant python-dateutil-2))))
969 (package
970 (inherit base)
971 (inputs `(("python2-setuptools" ,python2-setuptools)
972 ,@(package-inputs base))))))
cafc3f5a 973
fc50e9c6
AE
974(define-public python-dateutil
975 (package
976 (name "python-dateutil")
977 (version "1.5") ; last version for python < 3
978 (source
979 (origin
980 (method url-fetch)
cafc3f5a
EB
981 (uri (string-append "http://labix.org/download/python-dateutil/"
982 "python-dateutil-" version ".tar.gz"))
fc50e9c6
AE
983 (sha256
984 (base32
985 "0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
986 (build-system python-build-system)
987 (inputs
988 `(("python-setuptools" ,python-setuptools)))
989 (home-page "http://labix.org/python-dateutil")
cafc3f5a 990 (synopsis "Extensions to the standard datetime module")
fc50e9c6
AE
991 (description
992 "The dateutil module provides powerful extensions to the standard
993datetime module, available in Python 2.3+.")
3f641af0 994 (license license:psfl)))
fc50e9c6
AE
995
996(define-public python2-dateutil
997 (package-with-python2 python-dateutil))
1d08c01f 998
cafc3f5a
EB
999(define-public python-parsedatetime
1000 (package
1001 (name "python-parsedatetime")
eebf6f01 1002 (version "2.1")
cafc3f5a
EB
1003 (source
1004 (origin
1005 (method url-fetch)
eebf6f01 1006 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1007 (sha256
1008 (base32
eebf6f01 1009 "0bdgyw6y3v7bcxlx0p50s8drxsh5bb5cy2afccqr3j90amvpii8p"))))
cafc3f5a
EB
1010 (build-system python-build-system)
1011 (native-inputs
eebf6f01
EF
1012 `(("python-nose" ,python-nose)
1013 ("python-pyicu" ,python-pyicu)))
cafc3f5a
EB
1014 (home-page "http://github.com/bear/parsedatetime/")
1015 (synopsis
1016 "Parse human-readable date/time text")
1017 (description
e881752c 1018 "Parse human-readable date/time text.")
3f641af0 1019 (license license:asl2.0)
eebf6f01 1020 (properties `((python2-variant . ,(delay python2-parsedatetime))))))
cafc3f5a 1021
38b8f9b2 1022(define-public python2-parsedatetime
eebf6f01
EF
1023 (let ((base (package-with-python2 (strip-python2-variant python-parsedatetime))))
1024 (package
1025 (inherit base)
1026 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1027 ,@(package-native-inputs base))))))
38b8f9b2 1028
d072efcb
RW
1029(define-public python-pandas
1030 (package
1031 (name "python-pandas")
7d0c3c8d 1032 (version "0.18.1")
d072efcb
RW
1033 (source
1034 (origin
1b96f069 1035 (method url-fetch)
7d0c3c8d
EF
1036 (uri (string-append
1037 "https://pypi.python.org/packages/11/09/"
1038 "e66eb844daba8680ddff26335d5b4fead77f60f957678243549a8dd4830d/"
1039 "pandas-" version ".tar.gz"))
1b96f069 1040 (sha256
7d0c3c8d 1041 (base32 "1ckpxrvvjj6zxmn68icd9hib8qcpx9b35f6izxnr25br5ilq7r6j"))))
d072efcb 1042 (build-system python-build-system)
d072efcb 1043 (propagated-inputs
42603726
EF
1044 `(("python-numpy" ,python-numpy)))
1045 (inputs
1046 `(("python-pytz" ,python-pytz)
d072efcb
RW
1047 ("python-dateutil" ,python-dateutil-2)))
1048 (native-inputs
7d0c3c8d 1049 `(("python-nose" ,python-nose)))
d072efcb
RW
1050 (home-page "http://pandas.pydata.org")
1051 (synopsis "Data structures for data analysis, time series, and statistics")
1052 (description
1053 "Pandas is a Python package providing fast, flexible, and expressive data
1054structures designed to make working with structured (tabular,
1055multidimensional, potentially heterogeneous) and time series data both easy
1056and intuitive. It aims to be the fundamental high-level building block for
1057doing practical, real world data analysis in Python.")
3f641af0 1058 (license license:bsd-3)
7d0c3c8d 1059 (properties `((python2-variant . ,(delay python2-pandas))))))
d072efcb
RW
1060
1061(define-public python2-pandas
7d0c3c8d
EF
1062 (let ((base (package-with-python2 (strip-python2-variant python-pandas))))
1063 (package
1064 (inherit base)
1065 (native-inputs `(("python2-setuptools" ,python2-setuptools)
dbd40ac1 1066 ,@(package-native-inputs base))))))
d072efcb 1067
cafc3f5a
EB
1068(define-public python-tzlocal
1069 (package
1070 (name "python-tzlocal")
ed80839b 1071 (version "1.2.2")
cafc3f5a
EB
1072 (source
1073 (origin
1074 (method url-fetch)
226d3331 1075 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1076 (sha256
1077 (base32
ed80839b 1078 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1079 (build-system python-build-system)
ed80839b 1080 (inputs `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1081 (home-page "https://github.com/regebro/tzlocal")
1082 (synopsis
35b9e423 1083 "Local timezone information for Python")
cafc3f5a
EB
1084 (description
1085 "Tzlocal returns a tzinfo object with the local timezone information.
1086This module attempts to fix a glaring hole in pytz, that there is no way to
1087get the local timezone information, unless you know the zoneinfo name, and
1088under several distributions that's hard or impossible to figure out.")
3f641af0 1089 (license license:cc0)))
cafc3f5a 1090
1d08c01f
AE
1091(define-public python2-pysqlite
1092 (package
1093 (name "python2-pysqlite")
fe476868 1094 (version "2.8.1")
1d08c01f
AE
1095 (source
1096 (origin
1097 (method url-fetch)
fe476868 1098 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1099 (sha256
1100 (base32
fe476868 1101 "0rm0zqyb363y6wljhfmbxs16jjv7p8nk1d8zgq9sdwj6js7y3jkm"))))
1d08c01f
AE
1102 (build-system python-build-system)
1103 (inputs
1104 `(("sqlite" ,sqlite)))
1105 (arguments
1106 `(#:python ,python-2 ; incompatible with Python 3
1107 #:tests? #f)) ; no test target
fe476868 1108 (home-page "http://github.com/ghaering/pysqlite")
7a03af70 1109 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1110 (description
1111 "Pysqlite provides SQLite bindings for Python that comply to the
1112Database API 2.0T.")
ed0cdf83 1113 (license license:zlib)))
1d08c01f 1114
2875caf5
AE
1115
1116(define-public python2-mechanize
1117 (package
1118 (name "python2-mechanize")
1119 (version "0.2.5")
1120 (source
1121 (origin
1122 (method url-fetch)
1123 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1124 version ".tar.gz"))
1125 (sha256
1126 (base32
1127 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1128 (build-system python-build-system)
1129 (inputs
1130 `(("python2-setuptools" ,python2-setuptools)))
1131 (arguments
1132 `(#:python ,python-2 ; apparently incompatible with Python 3
1133 #:tests? #f))
1134 ;; test fails with message
1135 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1136 ;; (python-3.3.2) or
1137 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1138 ;; (python-2.7.5).
1139 ;; The source code is from March 2011 and probably not up-to-date
1140 ;; with respect to python unit tests.
1141 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1142 (synopsis
1143 "Stateful programmatic web browsing in Python")
1144 (description
1145 "Mechanize implements stateful programmatic web browsing in Python,
1146after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1147 (license (license:non-copyleft
1148 "file://COPYING"
1149 "See COPYING in the distribution."))))
2875caf5 1150
0352532e
AE
1151
1152(define-public python-simplejson
1153 (package
1154 (name "python-simplejson")
988d1bad 1155 (version "3.8.2")
0352532e
AE
1156 (source
1157 (origin
1158 (method url-fetch)
988d1bad 1159 (uri (pypi-uri "simplejson" version))
0352532e
AE
1160 (sha256
1161 (base32
988d1bad 1162 "0zylrnax8b6r0ndgni4w9c599fi6wm9vx5g6k3ddqfj3932kk16m"))))
0352532e
AE
1163 (build-system python-build-system)
1164 (home-page "http://simplejson.readthedocs.org/en/latest/")
1165 (synopsis
1166 "Json library for Python")
1167 (description
e881752c
AK
1168 "JSON (JavaScript Object Notation) is a subset of JavaScript
1169syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1170format.
0352532e
AE
1171
1172Simplejson exposes an API familiar to users of the standard library marshal
1173and pickle modules. It is the externally maintained version of the json
1174library contained in Python 2.6, but maintains compatibility with Python 2.5
1175and (currently) has significant performance advantages, even without using
1176the optional C extension for speedups. Simplejson is also supported on
1177Python 3.3+.")
3f641af0 1178 (license license:x11)))
0352532e
AE
1179
1180(define-public python2-simplejson
1181 (package-with-python2 python-simplejson))
421a80a2
AE
1182
1183
ed07b08d 1184(define-public python-pyicu
421a80a2 1185 (package
ed07b08d 1186 (name "python-pyicu")
d3b29319 1187 (version "1.9.2")
421a80a2
AE
1188 (source
1189 (origin
1190 (method url-fetch)
1191 (uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
1192 version ".tar.gz"))
1193 (sha256
1194 (base32
d3b29319 1195 "1diba0g8md614fvm9yf50paiwdkhj6rd7xwf1rg9mc0pxc0hhn4v"))))
421a80a2
AE
1196 (build-system python-build-system)
1197 (inputs
1198 `(("icu4c" ,icu4c)))
421a80a2 1199 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1200 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1201 (description
1202 "PyICU is a python extension wrapping the ICU C++ API.")
3f641af0 1203 (license license:x11)
ed07b08d
LF
1204 (properties `((python2-variant . ,(delay python2-pyicu))))))
1205
1206(define-public python2-pyicu
1207 (package
1208 (inherit (package-with-python2
1209 (strip-python2-variant python-pyicu)))
1210 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
cc20a22a
LC
1211
1212(define-public python2-dogtail
1213 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1214 ;; spaces in indentation" with Python 3.
1215 (package
1216 (name "python2-dogtail")
1217 (version "0.8.2")
1218 (source (origin
1219 (method url-fetch)
1220 (uri (string-append
1221 "https://fedorahosted.org/released/dogtail/dogtail-"
1222 version ".tar.gz"))
1223 (sha256
1224 (base32
1225 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1226 (build-system python-build-system)
1227 (arguments `(#:python ,python-2
1228 #:tests? #f)) ; invalid command "test"
1229 (home-page "https://fedorahosted.org/dogtail/")
1230 (synopsis "GUI test tool and automation framework written in ​Python")
1231 (description
35b9e423 1232 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1233It uses Accessibility (a11y) technologies to communicate with desktop
1234applications. dogtail scripts are written in Python and executed like any
1235other Python program.")
3f641af0 1236 (license license:gpl2+)))
515e6878 1237
011b18c3
LC
1238(define-public python2-empy
1239 (package
1240 (name "python2-empy")
1241 (version "3.3")
1242 (source (origin
1243 (method url-fetch)
1244 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1245 version ".tar.gz"))
1246 (sha256
1247 (base32
1248 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1249 (build-system python-build-system)
1250 (arguments
1251 `(#:python ,python-2
1252 #:phases (alist-replace
1253 'check
1254 (lambda _
1255 (zero? (system* "./test.sh")))
1256 %standard-phases)))
1257 (home-page "http://www.alcyone.com/software/empy/")
1258 (synopsis "Templating system for Python")
1259 (description
1260 "EmPy is a system for embedding Python expressions and statements in
1261template text; it takes an EmPy source file, processes it, and produces
1262output. This is accomplished via expansions, which are special signals to the
1cd4027c 1263EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1264EmPy can expand arbitrary Python expressions and statements in this way, as
1265well as a variety of special forms. Textual data not explicitly delimited in
1266this way is sent unaffected to the output, allowing Python to be used in
1267effect as a markup language. Also supported are callbacks via hooks,
1268recording and playback via diversions, and dynamic, chainable filters. The
1269system is highly configurable via command line options and embedded
1270commands.")
3f641af0 1271 (license license:lgpl2.1+)))
011b18c3 1272
8deeda0c
LC
1273(define-public python2-element-tree
1274 (package
1275 (name "python2-element-tree")
1276 (version "1.2.6")
1277 (source (origin
1278 (method url-fetch)
1279 (uri (string-append
1280 "http://effbot.org/media/downloads/elementtree-"
1281 version "-20050316.tar.gz"))
1282 (sha256
1283 (base32
1284 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1285 (build-system python-build-system)
1286 (arguments
1287 `(#:python ,python-2 ; seems to be part of Python 3
1288 #:tests? #f)) ; no 'test' sub-command
1289 (synopsis "Toolkit for XML processing in Python")
1290 (description
1291 "ElementTree is a Python library supporting lightweight XML processing.")
1292 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1293 (license (license:x11-style
1294 "http://docs.python.org/2/license.html"
1295 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1296
1297(define-public python2-pybugz
1298 (package
1299 (name "python2-pybugz")
1300 (version "0.6.11")
1301 (source (origin
1302 (method url-fetch)
1303 (uri (string-append
1304 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1305 version ".tar.gz"))
1306 (sha256
1307 (base32
6f194a1e 1308 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1309 (patches (search-patches "pybugz-stty.patch"
1310 "pybugz-encode-error.patch"))))
8deeda0c
LC
1311 (build-system python-build-system)
1312 (arguments
1313 `(#:python ,python-2 ; SyntaxError with Python 3
1314 #:tests? #f)) ; no 'test' sub-command
1315 (inputs `(("element-tree" ,python2-element-tree)))
1316 (synopsis "Python and command-line interface to Bugzilla")
1317 (description
1318 "PyBugz is a Python library and command-line tool to query the Bugzilla
1319bug tracking system. It is meant as an aid to speed up interaction with the
1320bug tracker.")
1321 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1322 (license license:gpl2)))
8deeda0c 1323
a480bc41
EB
1324(define-public python-enum34
1325 (package
1326 (name "python-enum34")
d39ae1e5 1327 (version "1.1.0")
a480bc41
EB
1328 (source
1329 (origin
1330 (method url-fetch)
d39ae1e5 1331 (uri (pypi-uri "enum34" version))
a480bc41
EB
1332 (sha256
1333 (base32
d39ae1e5 1334 "0yx1m4564wxgbm4glb3457hi16xihd9w63rv13y2przkdir9dfgp"))))
a480bc41 1335 (build-system python-build-system)
a480bc41
EB
1336 (arguments
1337 `(#:phases
1338 (alist-replace
1339 'check
1340 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1341 %standard-phases)))
1342 (home-page "https://pypi.python.org/pypi/enum34")
1343 (synopsis "Backported Python 3.4 Enum")
1344 (description
1345 "Enum34 is the new Python stdlib enum module available in Python 3.4
1346backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1347 (license license:bsd-3)))
a480bc41 1348
820acd1b
LF
1349(define-public python2-enum34
1350 (package-with-python2 python-enum34))
1351
a480bc41
EB
1352(define-public python-parse-type
1353 (package
1354 (name "python-parse-type")
1355 (version "0.3.4")
1356 (source
1357 (origin
1358 (method url-fetch)
1359 (uri (string-append "https://pypi.python.org/packages/source/p/"
1360 "parse_type/parse_type-" version ".tar.gz"))
1361 (sha256
1362 (base32
1363 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1364 (build-system python-build-system)
1365 (inputs
1366 `(("python-setuptools" ,python-setuptools)
1367 ("python-six" ,python-six)
68f1cdec 1368 ("python-parse" ,python-parse)))
a480bc41
EB
1369 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1370 (home-page "https://github.com/jenisys/parse_type")
1371 (synopsis "Extended parse module")
1372 (description
1373 "Parse_type extends the python parse module.")
3f641af0 1374 (license license:bsd-3)))
a480bc41
EB
1375
1376(define-public python-parse
1377 (package
1378 (name "python-parse")
eb3d3503 1379 (version "1.6.6")
a480bc41
EB
1380 (source
1381 (origin
1382 (method url-fetch)
eb3d3503 1383 (uri (pypi-uri "parse" version))
a480bc41
EB
1384 (sha256
1385 (base32
eb3d3503 1386 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))))
a480bc41
EB
1387 (build-system python-build-system)
1388 (arguments
1389 `(#:phases
1390 (alist-replace
1391 'check
1392 (lambda _ (zero? (system* "python" "test_parse.py")))
1393 %standard-phases)))
1394 (home-page "https://github.com/r1chardj0n3s/parse")
1395 (synopsis "Parse strings")
1396 (description
1397 "Parse strings using a specification based on the Python format()
1398syntax.")
3f641af0 1399 (license license:x11)))
a480bc41
EB
1400
1401
515e6878
LC
1402(define-public scons
1403 (package
1404 (name "scons")
a3f61425 1405 (version "2.3.4")
515e6878
LC
1406 (source (origin
1407 (method url-fetch)
de67e922
LF
1408 (uri (string-append "mirror://sourceforge/scons/scons/" version
1409 "/scons-" version ".tar.gz"))
515e6878
LC
1410 (sha256
1411 (base32
a3f61425 1412 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1413 (build-system python-build-system)
1414 (arguments
1415 ;; With Python 3.x, fails to build with a syntax error.
1416 `(#:python ,python-2
1417 #:tests? #f)) ; no 'python setup.py test' command
1418 (home-page "http://scons.org/")
1419 (synopsis "Software construction tool written in Python")
1420 (description
1421 "SCons is a software construction tool. Think of SCons as an improved,
1422cross-platform substitute for the classic Make utility with integrated
1423functionality similar to autoconf/automake and compiler caches such as ccache.
1424In short, SCons is an easier, more reliable and faster way to build
1425software.")
3f641af0 1426 (license license:x11)))
011b18c3 1427
c15a5c0e
DT
1428(define-public python-extras
1429 (package
1430 (name "python-extras")
1431 (version "0.0.3")
1432 (source
1433 (origin
1434 (method url-fetch)
1435 (uri (string-append
1436 "https://pypi.python.org/packages/source/e/extras/extras-"
1437 version ".tar.gz"))
1438 (sha256
1439 (base32
1440 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1441 (build-system python-build-system)
1442 (inputs
1443 `(("python-setuptools" ,python-setuptools)))
1444 (arguments
1445 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1446 '(#:tests? #f))
1447 (home-page "https://github.com/testing-cabal/extras")
1448 (synopsis "Useful extensions to the Python standard library")
1449 (description
1450 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1451 (license license:expat)))
c15a5c0e
DT
1452
1453(define-public python2-extras
1454 (package-with-python2 python-extras))
1455
56ea0efd
DT
1456(define-public python-mimeparse
1457 (package
1458 (name "python-mimeparse")
1459 (version "0.1.4")
1460 (source
1461 (origin
1462 (method url-fetch)
1463 (uri (string-append
1464 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1465 version ".tar.gz"))
1466 (sha256
1467 (base32
1468 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1469 (build-system python-build-system)
1470 (inputs
1471 `(("python-setuptools" ,python-setuptools)))
1472 (arguments
1473 '(#:tests? #f)) ; no setup.py test command
1474 (home-page
1475 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1476 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1477 (description
1478 "Mimeparse provides basic functions for parsing MIME type names and
1479matching them against a list of media-ranges.")
bd3fa666 1480 (license license:expat)))
56ea0efd
DT
1481
1482(define-public python2-mimeparse
1483 (package-with-python2 python-mimeparse))
1484
4435427e
DT
1485(define-public python-nose
1486 (package
1487 (name "python-nose")
f7cb9841 1488 (version "1.3.7")
4435427e
DT
1489 (source
1490 (origin
1491 (method url-fetch)
f7cb9841 1492 (uri (pypi-uri "nose" version))
4435427e
DT
1493 (sha256
1494 (base32
f7cb9841 1495 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e
DT
1496 (build-system python-build-system)
1497 (inputs
1498 `(("python-setuptools" ,python-setuptools)))
1499 (arguments
1500 '(#:tests? #f)) ; FIXME: test suite fails
1501 (home-page "http://readthedocs.org/docs/nose/")
1502 (synopsis "Python testing library")
1503 (description
1504 "Nose extends the unittest library to make testing easier.")
3f641af0 1505 (license license:lgpl2.0+)))
4435427e
DT
1506
1507(define-public python2-nose
1508 (package-with-python2 python-nose))
1509
6cd9c356
DT
1510(define-public python-unittest2
1511 (package
1512 (name "python-unittest2")
1513 (version "0.5.1")
1514 (source
1515 (origin
1516 (method url-fetch)
1517 (uri (string-append
1518 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1519 version ".tar.gz"))
1520 (sha256
1521 (base32
1522 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1523 (build-system python-build-system)
1524 (inputs
1525 `(("python-setuptools" ,python-setuptools)))
1526 (home-page "http://pypi.python.org/pypi/unittest2")
1527 (synopsis "Python unit testing library")
1528 (description
1529 "Unittest2 is a replacement for the unittest module in the Python
1530standard library.")
3f641af0 1531 (license license:psfl)))
6cd9c356
DT
1532
1533(define-public python2-unittest2
1534 (package (inherit python-unittest2)
1535 (name "python2-unittest2")
1536 (version "0.5.1")
1537 (source
1538 (origin
1539 (method url-fetch)
1540 (uri (string-append
1541 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1542 version ".tar.gz"))
1543 (sha256
1544 (base32
1545 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
1546 (inputs
7957fe6c 1547 `(("python2-setuptools" ,python2-setuptools)))
6cd9c356
DT
1548 (arguments
1549 `(#:python ,python-2
1550 #:tests? #f)))) ; no setup.py test command
1551
542ad60f
DT
1552(define-public python-py
1553 (package
1554 (name "python-py")
71c8a804 1555 (version "1.4.31")
542ad60f
DT
1556 (source
1557 (origin
1558 (method url-fetch)
71c8a804 1559 (uri (pypi-uri "py" version))
542ad60f
DT
1560 (sha256
1561 (base32
71c8a804 1562 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f
DT
1563 (build-system python-build-system)
1564 (inputs
1565 `(("python-setuptools" ,python-setuptools)))
1566 (home-page "http://pylib.readthedocs.org/")
1567 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1568 (description
1569 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1570code introspection, and logging.")
bd3fa666 1571 (license license:expat)))
542ad60f
DT
1572
1573(define-public python2-py
1574 (package-with-python2 python-py))
1575
855d4761
DT
1576(define-public python-pytest
1577 (package
1578 (name "python-pytest")
61a4332d 1579 (version "2.7.3")
855d4761
DT
1580 (source
1581 (origin
1582 (method url-fetch)
1583 (uri (string-append
1584 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1585 version ".tar.gz"))
1586 (sha256
1587 (base32
61a4332d 1588 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1589 (modules '((guix build utils)))
1590 (snippet
1591 ;; One of the tests involves the /usr directory, so it fails.
1592 '(substitute* "testing/test_argcomplete.py"
1593 (("def test_remove_dir_prefix\\(self\\):")
1594 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1595 (build-system python-build-system)
1596 (inputs
1597 `(("python-setuptools" ,python-setuptools)
1598 ("python-py" ,python-py)
1599 ("python-nose" ,python-nose)
1600 ("python-mock" ,python-mock)))
1601 (home-page "http://pytest.org")
1602 (synopsis "Python testing library")
1603 (description
1604 "Pytest is a testing tool that provides auto-discovery of test modules
1605and functions, detailed info on failing assert statements, modular fixtures,
1606and many external plugins.")
bd3fa666 1607 (license license:expat)))
855d4761
DT
1608
1609(define-public python2-pytest
1610 (package-with-python2 python-pytest))
1611
358c3d61
EF
1612(define-public python-pytest-cov
1613 (package
1614 (name "python-pytest-cov")
545f4a1c 1615 (version "2.2.1")
358c3d61
EF
1616 (source
1617 (origin
1618 (method url-fetch)
1619 (uri (pypi-uri "pytest-cov" version))
1620 (sha256
545f4a1c
EF
1621 (base32
1622 "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
10468636 1623 (build-system python-build-system)
545f4a1c 1624 (inputs
10468636
EF
1625 `(("python-coverage" ,python-coverage)
1626 ("python-pytest" ,python-pytest)))
10468636
EF
1627 (home-page "https://github.com/pytest-dev/pytest-cov")
1628 (synopsis "Pytest plugin for measuring coverage")
1629 (description
1630 "Pytest-cov produces coverage reports. It supports centralised testing and
1631distributed testing in both @code{load} and @code{each} modes. It also
1632supports coverage of subprocesses.")
545f4a1c
EF
1633 (license license:expat)
1634 (properties `((python2-variant . ,(delay python2-pytest-cov))))))
358c3d61
EF
1635
1636(define-public python2-pytest-cov
545f4a1c
EF
1637 (let ((base (package-with-python2 (strip-python2-variant python-pytest-cov))))
1638 (package
1639 (inherit base)
1640 (inputs `(("python2-setuptools" ,python2-setuptools)
1641 ,@(package-inputs base))))))
358c3d61 1642
6784f2e3
RW
1643(define-public python-pytest-runner
1644 (package
1645 (name "python-pytest-runner")
1646 (version "2.6.2")
1647 (source
1648 (origin
1649 (method url-fetch)
54cd239b 1650 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
1651 (sha256
1652 (base32
1653 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1654 (build-system python-build-system)
1655 (arguments
1656 `(#:phases
1657 (modify-phases %standard-phases
1658 ;; The fancy way of setting the version with setuptools_scm does not
1659 ;; seem to work here.
1660 (add-after 'unpack 'set-version
1661 (lambda _
1662 (substitute* "docs/conf.py"
1663 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1664 (string-append "version = \"" ,version "\"")))
1665 #t)))))
1666 (native-inputs
1667 `(("python-pytest" ,python-pytest)
1668 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 1669 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
1670 (synopsis "Invoke py.test as a distutils command")
1671 (description
1672 "This package provides a @command{pytest-runner} command that
1673@file{setup.py} files can use to run tests.")
54cd239b
EF
1674 (license license:expat)
1675 (properties `((python2-variant . ,(delay python2-pytest-runner))))))
1676
1677(define-public python2-pytest-runner
1678 (let ((base (package-with-python2
1679 (strip-python2-variant python-pytest-runner))))
1680 (package
1681 (inherit base)
1682 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1683 ,@(package-native-inputs base))))))
6784f2e3
RW
1684
1685(define-public python2-pytest-runner
1686 (package-with-python2 python-pytest-runner))
1687
44547e51
EF
1688(define-public python-pytest-mock
1689 (package
1690 (name "python-pytest-mock")
1691 (version "1.2")
1692 (source
1693 (origin
1694 (method url-fetch)
1695 (uri (pypi-uri "pytest-mock" version ".zip"))
1696 (sha256
1697 (base32
1698 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
1699 (build-system python-build-system)
1700 (native-inputs
1701 `(("unzip" ,unzip)))
1702 (inputs
1703 `(("python-py" ,python-py)
1704 ("python-pytest" ,python-pytest)))
1705 (home-page "https://github.com/pytest-dev/pytest-mock/")
1706 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
1707 (description
1708 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
1709around the patching API provided by the @code{mock} package, but with the
1710benefit of not having to worry about undoing patches at the end of a test.
1711The mocker fixture has the same API as @code{mock.patch}, supporting the
1712same arguments.")
1713 (properties `((python2-variant . ,(delay python2-pytest-mock))))
1714 (license license:expat)))
1715
1716(define-public python2-pytest-mock
1717 (let ((base (package-with-python2
1718 (strip-python2-variant python-pytest-mock))))
1719 (package (inherit base)
1720 (native-inputs
1721 `(("python2-setuptools" ,python2-setuptools)
1722 ,@(package-native-inputs base)))
1723 (inputs
1724 `(("python2-mock" ,python2-mock)
1725 ,@(package-inputs base))))))
1726
8fa58fc9
CAW
1727(define-public python-pytest-xdist
1728 (package
1729 (name "python-pytest-xdist")
1730 (version "1.14")
1731 (source
1732 (origin
1733 (method url-fetch)
1734 (uri (pypi-uri "pytest-xdist" version ".zip"))
1735 (sha256
1736 (base32
1737 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))))
1738 (build-system python-build-system)
1739 (native-inputs
1740 `(("unzip" ,unzip)
8fa58fc9 1741 ("python-setuptools-scm" ,python-setuptools-scm)))
fbe9abcc
EF
1742 (inputs
1743 `(("python-apipkg" ,python-apipkg)
1744 ("python-execnet" ,python-execnet)
8fa58fc9
CAW
1745 ("python-pytest" ,python-pytest)
1746 ("python-py" ,python-py)))
1747 (home-page
1748 "https://github.com/pytest-dev/pytest-xdist")
1749 (synopsis
1750 "Plugin for py.test with distributed testing and loop-on-failing modes")
1751 (description
1752 "The pytest-xdist plugin extends py.test with some unique test execution
1753modes: parallelization, running tests in boxed subprocesses, the ability
1754to run tests repeatedly when failed, and the ability to run tests on multiple
1755Python interpreters or platforms. It uses rsync to copy the existing
1756program code to a remote location, executes there, and then syncs the
1757result back.")
fbe9abcc
EF
1758 (license license:expat)
1759 (properties `((python2-variant . ,(delay python2-pytest-xdist))))))
8fa58fc9
CAW
1760
1761(define-public python2-pytest-xdist
fbe9abcc
EF
1762 (let ((base (package-with-python2
1763 (strip-python2-variant python-pytest-xdist))))
1764 (package
1765 (inherit base)
1766 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1767 ,@(package-native-inputs base))))))
8fa58fc9 1768
84d24017
DT
1769(define-public python-scripttest
1770 (package
1771 (name "python-scripttest")
1772 (version "1.3")
1773 (source
1774 (origin
1775 (method url-fetch)
1776 (uri (string-append
1777 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
1778 version ".tar.gz"))
1779 (sha256
1780 (base32
1781 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
1782 (build-system python-build-system)
1783 (inputs
1784 `(("python-setuptools" ,python-setuptools)
1785 ("python-pytest" ,python-pytest)))
1786 (home-page "http://pythonpaste.org/scripttest/")
1787 (synopsis "Python library to test command-line scripts")
1788 (description "Scripttest is a Python helper library for testing
1789interactive command-line applications. With it you can run a script in a
1790subprocess and see the output as well as any file modifications.")
bd3fa666 1791 (license license:expat)))
84d24017
DT
1792
1793(define-public python2-scripttest
1794 (package-with-python2 python-scripttest))
1795
d8fa80e1
DT
1796(define-public python-testtools
1797 (package
1798 (name "python-testtools")
1799 (version "1.0.0")
1800 (source
1801 (origin
1802 (method url-fetch)
1803 (uri (string-append
1804 "https://pypi.python.org/packages/source/t/testtools/testtools-"
1805 version ".tar.gz"))
1806 (sha256
1807 (base32
1808 "1dyml28ykpl5jb9khdmcdvhy1cxqingys6qvj2k04fzlaj6z3bbx"))))
1809 (build-system python-build-system)
0e88cbf8
CR
1810 (propagated-inputs
1811 `(("python-mimeparse" ,python-mimeparse)))
d8fa80e1
DT
1812 (inputs
1813 `(("python-setuptools" ,python-setuptools)
d8fa80e1
DT
1814 ("python-extras" ,python-extras)))
1815 (home-page "https://github.com/testing-cabal/testtools")
1816 (synopsis
1817 "Extensions to the Python standard library unit testing framework")
1818 (description
1819 "Testtools extends the Python standard library unit testing framework to
1820provide matchers, more debugging information, and cross-Python
1821compatibility.")
3f641af0 1822 (license license:psfl)))
d8fa80e1
DT
1823
1824(define-public python2-testtools
1825 (package-with-python2 python-testtools))
1826
5bf3afea
DT
1827(define-public python-testscenarios
1828 (package
1829 (name "python-testscenarios")
1830 (version "0.4")
1831 (source
1832 (origin
1833 (method url-fetch)
1834 (uri (string-append
1835 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
1836 version ".tar.gz"))
1837 (sha256
1838 (base32
1839 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
1840 (build-system python-build-system)
1841 (inputs
1842 `(("python-setuptools" ,python-setuptools)
1843 ("python-testtools" ,python-testtools)
1844 ("python-mimeparse" ,python-mimeparse)))
1845 (home-page "https://launchpad.net/testscenarios")
1846 (synopsis "Pyunit extension for dependency injection")
1847 (description
1848 "Testscenarios provides clean dependency injection for Python unittest
1849style tests.")
3f641af0 1850 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
1851
1852(define-public python2-testscenarios
1853 (package-with-python2 python-testscenarios))
1854
dac79ecc
DT
1855(define-public python-testresources
1856 (package
1857 (name "python-testresources")
1858 (version "0.2.7")
1859 (source
1860 (origin
1861 (method url-fetch)
1862 (uri (string-append
1863 "https://pypi.python.org/packages/source/t/testresources/testresources-"
1864 version ".tar.gz"))
1865 (sha256
1866 (base32
1867 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
1868 (build-system python-build-system)
1869 (inputs
1870 `(("python-setuptools" ,python-setuptools)))
1871 (home-page "https://launchpad.net/testresources")
1872 (synopsis
1873 "Pyunit extension for managing test resources")
1874 (description
1875 "Testresources is an extension to Python's unittest to allow declarative
1876use of resources by test cases.")
3f641af0 1877 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
1878
1879(define-public python2-testresources
1880 (package-with-python2 python-testresources))
1881
070ab058
DT
1882(define-public python-subunit
1883 (package
1884 (name "python-subunit")
1885 (version "0.0.21")
1886 (source
1887 (origin
1888 (method url-fetch)
1889 (uri (string-append
1890 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
1891 version ".tar.gz"))
1892 (sha256
1893 (base32
1894 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
1895 (build-system python-build-system)
1896 (inputs
1897 `(("python-setuptools" ,python-setuptools)
1898 ("python-testtools" ,python-testtools)
1899 ("python-mimeparse" ,python-mimeparse)
1900 ("python-testscenarios" ,python-testscenarios)))
1901 (home-page "http://launchpad.net/subunit")
1902 (synopsis "Python implementation of the subunit protocol")
1903 (description
1904 "Python-subunit is a Python implementation of the subunit test streaming
1905protocol.")
3f641af0 1906 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
1907
1908(define-public python2-subunit
1909 (package-with-python2 python-subunit))
1910
7787ef76
CR
1911;; Recent versions of python-fixtures need a recent version of python-pbr,
1912;; which needs a recent version of python-fixtures. To fix this circular
1913;; dependency, we keep old versions of python-fixtures and python-pbr to
1914;; bootstrap the whole thing:
1915;; - python-fixtures-0.3.16 is used to build python-pbr-0.11
1916;; - python-pbr-0.11 is used to build python-fixtures
1917;; - python-fixtures is used to build python-pbr
1918(define-public python-fixtures-0.3.16
cd49454b
DT
1919 (package
1920 (name "python-fixtures")
1921 (version "0.3.16")
1922 (source
1923 (origin
1924 (method url-fetch)
1925 (uri (string-append
1926 "https://pypi.python.org/packages/source/f/fixtures/fixtures-"
1927 version ".tar.gz"))
1928 (sha256
1929 (base32
1930 "0x9r2gwilcig5g54k60bxzg96zabizq1855lrprlb4zckalp9asc"))))
1931 (build-system python-build-system)
1932 (inputs
1933 `(("python-setuptools" ,python-setuptools)))
1934 (arguments
1935 '(#:tests? #f)) ; no setup.py test command
1936 (home-page "https://launchpad.net/python-fixtures")
1937 (synopsis "Python test fixture library")
1938 (description
1939 "Fixtures provides a way to create reusable state, useful when writing
1940Python tests.")
3f641af0 1941 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
cd49454b 1942
7787ef76
CR
1943(define-public python2-fixtures-0.3.16
1944 (package-with-python2 python-fixtures-0.3.16))
1945
1946(define-public python-pbr-0.11
1947 (package
1948 (name "python-pbr")
1949 (version "0.11.0")
1950 (source
1951 (origin
1952 (method url-fetch)
1953 (uri (string-append
1954 "https://pypi.python.org/packages/source/p/pbr/pbr-"
1955 version ".tar.gz"))
1956 (sha256
1957 (base32
1958 "0v9gb7gyqf7q9s99l0nnjj9ww9b0jvyqlwm4d56pcyinxydddw6p"))))
1959 (build-system python-build-system)
1960 (arguments
1961 `(#:tests? #f)) ;; Most tests seem to use the Internet.
1962 (inputs
1963 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
1964 ("python-pip" ,python-pip)
1965 ("python-setuptools" ,python-setuptools)))
1966 (home-page "https://launchpad.net/pbr")
1967 (synopsis "Change the default behavior of Python’s setuptools")
1968 (description
1969 "Python Build Reasonableness (PBR) is a library that injects some useful
1970and sensible default behaviors into your setuptools run.")
3f641af0 1971 (license license:asl2.0)))
7787ef76
CR
1972
1973(define-public python2-pbr-0.11
1974 (package-with-python2 python-pbr-0.11))
1975
1ef09c0c 1976(define-public python-pbr
e25f0174
BW
1977 (package
1978 (name "python-pbr")
1ef09c0c
BW
1979 (version "1.8.1")
1980 (source
e25f0174
BW
1981 (origin
1982 (method url-fetch)
1983 (uri (string-append
1984 "https://pypi.python.org/packages/source/p/pbr/pbr-"
1985 version
1986 ".tar.gz"))
1987 (sha256
1988 (base32
1989 "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2"))))
1ef09c0c 1990 (build-system python-build-system)
e25f0174
BW
1991 (arguments
1992 `(#:tests? #f)) ;; Most tests seem to use the Internet.
1993 (propagated-inputs
1994 `(("python-testrepository" ,python-testrepository)
1995 ("git" ,git))) ;; pbr actually uses the "git" binary.
1ef09c0c 1996 (inputs
e25f0174
BW
1997 `(("python-fixtures" ,python-fixtures)
1998 ("python-mimeparse" ,python-mimeparse)
1999 ("python-mock" ,python-mock)
2000 ("python-setuptools" ,python-setuptools)
2001 ("python-six" ,python-six)
2002 ("python-sphinx" ,python-sphinx)
2003 ("python-testrepository" ,python-testrepository)
2004 ("python-testresources" ,python-testresources)
2005 ("python-testscenarios" ,python-testscenarios)
2006 ("python-testtools" ,python-testtools)
2007 ("python-virtualenv" ,python-virtualenv)))
2008 (home-page "https://launchpad.net/pbr")
2009 (synopsis "Change the default behavior of Python’s setuptools")
2010 (description
2011 "Python Build Reasonableness (PBR) is a library that injects some useful
2012and sensible default behaviors into your setuptools run.")
3f641af0 2013 (license license:asl2.0)))
1ef09c0c
BW
2014
2015(define-public python2-pbr
e25f0174 2016 (package-with-python2 python-pbr))
1ef09c0c 2017
7787ef76
CR
2018(define-public python-fixtures
2019 (package
2020 (name "python-fixtures")
13fcc6df 2021 (version "1.4.0")
7787ef76
CR
2022 (source
2023 (origin
2024 (method url-fetch)
13fcc6df 2025 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2026 (sha256
2027 (base32
13fcc6df 2028 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76
CR
2029 (build-system python-build-system)
2030 (propagated-inputs
2031 `(("python-six" ,python-six)
2032 ("python-pbr-0.11" ,python-pbr-0.11)))
2033 (inputs
2034 `(("python-pip" ,python-pip)
2035 ("python-setuptools" ,python-setuptools)
2036 ;; Tests
2037 ("python-testtools" ,python-testtools)))
2038 (arguments
2039 '(#:tests? #f)) ; no setup.py test command
2040 (home-page "https://launchpad.net/python-fixtures")
2041 (synopsis "Python test fixture library")
2042 (description
2043 "Fixtures provides a way to create reusable state, useful when writing
2044Python tests.")
3f641af0 2045 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2046
cd49454b
DT
2047(define-public python2-fixtures
2048 (package-with-python2 python-fixtures))
2049
b24a0c00
DT
2050(define-public python-testrepository
2051 (package
2052 (name "python-testrepository")
2053 (version "0.0.20")
2054 (source
2055 (origin
2056 (method url-fetch)
2057 (uri (string-append
2058 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2059 version ".tar.gz"))
2060 (sha256
2061 (base32
2062 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2063 (build-system python-build-system)
05de40c5 2064 (propagated-inputs
7787ef76 2065 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
05de40c5 2066 ("python-testtools" ,python-testtools)))
b24a0c00
DT
2067 (inputs
2068 `(("python-setuptools" ,python-setuptools)
b24a0c00 2069 ("python-subunit" ,python-subunit)
b24a0c00
DT
2070 ("python-mimeparse" ,python-mimeparse)))
2071 (home-page "https://launchpad.net/testrepository")
2072 (synopsis "Database for Python test results")
2073 (description "Testrepository provides a database of test results which can
2074be used as part of a developer's workflow to check things such as what tests
2075have failed since the last commit or what tests are currently failing.")
3f641af0 2076 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2077
2078(define-public python2-testrepository
2079 (package-with-python2 python-testrepository))
2080
243a009a
DT
2081(define-public python-coverage
2082 (package
2083 (name "python-coverage")
4d4cf3dd 2084 (version "4.1")
243a009a
DT
2085 (source
2086 (origin
2087 (method url-fetch)
82a3c582 2088 (uri (pypi-uri "coverage" version))
243a009a
DT
2089 (sha256
2090 (base32
4d4cf3dd 2091 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a
DT
2092 (build-system python-build-system)
2093 (inputs
2094 `(("python-setuptools" ,python-setuptools)))
2095 (home-page "http://nedbatchelder.com/code/coverage")
2096 (synopsis "Code coverage measurement for Python")
2097 (description
2098 "Coverage measures code coverage, typically during test execution. It
2099uses the code analysis tools and tracing hooks provided in the Python standard
2100library to determine which lines are executable, and which have been
2101executed.")
3f641af0 2102 (license license:bsd-3)))
243a009a
DT
2103
2104(define-public python2-coverage
2105 (package-with-python2 python-coverage))
2106
041358fb
DT
2107(define-public python-discover
2108 (package
2109 (name "python-discover")
2110 (version "0.4.0")
2111 (source
2112 (origin
2113 (method url-fetch)
2114 (uri (string-append
2115 "https://pypi.python.org/packages/source/d/discover/discover-"
2116 version ".tar.gz"))
2117 (sha256
2118 (base32
2119 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2120 (build-system python-build-system)
2121 (inputs
2122 `(("python-setuptools" ,python-setuptools)))
2123 (home-page "http://pypi.python.org/pypi/discover/")
2124 (synopsis
2125 "Python test discovery for unittest")
2126 (description
2127 "Discover provides test discovery for unittest, a feature that has been
e881752c 2128backported from Python 2.7 for Python 2.4+.")
3f641af0 2129 (license license:bsd-3)))
041358fb
DT
2130
2131(define-public python2-discover
2132 (package-with-python2 python-discover))
2133
a480bc41
EB
2134(define-public behave
2135 (package
2136 (name "behave")
287cfd1a 2137 (version "1.2.5")
a480bc41
EB
2138 (source (origin
2139 (method url-fetch)
287cfd1a 2140 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2141 (sha256
2142 (base32
287cfd1a 2143 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41
EB
2144 (build-system python-build-system)
2145 (inputs
2146 `(("python-setuptools" ,python-setuptools)
2147 ("python-six" ,python-six)
a480bc41
EB
2148 ("python-parse" ,python-parse)
2149 ("python-parse-type" ,python-parse-type)))
2150 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2151 ;PyHamcrest>=1.8
2152 (home-page "http://github.com/behave/behave")
2153 (synopsis "Python behavior-driven development")
2154 (description
2155 "Behave is a tool for behavior-driven development in python.
2156Behavior-driven development (or BDD) is an agile software development
2157technique that encourages collaboration between developers, QA and
2158non-technical or business participants in a software project. Behave uses
2159tests written in a natural language style, backed up by Python code.")
3f641af0 2160 (license license:x11)))
c7303d3c
DT
2161
2162(define-public python-exif-read
2163 (package
2164 (name "python-exif-read")
2a2d0981 2165 (version "2.1.2")
c7303d3c
DT
2166 (source (origin
2167 (method url-fetch)
2a2d0981 2168 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2169 (sha256
2170 (base32
2a2d0981 2171 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c
DT
2172 (build-system python-build-system)
2173 (inputs
2174 `(("python-setuptools" ,python-setuptools)))
2175 (arguments `(#:tests? #f)) ; no tests
2176 (home-page "https://github.com/ianare/exif-py")
2177 (synopsis "Python library to extract EXIF data from image files")
2178 (description
2179 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2180files.")
3f641af0 2181 (license license:bsd-3)))
c7303d3c
DT
2182
2183(define-public python2-exif-read
2184 (package-with-python2 python-exif-read))
d5f89b22
DT
2185
2186(define-public python-pyld
2187 (package
2188 (name "python-pyld")
af1ab773 2189 (version "0.6.8")
d5f89b22
DT
2190 (source (origin
2191 (method url-fetch)
af1ab773 2192 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2193 (sha256
2194 (base32
af1ab773 2195 "0k881ffazpf8q1z8862g4bb3pzwpnz9whrci2mf311mvn1qbyqad"))))
d5f89b22
DT
2196 (build-system python-build-system)
2197 (inputs
2198 `(("python-setuptools" ,python-setuptools)))
2199 (arguments `(#:tests? #f)) ; no tests
2200 (home-page "http://github.com/digitalbazaar/pyld")
2201 (synopsis "Python implementation of the JSON-LD specification")
2202 (description
2203 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2204 (license license:bsd-3)))
d5f89b22
DT
2205
2206(define-public python2-pyld
2207 (package-with-python2 python-pyld))
3a1f9a68
DT
2208
2209(define-public python-certifi
2210 (package
2211 (name "python-certifi")
9a41f443 2212 (version "2015.11.20.1")
3a1f9a68
DT
2213 (source (origin
2214 (method url-fetch)
9a41f443 2215 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2216 (sha256
2217 (base32
9a41f443 2218 "05lgwf9rz1kn465azy2bpb3zmpnsn9gkypbhnjlclchv98ssgc1h"))))
3a1f9a68
DT
2219 (build-system python-build-system)
2220 (inputs
2221 `(("python-setuptools" ,python-setuptools)))
2222 (arguments `(#:tests? #f)) ; no tests
2223 (home-page "http://python-requests.org/")
2224 (synopsis "Python CA certificate bundle")
2225 (description
2226 "Certifi is a Python library that contains a CA certificate bundle, which
2227is used by the Requests library to verify HTTPS requests.")
3f641af0 2228 (license license:asl2.0)))
3a1f9a68
DT
2229
2230(define-public python2-certifi
2231 (package-with-python2 python-certifi))
e6cfbd36 2232
12c270dd
RW
2233(define-public python-click
2234 (package
2235 (name "python-click")
43accb58 2236 (version "6.6")
12c270dd
RW
2237 (source
2238 (origin
2239 (method url-fetch)
43accb58
LF
2240 (uri (string-append
2241 "https://pypi.python.org/packages/"
2242 "7a/00/c14926d8232b36b08218067bcd5853caefb4737cda3f0a47437151344792/"
2243 "click-" version ".tar.gz"))
12c270dd 2244 (sha256
43accb58
LF
2245 (base32
2246 "1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc"))))
12c270dd
RW
2247 (build-system python-build-system)
2248 (native-inputs
2249 `(("python-setuptools" ,python-setuptools)))
2250 (home-page "http://click.pocoo.org")
2251 (synopsis "Command line library for Python")
2252 (description
2253 "Click is a Python package for creating command line interfaces in a
2254composable way with as little code as necessary. Its name stands for
2255\"Command Line Interface Creation Kit\". It's highly configurable but comes
2256with sensible defaults out of the box.")
3f641af0 2257 (license license:bsd-3)))
12c270dd
RW
2258
2259(define-public python2-click
2260 (package-with-python2 python-click))
2261
addc808d
EF
2262(define-public python-wheel
2263 (package
2264 (name "python-wheel")
40981b5c 2265 (version "0.29.0")
e1ba0749
EF
2266 (source
2267 (origin
2268 (method url-fetch)
2269 (uri (pypi-uri "wheel" version))
2270 (sha256
2271 (base32
40981b5c 2272 "0j0n38hg1jvrmyy68f9ikvzq1gs9g0sx4ws7maf8wi3bwbbqmfqy"))))
e1ba0749
EF
2273 (build-system python-build-system)
2274 (native-inputs
2275 `(("python-setuptools" ,python-setuptools)
2276 ("python-jsonschema" ,python-jsonschema)
2277 ("python-pytest-cov" ,python-pytest-cov)))
2278 (home-page "https://bitbucket.org/pypa/wheel/")
2279 (synopsis "Format for built Python packages")
2280 (description
2281 "A wheel is a ZIP-format archive with a specially formatted filename and
2282the @code{.whl} extension. It is designed to contain all the files for a PEP
2283376 compatible install in a way that is very close to the on-disk format. Many
2284packages will be properly installed with only the @code{Unpack} step and the
2285unpacked archive preserves enough information to @code{Spread} (copy data and
2286scripts to their final locations) at any later time. Wheel files can be
2287installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2288 (license license:expat)
2289 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2290
2291(define-public python2-wheel
8ad4ae20
LF
2292 (let ((wheel (package-with-python2
2293 (strip-python2-variant python-wheel))))
264ae686 2294 (package (inherit wheel)
8ad4ae20
LF
2295 (native-inputs `(("python2-functools32" ,python2-functools32)
2296 ,@(package-native-inputs wheel))))))
2297
addc808d 2298
ae641128 2299(define-public python-requests
e6cfbd36 2300 (package
ae641128 2301 (name "python-requests")
74a066f9 2302 (version "2.9.1")
e6cfbd36
DT
2303 (source (origin
2304 (method url-fetch)
5d691657 2305 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2306 (sha256
2307 (base32
74a066f9 2308 "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5"))))
e6cfbd36 2309 (build-system python-build-system)
5d691657 2310 (native-inputs
6a308947
EF
2311 `(("python-setuptools" ,python-setuptools)
2312 ("python-py" ,python-py)
5d691657
EF
2313 ("python-pytest" ,python-pytest)
2314 ("python-pytest-cov" ,python-pytest-cov)
2315 ("python-wheel" ,python-wheel)))
e6cfbd36
DT
2316 (home-page "http://python-requests.org/")
2317 (synopsis "Python HTTP library")
2318 (description
2319 "Requests is a Python HTTP client library. It aims to be easier to use
2320than Python’s urllib2 library.")
3f641af0 2321 (license license:asl2.0)))
864b5211 2322
e9005180
DT
2323;; Some software requires an older version of Requests, notably Docker
2324;; Compose.
2325(define-public python-requests-2.7
2326 (package (inherit python-requests)
2327 (version "2.7.0")
2328 (source (origin
2329 (method url-fetch)
2330 (uri (pypi-uri "requests" version))
2331 (sha256
2332 (base32
2333 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2334
ae641128 2335(define-public python2-requests
8ad4ae20 2336 (package-with-python2 python-requests))
ae641128 2337
ea521b42
DT
2338(define-public python-vcversioner
2339 (package
2340 (name "python-vcversioner")
2341 (version "2.14.0.0")
2342 (source
2343 (origin
2344 (method url-fetch)
2345 (uri (pypi-uri "vcversioner" version))
2346 (sha256
2347 (base32
2348 "11ivq1bm7v0yb4nsfbv9m7g7lyjn112gbvpjnjz8nv1fx633dm5c"))))
2349 (build-system python-build-system)
2350 (inputs
2351 `(("python-setuptools" ,python-setuptools)))
2352 (synopsis "Python library for version number discovery")
2353 (description "Vcversioner is a Python library that inspects tagging
2354information in a variety of version control systems in order to discover
2355version numbers.")
2356 (home-page "https://github.com/habnabit/vcversioner")
3f641af0 2357 (license license:isc)))
ea521b42
DT
2358
2359(define-public python2-vcversioner
2360 (package-with-python2 python-vcversioner))
ae641128 2361
864b5211
DT
2362(define-public python-jsonschema
2363 (package
2364 (name "python-jsonschema")
b3667afb 2365 (version "2.5.1")
864b5211
DT
2366 (source (origin
2367 (method url-fetch)
2368 (uri
2369 (string-append
2370 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2371 version ".tar.gz"))
2372 (sha256
2373 (base32
b3667afb 2374 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211
DT
2375 (build-system python-build-system)
2376 (inputs
b3667afb
DT
2377 `(("python-setuptools" ,python-setuptools)
2378 ("python-vcversioner" ,python-vcversioner)))
864b5211
DT
2379 (home-page "http://github.com/Julian/jsonschema")
2380 (synopsis "Implementation of JSON Schema for Python")
2381 (description
2382 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2383 (license license:expat)
2384 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2385
2386(define-public python2-jsonschema
a14600ec
LF
2387 (let ((jsonschema (package-with-python2
2388 (strip-python2-variant python-jsonschema))))
264ae686
EF
2389 (package (inherit jsonschema)
2390 (inputs
2391 `(("python2-functools32" ,python2-functools32)
2392 ,@(package-inputs jsonschema))))))
850189b8
DT
2393
2394(define-public python-unidecode
2395 (package
2396 (name "python-unidecode")
8925d4f3 2397 (version "0.04.18")
850189b8
DT
2398 (source (origin
2399 (method url-fetch)
8925d4f3 2400 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2401 (sha256
2402 (base32
8925d4f3 2403 "12hhblqy1ajvidm38im4171x4arg83pfmziyn53nizp29p3m14gi"))))
850189b8
DT
2404 (build-system python-build-system)
2405 (inputs
2406 `(("python-setuptools" ,python-setuptools)))
2407 (home-page "https://pypi.python.org/pypi/Unidecode")
2408 (synopsis "ASCII transliterations of Unicode text")
2409 (description
2410 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2411useful when integrating with legacy code that doesn't support Unicode, or for
2412ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2413machine identifiers from human-readable Unicode strings that should still be
2414somewhat intelligeble.")
3f641af0 2415 (license license:gpl2+)))
850189b8
DT
2416
2417(define-public python2-unidecode
2418 (package-with-python2 python-unidecode))
6d45fef4
DT
2419
2420(define-public python-pyjwt
2421 (package
2422 (name "python-pyjwt")
eb31d4b4 2423 (version "1.4.0")
6d45fef4
DT
2424 (source
2425 (origin
2426 (method url-fetch)
eb31d4b4 2427 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2428 (sha256
2429 (base32
eb31d4b4 2430 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2431 (build-system python-build-system)
eb31d4b4
EF
2432 (native-inputs
2433 `(("python-setuptools" ,python-setuptools)
2434 ("python-pytest-runner" ,python-pytest-runner)))
6d45fef4
DT
2435 (arguments
2436 '(#:tests? #f)) ; test suite doesn't work
2437 (home-page "http://github.com/progrium/pyjwt")
2438 (synopsis "JSON Web Token implementation in Python")
2439 (description
2440 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2441 (license license:expat)))
6d45fef4
DT
2442
2443(define-public python2-pyjwt
2444 (package-with-python2 python-pyjwt))
2445
2cec1f6f
DT
2446(define-public python-oauthlib
2447 (package
2448 (name "python-oauthlib")
bde2171d 2449 (version "1.0.3")
2cec1f6f
DT
2450 (source (origin
2451 (method url-fetch)
bde2171d 2452 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2453 (sha256
2454 (base32
bde2171d 2455 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2456 (build-system python-build-system)
bde2171d 2457 (native-inputs
59f151ec 2458 `(("python-coverage" ,python-coverage)
2cec1f6f
DT
2459 ("python-nose" ,python-nose)
2460 ("python-mock" ,python-mock)))
bde2171d
EF
2461 (inputs
2462 `(("python-blinker" ,python-blinker)
2463 ("python-cryptography" ,python-cryptography)
2464 ("python-pyjwt" ,python-pyjwt)))
2cec1f6f
DT
2465 (home-page "https://github.com/idan/oauthlib")
2466 (synopsis "OAuth implementation for Python")
2467 (description
2468 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2469OAuth request-signing logic.")
3f641af0 2470 (license license:bsd-3)
59f151ec 2471 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2472
2473(define-public python2-oauthlib
59f151ec 2474 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2475 (package
2476 (inherit base)
59f151ec
EF
2477 (native-inputs `(("python2-setuptools" ,python2-setuptools)
2478 ("python2-unittest2" ,python2-unittest2)
2479 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2480
2481(define-public python-itsdangerous
2482 (package
2483 (name "python-itsdangerous")
2484 (version "0.24")
2485 (source
2486 (origin
2487 (method url-fetch)
2488 (uri (string-append
2489 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2490 version ".tar.gz"))
2491 (sha256
2492 (base32
2493 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2494 (build-system python-build-system)
ec5dbb5c
DT
2495 (home-page "http://github.com/mitsuhiko/itsdangerous")
2496 (synopsis "Python library for passing data to/from untrusted environments")
2497 (description
2498 "Itsdangerous provides various helpers to pass trusted data to untrusted
2499environments and back.")
3f641af0 2500 (license license:bsd-3)
194d0d98 2501 (properties `((python2-variant . ,(delay python2-itsdangerous))))))
ec5dbb5c
DT
2502
2503(define-public python2-itsdangerous
194d0d98
EF
2504 (let ((base (package-with-python2
2505 (strip-python2-variant python-itsdangerous))))
2506 (package
2507 (inherit base)
2508 (native-inputs `(("python2-setuptools" ,python2-setuptools)
2509 ,@(package-native-inputs base))))))
5731cae3 2510
8d12be1e
RW
2511(define-public python-pyyaml
2512 (package
2513 (name "python-pyyaml")
2514 (version "3.11")
2515 (source
2516 (origin
2517 (method url-fetch)
2518 (uri (string-append
2519 "https://pypi.python.org/packages/source/P/PyYAML/PyYAML-"
2520 version ".tar.gz"))
2521 (sha256
2522 (base32
2523 "1s26125vfnskng58ym37xhwv8v0mm95b2cwbjfag8prfhy596v63"))))
2524 (build-system python-build-system)
2525 (inputs
2526 `(("libyaml" ,libyaml)))
2527 (native-inputs
2528 `(("python-setuptools" ,python-setuptools)))
2529 (home-page "http://pyyaml.org/wiki/PyYAML")
2530 (synopsis "YAML parser and emitter for Python")
2531 (description
2532 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2533complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2534API, and sensible error messages. PyYAML supports standard YAML tags and
2535provides Python-specific tags that allow to represent an arbitrary Python
2536object.")
2537 (license license:expat)))
2538
2539(define-public python2-pyyaml
2540 (package-with-python2 python-pyyaml))
2541
5731cae3
DT
2542(define-public python-virtualenv
2543 (package
2544 (name "python-virtualenv")
17804240 2545 (version "13.1.2")
5731cae3
DT
2546 (source
2547 (origin
2548 (method url-fetch)
17804240 2549 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2550 (sha256
2551 (base32
17804240 2552 "1p732accxwqfjbdna39k8w8lp9gyw91vr4kzkhm8mgfxikqqxg5a"))))
5731cae3 2553 (build-system python-build-system)
17804240
EF
2554 (arguments
2555 `(#:phases
2556 (modify-phases %standard-phases
2557 (replace 'check
2558 (lambda _ (zero? (system* "py.test")))))))
5731cae3
DT
2559 (inputs
2560 `(("python-setuptools" ,python-setuptools)
2561 ("python-mock" ,python-mock)
17804240 2562 ("python-pytest" ,python-pytest)))
5731cae3
DT
2563 (home-page "https://virtualenv.pypa.io/")
2564 (synopsis "Virtual Python environment builder")
2565 (description
2566 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2567 (license license:expat)))
5731cae3
DT
2568
2569(define-public python2-virtualenv
2570 (package-with-python2 python-virtualenv))
8176d4d5
DT
2571
2572(define-public python-markupsafe
2573 (package
2574 (name "python-markupsafe")
2575 (version "0.23")
2576 (source
2577 (origin
2578 (method url-fetch)
2579 (uri (string-append
2580 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2581 version ".tar.gz"))
2582 (sha256
2583 (base32
2584 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2585 (build-system python-build-system)
2586 (inputs
2587 `(("python-setuptools" ,python-setuptools)))
2588 (home-page "http://github.com/mitsuhiko/markupsafe")
2589 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2590 (description
2591 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2592for Python.")
3f641af0 2593 (license license:bsd-3)))
8176d4d5
DT
2594
2595(define-public python2-markupsafe
2596 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2597
2598(define-public python-jinja2
2599 (package
2600 (name "python-jinja2")
e98149b3 2601 (version "2.8")
fe34f0d1
DT
2602 (source
2603 (origin
2604 (method url-fetch)
e98149b3 2605 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2606 (sha256
2607 (base32
e98149b3 2608 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1
DT
2609 (build-system python-build-system)
2610 (inputs
2611 `(("python-setuptools" ,python-setuptools)
2612 ("python-markupsafe" ,python-markupsafe)))
2613 (home-page "http://jinja.pocoo.org/")
2614 (synopsis "Python template engine")
2615 (description
2616 "Jinja2 is a small but fast and easy to use stand-alone template engine
2617written in pure Python.")
3f641af0 2618 (license license:bsd-3)))
fe34f0d1
DT
2619
2620(define-public python2-jinja2
2621 (package-with-python2 python-jinja2))
3580ab8b 2622
f7d17ac7
EE
2623(define-public python-pystache
2624 (package
2625 (name "python-pystache")
2626 (version "0.5.4")
2627 (source (origin
2628 (method url-fetch)
2629 (uri (pypi-uri "pystache" version))
2630 (sha256
2631 (base32
2632 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2633 (build-system python-build-system)
2634 (native-inputs
2635 `(("python-setuptools" ,python-setuptools)))
2636 (home-page "http://defunkt.io/pystache/")
2637 (synopsis "Python logic-less template engine")
2638 (description
2639 "Pystache is a Python implementation of the framework agnostic,
2640logic-free templating system Mustache.")
2641 (license license:expat)))
2642
2643(define-public python2-pystache
2644 (package-with-python2 python-pystache))
2645
1285119b
RW
2646(define-public python-joblib
2647 (package
2648 (name "python-joblib")
2649 (version "0.9.0b4")
2650 (source (origin
2651 (method url-fetch)
2652 (uri (string-append "https://pypi.python.org/packages/source/"
2653 "j/joblib/joblib-" version ".tar.gz"))
2654 (sha256
2655 (base32
2656 "1dvw3f8jgj6h0fxkghbgyclvdzc7l0ig7n0vis70awb5kczb9bs3"))))
2657 (build-system python-build-system)
2658 (native-inputs
2659 `(("python-setuptools" ,python-setuptools)
2660 ("python-nose" ,python-nose)))
2661 (home-page "http://pythonhosted.org/joblib/")
2662 (synopsis "Using Python functions as pipeline jobs")
2663 (description
2664 "Joblib is a set of tools to provide lightweight pipelining in Python.
2665In particular, joblib offers: transparent disk-caching of the output values
2666and lazy re-evaluation (memoize pattern), easy simple parallel computing
2667logging and tracing of the execution.")
3f641af0 2668 (license license:bsd-3)))
1285119b
RW
2669
2670(define-public python2-joblib
2671 (package-with-python2 python-joblib))
2672
3580ab8b
DT
2673(define-public python-docutils
2674 (package
2675 (name "python-docutils")
2676 (version "0.12")
2677 (source
2678 (origin
2679 (method url-fetch)
2680 (uri (string-append
2681 "https://pypi.python.org/packages/source/d/docutils/docutils-"
2682 version ".tar.gz"))
2683 (sha256
2684 (base32
2685 "1ylnjnw1x4b2y7blr6x35ncdzn69k253kw4cdkv6asdb21w73ny7"))))
2686 (build-system python-build-system)
2687 (inputs
2688 `(("python-setuptools" ,python-setuptools)))
2689 (arguments
2690 '(#:tests? #f)) ; no setup.py test command
2691 (home-page "http://docutils.sourceforge.net/")
2692 (synopsis "Python Documentation Utilities")
2693 (description
2694 "Docutils is a modular system for processing documentation into useful
2695formats, such as HTML, XML, and LaTeX. For input Docutils supports
2696reStructuredText.")
2697 ;; Most of the source code is public domain, but some source files are
2698 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 2699 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
2700
2701(define-public python2-docutils
2702 (package-with-python2 python-docutils))
fb35b7c0
DT
2703
2704(define-public python-pygments
2705 (package
2706 (name "python-pygments")
9f442285 2707 (version "2.0.2")
fb35b7c0
DT
2708 (source
2709 (origin
2710 (method url-fetch)
9f442285 2711 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
2712 (sha256
2713 (base32
9f442285 2714 "0lagrwifsgn0s8bzqahpr87p7gd38xja8f06akscinp6hj89283k"))))
fb35b7c0
DT
2715 (build-system python-build-system)
2716 (inputs
2717 `(("python-setuptools" ,python-setuptools)))
2718 (home-page "http://pygments.org/")
2719 (synopsis "Syntax highlighting")
2720 (description
2721 "Pygments is a syntax highlighting package written in Python.")
3f641af0 2722 (license license:bsd-2)))
fb35b7c0
DT
2723
2724(define-public python2-pygments
2725 (package-with-python2 python-pygments))
9dd6078d
DT
2726
2727(define-public python-sphinx
2728 (package
2729 (name "python-sphinx")
2730 (version "1.2.3")
2731 (source
2732 (origin
2733 (method url-fetch)
2734 (uri (string-append
2735 "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-"
2736 version ".tar.gz"))
2737 (sha256
2738 (base32
2739 "011xizm3jnmf4cvs5i6kgf6c5nn046h79i8j0vd0f27yw9j3p4wl"))))
2740 (build-system python-build-system)
2741 (inputs
2742 `(("python-setuptools" ,python-setuptools)
2743 ("python-jinja2" ,python-jinja2)
2744 ("python-docutils" ,python-docutils)
2745 ("python-pygments" ,python-pygments)))
2746 (home-page "http://sphinx-doc.org/")
2747 (synopsis "Python documentation generator")
2748 (description "Sphinx is a tool that makes it easy to create documentation
2749for Python projects or other documents consisting of multiple reStructuredText
2750sources.")
3f641af0 2751 (license license:bsd-3)))
9dd6078d
DT
2752
2753(define-public python2-sphinx
2754 (package-with-python2 python-sphinx))
6888830b 2755
ad320b20
RW
2756(define-public python-sphinx-rtd-theme
2757 (package
2758 (name "python-sphinx-rtd-theme")
2759 (version "0.1.6")
2760 (source
2761 (origin
2762 (method url-fetch)
2763 (uri (string-append "https://pypi.python.org/packages/source/s/"
2764 "sphinx_rtd_theme/sphinx_rtd_theme-"
2765 version ".tar.gz"))
2766 (sha256
2767 (base32
2768 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
2769 (build-system python-build-system)
2770 (arguments
2771 `(;; With standard flags, the install phase attempts to create a zip'd
2772 ;; egg file, and fails with an error: 'ZIP does not support timestamps
2773 ;; before 1980'
2774 #:configure-flags '("--single-version-externally-managed"
2775 "--record=sphinx-rtd-theme.txt")))
2776 (native-inputs
2777 `(("python-setuptools" ,python-setuptools)))
2778 (inputs
2779 `(("python-docutils" ,python-docutils)
2780 ("python-sphinx" ,python-sphinx)))
2781 (home-page "https://github.com/snide/sphinx_rtd_theme/")
2782 (synopsis "ReadTheDocs.org theme for Sphinx")
2783 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 2784 (license license:expat)))
ad320b20
RW
2785
2786(define-public python2-sphinx-rtd-theme
2787 (package-with-python2 python-sphinx-rtd-theme))
2788
f4de5b3b
CAW
2789(define-public python-feedgenerator
2790 (package
2791 (name "python-feedgenerator")
f0412aa2 2792 (version "1.8")
f4de5b3b 2793 (source
f4de5b3b 2794 (origin
f0412aa2
EF
2795 (method url-fetch)
2796 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
2797 (sha256
2798 (base32
f0412aa2 2799 "0mkimp1fpdan4p3882vzcws4l594k71ich4g0wq97jbra7p602n0"))))
f4de5b3b 2800 (build-system python-build-system)
f0412aa2 2801 (native-inputs
f4de5b3b
CAW
2802 `(("python-setuptools" ,python-setuptools)
2803 ("python-pytz" ,python-pytz)
2804 ("python-six" ,python-six)))
f0412aa2 2805 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
2806 (synopsis
2807 "Standalone version of Django's Atom/RSS feed generator")
2808 (description
2809 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
2810which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 2811 (license license:bsd-3)))
f4de5b3b
CAW
2812
2813(define-public python2-feedgenerator
2814 (package-with-python2 python-feedgenerator))
2815
59ad30e3
CAW
2816(define-public python-blinker
2817 (package
2818 (name "python-blinker")
7fb9ff4d 2819 (version "1.4")
59ad30e3
CAW
2820 (source
2821 (origin
2822 (method url-fetch)
7fb9ff4d 2823 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
2824 (sha256
2825 (base32
7fb9ff4d 2826 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3
CAW
2827 (build-system python-build-system)
2828 (native-inputs
2829 `(("python-setuptools" ,python-setuptools)))
2830 ;; No "test" command supplied to setuptools, so unless there's another way
2831 ;; to run tests, we're skipping them!
2832 (arguments '(#:tests? #f))
2833 (home-page "http://pythonhosted.org/blinker/")
2834 (synopsis "Fast, simple object-to-object and broadcast signaling")
2835 (description
2836 "Blinker provides a fast dispatching system that allows any number of
2837interested parties to subscribe to events, or \"signals\".")
2838 (license license:expat)))
2839
2840(define-public python2-blinker
2841 (package-with-python2 python-blinker))
2842
b8050e71
CAW
2843(define-public pelican
2844 (package
2845 (name "pelican")
11f97c27 2846 (version "3.6.3")
b8050e71
CAW
2847 (source
2848 (origin
2849 (method url-fetch)
11f97c27 2850 (uri (pypi-uri "pelican" version))
b8050e71
CAW
2851 (sha256
2852 (base32
11f97c27 2853 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 2854 (build-system python-build-system)
d9f2dece 2855 (inputs
b8050e71
CAW
2856 `(("python-feedgenerator" ,python-feedgenerator)
2857 ("python-jinja2" ,python-jinja2)
2858 ("python-pygments" ,python-pygments)
2859 ("python-docutils" ,python-docutils)
2860 ("python-pytz" ,python-pytz)
2861 ("python-blinker" ,python-blinker)
2862 ("python-unidecode" ,python-unidecode)
2863 ("python-six" ,python-six)
2864 ("python-dateutil-2" ,python-dateutil-2)))
2865 (home-page "http://getpelican.com/")
2866 (arguments
2867 `(;; XXX Requires a lot more packages to do unit tests :P
2868 #:tests? #f
2869 #:phases (modify-phases %standard-phases
2870 (add-before
2871 'install 'adjust-requires
2872 ;; Since feedgenerator is installed from git, it doesn't
2873 ;; conform to the version requirements.
2874 ;;
2875 ;; We *do have* "feedgenerator >= 1.6", but strip off the
2876 ;; version requirement so setuptools doesn't get confused.
2877 (lambda _
2878 (substitute* "setup.py"
2879 (("['\"]feedgenerator.*?['\"]")
2880 "'feedgenerator'")))))))
2881 (synopsis "Python-based static site publishing system")
2882 (description
2883 "Pelican is a tool to generate a static blog from reStructuredText,
2884Markdown input files, and more. Pelican uses Jinja2 for templating
2885and is very extensible.")
3f641af0 2886 (license license:agpl3+)))
b8050e71 2887
240ca4aa
RW
2888(define-public python-scikit-learn
2889 (package
2890 (name "python-scikit-learn")
be0a4c26 2891 (version "0.16.1")
240ca4aa
RW
2892 (source
2893 (origin
2894 (method url-fetch)
2895 (uri (string-append
2896 "https://github.com/scikit-learn/scikit-learn/archive/"
2897 version ".tar.gz"))
7e21b9fb 2898 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
2899 (sha256
2900 (base32
be0a4c26 2901 "140skabifgc7lvvj873pnzlwx0ni6q8qkrsyad2ccjb3h8rxzkih"))))
240ca4aa
RW
2902 (build-system python-build-system)
2903 (arguments
2904 `(#:phases
2905 (alist-cons-before
2f6b3d2e
RW
2906 'check 'set-HOME
2907 ;; some tests require access to "$HOME"
2908 (lambda _ (setenv "HOME" "/tmp"))
2909 ;; Tests can only be run after the library has been installed and not
2910 ;; within the source directory.
2911 (alist-cons-after
2912 'install 'check
2913 (lambda _
2914 (with-directory-excursion "/tmp"
2915 ;; With Python 3 one test of 3334 fails
2916 ;; (sklearn.tests.test_common.test_transformers); see
2917 ;; https://github.com/scikit-learn/scikit-learn/issues/3693
2918 (system* "nosetests" "-v" "sklearn")))
2919 (alist-delete 'check %standard-phases)))))
240ca4aa 2920 (inputs
2f6b3d2e 2921 `(("openblas" ,openblas)
240ca4aa
RW
2922 ("python-nose" ,python-nose)))
2923 (propagated-inputs
2924 `(("python-numpy" ,python-numpy)
2925 ("python-scipy" ,python-scipy)))
2926 (home-page "http://scikit-learn.org/")
2927 (synopsis "Machine Learning in Python")
2928 (description
2929 "Scikit-learn provides simple and efficient tools for data
2930mining and data analysis.")
25a2f81f
EF
2931 (license license:bsd-3)
2932 (properties `((python2-variant . ,(delay python2-scikit-learn))))))
240ca4aa
RW
2933
2934(define-public python2-scikit-learn
25a2f81f 2935 (package-with-python2 (strip-python2-variant python-scikit-learn)))
240ca4aa 2936
12f8f9bb
RW
2937(define-public python-scikit-image
2938 (package
2939 (name "python-scikit-image")
2940 (version "0.11.3")
2941 (source
2942 (origin
2943 (method url-fetch)
2944 (uri (string-append
2945 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
2946 version ".tar.gz"))
2947 (sha256
2948 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
2949 (build-system python-build-system)
2950 (propagated-inputs
2951 `(("python-matplotlib" ,python-matplotlib)
2952 ("python-networkx" ,python-networkx)
2953 ("python-numpy" ,python-numpy)
2954 ("python-scipy" ,python-scipy)
2955 ("python-six" ,python-six)
2956 ("python-pillow" ,python-pillow)))
2957 (native-inputs
2958 `(("python-cython" ,python-cython)
2959 ("python-setuptools" ,python-setuptools)))
2960 (home-page "http://scikit-image.org/")
2961 (synopsis "Image processing in Python")
2962 (description
e881752c 2963 "Scikit-image is a collection of algorithms for image processing.")
2b031d3f
EF
2964 (license license:bsd-3)
2965 (properties `((python2-variant . ,(delay python2-scikit-image))))))
12f8f9bb
RW
2966
2967(define-public python2-scikit-image
2b031d3f
EF
2968 (let ((scikit-image (package-with-python2
2969 (strip-python2-variant python-scikit-image))))
12f8f9bb
RW
2970 (package (inherit scikit-image)
2971 (native-inputs
2972 `(("python2-mock" ,python2-mock)
2973 ,@(package-native-inputs scikit-image)))
2974 (propagated-inputs
2975 `(("python2-pytz" ,python2-pytz)
2b031d3f 2976 ,@(package-propagated-inputs scikit-image))))))
12f8f9bb 2977
5394a6a6
RW
2978(define-public python-redis
2979 (package
2980 (name "python-redis")
2981 (version "2.10.3")
2982 (source
2983 (origin
2984 (method url-fetch)
2985 (uri (string-append
2986 "https://pypi.python.org/packages/source/r/redis/redis-"
2987 version ".tar.gz"))
2988 (sha256
2989 (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4"))))
2990 (build-system python-build-system)
2991 ;; Tests require a running Redis server
2992 (arguments '(#:tests? #f))
2993 (native-inputs
2994 `(("python-setuptools" ,python-setuptools)
2995 ("python-pytest" ,python-pytest)))
2996 (home-page "https://github.com/andymccurdy/redis-py")
2997 (synopsis "Redis Python client")
2998 (description
2999 "This package provides a Python interface to the Redis key-value store.")
3000 (license license:expat)))
3001
3002(define-public python2-redis
3003 (package-with-python2 python-redis))
3004
748cef5b
RW
3005(define-public python-rq
3006 (package
3007 (name "python-rq")
3008 (version "0.5.2")
3009 (source
3010 (origin
3011 (method url-fetch)
3012 (uri (string-append
3013 "https://pypi.python.org/packages/source/r/rq/rq-"
3014 version ".tar.gz"))
3015 (sha256
3016 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
3017 (build-system python-build-system)
3018 (propagated-inputs
3019 `(("python-click" ,python-click)
3020 ("python-redis" ,python-redis)))
3021 (native-inputs
3022 `(("python-setuptools" ,python-setuptools)))
3023 (home-page "http://python-rq.org/")
3024 (synopsis "Simple job queues for Python")
3025 (description
3026 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3027processing them in the background with workers. It is backed by Redis and it
3028is designed to have a low barrier to entry.")
3f641af0 3029 (license license:bsd-2)))
748cef5b
RW
3030
3031(define-public python2-rq
3032 (package-with-python2 python-rq))
3033
6888830b
FB
3034(define-public python-cython
3035 (package
3036 (name "python-cython")
dd22efef 3037 (version "0.24.1")
6888830b
FB
3038 (source
3039 (origin
3040 (method url-fetch)
56918e26 3041 (uri (pypi-uri "Cython" version))
6888830b
FB
3042 (sha256
3043 (base32
dd22efef 3044 "1fg7fmpvfcq9md4ncyqnnylyjy4z3ksdrshzis95g1sh03d8z044"))))
6888830b
FB
3045 (build-system python-build-system)
3046 ;; we need the full python package and not just the python-wrapper
3047 ;; because we need libpython3.3m.so
3048 (inputs
3049 `(("python" ,python)))
3050 (arguments
3051 `(#:phases
b92f651b
EF
3052 (modify-phases %standard-phases
3053 (add-before 'check 'set-HOME
3054 ;; some tests require access to "$HOME/.cython"
3055 (lambda _ (setenv "HOME" "/tmp")))
3056 (replace 'check
3057 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3058 (home-page "http://cython.org/")
3059 (synopsis "C extensions for Python")
3060 (description "Cython is an optimising static compiler for both the Python
3061programming language and the extended Cython programming language. It makes
3062writing C extensions for Python as easy as Python itself.")
3f641af0 3063 (license license:asl2.0)
48b311b1 3064 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3065
3066(define-public python2-cython
48b311b1
LC
3067 (package (inherit (package-with-python2
3068 (strip-python2-variant python-cython)))
6888830b
FB
3069 (name "python2-cython")
3070 (inputs
3071 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533
FB
3072
3073;; This version of numpy is missing the documentation and is only used to
3074;; build matplotlib which is required to build numpy's documentation.
3075(define python-numpy-bootstrap
3076 (package
3077 (name "python-numpy-bootstrap")
ef9b4c04 3078 (version "1.10.4")
0da98533
FB
3079 (source
3080 (origin
3081 (method url-fetch)
de67e922 3082 (uri (string-append "mirror://sourceforge/numpy/NumPy/" version
0da98533
FB
3083 "/numpy-" version ".tar.gz"))
3084 (sha256
3085 (base32
ef9b4c04 3086 "1bjjhvncraka5s6i4lg644jrxij6bvycxy7an20gcz3a0m11iygp"))))
0da98533
FB
3087 (build-system python-build-system)
3088 (inputs
3089 `(("python-nose" ,python-nose)
cba256f8
RW
3090 ("openblas" ,openblas)
3091 ("lapack" ,lapack)))
0da98533 3092 (native-inputs
19afbea1 3093 `(("gfortran" ,gfortran)))
0da98533
FB
3094 (arguments
3095 `(#:phases
3096 (alist-cons-before
3097 'build 'set-environment-variables
3098 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3099 (call-with-output-file "site.cfg"
3100 (lambda (port)
cba256f8
RW
3101 (format port
3102 "[openblas]
dbdfe515
RW
3103libraries = openblas
3104library_dirs = ~a/lib
3105include_dirs = ~a/include
cba256f8
RW
3106
3107[lapack]
3108lapack_libs = lapack
3109library_dirs = ~a/lib
3110include_dirs = ~a/include
3111"
3112 (assoc-ref inputs "openblas")
3113 (assoc-ref inputs "openblas")
3114 (assoc-ref inputs "lapack")
3115 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3116 ;; Use "gcc" executable, not "cc".
3117 (substitute* "numpy/distutils/system_info.py"
3118 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3119 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
3120 #t)
6a843168
FB
3121 ;; Tests can only be run after the library has been installed and not
3122 ;; within the source directory.
3123 (alist-cons-after
3124 'install 'check
89b5c60e 3125 (lambda _
6a843168 3126 (with-directory-excursion "/tmp"
89b5c60e 3127 (zero? (system* "python" "-c"
6a843168 3128 "import numpy; numpy.test(verbose=2)"))))
89b5c60e
AE
3129 (alist-delete
3130 'check
6a843168 3131 %standard-phases)))))
0da98533
FB
3132 (home-page "http://www.numpy.org/")
3133 (synopsis "Fundamental package for scientific computing with Python")
3134 (description "NumPy is the fundamental package for scientific computing
e881752c 3135with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3136object, sophisticated (broadcasting) functions, tools for integrating C/C++
3137and Fortran code, useful linear algebra, Fourier transform, and random number
3138capabilities.")
3f641af0 3139 (license license:bsd-3)))
0da98533
FB
3140
3141(define python2-numpy-bootstrap
3142 (package-with-python2 python-numpy-bootstrap))
15bfe6d6 3143
3a1bfe18
RW
3144(define-public python2-fastlmm
3145 (package
3146 (name "python2-fastlmm")
b074e7d4 3147 (version "0.2.21")
3a1bfe18
RW
3148 (source
3149 (origin
3150 (method url-fetch)
b074e7d4 3151 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3152 (sha256
3153 (base32
b074e7d4 3154 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3155 (build-system python-build-system)
3156 (arguments
3157 `(#:python ,python-2)) ; only Python 2.7 is supported
3158 (propagated-inputs
3159 `(("python2-numpy" ,python2-numpy)
3160 ("python2-scipy" ,python2-scipy)
3161 ("python2-matplotlib" ,python2-matplotlib)
3162 ("python2-pandas" ,python2-pandas)
3163 ("python2-scikit-learn" ,python2-scikit-learn)
3164 ("python2-cython" ,python2-cython)
3165 ("python2-pysnptools" ,python2-pysnptools)))
3166 (native-inputs
3167 `(("unzip" ,unzip)
3168 ("python2-mock" ,python2-mock)
3169 ("python2-setuptools" ,python2-setuptools)))
3170 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3171 (synopsis "Perform genome-wide association studies on large data sets")
3172 (description
3173 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3174Models, is a program for performing both single-SNP and SNP-set genome-wide
3175association studies (GWAS) on extremely large data sets.")
3f641af0 3176 (license license:asl2.0)))
3a1bfe18 3177
2ee8869a
FB
3178(define-public python-numpy
3179 (package (inherit python-numpy-bootstrap)
3180 (name "python-numpy")
3181 (outputs '("out" "doc"))
89b5c60e 3182 (inputs
2ee8869a
FB
3183 `(("which" ,which)
3184 ("python-setuptools" ,python-setuptools)
3185 ("python-matplotlib" ,python-matplotlib)
3186 ("python-sphinx" ,python-sphinx)
3187 ("python-pyparsing" ,python-pyparsing)
3188 ("python-numpydoc" ,python-numpydoc)
3189 ,@(package-inputs python-numpy-bootstrap)))
3190 (native-inputs
3191 `(("pkg-config" ,pkg-config)
3192 ("texlive" ,texlive)
3193 ("texinfo" ,texinfo)
3194 ("perl" ,perl)
3195 ,@(package-native-inputs python-numpy-bootstrap)))
3196 (arguments
89b5c60e 3197 `(,@(substitute-keyword-arguments
2ee8869a
FB
3198 (package-arguments python-numpy-bootstrap)
3199 ((#:phases phases)
3200 `(alist-cons-after
3201 'install 'install-doc
3202 (lambda* (#:key outputs #:allow-other-keys)
3203 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
89b5c60e
AE
3204 (doc (string-append
3205 data "/doc/" ,name "-"
2ee8869a
FB
3206 ,(package-version python-numpy-bootstrap)))
3207 (info (string-append data "/info"))
3208 (html (string-append doc "/html"))
3209 (pyver ,(string-append "PYVER=")))
3210 (with-directory-excursion "doc"
3211 (mkdir-p html)
3212 (system* "make" "html" pyver)
3213 (system* "make" "latex" "PAPER=a4" pyver)
89b5c60e 3214 (system* "make" "-C" "build/latex"
2ee8869a
FB
3215 "all-pdf" "PAPER=a4" pyver)
3216 ;; FIXME: Generation of the info file fails.
3217 ;; (system* "make" "info" pyver)
3218 ;; (mkdir-p info)
3219 ;; (copy-file "build/texinfo/numpy.info"
3220 ;; (string-append info "/numpy.info"))
3221 (for-each (lambda (file)
3222 (copy-file (string-append "build/latex" file)
3223 (string-append doc file)))
3224 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3225 (with-directory-excursion "build/html"
3226 (for-each (lambda (file)
3227 (let* ((dir (dirname file))
3228 (tgt-dir (string-append html "/" dir)))
3229 (unless (equal? "." dir)
3230 (mkdir-p tgt-dir))
96c46210 3231 (install-file file html)))
2ee8869a
FB
3232 (find-files "." ".*"))))))
3233 ,phases)))))))
3234
764c077b 3235(define-public python2-numpy
57b7b8cd 3236 (package-with-python2 python-numpy))
2ee8869a 3237
15bfe6d6
FB
3238(define-public python-pyparsing
3239 (package
3240 (name "python-pyparsing")
e0669289 3241 (version "2.0.3")
15bfe6d6
FB
3242 (source
3243 (origin
3244 (method url-fetch)
de67e922
LF
3245 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
3246 "/pyparsing-" version
15bfe6d6
FB
3247 "/pyparsing-" version ".tar.gz"))
3248 (sha256
3249 (base32
e0669289 3250 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3251 (build-system python-build-system)
3252 (outputs '("out" "doc"))
3253 (arguments
3254 `(#:tests? #f ; no test target
3255 #:modules ((guix build python-build-system)
3256 (guix build utils))
3257 #:phases
3258 (alist-cons-after
3259 'install 'install-doc
3260 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3261 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3262 "/share/doc/" ,name "-" ,version))
3263 (html-doc (string-append doc "/html"))
3264 (examples (string-append doc "/examples")))
3265 (mkdir-p html-doc)
3266 (mkdir-p examples)
89b5c60e 3267 (for-each
15bfe6d6 3268 (lambda (dir tgt)
89b5c60e 3269 (map (lambda (file)
96c46210 3270 (install-file file tgt))
15bfe6d6
FB
3271 (find-files dir ".*")))
3272 (list "docs" "htmldoc" "examples")
3273 (list doc html-doc examples))))
3274 %standard-phases)))
3275 (home-page "http://pyparsing.wikispaces.com")
3276 (synopsis "Python parsing class library")
3277 (description
3278 "The pyparsing module is an alternative approach to creating and
3279executing simple grammars, vs. the traditional lex/yacc approach, or the use
3280of regular expressions. The pyparsing module provides a library of classes
3281that client code uses to construct the grammar directly in Python code.")
bd3fa666 3282 (license license:expat)))
15bfe6d6
FB
3283
3284(define-public python2-pyparsing
3285 (package-with-python2 python-pyparsing))
3286
ec00de35
FB
3287(define-public python-numpydoc
3288 (package
3289 (name "python-numpydoc")
3290 (version "0.5")
3291 (source
3292 (origin
3293 (method url-fetch)
89b5c60e 3294 (uri (string-append
ec00de35
FB
3295 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3296 version ".tar.gz"))
3297 (sha256
3298 (base32
5e4d8f67
AE
3299 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3300 (modules '((guix build utils)))
3301 (snippet
3302 '(begin
3303 ;; Drop a test requiring matplotlib, which we cannot add as an
3304 ;; input since it would create a circular dependency: Extend the
3305 ;; test for Python 3, where it is already dropped, to Python 2.
3306 (substitute* "numpydoc/tests/test_plot_directive.py"
3307 (("3") "2"))))))
ec00de35
FB
3308 (build-system python-build-system)
3309 (inputs
3310 `(("python-setuptools" ,python-setuptools)
3311 ("python-docutils" ,python-docutils)
3312 ("python-sphinx" ,python-sphinx)
3313 ("python-nose" ,python-nose)))
3314 (home-page "https://pypi.python.org/pypi/numpydoc")
3315 (synopsis
3316 "Numpy's Sphinx extensions")
3317 (description
3318 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 3319 (license license:bsd-2)))
ec00de35
FB
3320
3321(define-public python2-numpydoc
5e4d8f67 3322 (package-with-python2 python-numpydoc))
1c65314c 3323
1e656049
RW
3324(define-public python-numexpr
3325 (package
3326 (name "python-numexpr")
26112c0a 3327 (version "2.6.0")
1e656049
RW
3328 (source
3329 (origin
3330 (method url-fetch)
26112c0a 3331 (uri (pypi-uri "numexpr" version))
1e656049
RW
3332 (sha256
3333 (base32
26112c0a 3334 "0i6iagl2hhbr8q4qzbbjd859v5806vqylq87fq7pi914ps6d6cag"))))
1e656049
RW
3335 (build-system python-build-system)
3336 (arguments `(#:tests? #f)) ; no tests included
3337 (propagated-inputs
3338 `(("python-numpy" ,python-numpy)))
3339 (home-page "https://github.com/pydata/numexpr")
3340 (synopsis "Fast numerical expression evaluator for NumPy")
3341 (description
3342 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3343expressions that operate on arrays are accelerated and use less memory than
3344doing the same calculation in Python. In addition, its multi-threaded
3345capabilities can make use of all your cores, which may accelerate
3346computations, most specially if they are not memory-bounded (e.g. those using
3347transcendental functions).")
fc1a170e
EF
3348 (license license:expat)
3349 (properties `((python2-variant . ,(delay python2-numexpr))))))
1e656049
RW
3350
3351(define-public python2-numexpr
fc1a170e 3352 (package-with-python2 (strip-python2-variant python-numexpr)))
1e656049 3353
1c65314c
FB
3354(define-public python-matplotlib
3355 (package
3356 (name "python-matplotlib")
1bbc659f 3357 (version "1.4.3")
1c65314c
FB
3358 (source
3359 (origin
3360 (method url-fetch)
de67e922
LF
3361 (uri (string-append "mirror://sourceforge/matplotlib/matplotlib"
3362 "/matplotlib-" version
1c65314c
FB
3363 "/matplotlib-" version ".tar.gz"))
3364 (sha256
3365 (base32
1bbc659f 3366 "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
fc1adab1 3367 (patches (search-patches "matplotlib-setupext-tk.patch"))))
1c65314c
FB
3368 (build-system python-build-system)
3369 (outputs '("out" "doc"))
25f9a068
FB
3370 (propagated-inputs ; the following packages are all needed at run time
3371 `(("python-pyparsing" ,python-pyparsing)
3372 ("python-pygobject" ,python-pygobject)
3373 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3374 ("python-tkinter" ,python "tk")
25f9a068
FB
3375 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3376 ;; from 'gtk+') provides the required 'typelib' files used by
3377 ;; 'gobject-introspection'. The location of these files is set with the
3378 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3379 ;; is done automatically by a 'native-search-path' procedure. However,
3380 ;; at run-time the user must set this variable as follows:
3381 ;;
3382 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3383 ("gtk+" ,gtk+)
3384 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3385 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3386 ;; object. For this reason we need to import both libraries.
3387 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3388 ("python-pycairo" ,python-pycairo)
3389 ("python-cairocffi" ,python-cairocffi)))
1c65314c
FB
3390 (inputs
3391 `(("python-setuptools" ,python-setuptools)
3392 ("python-dateutil" ,python-dateutil-2)
1c65314c
FB
3393 ("python-six" ,python-six)
3394 ("python-pytz" ,python-pytz)
3395 ("python-numpy" ,python-numpy-bootstrap)
3396 ("python-sphinx" ,python-sphinx)
3397 ("python-numpydoc" ,python-numpydoc)
3398 ("python-nose" ,python-nose)
3399 ("python-mock" ,python-mock)
3400 ("libpng" ,libpng)
3401 ("imagemagick" ,imagemagick)
3402 ("freetype" ,freetype)
25f9a068
FB
3403 ("cairo" ,cairo)
3404 ("glib" ,glib)
4e7a137a 3405 ("python-pillow" ,python-pillow)
1c65314c 3406 ;; FIXME: Add backends when available.
1c65314c
FB
3407 ;("python-wxpython" ,python-wxpython)
3408 ;("python-pyqt" ,python-pyqt)
1bbc659f
FB
3409 ("tcl" ,tcl)
3410 ("tk" ,tk)))
1c65314c
FB
3411 (native-inputs
3412 `(("pkg-config" ,pkg-config)
3413 ("texlive" ,texlive)
3414 ("texinfo" ,texinfo)))
3415 (arguments
3416 `(#:phases
25f9a068
FB
3417 (alist-cons-before
3418 'build 'configure-environment
3419 (lambda* (#:key outputs inputs #:allow-other-keys)
3420 (let ((cairo (assoc-ref inputs "cairo"))
3421 (gtk+ (assoc-ref inputs "gtk+")))
3422 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3423 ;; has not effect.
25f9a068
FB
3424 (setenv "LD_LIBRARY_PATH"
3425 (string-append cairo "/lib:" gtk+ "/lib"))
3426 (setenv "HOME" (getcwd))
3427 (call-with-output-file "setup.cfg"
3428 (lambda (port)
1bbc659f
FB
3429 (format port "[directories]~%
3430basedirlist = ~a,~a~%
57b7b8cd 3431 [rc_options]~%
1bbc659f
FB
3432backend = TkAgg~%"
3433 (assoc-ref inputs "tcl")
3434 (assoc-ref inputs "tk"))))))
25f9a068
FB
3435 (alist-cons-after
3436 'install 'install-doc
3437 (lambda* (#:key outputs #:allow-other-keys)
3438 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3439 (doc (string-append data "/doc/" ,name "-" ,version))
3440 (info (string-append data "/info"))
3441 (html (string-append doc "/html")))
3442 (with-directory-excursion "doc"
25f9a068
FB
3443 ;; Produce pdf in 'A4' format.
3444 (substitute* (find-files "." "conf\\.py")
3445 (("latex_paper_size = 'letter'")
3446 "latex_paper_size = 'a4'"))
3447 (mkdir-p html)
3448 (mkdir-p info)
3449 ;; The doc recommends to run the 'html' target twice.
3450 (system* "python" "make.py" "html")
3451 (system* "python" "make.py" "html")
18b31516 3452 (copy-recursively "build/html" html)
25f9a068
FB
3453 (system* "python" "make.py" "latex")
3454 (system* "python" "make.py" "texinfo")
18b31516
FB
3455 (symlink (string-append html "/_images")
3456 (string-append info "/matplotlib-figures"))
3457 (with-directory-excursion "build/texinfo"
3458 (substitute* "matplotlib.texi"
3459 (("@image\\{([^,]*)" all file)
3460 (string-append "@image{matplotlib-figures/" file)))
3461 (symlink (string-append html "/_images")
3462 "./matplotlib-figures")
3463 (system* "makeinfo" "--no-split"
3464 "-o" "matplotlib.info" "matplotlib.texi"))
25f9a068
FB
3465 (copy-file "build/texinfo/matplotlib.info"
3466 (string-append info "/matplotlib.info"))
3467 (copy-file "build/latex/Matplotlib.pdf"
18b31516 3468 (string-append doc "/Matplotlib.pdf")))))
25f9a068 3469 %standard-phases))))
1c65314c
FB
3470 (home-page "http://matplotlib.org")
3471 (synopsis "2D plotting library for Python")
3472 (description
3473 "Matplotlib is a Python 2D plotting library which produces publication
3474quality figures in a variety of hardcopy formats and interactive environments
3475across platforms. Matplotlib can be used in Python scripts, the python and
3476ipython shell, web application servers, and six graphical user interface
3477toolkits.")
3f641af0 3478 (license license:psfl)
57b7b8cd 3479 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 3480
764c077b 3481(define-public python2-matplotlib
57b7b8cd
LC
3482 (let ((matplotlib (package-with-python2
3483 (strip-python2-variant python-matplotlib))))
764c077b 3484 (package (inherit matplotlib)
88c26834
AE
3485 ;; Make sure to use special packages for Python 2 instead
3486 ;; of those automatically rewritten by package-with-python2.
89b5c60e 3487 (propagated-inputs
7ca0dbc3 3488 `(("python2-pycairo" ,python2-pycairo)
764c077b 3489 ("python2-pygobject-2" ,python2-pygobject-2)
1bbc659f
FB
3490 ("python2-tkinter" ,python-2 "tk")
3491 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3492 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 3493
0dde6232
RW
3494(define-public python2-pysnptools
3495 (package
3496 (name "python2-pysnptools")
a800018e 3497 (version "0.3.9")
0dde6232
RW
3498 (source
3499 (origin
3500 (method url-fetch)
3f2e9675 3501 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
3502 (sha256
3503 (base32
a800018e 3504 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
3505 (build-system python-build-system)
3506 (arguments
3507 `(#:python ,python-2)) ; only Python 2.7 is supported
3508 (propagated-inputs
3509 `(("python2-numpy" ,python2-numpy)
3510 ("python2-scipy" ,python2-scipy)
a800018e 3511 ("python2-pytz" ,python2-pytz)
0dde6232 3512 ("python2-cython" ,python2-cython)))
a800018e
EF
3513 (inputs
3514 `(("python2-dateutil-2" ,python2-dateutil-2)
3515 ("python2-pandas" ,python2-pandas)
3516 ("python2-six" ,python2-six)))
0dde6232
RW
3517 (native-inputs
3518 `(("unzip" ,unzip)
3519 ("python2-setuptools" ,python2-setuptools)))
3520 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
3521 (synopsis "Library for reading and manipulating genetic data")
3522 (description
3523 "PySnpTools is a library for reading and manipulating genetic data. It
3524can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
3525those files. It can also efficiently manipulate ranges of integers using set
3526operators such as union, intersection, and difference.")
3f641af0 3527 (license license:asl2.0)))
0dde6232 3528
c9b1b4f9
RW
3529(define-public python-rpy2
3530 (package
3531 (name "python-rpy2")
ec3bcbc7 3532 (version "2.7.6")
c9b1b4f9
RW
3533 (source
3534 (origin
3535 (method url-fetch)
ec3bcbc7 3536 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
3537 (sha256
3538 (base32
ec3bcbc7 3539 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9
RW
3540 (build-system python-build-system)
3541 (inputs
3542 `(("python-six" ,python-six)
3543 ("readline" ,readline)
3544 ("icu4c" ,icu4c)
3545 ("pcre" ,pcre)
3546 ("r" ,r)))
3547 (native-inputs
5ff6575b
RW
3548 `(("python-setuptools" ,python-setuptools)
3549 ("zlib" ,zlib)))
c9b1b4f9
RW
3550 (home-page "http://rpy.sourceforge.net/")
3551 (synopsis "Python interface to the R language")
3552 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
3553low-level interface to R from Python, a proposed high-level interface,
3554including wrappers to graphical libraries, as well as R-like structures and
3555functions.")
3f641af0 3556 (license license:gpl3+)))
c9b1b4f9
RW
3557
3558(define-public python2-rpy2
3559 (let ((rpy2 (package-with-python2 python-rpy2)))
3560 (package (inherit rpy2)
3561 (native-inputs
3562 `(("python2-singledispatch" ,python2-singledispatch)
3563 ,@(package-native-inputs rpy2))))))
3564
bb986599
FB
3565(define-public python-scipy
3566 (package
3567 (name "python-scipy")
ba8a0824 3568 (version "0.16.0")
bb986599
FB
3569 (source
3570 (origin
3571 (method url-fetch)
de67e922
LF
3572; http://downloads.sourceforge.net/project/scipy/scipy/0.16.1/scipy-0.16.1.tar.gz
3573 (uri (string-append "mirror://sourceforge/scipy/scipy/" version
da6ce3f1 3574 "/scipy-" version ".tar.xz"))
bb986599
FB
3575 (sha256
3576 (base32
ba8a0824 3577 "0wa0a4skpda3gx7lb12yn19nhbairlyxrvda2lz2bcawk3x5qzz2"))))
bb986599 3578 (build-system python-build-system)
dd86c0d1 3579 (propagated-inputs
bb986599
FB
3580 `(("python-numpy" ,python-numpy)
3581 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
3582 ("python-pyparsing" ,python-pyparsing)))
3583 (inputs
3584 `(("lapack" ,lapack)
719b01c1 3585 ("openblas" ,openblas)))
bb986599 3586 (native-inputs
dd86c0d1
RW
3587 `(("python-nose" ,python-nose)
3588 ("python-sphinx" ,python-sphinx)
5248d49e 3589 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 3590 ("gfortran" ,gfortran)
bb986599
FB
3591 ("texlive" ,texlive)
3592 ("perl" ,perl)))
3593 (outputs '("out" "doc"))
3594 (arguments
3595 `(#:phases
3596 (alist-cons-before
719b01c1 3597 'build 'configure-openblas
bb986599 3598 (lambda* (#:key inputs #:allow-other-keys)
719b01c1
RW
3599 (call-with-output-file "site.cfg"
3600 (lambda (port)
3601 (format port
3602 "[blas]
3603libraries = openblas
3604library_dirs = ~a/lib
3605include_dirs = ~a/include
3606[atlas]
3607library_dirs = ~a/lib
3608atlas_libs = openblas
3609"
3610 (assoc-ref inputs "openblas")
3611 (assoc-ref inputs "openblas")
3612 (assoc-ref inputs "openblas"))))
3613 #t)
bb986599
FB
3614 (alist-cons-after
3615 'install 'install-doc
3616 (lambda* (#:key outputs #:allow-other-keys)
3617 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3618 (doc (string-append data "/doc/" ,name "-" ,version))
3619 (html (string-append doc "/html"))
3620 (pyver ,(string-append "PYVER=")))
3621 (with-directory-excursion "doc"
bb986599
FB
3622 ;; Fix generation of images for mathematical expressions.
3623 (substitute* (find-files "source" "conf\\.py")
3624 (("pngmath_use_preview = True")
3625 "pngmath_use_preview = False"))
3626 (mkdir-p html)
3627 (system* "make" "html" pyver)
3628 (system* "make" "latex" "PAPER=a4" pyver)
3629 (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
3630 (copy-file "build/latex/scipy-ref.pdf"
3631 (string-append doc "/scipy-ref.pdf"))
3632 (with-directory-excursion "build/html"
3633 (for-each (lambda (file)
3634 (let* ((dir (dirname file))
3635 (tgt-dir (string-append html "/" dir)))
96c46210 3636 (install-file file html)))
bb986599
FB
3637 (find-files "." ".*"))))))
3638 ;; Tests can only be run after the library has been installed and not
3639 ;; within the source directory.
3640 (alist-cons-after
3641 'install 'check
89b5c60e 3642 (lambda _
bb986599
FB
3643 (with-directory-excursion "/tmp"
3644 (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
89b5c60e
AE
3645 (alist-delete
3646 'check
4f9ff21e
RW
3647 (alist-cons-after
3648 'unpack 'fix-tests
3649 (lambda _
3650 (substitute* "scipy/integrate/tests/test_quadpack.py"
3651 (("libm.so") "libm.so.6"))
3652 #t)
3653 %standard-phases)))))))
bb986599
FB
3654 (home-page "http://www.scipy.org/")
3655 (synopsis "The Scipy library provides efficient numerical routines")
3656 (description "The SciPy library is one of the core packages that make up
3657the SciPy stack. It provides many user-friendly and efficient numerical
3658routines such as routines for numerical integration and optimization.")
3f641af0 3659 (license license:bsd-3)))
bb986599 3660
764c077b 3661(define-public python2-scipy
57b7b8cd 3662 (package-with-python2 python-scipy))
bb986599 3663
94914805
EB
3664(define-public python-sqlalchemy
3665 (package
3666 (name "python-sqlalchemy")
a4ba286b 3667 (version "1.0.12")
94914805
EB
3668 (source
3669 (origin
3670 (method url-fetch)
3671 (uri (string-append "https://pypi.python.org/packages/source/S/"
3672 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
3673 (sha256
3674 (base32
a4ba286b 3675 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
3676 (build-system python-build-system)
3677 (native-inputs
3678 `(("python-cython" ,python-cython) ;for c extensions
3679 ("python-pytest" ,python-pytest)
3680 ("python-mock" ,python-mock))) ;for tests
3681 (arguments
3682 `(#:phases (alist-replace
3683 'check
3684 (lambda _ (zero? (system* "py.test")))
3685 %standard-phases)))
3686 (home-page "http://www.sqlalchemy.org")
3687 (synopsis "Database abstraction library")
3688 (description
3689 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
3690gives application developers the full power and flexibility of SQL. It
3691provides a full suite of well known enterprise-level persistence patterns,
3692designed for efficient and high-performing database access, adapted into a
3693simple and Pythonic domain language.")
3f641af0 3694 (license license:x11)))
94914805
EB
3695
3696(define-public python2-sqlalchemy
3697 (package-with-python2 python-sqlalchemy))
c937562e 3698
de2966cf
EF
3699(define-public python-sqlalchemy-utils
3700 (package
3701 (name "python-sqlalchemy-utils")
3702 (version "0.32.9")
3703 (source
3704 (origin
3705 (method url-fetch)
3706 (uri (pypi-uri "SQLAlchemy-Utils" version))
3707 (sha256
3708 (base32
3709 "1zbmmh7n8m01ikizn2mj1mfwch26nsr1awv9mvskqry7av0mpy98"))))
3710 (build-system python-build-system)
3711 (inputs
3712 `(("python-six" ,python-six)
3713 ("python-sqlalchemy" ,python-sqlalchemy)))
3714 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
3715 (synopsis "Various utility functions for SQLAlchemy")
3716 (description
3717 "SQLAlchemy-utils provides various utility functions and custom data types
3718for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.")
3719 (properties `((python2-variant . ,(delay python2-sqlalchemy-utils))))
3720 (license license:bsd-3)))
3721
3722(define-public python2-sqlalchemy-utils
3723 (let ((base (package-with-python2
3724 (strip-python2-variant python-sqlalchemy-utils))))
3725 (package (inherit base)
3726 (native-inputs
3727 `(("python2-setuptools" ,python2-setuptools)
3728 ,@(package-native-inputs base))))))
3729
af5a4602
CAW
3730(define-public python-alembic
3731 (package
3732 (name "python-alembic")
bb484529 3733 (version "0.8.7")
af5a4602
CAW
3734 (source
3735 (origin
3736 (method url-fetch)
3737 (uri (pypi-uri "alembic" version))
3738 (sha256
3739 (base32
bb484529 3740 "0ias6fdzwr2s220fnjspkdgm9510bd0cnap0hx5y4zy4srba9f3z"))))
af5a4602
CAW
3741 (build-system python-build-system)
3742 (native-inputs
3743 `(("python-mock" ,python-mock)
3744 ("python-pytest-cov" ,python-pytest-cov)))
3745 (propagated-inputs
3746 `(("python-sqlalchemy" ,python-sqlalchemy)
3747 ("python-mako" ,python-mako)
3748 ("python-editor" ,python-editor)))
3749 (home-page "http://bitbucket.org/zzzeek/alembic")
3750 (synopsis
3751 "Database migration tool for SQLAlchemy")
3752 (description
3753 "Alembic is a lightweight database migration tool for usage with the
3754SQLAlchemy Database Toolkit for Python.")
3755 (license license:expat)
3756 (properties `((python2-variant . ,(delay python2-alembic))))))
3757
3758(define-public python2-alembic
3759 (let ((alembic (package-with-python2
3760 (strip-python2-variant python-alembic))))
3761 (package
3762 (inherit alembic)
3763 (native-inputs `(("python2-setuptools" ,python2-setuptools)
3764 ,@(package-native-inputs alembic))))))
3765
1671c07c
EB
3766(define-public python-distutils-extra
3767 (package
3768 (name "python-distutils-extra")
3769 (version "2.38")
3770 (source
3771 (origin
3772 (method url-fetch)
3773 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
3774 version "/+download/python-distutils-extra-"
3775 version ".tar.gz"))
3776 (sha256
3777 (base32
3778 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
3779 (build-system python-build-system)
3780 (native-inputs
3781 `(("python-setuptools" ,python-setuptools)))
3782 (home-page "https://launchpad.net/python-distutils-extra/")
3783 (synopsis "Enhancements to Python's distutils")
3784 (description
3785 "The python-distutils-extra module enables you to easily integrate
3786gettext support, themed icons, and scrollkeeper-based documentation into
3787Python's distutils.")
3f641af0 3788 (license license:gpl2)))
1671c07c
EB
3789
3790(define-public python2-distutils-extra
3791 (package-with-python2 python-distutils-extra))
ea5456c8
EB
3792
3793(define-public python2-elib.intl
3794 (package
3795 (name "python2-elib.intl")
3796 (version "0.0.3")
3797 (source
3798 (origin
3799 ;; This project doesn't tag releases or publish tarballs, so we take
3800 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
3801 (method git-fetch)
3802 (uri (git-reference
3803 (url "https://github.com/dieterv/elib.intl.git")
3804 (commit "d09997cfef")))
3805 (sha256
3806 (base32
3807 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
3808 (build-system python-build-system)
3809 (native-inputs
3810 `(("python2-setuptools" ,python2-setuptools)))
3811 (arguments
3812 ;; incompatible with Python 3 (exception syntax)
3813 `(#:python ,python-2
3814 #:tests? #f
3815 ;; With standard flags, the install phase attempts to create a zip'd
3816 ;; egg file, and fails with an error: 'ZIP does not support timestamps
3817 ;; before 1980'
3818 #:configure-flags '("--single-version-externally-managed"
3819 "--record=elib.txt")))
3820 (home-page "https://github.com/dieterv/elib.intl")
3821 (synopsis "Enhanced internationalization for Python")
3822 (description
3823 "The elib.intl module provides enhanced internationalization (I18N)
3824services for your Python modules and applications.")
3f641af0 3825 (license license:lgpl3+)))
ea5456c8 3826
c937562e
EB
3827(define-public python-pillow
3828 (package
3829 (name "python-pillow")
debf4179 3830 (version "3.3.1")
c937562e
EB
3831 (source
3832 (origin
3833 (method url-fetch)
f1d9231d 3834 (uri (pypi-uri "Pillow" version))
c937562e
EB
3835 (sha256
3836 (base32
debf4179 3837 "1w9x3dfrg8b5lqhpjl0fczfyf9842wbqwgxbjjq4vfpxv5jwm49l"))))
c937562e
EB
3838 (build-system python-build-system)
3839 (native-inputs
3840 `(("python-setuptools" ,python-setuptools)
3841 ("python-nose" ,python-nose)))
3842 (inputs
5ff408d9
SB
3843 `(("freetype" ,freetype)
3844 ("lcms" ,lcms)
c937562e
EB
3845 ("zlib" ,zlib)
3846 ("libjpeg" ,libjpeg)
3847 ("openjpeg" ,openjpeg)
5ff408d9
SB
3848 ("libtiff" ,libtiff)
3849 ("libwebp" ,libwebp)))
c937562e
EB
3850 (propagated-inputs
3851 `(;; Used at runtime for pkg_resources
3852 ("python-setuptools" ,python-setuptools)))
3853 (arguments
e5358a6b
LC
3854 `(#:phases (modify-phases %standard-phases
3855 (add-before
3856 'install 'disable-egg-compression
3857 (lambda _
3858 ;; Leave the .egg uncompressed since compressing it would
3859 ;; prevent the GC from identifying run-time dependencies.
3860 ;; See <http://bugs.gnu.org/20765>.
3861 (let ((port (open-file "setup.cfg" "a")))
3862 (display "\n[easy_install]\nzip_ok = 0\n"
3863 port)
3864 (close-port port)
3865 #t)))
3866 (add-after
3867 'install 'check-installed
3868 (lambda _
3869 (begin
3870 (setenv "HOME" (getcwd))
3871 (and (zero? (system* "python" "selftest.py"
3872 "--installed"))
3873 (zero? (system* "python" "test-installed.py"))))))
3874 (delete 'check))))
c937562e
EB
3875 (home-page "https://pypi.python.org/pypi/Pillow")
3876 (synopsis "Fork of the Python Imaging Library")
3877 (description
3878 "The Python Imaging Library adds image processing capabilities to your
3879Python interpreter. This library provides extensive file format support, an
3880efficient internal representation, and fairly powerful image processing
3881capabilities. The core image library is designed for fast access to data
3882stored in a few basic pixel formats. It should provide a solid foundation for
3883a general image processing tool.")
3f641af0 3884 (license (license:x11-style
c937562e
EB
3885 "http://www.pythonware.com/products/pil/license.htm"
3886 "The PIL Software License"))))
3887
3888(define-public python2-pillow
3889 (package-with-python2 python-pillow))
bb986599 3890
a415f036
FB
3891(define-public python-pycparser
3892 (package
3893 (name "python-pycparser")
38eb6919 3894 (version "2.14")
a415f036
FB
3895 (source
3896 (origin
3897 (method url-fetch)
38eb6919 3898 (uri (pypi-uri "pycparser" version))
a415f036
FB
3899 (sha256
3900 (base32
38eb6919 3901 "0wvzyb6rxsfj3xcnpa4ynbh9qc7rrbk2277d5wqpphmx9akv8nbr"))))
a415f036
FB
3902 (outputs '("out" "doc"))
3903 (build-system python-build-system)
3904 (native-inputs
3905 `(("pkg-config" ,pkg-config)
3906 ("python-setuptools" ,python-setuptools)))
3907 (arguments
89b5c60e 3908 `(#:phases
a415f036
FB
3909 (alist-replace
3910 'check
3911 (lambda _
3912 (with-directory-excursion "tests"
3913 (zero? (system* "python" "all_tests.py"))))
3914 (alist-cons-after
3915 'install 'install-doc
3916 (lambda* (#:key outputs #:allow-other-keys)
3917 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3918 (doc (string-append data "/doc/" ,name "-" ,version))
3919 (examples (string-append doc "/examples")))
3920 (mkdir-p examples)
3921 (for-each (lambda (file)
3922 (copy-file (string-append "." file)
3923 (string-append doc file)))
3924 '("/README.rst" "/CHANGES" "/LICENSE"))
3925 (copy-recursively "examples" examples)))
3926 %standard-phases))))
3927 (home-page "https://github.com/eliben/pycparser")
3928 (synopsis "C parser in Python")
3929 (description
3930 "Pycparser is a complete parser of the C language, written in pure Python
3931using the PLY parsing library. It parses C code into an AST and can serve as
3932a front-end for C compilers or analysis tools.")
3f641af0 3933 (license license:bsd-3)))
a415f036
FB
3934
3935(define-public python2-pycparser
3936 (package-with-python2 python-pycparser))
57c3f716
FB
3937
3938(define-public python-cffi
3939 (package
3940 (name "python-cffi")
2d3a437c 3941 (version "1.4.2")
57c3f716
FB
3942 (source
3943 (origin
3944 (method url-fetch)
2d3a437c 3945 (uri (pypi-uri "cffi" version))
89b5c60e 3946 (sha256
2d3a437c 3947 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
3948 (build-system python-build-system)
3949 (outputs '("out" "doc"))
3950 (inputs
3951 `(("libffi" ,libffi)))
3952 (propagated-inputs ; required at run-time
3953 `(("python-pycparser" ,python-pycparser)))
3954 (native-inputs
3955 `(("pkg-config" ,pkg-config)
3956 ("python-sphinx" ,python-sphinx)
4179f952 3957 ("python-pytest" ,python-pytest)
57c3f716
FB
3958 ("python-setuptools" ,python-setuptools)))
3959 (arguments
4179f952 3960 `(#:phases
57c3f716
FB
3961 (alist-cons-after
3962 'install 'install-doc
3963 (lambda* (#:key outputs #:allow-other-keys)
3964 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3965 (doc (string-append data "/doc/" ,name "-" ,version))
3966 (html (string-append doc "/html")))
3967 (with-directory-excursion "doc"
3968 (system* "make" "html")
3969 (mkdir-p html)
3970 (copy-recursively "build/html" html))
3971 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
3972 %standard-phases)))
3973 (home-page "http://cffi.readthedocs.org")
3974 (synopsis "Foreign function interface for Python")
3975 (description
3976 "Foreign Function Interface for Python calling C code.")
bd3fa666 3977 (license license:expat)))
57c3f716
FB
3978
3979(define-public python2-cffi
3980 (package-with-python2 python-cffi))
6fa14469
FB
3981
3982(define-public python-xcffib
3983 (package
3984 (name "python-xcffib")
3985 (version "0.1.9")
3986 (source
3987 (origin
3988 (method url-fetch)
3989 (uri (string-append "https://pypi.python.org/packages/source/x/"
3990 "xcffib/xcffib-" version ".tar.gz"))
3991 (sha256
3992 (base32
3993 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
3994 (build-system python-build-system)
3995 (inputs
3996 `(("libxcb" ,libxcb)
3997 ("python-six" ,python-six)))
3998 (native-inputs
3999 `(("python-setuptools" ,python-setuptools)))
4000 (propagated-inputs
4001 `(("python-cffi" ,python-cffi))) ; used at run time
4002 (arguments
89b5c60e 4003 `(#:phases
6fa14469
FB
4004 (alist-cons-after
4005 'install 'install-doc
4006 (lambda* (#:key outputs #:allow-other-keys)
4007 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4008 "/doc/" ,name "-" ,version)))
4009 (mkdir-p doc)
4010 (copy-file "README.md"
4011 (string-append doc "/README.md"))))
4012 %standard-phases)))
4013 (home-page "https://github.com/tych0/xcffib")
4014 (synopsis "XCB Python bindings")
4015 (description
4016 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4017support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 4018 (license license:expat)))
6fa14469
FB
4019
4020(define-public python2-xcffib
4021 (package-with-python2 python-xcffib))
4022
9e099723
FB
4023(define-public python-cairocffi
4024 (package
4025 (name "python-cairocffi")
4026 (version "0.6")
4027 (source
4028 (origin
4029 (method url-fetch)
4030 ;; The archive on pypi is missing the 'utils' directory!
4031 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
4032 version ".tar.gz"))
f586c877 4033 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
4034 (sha256
4035 (base32
4036 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
4037 (build-system python-build-system)
4038 (outputs '("out" "doc"))
4039 (inputs
4040 `(("gdk-pixbuf" ,gdk-pixbuf)
4041 ("cairo" ,cairo)))
4042 (native-inputs
4043 `(("pkg-config" ,pkg-config)
4044 ("python-sphinx" ,python-sphinx)
4045 ("python-docutils" ,python-docutils)
4046 ("python-setuptools" ,python-setuptools)))
4047 (propagated-inputs
4048 `(("python-xcffib" ,python-xcffib))) ; used at run time
4049 (arguments
89b5c60e 4050 `(#:phases
9e099723
FB
4051 (alist-cons-after
4052 'install 'install-doc
4053 (lambda* (#:key inputs outputs #:allow-other-keys)
4054 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4055 (doc (string-append data "/doc/" ,name "-" ,version))
4056 (html (string-append doc "/html")))
89b5c60e 4057 (setenv "LD_LIBRARY_PATH"
9e099723
FB
4058 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4059 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4060 (setenv "LANG" "en_US.UTF-8")
4061 (mkdir-p html)
4062 (for-each (lambda (file)
4063 (copy-file (string-append "." file)
4064 (string-append doc file)))
4065 '("/README.rst" "/CHANGES" "/LICENSE"))
4066 (system* "python" "setup.py" "build_sphinx")
4067 (copy-recursively "docs/_build/html" html)))
4068 %standard-phases)))
4069 (home-page "https://github.com/SimonSapin/cairocffi")
4070 (synopsis "Python bindings and object-oriented API for Cairo")
4071 (description
4072 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4073Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4074graphics library with support for multiple backends including image buffers,
4075PNG, PostScript, PDF, and SVG file output.")
3f641af0 4076 (license license:bsd-3)))
9e099723
FB
4077
4078(define-public python2-cairocffi
4079 (package-with-python2 python-cairocffi))
4080
3cff95cb
RW
4081(define-public python-decorator
4082 (package
4083 (name "python-decorator")
eb6e2e81 4084 (version "4.0.9")
3cff95cb
RW
4085 (source
4086 (origin
4087 (method url-fetch)
e21338be 4088 (uri (pypi-uri "decorator" version))
3cff95cb 4089 (sha256
eb6e2e81 4090 (base32 "1a5vwhflfd9sh3rfb40xlyipldgdzfff6brman57hqv3661jw0lh"))))
3cff95cb
RW
4091 (build-system python-build-system)
4092 (arguments '(#:tests? #f)) ; no test target
4093 (native-inputs
4094 `(("python-setuptools" ,python-setuptools)))
eb6e2e81 4095 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
4096 (synopsis "Python module to simplify usage of decorators")
4097 (description
4098 "The aim of the decorator module is to simplify the usage of decorators
4099for the average programmer, and to popularize decorators usage giving examples
4100of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4101etc. The core of this module is a decorator factory.")
4102 (license license:expat)))
4103
4104(define-public python2-decorator
4105 (package-with-python2 python-decorator))
4106
2c0499ad
RW
4107(define-public python-drmaa
4108 (package
4109 (name "python-drmaa")
4110 (version "0.7.6")
4111 (source
4112 (origin
4113 (method url-fetch)
4114 (uri (string-append
4115 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4116 version ".tar.gz"))
4117 (sha256
4118 (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
4119 (build-system python-build-system)
4120 ;; The test suite requires libdrmaa which is provided by the cluster
4121 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4122 ;; should be set to the path of the libdrmaa library.
4123 (arguments '(#:tests? #f))
4124 (native-inputs
4125 `(("python-nose" ,python-nose)
4126 ("python-setuptools" ,python-setuptools)))
4127 (home-page "https://pypi.python.org/pypi/drmaa")
4128 (synopsis "Python bindings for the DRMAA library")
4129 (description
4130 "A Python package for Distributed Resource Management (DRM) job
4131submission and control. This package is an implementation of the DRMAA 1.0
4132Python language binding specification.")
3f641af0 4133 (license license:bsd-3)))
2c0499ad
RW
4134
4135(define-public python2-drmaa
4136 (package-with-python2 python-drmaa))
4137
d05c6da0
RW
4138(define-public python-gridmap
4139 (package
4140 (name "python-gridmap")
4141 (version "0.13.0")
4142 (source
4143 (origin
4144 (method url-fetch)
4145 (uri (string-append
4146 "https://github.com/pygridtools/gridmap/archive/v"
4147 version ".tar.gz"))
4148 (file-name (string-append name "-" version ".tar.gz"))
4149 (sha256
4150 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4151 (build-system python-build-system)
4152 (inputs
4153 `(("python-psutil" ,python-psutil)
4154 ("python-drmaa" ,python-drmaa)
4155 ("python-pyzmq" ,python-pyzmq)))
4156 (native-inputs
4157 `(("python-setuptools" ,python-setuptools)))
4158 (home-page "https://github.com/pygridtools/gridmap")
4159 (synopsis "Create jobs on a cluster directly from Python")
4160 (description
4161 "Gridmap is a Python package to allow you to easily create jobs on the
4162cluster directly from Python. You can directly map Python functions onto the
4163cluster without needing to write any wrapper code yourself.")
3f641af0 4164 (license license:gpl3+)))
d05c6da0
RW
4165
4166(define-public python2-gridmap
4167 (package-with-python2 python-gridmap))
4168
cb6d5c54
RW
4169(define-public python-pexpect
4170 (package
4171 (name "python-pexpect")
4172 (version "3.3")
4173 (source
4174 (origin
4175 (method url-fetch)
4176 (uri (string-append "https://pypi.python.org/packages/source/p/"
4177 "pexpect/pexpect-" version ".tar.gz"))
4178 (sha256
4179 (base32 "1fp5gm976z7ghm8jw57463rj19cv06c8zw842prgyg788f6n3snz"))))
4180 (build-system python-build-system)
4181 (arguments
4182 `(#:phases
4183 (modify-phases %standard-phases
4184 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4185 (native-inputs
4186 `(("python-nose" ,python-nose)))
4187 (home-page "http://pexpect.readthedocs.org/")
4188 (synopsis "Controlling interactive console applications")
4189 (description
4190 "Pexpect is a pure Python module for spawning child applications;
4191controlling them; and responding to expected patterns in their output.
4192Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4193child application and control it as if a human were typing commands.")
3f641af0 4194 (license license:isc)))
cb6d5c54
RW
4195
4196(define-public python2-pexpect
4197 (package-with-python2 python-pexpect))
4198
229ad120
RW
4199(define-public python-setuptools-scm
4200 (package
4201 (name "python-setuptools-scm")
42d6d0d0 4202 (version "1.11.1")
229ad120
RW
4203 (source (origin
4204 (method url-fetch)
383af6b0 4205 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4206 (sha256
4207 (base32
42d6d0d0 4208 "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc"))))
229ad120 4209 (build-system python-build-system)
383af6b0 4210 (native-inputs `(("python-setuptools" ,python-setuptools)))
229ad120
RW
4211 (home-page "https://github.com/pypa/setuptools_scm/")
4212 (synopsis "Manage Python package versions in SCM metadata")
4213 (description
383af6b0 4214 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4215@dfn{software configuration management} (SCM) metadata instead of declaring
4216them as the version argument or in a SCM managed file.")
4217 (license license:expat)))
4218
4219(define-public python2-setuptools-scm
4220 (package-with-python2 python-setuptools-scm))
4221
b74270ee
RW
4222(define-public python-pathpy
4223 (package
4224 (name "python-pathpy")
4225 (version "8.1.1")
4226 (source
4227 (origin
4228 (method url-fetch)
4229 (uri (string-append "https://pypi.python.org/packages/source/p/"
4230 "path.py/path.py-" version ".tar.gz"))
4231 (sha256
4232 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
4233 (build-system python-build-system)
4234 (propagated-inputs
4235 `(("python-appdirs" ,python-appdirs)))
4236 (native-inputs
553b709b
EF
4237 `(("python-setuptools" ,python-setuptools)
4238 ("python-setuptools-scm" ,python-setuptools-scm)
b74270ee
RW
4239 ("python-pytest" ,python-pytest)
4240 ("python-pytest-runner" ,python-pytest-runner)))
4241 (home-page "http://github.com/jaraco/path.py")
4242 (synopsis "Python module wrapper for built-in os.path")
4243 (description
4244 "@code{path.py} implements path objects as first-class entities, allowing
4245common operations on files to be invoked on those path objects directly.")
4246 (license license:expat)))
4247
4248(define-public python2-pathpy
4249 (package-with-python2 python-pathpy))
4250
0d34e01b
RW
4251(define-public python-pickleshare
4252 (package
4253 (name "python-pickleshare")
4254 (version "0.5")
4255 (source
4256 (origin
4257 (method url-fetch)
4258 (uri (string-append "https://pypi.python.org/packages/source/p/"
4259 "pickleshare/pickleshare-" version ".tar.gz"))
4260 (sha256
4261 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
4262 (build-system python-build-system)
4263 (propagated-inputs
4264 `(("python-pathpy" ,python-pathpy)))
b72a4410
EF
4265 (native-inputs
4266 `(("python-setuptools" ,python-setuptools)))
0d34e01b
RW
4267 (home-page "https://github.com/vivainio/pickleshare")
4268 (synopsis "Tiny key value database with concurrency support")
4269 (description
4270 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
4271Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
4272shelve, many processes can access the database simultaneously. Changing a
4273value in database is immediately visible to other processes accessing the same
4274database. Concurrency is possible because the values are stored in separate
4275files. Hence the “database” is a directory where all files are governed by
4276PickleShare.")
4277 (license license:expat)))
4278
4279(define-public python2-pickleshare
4280 (package-with-python2 python-pickleshare))
4281
cd6e5189
RW
4282(define-public python-simplegeneric
4283 (package
4284 (name "python-simplegeneric")
4285 (version "0.8.1")
4286 (source
4287 (origin
4288 (method url-fetch)
4289 (uri (string-append "https://pypi.python.org/packages/source/s/"
4290 "simplegeneric/simplegeneric-" version ".zip"))
4291 (sha256
4292 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
4293 (build-system python-build-system)
4294 (native-inputs
69b96e5e
RW
4295 `(("python-setuptools" ,python-setuptools)
4296 ("unzip" ,unzip)))
cd6e5189
RW
4297 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
4298 (synopsis "Python module for simple generic functions")
4299 (description
4300 "The simplegeneric module lets you define simple single-dispatch generic
4301functions, akin to Python’s built-in generic functions like @code{len()},
4302@code{iter()} and so on. However, instead of using specially-named methods,
4303these generic functions use simple lookup tables, akin to those used by
4304e.g. @code{pickle.dump()} and other generic functions found in the Python
4305standard library.")
3f641af0 4306 (license license:zpl2.1)))
cd6e5189
RW
4307
4308(define-public python2-simplegeneric
4309 (package-with-python2 python-simplegeneric))
4310
ddc7d8ed
RW
4311(define-public python-ipython-genutils
4312 (package
4313 (name "python-ipython-genutils")
4314 (version "0.1.0")
4315 (source
4316 (origin
4317 (method url-fetch)
4318 (uri (string-append "https://pypi.python.org/packages/source/i/"
4319 "ipython_genutils/ipython_genutils-"
4320 version ".tar.gz"))
4321 (sha256
4322 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
4323 (build-system python-build-system)
4324 (arguments `(#:tests? #f)) ; no tests
4325 (home-page "http://ipython.org")
4326 (synopsis "Vestigial utilities from IPython")
4327 (description
4328 "This package provides retired utilities from IPython.")
3f641af0 4329 (license license:bsd-3)))
ddc7d8ed
RW
4330
4331(define-public python2-ipython-genutils
4332 (package-with-python2 python-ipython-genutils))
4333
2b10eb48
RW
4334(define-public python-traitlets
4335 (package
4336 (name "python-traitlets")
cc0c4fde 4337 (version "4.1.0")
2b10eb48
RW
4338 (source
4339 (origin
4340 (method url-fetch)
cc0c4fde 4341 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
4342 (sha256
4343 (base32
cc0c4fde 4344 "0nxgj8jxlm1kqf8cx2x7vjid05zdgbxpqhjbdl46r8njlpgkh3j4"))))
2b10eb48
RW
4345 (build-system python-build-system)
4346 (arguments
4347 `(#:phases
4348 (modify-phases %standard-phases
4349 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4350 (propagated-inputs
4351 `(("python-ipython-genutils" ,python-ipython-genutils)
4352 ("python-decorator" ,python-decorator)))
4353 (native-inputs
cc0c4fde
EF
4354 `(("python-mock" ,python-mock)
4355 ("python-nose" ,python-nose)))
2b10eb48
RW
4356 (home-page "http://ipython.org")
4357 (synopsis "Configuration system for Python applications")
4358 (description
4359 "Traitlets is a framework that lets Python classes have attributes with
4360type checking, dynamically calculated default values, and ‘on change’
4361callbacks. The package also includes a mechanism to use traitlets for
4362configuration, loading values from files or from command line arguments. This
4363is a distinct layer on top of traitlets, so you can use traitlets in your code
4364without using the configuration machinery.")
3f641af0 4365 (license license:bsd-3)))
2b10eb48
RW
4366
4367(define-public python2-traitlets
4368 (package-with-python2 python-traitlets))
4369
ae1ab9fe
FB
4370(define-public python-ipython
4371 (package
4372 (name "python-ipython")
3a0b1b9a 4373 (version "3.2.1")
ae1ab9fe
FB
4374 (source
4375 (origin
fceac880 4376 (method url-fetch)
fc1adab1 4377 (patches (search-patches "python-ipython-inputhook-ctype.patch"))
fceac880
FB
4378 (uri (string-append "https://pypi.python.org/packages/source/i/"
4379 "ipython/ipython-" version ".tar.gz"))
4380 (sha256
4381 (base32 "0xwin0sa9n0cabx4cq1ibf5ldsiw5dyimibla82kicz5gbpas4y9"))))
ae1ab9fe
FB
4382 (build-system python-build-system)
4383 (outputs '("out" "doc"))
3a0b1b9a
FB
4384 (propagated-inputs
4385 `(("python-pyzmq" ,python-pyzmq)
4386 ("python-terminado" ,python-terminado)))
ae1ab9fe
FB
4387 (inputs
4388 `(("readline" ,readline)
3a0b1b9a 4389 ("which" ,which)
ae1ab9fe 4390 ("python-matplotlib" ,python-matplotlib)
5d26e542 4391 ("python-numpy" ,python-numpy)
ae1ab9fe 4392 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
4393 ("python-jinja2" ,python-jinja2)
4394 ("python-mistune" ,python-mistune)
4395 ("python-jsonschema" ,python-jsonschema)
4396 ("python-pygments" ,python-pygments)
4397 ("python-requests" ,python-requests) ;; for tests
ae1ab9fe
FB
4398 ("python-nose" ,python-nose)))
4399 (native-inputs
4400 `(("pkg-config" ,pkg-config)
4401 ("python-sphinx" ,python-sphinx)
4402 ("texlive" ,texlive)
4403 ("texinfo" ,texinfo)
4404 ("python-setuptools" ,python-setuptools)))
4405 (arguments
89b5c60e 4406 `(#:phases
3a0b1b9a
FB
4407 (modify-phases %standard-phases
4408 (add-after
4409 'install 'install-doc
4410 (lambda* (#:key inputs outputs #:allow-other-keys)
4411 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4412 (doc (string-append data "/doc/" ,name "-" ,version))
4413 (html (string-append doc "/html"))
4414 (man1 (string-append data "/man/man1"))
4415 (info (string-append data "/info"))
4416 (examples (string-append doc "/examples")))
afd3d931 4417 (setenv "LANG" "en_US.utf8")
3a0b1b9a
FB
4418 (with-directory-excursion "docs"
4419 ;; FIXME: html and pdf fail to build
4420 ;; (system* "make" "html")
4421 ;; (system* "make" "pdf" "PAPER=a4")
4422 (system* "make" "info"))
4423 (copy-recursively "docs/man" man1)
4424 (copy-recursively "examples" examples)
4425 ;; (copy-recursively "docs/build/html" html)
4426 ;; (copy-file "docs/build/latex/ipython.pdf"
4427 ;; (string-append doc "/ipython.pdf"))
4428 (mkdir-p info)
4429 (copy-file "docs/build/texinfo/ipython.info"
4430 (string-append info "/ipython.info"))
4431 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
4432 ;; Tests can only be run after the library has been installed and not
4433 ;; within the source directory.
4434 (delete 'check)
4435 (add-after
4436 'install 'check
4437 (lambda* (#:key outputs tests? #:allow-other-keys)
4438 (if tests?
4439 (with-directory-excursion "/tmp"
4440 (setenv "HOME" "/tmp/") ;; required by a test
4441 (zero? (system* (string-append (assoc-ref outputs "out")
4442 "/bin/iptest"))))
4443 #t)))
4444 (add-before
4445 'install 'fix-tests
4446 (lambda* (#:key inputs #:allow-other-keys)
4447 (substitute* "./IPython/utils/_process_posix.py"
4448 (("/usr/bin/env', 'which") (which "which")))
4449 (substitute* "./IPython/core/tests/test_inputtransformer.py"
4450 (("#!/usr/bin/env python")
4451 (string-append "#!" (which "python"))))
4452 ;; Disable 1 failing test
4453 (substitute* "./IPython/core/tests/test_magic.py"
4454 (("def test_dirops\\(\\):" all)
4455 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
4456 (home-page "http://ipython.org")
4457 (synopsis "IPython is a tool for interactive computing in Python")
4458 (description
4459 "IPython provides a rich architecture for interactive computing with:
4460Powerful interactive shells, a browser-based notebook, support for interactive
4461data visualization, embeddable interpreters and tools for parallel
4462computing.")
135ba811
EF
4463 (license license:bsd-3)
4464 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
4465
4466(define-public python2-ipython
135ba811 4467 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
4468 (package
4469 (inherit ipython)
4470 ;; FIXME: some tests are failing
4471 (arguments
4472 `(#:tests? #f ,@(package-arguments ipython)))
3a0b1b9a 4473 ;; FIXME: add pyreadline once available.
89b5c60e 4474 (inputs
135ba811
EF
4475 `(("python2-mock" ,python2-mock)
4476 ,@(package-inputs ipython))))))
03411993
AE
4477
4478(define-public python-isodate
4479 (package
4480 (name "python-isodate")
b6785c2e 4481 (version "0.5.4")
03411993
AE
4482 (source
4483 (origin
4484 (method url-fetch)
b6785c2e 4485 (uri (pypi-uri "isodate" version))
03411993
AE
4486 (sha256
4487 (base32
b6785c2e 4488 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993
AE
4489 (build-system python-build-system)
4490 (inputs
4491 `(("python-setuptools" ,python-setuptools)))
4492 (home-page
4493 "http://cheeseshop.python.org/pypi/isodate")
4494 (synopsis
4495 "Python date parser and formatter")
4496 (description
4497 "Python-isodate is a python module for parsing and formatting
4498ISO 8601 dates, time and duration.")
3f641af0 4499 (license license:bsd-3)))
03411993
AE
4500
4501(define-public python2-isodate
4502 (package-with-python2 python-isodate))
673ab897
AE
4503
4504(define-public python-html5lib
4505 (package
4506 (name "python-html5lib")
fee04c19 4507 (version "1.0b8")
673ab897
AE
4508 (source
4509 (origin
4510 (method url-fetch)
fee04c19 4511 (uri (pypi-uri "html5lib" version))
673ab897
AE
4512 (sha256
4513 (base32
fee04c19 4514 "1lknq5j3nh11xrl268ks76zaj0gyzh34v94n5vbf6dk8llzxdx0q"))))
673ab897 4515 (build-system python-build-system)
3dd75476
AE
4516 (propagated-inputs
4517 `(("python-six" ,python-six))) ; required to "import html5lib"
673ab897
AE
4518 (inputs
4519 `(("python-setuptools" ,python-setuptools)))
4520 (arguments
4521 `(#:test-target "check"))
4522 (home-page
4523 "https://github.com/html5lib/html5lib-python")
4524 (synopsis
4525 "Python HTML parser based on the WHATWG HTML specifcation")
4526 (description
4527 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
4528and written in Python.")
bd3fa666 4529 (license license:expat)))
673ab897
AE
4530
4531(define-public python2-html5lib
4532 (package-with-python2 python-html5lib))
e99f4211
MW
4533
4534(define-public python-urwid
4535 (package
4536 (name "python-urwid")
51ff41f6 4537 (version "1.3.1")
e99f4211
MW
4538 (source
4539 (origin
4540 (method url-fetch)
b97c1bfd 4541 (uri (pypi-uri "urwid" version))
e99f4211
MW
4542 (sha256
4543 (base32
51ff41f6 4544 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 4545 (build-system python-build-system)
b97c1bfd
LF
4546 (arguments
4547 `(#:phases
4548 (modify-phases %standard-phases
4549 ;; Disable failing test. Bug filed upstream:
4550 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 4551 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
4552 (add-after 'unpack 'disable-failing-test
4553 (lambda _
4554 (substitute* "urwid/tests/test_event_loops.py"
4555 (("test_remove_watch_file")
4556 "disable_remove_watch_file")))))))
e99f4211
MW
4557 (native-inputs `(("python-setuptools" ,python-setuptools)))
4558 (home-page "http://urwid.org")
4559 (synopsis "Console user interface library for Python")
4560 (description
4561 "Urwid is a curses-based UI/widget library for Python. It includes many
4562features useful for text console applications.")
3f641af0 4563 (license license:lgpl2.1+)))
e99f4211
MW
4564
4565(define-public python2-urwid
4566 (package-with-python2 python-urwid))
d95a56c6 4567
47d0b292
TS
4568(define-public python-urwidtrees
4569 (package
4570 (name "python-urwidtrees")
37ec4623 4571 (version "1.0.2")
47d0b292
TS
4572 (source
4573 (origin
4574 (method url-fetch)
37ec4623
TS
4575 ;; package author intends on distributing via github rather than pypi:
4576 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
4577 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
4578 version ".tar.gz"))
4579 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
4580 (sha256
4581 (base32
37ec4623 4582 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
4583 (build-system python-build-system)
4584 (arguments
4585 '(#:tests? #f)) ; no tests
4586 (inputs `(("python-urwid" ,python-urwid)))
4587 (home-page "https://github.com/pazz/urwidtrees")
4588 (synopsis "Tree widgets for urwid")
4589 (description "Urwidtrees is a Widget Container API for the @code{urwid}
4590toolkit. Use it to build trees of widgets.")
3f641af0 4591 (license license:gpl3+)))
47d0b292
TS
4592
4593(define-public python2-urwidtrees
4594 (package-with-python2 python-urwidtrees))
4595
d95a56c6
PAR
4596(define-public python-dbus
4597 (package
4598 (name "python-dbus")
4599 (version "1.2.0")
4600 (source
4601 (origin
4602 (method url-fetch)
4603 (uri (string-append
5cc3096c 4604 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
4605 version ".tar.gz"))
4606 (sha256
4607 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
4608 (build-system gnu-build-system)
6717c879
SB
4609 (arguments
4610 '(#:phases
4611 (modify-phases %standard-phases
4612 (add-before
4613 'check 'pre-check
4614 (lambda _
4615 ;; XXX: For the missing '/etc/machine-id'.
4616 (substitute* "test/run-test.sh"
4617 (("DBUS_FATAL_WARNINGS=1")
4618 "DBUS_FATAL_WARNINGS=0"))
4619 #t)))))
d95a56c6
PAR
4620 (native-inputs
4621 `(("pkg-config" ,pkg-config)))
4622 (inputs
4623 `(("python" ,python)
2e88d113 4624 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
4625 (synopsis "Python bindings for D-bus")
4626 (description "python-dbus provides bindings for libdbus, the reference
4627implementation of D-Bus.")
4628 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 4629 (license license:expat)))
b52af02b
MW
4630
4631(define-public python2-dbus
4632 (package (inherit python-dbus)
4633 (name "python2-dbus")
4634 (inputs `(("python" ,python-2)
4635 ,@(alist-delete "python"
4636 (package-inputs python-dbus)
4637 equal?)))
4638 ;; FIXME: on Python 2, the test_utf8 fails with:
4639 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
4640 (arguments `(#:tests? #f))))
a6ac8332
AE
4641
4642(define-public python-apsw
4643 (package
4644 (name "python-apsw")
917708c2 4645 (version "3.9.2-r1")
a6ac8332
AE
4646 (source
4647 (origin
4648 (method url-fetch)
917708c2 4649 (uri (pypi-uri "apsw" version))
a6ac8332
AE
4650 (sha256
4651 (base32
917708c2 4652 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
4653 (build-system python-build-system)
4654 (inputs
4655 `(("python-setuptools" ,python-setuptools)
4656 ("sqlite" ,sqlite)))
4657 (arguments
4658 `(#:phases
4659 ;; swap check and install phases
4660 (alist-cons-after
4661 'install 'check
4662 (assoc-ref %standard-phases 'check)
4663 (alist-delete
4664 'check
4665 %standard-phases))))
4666 (home-page "https://github.com/rogerbinns/apsw/")
4667 (synopsis "Another Python SQLite Wrapper")
4668 (description "APSW is a Python wrapper for the SQLite
4669embedded relational database engine. In contrast to other wrappers such as
4670pysqlite it focuses on being a minimal layer over SQLite attempting just to
4671translate the complete SQLite API into Python.")
abde5f37 4672 (license license:zlib)))
a6ac8332
AE
4673
4674(define-public python2-apsw
4675 (package-with-python2 python-apsw))
26b307e2
AE
4676
4677(define-public python-lxml
4678 (package
4679 (name "python-lxml")
d58a3203 4680 (version "3.6.0")
26b307e2
AE
4681 (source
4682 (origin
4683 (method url-fetch)
97bbc480 4684 (uri (pypi-uri "lxml" version))
26b307e2 4685 (sha256
d58a3203
EF
4686 (base32
4687 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
4688 (build-system python-build-system)
4689 (inputs
4690 `(("libxml2" ,libxml2)
4691 ("libxslt" ,libxslt)
4692 ("python-setuptools" ,python-setuptools)))
4693 (home-page "http://lxml.de/")
4694 (synopsis
4695 "Python XML processing library")
4696 (description
4697 "The lxml XML toolkit is a Pythonic binding for the C libraries
4698libxml2 and libxslt.")
3f641af0 4699 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
4700
4701(define-public python2-lxml
4702 (package-with-python2 python-lxml))
4ed20663 4703
b32a1e47
CAW
4704;; beautifulsoup4 has a totally different namespace than 3.x,
4705;; and pypi seems to put it under its own name, so I guess we should too
4706(define-public python-beautifulsoup4
4707 (package
4708 (name "python-beautifulsoup4")
cfbb3b0d 4709 (version "4.5.0")
b32a1e47
CAW
4710 (source
4711 (origin
4712 (method url-fetch)
4713 (uri (pypi-uri "beautifulsoup4" version))
4714 (sha256
4715 (base32
cfbb3b0d 4716 "1rf94360s8pmn37vxqjl0g74krq2p6nj3wbn6pj94ik6ny44q24f"))))
b32a1e47
CAW
4717 (build-system python-build-system)
4718 (home-page
4719 "http://www.crummy.com/software/BeautifulSoup/bs4/")
4720 (synopsis
4721 "Python screen-scraping library")
4722 (description
4723 "Beautiful Soup is a Python library designed for rapidly setting up
4724screen-scraping projects. It offers Pythonic idioms for navigating,
4725searching, and modifying a parse tree, providing a toolkit for
4726dissecting a document and extracting what you need. It automatically
4727converts incoming documents to Unicode and outgoing documents to UTF-8.")
4728 (license license:expat)
4729 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
4730
4731(define-public python2-beautifulsoup4
4732 (package
4733 (inherit (package-with-python2
4734 (strip-python2-variant python-beautifulsoup4)))
4735 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
4736
092e86f5
AE
4737(define-public python2-cssutils
4738 (package
4739 (name "python2-cssutils")
58d1d816 4740 (version "1.0.1")
092e86f5
AE
4741 (source
4742 (origin
4743 (method url-fetch)
58d1d816 4744 (uri (pypi-uri "cssutils" version))
092e86f5 4745 (sha256
58d1d816
EF
4746 (base32
4747 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
4748 (build-system python-build-system)
4749 (native-inputs
4750 `(("python2-mock" ,python2-mock) ; for the tests
4751 ("unzip" ,unzip))) ; for unpacking the source
4752 (inputs
4753 `(("python2-setuptools" ,python2-setuptools)))
4754 (arguments
4755 `(#:python ,python-2 ; Otherwise tests fail with a syntax error.
4756 #:tests? #f ; The tests apparently download an external URL.
da6dd842 4757 ))
092e86f5
AE
4758 (home-page "http://cthedot.de/cssutils/")
4759 (synopsis
4760 "CSS Cascading Style Sheets library for Python")
4761 (description
4762 "Cssutils is a Python package for parsing and building CSS
4763Cascading Style Sheets. Currently it provides a DOM only and no rendering
4764options.")
3f641af0 4765 (license license:lgpl3+)))
880ff77c
AE
4766
4767(define-public python-cssselect
4768 (package
4769 (name "python-cssselect")
d5ccd9ab 4770 (version "0.9.2")
880ff77c
AE
4771 (source
4772 (origin
4773 (method url-fetch)
d5ccd9ab 4774 (uri (pypi-uri "cssselect" version))
880ff77c 4775 (sha256
d5ccd9ab
EF
4776 (base32
4777 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c
AE
4778 (build-system python-build-system)
4779 (inputs
4780 `(("python-setuptools" ,python-setuptools)))
4781 (arguments
4782 ;; tests fail with message
4783 ;; AttributeError: 'module' object has no attribute 'tests'
4784 `(#:tests? #f))
4785 (home-page
4786 "https://pythonhosted.org/cssselect/")
4787 (synopsis
4788 "CSS3 selector parser and translator to XPath 1.0")
4789 (description
4790 "Cssselect ia a Python module that parses CSS3 Selectors and translates
4791them to XPath 1.0 expressions. Such expressions can be used in lxml or
4792another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 4793 (license license:bsd-3)))
880ff77c
AE
4794
4795(define-public python2-cssselect
4796 (package-with-python2 python-cssselect))
60357f99
AE
4797
4798(define-public python-netifaces
4799 (package
4800 (name "python-netifaces")
4801 (version "0.10.4")
4802 (source
4803 (origin
4804 (method url-fetch)
4805 (uri (string-append
4806 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
4807 version
4808 ".tar.gz"))
4809 (sha256
4810 (base32
4811 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
4812 (build-system python-build-system)
4813 (inputs
4814 `(("python-setuptools" ,python-setuptools)))
4815 (home-page
4816 "https://bitbucket.org/al45tair/netifaces")
4817 (synopsis
4818 "Python module for portable network interface information")
4819 (description
4820 "Netifaces is a Python module providing information on network
4821interfaces in an easy and portable manner.")
4822 (license license:expat)))
4823
4824(define-public python2-netifaces
4825 (package-with-python2 python-netifaces))
92cb152b 4826
32f77c04
RW
4827(define-public python-networkx
4828 (package
4829 (name "python-networkx")
a4d9609c 4830 (version "1.11")
32f77c04
RW
4831 (source
4832 (origin
4833 (method url-fetch)
a4d9609c 4834 (uri (pypi-uri "networkx" version))
32f77c04 4835 (sha256
a4d9609c 4836 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
4837 (build-system python-build-system)
4838 ;; python-decorator is needed at runtime
4839 (propagated-inputs
4840 `(("python-decorator" ,python-decorator)))
4841 (native-inputs
4842 `(("python-setuptools" ,python-setuptools)
4843 ("python-nose" ,python-nose)))
4844 (home-page "http://networkx.github.io/")
4845 (synopsis "Python module for creating and manipulating graphs and networks")
4846 (description
4847 "NetworkX is a Python package for the creation, manipulation, and study
4848of the structure, dynamics, and functions of complex networks.")
3f641af0 4849 (license license:bsd-3)))
32f77c04
RW
4850
4851(define-public python2-networkx
4852 (package-with-python2 python-networkx))
4853
92cb152b
RW
4854(define-public snakemake
4855 (package
4856 (name "snakemake")
4857 (version "3.2.1")
4858 (source
4859 (origin
4860 (method url-fetch)
4861 (uri (string-append
4862 "https://pypi.python.org/packages/source/s/snakemake/snakemake-"
4863 version ".tar.gz"))
4864 (sha256
4865 (base32 "0fi4b63sj60hvi7rfydvmz2icl4wj74djw5sn2gl8hxd02qw4b91"))))
4866 (build-system python-build-system)
4867 (inputs `(("python-setuptools" ,python-setuptools)))
4868 (home-page "https://bitbucket.org/johanneskoester/snakemake")
4869 (synopsis "Python-based execution environment for make-like workflows")
4870 (description
4871 "Snakemake aims to reduce the complexity of creating workflows by
4872providing a clean and modern domain specific specification language (DSL) in
4873Python style, together with a fast and comfortable execution environment.")
4874 (license license:expat)))
a1920bc9 4875
35de1fbd
RW
4876(define-public python-seaborn
4877 (package
4878 (name "python-seaborn")
fc899d4f 4879 (version "0.7.0")
35de1fbd
RW
4880 (source
4881 (origin
4882 (method url-fetch)
fc899d4f 4883 (uri (pypi-uri "seaborn" version))
35de1fbd 4884 (sha256
fc899d4f 4885 (base32 "0ibi3xsfm2kysph61mnfy0pf8d5rkgxgrdb0z9nbizgcgdsb5a0m"))))
35de1fbd
RW
4886 (build-system python-build-system)
4887 (propagated-inputs
4888 `(("python-pandas" ,python-pandas)
4889 ("python-matplotlib" ,python-matplotlib)
4890 ("python-scipy" ,python-scipy)))
35de1fbd
RW
4891 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
4892 (synopsis "Statistical data visualization")
4893 (description
4894 "Seaborn is a library for making attractive and informative statistical
4895graphics in Python. It is built on top of matplotlib and tightly integrated
4896with the PyData stack, including support for numpy and pandas data structures
4897and statistical routines from scipy and statsmodels.")
3f641af0 4898 (license license:bsd-3)
fc899d4f 4899 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
4900
4901(define-public python2-seaborn
fc899d4f
EF
4902 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
4903 (package
4904 (inherit base)
4905 (propagated-inputs `(("python2-pytz" ,python2-pytz)
4906 ,@(package-propagated-inputs base)))
4907 (native-inputs `(("python2-setuptools" ,python2-setuptools)
4908 ,@(package-native-inputs base))))))
35de1fbd 4909
90fc547f
RW
4910(define-public python-sympy
4911 (package
4912 (name "python-sympy")
4913 (version "0.7.6")
4914 (source
4915 (origin
4916 (method url-fetch)
4917 (uri (string-append
4918 "https://github.com/sympy/sympy/releases/download/sympy-"
4919 version "/sympy-" version ".tar.gz"))
4920 (sha256
4921 (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
4922 (build-system python-build-system)
4923 (native-inputs
4924 `(("python-setuptools" ,python-setuptools)))
4925 (home-page "http://www.sympy.org/")
4926 (synopsis "Python library for symbolic mathematics")
4927 (description
4928 "SymPy is a Python library for symbolic mathematics. It aims to become a
4929full-featured computer algebra system (CAS) while keeping the code as simple
4930as possible in order to be comprehensible and easily extensible.")
3f641af0 4931 (license license:bsd-3)))
90fc547f
RW
4932
4933(define-public python2-sympy
4934 (package-with-python2 python-sympy))
4935
a1920bc9
FB
4936(define-public python-testlib
4937 (package
4938 (name "python-testlib")
4939 (version "0.6.5")
4940 (source
4941 (origin
4942 (method url-fetch)
4943 (uri (string-append
4944 "https://pypi.python.org/packages/source/t/testlib/testlib-"
4945 version ".zip"))
4946 (sha256
4947 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
4948 (build-system python-build-system)
4949 (inputs
4950 `(("python-setuptools" ,python-setuptools)))
4951 (native-inputs
4952 `(("unzip" ,unzip)))
4953 (arguments
4954 `(#:phases
4955 (alist-replace
4956 'unpack
4957 (lambda* (#:key inputs outputs #:allow-other-keys)
4958 (let ((unzip (string-append (assoc-ref inputs "unzip")
4959 "/bin/unzip"))
4960 (source (assoc-ref inputs "source")))
4961 (and (zero? (system* unzip source))
4962 (chdir (string-append "testlib-" ,version)))))
4963 %standard-phases)))
4964 (synopsis "Python micro test suite harness")
4965 (description "A micro unittest suite harness for Python.")
4966 (home-page "https://github.com/trentm/testlib")
1cb9c006 4967 (license license:expat)))
a1920bc9
FB
4968
4969(define-public python2-testlib
4970 (package-with-python2 python-testlib))
db62afa5
LC
4971
4972(define-public python2-xlib
4973 (package
4974 (name "python2-xlib")
4975 (version "0.14")
4976 (source (origin
4977 (method url-fetch)
de67e922
LF
4978 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
4979 "/" version "/"
db62afa5
LC
4980 "python-xlib-" version ".tar.gz"))
4981 (sha256
4982 (base32
4983 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
4984 (build-system python-build-system)
4985 (arguments
4986 `(#:python ,python-2 ;Python 2 only
4987 #:tests? #f)) ;no tests
4988 (inputs
4989 `(("python-setuptools" ,python-setuptools)))
4990 (home-page "http://python-xlib.sourceforge.net/")
4991 (synopsis "Python X11 client library")
4992 (description
4993 "The Python X Library is intended to be a fully functional X client
4994library for Python programs. It is useful to implement low-level X clients.
4995It is written entirely in Python.")
3f641af0 4996 (license license:gpl2+)))
0234ca06
DT
4997
4998(define-public python-singledispatch
4999 (package
5000 (name "python-singledispatch")
5001 (version "3.4.0.3")
5002 (source
5003 (origin
5004 (method url-fetch)
bdb67d84 5005 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
5006 (sha256
5007 (base32
5008 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
5009 (build-system python-build-system)
5010 (native-inputs
5011 `(("python-setuptools" ,python-setuptools)))
bdb67d84 5012 (inputs
0234ca06
DT
5013 `(("python-six" ,python-six)))
5014 (home-page
5015 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
5016 (synopsis "Backport of singledispatch feature from Python 3.4")
5017 (description
5018 "This library brings functools.singledispatch from Python 3.4 to Python
50192.6-3.3.")
5020 (license license:expat)))
5021
5022(define-public python2-singledispatch
5023 (package-with-python2 python-singledispatch))
feaae484 5024
310d218f
RW
5025(define-public python-tornado
5026 (package
5027 (name "python-tornado")
a724924b 5028 (version "4.3")
310d218f
RW
5029 (source
5030 (origin
5031 (method url-fetch)
a724924b 5032 (uri (pypi-uri "tornado" version))
310d218f 5033 (sha256
a724924b 5034 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f 5035 (build-system python-build-system)
310d218f 5036 (native-inputs
b455439b
EF
5037 `(("python-certifi" ,python-certifi)))
5038 (inputs
5039 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 5040 (home-page "http://www.tornadoweb.org/")
310d218f
RW
5041 (synopsis "Python web framework and asynchronous networking library")
5042 (description
5043 "Tornado is a Python web framework and asynchronous networking library,
5044originally developed at FriendFeed. By using non-blocking network I/O,
5045Tornado can scale to tens of thousands of open connections, making it ideal
5046for long polling, WebSockets, and other applications that require a long-lived
5047connection to each user.")
3f641af0 5048 (license license:asl2.0)
b455439b 5049 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
5050
5051(define-public python2-tornado
b455439b 5052 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f
RW
5053 (package (inherit tornado)
5054 (inputs
5055 `(("python2-backport-ssl-match-hostname"
5056 ,python2-backport-ssl-match-hostname)
b455439b
EF
5057 ("python2-singledispatch" ,python2-singledispatch)
5058 ,@(package-inputs tornado)))
5059 (native-inputs
5060 `(("python2-setuptools" ,python2-setuptools)
5061 ,@(package-native-inputs tornado))))))
310d218f 5062
6b59fc10
EF
5063;; the python- version can be removed with python-3.5
5064(define-public python-backports-abc
5065 (package
5066 (name "python-backports-abc")
5067 (version "0.4")
5068 (source
5069 (origin
5070 (method url-fetch)
5071 (uri (pypi-uri "backports_abc" version))
5072 (sha256
5073 (base32
5074 "19fh75lni9pb673n2fn505m1rckm0af0szcv5xx1qm1xpa940glb"))))
5075 (build-system python-build-system)
5076 (inputs
5077 `(("python-setuptools" ,python-setuptools)))
5078 (home-page "https://github.com/cython/backports_abc")
66e07664 5079 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
5080 (description
5081 "Python-backports-abc provides a backport of additions to the
5082'collections.abc' module in Python-3.5.")
3f641af0 5083 (license license:psfl)))
6b59fc10
EF
5084
5085(define-public python2-backports-abc
5086 (package-with-python2 python-backports-abc))
5087
feaae484
SB
5088(define-public python-waf
5089 (package
5090 (name "python-waf")
f0e8d85e 5091 (version "1.9.1")
feaae484
SB
5092 (source (origin
5093 (method url-fetch)
5094 (uri (string-append "https://waf.io/"
5095 "waf-" version ".tar.bz2"))
5096 (sha256
5097 (base32
f0e8d85e 5098 "1nc4qaqx2vsanlpp9mcwvf91xjqpkvcc6fcxd5sb4fwvaxamw5v6"))))
feaae484
SB
5099 (build-system python-build-system)
5100 (arguments
5101 '(#:phases
5102 (modify-phases %standard-phases
5103 (replace 'build
5104 (lambda _
5105 (zero? (begin
5106 (system* "python" "waf-light" "configure")
5107 (system* "python" "waf-light" "build")))))
5108 (replace 'check
5109 (lambda _
5110 (zero? (system* "python" "waf" "--version"))))
5111 (replace 'install
5112 (lambda _
5113 (copy-file "waf" %output))))))
5114 (home-page "https://waf.io/")
5115 (synopsis "Python-based build system")
5116 (description
5117 "Waf is a Python-based framework for configuring, compiling and installing
5118applications.")
3f641af0 5119 (license license:bsd-3)))
feaae484
SB
5120
5121(define-public python2-waf
5122 (package-with-python2 python-waf))
45203542
RW
5123
5124(define-public python-pyzmq
5125 (package
5126 (name "python-pyzmq")
3655ee76 5127 (version "15.1.0")
45203542
RW
5128 (source
5129 (origin
5130 (method url-fetch)
3655ee76 5131 (uri (pypi-uri "pyzmq" version))
45203542 5132 (sha256
3655ee76 5133 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
5134 (build-system python-build-system)
5135 (arguments
5136 `(#:configure-flags
5137 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
5138 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
5139 ;; --inplace' for 'python setup.py test' to work.
5140 #:tests? #f))
5141 (inputs
5142 `(("zeromq" ,zeromq)))
5143 (native-inputs
5144 `(("pkg-config" ,pkg-config)
5145 ("python-nose" ,python-nose)
5146 ("python-setuptools" ,python-setuptools)))
5147 (home-page "http://github.com/zeromq/pyzmq")
5148 (synopsis "Python bindings for 0MQ")
5149 (description
5150 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 5151 (license license:bsd-4)))
45203542
RW
5152
5153(define-public python2-pyzmq
5154 (package-with-python2 python-pyzmq))
d889e6c4
CR
5155
5156(define-public python-pep8
5157 (package
5158 (name "python-pep8")
db251311 5159 (version "1.7.0")
d889e6c4
CR
5160 (source
5161 (origin
5162 (method url-fetch)
db251311 5163 (uri (pypi-uri "pep8" version))
d889e6c4
CR
5164 (sha256
5165 (base32
db251311 5166 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4
CR
5167 (build-system python-build-system)
5168 (inputs
5169 `(("python-setuptools" ,python-setuptools)))
5170 (home-page "http://pep8.readthedocs.org/")
5171 (synopsis "Python style guide checker")
5172 (description
5173 "This tools checks Python code against some of the style conventions in
5174PEP 8.")
5175 (license license:expat)))
5176
5177(define-public python2-pep8
5178 (package-with-python2 python-pep8))
e31d7f44
CR
5179
5180(define-public python-pyflakes
5181 (package
5182 (name "python-pyflakes")
2abc3972 5183 (version "1.0.0")
e31d7f44
CR
5184 (source
5185 (origin
5186 (method url-fetch)
2abc3972 5187 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
5188 (sha256
5189 (base32
2abc3972 5190 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44
CR
5191 (build-system python-build-system)
5192 (inputs
5193 `(("python-setuptools" ,python-setuptools)))
5194 (home-page
5195 "https://github.com/pyflakes/pyflakes")
5196 (synopsis "Passive checker of Python programs")
5197 (description
5198 "Pyflakes statically checks Python source code for common errors.")
5199 (license license:expat)))
a59e017c 5200
7261d9eb
CR
5201(define-public python2-pyflakes
5202 (package-with-python2 python-pyflakes))
5203
a59e017c
CR
5204(define-public python-mccabe
5205 (package
5206 (name "python-mccabe")
c6ebd40d 5207 (version "0.4.0")
a59e017c
CR
5208 (source
5209 (origin
5210 (method url-fetch)
c6ebd40d 5211 (uri (pypi-uri "mccabe" version))
a59e017c
CR
5212 (sha256
5213 (base32
c6ebd40d 5214 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c
CR
5215 (build-system python-build-system)
5216 (inputs
c6ebd40d
EF
5217 `(("python-pytest" ,python-pytest)
5218 ("python-pytest-runner" ,python-pytest-runner)
5219 ("python-setuptools" ,python-setuptools)))
a59e017c
CR
5220 (home-page "https://github.com/flintwork/mccabe")
5221 (synopsis "McCabe checker, plugin for flake8")
5222 (description
5223 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
5224complexity of Python source code.")
7362371d 5225 (license license:expat)))
a59e017c
CR
5226
5227(define-public python2-mccabe
5228 (package-with-python2 python-mccabe))
e8df8f47 5229
7477fbb1
CR
5230(define-public python-mccabe-0.2.1
5231 (package (inherit python-mccabe)
5232 (version "0.2.1")
5233 (source
5234 (origin
5235 (method url-fetch)
5236 (uri (pypi-uri "mccabe" version))
5237 (sha256
5238 (base32
c6ebd40d 5239 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))
b3546174 5240 (inputs `(("python-setuptools" ,python-setuptools)))))
7477fbb1
CR
5241
5242(define-public python2-mccabe-0.2.1
5243 (package-with-python2 python-mccabe-0.2.1))
5244
e8df8f47
CR
5245;; Flake8 2.4.1 requires an older version of pep8.
5246;; This should be removed ASAP.
5247(define-public python-pep8-1.5.7
5248 (package (inherit python-pep8)
5249 (version "1.5.7")
5250 (source
5251 (origin
5252 (method url-fetch)
5253 (uri (string-append
5254 "https://pypi.python.org/packages/source/p/pep8/pep8-"
5255 version
5256 ".tar.gz"))
5257 (sha256
5258 (base32
5259 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))))
5260
5261(define-public python2-pep8-1.5.7
5262 (package-with-python2 python-pep8-1.5.7))
5263
5264;; Flake8 2.4.1 requires an older version of pyflakes.
5265;; This should be removed ASAP.
5266(define-public python-pyflakes-0.8.1
5267 (package (inherit python-pyflakes)
5268 (version "0.8.1")
5269 (source
5270 (origin
5271 (method url-fetch)
5272 (uri (string-append
5273 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
5274 version
5275 ".tar.gz"))
5276 (sha256
5277 (base32
5278 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))))
5279
5280(define-public python2-pyflakes-0.8.1
7261d9eb 5281 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
5282
5283(define-public python-flake8
5284 (package
5285 (name "python-flake8")
43789136 5286 (version "2.5.4")
e8df8f47
CR
5287 (source
5288 (origin
5289 (method url-fetch)
1b995533 5290 (uri (pypi-uri "flake8" version))
e8df8f47
CR
5291 (sha256
5292 (base32
43789136 5293 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))))
e8df8f47
CR
5294 (build-system python-build-system)
5295 (inputs
5296 `(("python-setuptools" ,python-setuptools)
43789136
EF
5297 ("python-pep8" ,python-pep8)
5298 ("python-pyflakes" ,python-pyflakes)
e8df8f47
CR
5299 ("python-mccabe" ,python-mccabe)
5300 ("python-mock" ,python-mock)
5301 ("python-nose" ,python-nose)))
5302 (home-page "https://gitlab.com/pycqa/flake8")
5303 (synopsis
5304 "The modular source code checker: pep8, pyflakes and co")
5305 (description
5306 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
5307 (license license:expat)))
5308
5309(define-public python2-flake8
5310 (package-with-python2 python-flake8))
61b9ac53 5311
abf21efc
CR
5312;; This will only be needed by the python-hacking package and will not be
5313;; necessary once python-hacking > 0.10.2 is released.
5314(define-public python-flake8-2.2.4
5315 (package (inherit python-flake8)
5316 (inputs
5317 `(("python-setuptools" ,python-setuptools)
5318 ("python-pep8" ,python-pep8-1.5.7)
5319 ("python-pyflakes" ,python-pyflakes-0.8.1)
5320 ("python-mccabe" ,python-mccabe-0.2.1)
5321 ("python-mock" ,python-mock)
5322 ("python-nose" ,python-nose)))
5323 (version "2.2.4")
5324 (source
5325 (origin
5326 (method url-fetch)
5327 (uri (pypi-uri "flake8" version))
5328 (sha256
5329 (base32
5330 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))))))
5331
5332(define-public python2-flake8-2.2.4
5333 (package-with-python2 python-flake8-2.2.4))
5334
61b9ac53
FB
5335(define-public python-mistune
5336 (package
5337 (name "python-mistune")
5338 (version "0.7")
5339 (source
5340 (origin
5341 (method url-fetch)
5342 (uri (string-append
5343 "https://pypi.python.org/packages/source/m/mistune/mistune-"
5344 version
5345 ".tar.gz"))
5346 (sha256
5347 (base32
5348 "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
5349 (build-system python-build-system)
5350 (inputs
5351 `(("python-setuptools" ,python-setuptools)
5352 ("python-nose" ,python-nose)
5353 ("python-cython" ,python-cython)))
5354 (home-page "https://github.com/lepture/mistune")
5355 (synopsis "Markdown parser in pure Python")
5356 (description "This package provides a fast markdown parser in pure
5357Python.")
3f641af0 5358 (license license:bsd-3)))
61b9ac53
FB
5359
5360(define-public python2-mistune
5361 (package-with-python2 python-mistune))
6d992d07 5362
b9893908
EE
5363(define-public python-markdown
5364 (package
5365 (name "python-markdown")
5366 (version "2.6.5")
5367 (source
5368 (origin
5369 (method url-fetch)
5370 (uri (pypi-uri "Markdown" version))
5371 (sha256
5372 (base32
5373 "0q758a3fiiawr20b3hhjfs677cwj6xi284yb7xspcvv0fdicz54d"))))
5374 (build-system python-build-system)
5375 (arguments
5376 `(#:phases
5377 (modify-phases %standard-phases
5378 (replace 'check
5379 (lambda _
5380 (zero? (system* "python" "run-tests.py")))))))
5381 (native-inputs
5382 `(("python-nose" ,python-nose)
5383 ("python-pyyaml" ,python-pyyaml)))
5384 (home-page "https://pythonhosted.org/Markdown/")
5385 (synopsis "Python implementation of Markdown")
5386 (description
5387 "This package provides a Python implementation of John Gruber's
5388Markdown. The library features international input, various Markdown
5389extensions, and several HTML output formats. A command line wrapper
5390markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 5391 (license license:bsd-3)))
b9893908
EE
5392
5393(define-public python2-markdown
5394 (package-with-python2 python-markdown))
5395
6d992d07
FB
5396(define-public python-ptyprocess
5397 (package
5398 (name "python-ptyprocess")
5399 (version "0.5")
5400 (source
5401 (origin
5402 (method url-fetch)
5403 (uri (string-append
5404 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
5405 version ".tar.gz"))
5406 (sha256
5407 (base32
5408 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
5409 (build-system python-build-system)
5410 (inputs
5411 `(("python-setuptools" ,python-setuptools)
5412 ("python-nose" ,python-nose)))
5413 (arguments
5414 `(#:phases
5415 (modify-phases %standard-phases
5416 (replace 'check
5417 (lambda _
5418 (zero? (system* "nosetests")))))))
5419 (home-page "https://github.com/pexpect/ptyprocess")
5420 (synopsis "Run a subprocess in a pseudo terminal")
5421 (description
5422 "This package provides a Python library used to launch a subprocess in a
5423pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 5424 (license license:isc)))
6d992d07
FB
5425
5426(define-public python2-ptyprocess
5427 (package-with-python2 python-ptyprocess))
4aadb1df
FB
5428
5429(define-public python-terminado
5430 (package
5431 (name "python-terminado")
783fb0a3 5432 (version "0.6")
4aadb1df
FB
5433 (source
5434 (origin
5435 (method url-fetch)
783fb0a3 5436 (uri (pypi-uri "terminado" version))
4aadb1df
FB
5437 (sha256
5438 (base32
783fb0a3 5439 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
5440 (build-system python-build-system)
5441 (propagated-inputs
5442 `(("python-tornado" ,python-tornado)
5443 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
5444 (native-inputs
5445 `(("python-nose" ,python-nose)))
4aadb1df
FB
5446 (arguments
5447 `(#:phases
5448 (modify-phases %standard-phases
5449 (replace 'check
5450 (lambda _
5451 (zero? (system* "nosetests")))))))
5452 (home-page "https://github.com/takluyver/terminado")
5453 (synopsis "Terminals served to term.js using Tornado websockets")
5454 (description "This package provides a Tornado websocket backend for the
5455term.js Javascript terminal emulator library.")
3f641af0 5456 (license license:bsd-2)
783fb0a3 5457 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
5458
5459(define-public python2-terminado
783fb0a3 5460 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 5461 (package (inherit terminado)
783fb0a3
EF
5462 (propagated-inputs
5463 `(("python2-backport-ssl-match-hostname"
5464 ,python2-backport-ssl-match-hostname)
5465 ,@(package-propagated-inputs terminado)))
5466 (native-inputs
5467 `(("python2-setuptools" ,python2-setuptools)
5468 ,@(package-native-inputs terminado))))))
5faa5ce4 5469
d582eaac
SB
5470(define-public python-fonttools
5471 (package
5472 (name "python-fonttools")
5473 (version "2.5")
5474 (source (origin
5475 (method url-fetch)
5476 (uri (string-append
5477 "https://pypi.python.org/packages/source/F/FontTools/"
5478 "fonttools-" version ".tar.gz"))
5479 (sha256
5480 (base32
5481 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
5482 (build-system python-build-system)
5483 (arguments '(#:test-target "check"))
5484 (propagated-inputs
5485 ;; XXX: module not found if setuptools is not available.
5486 `(("python-setuptools" ,python-setuptools)))
5487 (home-page "http://github.com/behdad/fonttools")
5488 (synopsis "Tools to manipulate font files")
5489 (description
5490 "FontTools/TTX is a library to manipulate font files from Python. It
5491supports reading and writinfg of TrueType/OpenType fonts, reading and writing
5492of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
5493also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
5494from an XML-based format.")
3f641af0
DC
5495 (license (license:non-copyleft
5496 "file://LICENSE.txt"
5497 "See LICENSE.txt in the distribution."))))
d582eaac
SB
5498
5499(define-public python2-fonttools
5500 (package-with-python2 python-fonttools))
75710da6 5501
5faa5ce4
RW
5502(define-public python-ly
5503 (package
5504 (name "python-ly")
5135354f 5505 (version "0.9.4")
5faa5ce4
RW
5506 (source
5507 (origin
5508 (method url-fetch)
5135354f
RW
5509 (uri (string-append "https://pypi.python.org/packages/57/4f/"
5510 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
5511 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
5512 (sha256
5513 (base32
5135354f 5514 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4
RW
5515 (build-system python-build-system)
5516 (native-inputs
5517 `(("python-setuptools" ,python-setuptools)))
5518 (synopsis "Tool and library for manipulating LilyPond files")
5519 (description "This package provides a Python library to parse, manipulate
5520or create documents in LilyPond format. A command line program ly is also
5521provided that can be used to do various manipulations with LilyPond files.")
5522 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 5523 (license license:gpl2+)))
7e7b27d9
CR
5524
5525(define-public python-appdirs
5526 (package
5527 (name "python-appdirs")
5528 (version "1.4.0")
5529 (source
5530 (origin
5531 (method url-fetch)
5532 (uri (string-append
5533 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
5534 version
5535 ".tar.gz"))
5536 (sha256
5537 (base32
5538 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
5539 (build-system python-build-system)
5540 (inputs
5541 `(("python-setuptools" ,python-setuptools)))
5542 (home-page "http://github.com/ActiveState/appdirs")
5543 (synopsis
5544 "Determine platform-specific dirs, e.g. a \"user data dir\"")
5545 (description
5546 "This module provides a portable way of finding out where user data
5547should be stored on various operating systems.")
5548 (license license:expat)))
5549
5550(define-public python2-appdirs
5551 (package-with-python2 python-appdirs))
89b2e0b0
LF
5552
5553(define-public python-llfuse
5554 (package
5555 (name "python-llfuse")
e36ace36 5556 (version "1.1.1")
89b2e0b0
LF
5557 (source (origin
5558 (method url-fetch)
5559 (uri (string-append
5560 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
5561 "llfuse-" version ".tar.bz2"))
5562 (sha256
5563 (base32
e36ace36 5564 "0v6vj9mb286njgd1szg9hz2qdh5f3vkhsvajripfcqg458av310v"))))
89b2e0b0
LF
5565 (build-system python-build-system)
5566 (inputs
5567 `(("fuse" ,fuse)
5568 ("attr" ,attr)))
5569 (native-inputs
5570 `(("pkg-config" ,pkg-config)
5571 ("python-setuptools" ,python-setuptools)))
5572 (synopsis "Python bindings for FUSE")
5573 (description
5574 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
5575 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 5576 (license license:lgpl2.0+)
cd0569c4 5577 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
5578
5579(define-public python2-llfuse
cd0569c4
LF
5580 (package (inherit (package-with-python2
5581 (strip-python2-variant python-llfuse)))
5582 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
5583
5584;; For attic-0.16
5585(define-public python-llfuse-0.41
5586 (package (inherit python-llfuse)
229b3661 5587 (version "0.41.1")
cd0569c4
LF
5588 (source (origin
5589 (method url-fetch)
5590 (uri (string-append
5591 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
5592 "llfuse-" version ".tar.bz2"))
5593 (sha256
5594 (base32
229b3661 5595 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
5596 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
5597 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 5598 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
5599
5600(define-public python-msgpack
5601 (package
5602 (name "python-msgpack")
aed625bd 5603 (version "0.4.8")
641c9871
LF
5604 (source (origin
5605 (method url-fetch)
ae831df4 5606 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
5607 (sha256
5608 (base32
aed625bd 5609 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 5610 (build-system python-build-system)
641c9871
LF
5611 (synopsis "MessagePack (de)serializer")
5612 (description "MessagePack is a fast, compact binary serialization format,
5613suitable for similar data to JSON. This package provides CPython bindings for
5614reading and writing MessagePack data.")
5615 (home-page "https://pypi.python.org/pypi/msgpack-python/")
3f641af0 5616 (license license:asl2.0)
bd74be7b
LF
5617 (properties `((python2-variant . ,(delay python2-msgpack))))))
5618
5619(define-public python2-msgpack
5620 (package (inherit (package-with-python2
5621 (strip-python2-variant python-msgpack)))
5622 (native-inputs
5623 `(("python2-setuptools" ,python2-setuptools)))))
641c9871
LF
5624
5625(define-public python2-msgpack
5626 (package-with-python2 python-msgpack))
6e5e39f4
CR
5627
5628(define-public python-netaddr
5629 (package
5630 (name "python-netaddr")
5631 (version "0.7.18")
5632 (source
5633 (origin
5634 (method url-fetch)
5635 (uri (string-append
5636 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
5637 version
5638 ".tar.gz"))
5639 (sha256
5640 (base32
5641 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
5642 (build-system python-build-system)
5643 (arguments `(#:tests? #f)) ;; No tests.
5644 (inputs
5645 `(("python-setuptools" ,python-setuptools)))
5646 (home-page "https://github.com/drkjam/netaddr/")
5647 (synopsis "Pythonic manipulation of network addresses")
5648 (description
5649 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
5650and MAC network addresses.")
3f641af0 5651 (license license:bsd-3)))
6e5e39f4
CR
5652
5653(define-public python2-netaddr
5654 (package-with-python2 python-netaddr))
8c692a52
CR
5655
5656(define-public python-wrapt
5657 (package
5658 (name "python-wrapt")
5659 (version "1.10.5")
5660 (source
5661 (origin
5662 (method url-fetch)
5663 (uri (string-append
5664 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
5665 version
5666 ".tar.gz"))
5667 (sha256
5668 (base32
5669 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
5670 (build-system python-build-system)
5671 (arguments
5672 ;; Tests are not included in the tarball, they are only available in the
5673 ;; git repository.
5674 `(#:tests? #f))
5675 (inputs
5676 `(("python-setuptools" ,python-setuptools)))
5677 (home-page "https://github.com/GrahamDumpleton/wrapt")
5678 (synopsis "Module for decorators, wrappers and monkey patching")
5679 (description
5680 "The aim of the wrapt module is to provide a transparent object proxy for
5681 Python, which can be used as the basis for the construction of function
5682 wrappers and decorator functions.")
3f641af0 5683 (license license:bsd-2)))
8c692a52
CR
5684
5685(define-public python2-wrapt
5686 (package-with-python2 python-wrapt))
b85c85be
CR
5687
5688(define-public python-iso8601
5689 (package
5690 (name "python-iso8601")
fe84bc9a 5691 (version "0.1.11")
b85c85be
CR
5692 (source
5693 (origin
5694 (method url-fetch)
fe84bc9a 5695 (uri (pypi-uri "iso8601" version))
b85c85be 5696 (sha256
fe84bc9a
EF
5697 (base32
5698 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be
CR
5699 (build-system python-build-system)
5700 (inputs
5701 `(("python-setuptools" ,python-setuptools)))
5702 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
5703 (synopsis "Module to parse ISO 8601 dates")
5704 (description
5705 "This module parses the most common forms of ISO 8601 date strings (e.g.
5706@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
5707 (license license:expat)))
5708
5709(define-public python2-iso8601
5710 (package-with-python2 python-iso8601))
5e412b63
CR
5711
5712(define-public python-monotonic
5713 (package
5714 (name "python-monotonic")
5715 (version "0.3")
5716 (source
5717 (origin
5718 (method url-fetch)
5719 (uri (string-append
5720 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
5721 version
5722 ".tar.gz"))
5723 (sha256
5724 (base32
5725 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
5726 (build-system python-build-system)
5727 (inputs
5728 `(("python-setuptools" ,python-setuptools)))
5729 (home-page "https://github.com/atdt/monotonic")
5730 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
5731 (description
5732 "This module provides a monotonic() function which returns the value (in
5733fractional seconds) of a clock which never goes backwards.")
3f641af0 5734 (license license:asl2.0)))
5e412b63
CR
5735
5736(define-public python2-monotonic
5737 (package-with-python2 python-monotonic))
de34afac
CR
5738
5739(define-public python-webob
5740 (package
5741 (name "python-webob")
b8834c21 5742 (version "1.5.1")
de34afac
CR
5743 (source
5744 (origin
5745 (method url-fetch)
b8834c21 5746 (uri (pypi-uri "WebOb" version))
de34afac
CR
5747 (sha256
5748 (base32
b8834c21 5749 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac
CR
5750 (build-system python-build-system)
5751 (inputs
5752 `(("python-nose" ,python-nose)
5753 ("python-setuptools" ,python-setuptools)))
5754 (home-page "http://webob.org/")
5755 (synopsis "WSGI request and response object")
5756 (description
5757 "WebOb provides wrappers around the WSGI request environment, and an
5758object to help create WSGI responses.")
5759 (license license:expat)))
5760
5761(define-public python2-webob
5762 (package-with-python2 python-webob))
350ba0a3 5763
02a8a187
BW
5764(define-public python-xlrd
5765 (package
5766 (name "python-xlrd")
5767 (version "0.9.4")
5768 (source (origin
5769 (method url-fetch)
5770 (uri (string-append "https://pypi.python.org/packages/source/x/"
5771 "xlrd/xlrd-" version ".tar.gz"))
5772 (sha256
5773 (base32
5774 "0wpa55nvidmm5m2qr622dsh3cj46akdk0h3zjgzschcmydck73cf"))))
5775 (build-system python-build-system)
5776 (arguments
5777 `(#:phases
5778 (modify-phases %standard-phases
5779 ;; Current test in setup.py does not work as of 0.9.4, so use nose to
5780 ;; run tests instead for now.
5781 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5782 (native-inputs `(("python-nose" ,python-nose)
5783 ("python-setuptools" ,python-setuptools)))
5784 (home-page "http://www.python-excel.org/")
5785 (synopsis "Library for extracting data from Excel files")
5786 (description "This packages provides a library to extract data from
c598e35c 5787spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
5788@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
5789Unicode-aware. It is not intended as an end-user tool.")
3f641af0 5790 (license license:bsd-3)))
02a8a187
BW
5791
5792(define-public python2-xlrd
5793 (package-with-python2 python-xlrd))
5794
350ba0a3
CR
5795(define-public python-prettytable
5796 (package
5797 (name "python-prettytable")
5798 (version "0.7.2")
5799 (source
5800 (origin
5801 (method url-fetch)
5802 (uri (string-append
5803 "https://pypi.python.org/packages/source/P/PrettyTable/"
5804 "prettytable-" version ".tar.bz2"))
5805 (sha256
5806 (base32
5807 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
5808 (build-system python-build-system)
5809 (inputs
5810 `(("python-setuptools" ,python-setuptools)))
5811 (home-page "http://code.google.com/p/prettytable/")
5812 (synopsis "Display tabular data in an ASCII table format")
5813 (description
5814 "A library designed to represent tabular data in visually appealing ASCII
5815tables. PrettyTable allows for selection of which columns are to be printed,
5816independent alignment of columns (left or right justified or centred) and
5817printing of sub-tables by specifying a row range.")
3f641af0 5818 (license license:bsd-3)))
350ba0a3
CR
5819
5820(define-public python2-prettytable
5821 (package-with-python2 python-prettytable))
7a8ac75a 5822
9f8ee3fe
RW
5823(define-public python-tables
5824 (package
5825 (name "python-tables")
5826 (version "3.2.2")
5827 (source
5828 (origin
5829 (method url-fetch)
5830 (uri (pypi-uri "tables" version))
5831 (sha256
5832 (base32
5833 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))))
5834 (build-system python-build-system)
5835 (arguments
5836 `(;; FIXME: python-build-system does not pass configure-flags to "build"
5837 ;; or "check", so we must override the build and check phases.
5838 #:phases
5839 (modify-phases %standard-phases
5840 (add-after 'unpack 'use-gcc
5841 (lambda _
5842 (substitute* "setup.py"
5843 (("compiler = new_compiler\\(\\)" line)
5844 (string-append line
5845 "\ncompiler.set_executables(compiler='gcc',"
5846 "compiler_so='gcc',"
5847 "linker_exe='gcc',"
5848 "linker_so='gcc -shared')")))
5849 #t))
5850 (replace 'build
5851 (lambda* (#:key inputs #:allow-other-keys)
5852 (zero? (system* "python" "setup.py" "build"
5853 (string-append "--hdf5="
5854 (assoc-ref inputs "hdf5"))))))
5855 (replace 'check
5856 (lambda* (#:key inputs #:allow-other-keys)
5857 (zero? (system* "python" "setup.py" "check"
5858 (string-append "--hdf5="
5859 (assoc-ref inputs "hdf5")))))))))
5860 (propagated-inputs
5861 `(("python-numexpr" ,python-numexpr)
5862 ("python-numpy" ,python-numpy)))
5863 (native-inputs
5864 `(("python-setuptools" ,python-setuptools)
5865 ("python-cython" ,python-cython)
5866 ("pkg-config" ,pkg-config)))
5867 (inputs
5868 `(("hdf5" ,hdf5)
5869 ("bzip2" ,bzip2)
5870 ("zlib" ,zlib)))
5871 (home-page "http://www.pytables.org/")
5872 (synopsis "Hierarchical datasets for Python")
5873 (description "PyTables is a package for managing hierarchical datasets and
5874designed to efficently cope with extremely large amounts of data.")
3f641af0 5875 (license license:bsd-3)))
9f8ee3fe
RW
5876
5877(define-public python2-tables
5878 (package-with-python2 python-tables))
5879
7a8ac75a
RW
5880(define-public python-pyasn1
5881 (package
5882 (name "python-pyasn1")
5883 (version "0.1.8")
5884 (source
5885 (origin
5886 (method url-fetch)
5887 (uri (string-append "https://pypi.python.org/packages/source/p/"
5888 "pyasn1/pyasn1-" version ".tar.gz"))
5889 (sha256
5890 (base32
5891 "0iw31d9l0zwx35szkzq72hiw002wnqrlrsi9dpbrfngcl1ybwcsx"))))
5892 (build-system python-build-system)
5893 (home-page "http://pyasn1.sourceforge.net/")
5894 (synopsis "ASN.1 types and codecs")
5895 (description
5896 "This is an implementation of ASN.1 types and codecs in Python. It is
5897suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 5898 (license license:bsd-2)))
7a8ac75a
RW
5899
5900(define-public python2-pyasn1
5901 (package-with-python2 python-pyasn1))
9a49a535 5902
5988c299
EF
5903(define-public python-pyasn1-modules
5904 (package
5905 (name "python-pyasn1-modules")
5906 (version "0.0.8")
5907 (source
5908 (origin
5909 (method url-fetch)
5910 (uri (pypi-uri "pyasn1-modules" version))
5911 (sha256
5912 (base32
5913 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
5914 (build-system python-build-system)
5915 (native-inputs
5916 `(("python-setuptools" ,python-setuptools)))
5917 (propagated-inputs
5918 `(("python-pyasn1" ,python-pyasn1)))
5919 (home-page "http://sourceforge.net/projects/pyasn1/")
5920 (synopsis "ASN.1 codec implementations")
5921 (description
5922 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
5923implementations of ASN.1-based codecs and protocols.")
3f641af0 5924 (license license:bsd-3)))
5988c299
EF
5925
5926(define-public python2-pyasn1-modules
5927 (package-with-python2 python-pyasn1-modules))
5928
520af157 5929(define-public python-ipaddress
9a49a535 5930 (package
520af157
DC
5931 (name "python-ipaddress")
5932 (version "1.0.16")
5933 (source (origin
5934 (method url-fetch)
5935 (uri (pypi-uri "ipaddress" version))
5936 (sha256
5937 (base32
5938 "1c3imabdrw8nfksgjjflzg7h4ynjckqacb188rf541m74arq4cas"))))
9a49a535 5939 (build-system python-build-system)
9a49a535
RW
5940 (home-page "https://github.com/phihag/ipaddress")
5941 (synopsis "IP address manipulation library")
5942 (description
520af157
DC
5943 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
5944 in Python. This library is used to create, poke at, and manipulate IPv4 and
5945 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
5946 module to older versions of Python.")
5947 (license license:psfl)
5948 (properties `((python2-variant . ,(delay python2-ipaddress))))))
5949
5950(define-public python2-ipaddress
5951 (let ((base (package-with-python2 (strip-python2-variant python-ipaddress))))
5952 (package (inherit base)
5953 (native-inputs
5954 `(("python2-setuptools" ,python2-setuptools)
5955 ,@(package-native-inputs base))))))
3f00e078 5956
4a238186
HG
5957(define-public python2-ipaddr
5958 (package
5959 (name "python2-ipaddr")
5960 (version "2.1.11")
5961 (source
5962 (origin
5963 (method url-fetch)
5964 (uri (pypi-uri "ipaddr" version))
5965 (sha256
5966 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
5967 (build-system python-build-system)
5968 (arguments
5969 `(#:python ,python-2 ;version 2 only
5970 #:phases
5971 (modify-phases %standard-phases
5972 (replace 'check
5973 (lambda* _
5974 (zero? (system* "python" "ipaddr_test.py")))))))
5975 (home-page "https://github.com/google/ipaddr-py")
5976 (synopsis "IP address manipulation library")
5977 (description
5978 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
5979IPv6 addresses and networks.
5980
5981For new implementations you may prefer to use the standard module
5982@code{ipaddress}, which was introduced in Python 3.3 and backported to older
5983versions of Python.")
3f641af0 5984 (license license:asl2.0)))
4a238186 5985
3f00e078
RW
5986(define-public python-idna
5987 (package
5988 (name "python-idna")
5989 (version "2.0")
5990 (source
5991 (origin
5992 (method url-fetch)
5993 (uri (string-append "https://pypi.python.org/packages/source/i/"
5994 "idna/idna-" version ".tar.gz"))
5995 (sha256
5996 (base32
5997 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
5998 (build-system python-build-system)
5999 (native-inputs
6000 `(("python-setuptools" ,python-setuptools)))
6001 (home-page "https://github.com/kjd/idna")
6002 (synopsis "Internationalized domain names in applications")
6003 (description
6004 "This is a library to support the Internationalised Domain Names in
6005Applications (IDNA) protocol as specified in RFC 5891. This version of the
6006protocol is often referred to as “IDNA2008” and can produce different results
6007from the earlier standard from 2003. The library is also intended to act as a
6008suitable drop-in replacement for the “encodings.idna” module that comes with
6009the Python standard library but currently only supports the older 2003
6010specification.")
3f641af0 6011 (license license:bsd-4)))
3f00e078
RW
6012
6013(define-public python2-idna
6014 (package-with-python2 python-idna))
36ebf972
RW
6015
6016(define-public python-pretend
6017 (package
6018 (name "python-pretend")
6019 (version "1.0.8")
6020 (source
6021 (origin
6022 (method url-fetch)
6023 (uri (string-append "https://pypi.python.org/packages/source/p/"
6024 "pretend/pretend-" version ".tar.gz"))
6025 (sha256
6026 (base32
6027 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
6028 (build-system python-build-system)
6029 (native-inputs
6030 `(("python-setuptools" ,python-setuptools)))
6031 (home-page "https://github.com/alex/pretend")
6032 (synopsis "Library for stubbing in Python")
6033 (description
6034 "Pretend is a library to make stubbing with Python easier. Stubbing is a
6035technique for writing tests. You may hear the term mixed up with mocks,
6036fakes, or doubles. Basically, a stub is an object that returns pre-canned
6037responses, rather than doing any computation.")
3f641af0 6038 (license license:bsd-3)))
36ebf972
RW
6039
6040(define-public python2-pretend
6041 (package-with-python2 python-pretend))
aa759a51
RW
6042
6043(define-public python-cryptography-vectors
6044 (package
6045 (name "python-cryptography-vectors")
9c509ca9 6046 (version "1.3.4")
aa759a51
RW
6047 (source
6048 (origin
6049 (method url-fetch)
9c509ca9 6050 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
6051 (sha256
6052 (base32
9c509ca9 6053 "15h1iz2klnpb4f8djxy7cpbnyn3wbjp7bnj4pz6s7w6plghbq524"))))
aa759a51
RW
6054 (build-system python-build-system)
6055 (native-inputs
6056 `(("python-setuptools" ,python-setuptools)))
6057 (home-page "https://github.com/pyca/cryptography")
66e07664 6058 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
6059 (description
6060 "This package contains test vectors for the cryptography package.")
6061 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6062 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
6063
6064(define-public python2-cryptography-vectors
6065 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
6066
6067(define-public python-cryptography
6068 (package
6069 (name "python-cryptography")
9c509ca9 6070 (version "1.3.4")
88b47cb0
RW
6071 (source
6072 (origin
6073 (method url-fetch)
9c509ca9 6074 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
6075 (sha256
6076 (base32
9c509ca9 6077 "1a85l548w5vvq3yhz0az7ajg2ijixzp6gagapw6wgrqvq28ghgs2"))))
88b47cb0
RW
6078 (build-system python-build-system)
6079 (inputs
6080 `(("openssl" ,openssl)))
6081 (propagated-inputs
6082 `(("python-cffi" ,python-cffi)
6083 ("python-six" ,python-six)
6084 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
6085 ("python-idna" ,python-idna)
6086 ("python-iso8601" ,python-iso8601)))
6087 (native-inputs
6088 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 6089 ("python-hypothesis" ,python-hypothesis)
88b47cb0
RW
6090 ("python-setuptools" ,python-setuptools)
6091 ("python-pretend" ,python-pretend)
ce6c13ee
EF
6092 ("python-pyasn1" ,python-pyasn1)
6093 ("python-pyasn1-modules" ,python-pyasn1-modules)
88b47cb0
RW
6094 ("python-pytest" ,python-pytest)))
6095 (home-page "https://github.com/pyca/cryptography")
6096 (synopsis "Cryptographic recipes and primitives for Python")
6097 (description
6098 "cryptography is a package which provides cryptographic recipes and
6099primitives to Python developers. It aims to be the “cryptographic standard
6100library” for Python. The package includes both high level recipes, and low
6101level interfaces to common cryptographic algorithms such as symmetric ciphers,
6102message digests and key derivation functions.")
6103 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6104 (license (list license:bsd-3 license:asl2.0))
519e2f4f 6105 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
6106
6107(define-public python2-cryptography
519e2f4f
LF
6108 (let ((crypto (package-with-python2
6109 (strip-python2-variant python-cryptography))))
88b47cb0
RW
6110 (package (inherit crypto)
6111 (propagated-inputs
6112 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
6113 ("python2-backport-ssl-match-hostname"
6114 ,python2-backport-ssl-match-hostname)
68f1cdec 6115 ("python2-enum34" ,python2-enum34)
88b47cb0 6116 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
6117
6118(define-public python-pyopenssl
6119 (package
6120 (name "python-pyopenssl")
2fc629dd 6121 (version "16.0.0")
5af999b8
RW
6122 (source
6123 (origin
6124 (method url-fetch)
6125 (uri (string-append "https://pypi.python.org/packages/source/p/"
6126 "pyOpenSSL/pyOpenSSL-" version ".tar.gz"))
6127 (sha256
6128 (base32
2fc629dd 6129 "0zfijaxlq4vgi6jz0d4i5xq9ygqnyps6br7lmigjhqnh8gp10g9n"))))
5af999b8 6130 (build-system python-build-system)
5af999b8
RW
6131 (propagated-inputs
6132 `(("python-cryptography" ,python-cryptography)
6133 ("python-six" ,python-six)))
6134 (inputs
6135 `(("openssl" ,openssl)))
6136 (native-inputs
6137 `(("python-setuptools" ,python-setuptools)))
6138 (home-page "https://github.com/pyca/pyopenssl")
6139 (synopsis "Python wrapper module around the OpenSSL library")
6140 (description
6141 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
6142library.")
3f641af0 6143 (license license:asl2.0)))
5af999b8
RW
6144
6145(define-public python2-pyopenssl
519e2f4f 6146 (package-with-python2 python-pyopenssl))
643725a1
CR
6147
6148(define-public python-pip
6149 (package
6150 (name "python-pip")
6fb54e3b 6151 (version "8.0.2")
643725a1
CR
6152 (source
6153 (origin
6154 (method url-fetch)
6fb54e3b 6155 (uri (pypi-uri "pip" version))
643725a1
CR
6156 (sha256
6157 (base32
6fb54e3b 6158 "08cm8d4228fj0qnrysy3qv1a6022zr3dcs25amd14lgxil6vvx26"))))
643725a1
CR
6159 (build-system python-build-system)
6160 (inputs
6161 `(("python-setuptools" ,python-setuptools)
6162 ("python-virtualenv" ,python-virtualenv)
6163 ;; Tests
6164 ("python-mock" ,python-mock)
6165 ("python-pytest" ,python-pytest)
6166 ("python-scripttest" ,python-scripttest)))
6167 (home-page "https://pip.pypa.io/")
6168 (synopsis
6169 "Package manager for Python software")
6170 (description
6171 "Pip is a package manager for Python software, that finds packages on the
6172Python Package Index (PyPI).")
6173 (license license:expat)))
6174
6175(define-public python2-pip
6176 (package-with-python2 python-pip))
d8c4998f
LC
6177
6178(define-public python-tlsh
6179 (package
6180 (name "python-tlsh")
99b00dc7 6181 (version "3.4.4")
d8c4998f
LC
6182 (home-page "https://github.com/trendmicro/tlsh")
6183 (source (origin
99b00dc7
EF
6184 (method url-fetch)
6185 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
6186 version ".tar.gz"))
d8c4998f
LC
6187 (sha256
6188 (base32
99b00dc7
EF
6189 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
6190 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
6191 (build-system cmake-build-system)
6192 (arguments
6193 '(#:out-of-source? #f
6194 #:phases (modify-phases %standard-phases
6195 (replace
6196 'install
6197 (lambda* (#:key outputs #:allow-other-keys)
6198 ;; Build and install the Python bindings. The underlying
6199 ;; C++ library is apparently not meant to be installed.
6200 (let ((out (assoc-ref outputs "out")))
6201 (with-directory-excursion "py_ext"
6202 (and (system* "python" "setup.py" "build")
6203 (system* "python" "setup.py" "install"
6204 (string-append "--prefix=" out))))))))))
6205 (inputs `(("python" ,python-wrapper))) ;for the bindings
6206 (synopsis "Fuzzy matching library for Python")
6207 (description
6208 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
6209Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
6210value which can be used for similarity comparisons. Similar objects have
6211similar hash values, which allows for the detection of similar objects by
6212comparing their hash values. The byte stream should have a sufficient amount
6213of complexity; for example, a byte stream of identical bytes will not generate
6214a hash value.")
3f641af0 6215 (license license:asl2.0)))
d8c4998f
LC
6216
6217(define-public python2-tlsh
6218 (package
6219 (inherit python-tlsh)
6220 (name "python2-tlsh")
6221 (inputs `(("python" ,python-2)))))
d96034ed
LC
6222
6223(define-public python-libarchive-c
6224 (package
6225 (name "python-libarchive-c")
03fd001c 6226 (version "2.2")
d96034ed
LC
6227 (source (origin
6228 (method url-fetch)
03fd001c 6229 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
6230 (sha256
6231 (base32
03fd001c 6232 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
6233 (build-system python-build-system)
6234 (arguments
6235 '(#:phases (modify-phases %standard-phases
6236 (add-before
6237 'build 'reference-libarchive
6238 (lambda* (#:key inputs #:allow-other-keys)
6239 ;; Retain the absolute file name of libarchive.so.
6240 (let ((libarchive (assoc-ref inputs "libarchive")))
6241 (substitute* "libarchive/ffi.py"
6242 (("find_library\\('archive'\\)")
6243 (string-append "'" libarchive
6244 "/lib/libarchive.so'"))))
6245
6246 ;; Do not make a compressed egg (see
6247 ;; <http://bugs.gnu.org/20765>).
6248 (let ((port (open-file "setup.cfg" "a")))
6249 (display "\n[easy_install]\nzip_ok = 0\n"
6250 port)
6251 (close-port port)
6252 #t))))))
6253 (inputs
6254 `(("python-setuptools" ,python-setuptools)
6255 ("libarchive" ,libarchive)))
6256 (home-page "https://github.com/Changaco/python-libarchive-c")
6257 (synopsis "Python interface to libarchive")
6258 (description
6259 "This package provides Python bindings to libarchive, a C library to
6260access possibly compressed archives in many different formats. It uses
6261Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 6262 (license license:lgpl2.0+)))
d96034ed
LC
6263
6264(define-public python2-libarchive-c
6265 (package-with-python2 python-libarchive-c))
5e1c9367
LC
6266
6267(define-public python-file
6268 (package
6269 (inherit file)
6270 (name "python-file")
6271 (build-system python-build-system)
6272 (arguments
6273 '(#:tests? #f ;no tests
6274 #:phases (modify-phases %standard-phases
6275 (add-before 'build 'change-directory
6276 (lambda _
6277 (chdir "python")
6278 #t))
6279 (add-before 'build 'set-library-file-name
6280 (lambda* (#:key inputs #:allow-other-keys)
6281 (let ((file (assoc-ref inputs "file")))
6282 (substitute* "magic.py"
6283 (("find_library\\('magic'\\)")
6284 (string-append "'" file "/lib/libmagic.so'")))
6285 #t))))))
6286 (inputs `(("file" ,file)))
6287 (self-native-input? #f)
daeeea71
CM
6288 (synopsis "Python bindings to the libmagic file type guesser. Note that
6289this module and the python-magic module both provide a \"magic.py\" file;
6290these two modules, which are different and were developed separately, both
6291serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
6292
6293(define-public python2-file
6294 (package-with-python2 python-file))
85d4aeac
LC
6295
6296(define-public python-debian
6297 (package
6298 (name "python-debian")
6299 (version "0.1.23")
6300 (source
6301 (origin
6302 (method url-fetch)
6303 (uri (string-append
6304 "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
6305 version ".tar.gz"))
6306 (sha256
6307 (base32
6308 "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
6309 (build-system python-build-system)
6310 (inputs
6311 `(("python-six" ,python-six)))
6312 (native-inputs
6313 `(("python-setuptools" ,python-setuptools)))
6314 (home-page "http://packages.debian.org/sid/python-debian")
6315 (synopsis "Debian package related modules")
6316 (description
5c7bdc9a
LC
6317 ;; XXX: Use @enumerate instead of @itemize to work around
6318 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
6319 "This package provides Python modules that abstract many formats of
6320Debian-related files, such as:
6321
5c7bdc9a 6322@enumerate
85d4aeac
LC
6323@item Debtags information;
6324@item @file{debian/changelog} files;
6325@item packages files, pdiffs;
6326@item control files of single or multiple RFC822-style paragraphs---e.g.
6327 @file{debian/control}, @file{.changes}, @file{.dsc};
6328@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
6329 contained files and meta-information.
5c7bdc9a 6330@end enumerate\n")
85d4aeac
LC
6331
6332 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 6333 (license license:gpl3+)))
85d4aeac
LC
6334
6335(define-public python2-debian
6336 (package-with-python2 python-debian))
816a6538
LC
6337
6338(define-public python-chardet
6339 (package
6340 (name "python-chardet")
6341 (version "2.3.0")
6342 (source
6343 (origin
6344 (method url-fetch)
6345 (uri (string-append
6346 "https://pypi.python.org/packages/source/c/chardet/chardet-"
6347 version
6348 ".tar.gz"))
6349 (sha256
6350 (base32
6351 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
6352 (build-system python-build-system)
6353 (native-inputs
6354 `(("python-setuptools" ,python-setuptools)))
6355 (home-page "https://github.com/chardet/chardet")
6356 (synopsis "Universal encoding detector for Python 2 and 3")
6357 (description
6358 "This package provides @code{chardet}, a Python module that can
6359automatically detect a wide range of file encodings.")
3f641af0 6360 (license license:lgpl2.1+)))
816a6538
LC
6361
6362(define-public python2-chardet
6363 (package-with-python2 python-chardet))
2fc5f186 6364
1872f1bb
KM
6365(define-public python-docopt
6366 (package
6367 (name "python-docopt")
6368 (version "0.6.2")
6369 (source
6370 (origin
6371 (method url-fetch)
6372 ;; The release on PyPI does not include tests.
6373 (uri (string-append
6374 "https://github.com/docopt/docopt/archive/"
6375 version ".tar.gz"))
6376 (file-name (string-append name "-" version ".tar.gz"))
6377 (sha256
6378 (base32
6379 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
6380 (build-system python-build-system)
6381 (native-inputs
6382 `(("python-pytest" ,python-pytest)
6383 ("python-setuptools" ,python-setuptools)))
6384 (arguments
6385 `(#:phases (alist-replace
6386 'check
6387 (lambda _ (zero? (system* "py.test")))
6388 %standard-phases)))
6389 (home-page "http://docopt.org")
6390 (synopsis "Command-line interface description language for Python")
6391 (description "This library allows the user to define a command-line
6392interface from a program's help message rather than specifying it
6393programatically with command-line parsers like @code{getopt} and
6394@code{argparse}.")
6395 (license license:expat)))
6396
6397(define-public python2-docopt
6398 (package-with-python2 python-docopt))
6399
2fc5f186
LF
6400(define-public python-zope-event
6401 (package
6402 (name "python-zope-event")
6403 (version "4.1.0")
6404 (source
6405 (origin
6406 (method url-fetch)
6407 (uri (string-append "https://pypi.python.org/packages/source/z"
6408 "/zope.event/zope.event-" version ".tar.gz"))
6409 (sha256
6410 (base32
6411 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
6412 (build-system python-build-system)
6413 (inputs
6414 `(("python-setuptools" ,python-setuptools)))
6415 (home-page "http://pypi.python.org/pypi/zope.event")
6416 (synopsis "Event publishing system for Python")
6417 (description "Zope.event provides an event publishing API, intended for
6418use by applications which are unaware of any subscribers to their events. It
6419is a simple event-dispatching system on which more sophisticated event
6420dispatching systems can be built.")
3f641af0 6421 (license license:zpl2.1)))
2fc5f186
LF
6422
6423(define-public python2-zope-event
6424 (package-with-python2 python-zope-event))
97abe268
LF
6425
6426(define-public python-zope-interface
6427 (package
6428 (name "python-zope-interface")
6429 (version "4.1.3")
6430 (source
6431 (origin
6432 (method url-fetch)
6433 (uri (string-append "https://pypi.python.org/packages/source/z"
6434 "/zope.interface/zope.interface-" version ".tar.gz"))
6435 (sha256
6436 (base32
6437 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
6438 (build-system python-build-system)
6439 (propagated-inputs
6440 `(("python-zope-event" ,python-zope-event)))
6441 (home-page "https://github.com/zopefoundation/zope.interface")
6442 (synopsis "Python implementation of the \"design by contract\"
6443methodology")
6444 (description "Zope.interface provides an implementation of \"object
6445interfaces\" for Python. Interfaces are a mechanism for labeling objects as
6446conforming to a given API or contract.")
3f641af0 6447 (license license:zpl2.1)))
97abe268
LF
6448
6449(define-public python2-zope-interface
6450 (package-with-python2 python-zope-interface))
81f2373c
LF
6451
6452(define-public python-zope-exceptions
6453 (package
6454 (name "python-zope-exceptions")
6455 (version "4.0.8")
6456 (source
6457 (origin
6458 (method url-fetch)
6459 (uri (string-append "https://pypi.python.org/packages/source/z"
6460 "/zope.exceptions/zope.exceptions-"
6461 version ".tar.gz"))
6462 (sha256
6463 (base32
6464 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
6465 (build-system python-build-system)
6466 (arguments
6467 '(#:tests? #f)) ; circular dependency with zope.testrunner
6468 (propagated-inputs
6469 `(("python-zope-interface" ,python-zope-interface)))
6470 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
6471 (synopsis "Zope exceptions")
6472 (description "Zope.exceptions provides general-purpose exception types
6473that have uses outside of the Zope framework.")
3f641af0 6474 (license license:zpl2.1)))
81f2373c
LF
6475
6476(define-public python2-zope-exceptions
6477 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
6478
6479(define-public python-zope-testing
6480 (package
6481 (name "python-zope-testing")
6482 (version "4.5.0")
6483 (source
6484 (origin
6485 (method url-fetch)
6486 (uri (string-append "https://pypi.python.org/packages/source/z"
6487 "/zope.testing/zope.testing-" version ".tar.gz"))
6488 (sha256
6489 (base32
6490 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))))
6491 (build-system python-build-system)
6492 (native-inputs
6493 `(("python-zope-exceptions" ,python-zope-exceptions)))
6494 (propagated-inputs
6495 `(("python-zope-interface" ,python-zope-interface)))
6496 (home-page "http://pypi.python.org/pypi/zope.testing")
6497 (synopsis "Zope testing helpers")
6498 (description "Zope.testing provides a number of testing utilities for HTML
6499forms, HTTP servers, regular expressions, and more.")
3f641af0 6500 (license license:zpl2.1)))
900e3c0e
LF
6501
6502(define-public python2-zope-testing
6503 (package-with-python2 python-zope-testing))
01614c4f
LF
6504
6505(define-public python-zope-testrunner
6506 (package
6507 (name "python-zope-testrunner")
6508 (version "4.4.9")
6509 (source
6510 (origin
6511 (method url-fetch)
6512 (uri (string-append "https://pypi.python.org/packages/source/z"
6513 "/zope.testrunner/zope.testrunner-"
6514 version ".zip"))
6515 (sha256
6516 (base32
6517 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
6518 (build-system python-build-system)
6519 (native-inputs
6520 `(("python-six" ,python-six)
6521 ("python-zope-exceptions" ,python-zope-exceptions)
6522 ("python-zope-testing" ,python-zope-testing)
6523 ("unzip" ,unzip)))
6524 (propagated-inputs
6525 `(("python-zope-interface" ,python-zope-interface)))
6526 (home-page "http://pypi.python.org/pypi/zope.testrunner")
6527 (synopsis "Zope testrunner script")
6528 (description "Zope.testrunner provides a script for running Python
6529tests.")
3f641af0 6530 (license license:zpl2.1)))
01614c4f
LF
6531
6532(define-public python2-zope-testrunner
6533 (let ((base (package-with-python2 python-zope-testrunner)))
6534 (package
6535 (inherit base)
6536 (native-inputs
6537 (append (package-native-inputs base)
6538 `(("python2-subunit" ,python2-subunit)
6539 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
6540
6541(define-public python-zope-i18nmessageid
6542 (package
6543 (name "python-zope-i18nmessageid")
6544 (version "4.0.3")
6545 (source
6546 (origin
6547 (method url-fetch)
6548 (uri (string-append
6549 "https://pypi.python.org/packages/source/z"
6550 "/zope.i18nmessageid/zope.i18nmessageid-"
6551 version ".tar.gz"))
6552 (sha256
6553 (base32
6554 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
6555 (build-system python-build-system)
6556 (inputs
6557 `(("python-setuptools" ,python-setuptools)))
6558 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
6559 (synopsis "Message identifiers for internationalization")
6560 (description "Zope.i18nmessageid provides facilities for declaring
6561internationalized messages within program source text.")
3f641af0 6562 (license license:zpl2.1)))
6a5c710c
LF
6563
6564(define-public python2-zope-i18nmessageid
6565 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
6566
6567(define-public python-zope-schema
6568 (package
6569 (name "python-zope-schema")
6570 (version "4.4.2")
6571 (source
6572 (origin
6573 (method url-fetch)
6574 (uri (string-append "https://pypi.python.org/packages/source/z"
6575 "/zope.schema/zope.schema-" version ".tar.gz"))
6576 (sha256
6577 (base32
6578 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
6579 (build-system python-build-system)
6580 (propagated-inputs
6581 `(("python-zope-event" ,python-zope-event)
6582 ("python-zope-interface" ,python-zope-interface)))
6583 (native-inputs
6584 `(("python-zope-testing" ,python-zope-testing)))
6585 (home-page "http://pypi.python.org/pypi/zope.schema")
6586 (synopsis "Zope data schemas")
6587 (description "Zope.scheme provides extensions to zope.interface for
6588defining data schemas.")
3f641af0 6589 (license license:zpl2.1)))
71fb09f3
LF
6590
6591(define-public python2-zope-schema
6592 (package-with-python2 python-zope-schema))
fbac9b17
LF
6593
6594(define-public python-zope-configuration
6595 (package
6596 (name "python-zope-configuration")
6597 (version "4.0.3")
6598 (source (origin
6599 (method url-fetch)
6600 (uri (string-append "https://pypi.python.org/packages/source/z"
6601 "/zope.configuration/zope.configuration-"
6602 version ".tar.gz"))
6603 (sha256
6604 (base32
6605 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
6606 (build-system python-build-system)
6607 (propagated-inputs
6608 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6609 ("python-zope-schema" ,python-zope-schema)))
6610 (home-page "http://pypi.python.org/pypi/zope.configuration")
6611 (synopsis "Zope Configuration Markup Language")
6612 (description "Zope.configuration implements ZCML, the Zope Configuration
6613Markup Language.")
3f641af0 6614 (license license:zpl2.1)))
fbac9b17
LF
6615
6616(define-public python2-zope-configuration
6617 (package-with-python2 python-zope-configuration))
2ad52086
LF
6618
6619(define-public python-zope-proxy
6620 (package
6621 (name "python-zope-proxy")
6622 (version "4.1.6")
6623 (source
6624 (origin
6625 (method url-fetch)
6626 (uri (string-append "https://pypi.python.org/packages/source/z"
6627 "/zope.proxy/zope.proxy-" version ".tar.gz"))
6628 (sha256
6629 (base32
6630 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
6631 (build-system python-build-system)
6632 (propagated-inputs
6633 `(("python-zope-interface" ,python-zope-interface)))
6634 (home-page "http://pypi.python.org/pypi/zope.proxy")
6635 (synopsis "Generic, transparent proxies")
6636 (description "Zope.proxy provides generic, transparent proxies for Python.
6637Proxies are special objects which serve as mostly-transparent wrappers around
6638another object, intervening in the apparent behavior of the wrapped object
6639only when necessary to apply the policy (e.g., access checking, location
6640brokering, etc.) for which the proxy is responsible.")
3f641af0 6641 (license license:zpl2.1)))
2ad52086
LF
6642
6643(define-public python2-zope-proxy
6644 (package-with-python2 python-zope-proxy))
f404b5ea
LF
6645
6646(define-public python-zope-location
6647 (package
6648 (name "python-zope-location")
6649 (version "4.0.3")
6650 (source
6651 (origin
6652 (method url-fetch)
6653 (uri (string-append "https://pypi.python.org/packages/source/z"
6654 "/zope.location/zope.location-" version ".tar.gz"))
6655 (sha256
6656 (base32
6657 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
6658 (build-system python-build-system)
6659 (native-inputs
6660 `(("python-zope-proxy" ,python-zope-proxy)
6661 ("python-zope-schema" ,python-zope-schema)))
6662 (home-page "http://pypi.python.org/pypi/zope.location/")
6663 (synopsis "Zope location library")
6664 (description "Zope.location implements the concept of \"locations\" in
6665Zope3, which are are special objects that have a structural location.")
3f641af0 6666 (license license:zpl2.1)))
f404b5ea
LF
6667
6668(define-public python2-zope-location
6669 (package-with-python2 python-zope-location))
d4b77f36
LF
6670
6671(define-public python-zope-security
6672 (package
6673 (name "python-zope-security")
6674 (version "4.0.3")
6675 (source
6676 (origin
6677 (method url-fetch)
6678 (uri (string-append "https://pypi.python.org/packages/source/z"
6679 "/zope.security/zope.security-" version ".tar.gz"))
6680 (sha256
6681 (base32
6682 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
6683 (build-system python-build-system)
6684 (propagated-inputs
6685 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6686 ("python-zope-component" ,python-zope-component)
6687 ("python-zope-location" ,python-zope-location)
6688 ("python-zope-proxy" ,python-zope-proxy)
6689 ("python-zope-schema" ,python-zope-schema)
6690 ("python-zope-testrunner" ,python-zope-testrunner)
6691 ("python-zope-testing" ,python-zope-testing)))
6692 (home-page "http://pypi.python.org/pypi/zope.security")
6693 (synopsis "Zope security framework")
6694 (description "Zope.security provides a generic mechanism to implement
6695security policies on Python objects.")
3f641af0 6696 (license license:zpl2.1)))
d4b77f36
LF
6697
6698(define-public python2-zope-security
04417662
EF
6699 (let ((zope-security (package-with-python2 python-zope-security)))
6700 (package (inherit zope-security)
6701 (propagated-inputs
6702 `(("python2-zope-testrunner" ,python2-zope-testrunner)
6703 ,@(alist-delete
6704 "python-zope-testrunner"
6705 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
6706
6707(define-public python-zope-component
6708 (package
6709 (name "python-zope-component")
6710 (version "4.2.2")
6711 (source
6712 (origin
6713 (method url-fetch)
6714 (uri (string-append "https://pypi.python.org/packages/source/z"
6715 "/zope.component/zope.component-" version ".tar.gz"))
6716 (sha256
6717 (base32
6718 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
6719 (build-system python-build-system)
6720 (arguments
6721 ;; Skip tests due to circular dependency with python-zope-security.
6722 '(#:tests? #f))
6723 (native-inputs
6724 `(("python-zope-testing" ,python-zope-testing)))
6725 (propagated-inputs
6726 `(("python-zope-event" ,python-zope-event)
6727 ("python-zope-interface" ,python-zope-interface)
6728 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6729 ("python-zope-configuration" ,python-zope-configuration)))
6730 (home-page "https://github.com/zopefoundation/zope.component")
6731 (synopsis "Zope Component Architecture")
6732 (description "Zope.component represents the core of the Zope Component
6733Architecture. Together with the zope.interface package, it provides
6734facilities for defining, registering and looking up components.")
3f641af0 6735 (license license:zpl2.1)))
a6b61b27
LF
6736
6737(define-public python2-zope-component
6738 (package-with-python2 python-zope-component))
3859ac12 6739
1ae44b80 6740(define-public python-pythondialog
b5f218be 6741 (package
1ae44b80 6742 (name "python-pythondialog")
42c4b246 6743 (version "3.4.0")
b5f218be
LF
6744 (source
6745 (origin
6746 (method url-fetch)
1ae44b80 6747 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
6748 (sha256
6749 (base32
1ae44b80 6750 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
6751 (build-system python-build-system)
6752 (arguments
6753 `(#:phases
6754 (modify-phases %standard-phases
6755 (add-after 'unpack 'patch-path
6756 (lambda* (#:key inputs #:allow-other-keys)
6757 (let* ((dialog (assoc-ref inputs "dialog")))
6758 ;; Since this library really wants to grovel the search path, we
6759 ;; must hardcode dialog's store path into it.
6760 (substitute* "dialog.py"
6761 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
6762 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
6763 #t))))
b5f218be
LF
6764 #:tests? #f)) ; no test suite
6765 (propagated-inputs
6766 `(("dialog" ,dialog)))
6767 (home-page "http://pythondialog.sourceforge.net/")
6768 (synopsis "Python interface to the UNIX dialog utility")
6769 (description "A Python wrapper for the dialog utility. Its purpose is to
6770provide an easy to use, pythonic and comprehensive Python interface to dialog.
6771This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 6772 (license license:lgpl2.1)
1ae44b80
LF
6773 (properties `((python2-variant . ,(delay python2-pythondialog))))))
6774
6775(define-public python2-pythondialog
6776 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
6777 (package
6778 (inherit base)
6779 (version (package-version python-pythondialog))
6780 (source (origin
6781 (method url-fetch)
6782 (uri (pypi-uri "python2-pythondialog" version))
6783 (sha256
6784 (base32
6785 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 6786
3859ac12
LF
6787(define-public python-pyrfc3339
6788 (package
6789 (name "python-pyrfc3339")
d9aa097b 6790 (version "1.0")
3859ac12
LF
6791 (source
6792 (origin
6793 (method url-fetch)
d9aa097b 6794 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
6795 (sha256
6796 (base32
d9aa097b 6797 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
6798 (build-system python-build-system)
6799 (propagated-inputs
6800 `(("python-pytz" ,python-pytz)))
6801 (native-inputs
6802 `(("python-nose" ,python-nose)
6803 ("python-setuptools" ,python-setuptools)))
6804 (home-page "https://github.com/kurtraschke/pyRFC3339")
6805 (synopsis "Python timestamp library")
6806 (description "Python library for generating and parsing RFC 3339-compliant
6807timestamps.")
6808 (license license:expat)))
6809
6810(define-public python2-pyrfc3339
6811 (package-with-python2 python-pyrfc3339))
5eea2005
LF
6812
6813(define-public python-werkzeug
6814 (package
6815 (name "python-werkzeug")
4b47cbfa 6816 (version "0.11.5")
5eea2005
LF
6817 (source
6818 (origin
6819 (method url-fetch)
4b47cbfa 6820 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
6821 (sha256
6822 (base32
4b47cbfa 6823 "0r41xqp4cypzcgsf6zbspbqd272wnzf20igb4w4b5wzfhgqh9nxg"))))
5eea2005
LF
6824 (build-system python-build-system)
6825 (native-inputs
6826 `(("python-pytest" ,python-pytest)))
6827 (home-page "http://werkzeug.pocoo.org/")
6828 (synopsis "Utilities for WSGI applications")
6829 (description "One of the most advanced WSGI utility modules. It includes a
6830powerful debugger, full-featured request and response objects, HTTP utilities to
6831handle entity tags, cache control headers, HTTP dates, cookie handling, file
6832uploads, a powerful URL routing system and a bunch of community-contributed
6833addon modules.")
3f641af0 6834 (license license:x11)))
5eea2005
LF
6835
6836(define-public python2-werkzeug
6837 (package-with-python2 python-werkzeug))
99fffa8a
LF
6838
6839(define-public python-configobj
6840 (package
6841 (name "python-configobj")
6842 (version "5.0.6")
6843 (source (origin
6844 (method url-fetch)
6845 (uri (string-append
6846 "https://pypi.python.org/packages/source/c/configobj/"
6847 "configobj-" version ".tar.gz"))
6848 (sha256
6849 (base32
6850 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
6851 ;; Patch setup.py so it looks for python-setuptools, which is
6852 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 6853 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a
LF
6854 (build-system python-build-system)
6855 (native-inputs
6856 `(("python-setuptools" ,python-setuptools)
6857 ("python-six" ,python-six)))
6858 (synopsis "Config file reading, writing and validation")
6859 (description "ConfigObj is a simple but powerful config file reader and
6860writer: an ini file round tripper. Its main feature is that it is very easy to
6861use, with a straightforward programmer’s interface and a simple syntax for
6862config files.")
6863 (home-page "https://github.com/DiffSK/configobj")
3f641af0 6864 (license license:bsd-3)))
99fffa8a
LF
6865
6866(define-public python2-configobj
6867 (package-with-python2 python-configobj))
79e8a291
LF
6868
6869(define-public python-configargparse
6870 (package
6871 (name "python-configargparse")
6872 (version "0.10.0")
6873 (source (origin
6874 (method url-fetch)
6875 (uri (string-append
6876 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
6877 "ConfigArgParse-" version ".tar.gz"))
6878 (sha256
6879 (base32
6880 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
6881 (build-system python-build-system)
6882 (arguments
6883 ;; FIXME: Bug in test suite filed upstream:
6884 ;; https://github.com/bw2/ConfigArgParse/issues/32
6885 '(#:tests? #f))
6886 (synopsis "Replacement for argparse")
6887 (description "A drop-in replacement for argparse that allows options to also
6888be set via config files and/or environment variables.")
6889 (home-page "https://github.com/bw2/ConfigArgParse")
6890 (license license:expat)))
6891
6892(define-public python2-configargparse
6893 (package-with-python2 python-configargparse))
ab41f979
LF
6894
6895(define-public python-ndg-httpsclient
6896 (package
6897 (name "python-ndg-httpsclient")
6898 (version "0.4.0")
6899 (source (origin
6900 (method url-fetch)
6901 (uri (string-append
6902 "https://pypi.python.org/packages/source/n/ndg-httpsclient/"
6903 "ndg_httpsclient-" version ".tar.gz"))
6904 (sha256
6905 (base32
6906 "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8"))))
6907 (build-system python-build-system)
6908 (propagated-inputs
6909 `(("python-pyopenssl" ,python-pyopenssl)))
6910 (synopsis "HTTPS support for Python's httplib and urllib2")
6911 (description "This is a HTTPS client implementation for httplib and urllib2
6912based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
6913over the default provided with Python and importantly enables full verification
6914of the SSL peer.")
6915 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 6916 (license license:bsd-3)))
ab41f979
LF
6917
6918;; python2-openssl requires special care, so package-with-python2 is
6919;; insufficient.
6920(define-public python2-ndg-httpsclient
6921 (package (inherit python-ndg-httpsclient)
6922 (name "python2-ndg-httpsclient")
6923 (arguments `(#:python ,python-2))
6924 (propagated-inputs
6925 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
6926
6927(define-public python-contextlib2
6928 (package
6929 (name "python-contextlib2")
6930 (version "0.4.0")
6931 (source
6932 (origin
6933 (method url-fetch)
6934 (uri (pypi-uri "contextlib2" version))
6935 (sha256
6936 (base32
6937 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
6938 (build-system python-build-system)
6939 (arguments
6940 `(#:phases
6941 (modify-phases %standard-phases
6942 (replace 'check
6943 (lambda _ (zero?
6944 (system*
b3546174 6945 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
6946 (home-page "http://contextlib2.readthedocs.org/")
6947 (synopsis "Tools for decorators and context managers")
6948 (description "This module is primarily a backport of the Python
69493.2 contextlib to earlier Python versions. Like contextlib, it
6950provides utilities for common tasks involving decorators and context
6951managers. It also contains additional features that are not part of
6952the standard library.")
3f641af0 6953 (license license:psfl)))
03f964a5
CM
6954
6955(define-public python2-contextlib2
6956 (package-with-python2 python-contextlib2))
210bf497
DT
6957
6958(define-public python-texttable
6959 (package
6960 (name "python-texttable")
6961 (version "0.8.4")
6962 (source
6963 (origin
6964 (method url-fetch)
6965 (uri (pypi-uri "texttable" version))
6966 (sha256
6967 (base32
6968 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
6969 (build-system python-build-system)
6970 (arguments '(#:tests? #f)) ; no tests
6971 (home-page "https://github.com/foutaise/texttable/")
6972 (synopsis "Python module for creating simple ASCII tables")
6973 (description "Texttable is a Python module for creating simple ASCII
6974tables.")
3f641af0 6975 (license license:lgpl2.1+)))
210bf497
DT
6976
6977(define-public python2-texttable
6978 (package-with-python2 python-texttable))
67c52bb3
DT
6979
6980(define-public python-websocket-client
6981 (package
6982 (name "python-websocket-client")
6b810897 6983 (version "0.37.0")
67c52bb3
DT
6984 (source
6985 (origin
6986 (method url-fetch)
6b810897 6987 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
6988 (sha256
6989 (base32
6b810897 6990 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3
DT
6991 (build-system python-build-system)
6992 (native-inputs
6993 `(("python-six" ,python-six))) ; for tests
6994 (inputs
6995 `(("python-setuptools" ,python-setuptools)))
6996 (home-page "https://github.com/liris/websocket-client")
6997 (synopsis "WebSocket client for Python")
6998 (description "The Websocket-client module provides the low level APIs for
6999WebSocket usage in Python programs.")
3f641af0 7000 (license license:lgpl2.1+)))
67c52bb3
DT
7001
7002(define-public python2-websocket-client
7003 (package-with-python2 python-websocket-client))
5c6eea2a
LF
7004
7005(define-public python-atomicwrites
7006 (package
7007 (name "python-atomicwrites")
4e92d76a 7008 (version "1.1.0")
5c6eea2a
LF
7009 (source (origin
7010 (method url-fetch)
7011 (uri (pypi-uri "atomicwrites" version))
7012 (sha256
7013 (base32
4e92d76a 7014 "1s01dci8arsl9d9vr5nz1fk9znldp1z3l4yl43f0c27z12b8yxl0"))))
5c6eea2a
LF
7015 (build-system python-build-system)
7016 (synopsis "Atomic file writes in Python")
7017 (description "Library for atomic file writes using platform dependent tools
8f65585b 7018for atomic file system operations.")
5c6eea2a 7019 (home-page "https://github.com/untitaker/python-atomicwrites")
9bb6d184
LF
7020 (license license:expat)
7021 (properties `((python2-variant . ,(delay python2-atomicwrites))))))
7022
7023(define-public python2-atomicwrites
7024 (package (inherit (package-with-python2
7025 (strip-python2-variant python-atomicwrites)))
7026 (native-inputs
7027 `(("python2-setuptools" ,python2-setuptools)))))
561bb3cb
LF
7028
7029(define-public python-requests-toolbelt
7030 (package
7031 (name "python-requests-toolbelt")
c02af1c8 7032 (version "0.6.2")
561bb3cb
LF
7033 (source (origin
7034 (method url-fetch)
c02af1c8
LF
7035 (uri (string-append
7036 "https://pypi.python.org/packages/"
7037 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
7038 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
7039 (sha256
7040 (base32
c02af1c8 7041 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb
LF
7042 (build-system python-build-system)
7043 (propagated-inputs
7044 `(("python-requests" ,python-requests)))
7045 (synopsis "Extensions to python-requests")
7046 (description "This is a toolbelt of useful classes and functions to be used
7047with python-requests.")
7048 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 7049 (license license:asl2.0)))
d1deb90b
LF
7050
7051(define-public python-click-threading
7052 (package
7053 (name "python-click-threading")
3d2e0dbc 7054 (version "0.2.0")
d1deb90b
LF
7055 (source (origin
7056 (method url-fetch)
3d2e0dbc
LF
7057 (uri (string-append
7058 "https://pypi.python.org/packages/"
7059 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
7060 "click-threading-" version ".tar.gz"))
d1deb90b
LF
7061 (sha256
7062 (base32
3d2e0dbc 7063 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
7064 (build-system python-build-system)
7065 (propagated-inputs
7066 `(("python-click" ,python-click)))
7067 (synopsis "Utilities for multithreading in Click")
7068 (description "This package provides utilities for multithreading in Click
7069applications.")
7070 (home-page "https://github.com/click-contrib/click-threading")
7071 (license license:expat)))
7b17cab9
LF
7072
7073(define-public python-click-log
7074 (package
7075 (name "python-click-log")
a9da8fec 7076 (version "0.1.3")
7b17cab9
LF
7077 (source (origin
7078 (method url-fetch)
7079 (uri (pypi-uri "click-log" version))
7080 (sha256
7081 (base32
a9da8fec 7082 "0kdd1vminxpcfczxl2kkf285n0dr1gxh2cdbx1p6vkj7b7bci3gx"))))
7b17cab9
LF
7083 (build-system python-build-system)
7084 (propagated-inputs
7085 `(("python-click" ,python-click)))
7086 (synopsis "Logging for click applications")
7087 (description "This package provides a Python library for logging Click
7088applications.")
7089 (home-page "https://github.com/click-contrib/click-log")
7090 (license license:expat)))
7b3a4ee4
LF
7091
7092(define-public python-apipkg
7093 (package
7094 (name "python-apipkg")
7095 (version "1.4")
7096 (source (origin
7097 (method url-fetch)
7098 (uri (pypi-uri "apipkg" version))
7099 (sha256
7100 (base32
7101 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
7102 (build-system python-build-system)
b43bab3c 7103 (inputs
7b3a4ee4
LF
7104 `(("python-pytest" ,python-pytest)))
7105 (synopsis "Namespace control and lazy-import mechanism")
7106 (description "With apipkg you can control the exported namespace of a Python
7107package and greatly reduce the number of imports for your users. It is a small
7108pure Python module that works on virtually all Python versions.")
7109 (home-page "https://bitbucket.org/hpk42/apipkg")
e08739c3
CAW
7110 (license license:expat)
7111 (properties `((python2-variant . ,(delay python2-apipkg))))))
7112
7113(define-public python2-apipkg
7114 (package
7115 (inherit (package-with-python2
7116 (strip-python2-variant python-apipkg)))
7117 (native-inputs
7118 `(("python2-setuptools" ,python2-setuptools)))))
848964fe
LF
7119
7120(define-public python-execnet
7121 (package
7122 (name "python-execnet")
7123 (version "1.4.1")
7124 (source (origin
7125 (method url-fetch)
7126 (uri (pypi-uri "execnet" version))
7127 (sha256
7128 (base32
7129 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
7130 (build-system python-build-system)
7131 (native-inputs
7132 `(("python-setuptools-scm" ,python-setuptools-scm)))
584d068f 7133 (inputs
848964fe
LF
7134 `(("python-apipkg" ,python-apipkg)))
7135 (synopsis "Rapid multi-Python deployment")
7136 (description "Execnet provides a share-nothing model with
7137channel-send/receive communication for distributing execution across many
7138Python interpreters across version, platform and network barriers. It has a
7139minimal and fast API targetting the following uses:
7140@enumerate
7141@item distribute tasks to (many) local or remote CPUs
7142@item write and deploy hybrid multi-process applications
7143@item write scripts to administer multiple environments
7144@end enumerate")
7145 (home-page "http://codespeak.net/execnet/")
16c84f90
CAW
7146 (license license:expat)
7147 (properties `((python2-variant . ,(delay python2-execnet))))))
7148
7149(define-public python2-execnet
7150 (let ((execnet (package-with-python2
7151 (strip-python2-variant python-execnet))))
7152 (package
7153 (inherit execnet)
7154 (native-inputs
7155 `(("python2-setuptools" ,python2-setuptools)
7156 ,@(package-native-inputs execnet))))))
6720dbb4
LF
7157
7158;;; The software provided by this package was integrated into pytest 2.8.
7159(define-public python-pytest-cache
7160 (package
7161 (name "python-pytest-cache")
7162 (version "1.0")
7163 (source (origin
7164 (method url-fetch)
7165 (uri (pypi-uri "pytest-cache" version))
7166 (sha256
7167 (base32
7168 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
7169 (build-system python-build-system)
630d938f
EF
7170 (inputs
7171 `(("python-apipkg" ,python-apipkg)
7172 ("python-execnet" ,python-execnet)
7173 ("python-py" ,python-py)
7174 ("python-pytest" ,python-pytest)))
6720dbb4
LF
7175 (synopsis "Py.test plugin with mechanisms for caching across test runs")
7176 (description "The pytest-cache plugin provides tools to rerun failures from
7177the last py.test invocation.")
7178 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
0adc21c2
EF
7179 (license license:expat)
7180 (properties `((python2-variant . ,(delay python2-pytest-cache))))))
7181
7182(define-public python2-pytest-cache
7183 (let ((pytest-cache (package-with-python2
7184 (strip-python2-variant python-pytest-cache))))
7185 (package
7186 (inherit pytest-cache)
7187 (native-inputs
7188 `(("python2-setuptools" ,python2-setuptools)
7189 ,@(package-native-inputs pytest-cache))))))
d7e729fe
LF
7190
7191(define-public python-pytest-localserver
7192 (package
7193 (name "python-pytest-localserver")
29f20168 7194 (version "0.3.5")
d7e729fe
LF
7195 (source (origin
7196 (method url-fetch)
29f20168 7197 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
7198 (sha256
7199 (base32
29f20168 7200 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
7201 (build-system python-build-system)
7202 (arguments
7203 `(#:phases (modify-phases %standard-phases
7204 (replace 'check
7205 (lambda _
7206 (zero? (system* "py.test" "--genscript=runtests.py"))
7207 (zero? (system* "py.test")))))))
7208 (native-inputs
d7e729fe
LF
7209 `(("python-pytest" ,python-pytest)
7210 ("python-requests" ,python-requests)
9ba40f05
EF
7211 ("python-six" ,python-six)))
7212 (inputs
7213 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
7214 (synopsis "Py.test plugin to test server connections locally")
7215 (description "Pytest-localserver is a plugin for the pytest testing
7216framework which enables you to test server connections locally.")
7217 (home-page "https://pypi.python.org/pypi/pytest-localserver")
7218 (license license:expat)))
28cecbb7
LF
7219
7220(define-public python-wsgi-intercept
7221 (package
7222 (name "python-wsgi-intercept")
909fbd2b 7223 (version "1.2.2")
28cecbb7
LF
7224 (source (origin
7225 (method url-fetch)
909fbd2b
LF
7226 (uri (string-append
7227 "https://pypi.python.org/packages/"
7228 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
7229 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
7230 (sha256
7231 (base32
909fbd2b 7232 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7
LF
7233 (build-system python-build-system)
7234 (native-inputs
9d813ec1
EF
7235 `(("python-pytest" ,python-pytest)
7236 ("python-six" ,python-six)))
28cecbb7
LF
7237 (propagated-inputs
7238 `(("python-httplib2" ,python-httplib2)
7239 ("python-requests" ,python-requests)))
7240 (synopsis "Puts a WSGI application in place of a real URI for testing")
7241 (description "Wsgi_intercept installs a WSGI application in place of a real
7242URI for testing. Testing a WSGI application normally involves starting a
7243server at a local host and port, then pointing your test code to that address.
7244Instead, this library lets you intercept calls to any specific host/port
7245combination and redirect them into a WSGI application importable by your test
7246program. Thus, you can avoid spawning multiple processes or threads to test
7247your Web app.")
7248 (home-page "https://github.com/cdent/wsgi-intercept")
7249 (license license:expat)))
89b8a551
LF
7250
7251(define-public python-pytest-xprocess
7252 (package
7253 (name "python-pytest-xprocess")
7254 (version "0.9.1")
7255 (source (origin
7256 (method url-fetch)
7257 (uri (pypi-uri "pytest-xprocess" version))
7258 (sha256
7259 (base32
7260 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
7261 (build-system python-build-system)
7262 (propagated-inputs
7263 `(("python-pytest" ,python-pytest)
7264 ("python-pytest-cache" ,python-pytest-cache)
7265 ("python-psutil" ,python-psutil)))
7266 (synopsis "Pytest plugin to manage external processes across test runs")
7267 (description "Pytest-xprocess is an experimental py.test plugin for managing
7268processes across test runs.")
7269 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
7270 (license license:expat)))
5c299bf0
LF
7271
7272(define-public python-icalendar
7273 (package
7274 (name "python-icalendar")
f2f53353 7275 (version "3.10")
5c299bf0
LF
7276 (source (origin
7277 (method url-fetch)
7278 (uri (pypi-uri "icalendar" version))
7279 (sha256
7280 (base32
f2f53353 7281 "01amnk3621s7fagfla86npd25knbqirchg7h1jpqxqp103d02bs7"))))
5c299bf0
LF
7282 (build-system python-build-system)
7283 (propagated-inputs
7284 `(("python-dateutil-2" ,python-dateutil-2)
7285 ("python-pytz" ,python-pytz)))
7286 (synopsis "Python library for parsing iCalendar files")
7287 (description "The icalendar package is a parser/generator of iCalendar
7288files for use with Python.")
7289 (home-page "https://github.com/collective/icalendar")
3f641af0 7290 (license license:bsd-2)))
6bbbb53e
LF
7291
7292(define-public python-sphinxcontrib-newsfeed
7293 (package
7294 (name "python-sphinxcontrib-newsfeed")
7295 (version "0.1.4")
7296 (source (origin
7297 (method url-fetch)
7298 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
7299 (sha256
7300 (base32
7301 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
7302 (build-system python-build-system)
7303 (propagated-inputs
7304 `(("python-docutils" ,python-docutils)
7305 ("python-sphinx" ,python-sphinx)))
7306 (synopsis "News Feed extension for Sphinx")
7307 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
7308Blog, News or Announcements section to a Sphinx website.")
7309 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 7310 (license license:bsd-2)))
2216e15c
SB
7311
7312(define-public python-args
7313 (package
7314 (name "python-args")
7315 (version "0.1.0")
7316 (source (origin
7317 (method url-fetch)
7318 (uri (pypi-uri "args" version))
7319 (sha256
7320 (base32
7321 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
7322 (build-system python-build-system)
7323 (inputs
7324 `(("python-setuptools" ,python-setuptools)))
7325 (home-page "https://github.com/kennethreitz/args")
7326 (synopsis "Command-line argument parser")
7327 (description
7328 "This library provides a Python module to parse command-line arguments.")
3f641af0 7329 (license license:bsd-3)))
2216e15c
SB
7330
7331(define-public python2-args
7332 (package-with-python2 python-args))
c06a3de9
SB
7333
7334(define-public python-clint
7335 (package
7336 (name "python-clint")
7337 (version "0.5.1")
7338 (source (origin
7339 (method url-fetch)
7340 (uri (pypi-uri "clint" version))
7341 (sha256
7342 (base32
7343 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
7344 (build-system python-build-system)
7345 (inputs
7346 `(("python-args" ,python-args)
7347 ("python-setuptools" ,python-setuptools)))
7348 (home-page "https://github.com/kennethreitz/clint")
7349 (synopsis "Command-line interface tools")
7350 (description
7351 "Clint is a Python module filled with a set of tools for developing
7352command-line applications, including tools for colored and indented
7353output, progress bar display, and pipes.")
3f641af0 7354 (license license:isc)))
c06a3de9
SB
7355
7356(define-public python2-clint
7357 (package-with-python2 python-clint))
4ecdeef8
SB
7358
7359(define-public python-astor
7360 (package
7361 (name "python-astor")
7362 (version "0.5")
7363 (source (origin
7364 (method url-fetch)
7365 (uri (pypi-uri "astor" version))
7366 (sha256
7367 (base32
7368 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
7369 (build-system python-build-system)
7370 (inputs
7371 `(("python-setuptools" ,python-setuptools)))
7372 (home-page "https://github.com/berkerpeksag/astor")
7373 (synopsis "Read and write Python ASTs")
7374 (description
7375 "Astor is designed to allow easy manipulation of Python source via the
7376Abstract Syntax Tree.")
3f641af0 7377 (license license:bsd-3)))
4ecdeef8
SB
7378
7379(define-public python2-astor
7380 (package-with-python2 python-astor))
e224b7d0
SB
7381
7382(define-public python-rply
7383 (package
7384 (name "python-rply")
7385 (version "0.7.4")
7386 (source (origin
7387 (method url-fetch)
7388 (uri (pypi-uri "rply" version))
7389 (sha256
7390 (base32
7391 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
7392 (build-system python-build-system)
7393 (inputs
7394 `(("python-appdirs" ,python-appdirs)
7395 ("python-setuptools" ,python-setuptools)))
7396 (home-page "https://github.com/alex/rply")
7397 (synopsis "Parser generator for Python")
7398 (description
7399 "This package provides a pure Python based parser generator, that also
7400works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
7401with a new public API, and RPython support.")
3f641af0 7402 (license license:bsd-3)))
e224b7d0
SB
7403
7404(define-public python2-rply
7405 (package-with-python2 python-rply))
c3e919d7
SB
7406
7407(define-public python-hy
7408 (package
7409 (name "python-hy")
7410 (version "0.11.1")
7411 (source (origin
7412 (method url-fetch)
7413 (uri (pypi-uri "hy" version))
7414 (sha256
7415 (base32
7416 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
7417 (build-system python-build-system)
7418 (inputs
7419 `(("python-astor" ,python-astor)
7420 ("python-clint" ,python-clint)
7421 ("python-rply" ,python-rply)
7422 ("python-setuptools" ,python-setuptools)))
7423 (home-page "http://hylang.org/")
7424 (synopsis "Lisp frontend to Python")
7425 (description
7426 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
7427its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
7428Python at your fingertips, in Lisp form.")
7429 (license license:expat)))
7430
7431(define-public python2-hy
7432 (package-with-python2 python-hy))
7a5b944e 7433
81f7f297
EF
7434(define-public python-rauth
7435 (package
7436 (name "python-rauth")
7437 (version "0.7.2")
7438 (source
7439 (origin
7440 (method url-fetch)
7441 (uri (pypi-uri "rauth" version))
7442 (sha256
7443 (base32
7444 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
7445 (build-system python-build-system)
7446 (arguments
7447 `(#:test-target "check"))
0848d8d3 7448 (inputs
81f7f297
EF
7449 `(("python-requests" ,python-requests)))
7450 (home-page "https://github.com/litl/rauth")
7451 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
7452 (description
7453 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
7454provides service wrappers for convenient connection initialization and
7455authenticated session objects providing things like keep-alive.")
0848d8d3
EF
7456 (license license:expat)
7457 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
7458
7459(define-public python2-rauth
0848d8d3
EF
7460 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
7461 (package
7462 (inherit base)
7463 (native-inputs `(("python2-setuptools" ,python2-setuptools)
7464 ("python2-unittest2" ,python2-unittest2)
7465 ,@(package-native-inputs base))))))
81f7f297 7466
1abe448d
EF
7467(define-public python2-functools32
7468 (package
7469 (name "python2-functools32")
7470 (version "3.2.3-2")
7471 (source
7472 (origin
7473 (method url-fetch)
7474 (uri (pypi-uri "functools32" version))
7475 (sha256
7476 (base32
7477 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
7478 (build-system python-build-system)
7479 (arguments
7480 `(#:python ,python-2
7481 #:tests? #f)) ; no test target
7482 (native-inputs
7483 `(("python2-setuptools" ,python2-setuptools)))
7484 (home-page "https://github.com/MiCHiLU/python-functools32")
7485 (synopsis
7486 "Backport of the functools module from Python 3.2.3")
7487 (description
7488 "This package is a backport of the @code{functools} module from Python
74893.2.3 for use with older versions of Python and PyPy.")
7490 (license license:expat)))
7491
877889f3 7492(define-public python2-futures
7a5b944e 7493 (package
877889f3 7494 (name "python2-futures")
7a5b944e
EF
7495 (version "3.0.3")
7496 (source
7497 (origin
7498 (method url-fetch)
7499 (uri (pypi-uri "futures" version))
7500 (sha256
7501 (base32
7502 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
7503 (build-system python-build-system)
877889f3 7504 (arguments `(#:python ,python-2))
7a5b944e 7505 (native-inputs
877889f3 7506 `(("python2-setuptools" ,python2-setuptools)))
7a5b944e
EF
7507 (home-page "https://github.com/agronholm/pythonfutures")
7508 (synopsis
7509 "Backport of the concurrent.futures package from Python 3.2")
7510 (description
7511 "The concurrent.futures module provides a high-level interface for
7512asynchronously executing callables. This package backports the
7513concurrent.futures package from Python 3.2")
3f641af0 7514 (license license:bsd-3)))
7a5b944e 7515
5cb2fe44
EF
7516(define-public python-promise
7517 (package
7518 (name "python-promise")
7519 (version "0.4.2")
7520 (source
7521 (origin
7522 (method url-fetch)
7523 (uri (pypi-uri "promise" version))
7524 (sha256
7525 (base32
7526 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
7527 (build-system python-build-system)
7528 ;; Tests wants python-futures, which is a python2 only program, and
7529 ;; can't be found by python-promise at test time.
7530 (arguments `(#:tests? #f))
7531 (home-page "https://github.com/syrusakbary/promise")
7532 (synopsis "Promises/A+ implementation for Python")
7533 (description
7534 "Promises/A+ implementation for Python")
7535 (properties `((python2-variant . ,(delay python2-promise))))
7536 (license license:expat)))
7537
7538(define-public python2-promise
7539 (let ((promise (package-with-python2
7540 (strip-python2-variant python-promise))))
7541 (package (inherit promise)
7542 (arguments (substitute-keyword-arguments (package-arguments promise)
7543 ((#:tests? _) #t)))
7544 (native-inputs
7545 `(("python2-futures" ,python2-futures)
7546 ("python2-pytest" ,python2-pytest)
7547 ("python2-setuptools" ,python2-setuptools)
7548 ,@(package-native-inputs promise))))))
7549
c18f6368
EF
7550(define-public python-urllib3
7551 (package
7552 (name "python-urllib3")
7553 (version "1.13.1")
7554 (source
7555 (origin
7556 (method url-fetch)
7557 (uri (pypi-uri "urllib3" version))
7558 (sha256
7559 (base32
7560 "10rrbr6c6k7j5dvfsyj4b2gsgxg9gggnn708qixf6ll57xqivfkf"))))
7561 (build-system python-build-system)
7562 (arguments `(#:tests? #f))
7563 (native-inputs
7564 `(("python-setuptools" ,python-setuptools)
7565 ;; some packages for tests
7566 ("python-nose" ,python-nose)
7567 ("python-mock" ,python-mock)
7568 ("python-tornado" ,python-tornado)))
7569 (propagated-inputs
7570 `(;; packages for https security
7571 ("python-certifi" ,python-certifi)
7572 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
7573 ("python-pyasn1" ,python-pyasn1)
7574 ("python-pyopenssl" ,python-pyopenssl)))
7575 (home-page "http://urllib3.readthedocs.org/")
7576 (synopsis "HTTP library with thread-safe connection pooling")
7577 (description
7578 "Urllib3 supports features left out of urllib and urllib2 libraries. It
7579can reuse the same socket connection for multiple requests, it can POST files,
7580supports url redirection and retries, and also gzip and deflate decoding.")
7581 (license license:expat)))
7582
7583(define-public python2-urllib3
7584 (package-with-python2 python-urllib3))
2b2f2fc1
DT
7585
7586(define-public python-colorama
7587 (package
7588 (name "python-colorama")
7589 (version "0.3.3")
7590 (source
7591 (origin
7592 (method url-fetch)
7593 (uri (pypi-uri "colorama" version))
7594 (sha256
7595 (base32
7596 "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
7597 (build-system python-build-system)
7598 (inputs
7599 `(("python-setuptools" ,python-setuptools)))
7600 (synopsis "colored terminal text rendering for Python")
7601 (description "Colorama is a Python library for rendering colored terminal
7602text.")
7603 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 7604 (license license:bsd-3)))
2b2f2fc1
DT
7605
7606(define-public python2-colorama
7607 (package-with-python2 python-colorama))
f5bcec6e
DT
7608
7609(define-public python-rsa
7610 (package
7611 (name "python-rsa")
7612 (version "3.2")
7613 (source
7614 (origin
7615 (method url-fetch)
7616 (uri (pypi-uri "rsa" version))
7617 (sha256
7618 (base32
7619 "0xwp929g7lvb1sghxfpqlxvgg96qcwqdbhh27sjplx30n3xp3wrh"))))
7620 (build-system python-build-system)
7621 (inputs
7622 `(("python-pyasn1" ,python-pyasn1)
7623 ("python-setuptools" ,python-setuptools)))
7624 (synopsis "Pure-Python RSA implementation")
7625 (description "Python-RSA is a pure-Python RSA implementation. It supports
7626encryption and decryption, signing and verifying signatures, and key
7627generation according to PKCS#1 version 1.5. It can be used as a Python
7628library as well as on the command line.")
7629 (home-page "http://stuvel.eu/rsa")
3f641af0 7630 (license license:asl2.0)))
f5bcec6e
DT
7631
7632(define-public python2-rsa
7633 (package-with-python2 python-rsa))
c0aacfa5
DT
7634
7635(define-public python-pluggy
7636 (package
7637 (name "python-pluggy")
7638 (version "0.3.1")
7639 (source
7640 (origin
7641 (method url-fetch)
7642 (uri (pypi-uri "pluggy" version))
7643 (sha256
7644 (base32
7645 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
7646 (build-system python-build-system)
7647 (inputs
7648 `(("python-setuptools" ,python-setuptools)))
7649 (synopsis "Plugin and hook calling mechanism for Python")
7650 (description "Pluggy is an extraction of the plugin manager as used by
7651Pytest but stripped of Pytest specific details.")
7652 (home-page "https://pypi.python.org/pypi/pluggy")
7653 (license license:expat)))
7654
7655(define-public python2-pluggy
7656 (package-with-python2 python-pluggy))
a4af21ca
DT
7657
7658(define-public python-tox
7659 (package
7660 (name "python-tox")
7661 (version "2.3.1")
7662 (source
7663 (origin
7664 (method url-fetch)
7665 (uri (pypi-uri "tox" version))
7666 (sha256
7667 (base32
7668 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
7669 (build-system python-build-system)
7670 (arguments
7671 ;; FIXME: Tests require a newer version of pytest, but upgrading our
7672 ;; pytest breaks other packages.
7673 '(#:tests? #f))
7674 (inputs
7675 `(("python-setuptools" ,python-setuptools)
7676 ("python-pluggy" ,python-pluggy)
7677 ("python-py" ,python-py)
7678 ("python-virtualenv" ,python-virtualenv)
7679 ("python-pytest" ,python-pytest)))
7680 (home-page "http://tox.testrun.org/")
7681 (synopsis "Virtualenv-based automation of test activities")
7682 (description "Tox is a generic virtualenv management and test command line
7683tool. It can be used to check that a package installs correctly with
7684different Python versions and interpreters, or run tests in each type of
7685supported environment, or act as a frontend to continuous integration
7686servers.")
7687 (license license:expat)))
7688
7689(define-public python2-tox
7690 (package-with-python2 python-tox))
ba9da248
DT
7691
7692(define-public python-jmespath
7693 (package
7694 (name "python-jmespath")
7695 (version "0.9.0")
7696 (source
7697 (origin
7698 (method url-fetch)
7699 (uri (pypi-uri "jmespath" version))
7700 (sha256
7701 (base32
7702 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
7703 (build-system python-build-system)
7704 (inputs
7705 `(("python-setuptools" ,python-setuptools)))
7706 (synopsis "JSON Matching Expressions")
7707 (description "JMESPath (pronounced “james path”) is a Python library that
7708allows one to declaratively specify how to extract elements from a JSON
7709document.")
7710 (home-page "https://github.com/jmespath/jmespath.py")
7711 (license license:expat)))
7712
7713(define-public python2-jmespath
7714 (package-with-python2 python-jmespath))
935fcd5c
DT
7715
7716(define-public python-botocore
7717 (package
7718 (name "python-botocore")
7719 (version "1.3.17")
7720 (source
7721 (origin
7722 (method url-fetch)
7723 (uri (pypi-uri "botocore" version))
7724 (sha256
7725 (base32
7726 "08vpvdixx1c1lfv6vzjig68bpiir7wfyhzf49ysxgvhbprg5ra0w"))))
7727 (build-system python-build-system)
7728 (inputs
7729 `(("python-dateutil" ,python-dateutil-2)
7730 ("python-docutils" ,python-docutils)
7731 ("python-mock" ,python-mock)
7732 ("python-nose" ,python-nose)
7733 ("python-setuptools" ,python-setuptools)
7734 ("python-tox" ,python-tox)
7735 ("python-wheel" ,python-wheel)
7736 ("python-jmespath" ,python-jmespath)))
7737 (home-page "https://github.com/boto/botocore")
7738 (synopsis "Low-level interface to AWS")
7739 (description "Botocore is a Python library that provides a low-level
7740interface to the Amazon Web Services (AWS) API.")
3f641af0 7741 (license license:asl2.0)))
935fcd5c
DT
7742
7743(define-public python2-botocore
7744 (package-with-python2 python-botocore))
f861b8b8
DT
7745
7746(define-public awscli
7747 (package
7748 (name "awscli")
7749 (version "1.9.17")
7750 (source
7751 (origin
7752 (method url-fetch)
7753 (uri (string-append
7754 "https://pypi.python.org/packages/source/a/awscli/awscli-"
7755 version ".tar.gz"))
7756 (sha256
7757 (base32
7758 "1nj7jqvlpq57hfhby1njsbf8303gapa3njc4dramr6p3ffzvfi2i"))))
7759 (build-system python-build-system)
7760 (inputs
7761 `(("python-colorama" ,python-colorama)
7762 ("python-docutils" ,python-docutils)
7763 ("python-mock" ,python-mock)
7764 ("python-nose" ,python-nose)
7765 ("python-rsa" ,python-rsa)
7766 ("python-setuptools" ,python-setuptools)
7767 ("python-sphinx" ,python-sphinx)
7768 ("python-tox" ,python-tox)
7769 ("python-wheel" ,python-wheel)
7770 ("python-botocore" ,python-botocore)))
7771 (home-page "http://aws.amazon.com/cli/")
7772 (synopsis "Command line client for AWS")
7773 (description "AWS CLI provides a unified command line interface to the
7774Amazon Web Services (AWS) API.")
3f641af0 7775 (license license:asl2.0)))
6a44697d
LF
7776
7777(define-public python-hypothesis
7778 (package
7779 (name "python-hypothesis")
bea6d94d 7780 (version "3.1.0")
6a44697d
LF
7781 (source (origin
7782 (method url-fetch)
7783 (uri (pypi-uri "hypothesis" version))
7784 (sha256
7785 (base32
bea6d94d 7786 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 7787 (build-system python-build-system)
6a44697d
LF
7788 (propagated-inputs
7789 `(("python-flake8" ,python-flake8)
7790 ("python-pytest" ,python-pytest)))
7791 (synopsis "Library for property based testing")
7792 (description "Hypothesis is a library for testing your Python code against a
7793much larger range of examples than you would ever want to write by hand. It’s
7794based on the Haskell library, Quickcheck, and is designed to integrate
7795seamlessly into your existing Python unit testing work flow.")
7796 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 7797 (license license:mpl2.0)
6f068e08 7798 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
7799
7800(define-public python2-hypothesis
6f068e08
EF
7801 (let ((hypothesis (package-with-python2
7802 (strip-python2-variant python-hypothesis))))
7803 (package (inherit hypothesis)
7804 (native-inputs
7805 `(("python2-enum34" ,python2-enum34)
7806 ("python2-setuptools" ,python2-setuptools))))))
7517e73c
LF
7807
7808(define-public python-pytest-subtesthack
7809 (package
7810 (name "python-pytest-subtesthack")
7811 (version "0.1.1")
7812 (source (origin
7813 (method url-fetch)
7814 (uri (pypi-uri "pytest-subtesthack" version))
7815 (sha256
7816 (base32
7817 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
7818 (build-system python-build-system)
7819 (native-inputs
7820 `(;; setuptools required for python-2 variant
7821 ("python-setuptools" ,python-setuptools)))
7822 (propagated-inputs
7823 `(("python-pytest" ,python-pytest)))
7824 (synopsis "Set-up and tear-down fixtures for unit tests")
7825 (description "This plugin allows you to set up and tear down fixtures within
7826unit test functions that use @code{py.test}. This is useful for using
7827@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
7828function multiple times, without setting up or tearing down fixture state as is
7829normally the case.")
7830 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 7831 (license license:unlicense)))
7517e73c
LF
7832
7833(define-public python2-pytest-subtesthack
7834 (package-with-python2 python-pytest-subtesthack))
0bdc1671
CAW
7835
7836(define-public python2-xdo
7837 (package
7838 (name "python2-xdo")
7839 (version "0.2")
7840 (source (origin
7841 (method url-fetch)
7842 (uri (string-append
7843 "http://http.debian.net/debian/pool/main/p/python-xdo/"
7844 "python-xdo_" version ".orig.tar.gz"))
7845 (sha256
7846 (base32
7847 "1kl5c1p0dyxf62plnk6fl77ycfb4whwjms16r14dxx8kn90hlqz4"))))
7848 (build-system python-build-system)
7849 (arguments
7850 `(#:python ,python-2
7851 #:tests? #f)) ; no tests provided
7852 (inputs
7853 `(("xdotool" ,xdotool)
7854 ("libX11" ,libx11)))
7855 (home-page "https://tracker.debian.org/pkg/python-xdo")
7856 (synopsis "Python library for simulating X11 keyboard/mouse input")
7857 (description "Provides bindings to libxdo for manipulating X11 via simulated
7858input. (Note that this is mostly a legacy library; you may wish to look at
7859python-xdo for newer bindings.)")
3f641af0 7860 (license license:bsd-3)))
0bdc1671 7861
cb34dc6c
CAW
7862(define-public python-wtforms
7863 (package
7864 (name "python-wtforms")
7865 (version "2.1")
7866 (source
7867 (origin
7868 (method url-fetch)
7869 (uri (pypi-uri "WTForms" version ".zip"))
7870 (sha256
7871 (base32
7872 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
7873 (build-system python-build-system)
7874 (native-inputs
7875 `(("unzip" ,unzip)))
7876 (home-page "http://wtforms.simplecodes.com/")
7877 (synopsis
7878 "Form validation and rendering library for Python web development")
7879 (description
7880 "WTForms is a flexible forms validation and rendering library
7881for Python web development. It is very similar to the web form API
7882available in Django, but is a standalone package.")
3f641af0 7883 (license license:bsd-3)
cb34dc6c
CAW
7884 (properties `((python2-variant . ,(delay python2-wtforms))))))
7885
7886(define-public python2-wtforms
7887 (package
7888 (inherit (package-with-python2
7889 (strip-python2-variant python-wtforms)))
7890 (inputs `(("python2-setuptools" ,python2-setuptools)))))
50aaec25
DT
7891
7892(define-public python-mako
7893 (package
7894 (name "python-mako")
7895 (version "1.0.3")
7896 (source
7897 (origin
7898 (method url-fetch)
7899 (uri (pypi-uri "Mako" version))
7900 (sha256
7901 (base32
7902 "136kcjbs0s98qkx8a418b05dfblqp0kiiqyx8vhx4rarwc7bqi3n"))))
7903 (build-system python-build-system)
7904 (native-inputs
7905 `(("python-markupsafe" ,python-markupsafe)
7906 ("python-mock" ,python-mock)
7907 ("python-nose" ,python-nose)))
7908 (home-page "http://www.makotemplates.org/")
7909 (synopsis "Templating language for Python")
7910 (description "Mako is a templating language for Python that compiles
7911templates into Python modules.")
7912 (license license:expat)
7913 (properties `((python2-variant . ,(delay python2-mako))))))
7914
7915(define-public python2-mako
7916 (let ((base (package-with-python2
7917 (strip-python2-variant python-mako))))
7918 (package
7919 (inherit base)
7920 (native-inputs
7921 (cons `("python2-setuptools" ,python2-setuptools)
7922 (package-native-inputs base))))))
ae00a41f
CAW
7923
7924(define-public python-waitress
7925 (package
7926 (name "python-waitress")
7927 (version "0.8.10")
7928 (source
7929 (origin
7930 (method url-fetch)
7931 (uri (pypi-uri "waitress" version))
7932 (sha256
7933 (base32
7934 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
7935 (build-system python-build-system)
7936 (home-page "https://github.com/Pylons/waitress")
7937 (synopsis "Waitress WSGI server")
7938 (description "Waitress is meant to be a production-quality pure-Python WSGI
7939server with very acceptable performance.")
3f641af0 7940 (license license:zpl2.1)
ae00a41f
CAW
7941 (properties `((python2-variant . ,(delay python2-waitress))))))
7942
7943(define-public python2-waitress
7944 (package
7945 (inherit (package-with-python2
7946 (strip-python2-variant python-waitress)))
7947 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
778a284b
CAW
7948
7949(define-public python-wsgiproxy2
7950 (package
7951 (name "python-wsgiproxy2")
7952 (version "0.4.2")
7953 (source
7954 (origin
7955 (method url-fetch)
7956 (uri (pypi-uri "WSGIProxy2" version ".zip"))
7957 (sha256
7958 (base32
7959 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
7960 (build-system python-build-system)
7961 (native-inputs
7962 `(("unzip" ,unzip)
7963 ("python-nose" ,python-nose)
7964 ("python-coverage" ,python-coverage)))
7965 (propagated-inputs
7966 `(("python-six" ,python-six)
7967 ("python-webob" ,python-webob)))
7968 (home-page
7969 "https://github.com/gawel/WSGIProxy2/")
7970 (synopsis "WSGI Proxy with various http client backends")
7971 (description "WSGI turns HTTP requests into WSGI function calls.
7972WSGIProxy turns WSGI function calls into HTTP requests.
7973It also includes code to sign requests and pass private data,
7974and to spawn subprocesses to handle requests.")
7975 (license license:expat)
7976 (properties `((python2-variant . ,(delay python2-wsgiproxy2))))))
7977
7978(define-public python2-wsgiproxy2
7979 (let ((wsgiproxy2 (package-with-python2
7980 (strip-python2-variant python-wsgiproxy2))))
7981 (package
7982 (inherit wsgiproxy2)
7983 (inputs `(("python2-setuptools" ,python2-setuptools)
7984 ,@(package-inputs wsgiproxy2))))))
bb7518b1
CAW
7985
7986(define-public python-pastedeploy
7987 (package
7988 (name "python-pastedeploy")
7989 (version "1.5.2")
7990 (source
7991 (origin
7992 (method url-fetch)
7993 (uri (pypi-uri "PasteDeploy" version))
7994 (sha256
7995 (base32
7996 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
7997 (build-system python-build-system)
7998 (native-inputs
7999 `(("python-nose" ,python-nose)))
8000 (propagated-inputs
8001 ;; This package uses pkg_resources, part of setuptools, during runtime,
8002 ;; hence why not a native-input.
8003 `(("python-setuptools" ,python-setuptools)))
8004 (home-page "http://pythonpaste.org/deploy/")
8005 (synopsis
8006 "Load, configure, and compose WSGI applications and servers")
8007 (description
8008 "This tool provides code to load WSGI applications and servers from URIs;
8009these URIs can refer to Python Eggs for INI-style configuration files. Paste
8010Script provides commands to serve applications based on this configuration
8011file.")
8012 (license license:expat)))
8013
8014(define-public python2-pastedeploy
8015 (package-with-python2 python-pastedeploy))
1cf53652 8016
c4a7904c
CAW
8017(define-public python-paste
8018 (package
8019 (name "python-paste")
8020 (version "2.0.2")
8021 (source
8022 (origin
8023 (method url-fetch)
8024 (uri (pypi-uri "Paste" version))
8025 (sha256
8026 (base32
8027 "16dsv9qi0r4qsrsb6dilpq2rx0fnglvh36flzywcdnm2jg43mb5d"))
fc1adab1
AK
8028 (patches (search-patches "python-paste-remove-website-test.patch"
8029 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
8030 (build-system python-build-system)
8031 (native-inputs
8032 `(("python-nose" ,python-nose)))
8033 (propagated-inputs
8034 `(;; Uses pkg_resources provided by setuptools internally.
8035 ("python-setuptools" ,python-setuptools)
8036 ("python-six" ,python-six)))
8037 (arguments
8038 '(;; Tests don't pass on Python 3, but work fine on Python 2.
8039 ;; (As of 2.0.2, Python 3 support in Paste is presently a bit broken,
8040 ;; but is usable enough for the minimal amount it's used in MediaGoblin
8041 ;; still... things should be better by the next Paste release.)
8042 #:tests? #f))
8043 (home-page "http://pythonpaste.org")
8044 (synopsis
8045 "Python web development tools, focusing on WSGI")
8046 (description
8047 "Paste provides a variety of web development tools and middleware which
8048can be nested together to build web applications. Paste's design closely
8049follows ideas flowing from WSGI (Web Standard Gateway Interface).")
8050 (license license:expat)
8051 (properties `((python2-variant . ,(delay python2-paste))))))
8052
8053(define-public python2-paste
8054 (let ((paste (package-with-python2
8055 (strip-python2-variant python-paste))))
8056 (package
8057 (inherit paste)
8058 (arguments
8059 ;; Tests are back for Python 2!
8060 `(#:tests? #t
8061 ,@(package-arguments paste))))))
8062
a8f20f63
CAW
8063(define-public python-pastescript
8064 (package
8065 (name "python-pastescript")
8066 (version "2.0.2")
8067 (source
8068 (origin
8069 (method url-fetch)
8070 (uri (pypi-uri "PasteScript" version))
8071 (sha256
8072 (base32
8073 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
8074 (build-system python-build-system)
8075 (native-inputs
8076 `(("python-nose" ,python-nose)))
8077 (propagated-inputs
8078 `(;; Uses pkg_resources provided by setuptools internally.
8079 ("python-setuptools" ,python-setuptools)
8080 ("python-paste" ,python-paste)
8081 ("python-pastedeploy" ,python-pastedeploy)))
8082 (home-page "http://pythonpaste.org/script/")
8083 (arguments
8084 '(;; Unfortunately, this requires the latest unittest2,
8085 ;; but that requires traceback2 which requires linecache2 which requires
8086 ;; unittest2. So we're skipping tests for now.
8087 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
8088 ;; so in theory we could get around this situation somehow.)
8089 #:tests? #f))
8090 (synopsis
8091 "Pluggable command line tool for serving web applications and more")
8092 (description
8093 "PasteScript is a plugin-friendly command line tool which provides a
8094variety of features, from launching web applications to bootstrapping project
8095layouts.")
8096 (license license:expat)))
8097
8098(define-public python2-pastescript
8099 (package-with-python2 python-pastescript))
8100
1cf53652
CAW
8101(define-public python-pyquery
8102 (package
8103 (name "python-pyquery")
aab76e80 8104 (version "1.2.13")
1cf53652
CAW
8105 (source
8106 (origin
8107 (method url-fetch)
8108 (uri (pypi-uri "pyquery" version))
8109 (sha256
8110 (base32
aab76e80 8111 "0j9fsisip21qv4xljsg5dmni1pgpvwrjyyhhql0glydc4bs5rjgv"))))
1cf53652
CAW
8112 (build-system python-build-system)
8113 (propagated-inputs
8114 `(("python-lxml" ,python-lxml)
8115 ("python-cssselect" ,python-cssselect)))
8116 (home-page "https://github.com/gawel/pyquery")
8117 (synopsis "Make jQuery-like queries on xml documents")
8118 (description "pyquery allows you to make jQuery queries on xml documents.
8119The API is as much as possible the similar to jQuery. pyquery uses lxml for
8120fast xml and html manipulation.")
3f641af0 8121 (license license:bsd-3)
1cf53652
CAW
8122 (properties `((python2-variant . ,(delay python2-pyquery))))))
8123
8124(define-public python2-pyquery
8125 (let ((pyquery (package-with-python2
8126 (strip-python2-variant python-pyquery))))
8127 (package
8128 (inherit pyquery)
8129 (native-inputs `(("python2-setuptools" ,python2-setuptools))))))
aa6313d6
CAW
8130
8131(define-public python-webtest
8132 (package
8133 (name "python-webtest")
8134 (version "2.0.20")
8135 (source
8136 (origin
8137 (method url-fetch)
8138 (uri (pypi-uri "WebTest" version))
8139 (sha256
8140 (base32
8141 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
8142 (build-system python-build-system)
8143 (arguments
8144 `(;; Unfortunately we have to disable tests!
8145 ;; This release of WebTest is pinned to python-nose < 1.3,
8146 ;; but older versions of python-nose are plagued with the following
8147 ;; bug(s), which rears its ugly head during test execution:
8148 ;; https://github.com/nose-devs/nose/issues/759
8149 ;; https://github.com/nose-devs/nose/pull/811
8150 #:tests? #f))
8151 ;; Commented out code is no good, but in this case, once tests
8152 ;; are ready to be enabled again, we should put the following
8153 ;; in place:
8154 ;; (native-inputs
8155 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
8156 ;; ; but see above comment
8157 ;; ("python-coverage" ,python-coverage)
8158 ;; ("python-mock" ,python-mock)
8159 ;; ("python-pastedeploy" ,python-pastedeploy)
8160 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
8161 ;; ("python-pyquery" ,python-pyquery)))
8162 (propagated-inputs
8163 `(("python-waitress" ,python-waitress)
8164 ("python-webob" ,python-webob)
8165 ("python-six" ,python-six)
8166 ("python-beautifulsoup4" ,python-beautifulsoup4)))
8167 (home-page "http://webtest.pythonpaste.org/")
8168 (synopsis "Helper to test WSGI applications")
8169 (description "Webtest allows you to test your Python web applications
8170without starting an HTTP server. It supports anything that supports the
8171minimum of WSGI.")
8172 (license license:expat)
8173 (properties `((python2-variant . ,(delay python2-webtest))))))
8174
8175(define-public python2-webtest
8176 (let ((webtest (package-with-python2
8177 (strip-python2-variant python-webtest))))
8178 (package
8179 (inherit webtest)
8180 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8181 ,@(package-native-inputs webtest))))))
4cb122cd
CAW
8182
8183(define-public python-anyjson
8184 (package
8185 (name "python-anyjson")
8186 (version "0.3.3")
8187 (source
8188 (origin
8189 (method url-fetch)
8190 (uri (pypi-uri "anyjson" version))
8191 (sha256
8192 (base32
8193 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
8194 (build-system python-build-system)
8195 (arguments
8196 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
8197 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
8198 ;; whatever) so this transformation needs to be done before the tests
8199 ;; can be run. Maybe we could add a build step to transform beforehand
8200 ;; but it could be annoying/difficult.
8201 ;; We can enable tests for the Python 2 version, though, and do below.
8202 #:tests? #f))
8203 (home-page "http://bitbucket.org/runeh/anyjson/")
8204 (synopsis
8205 "Wraps best available JSON implementation in a common interface")
8206 (description
8207 "Anyjson loads whichever is the fastest JSON module installed
8208and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 8209 (license license:bsd-3)
4cb122cd
CAW
8210 (properties `((python2-variant . ,(delay python2-anyjson))))))
8211
8212(define-public python2-anyjson
8213 (let ((anyjson (package-with-python2
8214 (strip-python2-variant python-anyjson))))
8215 (package
8216 (inherit anyjson)
8217 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
8218 #:tests? #t
8219 ,@(package-arguments anyjson)))
8220 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8221 ("python2-nose" ,python2-nose))))))
8dfceab7
CAW
8222
8223(define-public python-amqp
8224 (package
8225 (name "python-amqp")
8226 (version "1.4.9")
8227 (source
8228 (origin
8229 (method url-fetch)
8230 (uri (pypi-uri "amqp" version))
8231 (sha256
8232 (base32
8233 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
8234 (build-system python-build-system)
8235 (native-inputs
8236 `(("python-nose" ,python-nose)
8237 ("python-mock" ,python-mock)))
8238 (home-page "http://github.com/celery/py-amqp")
8239 (synopsis
8240 "Low-level AMQP client for Python (fork of amqplib)")
8241 (description
8242 "This is a fork of amqplib which was originally written by Barry Pederson.
8243It is maintained by the Celery project, and used by kombu as a pure python
8244alternative when librabbitmq is not available.")
3f641af0 8245 (license license:lgpl2.1+)
8dfceab7
CAW
8246 (properties `((python2-variant . ,(delay python2-amqp))))))
8247
8248(define-public python2-amqp
8249 (let ((amqp (package-with-python2
8250 (strip-python2-variant python-amqp))))
8251 (package
8252 (inherit amqp)
8253 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
8254 ;; unmaintained. Weirdly, does not do this on the python 3
8255 ;; version?
8256 #:tests? #f
8257 ,@(package-arguments amqp)))
8258 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8259 ,@(package-native-inputs amqp))))))
7d387305
CAW
8260
8261(define-public python-kombu
8262 (package
8263 (name "python-kombu")
8264 (version "3.0.33")
8265 (source
8266 (origin
8267 (method url-fetch)
8268 (uri (pypi-uri "kombu" version))
8269 (sha256
8270 (base32
8271 "16brjx2lgwbj2a37d0pjbfb84nvld6irghmqrs3qfncajp51hgc5"))))
8272 (build-system python-build-system)
8273 (native-inputs
8274 `(("python-mock" ,python-mock)
8275 ("python-nose" ,python-nose)))
8276 (propagated-inputs
8277 `(("python-anyjson" ,python-anyjson)
8278 ("python-amqp" ,python-amqp)))
8279 (home-page "http://kombu.readthedocs.org")
8280 (synopsis "Message passing library for Python")
8281 (description "The aim of Kombu is to make messaging in Python as easy as
8282possible by providing an idiomatic high-level interface for the AMQ protocol,
8283and also provide proven and tested solutions to common messaging problems.
8284AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
8285message orientation, queuing, routing, reliability and security, for which the
8286RabbitMQ messaging server is the most popular implementation.")
3f641af0 8287 (license license:bsd-3)
7d387305
CAW
8288 (properties `((python2-variant . ,(delay python2-kombu))))))
8289
8290(define-public python2-kombu
8291 (let ((kombu (package-with-python2
8292 (strip-python2-variant python-kombu))))
8293 (package
8294 (inherit kombu)
8295 (inputs `(("python2-setuptools" ,python2-setuptools)
8296 ("python2-unittest2" ,python2-unittest2)
8297 ,@(package-inputs kombu))))))
b6f0b9fb
CAW
8298
8299(define-public python-billiard
8300 (package
8301 (name "python-billiard")
8302 (version "3.3.0.22")
8303 (source
8304 (origin
8305 (method url-fetch)
8306 (uri (pypi-uri "billiard" version))
8307 (sha256
8308 (base32
8309 "0zp7h6a58alrb3mwdw61jds07395j4j0mj6iqsb8czrihw9ih5nj"))))
8310 (build-system python-build-system)
8311 (native-inputs
8312 `(("python-nose" ,python-nose)))
8313 (home-page "http://github.com/celery/billiard")
8314 (synopsis
8315 "Python multiprocessing fork with improvements and bugfixes")
8316 (description
8317 "Billiard is a fork of the Python 2.7 multiprocessing package. The
8318multiprocessing package itself is a renamed and updated version of R Oudkerk's
8319pyprocessing package. This standalone variant is intended to be compatible with
8320Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 8321 (license license:bsd-3)
b6f0b9fb
CAW
8322 (properties `((python2-variant . ,(delay python2-billiard))))))
8323
8324(define-public python2-billiard
8325 (let ((billiard (package-with-python2
8326 (strip-python2-variant python-billiard))))
8327 (package
8328 (inherit billiard)
8329 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8330 ("python2-unittest2" ,python2-unittest2)
8331 ("python2-mock" ,python2-mock)
8332 ,@(package-native-inputs billiard))))))
22df6419
CAW
8333
8334(define-public python-celery
8335 (package
8336 (name "python-celery")
8337 (version "3.1.20")
8338 (source
8339 (origin
8340 (method url-fetch)
8341 (uri (pypi-uri "celery" version))
8342 (sha256
8343 (base32
8344 "1md6ywg1s0946qyp8ndnsd677wm0yax933h2sb4m3a4j7lf1jbyh"))))
8345 (build-system python-build-system)
8346 (native-inputs
8347 `(("python-nose" ,python-nose)))
a64cbb6f 8348 (inputs
22df6419 8349 `(("python-pytz" ,python-pytz)
a64cbb6f
EF
8350 ("python-amqp" ,python-amqp)
8351 ("python-anyjson" ,python-anyjson)
22df6419
CAW
8352 ("python-billiard" ,python-billiard)
8353 ("python-kombu" ,python-kombu)))
8354 (home-page "http://celeryproject.org")
8355 (synopsis "Distributed Task Queue")
8356 (description "Celery is an asynchronous task queue/job queue based on
8357distributed message passing. It is focused on real-time operation, but
8358supports scheduling as well. The execution units, called tasks, are executed
8359concurrently on a single or more worker servers using multiprocessing,
8360Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
8361synchronously (wait until ready).")
3f641af0 8362 (license license:bsd-3)
22df6419
CAW
8363 (properties `((python2-variant . ,(delay python2-celery))))))
8364
8365(define-public python2-celery
8366 (let ((celery (package-with-python2
8367 (strip-python2-variant python-celery))))
8368 (package
8369 (inherit celery)
8370 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8371 ("python2-unittest2" ,python2-unittest2)
8372 ("python2-mock" ,python2-mock)
8373 ,@(package-native-inputs celery))))))
97e32948
CAW
8374
8375(define-public python-translitcodec
8376 (package
8377 (name "python-translitcodec")
8378 (version "0.4.0")
8379 (source
8380 (origin
8381 (method url-fetch)
8382 (uri (pypi-uri "translitcodec" version))
8383 (sha256
8384 (base32
8385 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
8386 (build-system python-build-system)
8387 (arguments
8388 `(#:tests? #f)) ; no tests provided
8389 (home-page
8390 "https://github.com/claudep/translitcodec")
8391 (synopsis
8392 "Unicode to 8-bit charset transliteration codec")
8393 (description
8394 "This package contains codecs for transliterating ISO 10646 texts into
8395best-effort representations using smaller coded character sets (ASCII,
8396ISO 8859, etc.).")
8397 (license license:expat)
8398 (properties `((python2-variant . ,(delay python2-translitcodec))))))
8399
8400(define-public python2-translitcodec
8401 (package
8402 (inherit (package-with-python2
8403 (strip-python2-variant python-translitcodec)))
8404 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
0c3b90d4
CAW
8405
8406(define-public python-editor
8407 (package
8408 (name "python-editor")
8409 (version "0.5")
8410 (source
8411 (origin
8412 (method url-fetch)
8413 (uri (pypi-uri "python-editor" version))
8414 (sha256
8415 (base32
8416 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
8417 (build-system python-build-system)
8418 (home-page
8419 "https://github.com/fmoo/python-editor")
8420 (synopsis
8421 "Programmatically open an editor, capture the result")
8422 (description
8423 "python-editor is a library that provides the editor module for
8424programmatically interfacing with your system's $EDITOR.")
3f641af0 8425 (license license:asl2.0)
0c3b90d4
CAW
8426 (properties `((python2-variant . ,(delay python2-editor))))))
8427
8428(define-public python2-editor
8429 (package
8430 (inherit (package-with-python2
8431 (strip-python2-variant python-editor)))
8432 (inputs `(("python2-setuptools" ,python2-setuptools)))))
3276517c
LF
8433
8434(define-public python-sphinxcontrib-programoutput
8435 (package
8436 (name "python-sphinxcontrib-programoutput")
8437 (version "0.8")
8438 (source (origin
8439 (method url-fetch)
8440 (uri (pypi-uri "sphinxcontrib-programoutput" version))
8441 (sha256
8442 (base32
8443 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
8444 (build-system python-build-system)
8445 (propagated-inputs
8446 `(("python-docutils" ,python-docutils)
8447 ("python-sphinx" ,python-sphinx)))
8448 (synopsis "Sphinx extension to include program output")
8449 (description "A Sphinx extension to literally insert the output of arbitrary
8450commands into documents, helping you to keep your command examples up to date.")
8451 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
3f641af0 8452 (license license:bsd-2)
3276517c
LF
8453 (properties `((python2-variant . ,(delay python2-sphinxcontrib-programoutput))))))
8454
8455(define-public python2-sphinxcontrib-programoutput
8456 (package
8457 (inherit (package-with-python2
8458 (strip-python2-variant python-sphinxcontrib-programoutput)))
8459 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
548d7165
LF
8460
8461(define-public python-sphinx-repoze-autointerface
8462 (package
8463 (name "python-sphinx-repoze-autointerface")
328ae341 8464 (version "0.8")
548d7165
LF
8465 (source (origin
8466 (method url-fetch)
8467 (uri (pypi-uri "repoze.sphinx.autointerface" version))
8468 (sha256
8469 (base32
328ae341 8470 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165
LF
8471 (build-system python-build-system)
8472 (propagated-inputs
8473 `(("python-docutils" ,python-docutils)
8474 ("python-sphinx" ,python-sphinx)
8475 ("python-zope-interface" ,python-zope-interface)))
8476 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
8477 (description "This package defines an extension for the Sphinx documentation
8478system. The extension allows generation of API documentation by
8479introspection of @code{zope.interface} instances in code.")
8480 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 8481 (license license:repoze)))
548d7165
LF
8482
8483(define-public python2-sphinx-repoze-autointerface
8484 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
8485
8486(define-public python-psycopg2
8487 (package
8488 (name "python-psycopg2")
8489 (version "2.6.1")
8490 (source
8491 (origin
8492 (method url-fetch)
8493 (uri (pypi-uri "psycopg2" version))
8494 (sha256
8495 (base32
8496 "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva"))))
8497 (build-system python-build-system)
8498 (arguments
8499 ;; Tests would require a postgresql database "psycopg2_test"
8500 ;; and a running postgresql database management service.
8501 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
8502 (inputs
8503 `(("postgresql" ,postgresql))) ; libpq
8504 (home-page "http://initd.org/psycopg/")
8505 (synopsis "Python PostgreSQL adapter")
8506 (description
8507 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
3f641af0 8508 (license license:lgpl3+)
b31fbea5
DM
8509 (properties `((python2-variant . ,(delay python2-psycopg2))))))
8510
8511(define-public python2-psycopg2
8512 (package
8513 (inherit (package-with-python2
8514 (strip-python2-variant python-psycopg2)))
8515 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
eed1a61f
LF
8516
8517(define-public python-vobject
8518 (package
8519 (name "python-vobject")
9bed9b15 8520 (version "0.9.2")
eed1a61f
LF
8521 (source (origin
8522 (method url-fetch)
8523 (uri (pypi-uri "vobject" version))
8524 (sha256
8525 (base32
9bed9b15 8526 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
eed1a61f
LF
8527 (build-system python-build-system)
8528 (inputs
8529 `(("python-dateutil-2" ,python-dateutil-2)
8530 ("python-pyicu" ,python-pyicu)))
8531 (synopsis "Parse and generate vCard and vCalendar files")
8532 (description "Vobject is intended to be a full featured Python package for
8533parsing and generating vCard and vCalendar files. Currently, iCalendar files
8534are supported and well tested. vCard 3.0 files are supported, and all data
8535should be imported, but only a few components are understood in a sophisticated
8536way.")
8537 (home-page "http://eventable.github.io/vobject/")
3f641af0 8538 (license license:asl2.0)
eed1a61f
LF
8539 (properties `((python2-variant . ,(delay python2-vobject))))))
8540
8541(define-public python2-vobject
8542 (package
8543 (inherit (package-with-python2
8544 (strip-python2-variant python-vobject)))
8545 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
cedac813
LF
8546
8547(define-public python-munkres
8548 (package
8549 (name "python-munkres")
8550 (version "1.0.7")
8551 (source (origin
8552 (method url-fetch)
8553 (uri (pypi-uri "munkres" version))
8554 (sha256
8555 (base32
8556 "1i6nf45i0kkzdx6k70giybsqxz4dxsjbrkrfqgjd7znfkf25sjik"))))
8557 (build-system python-build-system)
8558 (arguments
8559 '(#:tests? #f)) ; no test suite
8560 (home-page "http://software.clapper.org/munkres/")
8561 (synopsis "Implementation of the Munkres algorithm")
8562 (description "The Munkres module provides an implementation of the Munkres
8563algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
8564useful for solving the Assignment Problem.")
3f641af0 8565 (license license:bsd-3)))
cedac813
LF
8566
8567(define-public python2-munkres
8568 (package-with-python2 python-munkres))
f3b3d78f
LF
8569
8570(define-public python-flask
8571 (package
8572 (name "python-flask")
8573 (version "0.10.1")
8574 (source (origin
8575 (method url-fetch)
8576 (uri (pypi-uri "Flask" version))
8577 (sha256
8578 (base32
8579 "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc"))))
8580 (build-system python-build-system)
8581 (propagated-inputs
8582 `(("python-itsdangerous" ,python-itsdangerous)
8583 ("python-jinja2" ,python-jinja2)
8584 ("python-werkzeug" ,python-werkzeug)))
8585 (home-page "https://github.com/mitsuhiko/flask/")
8586 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
8587 (description "Flask is a micro web framework based on the Werkzeug toolkit
8588and Jinja2 template engine. It is called a micro framework because it does not
8589presume or force a developer to use a particular tool or library.")
3f641af0 8590 (license license:bsd-3)
f3b3d78f
LF
8591 (properties `((python2-variant . ,(delay python2-flask))))))
8592
8593(define-public python2-flask
8594 (package (inherit (package-with-python2
8595 (strip-python2-variant python-flask)))
8596 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
603d665b
LF
8597
8598(define-public python-cookies
8599 (package
8600 (name "python-cookies")
8601 (version "2.2.1")
8602 (source (origin
8603 (method url-fetch)
8604 (uri (pypi-uri "cookies" version))
8605 (sha256
8606 (base32
8607 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
8608 (build-system python-build-system)
8609 (arguments
8610 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
8611 #:tests? #f))
8612 (native-inputs
8613 `(("python-pytest" ,python2-pytest)))
8614 (synopsis "HTTP cookie parser and renderer")
8615 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
8616Python.")
8617 (home-page "https://gitlab.com/sashahart/cookies")
8618 (license license:expat)
8619 (properties `((python2-variant . ,(delay python2-cookies))))))
8620
8621(define-public python2-cookies
8622 (let ((cookies (package-with-python2
8623 (strip-python2-variant python-cookies))))
8624 (package (inherit cookies)
8625 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8626 ,@(package-native-inputs cookies))))))
0efde7d6
LF
8627
8628(define-public python-responses
8629 (package
8630 (name "python-responses")
8631 (version "0.5.1")
8632 (source (origin
8633 (method url-fetch)
8634 (uri (pypi-uri "responses" version))
8635 (sha256
8636 (base32
8637 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
8638 (build-system python-build-system)
8639 (arguments
8640 `(;; Test suite is not distributed:
8641 ;; https://github.com/getsentry/responses/issues/38
8642 #:tests? #f))
8643 (native-inputs
8644 `(("python-cookies" ,python-cookies)
8645 ("python-mock" ,python-mock)))
8646 (propagated-inputs
8647 `(("python-requests" ,python-requests)
8648 ("python-six" ,python-six)))
8649 (home-page "https://github.com/getsentry/responses")
8650 (synopsis "Utility for mocking out the `requests` Python library")
8651 (description "A utility library for mocking out the `requests` Python
8652library.")
3f641af0 8653 (license license:asl2.0)
0efde7d6
LF
8654 (properties `((python2-variant . ,(delay python2-responses))))))
8655
8656(define-public python2-responses
8657 (let ((responses (package-with-python2
8658 (strip-python2-variant python-responses))))
8659 (package (inherit responses)
8660 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8661 ,@(package-native-inputs responses))))))
76b94885
LF
8662
8663(define-public python-pathlib
8664 (package
8665 (name "python-pathlib")
8666 (version "1.0.1")
8667 (source (origin
8668 (method url-fetch)
8669 (uri (pypi-uri "pathlib" version))
8670 (sha256
8671 (base32
8672 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
8673 (build-system python-build-system)
8674 (arguments
8675 `(#:phases
8676 (modify-phases %standard-phases
8677 (replace 'check
8678 (lambda _ (zero? (system* "python" "./test_pathlib.py")))))))
8679 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
8680 (synopsis "Object-oriented file system paths")
8681 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
8682It offers the following advantages over using string objects:
8683
8684@enumerate
8685@item No more cumbersome use of os and os.path functions. Everything can
8686be done easily through operators, attribute accesses, and method calls.
8687@item Embodies the semantics of different path types. For example,
8688comparing Windows paths ignores casing.
8689@item Well-defined semantics, eliminating any inconsistencies or
8690ambiguities (forward vs. backward slashes, etc.).
8691@end enumerate\n")
8692 (license license:expat)))
8693
8694(define-public python2-pathlib
8695 (package-with-python2 python-pathlib))
25a7db0a
LF
8696
8697(define-public python-jellyfish
8698 (package
8699 (name "python-jellyfish")
8700 (version "0.5.3")
8701 (source (origin
8702 (method url-fetch)
8703 (uri (pypi-uri "jellyfish" version))
8704 (sha256
8705 (base32
8706 "12bxh8cy9xmvyrjz7aw159nd5pyvb645rkvw4r6bvm4xbvs8gd07"))))
8707 (build-system python-build-system)
8708 (native-inputs
8709 `(("python-pytest" ,python-pytest)))
8710 (home-page "https://github.com/jamesturk/jellyfish")
8711 (synopsis "Approximate and phonetic matching of strings")
8712 (description "Jellyfish uses a variety of string comparison and phonetic
8713encoding algorithms to do fuzzy string matching.")
3f641af0 8714 (license license:bsd-2)
25a7db0a
LF
8715 (properties `((python2-variant . ,(delay python2-jellyfish))))))
8716
8717(define-public python2-jellyfish
8718 (let ((jellyfish (package-with-python2
8719 (strip-python2-variant python-jellyfish))))
8720 (package (inherit jellyfish)
8721 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8722 ("python2-unicodecsv" ,python2-unicodecsv)
8723 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
8724
8725(define-public python2-unicodecsv
8726 (package
8727 (name "python2-unicodecsv")
8728 (version "0.14.1")
8729 (source (origin
8730 (method url-fetch)
8731 ;; The test suite is not included in the PyPi release.
8732 ;; https://github.com/jdunck/python-unicodecsv/issues/19
8733 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
8734 "archive/" version ".tar.gz"))
8735 (file-name (string-append name "-" version ".tar.gz"))
8736 (sha256
8737 (base32
8738 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
8739 (build-system python-build-system)
8740 (arguments
8741 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
8742 #:python ,python-2))
8743 (native-inputs
8744 `(("python2-setuptools" ,python2-setuptools)
8745 ("python2-unittest2" ,python2-unittest2)))
8746 (home-page "https://github.com/jdunck/python-unicodecsv")
8747 (synopsis "Unicode CSV module for Python 2")
8748 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
8749module, adding support for Unicode strings.")
3f641af0 8750 (license license:bsd-2)))
064503aa
LF
8751
8752(define-public python-rarfile
8753 (package
8754 (name "python-rarfile")
8755 (version "2.7")
8756 (source (origin
8757 (method url-fetch)
8758 (uri (pypi-uri "rarfile" version))
8759 (sha256
8760 (base32
8761 "0d8n1dlpiz7av8dmbp0vclrwl9cnxizr4f2c9xvj1h5nvn480527"))
8762 ;; https://github.com/markokr/rarfile/pull/17/
fc1adab1 8763 (patches (search-patches "python-rarfile-fix-tests.patch"))))
064503aa
LF
8764 (build-system python-build-system)
8765 (arguments
8766 '(#:phases
8767 (modify-phases %standard-phases
8768 (replace 'check
8769 ;; Many tests fail, but the installation proceeds.
8770 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
8771 (native-inputs
8772 `(("which" ,which))) ; required for tests
8773 (propagated-inputs
8774 `(("libarchive" ,libarchive)))
8775 (home-page "https://github.com/markokr/rarfile")
8776 (synopsis "RAR archive reader for Python")
8777 (description "This is Python module for RAR archive reading. The interface
8778is made as zipfile like as possible.")
3f641af0 8779 (license license:isc)))
064503aa
LF
8780
8781(define-public python2-rarfile
8782 (package-with-python2 python-rarfile))
daeeea71
CM
8783
8784(define-public python-magic
8785 (package
8786 (name "python-magic")
8787 (version "0.4.3")
8788 (source
8789 (origin
8790 (method url-fetch)
8791 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
8792 version ".tar.gz"))
8793 (sha256
8794 (base32
8795 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
8796 (file-name (string-append name "-" version "-checkout"))))
8797 (build-system python-build-system)
8798 (arguments
8799 ;; The tests are unreliable, so don't run them. The tests fail
8800 ;; under Python3 because they were written for Python2 and
8801 ;; contain import statements that do not work in Python3. One of
8802 ;; the tests fails under Python2 because its assertions are
8803 ;; overly stringent; it relies on comparing output strings which
8804 ;; are brittle and can change depending on the version of
8805 ;; libmagic being used and the system on which the test is
8806 ;; running. In my case, under GuixSD 0.10.0, only one test
8807 ;; failed, and it seems to have failed only because the version
8808 ;; of libmagic that is packaged in Guix outputs a slightly
8809 ;; different (but not wrong) string than the one that the test
8810 ;; expected.
8811 '(#:tests? #f
8812 #:phases (modify-phases %standard-phases
8813 ;; Replace a specific method call with a hard-coded
8814 ;; path to the necessary libmagic.so file in the
8815 ;; store. If we don't do this, then the method call
8816 ;; will fail to find the libmagic.so file, which in
8817 ;; turn will cause any application using
8818 ;; python-magic to fail.
8819 (add-before 'build 'hard-code-path-to-libmagic
8820 (lambda* (#:key inputs #:allow-other-keys)
8821 (let ((file (assoc-ref inputs "file")))
8822 (substitute* "magic.py"
8823 (("ctypes.util.find_library\\('magic'\\)")
8824 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
8825 #t)))
8826 (add-before 'install 'disable-egg-compression
8827 (lambda _
8828 (let ((port (open-file "setup.cfg" "a")))
8829 (display "\n[easy_install]\nzip_ok = 0\n"
8830 port)
8831 (close-port port)
8832 #t))))))
daeeea71
CM
8833 (native-inputs
8834 `(("python-setuptools" ,python-setuptools)))
8835 (inputs
8836 ;; python-magic needs to be able to find libmagic.so.
8837 `(("file" ,file)))
8838 (home-page "https://github.com/ahupp/python-magic")
8839 (synopsis "File type identification using libmagic")
8840 (description
8841 "This module uses ctypes to access the libmagic file type
8842identification library. It makes use of the local magic database and
8843supports both textual and MIME-type output. Note that this module and
8844the python-file module both provide a \"magic.py\" file; these two
8845modules, which are different and were developed separately, both serve
8846the same purpose: to provide Python bindings for libmagic.")
8847 (license license:expat)))
8848
8849(define-public python2-magic
8850 (package-with-python2 python-magic))
12af303f
CM
8851
8852(define-public python2-s3cmd
8853 (package
8854 (name "python2-s3cmd")
8855 (version "1.6.1")
8856 (source
8857 (origin
8858 (method url-fetch)
de67e922 8859 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
8860 "s3cmd-" version ".tar.gz"))
8861 (sha256
8862 (base32
8863 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
8864 (build-system python-build-system)
8865 (arguments
8866 ;; s3cmd is written for python2 only and contains no tests.
8867 `(#:python ,python-2
8868 #:tests? #f))
8869 (native-inputs
8870 `(("python2-setuptools" ,python2-setuptools)))
8871 (inputs
8872 `(("python2-dateutil" ,python2-dateutil)
8873 ;; The python-file package also provides a magic.py module.
8874 ;; This is an unfortunate state of affairs; however, s3cmd
8875 ;; fails to install if it cannot find specifically the
8876 ;; python-magic package. Thus we include it, instead of using
8877 ;; python-file. Ironically, s3cmd sometimes works better
8878 ;; without libmagic bindings at all:
8879 ;; https://github.com/s3tools/s3cmd/issues/198
8880 ("python2-magic" ,python2-magic)))
8881 (home-page "http://s3tools.org/s3cmd")
8882 (synopsis "Command line tool for S3-compatible storage services")
8883 (description
8884 "S3cmd is a command line tool for uploading, retrieving and managing data
8885in storage services that are compatible with the Amazon Simple Storage
8886Service (S3) protocol, including S3 itself. It supports rsync-like backup,
8887GnuPG encryption, and more. It also supports management of Amazon's
8888CloudFront content delivery network.")
3f641af0 8889 (license license:gpl2+)))
4323a5f0
AE
8890
8891(define-public python-pkgconfig
8892 (package
8893 (name "python-pkgconfig")
8894 (version "1.1.0")
8895 (source
8896 (origin
8897 (method url-fetch)
8898 (uri (pypi-uri "pkgconfig" version))
8899 (sha256
8900 (base32
8901 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
8902 (build-system python-build-system)
8903 (native-inputs
8904 `(("python-nose" ,python-nose)
8905 ("python-setuptools" ,python-setuptools)))
8906 (inputs
8907 `(("pkg-config" ,pkg-config)))
8908 (arguments
8909 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
8910 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
8911 #:tests? #f
8912 ;; Prevent creation of the egg. This works around
8913 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
8914 #:configure-flags '("--single-version-externally-managed" "--root=/")
8915 ;; Hard-code the path to pkg-config.
8916 #:phases
8917 (modify-phases %standard-phases
8918 (add-before
8919 'build 'patch
8920 (lambda _
8921 (substitute* "pkgconfig/pkgconfig.py"
8922 (("cmd = 'pkg-config")
8923 (string-append "cmd = '" (which "pkg-config"))))
8924 #t)))))
8925 (home-page "http://github.com/matze/pkgconfig")
8926 (synopsis "Python interface for pkg-config")
8927 (description "This module provides a Python interface to pkg-config. It
8928can be used to find all pkg-config packages, check if a package exists,
8929check if a package meets certain version requirements, query CFLAGS and
8930LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 8931 (license license:expat)))
4323a5f0
AE
8932
8933(define-public python2-pkgconfig
8934 (package-with-python2 python-pkgconfig))
8935
2e697322
BW
8936(define-public python-bz2file
8937 (package
8938 (name "python-bz2file")
8939 (version "0.98")
8940 (source
8941 (origin
8942 (method url-fetch)
8943 (uri (pypi-uri "bz2file" version))
8944 (sha256
8945 (base32
8946 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
8947 (build-system python-build-system)
8948 (arguments
124df723 8949 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
8950 (home-page "https://github.com/nvawda/bz2file")
8951 (synopsis "Read and write bzip2-compressed files")
8952 (description
8953 "Bz2file is a Python library for reading and writing bzip2-compressed
8954files. It contains a drop-in replacement for the I/O interface in the
8955standard library's @code{bz2} module, including features from the latest
8956development version of CPython that are not available in older releases.")
3f641af0 8957 (license license:asl2.0)
2e697322
BW
8958 (properties `((python2-variant . ,(delay python2-bz2file))))))
8959
8960(define-public python2-bz2file
8961 (let ((base (package-with-python2
8962 (strip-python2-variant python-bz2file))))
8963 (package
8964 (inherit base)
8965 (native-inputs
124df723
BW
8966 `(("python2-setuptools" ,python2-setuptools)))
8967 (arguments
752bb447
BW
8968 `(#:python ,python-2
8969 #:phases
124df723
BW
8970 (modify-phases %standard-phases
8971 ;; 'python setup.py test' does not work as of 0.98.
8972 ;; There is only the one test file, so we run it directly.
8973 (replace 'check
8974 (lambda _ (zero? (system* "python"
8975 "test_bz2file.py"))))))))))
2e697322 8976
da4ac1aa
BW
8977(define-public python-future
8978 (package
8979 (name "python-future")
8980 (version "0.15.2")
8981 (source
8982 (origin
8983 (method url-fetch)
8984 (uri (pypi-uri "future" version))
8985 (sha256
8986 (base32
8987 "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx"))))
8988 (build-system python-build-system)
8989 ;; Many tests connect to the network or are otherwise flawed.
8990 ;; https://github.com/PythonCharmers/python-future/issues/210
8991 (arguments
8992 `(#:tests? #f))
8993 (home-page "http://python-future.org")
8994 (synopsis "Single-source support for Python 3 and 2")
8995 (description
8996 "@code{python-future} is the missing compatibility layer between Python 2 and
8997Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
8998to support both Python 2 and Python 3 with minimal overhead.")
8999 (license license:expat)
9000 (properties `((python2-variant . ,(delay python2-future))))))
9001
9002(define-public python2-future
9003 (let ((base (package-with-python2
9004 (strip-python2-variant python-future))))
9005 (package
9006 (inherit base)
9007 (native-inputs `(("python2-setuptools" ,python2-setuptools))))))
9008
8e451885
AE
9009(define-public python-cysignals
9010 (package
9011 (name "python-cysignals")
9012 (version "1.1.0")
9013 (source
9014 (origin
9015 (method url-fetch)
9016 (uri (pypi-uri "cysignals" version ".tar.bz2"))
9017 (sha256
9018 (base32
9019 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
9020 (build-system python-build-system)
9021 (native-inputs
9022 `(("python-cython" ,python-cython)
9023 ("python-setuptools" ,python-setuptools)
9024 ("python-sphinx" ,python-sphinx)))
9025 (inputs
9026 `(("pari-gp" ,pari-gp)))
9027 (arguments
9028 `(#:modules ((guix build python-build-system)
9029 ((guix build gnu-build-system) #:prefix gnu:)
9030 (guix build utils))
9031 ;; FIXME: Tests are executed after installation and currently fail
9032 ;; when not installing into standard locations; the author is working
9033 ;; on a fix.
9034 #:tests? #f
9035 #:phases
9036 (modify-phases %standard-phases
9037 (add-before
9038 'build 'configure
9039 (assoc-ref gnu:%standard-phases 'configure)))))
9040 (home-page
9041 "https://github.com/sagemath/cysignals")
9042 (synopsis
9043 "Handling of interrupts and signals for Cython")
9044 (description
9045 "The cysignals package provides mechanisms to handle interrupts (and
9046other signals and errors) in Cython code, using two related approaches,
9047for mixed Cython/Python code or external C libraries and pure Cython code,
9048respectively.")
3f641af0 9049 (license license:lgpl3+)))
8e451885
AE
9050
9051(define-public python2-cysignals
9052 (package-with-python2 python-cysignals))
9053
63bcec71
DM
9054(define-public python2-shedskin
9055 (package
9056 (name "python2-shedskin")
9057 (version "0.9.4")
9058 (source
9059 (origin
9060 (method url-fetch)
9061 (uri (string-append "https://github.com/shedskin/shedskin/"
9062 "releases/download/v" version
9063 "/shedskin-" version ".tgz"))
9064 (sha256
9065 (base32
9066 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
9067 (build-system python-build-system)
9068 (arguments
9069 `(#:python ,python-2
9070 #:phases (modify-phases %standard-phases
9071 (add-after 'unpack 'fix-resulting-include-libs
9072 (lambda* (#:key inputs #:allow-other-keys)
9073 (let ((libgc (assoc-ref inputs "libgc"))
9074 (pcre (assoc-ref inputs "pcre")))
9075 (substitute* "shedskin/makefile.py"
9076 (("variable == 'CCFLAGS':[ ]*")
9077 (string-append "variable == 'CCFLAGS':\n"
9078 " line += ' -I " pcre "/include"
9079 " -I " libgc "/include'"))
9080 (("variable == 'LFLAGS':[ ]*")
9081 (string-append "variable == 'LFLAGS':\n"
9082 " line += ' -L" pcre "/lib"
9083 " -L " libgc "/lib'")))
9084 #t))))))
9085 (native-inputs `(("python2-setuptools" ,python2-setuptools)))
9086 (inputs `(("pcre" ,pcre)
9087 ("libgc" ,libgc)))
9088 (home-page "https://shedskin.github.io/")
9089 (synopsis "Experimental Python-2 to C++ Compiler")
9090 (description (string-append "This is an experimental compiler for a subset of
9091Python. It generates C++ code and a Makefile."))
3f641af0 9092 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
9093
9094(define-public python2-rope
9095 (package
9096 (name "python2-rope")
9097 (version "0.10.3")
9098 (source
9099 (origin
9100 (method url-fetch)
9101 (uri (pypi-uri "rope" version))
9102 (sha256
9103 (base32
9104 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
9105 (arguments
9106 ;; Rope is currently python-2 only.
9107 ;; https://github.com/python-rope/rope/issues/57
9108 `(#:python ,python-2))
9109 (build-system python-build-system)
9110 (native-inputs
9111 `(("python2-unittest2" ,python2-unittest2)
9112 ("python2-setuptools" ,python2-setuptools)))
9113 (home-page "https://github.com/python-rope/rope")
9114 (synopsis "Refactoring library for Python")
9115 (description "Rope is a refactoring library for Python. It facilitates
9116the renaming, moving and extracting of attributes, functions, modules, fields
9117and parameters in Python 2 source code. These refactorings can also be applied
9118to occurences in strings and comments.")
3f641af0 9119 (license license:gpl2)))
6ba8ca17
9120
9121(define-public python-py3status
9122 (package
9123 (name "python-py3status")
d2262d70 9124 (version "3.1")
6ba8ca17
9125 (source
9126 (origin
9127 (method url-fetch)
9128 (uri (pypi-uri "py3status" version))
9129 (sha256
9130 (base32
d2262d70 9131 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17
9132 (build-system python-build-system)
9133 (native-inputs
9134 `(("python-setuptools" ,python-setuptools)))
9135 (home-page "https://github.com/ultrabug/py3status")
9136 (synopsis "Extensible i3status wrapper written in Python")
9137 (description "py3status is an i3status wrapper which extends i3status
9138functionality in a modular way, allowing you to extend your panel with your
9139own code, responding to click events and updating clock every second.")
3f641af0 9140 (license license:bsd-3)))
b8fdbca3
HG
9141
9142(define-public python-tblib
9143 (package
9144 (name "python-tblib")
9145 (version "1.3.0")
9146 (source (origin
9147 (method url-fetch)
9148 (uri (pypi-uri "tblib" version))
9149 (sha256 (base32
9150 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
9151 (build-system python-build-system)
9152 (arguments
9153 `(#:phases
9154 (modify-phases %standard-phases
9155 (replace 'check
9156 (lambda _
9157 ;; Upstream runs tests after installation and the package itself
9158 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
9159 ;; found.
9160 (setenv "PYTHONPATH"
9161 (string-append (getcwd) "/build/lib:"
9162 (getenv "PYTHONPATH")))
9163 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
9164 (native-inputs
9165 `(("python-pytest" ,python-pytest)
9166 ("python-setuptools" ,python-setuptools)
9167 ("python-six" ,python-six)))
9168 (home-page "https://github.com/ionelmc/python-tblib")
9169 (synopsis "Traceback serialization library")
9170 (description
9171 "Traceback serialization allows you to:
9172
9173@enumerate
9174@item Pickle tracebacks and raise exceptions with pickled tracebacks in
9175different processes. This allows better error handling when running code over
9176multiple processes (imagine multiprocessing, billiard, futures, celery etc).
9177
9178@item Parse traceback strings and raise with the parsed tracebacks.
9179@end itemize")
3f641af0 9180 (license license:bsd-3)))
b8fdbca3
HG
9181
9182(define-public python2-tblib
9183 (package-with-python2 python-tblib))
1a024de4
HG
9184
9185(define-public python-sqlparse
9186 (package
9187 (name "python-sqlparse")
9188 (version "0.1.19")
9189 (source (origin
9190 (method url-fetch)
9191 (uri (pypi-uri "sqlparse" version))
9192 (sha256
9193 (base32
9194 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
9195 (build-system python-build-system)
9196 (arguments
9197 `(#:phases
9198 (modify-phases %standard-phases
9199 (replace 'check
9200 (lambda* _
9201 ;; setup.py-integrated 2to3 only affects the build files, but
9202 ;; py.test is using the source files. So we need to convert them
9203 ;; manually.
9204 (when (zero? (system* "python3"))
9205 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
9206 (zero? (system* "py.test")))))))
9207 (native-inputs
9208 `(("python-pytest" ,python-pytest)
9209 ("python-setuptools" ,python-setuptools)))
9210 (home-page "https://github.com/andialbrecht/sqlparse")
9211 (synopsis "Non-validating SQL parser")
9212 (description "Sqlparse is a non-validating SQL parser for Python. It
9213provides support for parsing, splitting and formatting SQL statements.")
3f641af0 9214 (license license:bsd-3)))
1a024de4
HG
9215
9216(define-public python2-sqlparse
9217 (package-with-python2 python-sqlparse))
68b9d242
SB
9218
9219(define-public python-greenlet
9220 (package
9221 (name "python-greenlet")
9222 (version "0.4.9")
9223 (source (origin
9224 (method url-fetch)
9225 (uri (pypi-uri "greenlet" version))
9226 (sha256
9227 (base32
9228 "04h0m54dyqg49vyarq26mry6kbivnpl47rnmmrk9qn8wpfxviybr"))))
9229 (build-system python-build-system)
9230 (native-inputs
9231 `(("python-setuptools" ,python-setuptools)))
9232 (home-page "https://greenlet.readthedocs.io/")
9233 (synopsis "Lightweight in-process concurrent programming")
9234 (description
9235 "Greenlet package is a spin-off of Stackless, a version of CPython
9236that supports micro-threads called \"tasklets\". Tasklets run
9237pseudo-concurrently (typically in a single or a few OS-level threads) and
9238are synchronized with data exchanges on \"channels\".")
3f641af0 9239 (license (list license:psfl license:expat))))
68b9d242
SB
9240
9241(define-public python2-greenlet
9242 (package-with-python2 python-greenlet))
d79a343b
SB
9243
9244(define-public python-gevent
9245 (package
9246 (name "python-gevent")
9247 (version "1.1.1")
9248 (source (origin
9249 (method url-fetch)
9250 (uri (pypi-uri "gevent" version))
9251 (sha256
9252 (base32
9253 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
9254 (modules '((guix build utils)))
9255 (snippet
9256 '(begin
9257 ;; unbunding libev and c-ares
9258 (for-each delete-file-recursively '("libev" "c-ares"))
9259 ;; fixing testsuite
9260 (call-with-output-file "greentest/__init__.py" noop)
9261 (substitute* "greentest/testrunner.py"
9262 (("import util") "from . import util")
9263 (("from util import log") "from .util import log"))))))
9264 (build-system python-build-system)
9265 (propagated-inputs
9266 `(("python-greenlet" ,python-greenlet)))
9267 (native-inputs
9268 `(("python-setuptools" ,python-setuptools)
9269 ("python-six" ,python-six)))
9270 (inputs
9271 `(("c-ares" ,c-ares)
9272 ("libev" ,libev)))
9273 (home-page "http://www.gevent.org/")
9274 (synopsis "Coroutine-based network library")
9275 (description
9276 "gevent is a coroutine-based Python networking library that uses greenlet
9277to provide a high-level synchronous API on top of the libev event loop.")
9278 (license license:expat)))
9279
9280(define-public python2-gevent
9281 (package-with-python2 python-gevent))
da3aeeb6
SB
9282
9283(define-public python-twisted
9284 (package
9285 (name "python-twisted")
9286 (version "16.2.0")
9287 (source (origin
9288 (method url-fetch)
8ea8e8d3 9289 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
9290 (sha256
9291 (base32
9292 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
9293 (build-system python-build-system)
9294 (native-inputs
45912170
SB
9295 `(("python-setuptools" ,python-setuptools)))
9296 (propagated-inputs
9297 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
9298 (home-page "https://twistedmatrix.com/")
9299 (synopsis "Asynchronous networking framework written in Python")
9300 (description
9301 "Twisted is an extensible framework for Python programming, with special
9302focus on event-based network programming and multiprotocol integration.")
9303 (license license:expat)))
9304
9305(define-public python2-twisted
9306 (package-with-python2 python-twisted))
d0b6fed6 9307
4d3fa5a4
EF
9308(define-public python-pika
9309 (package
9310 (name "python-pika")
9311 (version "0.10.0")
9312 (source
9313 (origin
9314 (method url-fetch)
9315 (uri (pypi-uri "pika" version))
9316 (sha256
9317 (base32
9318 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
9319 (build-system python-build-system)
9320 (native-inputs
9321 `(("python-twisted" ,python-twisted)))
9322 (home-page "https://pika.readthedocs.org")
9323 (synopsis "Pure Python AMQP Client Library")
9324 (description
9325 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
9326Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
9327network support library.")
9328 (license license:bsd-3)))
9329
9330(define-public python2-pika
9331 (package-with-python2 python-pika))
9332
d0b6fed6
DM
9333(define-public python-ply
9334 (package
9335 (name "python-ply")
9336 (version "3.8")
9337 (source
9338 (origin
9339 (method url-fetch)
9340 (uri (string-append
9341 "https://pypi.python.org/packages/"
9342 "96/e0/430fcdb6b3ef1ae534d231397bee7e9304be14a47a267e82ebcb3323d0b5"
9343 "/ply-" version ".tar.gz"))
9344 (sha256
9345 (base32
9346 "1f70ipynmiy09k6px2j7v4w5cdrc21za3xs2k6f1bsvb0bzvvlg7"))))
9347 (build-system python-build-system)
9348 (home-page "http://www.dabeaz.com/ply/")
9349 (synopsis "Python Lex & Yacc")
9350 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
9351It uses LR parsing and does extensive error checking.")
3f641af0 9352 (license license:bsd-3)
d0b6fed6
DM
9353 (properties `((python2-variant . ,(delay python2-ply))))))
9354
9355(define-public python2-ply
9356 (package
9357 (inherit (package-with-python2
9358 (strip-python2-variant python-ply)))
9359 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
d951bd54
SB
9360
9361(define-public python-tabulate
9362 (package
9363 (name "python-tabulate")
9364 (version "0.7.5")
9365 (source (origin
9366 (method url-fetch)
9367 (uri (pypi-uri "tabulate" version))
9368 (sha256
9369 (base32
9370 "03l1r7ddd1a0j2snv1yd0hlnghjad3fg1an1jr8936ksv75slwch"))
9371 ;; Fix tests
9372 (modules '((guix build utils)))
9373 (snippet '(substitute* '("test/test_cli.py"
9374 "test/test_input.py"
9375 "test/test_output.py"
9376 "test/test_regression.py")
9377 (("from common") "from nose.tools")))))
9378 (build-system python-build-system)
9379 (native-inputs
9380 `(("python-setuptools" ,python-setuptools)
9381 ;; For testing
9382 ("python-nose" ,python-nose)))
9383 (home-page "https://bitbucket.org/astanin/python-tabulate")
9384 (synopsis "Pretty-print tabular data")
9385 (description
9386 "Tabulate is a library and command-line utility to pretty-print tabular
9387data in Python.")
9388 (license license:expat)))
9389
9390(define-public python2-tabulate
9391 (package-with-python2 python-tabulate))
1c4c8a33
SB
9392
9393(define-public python-kazoo
9394 (package
9395 (name "python-kazoo")
9396 (version "2.2.1")
9397 (source
9398 (origin
9399 (method url-fetch)
9400 (uri (pypi-uri "kazoo" version))
9401 (sha256
9402 (base32
9403 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
9404 (build-system python-build-system)
9405 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
9406 (native-inputs
c18899e8
SB
9407 `(("python-setuptools" ,python-setuptools)))
9408 (propagated-inputs
9409 `(("python-six" ,python-six)))
1c4c8a33
SB
9410 (home-page "https://kazoo.readthedocs.org")
9411 (synopsis "High-level Zookeeper client library")
9412 (description
9413 "Kazoo is a Python client library for the Apache Zookeeper distributed
9414application service. It is designed to be easy to use and to avoid common
9415programming errors.")
3f641af0 9416 (license license:asl2.0)))
1c4c8a33
SB
9417
9418(define-public python2-kazoo
9419 (package-with-python2 python-kazoo))
45dda35e
SB
9420
9421(define-public python-pykafka
9422 (package
9423 (name "python-pykafka")
9424 (version "2.4.0")
9425 (source (origin
9426 (method url-fetch)
c6bccf71
EF
9427 (uri (string-append
9428 "https://pypi.python.org/packages/8b/3e/"
9429 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
9430 "pykafka-" version ".tar.gz"))
45dda35e
SB
9431 (sha256
9432 (base32
9433 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
9434 (build-system python-build-system)
9435 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
9436 (native-inputs
c8fa3d9b
SB
9437 `(("python-setuptools" ,python-setuptools)))
9438 (propagated-inputs
45dda35e
SB
9439 `(("python-gevent" ,python-gevent)
9440 ("python-kazoo" ,python-kazoo)
45dda35e
SB
9441 ("python-tabulate" ,python-tabulate)))
9442 (inputs
9443 `(("librdkafka" ,librdkafka)))
9444 (home-page "https://pykafka.readthedocs.io/")
9445 (synopsis "Apache Kafka client for Python")
9446 (description
9447 "PyKafka is a client for the Apache Kafka distributed messaging system.
9448It includes Python implementations of Kafka producers and consumers, which
9449are optionally backed by a C extension built on librdkafka.")
3f641af0 9450 (license license:asl2.0)))
45dda35e
SB
9451
9452(define-public python2-pykafka
9453 (package-with-python2 python-pykafka))
a44fd439
DM
9454
9455(define-public python-wcwidth
9456 (package
9457 (name "python-wcwidth")
9458 (version "0.1.6")
9459 (source
9460 (origin
9461 (method url-fetch)
9462 (uri (string-append
9463 "https://pypi.python.org/packages/"
9464 "c2/d1/7689293086a8d5320025080cde0e3155b94ae0a7496fb89a3fbaa92c354a/"
9465 "wcwidth-" version ".tar.gz"))
9466 (sha256
9467 (base32
9468 "02wjrpf001gjdjsaxxbzcwfg19crlk2dbddayrfc2v06f53yrcyw"))))
9469 (build-system python-build-system)
9470 (home-page "https://github.com/jquast/wcwidth")
66e07664 9471 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
9472 (description "Wcwidth measures the number of terminal column cells of
9473wide-character codes. It is useful for those implementing a terminal emulator,
9474or programs that carefully produce output to be interpreted by one. It is a
9475Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
9476specified in POSIX.1-2001 and POSIX.1-2008.")
e4875826
LF
9477 (license license:expat)
9478 (properties `((python2-variant . ,(delay python2-wcwidth))))))
a44fd439
DM
9479
9480(define-public python2-wcwidth
9481 (package
9482 (inherit (package-with-python2
9483 (strip-python2-variant python-wcwidth)))
9484 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
0de78c95
DP
9485
9486(define-public python2-jsonrpclib
9487 (package
9488 (name "python2-jsonrpclib")
9489 (version "0.1.7")
9490 (source (origin
9491 (method url-fetch)
9492 (uri (string-append
9493 "https://pypi.python.org/packages/source/j/jsonrpclib/"
9494 "jsonrpclib-" version ".tar.gz"))
9495 (sha256
9496 (base32
9497 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
9498 (build-system python-build-system)
9499 (native-inputs
9500 `(("python2-setuptools" ,python2-setuptools)))
9501 (arguments
9502 `(#:tests? #f
9503 #:python ,python-2))
9504 (home-page "https://github.com/joshmarshall/jsonrpclib/")
9505 (synopsis "Implementation of JSON-RPC specification for Python")
9506 (description
9507 "This library is an implementation of the JSON-RPC specification.
9508It supports both the original 1.0 specification, as well as the
9509new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
9510etc.")
3f641af0 9511 (license license:asl2.0)))
9250b0f3
SB
9512
9513(define-public python-chai
9514 (package
9515 (name "python-chai")
9516 (version "1.1.1")
9517 (source (origin
9518 (method url-fetch)
9519 (uri (pypi-uri "chai" version))
9520 (sha256
9521 (base32
9522 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
9523 (build-system python-build-system)
9524 (native-inputs
9525 `(("python-setuptools" ,python-setuptools)))
9526 (home-page "https://github.com/agoragames/chai")
9527 (synopsis "Mocking framework for Python")
9528 (description
9529 "Chai provides an api for mocking, stubbing and spying your python
9530objects, patterned after the Mocha library for Ruby.")
3f641af0 9531 (license license:bsd-3)))
9250b0f3
SB
9532
9533(define-public python2-chai
9534 (package-with-python2 python-chai))
9535
ae43baa8
SB
9536(define-public python-arrow
9537 (package
9538 (name "python-arrow")
9539 (version "0.8.0")
9540 (source (origin
9541 (method url-fetch)
9542 (uri (pypi-uri "arrow" version))
9543 (sha256
9544 (base32
9545 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
9546 (build-system python-build-system)
9547 (native-inputs
9548 `(("python-setuptools" ,python-setuptools)
ae43baa8
SB
9549 ;; For testing
9550 ("python-chai" ,python-chai)
9551 ("python-simplejson" ,python-simplejson)))
36aed736
SB
9552 (propagated-inputs
9553 `(("python-dateutil" ,python-dateutil-2)))
ae43baa8
SB
9554 (home-page "https://github.com/crsmithdev/arrow/")
9555 (synopsis "Dates and times for Python")
9556 (description
9557 "Arrow is a Python library to creating, manipulating, formatting and
9558converting dates, times, and timestamps. It implements and updates the
9559datetime type.")
3f641af0 9560 (license license:asl2.0)))
ae43baa8
SB
9561
9562(define-public python2-arrow
9563 (package-with-python2 python-arrow))
9564
1f2b62a4
SB
9565(define-public python-inflection
9566 (package
9567 (name "python-inflection")
9568 (version "0.3.1")
9569 (source
9570 (origin (method url-fetch)
9571 (uri (pypi-uri "inflection" version))
9572 (sha256
9573 (base32
9574 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
9575 (build-system python-build-system)
9576 (native-inputs
9577 `(("python-setuptools" ,python-setuptools)))
9578 (home-page "http://github.com/jpvanhal/inflection")
9579 (synopsis "Python string transformation library")
9580 (description
9581 "Inflection is a string transformation library. It singularizes
9582and pluralizes English words, and transforms strings from CamelCase to
9583underscored string.")
9584 (license license:expat)))
9585
9586(define-public python2-inflection
9587 (package-with-python2 python-inflection))
9588
18995566
SB
9589(define-public python-pylev
9590 (package
9591 (name "python-pylev")
9592 (version "1.3.0")
9593 (source (origin
9594 (method url-fetch)
9595 (uri (pypi-uri "pylev" version))
9596 (sha256
9597 (base32
9598 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
9599 (build-system python-build-system)
9600 (native-inputs
9601 `(("python-setuptools" ,python-setuptools)))
9602 (home-page "http://github.com/toastdriven/pylev")
9603 (synopsis "Levenshtein distance implementation in Python")
9604 (description "Pure Python Levenshtein implementation, based off the
9605Wikipedia code samples at
9606@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 9607 (license license:bsd-3)))
18995566
SB
9608
9609(define-public python2-pylev
9610 (package-with-python2 python-pylev))
9611
f5deff7a
SB
9612(define-public python-cleo
9613 (package
9614 (name "python-cleo")
9615 (version "0.4.1")
9616 (source (origin
9617 (method url-fetch)
9618 (uri (pypi-uri "cleo" version))
9619 (sha256
9620 (base32
9621 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
9622 (build-system python-build-system)
9623 (native-inputs
9403150a 9624 `(("python-setuptools" ,python-setuptools)
f5deff7a
SB
9625 ;; For testing
9626 ("python-mock" ,python-mock)
9627 ("python-pytest" ,python-pytest)))
9403150a
SB
9628 (propagated-inputs
9629 `(("python-psutil" ,python-psutil)
9630 ("python-pylev" ,python-pylev)))
f5deff7a
SB
9631 (home-page "https://github.com/sdispater/cleo")
9632 (synopsis "Command-line arguments library for Python")
9633 (description
9634 "Cleo allows you to create command-line commands with signature in
9635docstring and colored output.")
9636 (license license:expat)))
9637
9638(define-public python2-cleo
9639 (package-with-python2 python-cleo))
9640
77cadb43
SB
9641(define-public python-lazy-object-proxy
9642 (package
9643 (name "python-lazy-object-proxy")
9644 (version "1.2.2")
9645 (source (origin
9646 (method url-fetch)
9647 (uri (pypi-uri "lazy-object-proxy" version))
9648 (sha256
9649 (base32
9650 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
9651 (build-system python-build-system)
9652 (native-inputs
9653 `(("python-setuptools" ,python-setuptools)))
9654 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
9655 (synopsis "Lazy object proxy for python")
9656 (description
9657 "Lazy object proxy is an object that wraps a callable but defers the call
9658until the object is actually required, and caches the result of said call.")
3f641af0 9659 (license license:bsd-2)))
77cadb43
SB
9660
9661(define-public python2-lazy-object-proxy
9662 (package-with-python2 python-lazy-object-proxy))
9663
5477e05f
SB
9664(define-public python-dnspython
9665 (package
9666 (name "python-dnspython")
9667 (version "1.14.0")
9668 (source (origin
9669 (method url-fetch)
9670 (uri (string-append "http://www.dnspython.org/kits/"
9671 version "/dnspython-" version ".tar.gz"))
9672 (sha256
9673 (base32
9674 "1z472r63gdqsxhsxj3plr5vs478yf4303vrqxxpsccc940g441hl"))))
9675 (build-system python-build-system)
9676 (arguments '(#:tests? #f)) ; XXX: requires internet access
9677 (native-inputs
9678 `(("python-setuptools" ,python-setuptools)))
9679 (home-page "http://www.dnspython.org")
9680 (synopsis "DNS toolkit for Python")
9681 (description
9682 "dnspython is a DNS toolkit for Python. It supports almost all record
9683types. It can be used for queries, zone transfers, and dynamic updates.
9684It supports TSIG authenticated messages and EDNS0.")
9685 (license license:expat)))
9686
9687(define-public python2-dnspython
9688 (package-with-python2 python-dnspython))
9689
22711e25
SB
9690(define-public python-email-validator
9691 (package
9692 (name "python-email-validator")
9693 (version "1.0.1")
9694 (source
9695 (origin (method url-fetch)
9696 (uri (pypi-uri "email_validator" version))
9697 (sha256
9698 (base32
9699 "0mn8jg5h8ifl8w6a6m0hq8kbk0mzw9vm054qfamkn89b3npz52qw"))))
9700 (build-system python-build-system)
9701 (arguments
9702 '(#:phases
9703 (modify-phases %standard-phases
9704 (add-before 'build 'use-dnspython
9705 (lambda _
9706 (substitute* "setup.py"
9707 (("dnspython3") "dnspython"))
9708 #t)))))
9709 (native-inputs
d42560bd
SB
9710 `(("python-setuptools" ,python-setuptools)))
9711 (propagated-inputs
22711e25 9712 `(("python-dnspython" ,python-dnspython)
d42560bd 9713 ("python-idna" ,python-idna)))
22711e25
SB
9714 (home-page "https://github.com/JoshData/python-email-validator")
9715 (synopsis "Email address validation library for Python")
9716 (description
9717 "This library validates email address syntax and deliverability.")
3f641af0 9718 (license license:cc0)))
22711e25
SB
9719
9720(define-public python2-email-validator
9721 (package-with-python2 python-email-validator))
9722
8987d91e
SB
9723(define-public python-ukpostcodeparser
9724 (package
9725 (name "python-ukpostcodeparser")
9726 (version "1.0.3")
9727 (source (origin
9728 (method url-fetch)
9729 (uri (pypi-uri "UkPostcodeParser" version))
9730 (sha256
9731 (base32
9732 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
9733 (build-system python-build-system)
9734 (native-inputs
9735 `(("python-setuptools" ,python-setuptools)))
9736 (home-page "https://github.com/hamstah/ukpostcodeparser")
9737 (synopsis "UK Postcode parser for Python")
9738 (description
9739 "This library provides the @code{parse_uk_postcode} function for
9740parsing UK postcodes.")
9741 (license license:expat)))
9742
9743(define-public python2-ukpostcodeparser
9744 (package-with-python2 python-ukpostcodeparser))
ea92ae01
SB
9745
9746(define-public python-fake-factory
9747 (package
9748 (name "python-fake-factory")
9749 (version "0.5.7")
9750 (source (origin
9751 (method url-fetch)
9752 (uri (pypi-uri "fake-factory" version))
9753 (sha256
9754 (base32
9755 "1chmarnrdzn4r017n8qlic0m0bbnhw04s3hkwribjvm3mqpb6pa0"))))
9756 (build-system python-build-system)
9757 (arguments
9758 '(#:phases
9759 (modify-phases %standard-phases
9760 (add-before 'check 'disable-failing-test
9761 ;; XXX: faker/tests/ne_np/__init__.py, line 40, in test_names
9762 ;; first_name, last_name = name.split()
9763 ;; ValueError: too many values to unpack (expected 2)
9764 (lambda _
9765 (delete-file "faker/tests/ne_np/__init__.py")
9766 #t)))))
9767 (native-inputs
bbcd7297 9768 `(("python-setuptools" ,python-setuptools)
ea92ae01
SB
9769 ;; For testing
9770 ("python-email-validator" ,python-email-validator)
9771 ("python-mock" ,python-mock)
9772 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
bbcd7297
SB
9773 (propagated-inputs
9774 `(("python-dateutil" ,python-dateutil-2)
9775 ("python-six" ,python-six)))
ea92ae01
SB
9776 (home-page "http://github.com/joke2k/faker")
9777 (synopsis "Python package that generates fake data")
9778 (description
9779 "Faker is a Python package that generates fake data such as names,
9780addresses, and phone numbers.")
9781 (license license:expat)
9782 (properties `((python2-variant . ,(delay python2-fake-factory))))))
9783
9784(define-public python2-fake-factory
9785 (let ((base (package-with-python2 (strip-python2-variant
9786 python-fake-factory))))
9787 (package
9788 (inherit base)
24c9aa18 9789 (propagated-inputs
ea92ae01 9790 `(("python2-ipaddress" ,python2-ipaddress)
24c9aa18 9791 ,@(package-propagated-inputs base))))))
ea92ae01 9792
b49504fd
SB
9793(define-public python-pyaml
9794 (package
9795 (name "python-pyaml")
9796 (version "15.8.2")
9797 (source (origin
9798 (method url-fetch)
9799 (uri (pypi-uri "pyaml" version))
9800 (sha256
9801 (base32
9802 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
9803 (build-system python-build-system)
9804 (native-inputs
9805 `(("python-setuptools" ,python-setuptools)))
9806 (propagated-inputs
9807 `(("python-pyyaml" ,python-pyyaml)))
9808 (home-page "https://github.com/mk-fg/pretty-yaml")
9809 (synopsis "YAML pretty-print library for Python")
9810 (description
9811 "pyaml is a PyYAML based python module to produce pretty and readable
9812YAML-serialized data.")
3f641af0 9813 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
9814
9815(define-public python2-pyaml
9816 (package-with-python2 python-pyaml))
9817
347175a2
SB
9818(define-public python-flexmock
9819 (package
9820 (name "python-flexmock")
9821 (version "0.10.2")
9822 (source (origin
9823 (method url-fetch)
9824 (uri (pypi-uri "flexmock" version))
9825 (sha256
9826 (base32
9827 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
9828 (build-system python-build-system)
9829 (native-inputs
9830 `(("python-setuptools" ,python-setuptools)))
9831 (home-page "https://flexmock.readthedocs.org")
9832 (synopsis "Testing library for Python")
9833 (description
9834 "flexmock is a testing library for Python that makes it easy to create
9835mocks, stubs and fakes.")
3f641af0 9836 (license license:bsd-3)))
347175a2
SB
9837
9838(define-public python2-flexmock
9839 (package-with-python2 python-flexmock))
9840
5a744191
SB
9841(define-public python-orator
9842 (package
9843 (name "python-orator")
9844 (version "0.8.2")
9845 (source (origin
9846 (method url-fetch)
9847 (uri (pypi-uri "orator" version))
9848 (sha256
9849 (base32
9850 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
9851 (build-system python-build-system)
9852 (arguments '(#:tests? #f)) ; no tests
9853 (native-inputs
b2676030
SB
9854 `(("python-setuptools" ,python-setuptools)))
9855 (propagated-inputs
5a744191
SB
9856 `(("python-arrow" ,python-arrow)
9857 ("python-blinker" ,python-blinker)
9858 ("python-cleo" ,python-cleo)
9859 ("python-fake-factory" ,python-fake-factory)
9860 ("python-inflection" ,python-inflection)
9861 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
9862 ("python-pyaml" ,python-pyaml)
5a744191
SB
9863 ("python-simplejson" ,python-simplejson)
9864 ("python-wrapt" ,python-wrapt)))
9865 (home-page "https://orator-orm.com/")
9866 (synopsis "ActiveRecord ORM for Python")
9867 (description
9868 "Orator provides a simple ActiveRecord-like Object Relational Mapping
9869implementation for Python.")
9870 (license license:expat)
9871 (properties `((python2-variant . ,(delay python2-orator))))))
9872
9873(define-public python2-orator
9874 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
9875 (package
9876 (inherit base)
06961617 9877 (propagated-inputs
5a744191 9878 `(("python2-ipaddress" ,python2-ipaddress)
06961617 9879 ,@(package-propagated-inputs base))))))
f4155188
DM
9880
9881(define-public python-prompt-toolkit
9882 (package
9883 (name "python-prompt-toolkit")
d15e2ef0 9884 (version "1.0.7")
f4155188
DM
9885 (source
9886 (origin
9887 (method url-fetch)
d15e2ef0 9888 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
9889 (sha256
9890 (base32
d15e2ef0 9891 "1vyjd0b7wciv55i19l44zy0adx8q7ss79lhy2r9d1rwz2y4822zg"))))
f4155188
DM
9892 (build-system python-build-system)
9893 (inputs `(("python-wcwidth" ,python-wcwidth)
9894 ("python-pygments" ,python-pygments)))
9895 (native-inputs `(("python-six" ,python-six)))
9896 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
9897 (synopsis "Library for building command line interfaces in Python")
9898 (description
9899 "Prompt-Toolkit is a library for building interactive command line
9900interfaces in Python. It's like GNU Readline but it also features syntax
9901highlighting while typing, out-of-the-box multi-line input editing, advanced
9902code completion, incremental search, support for Chinese double-width
9903characters, mouse support, and auto suggestions.")
3f641af0 9904 (license license:bsd-3)
f4155188
DM
9905 (properties `((python2-variant . ,(delay python2-prompt-toolkit))))))
9906
9907(define-public python2-prompt-toolkit
9908 (let ((base (package-with-python2 (strip-python2-variant python-prompt-toolkit))))
9909 (package
9910 (inherit base)
9911 (native-inputs
9912 `(("python2-setuptools" ,python2-setuptools)
9913 ,@(package-native-inputs base))))))
a502dfbf
DM
9914
9915(define-public python-jedi
9916 (package
9917 (name "python-jedi")
9918 (version "0.9.0")
9919 (source
9920 (origin
9921 (method url-fetch)
9922 (uri (pypi-uri "jedi" version))
9923 (sha256
9924 (base32
9925 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
9926 (build-system python-build-system)
9927 (home-page "https://github.com/davidhalter/jedi")
9928 (synopsis
9929 "Autocompletion for Python that can be used for text editors")
9930 (description
9931 "Jedi is an autocompletion tool for Python that can be used for text editors.")
9932 (license license:expat)
9933 (properties `((python2-variant . ,(delay python2-jedi))))))
9934
9935(define-public python2-jedi
9936 (let ((base (package-with-python2 (strip-python2-variant python-jedi))))
9937 (package
9938 (inherit base)
9939 (native-inputs
9940 `(("python2-setuptools" ,python2-setuptools)
9941 ,@(package-native-inputs base))))))
c2f0dc6e
DM
9942
9943(define-public ptpython
9944 (package
9945 (name "ptpython")
9946 (version "0.34")
9947 (source (origin
9948 (method url-fetch)
9949 (uri (pypi-uri "ptpython" version))
9950 (sha256
9951 (base32
9952 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
9953 (build-system python-build-system)
9954 (inputs
9955 `(("python-docopt" ,python-docopt)
9956 ("python-jedi" ,python-jedi)
9957 ("python-prompt-toolkit" ,python-prompt-toolkit)
9958 ("python-pygments" ,python-pygments)
9959 ("python-setuptools" ,python-setuptools)))
9960 (home-page "https://github.com/jonathanslenders/ptpython")
9961 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
9962 (description
9963 "ptpython is a Python read-eval-print loop with IDE-like features.
9964It supports syntax highlighting, multiline editing, autocompletion, mouse,
9965color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
9966etc.")
3f641af0 9967 (license license:bsd-3)
c2f0dc6e
DM
9968 (properties `((python2-variant . ,(delay ptpython-2))))))
9969
9970(define-public ptpython-2
9971 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
9972 (package
9973 (inherit base)
9974 (name "ptpython2"))))
b227f0be 9975
9976(define-public python-stem
9977 (package
9978 (name "python-stem")
9979 (version "1.4.1b")
9980 (source
9981 (origin
9982 (method url-fetch)
9983 (uri (pypi-uri "stem" version ".tar.bz2"))
9984 (sha256
9985 (base32
9986 "09a3amp1y351nwz088ckiibbp666qi2lxwkyknavswfm400s0ns7"))))
9987 (build-system python-build-system)
9988 (arguments
9989 `(#:phases
9990 (modify-phases %standard-phases
9991 (replace 'check
9992 (lambda _
9993 (zero? (system* "./run_tests.py" "--unit")))))))
9994 (native-inputs
9995 `(("python-mock" ,python-mock)
9996 ("python-pep8" ,python-pep8)
9997 ("python-pyflakes" ,python-pyflakes)))
9998 (inputs
9999 `(("python-pycrypto" ,python-pycrypto)))
10000 (home-page "https://stem.torproject.org/")
10001 (synopsis
10002 "Python controller library that allows applications to interact with Tor")
10003 (description
10004 "Stem is a Python controller library for Tor. With it you can use Tor's
10005control protocol to script against the Tor process and read descriptor data
10006relays publish about themselves.")
3f641af0 10007 (license license:lgpl3)))
b227f0be 10008
10009(define-public python2-stem
10010 (package-with-python2 python-stem))
517a6c0c
DM
10011
10012(define-public python-pyserial
10013 (package
10014 (name "python-pyserial")
10015 (version "3.1.1")
10016 (source
10017 (origin
10018 (method url-fetch)
10019 (uri (pypi-uri "pyserial" version))
10020 (sha256
10021 (base32
10022 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
10023 (build-system python-build-system)
10024 (home-page
10025 "https://github.com/pyserial/pyserial")
10026 (synopsis "Python Serial Port Bindings")
10027 (description "@code{pyserial} provide serial port bindings for Python. It
10028supports different byte sizes, stop bits, parity and flow control with RTS/CTS
10029and/or Xon/Xoff. The port is accessed in RAW mode.")
3f641af0 10030 (license license:bsd-3)
517a6c0c
DM
10031 (properties `((python2-variant . ,(delay python2-pyserial))))))
10032
10033(define-public python2-pyserial
10034 (let ((base (package-with-python2 (strip-python2-variant python-pyserial))))
10035 (package
10036 (inherit base)
10037 (native-inputs
10038 `(("python2-setuptools" ,python2-setuptools)
10039 ,@(package-native-inputs base))))))
6eb7af2a
DJ
10040
10041(define-public python-kivy
10042 (package
10043 (name "python-kivy")
10044 (version "1.9.1")
10045 (source
10046 (origin
10047 (method url-fetch)
10048 (uri (pypi-uri "kivy" version))
10049 (file-name (string-append name "-" version ".tar.gz"))
10050 (sha256
10051 (base32
10052 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
10053 (build-system python-build-system)
10054 (arguments
10055 `(#:tests? #f ; Tests require many optional packages
10056 #:phases
10057 (modify-phases %standard-phases
10058 (replace 'build (lambda _ (zero? (system* "make" "force"))))
10059 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
10060 (lambda* (#:key inputs #:allow-other-keys)
10061 (setenv "KIVY_SDL2_PATH"
10062 (string-append (assoc-ref inputs "sdl-union")
10063 "/include/SDL2"))
10064 #t)))))
10065 (native-inputs
10066 `(("pkg-config" ,pkg-config)))
10067 (inputs
10068 `(("python-cython" ,python-cython)
10069 ("gstreamer" ,gstreamer)
10070 ("mesa" ,mesa)
10071 ("sdl-union"
10072 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
10073 (home-page "http://kivy.org")
10074 (synopsis
10075 "Multitouch application framework")
10076 (description
10077 "A software library for rapid development of
10078hardware-accelerated multitouch applications.")
10079 (license license:expat)))
10080
10081(define-public python2-kivy
10082 (package-with-python2 python-kivy))
10083
10084(define-public python-kivy-next
10085 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
10086 (revision "1"))
10087 (package (inherit python-kivy)
10088 (name "python-kivy-next")
d80a71eb 10089 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
10090 (string-take commit 7)))
10091 (source
10092 (origin
10093 (method git-fetch)
10094 (uri (git-reference
10095 (url "https://github.com/kivy/kivy")
10096 (commit commit)))
10097 (file-name (string-append name "-" version "-checkout"))
10098 (sha256
10099 (base32
10100 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
10101
10102(define-public python2-kivy-next
10103 (package-with-python2 python-kivy-next))
8794bd8b
DC
10104
10105(define-public python-binaryornot
10106 (package
10107 (name "python-binaryornot")
10108 (version "0.4.0")
10109 (source (origin
10110 (method url-fetch)
10111 (uri (pypi-uri "binaryornot" version))
10112 (sha256
10113 (base32
10114 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
10115 (build-system python-build-system)
10116 (inputs
10117 `(("python-chardet" ,python-chardet)
10118 ("python-hypothesis" ,python-hypothesis)))
10119 (home-page "https://github.com/audreyr/binaryornot")
10120 (synopsis "Package to check if a file is binary or text")
10121 (description "Ultra-lightweight pure Python package to check if a file is
10122binary or text.")
10123 (license license:bsd-3)
10124 (properties `((python2-variant . ,(delay python2-binaryornot))))))
10125
10126(define-public python2-binaryornot
10127 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
10128 (package (inherit base)
10129 (native-inputs
10130 `(("python2-setuptools" ,python2-setuptools)
10131 ,@(package-native-inputs base)))
10132 (inputs
10133 `(("python2-enum34" ,python2-enum34)
10134 ,@(package-inputs base))))))
a9ac982a
DC
10135
10136(define-public python-nltk
10137 (package
10138 (name "python-nltk")
10139 (version "3.2.1")
10140 (source (origin
10141 (method url-fetch)
10142 (uri (pypi-uri "nltk" version))
10143 (sha256
10144 (base32
10145 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
10146 (build-system python-build-system)
10147 (home-page "http://nltk.org/")
10148 (synopsis "Natural Language Toolkit")
10149 (description "It provides interfaces to over 50 corpora and lexical
10150resources such as WordNet, along with a suite of text processing libraries
10151for classification, tokenization, stemming, tagging, parsing, and semantic
10152reasoning, wrappers for natural language processing libraries.")
10153 (license license:asl2.0)
10154 (properties `((python2-variant . ,(delay python2-nltk))))))
10155
10156(define-public python2-nltk
10157 (let ((base (package-with-python2 (strip-python2-variant python-nltk))))
10158 (package (inherit base)
10159 (native-inputs
10160 `(("python2-setuptools" ,python2-setuptools)
10161 ,@(package-native-inputs base))))))
691cd90d
DC
10162
10163(define-public python-pymongo
10164 (package
10165 (name "python-pymongo")
10166 (version "3.3.0")
10167 (source (origin
10168 (method url-fetch)
10169 (uri (pypi-uri "pymongo" version))
10170 (sha256
10171 (base32
10172 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
10173 (build-system python-build-system)
10174 (inputs
10175 `(("python-certifi" ,python-certifi)))
10176 (home-page "http://github.com/mongodb/mongo-python-driver")
10177 (synopsis "Python driver for MongoDB")
10178 (description "Python driver for MongoDB.")
10179 (license license:asl2.0)
10180 (properties `((python2-variant . ,(delay python2-pymongo))))))
10181
10182(define-public python2-pymongo
10183 (let ((base (package-with-python2 (strip-python2-variant python-pymongo))))
10184 (package (inherit base)
10185 (native-inputs
10186 `(("python2-setuptools" ,python2-setuptools)
10187 ,@(package-native-inputs base))))))
6a6c9d43
DC
10188
10189(define-public python-sh
10190 (package
10191 (name "python-sh")
10192 (version "1.11")
10193 (source (origin
10194 (method url-fetch)
10195 (uri (pypi-uri "sh" version))
10196 (sha256
10197 (base32
10198 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
10199 (build-system python-build-system)
10200 (arguments
10201 `(#:tests? #f)) ; no tests
10202 (home-page "https://github.com/amoffat/sh")
10203 (synopsis "Python subprocess interface")
10204 (description "Abstracts process invocation by providing a function
10205interface for programs.")
10206 (license license:expat)
10207 (properties `((python2-variant . ,(delay python2-sh))))))
10208
10209(define-public python2-sh
10210 (let ((base (package-with-python2 (strip-python2-variant python-sh))))
10211 (package (inherit base)
10212 (native-inputs
10213 `(("python2-setuptools" ,python2-setuptools)
10214 ,@(package-native-inputs base))))))
05b59190
DC
10215
10216(define-public python-schematics
10217 (package
10218 (name "python-schematics")
10219 (version "1.1.1")
10220 (source
10221 (origin
10222 (method url-fetch)
10223 (uri (string-append
10224 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
10225 (file-name (string-append name "-" version ".tar.gz"))
10226 (sha256
10227 (base32
10228 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
10229 (build-system python-build-system)
10230 (inputs
10231 `(("python-six" ,python-six)))
10232 (arguments
10233 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
10234 ; version requirements (eg python-coveralls)
10235 (home-page "https://github.com/schematics/schematics")
10236 (synopsis "Python Data Structures for Humans")
10237 (description "Python Data Structures for Humans.")
10238 (license license:bsd-3)
10239 (properties `((python2-variant . ,(delay python2-schematics))))))
10240
10241(define-public python2-schematics
10242 (let ((base (package-with-python2 (strip-python2-variant python-schematics))))
10243 (package (inherit base)
10244 (native-inputs
10245 `(("python2-setuptools" ,python2-setuptools)
10246 ,@(package-native-inputs base))))))
d6907ff7
DC
10247
10248(define-public python-publicsuffix
10249 (package
10250 (name "python-publicsuffix")
10251 (version "1.1.0")
10252 (source (origin
10253 (method url-fetch)
10254 (uri (pypi-uri "publicsuffix" version))
10255 (sha256
10256 (base32
10257 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
10258 (build-system python-build-system)
10259 (arguments
10260 `(#:tests? #f)) ; tests use the internet
10261 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
10262 (synopsis "Get suffix for a domain name")
10263 (description "Get a public suffix for a domain name using the Public Suffix
10264List.")
10265 (license license:expat)
10266 (properties `((python2-variant . ,(delay python2-nltk))))))
10267
10268(define-public python2-publicsuffix
10269 (let ((base (package-with-python2 (strip-python2-variant python-publicsuffix))))
10270 (package (inherit base)
10271 (native-inputs
10272 `(("python2-setuptools" ,python2-setuptools)
10273 ,@(package-native-inputs base))))))
b2319996
DC
10274
10275(define-public python-publicsuffix2
10276 (package
10277 (name "python-publicsuffix2")
10278 (version "2.20160621")
10279 (source
10280 (origin
10281 (method url-fetch)
10282 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
10283 (sha256
10284 (base32
10285 "06lx603gdwad5hc3hmn763ngq0rq9bzz1ni3ga72nzk5n872arkd"))))
10286 (build-system python-build-system)
10287 (home-page "https://github.com/pombredanne/python-publicsuffix2")
10288 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
10289 (description "Get a public suffix for a domain name using the Public Suffix
10290List. Forked from and using the same API as the publicsuffix package.")
10291 (license (list license:expat license:mpl2.0))
10292 (properties `((python2-variant . ,(delay python2-publicsuffix2))))))
10293
10294(define-public python2-publicsuffix2
10295 (let ((base (package-with-python2 (strip-python2-variant python-publicsuffix2))))
10296 (package (inherit base)
10297 (native-inputs
10298 `(("python2-setuptools" ,python2-setuptools)
10299 ,@(package-native-inputs base))))))
81f1515d
DC
10300
10301(define-public python-url
10302 (package
10303 (name "python-url")
10304 (version "0.2.0")
10305 (source (origin
10306 (method url-fetch)
10307 (uri (pypi-uri "url" version))
10308 (sha256
10309 (base32
10310 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
10311 (build-system python-build-system)
10312 (inputs
10313 `(("python-publicsuffix" ,python-publicsuffix)))
10314 (native-inputs
10315 `(("python-coverage" ,python-coverage)
10316 ("python-nose" ,python-nose)))
10317 (arguments
10318 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
10319 (home-page "http://github.com/seomoz/url-py")
10320 (synopsis "URL Parsing")
10321 (description "Library for parsing urls.")
10322 (license license:expat)
10323 (properties `((python2-variant . ,(delay python2-url))))))
10324
10325(define-public python2-url
10326 (let ((base (package-with-python2 (strip-python2-variant python-url))))
10327 (package (inherit base)
10328 (inputs
10329 `(("python2-publicsuffix" ,python2-publicsuffix)))
10330 (native-inputs
10331 `(("python2-setuptools" ,python2-setuptools)
10332 ,@(package-native-inputs base))))))
974ee2c1
TS
10333
10334(define-public python-freezegun
10335 (package
10336 (name "python-freezegun")
10337 (version "0.3.7")
10338 (source
10339 (origin
10340 (method url-fetch)
10341 (uri (pypi-uri "freezegun" version))
10342 (sha256
10343 (base32
10344 "14l19x06v5jkq4rdwbmfyw4x9lrjb2300afrk21r1ash7y1y9a0w"))))
10345 (build-system python-build-system)
10346 (native-inputs
10347 `(("python-mock" ,python-mock)
10348 ("python-nose" ,python-nose)
10349 ("python-coverage" ,python-coverage)
10350 ("python-dateutil-2" ,python-dateutil-2)))
10351 (inputs
10352 `(("python-six" ,python-six)))
10353 (arguments
10354 `(#:phases (modify-phases %standard-phases
10355 ;; The tests are normally executed via `make test`, but the PyPi
10356 ;; package does not include the Makefile.
10357 (replace 'check
10358 (lambda _
10359 (zero? (system* "nosetests" "./tests/")))))))
10360 (home-page "https://github.com/spulec/freezegun")
10361 (synopsis "Test utility for mocking the datetime module")
10362 (description
10363 "FreezeGun is a library that allows your python tests to travel through
10364time by mocking the datetime module.")
10365 (license license:asl2.0)))
10366
10367(define-public python2-freezegun
10368 (let ((base (package-with-python2 (strip-python2-variant python-freezegun))))
10369 (package (inherit base)
10370 (native-inputs
10371 `(("python2-setuptools" ,python2-setuptools)
10372 ,@(package-native-inputs base))))))
dddcb25c
MB
10373
10374(define-public python-odfpy
10375 (package
10376 (name "python-odfpy")
10377 (version "1.3.3")
10378 (source (origin
10379 (method url-fetch)
10380 (uri (pypi-uri "odfpy" version))
10381 (sha256
10382 (base32
10383 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
10384 (arguments
10385 `(#:modules ((srfi srfi-1)
10386 (guix build python-build-system)
10387 (guix build utils))
10388 #:phases
10389 (modify-phases %standard-phases
10390 (replace 'check
10391 ;; The test runner invokes python2 and python3 for test*.py.
10392 ;; To avoid having both in inputs, we replicate it here.
10393 (lambda _
10394 (every (lambda (test-file)
10395 (zero? (system* "python" test-file)))
10396 (find-files "tests" "^test.*\\.py$")))))))
10397 (build-system python-build-system)
10398 (home-page "https://github.com/eea/odfpy")
10399 (synopsis "Python API and tools to manipulate OpenDocument files")
10400 (description "Collection of libraries and utility programs written in
10401Python to manipulate OpenDocument 1.2 files.")
10402 (license
10403 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
10404 ;; number of files with other licenses.
10405 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
10406
10407(define-public python2-odfpy
10408 (package-with-python2 python-odfpy))
b30565bd
MB
10409
10410(define-public python-cachecontrol
10411 (package
10412 (name "python-cachecontrol")
10413 (version "0.11.6")
10414 (source
10415 (origin
10416 (method url-fetch)
10417 ;; Pypi does not have tests.
10418 (uri (string-append
10419 "https://github.com/ionrock/cachecontrol/archive/v"
10420 version ".tar.gz"))
10421 (file-name (string-append name "-" version ".tar.gz"))
10422 (sha256
10423 (base32
10424 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
10425 (build-system python-build-system)
10426 (arguments
10427 `(#:phases
10428 (modify-phases %standard-phases
10429 (replace 'check
10430 (lambda _
10431 ;; Drop test that requires internet access.
10432 (delete-file "tests/test_regressions.py")
10433 (setenv "PYTHONPATH"
10434 (string-append (getcwd) "/build/lib:"
10435 (getenv "PYTHONPATH")))
10436 (zero? (system* "py.test" "-vv")))))))
10437 (native-inputs
10438 `(("python-pytest" ,python-pytest)
10439 ("python-redis" ,python-redis)
10440 ("python-webtest" ,python-webtest)
10441 ("python-mock" ,python-mock)))
10442 (propagated-inputs
10443 `(("python-requests" ,python-requests)
10444 ("python-lockfile" ,python-lockfile)))
10445 (home-page "https://github.com/ionrock/cachecontrol")
10446 (synopsis "The httplib2 caching algorithms for use with requests")
10447 (description "CacheControl is a port of the caching algorithms in
10448@code{httplib2} for use with @code{requests} session objects.")
10449 (license license:asl2.0)
dd447621 10450 (properties `((python2-variant . ,(delay python2-cachecontrol))))))
b30565bd
MB
10451
10452(define-public python2-cachecontrol
10453 (let ((base (package-with-python2 (strip-python2-variant python-cachecontrol))))
10454 (package (inherit base)
10455 (native-inputs
10456 `(("python2-setuptools" ,python2-setuptools)
10457 ,@(package-native-inputs base))))))
243db824
DM
10458
10459(define-public python-lit
10460 (package
10461 (name "python-lit")
10462 (version "0.5.0")
10463 (source
10464 (origin
10465 (method url-fetch)
10466 (uri (pypi-uri "lit" version))
10467 (sha256
10468 (base32
10469 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
10470 (build-system python-build-system)
10471 (home-page "http://llvm.org/")
10472 (synopsis "LLVM Software Testing Tool")
10473 (description "@code{lit} is a portable tool for executing LLVM and Clang
10474style test suites, summarizing their results, and providing indication of
10475failures.")
10476 (license license:ncsa)
10477 (properties `((python2-variant . ,(delay python2-lit))))))
10478
10479(define-public python2-lit
10480 (let ((base (package-with-python2 (strip-python2-variant python-lit))))
10481 (package
10482 (inherit base)
10483 (native-inputs
10484 `(("python2-setuptools" ,python2-setuptools)
10485 ,@(package-native-inputs base))))))
66f95b20
MB
10486
10487(define-public python-pytest-pep8
10488 (package
10489 (name "python-pytest-pep8")
10490 (version "1.0.6")
10491 (source (origin
10492 (method url-fetch)
10493 (uri (pypi-uri "pytest-pep8" version))
10494 (sha256
10495 (base32
10496 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
10497 (build-system python-build-system)
10498 (arguments
10499 `(#:tests? #f ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
10500 ;; Prevent creation of the egg. This works around
10501 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
10502 #:configure-flags '("--single-version-externally-managed" "--root=/")))
10503 (native-inputs
10504 `(("python-pytest" ,python-pytest)))
10505 (propagated-inputs
10506 `(("python-pep8" ,python-pep8)))
10507 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
10508 (synopsis "Py.test plugin to check PEP8 requirements")
10509 (description "Pytest plugin for checking PEP8 compliance.")
10510 (license license:expat)
10511 (properties `((python2-variant . ,(delay python2-pytest-pep8))))))
10512
10513(define-public python2-pytest-pep8
10514 (let ((base (package-with-python2 (strip-python2-variant python-pytest-pep8))))
10515 (package (inherit base)
10516 (native-inputs
10517 `(("python2-setuptools" ,python2-setuptools)
10518 ,@(package-native-inputs base))))))
df94a6b5
MB
10519
10520(define-public python-pytest-flakes
10521 (package
10522 (name "python-pytest-flakes")
10523 (version "1.0.1")
10524 (source (origin
10525 (method url-fetch)
10526 (uri (pypi-uri "pytest-flakes" version))
10527 (sha256
10528 (base32
10529 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
10530 (build-system python-build-system)
10531 (arguments
10532 `(;; Prevent creation of the egg. This works around
10533 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
10534 #:configure-flags '("--single-version-externally-managed" "--root=/")
10535 #:phases
10536 (modify-phases %standard-phases
10537 (delete 'check)
10538 (add-after 'install 'check
10539 (lambda _ ; It's easier to run tests after install.
10540 (zero? (system* "py.test" "-vv")))))))
10541 (native-inputs
10542 `(("python-coverage" ,python-coverage)
10543 ("python-pytest" ,python-pytest)
10544 ("python-pytest-cache" ,python-pytest-cache)
10545 ("python-pytest-pep8" ,python-pytest-pep8)))
10546 (propagated-inputs
10547 `(("python-pyflakes" ,python-pyflakes)))
10548 (home-page "https://github.com/fschulze/pytest-flakes")
10549 (synopsis "Py.test plugin to check source code with pyflakes")
10550 (description "Pytest plugin for checking Python source code with pyflakes.")
10551 (license license:expat)
10552 (properties `((python2-variant . ,(delay python2-pytest-flakes))))))
10553
10554(define-public python2-pytest-flakes
10555 (let ((base (package-with-python2 (strip-python2-variant python-pytest-flakes))))
10556 (package (inherit base)
10557 (native-inputs
10558 `(("python2-setuptools" ,python2-setuptools)
10559 ,@(package-native-inputs base))))))
5467ea62
MB
10560
10561(define-public python-natsort
10562 (package
10563 (name "python-natsort")
10564 (version "5.0.1")
10565 (source (origin
10566 (method url-fetch)
10567 (uri (pypi-uri "natsort" version))
10568 (sha256
10569 (base32
10570 "1abld5p4a6n5zjnyw5mi2pv37gqalcybv2brjr2y6l9l2p8v9mja"))))
10571 (build-system python-build-system)
10572 (arguments
10573 `(#:phases
10574 (modify-phases %standard-phases
10575 (add-before 'check 'set-cachedir
10576 ;; Tests require write access to $HOME by default
10577 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
10578 (native-inputs
10579 `(("python-hypothesis" ,python-hypothesis)
10580 ("python-pytest-cache" ,python-pytest-cache)
10581 ("python-pytest-cov" ,python-pytest-cov)
10582 ("python-pytest-flakes" ,python-pytest-flakes)
10583 ("python-pytest-pep8" ,python-pytest-pep8)))
10584 (propagated-inputs ; TODO: Add python-fastnumbers.
10585 `(("python-pyicu" ,python-pyicu)))
10586 (home-page "https://github.com/SethMMorton/natsort")
10587 (synopsis "Natural sorting for python and shell")
10588 (description
10589 "Natsort lets you apply natural sorting on lists instead of
10590lexicographical. If you use the built-in @code{sorted} method in python
10591on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
10592returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
10593function @code{natsorted} that identifies numbers and sorts them separately
10594from strings. It can also sort version numbers, real numbers, mixed types
10595and more, and comes with a shell command @command{natsort} that exposes this
10596functionality in the command line.")
10597 (license license:expat)
10598 (properties `((python2-variant . ,(delay python2-natsort))))))
10599
10600(define-public python2-natsort
10601 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
10602 (package (inherit base)
10603 (native-inputs
10604 `(("python2-setuptools" ,python2-setuptools)
10605 ("python2-pathlib" ,python2-pathlib)
10606 ("python2-mock" ,python2-mock)
10607 ("python2-enum34" ,python2-enum34)
10608 ,@(package-native-inputs base))))))
4efb9c54
SR
10609
10610(define-public python-glances
10611 (package
10612 (name "python-glances")
10613 (version "2.7.1")
10614 (source
10615 (origin
10616 (method url-fetch)
10617 (uri (pypi-uri "Glances" version))
10618 (sha256
10619 (base32
10620 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
10621 (build-system python-build-system)
10622 (inputs
10623 `(("python-psutil" ,python-psutil)))
10624 (home-page
10625 "https://github.com/nicolargo/glances")
10626 (synopsis
10627 "A cross-platform curses-based monitoring tool")
10628 (description
10629 "Glances is a curses-based monitoring tool for a wide variety of platforms.
10630Glances uses the PsUtil library to get information from your system. It monitors
10631CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
10632 (license license:lgpl3+)
10633 (properties `((python2-variant . ,(delay python2-glances))))))
10634
10635(define-public python2-glances
10636 (let ((base (package-with-python2 (strip-python2-variant python-glances))))
10637 (package
10638 (inherit base)
10639 (native-inputs
10640 `(("python2-setuptools" ,python2-setuptools)
10641 ,@(package-native-inputs base))))))
05b7a593
EF
10642
10643(define-public python-graphql-core
10644 (package
10645 (name "python-graphql-core")
10646 (version "0.5.3")
10647 (source
10648 (origin
10649 (method url-fetch)
10650 (uri (pypi-uri "graphql-core" version))
10651 (sha256
10652 (base32
10653 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
10654 (build-system python-build-system)
10655 (arguments
10656 `(#:phases
10657 (modify-phases %standard-phases
10658 (add-after 'unpack 'patch-hardcoded-version
10659 (lambda _ (substitute*
10660 "setup.py"
10661 (("'gevent==1.1rc1'") "'gevent'"))
10662 #t)))))
10663 (native-inputs
10664 `(("python-gevent" ,python-gevent)
10665 ("python-mock" ,python-mock)
10666 ("python-pytest-mock" ,python-pytest-mock)))
10667 (inputs
10668 `(("python-promise" ,python-promise)
10669 ("python-six" ,python-six)))
10670 (home-page "https://github.com/graphql-python/graphql-core")
10671 (synopsis "GraphQL implementation for Python")
10672 (description
10673 "GraphQL implementation for Python. GraphQL is a data query language and
10674runtime designed and used to request and deliver data to mobile and web apps.
10675This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
10676to Python.")
10677 (properties `((python2-variant . ,(delay python2-graphql-core))))
10678 (license license:expat)))
10679
10680(define-public python2-graphql-core
10681 (let ((base (package-with-python2
10682 (strip-python2-variant python-graphql-core))))
10683 (package (inherit base)
10684 (native-inputs
10685 `(("python2-setuptools" ,python2-setuptools)
10686 ,@(package-native-inputs base))))))
7ee51575
EF
10687
10688(define-public python-graphql-relay
10689 (package
10690 (name "python-graphql-relay")
10691 (version "0.4.4")
10692 (source
10693 (origin
10694 (method url-fetch)
10695 (uri (pypi-uri "graphql-relay" version))
10696 (sha256
10697 (base32
10698 "04wr9ayshxjjdcg2v21c7ffbz36kif1wjl3604fqd3qignb3fbxi"))))
10699 (build-system python-build-system)
10700 (native-inputs
10701 `(("python-pytest" ,python-pytest)))
10702 (inputs
10703 `(("python-graphql-core" ,python-graphql-core)
10704 ("python-promise" ,python-promise)
10705 ("python-six" ,python-six)))
10706 (home-page "https://github.com/graphql-python/graphql-relay-py")
10707 (synopsis "Relay implementation for Python")
10708 (description
10709 "This is a library to allow the easy creation of Relay-compliant servers
10710using the GraphQL Python reference implementation of a GraphQL server. It
10711should be noted that the code is a exact port of the original
10712@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
10713from Facebook.")
10714 (properties `((python2-variant . ,(delay python2-graphql-relay))))
10715 (license license:expat)))
10716
10717(define-public python2-graphql-relay
10718 (let ((base (package-with-python2
10719 (strip-python2-variant python-graphql-relay))))
10720 (package (inherit base)
10721 (native-inputs
10722 `(("python2-setuptools" ,python2-setuptools)
10723 ,@(package-native-inputs base))))))
ddc63a56
EF
10724
10725(define-public python-graphene
10726 (package
10727 (name "python-graphene")
10728 (version "0.10.2")
10729 (source
10730 (origin
10731 (method url-fetch)
10732 (uri (pypi-uri "graphene" version))
10733 (sha256
10734 (base32
10735 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
10736 (build-system python-build-system)
10737 (native-inputs
10738 `(("python-django-filter" ,python-django-filter)
10739 ("python-mock" ,python-mock)
10740 ("python-psycopg2" ,python-psycopg2)
10741 ("python-pytest-django" ,python-pytest-django)
10742 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
10743 (inputs
10744 `(("python-graphql-core" ,python-graphql-core)
10745 ("python-graphql-relay" ,python-graphql-relay)
10746 ("python-iso8601" ,python-iso8601)
10747 ("python-promise" ,python-promise)
10748 ("python-six" ,python-six)))
10749 (home-page "http://graphene-python.org/")
10750 (synopsis "GraphQL Framework for Python")
10751 (description
10752 "Graphene is a Python library for building GraphQL schemas/types.
10753A GraphQL schema describes your data model, and provides a GraphQL server
10754with an associated set of resolve methods that know how to fetch data.")
10755 (properties `((python2-variant . ,(delay python2-graphene))))
10756 (license license:expat)))
10757
10758(define-public python2-graphene
10759 (let ((base (package-with-python2
10760 (strip-python2-variant python-graphene))))
10761 (package (inherit base)
10762 (native-inputs
10763 `(("python2-setuptools" ,python2-setuptools)
10764 ("python2-sqlalchemy" ,python2-sqlalchemy)
10765 ,@(package-native-inputs base))))))