gnu: python-cryptography: Update to 1.2.2.
[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>
da6dd842 3;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
03411993 4;;; Copyright © 2013, 2014, 2015 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>
ad320b20 10;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
f4de5b3b 11;;; Copyright © 2015 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>
03f964a5 19;;; Copyright © 2015 Chris Marusich <cmmarusich@gmail.com>
a01b6da7
NK
20;;;
21;;; This file is part of GNU Guix.
22;;;
23;;; GNU Guix is free software; you can redistribute it and/or modify it
24;;; under the terms of the GNU General Public License as published by
25;;; the Free Software Foundation; either version 3 of the License, or (at
26;;; your option) any later version.
27;;;
28;;; GNU Guix is distributed in the hope that it will be useful, but
29;;; WITHOUT ANY WARRANTY; without even the implied warranty of
30;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31;;; GNU General Public License for more details.
32;;;
33;;; You should have received a copy of the GNU General Public License
34;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
35
1ffa7090 36(define-module (gnu packages python)
011b18c3 37 #:use-module ((guix licenses)
45203542 38 #:select (asl2.0 bsd-4 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style
b8050e71 39 gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ agpl3+
7517e73c
LF
40 isc mpl2.0 psfl public-domain unlicense x11-style
41 zpl2.1))
bd3fa666 42 #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
3fdc99da 43 #:use-module (gnu packages)
89b2e0b0 44 #:use-module (gnu packages attr)
d96034ed 45 #:use-module (gnu packages backup)
1ffa7090 46 #:use-module (gnu packages compression)
4ed20663 47 #:use-module (gnu packages databases)
5e1c9367 48 #:use-module (gnu packages file)
4ed20663 49 #:use-module (gnu packages fontutils)
4ed20663
AE
50 #:use-module (gnu packages gcc)
51 #:use-module (gnu packages ghostscript)
52 #:use-module (gnu packages glib)
53 #:use-module (gnu packages gtk)
421a80a2 54 #:use-module (gnu packages icu4c)
c937562e 55 #:use-module (gnu packages image)
4ed20663 56 #:use-module (gnu packages imagemagick)
b10ab723 57 #:use-module (gnu packages libffi)
89b2e0b0 58 #:use-module (gnu packages linux)
0da98533 59 #:use-module (gnu packages maths)
4ed20663 60 #:use-module (gnu packages multiprecision)
45203542 61 #:use-module (gnu packages networking)
be7134bf 62 #:use-module (gnu packages ncurses)
c9b1b4f9 63 #:use-module (gnu packages pcre)
4ed20663 64 #:use-module (gnu packages perl)
b10ab723 65 #:use-module (gnu packages pkg-config)
4ed20663 66 #:use-module (gnu packages readline)
c9b1b4f9 67 #:use-module (gnu packages statistics)
1c65314c
FB
68 #:use-module (gnu packages texlive)
69 #:use-module (gnu packages texinfo)
cc2b77df 70 #:use-module (gnu packages tls)
8d12be1e 71 #:use-module (gnu packages web)
ce0614dd 72 #:use-module (gnu packages base)
26b307e2 73 #:use-module (gnu packages xml)
6fa14469 74 #:use-module (gnu packages xorg)
4ed20663 75 #:use-module (gnu packages zip)
afa181ff 76 #:use-module (gnu packages tcl)
a01b6da7
NK
77 #:use-module (guix packages)
78 #:use-module (guix download)
ea5456c8 79 #:use-module (guix git-download)
11bb85a1 80 #:use-module (guix utils)
acc26ff1 81 #:use-module (guix build-system gnu)
d8c4998f 82 #:use-module (guix build-system cmake)
898238b9 83 #:use-module (guix build-system python)
1c65314c
FB
84 #:use-module (guix build-system trivial)
85 #:use-module (srfi srfi-1))
a01b6da7 86
b24d1cfc 87(define-public python-2
a01b6da7
NK
88 (package
89 (name "python")
ff6f33cf 90 (version "2.7.10")
a01b6da7
NK
91 (source
92 (origin
93 (method url-fetch)
9b43a0ff 94 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
95 version "/Python-" version ".tar.xz"))
96 (sha256
97 (base32
6a20289d 98 "1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw"))
dedc8320
LC
99 (patches (map search-patch
100 '("python-2.7-search-paths.patch"
9820a6d4 101 "python-2-deterministic-build-info.patch"
dedc8320 102 "python-2.7-source-date-epoch.patch")))))
02f0c3b2
LC
103 (outputs '("out"
104 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 105 (build-system gnu-build-system)
3fdc99da 106 (arguments
af807dea 107 `(#:tests? #f
ff6f33cf
ED
108 ;; 268 tests OK.
109 ;; 103 tests failed:
110 ;; test_distutils test_shutil test_signal test_site test_slice
111 ;; test_smtplib test_smtpnet test_socket test_socketserver
112 ;; test_softspace test_sort test_spwd test_sqlite test_ssl
113 ;; test_startfile test_stat test_str test_strftime test_string
114 ;; test_stringprep test_strop test_strptime test_strtod test_struct
115 ;; test_structmembers test_structseq test_subprocess test_sunau
116 ;; test_sunaudiodev test_sundry test_symtable test_syntax test_sys
117 ;; test_sys_setprofile test_sys_settrace test_sysconfig test_tarfile
118 ;; test_tcl test_telnetlib test_tempfile test_textwrap test_thread
119 ;; test_threaded_import test_threadedtempfile test_threading
120 ;; test_threading_local test_threadsignals test_time test_timeit
121 ;; test_timeout test_tk test_tokenize test_tools test_trace
122 ;; test_traceback test_transformer test_ttk_guionly test_ttk_textonly
123 ;; test_tuple test_typechecks test_ucn test_unary
124 ;; test_undocumented_details test_unicode test_unicode_file
125 ;; test_unicodedata test_univnewlines test_univnewlines2k test_unpack
126 ;; test_urllib test_urllib2 test_urllib2_localnet test_urllib2net
127 ;; test_urllibnet test_urlparse test_userdict test_userlist
128 ;; test_userstring test_uu test_uuid test_wait3 test_wait4
129 ;; test_warnings test_wave test_weakref test_weakset test_whichdb
130 ;; test_winreg test_winsound test_with test_wsgiref test_xdrlib
131 ;; test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc
132 ;; test_xpickle test_xrange test_zipfile test_zipfile64
133 ;; test_zipimport test_zipimport_support test_zlib
134 ;; 30 tests skipped:
135 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
136 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
137 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_crypt
138 ;; test_curses test_dl test_gdb test_gl test_idle test_imageop
139 ;; test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos
140 ;; test_macostools test_msilib test_nis test_ossaudiodev
141 ;; test_scriptpackages
142 ;; 6 skips unexpected on linux2:
143 ;; test_bsddb test_bsddb3 test_crypt test_gdb test_idle test_ioctl
144 ;; One of the typical errors:
145 ;; test_unicode
146 ;; test test_unicode crashed -- <type 'exceptions.OSError'>: [Errno 2] No
147 ;; such file or directory
af807dea 148 #:test-target "test"
3fdc99da 149 #:configure-flags
6a20289d
LC
150 (list "--enable-shared" ;allow embedding
151 "--with-system-ffi" ;build ctypes
152 (string-append "LDFLAGS=-Wl,-rpath="
153 (assoc-ref %outputs "out") "/lib"))
fd982732 154
d2cc9c7c
LC
155 #:modules ((ice-9 ftw) (ice-9 match)
156 (guix build utils) (guix build gnu-build-system))
fd982732 157 #:phases
46472ecd
MW
158 (modify-phases %standard-phases
159 (add-before
160 'configure 'patch-lib-shells
161 (lambda _
162 ;; Filter for existing files, since some may not exist in all
163 ;; versions of python that are built with this recipe.
164 (substitute* (filter file-exists?
165 '("Lib/subprocess.py"
166 "Lib/popen2.py"
167 "Lib/distutils/tests/test_spawn.py"
168 "Lib/test/test_subprocess.py"))
169 (("/bin/sh") (which "sh")))
dedc8320
LC
170
171 ;; Use zero as the timestamp in .pyc files so that builds are
172 ;; deterministic. TODO: Remove it when this variable is set in
173 ;; gnu-build-system.scm.
a665996f 174 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 175 #t))
5b4e2791
LC
176 (add-before 'configure 'do-not-record-configure-flags
177 (lambda* (#:key configure-flags #:allow-other-keys)
178 ;; Remove configure flags from the installed '_sysconfigdata.py'
179 ;; and 'Makefile' so we don't end up keeping references to the
180 ;; build tools.
181 ;;
182 ;; Preserve at least '--with-system-ffi' since otherwise the
183 ;; thing tries to build libffi, fails, and we end up with a
184 ;; Python that lacks ctypes.
185 (substitute* "configure"
186 (("^CONFIG_ARGS=.*$")
187 (format #f "CONFIG_ARGS='~a'\n"
188 (if (member "--with-system-ffi" configure-flags)
189 "--with-system-ffi"
190 ""))))
191 #t))
46472ecd
MW
192 (add-before
193 'check 'pre-check
194 (lambda _
195 ;; 'Lib/test/test_site.py' needs a valid $HOME
196 (setenv "HOME" (getcwd))
197 #t))
198 (add-after
199 'unpack 'set-source-file-times-to-1980
200 ;; XXX One of the tests uses a ZIP library to pack up some of the
201 ;; source tree, and fails with "ZIP does not support timestamps
202 ;; before 1980". Work around this by setting the file times in the
203 ;; source tree to sometime in early 1980.
204 (lambda _
205 (let ((circa-1980 (* 10 366 24 60 60)))
206 (ftw "." (lambda (file stat flag)
207 (utime file circa-1980 circa-1980)
208 #t))
02f0c3b2
LC
209 #t)))
210 (add-after 'install 'move-tk-inter
211 (lambda* (#:key outputs #:allow-other-keys)
212 ;; When Tkinter support is built move it to a separate output so
213 ;; that the main output doesn't contain a reference to Tcl/Tk.
214 (let ((out (assoc-ref outputs "out"))
215 (tk (assoc-ref outputs "tk")))
216 (when tk
217 (match (find-files out "tkinter.*\\.so")
218 ((tkinter.so)
219 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
220 ;; want it under TK/lib/pythonX.Y/site-packages.
221 (let* ((len (string-length out))
222 (target (string-append
223 tk "/"
224 (string-drop
225 (dirname (dirname tkinter.so))
226 len)
227 "/site-packages")))
228 (install-file tkinter.so target)
229 (delete-file tkinter.so)))))
230 #t))))))
a01b6da7 231 (inputs
3fdc99da
CR
232 `(("bzip2" ,bzip2)
233 ("gdbm" ,gdbm)
b10ab723 234 ("libffi" ,libffi) ; for ctypes
b88e1b0a 235 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 236 ("openssl" ,openssl)
3fdc99da 237 ("readline" ,readline)
afa181ff
LC
238 ("zlib" ,zlib)
239 ("tcl" ,tcl)
240 ("tk" ,tk))) ; for tkinter
b10ab723
CR
241 (native-inputs
242 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
243 (native-search-paths
244 (list (search-path-specification
245 (variable "PYTHONPATH")
af070955 246 (files '("lib/python2.7/site-packages")))))
a01b6da7 247 (home-page "http://python.org")
afa181ff 248 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
249 (description
250 "Python is a remarkably powerful dynamic programming language that
251is used in a wide variety of application domains. Some of its key
252distinguishing features include: clear, readable syntax; strong
253introspection capabilities; intuitive object orientation; natural
254expression of procedural code; full modularity, supporting hierarchical
255packages; exception-based error handling; and very high level dynamic
256data types.")
257 (license psfl)))
acc26ff1 258
b24d1cfc
AE
259(define-public python
260 (package (inherit python-2)
08c04509 261 (version "3.4.3")
717003e3
LC
262 (source (origin
263 (method url-fetch)
264 (uri (string-append "https://www.python.org/ftp/python/"
265 version "/Python-" version ".tar.xz"))
6a20289d
LC
266 (patches (map search-patch
267 '("python-fix-tests.patch"
268 ;; XXX Try removing this patch for python > 3.4.3
269 "python-disable-ssl-test.patch"
9820a6d4 270 "python-3-deterministic-build-info.patch"
6a20289d 271 "python-3-search-paths.patch")))
717003e3
LC
272 (patch-flags '("-p0"))
273 (sha256
274 (base32
08c04509 275 "1f4nm4z08sy0kqwisvv95l02crv6dyysdmx44p1mz3bn6csrdcxm"))))
1f434457
MW
276 (arguments (substitute-keyword-arguments (package-arguments python-2)
277 ((#:tests? _) #t)))
1aebc0cb
AE
278 (native-search-paths
279 (list (search-path-specification
280 (variable "PYTHONPATH")
0e05d01e
SB
281 (files (list (string-append "lib/python"
282 (version-major+minor version)
283 "/site-packages"))))))))
f26a77ff 284
95288fcc
LC
285;; Minimal variants of Python, mostly used to break the cycle between Tk and
286;; Python (Tk -> libxcb -> Python.)
287
288(define-public python2-minimal
289 (package (inherit python-2)
290 (name "python-minimal")
02f0c3b2 291 (outputs '("out"))
95288fcc
LC
292 (arguments
293 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
294 ((#:configure-flags cf)
295 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
296 (inputs '()))) ;none of the optional dependencies
297
298(define-public python-minimal
898238b9 299 (package (inherit python)
95288fcc 300 (name "python-minimal")
02f0c3b2 301 (outputs '("out"))
95288fcc
LC
302 (arguments
303 (substitute-keyword-arguments (package-arguments python)
c5a05e31
LC
304 ((#:configure-flags cf)
305 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
306
307 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
308 ;; zlib is required by 'zipimport', used by pip.
309 (inputs `(("openssl" ,openssl)
310 ("zlib" ,zlib)))))
311
64cb064c
LC
312(define* (wrap-python3 python
313 #:optional
314 (name (string-append (package-name python) "-wrapper")))
898238b9 315 (package (inherit python)
95288fcc 316 (name name)
898238b9
AE
317 (source #f)
318 (build-system trivial-build-system)
02f0c3b2 319 (outputs '("out"))
3c0f2329 320 (propagated-inputs `(("python" ,python)))
898238b9
AE
321 (arguments
322 `(#:modules ((guix build utils))
323 #:builder
324 (begin
325 (use-modules (guix build utils))
326 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
327 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
328 (mkdir-p bin)
329 (for-each
330 (lambda (old new)
331 (symlink (string-append python old)
332 (string-append bin "/" new)))
333 `("python3", "pydoc3", "idle3")
334 `("python", "pydoc", "idle"))))))
0d56e3e1
LC
335 (synopsis "Wrapper for the Python 3 commands")
336 (description
337 "This package provides wrappers for the commands of Python@tie{}3.x such
338that they can be invoked under their usual name---e.g., @command{python}
339instead of @command{python3}.")))
340
95288fcc
LC
341(define-public python-wrapper (wrap-python3 python))
342(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 343
aaf625b8
RW
344(define-public python-psutil
345 (package
346 (name "python-psutil")
f56777be 347 (version "3.3.0")
aaf625b8
RW
348 (source
349 (origin
350 (method url-fetch)
f56777be 351 (uri (pypi-uri "psutil" version))
aaf625b8
RW
352 (sha256
353 (base32
f56777be 354 "11bd1555vf2ibjnmqf64im5cp55vcqfq45ccinm9ll3bs68na6s2"))))
aaf625b8
RW
355 (build-system python-build-system)
356 (native-inputs
357 `(("python-setuptools" ,python-setuptools)))
358 (home-page "https://pypi.python.org/pypi/psutil/")
359 (synopsis "Library for retrieving information on running processes")
360 (description
361 "psutil (Python system and process utilities) is a library for retrieving
362information on running processes and system utilization (CPU, memory, disks,
363network) in Python. It is useful mainly for system monitoring, profiling and
364limiting process resources and management of running processes. It implements
365many functionalities offered by command line tools such as: ps, top, lsof,
366netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
367pidof, tty, taskset, pmap.")
368 (license bsd-3)))
369
370(define-public python2-psutil
371 (package-with-python2 python-psutil))
898238b9 372
f9da1d8a
ED
373(define-public python-passlib
374 (package
375 (name "python-passlib")
690e8c66 376 (version "1.6.5")
f9da1d8a
ED
377 (source
378 (origin
379 (method url-fetch)
690e8c66 380 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
381 (sha256
382 (base32
690e8c66 383 "1z27wdxs5rj5xhhqfzvzn3yg682irkxw6dcs5jj7mcf97psk8gd8"))))
f9da1d8a
ED
384 (build-system python-build-system)
385 (native-inputs
386 `(("python-nose" ,python-nose)
387 ("python-setuptools" ,python-setuptools)))
388 (inputs
389 `(("python-py-bcrypt" ,python-py-bcrypt)))
390 (arguments
391 `(#:phases
392 (alist-cons-before
393 'check 'set-PYTHON_EGG_CACHE
394 ;; some tests require access to "$HOME/.cython"
395 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
396 %standard-phases)))
397 (home-page "https://bitbucket.org/ecollins/passlib")
398 (synopsis
399 "Comprehensive password hashing framework")
400 (description
401 "Passlib is a password hashing library for Python 2 & 3, which provides
402cross-platform implementations of over 30 password hashing algorithms, as well
403as a framework for managing existing password hashes. It's designed to be
404useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
405to providing full-strength password hashing for multi-user application.")
406 (license bsd-3)))
407
408(define-public python2-passlib
409 (package-with-python2 python-passlib))
410
feb0d9c3
ED
411(define-public python-py-bcrypt
412 (package
413 (name "python-py-bcrypt")
414 (version "0.4")
415 (source
416 (origin
417 (method url-fetch)
418 (uri (string-append
419 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
420 version
421 ".tar.gz"))
422 (sha256
423 (base32
424 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
425 (build-system python-build-system)
426 (native-inputs
427 `(("python-setuptools" ,python-setuptools)))
428 (home-page "https://code.google.com/p/py-bcrypt")
429 (synopsis
430 "Bcrypt password hashing and key derivation")
431 (description
432 "A python wrapper of OpenBSD's Blowfish password hashing code. This
433system hashes passwords using a version of Bruce Schneier's Blowfish block
434cipher with modifications designed to raise the cost of off-line password
435cracking and frustrate fast hardware implementation. The computation cost of
436the algorithm is parametised, so it can be increased as computers get faster.
437The intent is to make a compromise of a password database less likely to
438result in an attacker gaining knowledge of the plaintext passwords (e.g. using
439John the Ripper).")
440 ;; "sha2.c" is under BSD-3;
441 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
442 ;; the rest is under ISC.
443 (license (list isc bsd-3 bsd-4))))
444
445(define-public python2-py-bcrypt
446 (package-with-python2 python-py-bcrypt))
447
448
429fdea1
ED
449(define-public python-paramiko
450 (package
451 (name "python-paramiko")
452 (version "1.15.2")
453 (source
454 (origin
455 (method url-fetch)
456 (uri (string-append
457 "https://pypi.python.org/packages/source/p/paramiko/paramiko-"
458 version
459 ".tar.gz"))
460 (sha256
461 (base32
462 "0mbfzm9zlrz6mla9xakrm8wkll3x035f9rj3c5pbgjzfldqscmjg"))))
463 (build-system python-build-system)
464 (native-inputs
465 `(("python-setuptools" ,python-setuptools)))
a3fc12da
CR
466 (propagated-inputs
467 `(("python-pycrypto" ,python-pycrypto)))
429fdea1 468 (inputs
a3fc12da 469 `(("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
470 (home-page "http://www.paramiko.org/")
471 (synopsis "SSHv2 protocol library")
472 (description "Paramiko is a python implementation of the SSHv2 protocol,
473providing both client and server functionality. While it leverages a Python C
474extension for low level cryptography (PyCrypto), Paramiko itself is a pure
475Python interface around SSH networking concepts.")
476 (license lgpl2.1+)))
477
478(define-public python2-paramiko
479 (package-with-python2 python-paramiko))
480
481
de73dbf6
ED
482(define-public python-httplib2
483 (package
484 (name "python-httplib2")
485 (version "0.9.1")
486 (source
487 (origin
488 (method url-fetch)
489 (uri (string-append
490 "https://pypi.python.org/packages/source/h/httplib2/httplib2-"
491 version
492 ".tar.gz"))
493 (sha256
494 (base32
495 "1xc3clbrf77r0600kja71j7hk1218sjiq0gfmb8vjdajka8kjqxw"))))
496 (build-system python-build-system)
497 (native-inputs
498 `(("python-setuptools" ,python-setuptools)))
499 (home-page
500 "https://github.com/jcgregorio/httplib2")
501 (synopsis "Comprehensive HTTP client library")
502 (description
503 "A comprehensive HTTP client library supporting many features left out of
504other HTTP libraries.")
505 (license license:expat)))
506
507(define-public python2-httplib2
508 (package-with-python2 python-httplib2))
509
67039875
ED
510(define-public python-ecdsa
511 (package
512 (name "python-ecdsa")
513 (version "0.13")
514 (source
515 (origin
516 (method url-fetch)
517 (uri (string-append
518 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
519 version
520 ".tar.gz"))
521 (sha256
522 (base32
523 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
524 (build-system python-build-system)
525 (native-inputs
526 `(("python-setuptools" ,python-setuptools)))
527 (inputs
528 `(("openssl" ,openssl)))
529 (home-page
530 "http://github.com/warner/python-ecdsa")
531 (synopsis
532 "ECDSA cryptographic signature library (pure python)")
533 (description
534 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
535Curve Digital Signature Algorithm), implemented purely in Python. With this
536library, you can quickly create keypairs (signing key and verifying key), sign
537messages, and verify the signatures. The keys and signatures are very short,
538making them easy to handle and incorporate into other protocols.")
539 (license license:expat)))
540
541(define-public python2-ecdsa
542 (package-with-python2 python-ecdsa))
543
52323f32
ED
544(define-public python-ccm
545 (package
546 (name "python-ccm")
547 (version "2.0.4.1")
548 (source
549 (origin
550 (method url-fetch)
551 (uri (string-append
552 "https://pypi.python.org/packages/source/c/ccm/ccm-"
553 version
554 ".tar.gz"))
555 (sha256
556 (base32
557 "199jw221albs2iv6xczczq88fxnh0aw8hzmys8qkbzkd99dssng9"))))
558 (build-system python-build-system)
559 (native-inputs
560 `(("python-setuptools" ,python-setuptools)))
561 (inputs
562 `(("python-pyyaml" ,python-pyyaml)
563 ("python-six" ,python-six)))
564 (home-page "https://github.com/pcmanus/ccm")
565 (synopsis "Cassandra Cluster Manager")
566 (description "A script/library to create, launch and remove an Apache
567Cassandra cluster on localhost.")
568 (license asl2.0)))
569
570(define-public python2-ccm
571 (package-with-python2 python-ccm))
572
89114f39 573(define-public python-pytz
acc26ff1 574 (package
89114f39 575 (name "python-pytz")
b01bbbcf 576 (version "2015.7")
acc26ff1
CR
577 (source
578 (origin
579 (method url-fetch)
b01bbbcf 580 (uri (pypi-uri "pytz" version))
acc26ff1
CR
581 (sha256
582 (base32
b01bbbcf 583 "1spgdfp1ssya7v3kww7zp71xpj437skpqazcvqr3kr1p1brnw9lr"))))
acc26ff1 584 (build-system python-build-system)
8498b8cf 585 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 586 (home-page "http://pythonhosted.org/pytz")
9e771e3b 587 (synopsis "Python timezone library")
acc26ff1
CR
588 (description
589 "This library allows accurate and cross platform timezone calculations
590using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 591 (license license:expat)))
5ace6e2f 592
89114f39 593(define-public python2-pytz
11bb85a1 594 (package-with-python2 python-pytz))
89114f39 595
fc50e9c6 596
89114f39 597(define-public python-babel
5ace6e2f 598 (package
89114f39 599 (name "python-babel")
b850a6d8 600 (version "2.1.1")
5ace6e2f
CR
601 (source
602 (origin
603 (method url-fetch)
b850a6d8 604 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
605 (sha256
606 (base32
b850a6d8 607 "0j2jgfzj1a2m39pm2qc36fzr7a6p5ybwndi0xdzhi2p8zw7dbdkz"))))
5ace6e2f
CR
608 (build-system python-build-system)
609 (inputs
e1804763
AE
610 `(("python-pytz" ,python-pytz)
611 ("python-setuptools" ,python-setuptools)))
8498b8cf 612 (arguments `(#:tests? #f)) ; no test target
e1804763 613 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
614 (synopsis
615 "Tools for internationalizing Python applications")
616 (description
617 "Babel is composed of two major parts:
618- tools to build and work with gettext message catalogs
619- a Python interface to the CLDR (Common Locale Data Repository), providing
620access to various locale display names, localized number and date formatting,
621etc. ")
622 (license bsd-3)))
89114f39
AE
623
624(define-public python2-babel
11bb85a1 625 (package-with-python2 python-babel))
73adf220 626
ed377cc6
RW
627(define-public python2-backport-ssl-match-hostname
628 (package
629 (name "python2-backport-ssl-match-hostname")
630 (version "3.4.0.2")
631 (source
632 (origin
633 (method url-fetch)
634 (uri (string-append
635 "https://pypi.python.org/packages/source/b/"
636 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
637 version ".tar.gz"))
638 (sha256
639 (base32
640 "1bnn47ipvhy49n0m50v27lp4xj6sqdkdw676ypd7pawsn1zhwh87"))))
641 (build-system python-build-system)
642 (arguments `(#:python ,python-2))
643 (inputs
644 `(("python2-setuptools" ,python2-setuptools)))
645 (home-page "https://pypi.python.org/pypi/backports.ssl_match_hostname")
646 (synopsis "Backport of ssl.match_hostname() function from Python 3.4")
647 (description
648 "This backport brings the ssl.match_hostname() function to users of
649earlier versions of Python. The function checks the hostname in the
650certificate returned by the server to which a connection has been established,
651and verifies that it matches the intended target hostname.")
652 (license psfl)))
653
ef5cbf9b
RW
654(define-public python-h5py
655 (package
656 (name "python-h5py")
657 (version "2.4.0")
658 (source
659 (origin
660 (method url-fetch)
661 (uri (string-append "https://pypi.python.org/packages/source/h/h5py/h5py-"
662 version ".tar.gz"))
663 (sha256
664 (base32
665 "0q4f9l8grf6pwp64xbv8bmyxx416s7h4522nnxac056ap3savbps"))))
666 (build-system python-build-system)
797e1401
RW
667 (arguments
668 `(#:tests? #f ; no test target
669 #:phases
670 (modify-phases %standard-phases
671 (add-after 'unpack 'fix-hdf5-paths
672 (lambda* (#:key inputs #:allow-other-keys)
673 (let ((prefix (assoc-ref inputs "hdf5")))
674 (substitute* "setup_build.py"
675 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
676 (string-append "['" prefix "/lib" "']"))
677 (("'/opt/local/include', '/usr/local/include'")
678 (string-append "'" prefix "/include" "'")))
679 (substitute* "setup_configure.py"
680 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
681 (string-append "['" prefix "/lib" "']")))
682 #t))))))
3c4010b1
RW
683 (propagated-inputs
684 `(("python-numpy" ,python-numpy)))
ef5cbf9b 685 (inputs
3c4010b1 686 `(("hdf5" ,hdf5)))
ef5cbf9b 687 (native-inputs
3c4010b1 688 `(("python-cython" ,python-cython)))
ef5cbf9b
RW
689 (home-page "http://www.h5py.org/")
690 (synopsis "Read and write HDF5 files from Python")
691 (description
692 "The h5py package provides both a high- and low-level interface to the
693HDF5 library from Python. The low-level interface is intended to be a
694complete wrapping of the HDF5 API, while the high-level component supports
695access to HDF5 files, datasets and groups using established Python and NumPy
696concepts.")
697 (license bsd-3)))
698
699(define-public python2-h5py
700 (let ((h5py (package-with-python2 python-h5py)))
701 (package (inherit h5py)
3c4010b1 702 (propagated-inputs
ef5cbf9b
RW
703 `(("python2-numpy" ,python2-numpy)
704 ,@(alist-delete
705 "python-numpy"
3c4010b1 706 (package-propagated-inputs h5py)))))))
ef5cbf9b 707
c1448c69
EB
708(define-public python-lockfile
709 (package
710 (name "python-lockfile")
711 (version "0.9.1")
712 (source
713 (origin
714 (method url-fetch)
715 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
716 "lockfile-" version ".tar.gz"))
717 (sha256
718 (base32
719 "0iwif7i84gwpvrnpv4brshdk8j6l77smvknm8k3bg77mj6f5ini3"))))
720 (build-system python-build-system)
721 (arguments '(#:test-target "check"))
722 (home-page "http://code.google.com/p/pylockfile/")
723 (synopsis "Platform-independent file locking module")
724 (description
725 "The lockfile package exports a LockFile class which provides a simple
726API for locking files.")
bd3fa666 727 (license license:expat)))
c1448c69
EB
728
729(define-public python2-lockfile
730 (package-with-python2 python-lockfile))
731
5a1a4bf6
EB
732(define-public python-mock
733 (package
734 (name "python-mock")
735 (version "1.0.1")
736 (source
737 (origin
738 (method url-fetch)
739 (uri (string-append "https://pypi.python.org/packages/source/m/mock/"
740 "mock-" version ".tar.gz"))
741 (sha256
742 (base32
743 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
744 (build-system python-build-system)
745 (arguments '(#:test-target "check"))
07af3e5e 746 (home-page "http://code.google.com/p/mock/")
9e771e3b 747 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
748 (description
749 "Mock is a library for testing in Python. It allows you to replace parts
750of your system under test with mock objects and make assertions about how they
751have been used.")
bd3fa666 752 (license license:expat)))
5a1a4bf6
EB
753
754(define-public python2-mock
755 (package-with-python2 python-mock))
756
fc50e9c6 757
73adf220
AE
758(define-public python-setuptools
759 (package
760 (name "python-setuptools")
62a9a23b 761 (version "18.3.1")
73adf220
AE
762 (source
763 (origin
764 (method url-fetch)
765 (uri (string-append "https://pypi.python.org/packages/source/s/setuptools/setuptools-"
766 version ".tar.gz"))
767 (sha256
768 (base32
62a9a23b 769 "0kc7rbav00ks6iaw14p38y81q12fx0lpkhgf5m97xc04f5r318ig"))))
73adf220 770 (build-system python-build-system)
d3d656c5
AE
771 ;; FIXME: Tests require pytest, which itself relies on setuptools.
772 ;; One could bootstrap with an internal untested setuptools.
73adf220 773 (arguments
824af8ca 774 `(#:tests? #f))
73adf220
AE
775 (home-page "https://pypi.python.org/pypi/setuptools")
776 (synopsis
777 "Library designed to facilitate packaging Python projects")
778 (description
779 "Setuptools is a fully-featured, stable library designed to facilitate
780packaging Python projects, where packaging includes:
781Python package and module definitions,
782distribution package metadata,
783test hooks,
784project installation,
785platform-specific details,
786Python 3 support.")
787 (license psfl)))
788
789(define-public python2-setuptools
790 (package-with-python2 python-setuptools))
fc50e9c6
AE
791
792
cafc3f5a
EB
793(define-public python-pycrypto
794 (package
795 (name "python-pycrypto")
796 (version "2.6.1")
797 (source
798 (origin
799 (method url-fetch)
800 (uri (string-append "https://pypi.python.org/packages/source/p/"
801 "pycrypto/pycrypto-" version ".tar.gz"))
802 (sha256
803 (base32
804 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
805 (build-system python-build-system)
806 (native-inputs
807 `(("python-setuptools" ,python-setuptools)))
808 (inputs
809 `(("python" ,python)
810 ("gmp" ,gmp)))
811 (arguments
812 `(#:phases
813 (alist-cons-before
814 'build 'set-build-env
815 ;; pycrypto runs an autoconf configure script behind the scenes
816 (lambda _
817 (setenv "CONFIG_SHELL" (which "bash")))
818 %standard-phases)))
819 (home-page "http://www.pycrypto.org/")
820 (synopsis "Cryptographic modules for Python")
821 (description
822 "Pycrypto is a collection of both secure hash functions (such as SHA256
823and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 824etc.). The package is structured to make adding new modules easy.")
cafc3f5a
EB
825 (license public-domain)))
826
345f0611 827(define-public python2-pycrypto
1c0059da
EF
828 (let ((pycrypto (package-with-python2 python-pycrypto)))
829 (package (inherit pycrypto)
830 (inputs
831 `(("python" ,python-2)
832 ,@(alist-delete
833 "python"
834 (package-inputs pycrypto)))))))
345f0611 835
cafc3f5a
EB
836(define-public python-keyring
837 (package
838 (name "python-keyring")
664e6c3a 839 (version "5.7.1")
cafc3f5a
EB
840 (source
841 (origin
842 (method url-fetch)
664e6c3a 843 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
844 (sha256
845 (base32
664e6c3a 846 "1h7a1r9ick7wdd0xb5p63413nvjadna2xawrsvmklsl5ddhm5wrx"))))
cafc3f5a
EB
847 (build-system python-build-system)
848 (native-inputs
664e6c3a
EF
849 `(("python-setuptools" ,python-setuptools)
850 ("python-setuptools-scm" ,python-setuptools-scm)
cafc3f5a
EB
851 ("python-mock" ,python-mock)))
852 (inputs
853 `(("python-pycrypto" ,python-pycrypto)))
854 (arguments
664e6c3a 855 `(#:tests? #f)) ;TODO: tests require pytest
cafc3f5a
EB
856 (home-page "http://bitbucket.org/kang/python-keyring-lib")
857 (synopsis "Store and access your passwords safely")
858 (description
859 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 860service from python. It can be used in any application that needs safe
cafc3f5a
EB
861password storage.")
862 ;; "MIT" and PSF dual license
863 (license x11)))
864
d7af1069 865(define-public python2-keyring
44e30a76
EF
866 (let ((keyring (package-with-python2 python-keyring)))
867 (package (inherit keyring)
868 (inputs
869 `(("python2-pycrypto" ,python2-pycrypto))))))
d7af1069 870
a480bc41
EB
871(define-public python-six
872 (package
873 (name "python-six")
b6ab89ef 874 (version "1.10.0")
a480bc41
EB
875 (source
876 (origin
877 (method url-fetch)
b6ab89ef 878 (uri (pypi-uri "six" version))
a480bc41
EB
879 (sha256
880 (base32
b6ab89ef 881 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41
EB
882 (build-system python-build-system)
883 (inputs
884 `(("python-setuptools" ,python-setuptools)))
885 (home-page "http://pypi.python.org/pypi/six/")
886 (synopsis "Python 2 and 3 compatibility utilities")
887 (description
35b9e423 888 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
889functions for smoothing over the differences between the Python versions with
890the goal of writing Python code that is compatible on both Python versions.
35b9e423 891Six supports every Python version since 2.5. It is contained in only one
a480bc41
EB
892Python file, so it can be easily copied into your project.")
893 (license x11)))
894
0c20025c
AE
895(define-public python2-six
896 (package-with-python2 python-six))
897
cafc3f5a
EB
898(define-public python-dateutil-2
899 (package
900 (name "python-dateutil")
c2a9c1c0 901 (version "2.4.2")
cafc3f5a
EB
902 (source
903 (origin
904 (method url-fetch)
905 (uri (string-append "https://pypi.python.org/packages/source/p/"
906 name "/" name "-" version ".tar.gz"))
907 (sha256
908 (base32
c2a9c1c0 909 "0ggbm2z72p0nwjqgvpw8s5bqzwayqiqv2iws0x2a605m3mf4959y"))))
cafc3f5a
EB
910 (build-system python-build-system)
911 (inputs
912 `(("python-setuptools" ,python-setuptools)
913 ("python-six" ,python-six)))
914 (home-page "http://labix.org/python-dateutil")
915 (synopsis "Extensions to the standard datetime module")
916 (description
917 "The dateutil module provides powerful extensions to the standard
918datetime module, available in Python 2.3+.")
919 (license bsd-3)))
920
921(define-public python2-dateutil-2
922 (package-with-python2 python-dateutil-2))
923
fc50e9c6
AE
924(define-public python-dateutil
925 (package
926 (name "python-dateutil")
927 (version "1.5") ; last version for python < 3
928 (source
929 (origin
930 (method url-fetch)
cafc3f5a
EB
931 (uri (string-append "http://labix.org/download/python-dateutil/"
932 "python-dateutil-" version ".tar.gz"))
fc50e9c6
AE
933 (sha256
934 (base32
935 "0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
936 (build-system python-build-system)
937 (inputs
938 `(("python-setuptools" ,python-setuptools)))
939 (home-page "http://labix.org/python-dateutil")
cafc3f5a 940 (synopsis "Extensions to the standard datetime module")
fc50e9c6
AE
941 (description
942 "The dateutil module provides powerful extensions to the standard
943datetime module, available in Python 2.3+.")
944 (license psfl)))
945
946(define-public python2-dateutil
947 (package-with-python2 python-dateutil))
1d08c01f 948
cafc3f5a
EB
949(define-public python-parsedatetime
950 (package
951 (name "python-parsedatetime")
4df1e30d 952 (version "1.5")
cafc3f5a
EB
953 (source
954 (origin
955 (method url-fetch)
956 (uri (string-append "https://pypi.python.org/packages/source/p/"
957 "parsedatetime/parsedatetime-" version ".tar.gz"))
958 (sha256
959 (base32
4df1e30d 960 "1as0mm4ql3z0324nc9bys2s1ngh507i317p16b79rx86wlmvx9ix"))))
cafc3f5a
EB
961 (build-system python-build-system)
962 (native-inputs
963 `(("python-setuptools" ,python-setuptools)))
cafc3f5a
EB
964 (home-page "http://github.com/bear/parsedatetime/")
965 (synopsis
966 "Parse human-readable date/time text")
967 (description
e881752c 968 "Parse human-readable date/time text.")
cafc3f5a
EB
969 (license asl2.0)))
970
38b8f9b2
LF
971(define-public python2-parsedatetime
972 (package-with-python2 python-parsedatetime))
973
d072efcb
RW
974(define-public python-pandas
975 (package
976 (name "python-pandas")
977 (version "0.16.0")
978 (source
979 (origin
980 (method url-fetch)
981 (uri (string-append "https://pypi.python.org/packages/source/p/"
982 "pandas/pandas-" version ".tar.gz"))
983 (sha256
984 (base32 "1wfrp8dx1zcsry6f09ndza6qm1yr7f163211f4l9vjlnhxpxw4s0"))))
985 (build-system python-build-system)
986 (arguments
987 `(;; Three tests fail:
988 ;; - test_read_google
989 ;; - test_read_yahoo
990 ;; - test_month_range_union_tz_dateutil
991 #:tests? #f))
992 (propagated-inputs
993 `(("python-numpy" ,python-numpy)
994 ("python-pytz" ,python-pytz)
995 ("python-dateutil" ,python-dateutil-2)))
996 (native-inputs
997 `(("python-nose" ,python-nose)
998 ("python-setuptools" ,python-setuptools)))
999 (home-page "http://pandas.pydata.org")
1000 (synopsis "Data structures for data analysis, time series, and statistics")
1001 (description
1002 "Pandas is a Python package providing fast, flexible, and expressive data
1003structures designed to make working with structured (tabular,
1004multidimensional, potentially heterogeneous) and time series data both easy
1005and intuitive. It aims to be the fundamental high-level building block for
1006doing practical, real world data analysis in Python.")
1007 (license bsd-3)))
1008
1009(define-public python2-pandas
3cbe7d5e
FB
1010 (let ((pandas (package-with-python2 python-pandas)))
1011 (package (inherit pandas)
1012 (propagated-inputs
1013 `(("python2-numpy" ,python2-numpy)
1014 ,@(alist-delete "python-numpy"
1015 (package-propagated-inputs pandas)))))))
d072efcb 1016
cafc3f5a
EB
1017(define-public python-tzlocal
1018 (package
1019 (name "python-tzlocal")
226d3331 1020 (version "1.2")
cafc3f5a
EB
1021 (source
1022 (origin
1023 (method url-fetch)
226d3331 1024 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1025 (sha256
1026 (base32
226d3331 1027 "12wsw2fl3adrqrwghasld57bhqdrzn0crblqrci1p5acd0ni53s3"))))
cafc3f5a 1028 (build-system python-build-system)
226d3331 1029 (propagated-inputs `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1030 (home-page "https://github.com/regebro/tzlocal")
1031 (synopsis
35b9e423 1032 "Local timezone information for Python")
cafc3f5a
EB
1033 (description
1034 "Tzlocal returns a tzinfo object with the local timezone information.
1035This module attempts to fix a glaring hole in pytz, that there is no way to
1036get the local timezone information, unless you know the zoneinfo name, and
1037under several distributions that's hard or impossible to figure out.")
1038 (license cc0)))
1039
be7134bf
RW
1040(define-public python-pysam
1041 (package
1042 (name "python-pysam")
1043 (version "0.8.1")
1044 (source
1045 (origin
1046 (method url-fetch)
1047 (uri (string-append "https://pypi.python.org/packages/source/p/pysam/pysam-"
1048 version ".tar.gz"))
1049 (sha256
1050 (base32
1051 "1fb6i6hbpzxaxb62kyyp5alaidwhj40f7c6gwbhr6njzlqd5l459"))))
1052 (build-system python-build-system)
1053 (arguments
1054 `(#:tests? #f ; tests are excluded in the manifest
1055 #:phases
1056 (alist-cons-before
1057 'build 'set-flags
1058 (lambda _
1059 (setenv "LDFLAGS" "-lncurses")
1060 (setenv "CFLAGS" "-D_CURSES_LIB=1"))
1061 %standard-phases)))
1062 (inputs
1063 `(("python-cython" ,python-cython)
1064 ("python-setuptools" ,python-setuptools)
1065 ("ncurses" ,ncurses)
1066 ("zlib" ,zlib)))
1067 (home-page "https://github.com/pysam-developers/pysam")
1068 (synopsis "Python bindings to the SAMtools C API")
1069 (description
1070 "Pysam is a Python module for reading and manipulating files in the
1071SAM/BAM format. Pysam is a lightweight wrapper of the SAMtools C API. It
1072also includes an interface for tabix.")
bd3fa666 1073 (license license:expat)))
be7134bf
RW
1074
1075(define-public python2-pysam
1076 (package-with-python2 python-pysam))
1d08c01f
AE
1077
1078(define-public python2-pysqlite
1079 (package
1080 (name "python2-pysqlite")
7a03af70 1081 (version "2.6.3a") ; see below
1d08c01f
AE
1082 (source
1083 (origin
1084 (method url-fetch)
7a03af70
LC
1085 ;; During the switch from code.google.com to pypi.python.org, the 2.6.3
1086 ;; tarball was modified, but the version number was kept:
1087 ;; <https://lists.gnu.org/archive/html/guix-devel/2014-02/msg00077.html>.
1088 ;; Here we want to refer to the pypi-hosted 2.6.3 tarball.
1089 (uri (string-append
1090 "https://pypi.python.org/packages/source/p/pysqlite/pysqlite-"
1091 "2.6.3" ".tar.gz"))
1d08c01f
AE
1092 (sha256
1093 (base32
7a03af70 1094 "13djzgnbi71znjjyaw4nybg6smilgszcid646j5qav7mdchkb77y"))))
1d08c01f
AE
1095 (build-system python-build-system)
1096 (inputs
1097 `(("sqlite" ,sqlite)))
1098 (arguments
1099 `(#:python ,python-2 ; incompatible with Python 3
1100 #:tests? #f)) ; no test target
7a03af70
LC
1101 (home-page "https://pypi.python.org/pypi/pysqlite")
1102 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1103 (description
1104 "Pysqlite provides SQLite bindings for Python that comply to the
1105Database API 2.0T.")
ed0cdf83 1106 (license license:zlib)))
1d08c01f 1107
2875caf5
AE
1108
1109(define-public python2-mechanize
1110 (package
1111 (name "python2-mechanize")
1112 (version "0.2.5")
1113 (source
1114 (origin
1115 (method url-fetch)
1116 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1117 version ".tar.gz"))
1118 (sha256
1119 (base32
1120 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1121 (build-system python-build-system)
1122 (inputs
1123 `(("python2-setuptools" ,python2-setuptools)))
1124 (arguments
1125 `(#:python ,python-2 ; apparently incompatible with Python 3
1126 #:tests? #f))
1127 ;; test fails with message
1128 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1129 ;; (python-3.3.2) or
1130 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1131 ;; (python-2.7.5).
1132 ;; The source code is from March 2011 and probably not up-to-date
1133 ;; with respect to python unit tests.
1134 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1135 (synopsis
1136 "Stateful programmatic web browsing in Python")
1137 (description
1138 "Mechanize implements stateful programmatic web browsing in Python,
1139after Andy Lester’s Perl module WWW::Mechanize.")
166191b3 1140 (license (non-copyleft "file://COPYING"
e881752c 1141 "See COPYING in the distribution."))))
2875caf5 1142
0352532e
AE
1143
1144(define-public python-simplejson
1145 (package
1146 (name "python-simplejson")
1147 (version "3.3.0")
1148 (source
1149 (origin
1150 (method url-fetch)
1151 (uri (string-append "https://pypi.python.org/packages/source/s/simplejson/simplejson-"
1152 version ".tar.gz"))
1153 (sha256
1154 (base32
1155 "07wsry5j44l5zzm74l4j2bvasiq8n5m32f31n2p7c68i5vc6p2ks"))))
1156 (build-system python-build-system)
1157 (home-page "http://simplejson.readthedocs.org/en/latest/")
1158 (synopsis
1159 "Json library for Python")
1160 (description
e881752c
AK
1161 "JSON (JavaScript Object Notation) is a subset of JavaScript
1162syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1163format.
0352532e
AE
1164
1165Simplejson exposes an API familiar to users of the standard library marshal
1166and pickle modules. It is the externally maintained version of the json
1167library contained in Python 2.6, but maintains compatibility with Python 2.5
1168and (currently) has significant performance advantages, even without using
1169the optional C extension for speedups. Simplejson is also supported on
1170Python 3.3+.")
1171 (license x11)))
1172
1173(define-public python2-simplejson
1174 (package-with-python2 python-simplejson))
421a80a2
AE
1175
1176
1177(define-public python2-pyicu
1178 (package
1179 (name "python2-pyicu")
569ac046 1180 (version "1.8")
421a80a2
AE
1181 (source
1182 (origin
1183 (method url-fetch)
1184 (uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
1185 version ".tar.gz"))
1186 (sha256
1187 (base32
569ac046 1188 "1y361x82lnh9k9srmdx3q92z5iag112z7r5fxm0n1sfwb349yjdw"))))
421a80a2
AE
1189 (build-system python-build-system)
1190 (inputs
1191 `(("icu4c" ,icu4c)))
1192 (arguments
1193 `(#:python ,python-2 ; Python 3 works also, but needs special care for
1194 ; linking with libpython3.3m
1195 #:tests? #f)) ; no check target
1196 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1197 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1198 (description
1199 "PyICU is a python extension wrapping the ICU C++ API.")
1200 (license x11)))
cc20a22a
LC
1201
1202(define-public python2-dogtail
1203 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1204 ;; spaces in indentation" with Python 3.
1205 (package
1206 (name "python2-dogtail")
1207 (version "0.8.2")
1208 (source (origin
1209 (method url-fetch)
1210 (uri (string-append
1211 "https://fedorahosted.org/released/dogtail/dogtail-"
1212 version ".tar.gz"))
1213 (sha256
1214 (base32
1215 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1216 (build-system python-build-system)
1217 (arguments `(#:python ,python-2
1218 #:tests? #f)) ; invalid command "test"
1219 (home-page "https://fedorahosted.org/dogtail/")
1220 (synopsis "GUI test tool and automation framework written in ​Python")
1221 (description
35b9e423 1222 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1223It uses Accessibility (a11y) technologies to communicate with desktop
1224applications. dogtail scripts are written in Python and executed like any
1225other Python program.")
1226 (license gpl2+)))
515e6878 1227
011b18c3
LC
1228(define-public python2-empy
1229 (package
1230 (name "python2-empy")
1231 (version "3.3")
1232 (source (origin
1233 (method url-fetch)
1234 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1235 version ".tar.gz"))
1236 (sha256
1237 (base32
1238 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1239 (build-system python-build-system)
1240 (arguments
1241 `(#:python ,python-2
1242 #:phases (alist-replace
1243 'check
1244 (lambda _
1245 (zero? (system* "./test.sh")))
1246 %standard-phases)))
1247 (home-page "http://www.alcyone.com/software/empy/")
1248 (synopsis "Templating system for Python")
1249 (description
1250 "EmPy is a system for embedding Python expressions and statements in
1251template text; it takes an EmPy source file, processes it, and produces
1252output. This is accomplished via expansions, which are special signals to the
1cd4027c 1253EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1254EmPy can expand arbitrary Python expressions and statements in this way, as
1255well as a variety of special forms. Textual data not explicitly delimited in
1256this way is sent unaffected to the output, allowing Python to be used in
1257effect as a markup language. Also supported are callbacks via hooks,
1258recording and playback via diversions, and dynamic, chainable filters. The
1259system is highly configurable via command line options and embedded
1260commands.")
1261 (license lgpl2.1+)))
1262
8deeda0c
LC
1263(define-public python2-element-tree
1264 (package
1265 (name "python2-element-tree")
1266 (version "1.2.6")
1267 (source (origin
1268 (method url-fetch)
1269 (uri (string-append
1270 "http://effbot.org/media/downloads/elementtree-"
1271 version "-20050316.tar.gz"))
1272 (sha256
1273 (base32
1274 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1275 (build-system python-build-system)
1276 (arguments
1277 `(#:python ,python-2 ; seems to be part of Python 3
1278 #:tests? #f)) ; no 'test' sub-command
1279 (synopsis "Toolkit for XML processing in Python")
1280 (description
1281 "ElementTree is a Python library supporting lightweight XML processing.")
1282 (home-page "http://effbot.org/zone/element-index.htm")
1283 (license (x11-style "http://docs.python.org/2/license.html"
1284 "Like \"CWI LICENSE AGREEMENT FOR PYTHON \
12850.9.0 THROUGH 1.2\"."))))
1286
1287(define-public python2-pybugz
1288 (package
1289 (name "python2-pybugz")
1290 (version "0.6.11")
1291 (source (origin
1292 (method url-fetch)
1293 (uri (string-append
1294 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1295 version ".tar.gz"))
1296 (sha256
1297 (base32
6f194a1e
LC
1298 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
1299 (patches (map search-patch
1300 (list "pybugz-stty.patch"
1301 "pybugz-encode-error.patch")))))
8deeda0c
LC
1302 (build-system python-build-system)
1303 (arguments
1304 `(#:python ,python-2 ; SyntaxError with Python 3
1305 #:tests? #f)) ; no 'test' sub-command
1306 (inputs `(("element-tree" ,python2-element-tree)))
1307 (synopsis "Python and command-line interface to Bugzilla")
1308 (description
1309 "PyBugz is a Python library and command-line tool to query the Bugzilla
1310bug tracking system. It is meant as an aid to speed up interaction with the
1311bug tracker.")
1312 (home-page "http://www.liquidx.net/pybugz/")
1313 (license gpl2)))
1314
a480bc41
EB
1315(define-public python-enum34
1316 (package
1317 (name "python-enum34")
1318 (version "1.0")
1319 (source
1320 (origin
1321 (method url-fetch)
1322 (uri (string-append "https://pypi.python.org/packages/source/e/"
1323 "enum34/enum34-" version ".tar.gz"))
1324 (sha256
1325 (base32
1326 "0dg6mpg9n4g9diyrbnbb5vd9d1qw9f265zwhknqy0mxh0cvmjjrq"))))
1327 (build-system python-build-system)
1328 (inputs
1329 `(("python-setuptools" ,python-setuptools)))
1330 (arguments
1331 `(#:phases
1332 (alist-replace
1333 'check
1334 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1335 %standard-phases)))
1336 (home-page "https://pypi.python.org/pypi/enum34")
1337 (synopsis "Backported Python 3.4 Enum")
1338 (description
1339 "Enum34 is the new Python stdlib enum module available in Python 3.4
1340backported for previous versions of Python from 2.4 to 3.3.")
1341 (license bsd-3)))
1342
1343(define-public python-parse-type
1344 (package
1345 (name "python-parse-type")
1346 (version "0.3.4")
1347 (source
1348 (origin
1349 (method url-fetch)
1350 (uri (string-append "https://pypi.python.org/packages/source/p/"
1351 "parse_type/parse_type-" version ".tar.gz"))
1352 (sha256
1353 (base32
1354 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1355 (build-system python-build-system)
1356 (inputs
1357 `(("python-setuptools" ,python-setuptools)
1358 ("python-six" ,python-six)
1359 ("python-parse" ,python-parse)
1360 ("python-enum34" ,python-enum34))) ;required for python<3.4
1361 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1362 (home-page "https://github.com/jenisys/parse_type")
1363 (synopsis "Extended parse module")
1364 (description
1365 "Parse_type extends the python parse module.")
1366 (license bsd-3)))
1367
1368(define-public python-parse
1369 (package
1370 (name "python-parse")
1371 (version "1.6.4")
1372 (source
1373 (origin
1374 (method url-fetch)
1375 (uri (string-append "https://pypi.python.org/packages/source/p/"
1376 "parse/parse-" version ".tar.gz"))
1377 (sha256
1378 (base32
1379 "0m30q64l6szl7s9mhvqy64w2fdhdn8lb91fmacjiwbv3479cmk57"))))
1380 (build-system python-build-system)
1381 (arguments
1382 `(#:phases
1383 (alist-replace
1384 'check
1385 (lambda _ (zero? (system* "python" "test_parse.py")))
1386 %standard-phases)))
1387 (home-page "https://github.com/r1chardj0n3s/parse")
1388 (synopsis "Parse strings")
1389 (description
1390 "Parse strings using a specification based on the Python format()
1391syntax.")
1392 (license x11)))
1393
1394
515e6878
LC
1395(define-public scons
1396 (package
1397 (name "scons")
a3f61425 1398 (version "2.3.4")
515e6878
LC
1399 (source (origin
1400 (method url-fetch)
1401 (uri (string-append "mirror://sourceforge/scons/scons-"
1402 version ".tar.gz"))
1403 (sha256
1404 (base32
a3f61425 1405 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1406 (build-system python-build-system)
1407 (arguments
1408 ;; With Python 3.x, fails to build with a syntax error.
1409 `(#:python ,python-2
1410 #:tests? #f)) ; no 'python setup.py test' command
1411 (home-page "http://scons.org/")
1412 (synopsis "Software construction tool written in Python")
1413 (description
1414 "SCons is a software construction tool. Think of SCons as an improved,
1415cross-platform substitute for the classic Make utility with integrated
1416functionality similar to autoconf/automake and compiler caches such as ccache.
1417In short, SCons is an easier, more reliable and faster way to build
1418software.")
1419 (license x11)))
011b18c3 1420
c15a5c0e
DT
1421(define-public python-extras
1422 (package
1423 (name "python-extras")
1424 (version "0.0.3")
1425 (source
1426 (origin
1427 (method url-fetch)
1428 (uri (string-append
1429 "https://pypi.python.org/packages/source/e/extras/extras-"
1430 version ".tar.gz"))
1431 (sha256
1432 (base32
1433 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1434 (build-system python-build-system)
1435 (inputs
1436 `(("python-setuptools" ,python-setuptools)))
1437 (arguments
1438 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1439 '(#:tests? #f))
1440 (home-page "https://github.com/testing-cabal/extras")
1441 (synopsis "Useful extensions to the Python standard library")
1442 (description
1443 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1444 (license license:expat)))
c15a5c0e
DT
1445
1446(define-public python2-extras
1447 (package-with-python2 python-extras))
1448
56ea0efd
DT
1449(define-public python-mimeparse
1450 (package
1451 (name "python-mimeparse")
1452 (version "0.1.4")
1453 (source
1454 (origin
1455 (method url-fetch)
1456 (uri (string-append
1457 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1458 version ".tar.gz"))
1459 (sha256
1460 (base32
1461 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1462 (build-system python-build-system)
1463 (inputs
1464 `(("python-setuptools" ,python-setuptools)))
1465 (arguments
1466 '(#:tests? #f)) ; no setup.py test command
1467 (home-page
1468 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1469 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1470 (description
1471 "Mimeparse provides basic functions for parsing MIME type names and
1472matching them against a list of media-ranges.")
bd3fa666 1473 (license license:expat)))
56ea0efd
DT
1474
1475(define-public python2-mimeparse
1476 (package-with-python2 python-mimeparse))
1477
4435427e
DT
1478(define-public python-nose
1479 (package
1480 (name "python-nose")
f7cb9841 1481 (version "1.3.7")
4435427e
DT
1482 (source
1483 (origin
1484 (method url-fetch)
f7cb9841 1485 (uri (pypi-uri "nose" version))
4435427e
DT
1486 (sha256
1487 (base32
f7cb9841 1488 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e
DT
1489 (build-system python-build-system)
1490 (inputs
1491 `(("python-setuptools" ,python-setuptools)))
1492 (arguments
1493 '(#:tests? #f)) ; FIXME: test suite fails
1494 (home-page "http://readthedocs.org/docs/nose/")
1495 (synopsis "Python testing library")
1496 (description
1497 "Nose extends the unittest library to make testing easier.")
1498 (license lgpl2.0+)))
1499
1500(define-public python2-nose
1501 (package-with-python2 python-nose))
1502
6cd9c356
DT
1503(define-public python-unittest2
1504 (package
1505 (name "python-unittest2")
1506 (version "0.5.1")
1507 (source
1508 (origin
1509 (method url-fetch)
1510 (uri (string-append
1511 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1512 version ".tar.gz"))
1513 (sha256
1514 (base32
1515 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1516 (build-system python-build-system)
1517 (inputs
1518 `(("python-setuptools" ,python-setuptools)))
1519 (home-page "http://pypi.python.org/pypi/unittest2")
1520 (synopsis "Python unit testing library")
1521 (description
1522 "Unittest2 is a replacement for the unittest module in the Python
1523standard library.")
1524 (license psfl)))
1525
1526(define-public python2-unittest2
1527 (package (inherit python-unittest2)
1528 (name "python2-unittest2")
1529 (version "0.5.1")
1530 (source
1531 (origin
1532 (method url-fetch)
1533 (uri (string-append
1534 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1535 version ".tar.gz"))
1536 (sha256
1537 (base32
1538 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
1539 (inputs
7957fe6c 1540 `(("python2-setuptools" ,python2-setuptools)))
6cd9c356
DT
1541 (arguments
1542 `(#:python ,python-2
1543 #:tests? #f)))) ; no setup.py test command
1544
542ad60f
DT
1545(define-public python-py
1546 (package
1547 (name "python-py")
71c8a804 1548 (version "1.4.31")
542ad60f
DT
1549 (source
1550 (origin
1551 (method url-fetch)
71c8a804 1552 (uri (pypi-uri "py" version))
542ad60f
DT
1553 (sha256
1554 (base32
71c8a804 1555 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f
DT
1556 (build-system python-build-system)
1557 (inputs
1558 `(("python-setuptools" ,python-setuptools)))
1559 (home-page "http://pylib.readthedocs.org/")
1560 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1561 (description
1562 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1563code introspection, and logging.")
bd3fa666 1564 (license license:expat)))
542ad60f
DT
1565
1566(define-public python2-py
1567 (package-with-python2 python-py))
1568
855d4761
DT
1569(define-public python-pytest
1570 (package
1571 (name "python-pytest")
1572 (version "2.6.1")
1573 (source
1574 (origin
1575 (method url-fetch)
1576 (uri (string-append
1577 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1578 version ".tar.gz"))
1579 (sha256
1580 (base32
1581 "0g2w4p0n42wvz8rq4k6gnzpkakgz3g8sfanxk8jrsra9675snkcr"))
1582 (modules '((guix build utils)))
1583 (snippet
1584 ;; One of the tests involves the /usr directory, so it fails.
1585 '(substitute* "testing/test_argcomplete.py"
1586 (("def test_remove_dir_prefix\\(self\\):")
1587 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1588 (build-system python-build-system)
1589 (inputs
1590 `(("python-setuptools" ,python-setuptools)
1591 ("python-py" ,python-py)
1592 ("python-nose" ,python-nose)
1593 ("python-mock" ,python-mock)))
1594 (home-page "http://pytest.org")
1595 (synopsis "Python testing library")
1596 (description
1597 "Pytest is a testing tool that provides auto-discovery of test modules
1598and functions, detailed info on failing assert statements, modular fixtures,
1599and many external plugins.")
bd3fa666 1600 (license license:expat)))
855d4761
DT
1601
1602(define-public python2-pytest
1603 (package-with-python2 python-pytest))
1604
358c3d61
EF
1605(define-public python-pytest-cov
1606 (package
1607 (name "python-pytest-cov")
1608 (version "2.2.0")
1609 (source
1610 (origin
1611 (method url-fetch)
1612 (uri (pypi-uri "pytest-cov" version))
1613 (sha256
1614 (base32
1615 "1lf9jsmhqk5nc4w3kzwglmdzjvmi7ajvrsnwv826j3bn0wzx8c92"))))
10468636
EF
1616 (build-system python-build-system)
1617 (propagated-inputs
1618 `(("python-coverage" ,python-coverage)
1619 ("python-pytest" ,python-pytest)))
1620 (native-inputs
1621 `(("python-setuptools" ,python-setuptools)))
1622 (home-page "https://github.com/pytest-dev/pytest-cov")
1623 (synopsis "Pytest plugin for measuring coverage")
1624 (description
1625 "Pytest-cov produces coverage reports. It supports centralised testing and
1626distributed testing in both @code{load} and @code{each} modes. It also
1627supports coverage of subprocesses.")
358c3d61
EF
1628 (license license:expat)))
1629
1630(define-public python2-pytest-cov
1631 (package-with-python2 python-pytest-cov))
1632
6784f2e3
RW
1633(define-public python-pytest-runner
1634 (package
1635 (name "python-pytest-runner")
1636 (version "2.6.2")
1637 (source
1638 (origin
1639 (method url-fetch)
1640 (uri (string-append "https://pypi.python.org/packages/source/p/"
1641 "pytest-runner/pytest-runner-"
1642 version ".tar.gz"))
1643 (sha256
1644 (base32
1645 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1646 (build-system python-build-system)
1647 (arguments
1648 `(#:phases
1649 (modify-phases %standard-phases
1650 ;; The fancy way of setting the version with setuptools_scm does not
1651 ;; seem to work here.
1652 (add-after 'unpack 'set-version
1653 (lambda _
1654 (substitute* "docs/conf.py"
1655 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1656 (string-append "version = \"" ,version "\"")))
1657 #t)))))
1658 (native-inputs
1659 `(("python-pytest" ,python-pytest)
d50d097d 1660 ("python-setuptools" ,python-setuptools)
6784f2e3
RW
1661 ("python-setuptools-scm" ,python-setuptools-scm)))
1662 (home-page "https://bitbucket.org/pytest-dev/pytest-runner")
1663 (synopsis "Invoke py.test as a distutils command")
1664 (description
1665 "This package provides a @command{pytest-runner} command that
1666@file{setup.py} files can use to run tests.")
1667 (license license:expat)))
1668
1669(define-public python2-pytest-runner
1670 (package-with-python2 python-pytest-runner))
1671
84d24017
DT
1672(define-public python-scripttest
1673 (package
1674 (name "python-scripttest")
1675 (version "1.3")
1676 (source
1677 (origin
1678 (method url-fetch)
1679 (uri (string-append
1680 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
1681 version ".tar.gz"))
1682 (sha256
1683 (base32
1684 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
1685 (build-system python-build-system)
1686 (inputs
1687 `(("python-setuptools" ,python-setuptools)
1688 ("python-pytest" ,python-pytest)))
1689 (home-page "http://pythonpaste.org/scripttest/")
1690 (synopsis "Python library to test command-line scripts")
1691 (description "Scripttest is a Python helper library for testing
1692interactive command-line applications. With it you can run a script in a
1693subprocess and see the output as well as any file modifications.")
bd3fa666 1694 (license license:expat)))
84d24017
DT
1695
1696(define-public python2-scripttest
1697 (package-with-python2 python-scripttest))
1698
d8fa80e1
DT
1699(define-public python-testtools
1700 (package
1701 (name "python-testtools")
1702 (version "1.0.0")
1703 (source
1704 (origin
1705 (method url-fetch)
1706 (uri (string-append
1707 "https://pypi.python.org/packages/source/t/testtools/testtools-"
1708 version ".tar.gz"))
1709 (sha256
1710 (base32
1711 "1dyml28ykpl5jb9khdmcdvhy1cxqingys6qvj2k04fzlaj6z3bbx"))))
1712 (build-system python-build-system)
0e88cbf8
CR
1713 (propagated-inputs
1714 `(("python-mimeparse" ,python-mimeparse)))
d8fa80e1
DT
1715 (inputs
1716 `(("python-setuptools" ,python-setuptools)
d8fa80e1
DT
1717 ("python-extras" ,python-extras)))
1718 (home-page "https://github.com/testing-cabal/testtools")
1719 (synopsis
1720 "Extensions to the Python standard library unit testing framework")
1721 (description
1722 "Testtools extends the Python standard library unit testing framework to
1723provide matchers, more debugging information, and cross-Python
1724compatibility.")
1725 (license psfl)))
1726
1727(define-public python2-testtools
1728 (package-with-python2 python-testtools))
1729
5bf3afea
DT
1730(define-public python-testscenarios
1731 (package
1732 (name "python-testscenarios")
1733 (version "0.4")
1734 (source
1735 (origin
1736 (method url-fetch)
1737 (uri (string-append
1738 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
1739 version ".tar.gz"))
1740 (sha256
1741 (base32
1742 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
1743 (build-system python-build-system)
1744 (inputs
1745 `(("python-setuptools" ,python-setuptools)
1746 ("python-testtools" ,python-testtools)
1747 ("python-mimeparse" ,python-mimeparse)))
1748 (home-page "https://launchpad.net/testscenarios")
1749 (synopsis "Pyunit extension for dependency injection")
1750 (description
1751 "Testscenarios provides clean dependency injection for Python unittest
1752style tests.")
1753 (license (list bsd-3 asl2.0)))) ; at the user's option
1754
1755(define-public python2-testscenarios
1756 (package-with-python2 python-testscenarios))
1757
dac79ecc
DT
1758(define-public python-testresources
1759 (package
1760 (name "python-testresources")
1761 (version "0.2.7")
1762 (source
1763 (origin
1764 (method url-fetch)
1765 (uri (string-append
1766 "https://pypi.python.org/packages/source/t/testresources/testresources-"
1767 version ".tar.gz"))
1768 (sha256
1769 (base32
1770 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
1771 (build-system python-build-system)
1772 (inputs
1773 `(("python-setuptools" ,python-setuptools)))
1774 (home-page "https://launchpad.net/testresources")
1775 (synopsis
1776 "Pyunit extension for managing test resources")
1777 (description
1778 "Testresources is an extension to Python's unittest to allow declarative
1779use of resources by test cases.")
1780 (license (list bsd-3 asl2.0)))) ; at the user's option
1781
1782(define-public python2-testresources
1783 (package-with-python2 python-testresources))
1784
070ab058
DT
1785(define-public python-subunit
1786 (package
1787 (name "python-subunit")
1788 (version "0.0.21")
1789 (source
1790 (origin
1791 (method url-fetch)
1792 (uri (string-append
1793 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
1794 version ".tar.gz"))
1795 (sha256
1796 (base32
1797 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
1798 (build-system python-build-system)
1799 (inputs
1800 `(("python-setuptools" ,python-setuptools)
1801 ("python-testtools" ,python-testtools)
1802 ("python-mimeparse" ,python-mimeparse)
1803 ("python-testscenarios" ,python-testscenarios)))
1804 (home-page "http://launchpad.net/subunit")
1805 (synopsis "Python implementation of the subunit protocol")
1806 (description
1807 "Python-subunit is a Python implementation of the subunit test streaming
1808protocol.")
1809 (license (list bsd-3 asl2.0)))) ; at the user's option
1810
1811(define-public python2-subunit
1812 (package-with-python2 python-subunit))
1813
7787ef76
CR
1814;; Recent versions of python-fixtures need a recent version of python-pbr,
1815;; which needs a recent version of python-fixtures. To fix this circular
1816;; dependency, we keep old versions of python-fixtures and python-pbr to
1817;; bootstrap the whole thing:
1818;; - python-fixtures-0.3.16 is used to build python-pbr-0.11
1819;; - python-pbr-0.11 is used to build python-fixtures
1820;; - python-fixtures is used to build python-pbr
1821(define-public python-fixtures-0.3.16
cd49454b
DT
1822 (package
1823 (name "python-fixtures")
1824 (version "0.3.16")
1825 (source
1826 (origin
1827 (method url-fetch)
1828 (uri (string-append
1829 "https://pypi.python.org/packages/source/f/fixtures/fixtures-"
1830 version ".tar.gz"))
1831 (sha256
1832 (base32
1833 "0x9r2gwilcig5g54k60bxzg96zabizq1855lrprlb4zckalp9asc"))))
1834 (build-system python-build-system)
1835 (inputs
1836 `(("python-setuptools" ,python-setuptools)))
1837 (arguments
1838 '(#:tests? #f)) ; no setup.py test command
1839 (home-page "https://launchpad.net/python-fixtures")
1840 (synopsis "Python test fixture library")
1841 (description
1842 "Fixtures provides a way to create reusable state, useful when writing
1843Python tests.")
1844 (license (list bsd-3 asl2.0)))) ; at user's option
1845
7787ef76
CR
1846(define-public python2-fixtures-0.3.16
1847 (package-with-python2 python-fixtures-0.3.16))
1848
1849(define-public python-pbr-0.11
1850 (package
1851 (name "python-pbr")
1852 (version "0.11.0")
1853 (source
1854 (origin
1855 (method url-fetch)
1856 (uri (string-append
1857 "https://pypi.python.org/packages/source/p/pbr/pbr-"
1858 version ".tar.gz"))
1859 (sha256
1860 (base32
1861 "0v9gb7gyqf7q9s99l0nnjj9ww9b0jvyqlwm4d56pcyinxydddw6p"))))
1862 (build-system python-build-system)
1863 (arguments
1864 `(#:tests? #f)) ;; Most tests seem to use the Internet.
1865 (inputs
1866 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
1867 ("python-pip" ,python-pip)
1868 ("python-setuptools" ,python-setuptools)))
1869 (home-page "https://launchpad.net/pbr")
1870 (synopsis "Change the default behavior of Python’s setuptools")
1871 (description
1872 "Python Build Reasonableness (PBR) is a library that injects some useful
1873and sensible default behaviors into your setuptools run.")
1874 (license asl2.0)))
1875
1876(define-public python2-pbr-0.11
1877 (package-with-python2 python-pbr-0.11))
1878
1879(define-public python-fixtures
1880 (package
1881 (name "python-fixtures")
13fcc6df 1882 (version "1.4.0")
7787ef76
CR
1883 (source
1884 (origin
1885 (method url-fetch)
13fcc6df 1886 (uri (pypi-uri "fixtures" version))
7787ef76
CR
1887 (sha256
1888 (base32
13fcc6df 1889 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76
CR
1890 (build-system python-build-system)
1891 (propagated-inputs
1892 `(("python-six" ,python-six)
1893 ("python-pbr-0.11" ,python-pbr-0.11)))
1894 (inputs
1895 `(("python-pip" ,python-pip)
1896 ("python-setuptools" ,python-setuptools)
1897 ;; Tests
1898 ("python-testtools" ,python-testtools)))
1899 (arguments
1900 '(#:tests? #f)) ; no setup.py test command
1901 (home-page "https://launchpad.net/python-fixtures")
1902 (synopsis "Python test fixture library")
1903 (description
1904 "Fixtures provides a way to create reusable state, useful when writing
1905Python tests.")
1906 (license (list bsd-3 asl2.0)))) ; at user's option
1907
cd49454b
DT
1908(define-public python2-fixtures
1909 (package-with-python2 python-fixtures))
1910
b24a0c00
DT
1911(define-public python-testrepository
1912 (package
1913 (name "python-testrepository")
1914 (version "0.0.20")
1915 (source
1916 (origin
1917 (method url-fetch)
1918 (uri (string-append
1919 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
1920 version ".tar.gz"))
1921 (sha256
1922 (base32
1923 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
1924 (build-system python-build-system)
05de40c5 1925 (propagated-inputs
7787ef76 1926 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
05de40c5 1927 ("python-testtools" ,python-testtools)))
b24a0c00
DT
1928 (inputs
1929 `(("python-setuptools" ,python-setuptools)
b24a0c00 1930 ("python-subunit" ,python-subunit)
b24a0c00
DT
1931 ("python-mimeparse" ,python-mimeparse)))
1932 (home-page "https://launchpad.net/testrepository")
1933 (synopsis "Database for Python test results")
1934 (description "Testrepository provides a database of test results which can
1935be used as part of a developer's workflow to check things such as what tests
1936have failed since the last commit or what tests are currently failing.")
1937 (license (list bsd-3 asl2.0)))) ; at user's option
1938
1939(define-public python2-testrepository
1940 (package-with-python2 python-testrepository))
1941
243a009a
DT
1942(define-public python-coverage
1943 (package
1944 (name "python-coverage")
82a3c582 1945 (version "4.0.3")
243a009a
DT
1946 (source
1947 (origin
1948 (method url-fetch)
82a3c582 1949 (uri (pypi-uri "coverage" version))
243a009a
DT
1950 (sha256
1951 (base32
82a3c582 1952 "0qjlja8ny4gcfp8abqfwdrvr8qw9kr69lkja0b4cqqbsdmdjgcc5"))))
243a009a
DT
1953 (build-system python-build-system)
1954 (inputs
1955 `(("python-setuptools" ,python-setuptools)))
1956 (home-page "http://nedbatchelder.com/code/coverage")
1957 (synopsis "Code coverage measurement for Python")
1958 (description
1959 "Coverage measures code coverage, typically during test execution. It
1960uses the code analysis tools and tracing hooks provided in the Python standard
1961library to determine which lines are executable, and which have been
1962executed.")
1963 (license bsd-3)))
1964
1965(define-public python2-coverage
1966 (package-with-python2 python-coverage))
1967
041358fb
DT
1968(define-public python-discover
1969 (package
1970 (name "python-discover")
1971 (version "0.4.0")
1972 (source
1973 (origin
1974 (method url-fetch)
1975 (uri (string-append
1976 "https://pypi.python.org/packages/source/d/discover/discover-"
1977 version ".tar.gz"))
1978 (sha256
1979 (base32
1980 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
1981 (build-system python-build-system)
1982 (inputs
1983 `(("python-setuptools" ,python-setuptools)))
1984 (home-page "http://pypi.python.org/pypi/discover/")
1985 (synopsis
1986 "Python test discovery for unittest")
1987 (description
1988 "Discover provides test discovery for unittest, a feature that has been
e881752c 1989backported from Python 2.7 for Python 2.4+.")
041358fb
DT
1990 (license bsd-3)))
1991
1992(define-public python2-discover
1993 (package-with-python2 python-discover))
1994
a480bc41
EB
1995(define-public behave
1996 (package
1997 (name "behave")
1998 (version "1.2.4")
1999 (source (origin
2000 (method url-fetch)
2001 (uri (string-append "https://pypi.python.org/packages/source/b/"
2002 name "/" name "-" version ".tar.gz"))
2003 (sha256
2004 (base32
2005 "1v2rfy8xnf0rk7cj4cgr7lam4015d458i7bg0xqs9czfv6njlm14"))))
2006 (build-system python-build-system)
2007 (inputs
2008 `(("python-setuptools" ,python-setuptools)
2009 ("python-six" ,python-six)
2010 ("python-enum43" ,python-enum34)
2011 ("python-parse" ,python-parse)
2012 ("python-parse-type" ,python-parse-type)))
2013 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2014 ;PyHamcrest>=1.8
2015 (home-page "http://github.com/behave/behave")
2016 (synopsis "Python behavior-driven development")
2017 (description
2018 "Behave is a tool for behavior-driven development in python.
2019Behavior-driven development (or BDD) is an agile software development
2020technique that encourages collaboration between developers, QA and
2021non-technical or business participants in a software project. Behave uses
2022tests written in a natural language style, backed up by Python code.")
2023 (license x11)))
c7303d3c
DT
2024
2025(define-public python-exif-read
2026 (package
2027 (name "python-exif-read")
2a2d0981 2028 (version "2.1.2")
c7303d3c
DT
2029 (source (origin
2030 (method url-fetch)
2a2d0981 2031 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2032 (sha256
2033 (base32
2a2d0981 2034 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c
DT
2035 (build-system python-build-system)
2036 (inputs
2037 `(("python-setuptools" ,python-setuptools)))
2038 (arguments `(#:tests? #f)) ; no tests
2039 (home-page "https://github.com/ianare/exif-py")
2040 (synopsis "Python library to extract EXIF data from image files")
2041 (description
2042 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2043files.")
2044 (license bsd-3)))
2045
2046(define-public python2-exif-read
2047 (package-with-python2 python-exif-read))
d5f89b22
DT
2048
2049(define-public python-pyld
2050 (package
2051 (name "python-pyld")
af1ab773 2052 (version "0.6.8")
d5f89b22
DT
2053 (source (origin
2054 (method url-fetch)
af1ab773 2055 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2056 (sha256
2057 (base32
af1ab773 2058 "0k881ffazpf8q1z8862g4bb3pzwpnz9whrci2mf311mvn1qbyqad"))))
d5f89b22
DT
2059 (build-system python-build-system)
2060 (inputs
2061 `(("python-setuptools" ,python-setuptools)))
2062 (arguments `(#:tests? #f)) ; no tests
2063 (home-page "http://github.com/digitalbazaar/pyld")
2064 (synopsis "Python implementation of the JSON-LD specification")
2065 (description
2066 "PyLD is an implementation of the JSON-LD specification.")
2067 (license bsd-3)))
2068
2069(define-public python2-pyld
2070 (package-with-python2 python-pyld))
3a1f9a68
DT
2071
2072(define-public python-certifi
2073 (package
2074 (name "python-certifi")
9a41f443 2075 (version "2015.11.20.1")
3a1f9a68
DT
2076 (source (origin
2077 (method url-fetch)
9a41f443 2078 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2079 (sha256
2080 (base32
9a41f443 2081 "05lgwf9rz1kn465azy2bpb3zmpnsn9gkypbhnjlclchv98ssgc1h"))))
3a1f9a68
DT
2082 (build-system python-build-system)
2083 (inputs
2084 `(("python-setuptools" ,python-setuptools)))
2085 (arguments `(#:tests? #f)) ; no tests
2086 (home-page "http://python-requests.org/")
2087 (synopsis "Python CA certificate bundle")
2088 (description
2089 "Certifi is a Python library that contains a CA certificate bundle, which
2090is used by the Requests library to verify HTTPS requests.")
2091 (license asl2.0)))
2092
2093(define-public python2-certifi
2094 (package-with-python2 python-certifi))
e6cfbd36 2095
12c270dd
RW
2096(define-public python-click
2097 (package
2098 (name "python-click")
5bd88cf1 2099 (version "6.2")
12c270dd
RW
2100 (source
2101 (origin
2102 (method url-fetch)
5bd88cf1 2103 (uri (pypi-uri "click" version))
12c270dd 2104 (sha256
5bd88cf1 2105 (base32 "10kavbisnk9m93jl2wi34pw7ryr2qbxshh2cysxwxd7bymqgz87v"))))
12c270dd
RW
2106 (build-system python-build-system)
2107 (native-inputs
2108 `(("python-setuptools" ,python-setuptools)))
2109 (home-page "http://click.pocoo.org")
2110 (synopsis "Command line library for Python")
2111 (description
2112 "Click is a Python package for creating command line interfaces in a
2113composable way with as little code as necessary. Its name stands for
2114\"Command Line Interface Creation Kit\". It's highly configurable but comes
2115with sensible defaults out of the box.")
2116 (license bsd-3)))
2117
2118(define-public python2-click
2119 (package-with-python2 python-click))
2120
addc808d
EF
2121(define-public python-wheel
2122 (package
2123 (name "python-wheel")
2124 (version "0.26.0")
e1ba0749
EF
2125 (source
2126 (origin
2127 (method url-fetch)
2128 (uri (pypi-uri "wheel" version))
2129 (sha256
2130 (base32
2131 "032k1ajijbqnv0z0k88bhf75mdimi18fcmm28mss90610lw3bbga"))))
2132 (build-system python-build-system)
2133 (native-inputs
2134 `(("python-setuptools" ,python-setuptools)
2135 ("python-jsonschema" ,python-jsonschema)
2136 ("python-pytest-cov" ,python-pytest-cov)))
2137 (home-page "https://bitbucket.org/pypa/wheel/")
2138 (synopsis "Format for built Python packages")
2139 (description
2140 "A wheel is a ZIP-format archive with a specially formatted filename and
2141the @code{.whl} extension. It is designed to contain all the files for a PEP
2142376 compatible install in a way that is very close to the on-disk format. Many
2143packages will be properly installed with only the @code{Unpack} step and the
2144unpacked archive preserves enough information to @code{Spread} (copy data and
2145scripts to their final locations) at any later time. Wheel files can be
2146installed with a newer @code{pip} or with wheel's own command line utility.")
2147 (license license:expat)))
addc808d
EF
2148
2149(define-public python2-wheel
264ae686
EF
2150 (let ((wheel (package-with-python2 python-wheel)))
2151 (package (inherit wheel)
2152 (native-inputs
2153 `(("python2-functools32" ,python2-functools32)
2154 ("python2-jsonschema" ,python2-jsonschema)
2155 ,@(alist-delete "python-jsonschema"
2156 (package-native-inputs wheel)))))))
addc808d 2157
ae641128 2158(define-public python-requests
e6cfbd36 2159 (package
ae641128 2160 (name "python-requests")
5d691657 2161 (version "2.8.1")
e6cfbd36
DT
2162 (source (origin
2163 (method url-fetch)
5d691657 2164 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2165 (sha256
2166 (base32
5d691657 2167 "0ny2nr1sqr4hcn3903ghmh7w2yni8shlfv240a8c9p6wyidqvzl4"))))
e6cfbd36 2168 (build-system python-build-system)
5d691657
EF
2169 (native-inputs
2170 `(("python-setuptools" ,python-setuptools)))
2171 (propagated-inputs
2172 `(("python-py" ,python-py)
2173 ("python-pytest" ,python-pytest)
2174 ("python-pytest-cov" ,python-pytest-cov)
2175 ("python-wheel" ,python-wheel)))
e6cfbd36
DT
2176 (home-page "http://python-requests.org/")
2177 (synopsis "Python HTTP library")
2178 (description
2179 "Requests is a Python HTTP client library. It aims to be easier to use
2180than Python’s urllib2 library.")
2181 (license asl2.0)))
864b5211 2182
e9005180
DT
2183;; Some software requires an older version of Requests, notably Docker
2184;; Compose.
2185(define-public python-requests-2.7
2186 (package (inherit python-requests)
2187 (version "2.7.0")
2188 (source (origin
2189 (method url-fetch)
2190 (uri (pypi-uri "requests" version))
2191 (sha256
2192 (base32
2193 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2194
ae641128 2195(define-public python2-requests
264ae686
EF
2196 (let ((requests (package-with-python2 python-requests)))
2197 (package (inherit requests)
2198 (propagated-inputs
2199 `(("python2-wheel" ,python2-wheel)
2200 ,@(alist-delete "python-wheel"
2201 (package-propagated-inputs requests)))))))
ae641128 2202
ea521b42
DT
2203(define-public python-vcversioner
2204 (package
2205 (name "python-vcversioner")
2206 (version "2.14.0.0")
2207 (source
2208 (origin
2209 (method url-fetch)
2210 (uri (pypi-uri "vcversioner" version))
2211 (sha256
2212 (base32
2213 "11ivq1bm7v0yb4nsfbv9m7g7lyjn112gbvpjnjz8nv1fx633dm5c"))))
2214 (build-system python-build-system)
2215 (inputs
2216 `(("python-setuptools" ,python-setuptools)))
2217 (synopsis "Python library for version number discovery")
2218 (description "Vcversioner is a Python library that inspects tagging
2219information in a variety of version control systems in order to discover
2220version numbers.")
2221 (home-page "https://github.com/habnabit/vcversioner")
2222 (license isc)))
2223
2224(define-public python2-vcversioner
2225 (package-with-python2 python-vcversioner))
ae641128 2226
864b5211
DT
2227(define-public python-jsonschema
2228 (package
2229 (name "python-jsonschema")
b3667afb 2230 (version "2.5.1")
864b5211
DT
2231 (source (origin
2232 (method url-fetch)
2233 (uri
2234 (string-append
2235 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2236 version ".tar.gz"))
2237 (sha256
2238 (base32
b3667afb 2239 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211
DT
2240 (build-system python-build-system)
2241 (inputs
b3667afb
DT
2242 `(("python-setuptools" ,python-setuptools)
2243 ("python-vcversioner" ,python-vcversioner)))
864b5211
DT
2244 (home-page "http://github.com/Julian/jsonschema")
2245 (synopsis "Implementation of JSON Schema for Python")
2246 (description
2247 "Jsonschema is an implementation of JSON Schema for Python.")
bd3fa666 2248 (license license:expat)))
864b5211
DT
2249
2250(define-public python2-jsonschema
264ae686
EF
2251 (let ((jsonschema (package-with-python2 python-jsonschema)))
2252 (package (inherit jsonschema)
2253 (inputs
2254 `(("python2-functools32" ,python2-functools32)
2255 ,@(package-inputs jsonschema))))))
850189b8
DT
2256
2257(define-public python-unidecode
2258 (package
2259 (name "python-unidecode")
8925d4f3 2260 (version "0.04.18")
850189b8
DT
2261 (source (origin
2262 (method url-fetch)
8925d4f3 2263 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2264 (sha256
2265 (base32
8925d4f3 2266 "12hhblqy1ajvidm38im4171x4arg83pfmziyn53nizp29p3m14gi"))))
850189b8
DT
2267 (build-system python-build-system)
2268 (inputs
2269 `(("python-setuptools" ,python-setuptools)))
2270 (home-page "https://pypi.python.org/pypi/Unidecode")
2271 (synopsis "ASCII transliterations of Unicode text")
2272 (description
2273 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2274useful when integrating with legacy code that doesn't support Unicode, or for
2275ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2276machine identifiers from human-readable Unicode strings that should still be
2277somewhat intelligeble.")
2278 (license gpl2+)))
2279
2280(define-public python2-unidecode
2281 (package-with-python2 python-unidecode))
6d45fef4
DT
2282
2283(define-public python-pyjwt
2284 (package
2285 (name "python-pyjwt")
eb31d4b4 2286 (version "1.4.0")
6d45fef4
DT
2287 (source
2288 (origin
2289 (method url-fetch)
eb31d4b4 2290 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2291 (sha256
2292 (base32
eb31d4b4 2293 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2294 (build-system python-build-system)
eb31d4b4
EF
2295 (native-inputs
2296 `(("python-setuptools" ,python-setuptools)
2297 ("python-pytest-runner" ,python-pytest-runner)))
6d45fef4
DT
2298 (arguments
2299 '(#:tests? #f)) ; test suite doesn't work
2300 (home-page "http://github.com/progrium/pyjwt")
2301 (synopsis "JSON Web Token implementation in Python")
2302 (description
2303 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2304 (license license:expat)))
6d45fef4
DT
2305
2306(define-public python2-pyjwt
2307 (package-with-python2 python-pyjwt))
2308
2cec1f6f
DT
2309(define-public python-oauthlib
2310 (package
2311 (name "python-oauthlib")
bde2171d 2312 (version "1.0.3")
2cec1f6f
DT
2313 (source (origin
2314 (method url-fetch)
bde2171d 2315 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2316 (sha256
2317 (base32
bde2171d 2318 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2319 (build-system python-build-system)
bde2171d 2320 (native-inputs
2cec1f6f 2321 `(("python-setuptools" ,python-setuptools)
bde2171d 2322 ("python-coverage", python-coverage)
2cec1f6f
DT
2323 ("python-nose" ,python-nose)
2324 ("python-mock" ,python-mock)))
bde2171d
EF
2325 (inputs
2326 `(("python-blinker" ,python-blinker)
2327 ("python-cryptography" ,python-cryptography)
2328 ("python-pyjwt" ,python-pyjwt)))
2cec1f6f
DT
2329 (home-page "https://github.com/idan/oauthlib")
2330 (synopsis "OAuth implementation for Python")
2331 (description
2332 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2333OAuth request-signing logic.")
2334 (license bsd-3)))
2335
2336(define-public python2-oauthlib
2337 (let ((base (package-with-python2 python-oauthlib)))
2338 (package
2339 (inherit base)
2cec1f6f 2340 (inputs
0066de6f
EF
2341 `(("python2-unittest2" ,python2-unittest2)
2342 ("python2-cryptography" ,python2-cryptography)
2343 ,@(alist-delete "python-cryptography"
2344 (package-inputs base)))))))
ec5dbb5c
DT
2345
2346(define-public python-itsdangerous
2347 (package
2348 (name "python-itsdangerous")
2349 (version "0.24")
2350 (source
2351 (origin
2352 (method url-fetch)
2353 (uri (string-append
2354 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2355 version ".tar.gz"))
2356 (sha256
2357 (base32
2358 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2359 (build-system python-build-system)
2360 (inputs
2361 `(("python-setuptools" ,python-setuptools)))
2362 (home-page "http://github.com/mitsuhiko/itsdangerous")
2363 (synopsis "Python library for passing data to/from untrusted environments")
2364 (description
2365 "Itsdangerous provides various helpers to pass trusted data to untrusted
2366environments and back.")
2367 (license bsd-3)))
2368
2369(define-public python2-itsdangerous
2370 (package-with-python2 python-itsdangerous))
5731cae3 2371
8d12be1e
RW
2372(define-public python-pyyaml
2373 (package
2374 (name "python-pyyaml")
2375 (version "3.11")
2376 (source
2377 (origin
2378 (method url-fetch)
2379 (uri (string-append
2380 "https://pypi.python.org/packages/source/P/PyYAML/PyYAML-"
2381 version ".tar.gz"))
2382 (sha256
2383 (base32
2384 "1s26125vfnskng58ym37xhwv8v0mm95b2cwbjfag8prfhy596v63"))))
2385 (build-system python-build-system)
2386 (inputs
2387 `(("libyaml" ,libyaml)))
2388 (native-inputs
2389 `(("python-setuptools" ,python-setuptools)))
2390 (home-page "http://pyyaml.org/wiki/PyYAML")
2391 (synopsis "YAML parser and emitter for Python")
2392 (description
2393 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2394complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2395API, and sensible error messages. PyYAML supports standard YAML tags and
2396provides Python-specific tags that allow to represent an arbitrary Python
2397object.")
2398 (license license:expat)))
2399
2400(define-public python2-pyyaml
2401 (package-with-python2 python-pyyaml))
2402
5731cae3
DT
2403(define-public python-virtualenv
2404 (package
2405 (name "python-virtualenv")
17804240 2406 (version "13.1.2")
5731cae3
DT
2407 (source
2408 (origin
2409 (method url-fetch)
17804240 2410 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2411 (sha256
2412 (base32
17804240 2413 "1p732accxwqfjbdna39k8w8lp9gyw91vr4kzkhm8mgfxikqqxg5a"))))
5731cae3 2414 (build-system python-build-system)
17804240
EF
2415 (arguments
2416 `(#:phases
2417 (modify-phases %standard-phases
2418 (replace 'check
2419 (lambda _ (zero? (system* "py.test")))))))
5731cae3
DT
2420 (inputs
2421 `(("python-setuptools" ,python-setuptools)
2422 ("python-mock" ,python-mock)
17804240 2423 ("python-pytest" ,python-pytest)))
5731cae3
DT
2424 (home-page "https://virtualenv.pypa.io/")
2425 (synopsis "Virtual Python environment builder")
2426 (description
2427 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2428 (license license:expat)))
5731cae3
DT
2429
2430(define-public python2-virtualenv
2431 (package-with-python2 python-virtualenv))
8176d4d5
DT
2432
2433(define-public python-markupsafe
2434 (package
2435 (name "python-markupsafe")
2436 (version "0.23")
2437 (source
2438 (origin
2439 (method url-fetch)
2440 (uri (string-append
2441 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2442 version ".tar.gz"))
2443 (sha256
2444 (base32
2445 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2446 (build-system python-build-system)
2447 (inputs
2448 `(("python-setuptools" ,python-setuptools)))
2449 (home-page "http://github.com/mitsuhiko/markupsafe")
2450 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2451 (description
2452 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2453for Python.")
2454 (license bsd-3)))
2455
2456(define-public python2-markupsafe
2457 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2458
2459(define-public python-jinja2
2460 (package
2461 (name "python-jinja2")
e98149b3 2462 (version "2.8")
fe34f0d1
DT
2463 (source
2464 (origin
2465 (method url-fetch)
e98149b3 2466 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2467 (sha256
2468 (base32
e98149b3 2469 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1
DT
2470 (build-system python-build-system)
2471 (inputs
2472 `(("python-setuptools" ,python-setuptools)
2473 ("python-markupsafe" ,python-markupsafe)))
2474 (home-page "http://jinja.pocoo.org/")
2475 (synopsis "Python template engine")
2476 (description
2477 "Jinja2 is a small but fast and easy to use stand-alone template engine
2478written in pure Python.")
2479 (license bsd-3)))
2480
2481(define-public python2-jinja2
2482 (package-with-python2 python-jinja2))
3580ab8b 2483
f7d17ac7
EE
2484(define-public python-pystache
2485 (package
2486 (name "python-pystache")
2487 (version "0.5.4")
2488 (source (origin
2489 (method url-fetch)
2490 (uri (pypi-uri "pystache" version))
2491 (sha256
2492 (base32
2493 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2494 (build-system python-build-system)
2495 (native-inputs
2496 `(("python-setuptools" ,python-setuptools)))
2497 (home-page "http://defunkt.io/pystache/")
2498 (synopsis "Python logic-less template engine")
2499 (description
2500 "Pystache is a Python implementation of the framework agnostic,
2501logic-free templating system Mustache.")
2502 (license license:expat)))
2503
2504(define-public python2-pystache
2505 (package-with-python2 python-pystache))
2506
1285119b
RW
2507(define-public python-joblib
2508 (package
2509 (name "python-joblib")
2510 (version "0.9.0b4")
2511 (source (origin
2512 (method url-fetch)
2513 (uri (string-append "https://pypi.python.org/packages/source/"
2514 "j/joblib/joblib-" version ".tar.gz"))
2515 (sha256
2516 (base32
2517 "1dvw3f8jgj6h0fxkghbgyclvdzc7l0ig7n0vis70awb5kczb9bs3"))))
2518 (build-system python-build-system)
2519 (native-inputs
2520 `(("python-setuptools" ,python-setuptools)
2521 ("python-nose" ,python-nose)))
2522 (home-page "http://pythonhosted.org/joblib/")
2523 (synopsis "Using Python functions as pipeline jobs")
2524 (description
2525 "Joblib is a set of tools to provide lightweight pipelining in Python.
2526In particular, joblib offers: transparent disk-caching of the output values
2527and lazy re-evaluation (memoize pattern), easy simple parallel computing
2528logging and tracing of the execution.")
2529 (license bsd-3)))
2530
2531(define-public python2-joblib
2532 (package-with-python2 python-joblib))
2533
3580ab8b
DT
2534(define-public python-docutils
2535 (package
2536 (name "python-docutils")
2537 (version "0.12")
2538 (source
2539 (origin
2540 (method url-fetch)
2541 (uri (string-append
2542 "https://pypi.python.org/packages/source/d/docutils/docutils-"
2543 version ".tar.gz"))
2544 (sha256
2545 (base32
2546 "1ylnjnw1x4b2y7blr6x35ncdzn69k253kw4cdkv6asdb21w73ny7"))))
2547 (build-system python-build-system)
2548 (inputs
2549 `(("python-setuptools" ,python-setuptools)))
2550 (arguments
2551 '(#:tests? #f)) ; no setup.py test command
2552 (home-page "http://docutils.sourceforge.net/")
2553 (synopsis "Python Documentation Utilities")
2554 (description
2555 "Docutils is a modular system for processing documentation into useful
2556formats, such as HTML, XML, and LaTeX. For input Docutils supports
2557reStructuredText.")
2558 ;; Most of the source code is public domain, but some source files are
2559 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
2560 (license (list public-domain psfl bsd-2 gpl3+))))
2561
2562(define-public python2-docutils
2563 (package-with-python2 python-docutils))
fb35b7c0
DT
2564
2565(define-public python-pygments
2566 (package
2567 (name "python-pygments")
9f442285 2568 (version "2.0.2")
fb35b7c0
DT
2569 (source
2570 (origin
2571 (method url-fetch)
9f442285 2572 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
2573 (sha256
2574 (base32
9f442285 2575 "0lagrwifsgn0s8bzqahpr87p7gd38xja8f06akscinp6hj89283k"))))
fb35b7c0
DT
2576 (build-system python-build-system)
2577 (inputs
2578 `(("python-setuptools" ,python-setuptools)))
2579 (home-page "http://pygments.org/")
2580 (synopsis "Syntax highlighting")
2581 (description
2582 "Pygments is a syntax highlighting package written in Python.")
2583 (license bsd-2)))
2584
2585(define-public python2-pygments
2586 (package-with-python2 python-pygments))
9dd6078d
DT
2587
2588(define-public python-sphinx
2589 (package
2590 (name "python-sphinx")
2591 (version "1.2.3")
2592 (source
2593 (origin
2594 (method url-fetch)
2595 (uri (string-append
2596 "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-"
2597 version ".tar.gz"))
2598 (sha256
2599 (base32
2600 "011xizm3jnmf4cvs5i6kgf6c5nn046h79i8j0vd0f27yw9j3p4wl"))))
2601 (build-system python-build-system)
2602 (inputs
2603 `(("python-setuptools" ,python-setuptools)
2604 ("python-jinja2" ,python-jinja2)
2605 ("python-docutils" ,python-docutils)
2606 ("python-pygments" ,python-pygments)))
2607 (home-page "http://sphinx-doc.org/")
2608 (synopsis "Python documentation generator")
2609 (description "Sphinx is a tool that makes it easy to create documentation
2610for Python projects or other documents consisting of multiple reStructuredText
2611sources.")
2612 (license bsd-3)))
2613
2614(define-public python2-sphinx
2615 (package-with-python2 python-sphinx))
6888830b 2616
ad320b20
RW
2617(define-public python-sphinx-rtd-theme
2618 (package
2619 (name "python-sphinx-rtd-theme")
2620 (version "0.1.6")
2621 (source
2622 (origin
2623 (method url-fetch)
2624 (uri (string-append "https://pypi.python.org/packages/source/s/"
2625 "sphinx_rtd_theme/sphinx_rtd_theme-"
2626 version ".tar.gz"))
2627 (sha256
2628 (base32
2629 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
2630 (build-system python-build-system)
2631 (arguments
2632 `(;; With standard flags, the install phase attempts to create a zip'd
2633 ;; egg file, and fails with an error: 'ZIP does not support timestamps
2634 ;; before 1980'
2635 #:configure-flags '("--single-version-externally-managed"
2636 "--record=sphinx-rtd-theme.txt")))
2637 (native-inputs
2638 `(("python-setuptools" ,python-setuptools)))
2639 (inputs
2640 `(("python-docutils" ,python-docutils)
2641 ("python-sphinx" ,python-sphinx)))
2642 (home-page "https://github.com/snide/sphinx_rtd_theme/")
2643 (synopsis "ReadTheDocs.org theme for Sphinx")
2644 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 2645 (license license:expat)))
ad320b20
RW
2646
2647(define-public python2-sphinx-rtd-theme
2648 (package-with-python2 python-sphinx-rtd-theme))
2649
f4de5b3b
CAW
2650(define-public python-feedgenerator
2651 (package
2652 (name "python-feedgenerator")
2653 (version "20150710.97185b7")
2654 (source
2655 ;; Using the git checkout for now because license file not added till
2656 ;; https://github.com/dmdm/feedgenerator-py3k/commit/97185b7566c240c4bf5ed80db7d6c271204dab39
2657 (origin
2658 (method git-fetch)
2659 (uri (git-reference
2660 (url "https://github.com/dmdm/feedgenerator-py3k.git")
2661 (commit "97185b7566c240c4bf5ed80db7d6c271204dab39")))
2662 (sha256
2663 (base32
2664 "0dbd6apij5j1923ib905x0srgcyls4wlabqlwp4dzkwmksvnrr2a"))))
2665 (arguments
2666 `(;; With standard flags, the install phase attempts to create a zip'd
2667 ;; egg file, and fails with an error: 'ZIP does not support timestamps
2668 ;; before 1980'
2669 #:configure-flags '("--single-version-externally-managed"
2670 "--record=feedgenerator.txt")))
2671 (build-system python-build-system)
2672 (inputs
2673 `(("python-setuptools" ,python-setuptools)
2674 ("python-pytz" ,python-pytz)
2675 ("python-six" ,python-six)))
2676 (home-page
2677 "https://github.com/dmdm/feedgenerator-py3k.git")
2678 (synopsis
2679 "Standalone version of Django's Atom/RSS feed generator")
2680 (description
2681 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
2682which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
2683 (license bsd-3)))
2684
2685(define-public python2-feedgenerator
2686 (package-with-python2 python-feedgenerator))
2687
59ad30e3
CAW
2688(define-public python-blinker
2689 (package
2690 (name "python-blinker")
7fb9ff4d 2691 (version "1.4")
59ad30e3
CAW
2692 (source
2693 (origin
2694 (method url-fetch)
7fb9ff4d 2695 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
2696 (sha256
2697 (base32
7fb9ff4d 2698 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3
CAW
2699 (build-system python-build-system)
2700 (native-inputs
2701 `(("python-setuptools" ,python-setuptools)))
2702 ;; No "test" command supplied to setuptools, so unless there's another way
2703 ;; to run tests, we're skipping them!
2704 (arguments '(#:tests? #f))
2705 (home-page "http://pythonhosted.org/blinker/")
2706 (synopsis "Fast, simple object-to-object and broadcast signaling")
2707 (description
2708 "Blinker provides a fast dispatching system that allows any number of
2709interested parties to subscribe to events, or \"signals\".")
2710 (license license:expat)))
2711
2712(define-public python2-blinker
2713 (package-with-python2 python-blinker))
2714
b8050e71
CAW
2715(define-public pelican
2716 (package
2717 (name "pelican")
11f97c27 2718 (version "3.6.3")
b8050e71
CAW
2719 (source
2720 (origin
2721 (method url-fetch)
11f97c27 2722 (uri (pypi-uri "pelican" version))
b8050e71
CAW
2723 (sha256
2724 (base32
11f97c27 2725 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71
CAW
2726 (build-system python-build-system)
2727 (native-inputs
2728 `(("python-setuptools" ,python-setuptools)))
2729 (propagated-inputs
2730 `(("python-feedgenerator" ,python-feedgenerator)
2731 ("python-jinja2" ,python-jinja2)
2732 ("python-pygments" ,python-pygments)
2733 ("python-docutils" ,python-docutils)
2734 ("python-pytz" ,python-pytz)
2735 ("python-blinker" ,python-blinker)
2736 ("python-unidecode" ,python-unidecode)
2737 ("python-six" ,python-six)
2738 ("python-dateutil-2" ,python-dateutil-2)))
2739 (home-page "http://getpelican.com/")
2740 (arguments
2741 `(;; XXX Requires a lot more packages to do unit tests :P
2742 #:tests? #f
2743 #:phases (modify-phases %standard-phases
2744 (add-before
2745 'install 'adjust-requires
2746 ;; Since feedgenerator is installed from git, it doesn't
2747 ;; conform to the version requirements.
2748 ;;
2749 ;; We *do have* "feedgenerator >= 1.6", but strip off the
2750 ;; version requirement so setuptools doesn't get confused.
2751 (lambda _
2752 (substitute* "setup.py"
2753 (("['\"]feedgenerator.*?['\"]")
2754 "'feedgenerator'")))))))
2755 (synopsis "Python-based static site publishing system")
2756 (description
2757 "Pelican is a tool to generate a static blog from reStructuredText,
2758Markdown input files, and more. Pelican uses Jinja2 for templating
2759and is very extensible.")
2760 (license agpl3+)))
2761
240ca4aa
RW
2762(define-public python-scikit-learn
2763 (package
2764 (name "python-scikit-learn")
be0a4c26 2765 (version "0.16.1")
240ca4aa
RW
2766 (source
2767 (origin
2768 (method url-fetch)
2769 (uri (string-append
2770 "https://github.com/scikit-learn/scikit-learn/archive/"
2771 version ".tar.gz"))
2772 (sha256
2773 (base32
be0a4c26 2774 "140skabifgc7lvvj873pnzlwx0ni6q8qkrsyad2ccjb3h8rxzkih"))))
240ca4aa
RW
2775 (build-system python-build-system)
2776 (arguments
2777 `(#:phases
2778 (alist-cons-before
2f6b3d2e
RW
2779 'check 'set-HOME
2780 ;; some tests require access to "$HOME"
2781 (lambda _ (setenv "HOME" "/tmp"))
2782 ;; Tests can only be run after the library has been installed and not
2783 ;; within the source directory.
2784 (alist-cons-after
2785 'install 'check
2786 (lambda _
2787 (with-directory-excursion "/tmp"
2788 ;; With Python 3 one test of 3334 fails
2789 ;; (sklearn.tests.test_common.test_transformers); see
2790 ;; https://github.com/scikit-learn/scikit-learn/issues/3693
2791 (system* "nosetests" "-v" "sklearn")))
2792 (alist-delete 'check %standard-phases)))))
240ca4aa 2793 (inputs
2f6b3d2e 2794 `(("openblas" ,openblas)
240ca4aa
RW
2795 ("python-nose" ,python-nose)))
2796 (propagated-inputs
2797 `(("python-numpy" ,python-numpy)
2798 ("python-scipy" ,python-scipy)))
2799 (home-page "http://scikit-learn.org/")
2800 (synopsis "Machine Learning in Python")
2801 (description
2802 "Scikit-learn provides simple and efficient tools for data
2803mining and data analysis.")
2804 (license bsd-3)))
2805
2806(define-public python2-scikit-learn
2807 (let ((scikit (package-with-python2 python-scikit-learn)))
2808 (package (inherit scikit)
2809 (propagated-inputs
2810 `(("python2-numpy" ,python2-numpy)
2811 ("python2-scipy" ,python2-scipy)
2812 ,@(alist-delete
2813 "python-numpy"
2814 (alist-delete
2815 "python-scipy" (package-propagated-inputs scikit))))))))
2816
12f8f9bb
RW
2817(define-public python-scikit-image
2818 (package
2819 (name "python-scikit-image")
2820 (version "0.11.3")
2821 (source
2822 (origin
2823 (method url-fetch)
2824 (uri (string-append
2825 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
2826 version ".tar.gz"))
2827 (sha256
2828 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
2829 (build-system python-build-system)
2830 (propagated-inputs
2831 `(("python-matplotlib" ,python-matplotlib)
2832 ("python-networkx" ,python-networkx)
2833 ("python-numpy" ,python-numpy)
2834 ("python-scipy" ,python-scipy)
2835 ("python-six" ,python-six)
2836 ("python-pillow" ,python-pillow)))
2837 (native-inputs
2838 `(("python-cython" ,python-cython)
2839 ("python-setuptools" ,python-setuptools)))
2840 (home-page "http://scikit-image.org/")
2841 (synopsis "Image processing in Python")
2842 (description
e881752c 2843 "Scikit-image is a collection of algorithms for image processing.")
12f8f9bb
RW
2844 (license bsd-3)))
2845
2846(define-public python2-scikit-image
2847 (let ((scikit-image (package-with-python2 python-scikit-image)))
2848 (package (inherit scikit-image)
2849 (native-inputs
2850 `(("python2-mock" ,python2-mock)
2851 ,@(package-native-inputs scikit-image)))
2852 (propagated-inputs
2853 `(("python2-pytz" ,python2-pytz)
d9bc0bf8
FB
2854 ("python2-matplotlib" ,python2-matplotlib)
2855 ("python2-numpy" ,python2-numpy)
2856 ("python2-scipy" ,python2-scipy)
2857 ,@(fold alist-delete (package-propagated-inputs scikit-image)
2858 '("python-matplotlib" "python-numpy" "python-scipy")))))))
12f8f9bb 2859
5394a6a6
RW
2860(define-public python-redis
2861 (package
2862 (name "python-redis")
2863 (version "2.10.3")
2864 (source
2865 (origin
2866 (method url-fetch)
2867 (uri (string-append
2868 "https://pypi.python.org/packages/source/r/redis/redis-"
2869 version ".tar.gz"))
2870 (sha256
2871 (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4"))))
2872 (build-system python-build-system)
2873 ;; Tests require a running Redis server
2874 (arguments '(#:tests? #f))
2875 (native-inputs
2876 `(("python-setuptools" ,python-setuptools)
2877 ("python-pytest" ,python-pytest)))
2878 (home-page "https://github.com/andymccurdy/redis-py")
2879 (synopsis "Redis Python client")
2880 (description
2881 "This package provides a Python interface to the Redis key-value store.")
2882 (license license:expat)))
2883
2884(define-public python2-redis
2885 (package-with-python2 python-redis))
2886
748cef5b
RW
2887(define-public python-rq
2888 (package
2889 (name "python-rq")
2890 (version "0.5.2")
2891 (source
2892 (origin
2893 (method url-fetch)
2894 (uri (string-append
2895 "https://pypi.python.org/packages/source/r/rq/rq-"
2896 version ".tar.gz"))
2897 (sha256
2898 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
2899 (build-system python-build-system)
2900 (propagated-inputs
2901 `(("python-click" ,python-click)
2902 ("python-redis" ,python-redis)))
2903 (native-inputs
2904 `(("python-setuptools" ,python-setuptools)))
2905 (home-page "http://python-rq.org/")
2906 (synopsis "Simple job queues for Python")
2907 (description
2908 "RQ (Redis Queue) is a simple Python library for queueing jobs and
2909processing them in the background with workers. It is backed by Redis and it
2910is designed to have a low barrier to entry.")
2911 (license bsd-2)))
2912
2913(define-public python2-rq
2914 (package-with-python2 python-rq))
2915
6888830b
FB
2916(define-public python-cython
2917 (package
2918 (name "python-cython")
56918e26 2919 (version "0.23.4")
6888830b
FB
2920 (source
2921 (origin
2922 (method url-fetch)
56918e26 2923 (uri (pypi-uri "Cython" version))
6888830b
FB
2924 (sha256
2925 (base32
56918e26 2926 "13hdffhd37mx3gjby018xl179jaj957fy7kzi01crmimxvn2zi7y"))))
6888830b
FB
2927 (build-system python-build-system)
2928 ;; we need the full python package and not just the python-wrapper
2929 ;; because we need libpython3.3m.so
2930 (inputs
2931 `(("python" ,python)))
2932 (arguments
2933 `(#:phases
2934 (alist-cons-before
2935 'check 'set-HOME
2936 ;; some tests require access to "$HOME/.cython"
2937 (lambda* _ (setenv "HOME" "/tmp"))
2938 (alist-replace
2939 'check
2940 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))
2941 %standard-phases))))
2942 (home-page "http://cython.org/")
2943 (synopsis "C extensions for Python")
2944 (description "Cython is an optimising static compiler for both the Python
2945programming language and the extended Cython programming language. It makes
2946writing C extensions for Python as easy as Python itself.")
2947 (license asl2.0)))
2948
2949(define-public python2-cython
2950 (package (inherit (package-with-python2 python-cython))
2951 (name "python2-cython")
2952 (inputs
2953 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533
FB
2954
2955;; This version of numpy is missing the documentation and is only used to
2956;; build matplotlib which is required to build numpy's documentation.
2957(define python-numpy-bootstrap
2958 (package
2959 (name "python-numpy-bootstrap")
2960 (version "1.9.1")
2961 (source
2962 (origin
2963 (method url-fetch)
2964 (uri (string-append "mirror://sourceforge/numpy"
2965 "/numpy-" version ".tar.gz"))
2966 (sha256
2967 (base32
2968 "070ybfvpgfmiz2hs94x445hvkh9dh52nyi0m8jp5kdihgvhbnx80"))))
2969 (build-system python-build-system)
2970 (inputs
2971 `(("python-nose" ,python-nose)
cba256f8
RW
2972 ("openblas" ,openblas)
2973 ("lapack" ,lapack)))
0da98533 2974 (native-inputs
19afbea1 2975 `(("gfortran" ,gfortran)))
0da98533
FB
2976 (arguments
2977 `(#:phases
2978 (alist-cons-before
2979 'build 'set-environment-variables
2980 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
2981 (call-with-output-file "site.cfg"
2982 (lambda (port)
cba256f8
RW
2983 (format port
2984 "[openblas]
dbdfe515
RW
2985libraries = openblas
2986library_dirs = ~a/lib
2987include_dirs = ~a/include
cba256f8
RW
2988
2989[lapack]
2990lapack_libs = lapack
2991library_dirs = ~a/lib
2992include_dirs = ~a/include
2993"
2994 (assoc-ref inputs "openblas")
2995 (assoc-ref inputs "openblas")
2996 (assoc-ref inputs "lapack")
2997 (assoc-ref inputs "lapack"))))
dbdfe515
RW
2998 ;; Use "gcc" executable, not "cc".
2999 (substitute* "numpy/distutils/system_info.py"
3000 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3001 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
3002 #t)
6a843168
FB
3003 ;; Tests can only be run after the library has been installed and not
3004 ;; within the source directory.
3005 (alist-cons-after
3006 'install 'check
89b5c60e 3007 (lambda _
6a843168 3008 (with-directory-excursion "/tmp"
89b5c60e 3009 (zero? (system* "python" "-c"
6a843168 3010 "import numpy; numpy.test(verbose=2)"))))
89b5c60e
AE
3011 (alist-delete
3012 'check
6a843168 3013 %standard-phases)))))
0da98533
FB
3014 (home-page "http://www.numpy.org/")
3015 (synopsis "Fundamental package for scientific computing with Python")
3016 (description "NumPy is the fundamental package for scientific computing
e881752c 3017with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3018object, sophisticated (broadcasting) functions, tools for integrating C/C++
3019and Fortran code, useful linear algebra, Fourier transform, and random number
3020capabilities.")
3021 (license bsd-3)))
3022
3023(define python2-numpy-bootstrap
3024 (package-with-python2 python-numpy-bootstrap))
15bfe6d6 3025
3a1bfe18
RW
3026(define-public python2-fastlmm
3027 (package
3028 (name "python2-fastlmm")
3029 (version "0.2.14")
3030 (source
3031 (origin
3032 (method url-fetch)
3033 (uri (string-append
3034 "https://pypi.python.org/packages/source/f/fastlmm"
3035 "/fastlmm-" version ".zip"))
3036 (sha256
3037 (base32
3038 "023sydkrc3yxad2bycar02jfswwlh4199kafzhf2bssyx2c3xa0l"))))
3039 (build-system python-build-system)
3040 (arguments
3041 `(#:python ,python-2)) ; only Python 2.7 is supported
3042 (propagated-inputs
3043 `(("python2-numpy" ,python2-numpy)
3044 ("python2-scipy" ,python2-scipy)
3045 ("python2-matplotlib" ,python2-matplotlib)
3046 ("python2-pandas" ,python2-pandas)
3047 ("python2-scikit-learn" ,python2-scikit-learn)
3048 ("python2-cython" ,python2-cython)
3049 ("python2-pysnptools" ,python2-pysnptools)))
3050 (native-inputs
3051 `(("unzip" ,unzip)
3052 ("python2-mock" ,python2-mock)
3053 ("python2-setuptools" ,python2-setuptools)))
3054 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3055 (synopsis "Perform genome-wide association studies on large data sets")
3056 (description
3057 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3058Models, is a program for performing both single-SNP and SNP-set genome-wide
3059association studies (GWAS) on extremely large data sets.")
3060 (license asl2.0)))
3061
2ee8869a
FB
3062(define-public python-numpy
3063 (package (inherit python-numpy-bootstrap)
3064 (name "python-numpy")
3065 (outputs '("out" "doc"))
89b5c60e 3066 (inputs
2ee8869a
FB
3067 `(("which" ,which)
3068 ("python-setuptools" ,python-setuptools)
3069 ("python-matplotlib" ,python-matplotlib)
3070 ("python-sphinx" ,python-sphinx)
3071 ("python-pyparsing" ,python-pyparsing)
3072 ("python-numpydoc" ,python-numpydoc)
3073 ,@(package-inputs python-numpy-bootstrap)))
3074 (native-inputs
3075 `(("pkg-config" ,pkg-config)
3076 ("texlive" ,texlive)
3077 ("texinfo" ,texinfo)
3078 ("perl" ,perl)
3079 ,@(package-native-inputs python-numpy-bootstrap)))
3080 (arguments
89b5c60e 3081 `(,@(substitute-keyword-arguments
2ee8869a
FB
3082 (package-arguments python-numpy-bootstrap)
3083 ((#:phases phases)
3084 `(alist-cons-after
3085 'install 'install-doc
3086 (lambda* (#:key outputs #:allow-other-keys)
3087 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
89b5c60e
AE
3088 (doc (string-append
3089 data "/doc/" ,name "-"
2ee8869a
FB
3090 ,(package-version python-numpy-bootstrap)))
3091 (info (string-append data "/info"))
3092 (html (string-append doc "/html"))
3093 (pyver ,(string-append "PYVER=")))
3094 (with-directory-excursion "doc"
3095 (mkdir-p html)
3096 (system* "make" "html" pyver)
3097 (system* "make" "latex" "PAPER=a4" pyver)
89b5c60e 3098 (system* "make" "-C" "build/latex"
2ee8869a
FB
3099 "all-pdf" "PAPER=a4" pyver)
3100 ;; FIXME: Generation of the info file fails.
3101 ;; (system* "make" "info" pyver)
3102 ;; (mkdir-p info)
3103 ;; (copy-file "build/texinfo/numpy.info"
3104 ;; (string-append info "/numpy.info"))
3105 (for-each (lambda (file)
3106 (copy-file (string-append "build/latex" file)
3107 (string-append doc file)))
3108 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3109 (with-directory-excursion "build/html"
3110 (for-each (lambda (file)
3111 (let* ((dir (dirname file))
3112 (tgt-dir (string-append html "/" dir)))
3113 (unless (equal? "." dir)
3114 (mkdir-p tgt-dir))
96c46210 3115 (install-file file html)))
2ee8869a
FB
3116 (find-files "." ".*"))))))
3117 ,phases)))))))
3118
764c077b
LC
3119(define-public python2-numpy
3120 (let ((numpy (package-with-python2 python-numpy)))
3121 (package (inherit numpy)
88c26834
AE
3122 ;; Make sure we use exactly PYTHON2-MATPLOTLIB, which is customized for
3123 ;; Python 2.
3124 (inputs `(("python2-matplotlib" ,python2-matplotlib)
3125 ,@(alist-delete "python-matplotlib"
3126 (package-inputs numpy)))))))
2ee8869a 3127
15bfe6d6
FB
3128(define-public python-pyparsing
3129 (package
3130 (name "python-pyparsing")
e0669289 3131 (version "2.0.3")
15bfe6d6
FB
3132 (source
3133 (origin
3134 (method url-fetch)
3135 (uri (string-append "mirror://sourceforge/pyparsing"
3136 "/pyparsing-" version ".tar.gz"))
3137 (sha256
3138 (base32
e0669289 3139 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3140 (build-system python-build-system)
3141 (outputs '("out" "doc"))
3142 (arguments
3143 `(#:tests? #f ; no test target
3144 #:modules ((guix build python-build-system)
3145 (guix build utils))
3146 #:phases
3147 (alist-cons-after
3148 'install 'install-doc
3149 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3150 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3151 "/share/doc/" ,name "-" ,version))
3152 (html-doc (string-append doc "/html"))
3153 (examples (string-append doc "/examples")))
3154 (mkdir-p html-doc)
3155 (mkdir-p examples)
89b5c60e 3156 (for-each
15bfe6d6 3157 (lambda (dir tgt)
89b5c60e 3158 (map (lambda (file)
96c46210 3159 (install-file file tgt))
15bfe6d6
FB
3160 (find-files dir ".*")))
3161 (list "docs" "htmldoc" "examples")
3162 (list doc html-doc examples))))
3163 %standard-phases)))
3164 (home-page "http://pyparsing.wikispaces.com")
3165 (synopsis "Python parsing class library")
3166 (description
3167 "The pyparsing module is an alternative approach to creating and
3168executing simple grammars, vs. the traditional lex/yacc approach, or the use
3169of regular expressions. The pyparsing module provides a library of classes
3170that client code uses to construct the grammar directly in Python code.")
bd3fa666 3171 (license license:expat)))
15bfe6d6
FB
3172
3173(define-public python2-pyparsing
3174 (package-with-python2 python-pyparsing))
3175
ec00de35
FB
3176(define-public python-numpydoc
3177 (package
3178 (name "python-numpydoc")
3179 (version "0.5")
3180 (source
3181 (origin
3182 (method url-fetch)
89b5c60e 3183 (uri (string-append
ec00de35
FB
3184 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3185 version ".tar.gz"))
3186 (sha256
3187 (base32
5e4d8f67
AE
3188 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3189 (modules '((guix build utils)))
3190 (snippet
3191 '(begin
3192 ;; Drop a test requiring matplotlib, which we cannot add as an
3193 ;; input since it would create a circular dependency: Extend the
3194 ;; test for Python 3, where it is already dropped, to Python 2.
3195 (substitute* "numpydoc/tests/test_plot_directive.py"
3196 (("3") "2"))))))
ec00de35
FB
3197 (build-system python-build-system)
3198 (inputs
3199 `(("python-setuptools" ,python-setuptools)
3200 ("python-docutils" ,python-docutils)
3201 ("python-sphinx" ,python-sphinx)
3202 ("python-nose" ,python-nose)))
3203 (home-page "https://pypi.python.org/pypi/numpydoc")
3204 (synopsis
3205 "Numpy's Sphinx extensions")
3206 (description
3207 "Sphinx extension to support docstrings in Numpy format.")
3208 (license bsd-2)))
3209
3210(define-public python2-numpydoc
5e4d8f67 3211 (package-with-python2 python-numpydoc))
1c65314c 3212
1e656049
RW
3213(define-public python-numexpr
3214 (package
3215 (name "python-numexpr")
3216 (version "2.4.4")
3217 (source
3218 (origin
3219 (method url-fetch)
3220 (uri (string-append "https://pypi.python.org/packages/source/"
3221 "n/numexpr/numexpr-" version ".tar.gz"))
3222 (sha256
3223 (base32
3224 "0nsnff5312fm38w6dm34bw7ghfqqy8vl9gig0al963h4mz8zm8nz"))))
3225 (build-system python-build-system)
3226 (arguments `(#:tests? #f)) ; no tests included
3227 (propagated-inputs
3228 `(("python-numpy" ,python-numpy)))
3229 (home-page "https://github.com/pydata/numexpr")
3230 (synopsis "Fast numerical expression evaluator for NumPy")
3231 (description
3232 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3233expressions that operate on arrays are accelerated and use less memory than
3234doing the same calculation in Python. In addition, its multi-threaded
3235capabilities can make use of all your cores, which may accelerate
3236computations, most specially if they are not memory-bounded (e.g. those using
3237transcendental functions).")
3238 (license license:expat)))
3239
3240(define-public python2-numexpr
3241 (let ((numexpr (package-with-python2 python-numexpr)))
3242 (package (inherit numexpr)
3243 ;; Make sure to use special packages for Python 2 instead
3244 ;; of those automatically rewritten by package-with-python2.
3245 (propagated-inputs
3246 `(("python2-numpy" ,python2-numpy)
3247 ,@(alist-delete "python-numpy"
3248 (package-propagated-inputs numexpr)))))))
3249
1c65314c
FB
3250(define-public python-matplotlib
3251 (package
3252 (name "python-matplotlib")
1bbc659f 3253 (version "1.4.3")
1c65314c
FB
3254 (source
3255 (origin
3256 (method url-fetch)
3257 (uri (string-append "mirror://sourceforge/matplotlib"
3258 "/matplotlib-" version ".tar.gz"))
3259 (sha256
3260 (base32
1bbc659f
FB
3261 "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
3262 (patches (list (search-patch "matplotlib-setupext-tk.patch")))))
1c65314c
FB
3263 (build-system python-build-system)
3264 (outputs '("out" "doc"))
25f9a068
FB
3265 (propagated-inputs ; the following packages are all needed at run time
3266 `(("python-pyparsing" ,python-pyparsing)
3267 ("python-pygobject" ,python-pygobject)
3268 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3269 ("python-tkinter" ,python "tk")
25f9a068
FB
3270 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3271 ;; from 'gtk+') provides the required 'typelib' files used by
3272 ;; 'gobject-introspection'. The location of these files is set with the
3273 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3274 ;; is done automatically by a 'native-search-path' procedure. However,
3275 ;; at run-time the user must set this variable as follows:
3276 ;;
3277 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3278 ("gtk+" ,gtk+)
3279 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3280 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3281 ;; object. For this reason we need to import both libraries.
3282 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3283 ("python-pycairo" ,python-pycairo)
3284 ("python-cairocffi" ,python-cairocffi)))
1c65314c
FB
3285 (inputs
3286 `(("python-setuptools" ,python-setuptools)
3287 ("python-dateutil" ,python-dateutil-2)
1c65314c
FB
3288 ("python-six" ,python-six)
3289 ("python-pytz" ,python-pytz)
3290 ("python-numpy" ,python-numpy-bootstrap)
3291 ("python-sphinx" ,python-sphinx)
3292 ("python-numpydoc" ,python-numpydoc)
3293 ("python-nose" ,python-nose)
3294 ("python-mock" ,python-mock)
3295 ("libpng" ,libpng)
3296 ("imagemagick" ,imagemagick)
3297 ("freetype" ,freetype)
25f9a068
FB
3298 ("cairo" ,cairo)
3299 ("glib" ,glib)
4e7a137a 3300 ("python-pillow" ,python-pillow)
1c65314c 3301 ;; FIXME: Add backends when available.
1c65314c
FB
3302 ;("python-wxpython" ,python-wxpython)
3303 ;("python-pyqt" ,python-pyqt)
1bbc659f
FB
3304 ("tcl" ,tcl)
3305 ("tk" ,tk)))
1c65314c
FB
3306 (native-inputs
3307 `(("pkg-config" ,pkg-config)
3308 ("texlive" ,texlive)
3309 ("texinfo" ,texinfo)))
3310 (arguments
3311 `(#:phases
25f9a068
FB
3312 (alist-cons-before
3313 'build 'configure-environment
3314 (lambda* (#:key outputs inputs #:allow-other-keys)
3315 (let ((cairo (assoc-ref inputs "cairo"))
3316 (gtk+ (assoc-ref inputs "gtk+")))
3317 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3318 ;; has not effect.
25f9a068
FB
3319 (setenv "LD_LIBRARY_PATH"
3320 (string-append cairo "/lib:" gtk+ "/lib"))
3321 (setenv "HOME" (getcwd))
3322 (call-with-output-file "setup.cfg"
3323 (lambda (port)
1bbc659f
FB
3324 (format port "[directories]~%
3325basedirlist = ~a,~a~%
3326[rc_options]~%
3327backend = TkAgg~%"
3328 (assoc-ref inputs "tcl")
3329 (assoc-ref inputs "tk"))))))
25f9a068
FB
3330 (alist-cons-after
3331 'install 'install-doc
3332 (lambda* (#:key outputs #:allow-other-keys)
3333 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3334 (doc (string-append data "/doc/" ,name "-" ,version))
3335 (info (string-append data "/info"))
3336 (html (string-append doc "/html")))
3337 (with-directory-excursion "doc"
25f9a068
FB
3338 ;; Produce pdf in 'A4' format.
3339 (substitute* (find-files "." "conf\\.py")
3340 (("latex_paper_size = 'letter'")
3341 "latex_paper_size = 'a4'"))
3342 (mkdir-p html)
3343 (mkdir-p info)
3344 ;; The doc recommends to run the 'html' target twice.
3345 (system* "python" "make.py" "html")
3346 (system* "python" "make.py" "html")
18b31516 3347 (copy-recursively "build/html" html)
25f9a068
FB
3348 (system* "python" "make.py" "latex")
3349 (system* "python" "make.py" "texinfo")
18b31516
FB
3350 (symlink (string-append html "/_images")
3351 (string-append info "/matplotlib-figures"))
3352 (with-directory-excursion "build/texinfo"
3353 (substitute* "matplotlib.texi"
3354 (("@image\\{([^,]*)" all file)
3355 (string-append "@image{matplotlib-figures/" file)))
3356 (symlink (string-append html "/_images")
3357 "./matplotlib-figures")
3358 (system* "makeinfo" "--no-split"
3359 "-o" "matplotlib.info" "matplotlib.texi"))
25f9a068
FB
3360 (copy-file "build/texinfo/matplotlib.info"
3361 (string-append info "/matplotlib.info"))
3362 (copy-file "build/latex/Matplotlib.pdf"
18b31516 3363 (string-append doc "/Matplotlib.pdf")))))
25f9a068 3364 %standard-phases))))
1c65314c
FB
3365 (home-page "http://matplotlib.org")
3366 (synopsis "2D plotting library for Python")
3367 (description
3368 "Matplotlib is a Python 2D plotting library which produces publication
3369quality figures in a variety of hardcopy formats and interactive environments
3370across platforms. Matplotlib can be used in Python scripts, the python and
3371ipython shell, web application servers, and six graphical user interface
3372toolkits.")
3373 (license psfl)))
3374
764c077b
LC
3375(define-public python2-matplotlib
3376 (let ((matplotlib (package-with-python2 python-matplotlib)))
3377 (package (inherit matplotlib)
88c26834
AE
3378 ;; Make sure to use special packages for Python 2 instead
3379 ;; of those automatically rewritten by package-with-python2.
89b5c60e 3380 (propagated-inputs
7ca0dbc3 3381 `(("python2-pycairo" ,python2-pycairo)
764c077b 3382 ("python2-pygobject-2" ,python2-pygobject-2)
1bbc659f
FB
3383 ("python2-tkinter" ,python-2 "tk")
3384 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3385 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 3386
0dde6232
RW
3387(define-public python2-pysnptools
3388 (package
3389 (name "python2-pysnptools")
3390 (version "0.2.13")
3391 (source
3392 (origin
3393 (method url-fetch)
3394 (uri (string-append
3395 "https://pypi.python.org/packages/source/p/pysnptools"
3396 "/pysnptools-" version ".zip"))
3397 (sha256
3398 (base32
3399 "1rzf5qvwfvd2pp84b14pb2gdvxdk5avnj7rb41ac8gndpkr9g6ib"))))
3400 (build-system python-build-system)
3401 (arguments
3402 `(#:python ,python-2)) ; only Python 2.7 is supported
3403 (propagated-inputs
3404 `(("python2-numpy" ,python2-numpy)
3405 ("python2-scipy" ,python2-scipy)
3406 ("python2-pandas" ,python2-pandas)
3407 ("python2-cython" ,python2-cython)))
3408 (native-inputs
3409 `(("unzip" ,unzip)
3410 ("python2-setuptools" ,python2-setuptools)))
3411 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
3412 (synopsis "Library for reading and manipulating genetic data")
3413 (description
3414 "PySnpTools is a library for reading and manipulating genetic data. It
3415can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
3416those files. It can also efficiently manipulate ranges of integers using set
3417operators such as union, intersection, and difference.")
3418 (license asl2.0)))
3419
c9b1b4f9
RW
3420(define-public python-rpy2
3421 (package
3422 (name "python-rpy2")
ec3bcbc7 3423 (version "2.7.6")
c9b1b4f9
RW
3424 (source
3425 (origin
3426 (method url-fetch)
ec3bcbc7 3427 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
3428 (sha256
3429 (base32
ec3bcbc7 3430 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9
RW
3431 (build-system python-build-system)
3432 (inputs
3433 `(("python-six" ,python-six)
3434 ("readline" ,readline)
3435 ("icu4c" ,icu4c)
3436 ("pcre" ,pcre)
3437 ("r" ,r)))
3438 (native-inputs
5ff6575b
RW
3439 `(("python-setuptools" ,python-setuptools)
3440 ("zlib" ,zlib)))
c9b1b4f9
RW
3441 (home-page "http://rpy.sourceforge.net/")
3442 (synopsis "Python interface to the R language")
3443 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
3444low-level interface to R from Python, a proposed high-level interface,
3445including wrappers to graphical libraries, as well as R-like structures and
3446functions.")
3447 (license gpl3+)))
3448
3449(define-public python2-rpy2
3450 (let ((rpy2 (package-with-python2 python-rpy2)))
3451 (package (inherit rpy2)
3452 (native-inputs
3453 `(("python2-singledispatch" ,python2-singledispatch)
3454 ,@(package-native-inputs rpy2))))))
3455
bb986599
FB
3456(define-public python-scipy
3457 (package
3458 (name "python-scipy")
ba8a0824 3459 (version "0.16.0")
bb986599
FB
3460 (source
3461 (origin
3462 (method url-fetch)
3463 (uri (string-append "mirror://sourceforge/scipy"
da6ce3f1 3464 "/scipy-" version ".tar.xz"))
bb986599
FB
3465 (sha256
3466 (base32
ba8a0824 3467 "0wa0a4skpda3gx7lb12yn19nhbairlyxrvda2lz2bcawk3x5qzz2"))))
bb986599 3468 (build-system python-build-system)
dd86c0d1 3469 (propagated-inputs
bb986599
FB
3470 `(("python-numpy" ,python-numpy)
3471 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
3472 ("python-pyparsing" ,python-pyparsing)))
3473 (inputs
3474 `(("lapack" ,lapack)
719b01c1 3475 ("openblas" ,openblas)))
bb986599 3476 (native-inputs
dd86c0d1
RW
3477 `(("python-nose" ,python-nose)
3478 ("python-sphinx" ,python-sphinx)
5248d49e 3479 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 3480 ("gfortran" ,gfortran)
bb986599
FB
3481 ("texlive" ,texlive)
3482 ("perl" ,perl)))
3483 (outputs '("out" "doc"))
3484 (arguments
3485 `(#:phases
3486 (alist-cons-before
719b01c1 3487 'build 'configure-openblas
bb986599 3488 (lambda* (#:key inputs #:allow-other-keys)
719b01c1
RW
3489 (call-with-output-file "site.cfg"
3490 (lambda (port)
3491 (format port
3492 "[blas]
3493libraries = openblas
3494library_dirs = ~a/lib
3495include_dirs = ~a/include
3496[atlas]
3497library_dirs = ~a/lib
3498atlas_libs = openblas
3499"
3500 (assoc-ref inputs "openblas")
3501 (assoc-ref inputs "openblas")
3502 (assoc-ref inputs "openblas"))))
3503 #t)
bb986599
FB
3504 (alist-cons-after
3505 'install 'install-doc
3506 (lambda* (#:key outputs #:allow-other-keys)
3507 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3508 (doc (string-append data "/doc/" ,name "-" ,version))
3509 (html (string-append doc "/html"))
3510 (pyver ,(string-append "PYVER=")))
3511 (with-directory-excursion "doc"
bb986599
FB
3512 ;; Fix generation of images for mathematical expressions.
3513 (substitute* (find-files "source" "conf\\.py")
3514 (("pngmath_use_preview = True")
3515 "pngmath_use_preview = False"))
3516 (mkdir-p html)
3517 (system* "make" "html" pyver)
3518 (system* "make" "latex" "PAPER=a4" pyver)
3519 (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
3520 (copy-file "build/latex/scipy-ref.pdf"
3521 (string-append doc "/scipy-ref.pdf"))
3522 (with-directory-excursion "build/html"
3523 (for-each (lambda (file)
3524 (let* ((dir (dirname file))
3525 (tgt-dir (string-append html "/" dir)))
96c46210 3526 (install-file file html)))
bb986599
FB
3527 (find-files "." ".*"))))))
3528 ;; Tests can only be run after the library has been installed and not
3529 ;; within the source directory.
3530 (alist-cons-after
3531 'install 'check
89b5c60e 3532 (lambda _
bb986599
FB
3533 (with-directory-excursion "/tmp"
3534 (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
89b5c60e
AE
3535 (alist-delete
3536 'check
4f9ff21e
RW
3537 (alist-cons-after
3538 'unpack 'fix-tests
3539 (lambda _
3540 (substitute* "scipy/integrate/tests/test_quadpack.py"
3541 (("libm.so") "libm.so.6"))
3542 #t)
3543 %standard-phases)))))))
bb986599
FB
3544 (home-page "http://www.scipy.org/")
3545 (synopsis "The Scipy library provides efficient numerical routines")
3546 (description "The SciPy library is one of the core packages that make up
3547the SciPy stack. It provides many user-friendly and efficient numerical
3548routines such as routines for numerical integration and optimization.")
3549 (license bsd-3)))
3550
764c077b
LC
3551(define-public python2-scipy
3552 (let ((scipy (package-with-python2 python-scipy)))
3553 (package (inherit scipy)
3554 ;; Use packages customized for python-2.
dd86c0d1
RW
3555 (propagated-inputs
3556 `(("python2-matplotlib" ,python2-matplotlib)
3557 ("python2-numpy" ,python2-numpy)
3558 ,@(alist-delete "python-matplotlib"
3559 (alist-delete "python-numpy"
3560 (package-propagated-inputs scipy))))))))
bb986599 3561
94914805
EB
3562(define-public python-sqlalchemy
3563 (package
3564 (name "python-sqlalchemy")
3565 (version "0.9.7")
3566 (source
3567 (origin
3568 (method url-fetch)
3569 (uri (string-append "https://pypi.python.org/packages/source/S/"
3570 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
3571 (sha256
3572 (base32
3573 "059ayifj5l08v6vv56anhyibyllscn10dlzr2fcw68gz1hfjdzsz"))))
3574 (build-system python-build-system)
3575 (native-inputs
3576 `(("python-cython" ,python-cython) ;for c extensions
3577 ("python-pytest" ,python-pytest)
3578 ("python-mock" ,python-mock))) ;for tests
3579 (arguments
3580 `(#:phases (alist-replace
3581 'check
3582 (lambda _ (zero? (system* "py.test")))
3583 %standard-phases)))
3584 (home-page "http://www.sqlalchemy.org")
3585 (synopsis "Database abstraction library")
3586 (description
3587 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
3588gives application developers the full power and flexibility of SQL. It
3589provides a full suite of well known enterprise-level persistence patterns,
3590designed for efficient and high-performing database access, adapted into a
3591simple and Pythonic domain language.")
3592 (license x11)))
3593
3594(define-public python2-sqlalchemy
3595 (package-with-python2 python-sqlalchemy))
c937562e 3596
1671c07c
EB
3597(define-public python-distutils-extra
3598 (package
3599 (name "python-distutils-extra")
3600 (version "2.38")
3601 (source
3602 (origin
3603 (method url-fetch)
3604 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
3605 version "/+download/python-distutils-extra-"
3606 version ".tar.gz"))
3607 (sha256
3608 (base32
3609 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
3610 (build-system python-build-system)
3611 (native-inputs
3612 `(("python-setuptools" ,python-setuptools)))
3613 (home-page "https://launchpad.net/python-distutils-extra/")
3614 (synopsis "Enhancements to Python's distutils")
3615 (description
3616 "The python-distutils-extra module enables you to easily integrate
3617gettext support, themed icons, and scrollkeeper-based documentation into
3618Python's distutils.")
3619 (license gpl2)))
3620
3621(define-public python2-distutils-extra
3622 (package-with-python2 python-distutils-extra))
ea5456c8
EB
3623
3624(define-public python2-elib.intl
3625 (package
3626 (name "python2-elib.intl")
3627 (version "0.0.3")
3628 (source
3629 (origin
3630 ;; This project doesn't tag releases or publish tarballs, so we take
3631 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
3632 (method git-fetch)
3633 (uri (git-reference
3634 (url "https://github.com/dieterv/elib.intl.git")
3635 (commit "d09997cfef")))
3636 (sha256
3637 (base32
3638 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
3639 (build-system python-build-system)
3640 (native-inputs
3641 `(("python2-setuptools" ,python2-setuptools)))
3642 (arguments
3643 ;; incompatible with Python 3 (exception syntax)
3644 `(#:python ,python-2
3645 #:tests? #f
3646 ;; With standard flags, the install phase attempts to create a zip'd
3647 ;; egg file, and fails with an error: 'ZIP does not support timestamps
3648 ;; before 1980'
3649 #:configure-flags '("--single-version-externally-managed"
3650 "--record=elib.txt")))
3651 (home-page "https://github.com/dieterv/elib.intl")
3652 (synopsis "Enhanced internationalization for Python")
3653 (description
3654 "The elib.intl module provides enhanced internationalization (I18N)
3655services for your Python modules and applications.")
3656 (license lgpl3+)))
3657
c937562e
EB
3658(define-public python-pillow
3659 (package
3660 (name "python-pillow")
f1d9231d 3661 (version "3.1.0")
c937562e
EB
3662 (source
3663 (origin
3664 (method url-fetch)
f1d9231d 3665 (uri (pypi-uri "Pillow" version))
c937562e
EB
3666 (sha256
3667 (base32
f1d9231d 3668 "00xhs4g8rfzpcqqfg4rlhfj4yk0a1k411ic6aqfsyiv3qkq7flp1"))))
c937562e
EB
3669 (build-system python-build-system)
3670 (native-inputs
3671 `(("python-setuptools" ,python-setuptools)
3672 ("python-nose" ,python-nose)))
3673 (inputs
5ff408d9
SB
3674 `(("freetype" ,freetype)
3675 ("lcms" ,lcms)
c937562e
EB
3676 ("zlib" ,zlib)
3677 ("libjpeg" ,libjpeg)
3678 ("openjpeg" ,openjpeg)
5ff408d9
SB
3679 ("libtiff" ,libtiff)
3680 ("libwebp" ,libwebp)))
c937562e
EB
3681 (propagated-inputs
3682 `(;; Used at runtime for pkg_resources
3683 ("python-setuptools" ,python-setuptools)))
3684 (arguments
e5358a6b
LC
3685 `(#:phases (modify-phases %standard-phases
3686 (add-before
3687 'install 'disable-egg-compression
3688 (lambda _
3689 ;; Leave the .egg uncompressed since compressing it would
3690 ;; prevent the GC from identifying run-time dependencies.
3691 ;; See <http://bugs.gnu.org/20765>.
3692 (let ((port (open-file "setup.cfg" "a")))
3693 (display "\n[easy_install]\nzip_ok = 0\n"
3694 port)
3695 (close-port port)
3696 #t)))
3697 (add-after
3698 'install 'check-installed
3699 (lambda _
3700 (begin
3701 (setenv "HOME" (getcwd))
3702 (and (zero? (system* "python" "selftest.py"
3703 "--installed"))
3704 (zero? (system* "python" "test-installed.py"))))))
3705 (delete 'check))))
c937562e
EB
3706 (home-page "https://pypi.python.org/pypi/Pillow")
3707 (synopsis "Fork of the Python Imaging Library")
3708 (description
3709 "The Python Imaging Library adds image processing capabilities to your
3710Python interpreter. This library provides extensive file format support, an
3711efficient internal representation, and fairly powerful image processing
3712capabilities. The core image library is designed for fast access to data
3713stored in a few basic pixel formats. It should provide a solid foundation for
3714a general image processing tool.")
3715 (license (x11-style
3716 "http://www.pythonware.com/products/pil/license.htm"
3717 "The PIL Software License"))))
3718
3719(define-public python2-pillow
3720 (package-with-python2 python-pillow))
bb986599 3721
a415f036
FB
3722(define-public python-pycparser
3723 (package
3724 (name "python-pycparser")
38eb6919 3725 (version "2.14")
a415f036
FB
3726 (source
3727 (origin
3728 (method url-fetch)
38eb6919 3729 (uri (pypi-uri "pycparser" version))
a415f036
FB
3730 (sha256
3731 (base32
38eb6919 3732 "0wvzyb6rxsfj3xcnpa4ynbh9qc7rrbk2277d5wqpphmx9akv8nbr"))))
a415f036
FB
3733 (outputs '("out" "doc"))
3734 (build-system python-build-system)
3735 (native-inputs
3736 `(("pkg-config" ,pkg-config)
3737 ("python-setuptools" ,python-setuptools)))
3738 (arguments
89b5c60e 3739 `(#:phases
a415f036
FB
3740 (alist-replace
3741 'check
3742 (lambda _
3743 (with-directory-excursion "tests"
3744 (zero? (system* "python" "all_tests.py"))))
3745 (alist-cons-after
3746 'install 'install-doc
3747 (lambda* (#:key outputs #:allow-other-keys)
3748 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3749 (doc (string-append data "/doc/" ,name "-" ,version))
3750 (examples (string-append doc "/examples")))
3751 (mkdir-p examples)
3752 (for-each (lambda (file)
3753 (copy-file (string-append "." file)
3754 (string-append doc file)))
3755 '("/README.rst" "/CHANGES" "/LICENSE"))
3756 (copy-recursively "examples" examples)))
3757 %standard-phases))))
3758 (home-page "https://github.com/eliben/pycparser")
3759 (synopsis "C parser in Python")
3760 (description
3761 "Pycparser is a complete parser of the C language, written in pure Python
3762using the PLY parsing library. It parses C code into an AST and can serve as
3763a front-end for C compilers or analysis tools.")
3764 (license bsd-3)))
3765
3766(define-public python2-pycparser
3767 (package-with-python2 python-pycparser))
57c3f716
FB
3768
3769(define-public python-cffi
3770 (package
3771 (name "python-cffi")
2d3a437c 3772 (version "1.4.2")
57c3f716
FB
3773 (source
3774 (origin
3775 (method url-fetch)
2d3a437c 3776 (uri (pypi-uri "cffi" version))
89b5c60e 3777 (sha256
2d3a437c 3778 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
3779 (build-system python-build-system)
3780 (outputs '("out" "doc"))
3781 (inputs
3782 `(("libffi" ,libffi)))
3783 (propagated-inputs ; required at run-time
3784 `(("python-pycparser" ,python-pycparser)))
3785 (native-inputs
3786 `(("pkg-config" ,pkg-config)
3787 ("python-sphinx" ,python-sphinx)
4179f952 3788 ("python-pytest" ,python-pytest)
57c3f716
FB
3789 ("python-setuptools" ,python-setuptools)))
3790 (arguments
4179f952 3791 `(#:phases
57c3f716
FB
3792 (alist-cons-after
3793 'install 'install-doc
3794 (lambda* (#:key outputs #:allow-other-keys)
3795 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3796 (doc (string-append data "/doc/" ,name "-" ,version))
3797 (html (string-append doc "/html")))
3798 (with-directory-excursion "doc"
3799 (system* "make" "html")
3800 (mkdir-p html)
3801 (copy-recursively "build/html" html))
3802 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
3803 %standard-phases)))
3804 (home-page "http://cffi.readthedocs.org")
3805 (synopsis "Foreign function interface for Python")
3806 (description
3807 "Foreign Function Interface for Python calling C code.")
bd3fa666 3808 (license license:expat)))
57c3f716
FB
3809
3810(define-public python2-cffi
3811 (package-with-python2 python-cffi))
6fa14469
FB
3812
3813(define-public python-xcffib
3814 (package
3815 (name "python-xcffib")
3816 (version "0.1.9")
3817 (source
3818 (origin
3819 (method url-fetch)
3820 (uri (string-append "https://pypi.python.org/packages/source/x/"
3821 "xcffib/xcffib-" version ".tar.gz"))
3822 (sha256
3823 (base32
3824 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
3825 (build-system python-build-system)
3826 (inputs
3827 `(("libxcb" ,libxcb)
3828 ("python-six" ,python-six)))
3829 (native-inputs
3830 `(("python-setuptools" ,python-setuptools)))
3831 (propagated-inputs
3832 `(("python-cffi" ,python-cffi))) ; used at run time
3833 (arguments
89b5c60e 3834 `(#:phases
6fa14469
FB
3835 (alist-cons-after
3836 'install 'install-doc
3837 (lambda* (#:key outputs #:allow-other-keys)
3838 (let ((doc (string-append (assoc-ref outputs "out") "/share"
3839 "/doc/" ,name "-" ,version)))
3840 (mkdir-p doc)
3841 (copy-file "README.md"
3842 (string-append doc "/README.md"))))
3843 %standard-phases)))
3844 (home-page "https://github.com/tych0/xcffib")
3845 (synopsis "XCB Python bindings")
3846 (description
3847 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
3848support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 3849 (license license:expat)))
6fa14469
FB
3850
3851(define-public python2-xcffib
3852 (package-with-python2 python-xcffib))
3853
9e099723
FB
3854(define-public python-cairocffi
3855 (package
3856 (name "python-cairocffi")
3857 (version "0.6")
3858 (source
3859 (origin
3860 (method url-fetch)
3861 ;; The archive on pypi is missing the 'utils' directory!
3862 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
3863 version ".tar.gz"))
f586c877 3864 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
3865 (sha256
3866 (base32
3867 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
3868 (build-system python-build-system)
3869 (outputs '("out" "doc"))
3870 (inputs
3871 `(("gdk-pixbuf" ,gdk-pixbuf)
3872 ("cairo" ,cairo)))
3873 (native-inputs
3874 `(("pkg-config" ,pkg-config)
3875 ("python-sphinx" ,python-sphinx)
3876 ("python-docutils" ,python-docutils)
3877 ("python-setuptools" ,python-setuptools)))
3878 (propagated-inputs
3879 `(("python-xcffib" ,python-xcffib))) ; used at run time
3880 (arguments
89b5c60e 3881 `(#:phases
9e099723
FB
3882 (alist-cons-after
3883 'install 'install-doc
3884 (lambda* (#:key inputs outputs #:allow-other-keys)
3885 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3886 (doc (string-append data "/doc/" ,name "-" ,version))
3887 (html (string-append doc "/html")))
89b5c60e 3888 (setenv "LD_LIBRARY_PATH"
9e099723
FB
3889 (string-append (assoc-ref inputs "cairo") "/lib" ":"
3890 (assoc-ref inputs "gdk-pixbuf") "/lib"))
3891 (setenv "LANG" "en_US.UTF-8")
3892 (mkdir-p html)
3893 (for-each (lambda (file)
3894 (copy-file (string-append "." file)
3895 (string-append doc file)))
3896 '("/README.rst" "/CHANGES" "/LICENSE"))
3897 (system* "python" "setup.py" "build_sphinx")
3898 (copy-recursively "docs/_build/html" html)))
3899 %standard-phases)))
3900 (home-page "https://github.com/SimonSapin/cairocffi")
3901 (synopsis "Python bindings and object-oriented API for Cairo")
3902 (description
3903 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
3904Python bindings and object-oriented API for cairo. Cairo is a 2D vector
3905graphics library with support for multiple backends including image buffers,
3906PNG, PostScript, PDF, and SVG file output.")
3907 (license bsd-3)))
3908
3909(define-public python2-cairocffi
3910 (package-with-python2 python-cairocffi))
3911
3cff95cb
RW
3912(define-public python-decorator
3913 (package
3914 (name "python-decorator")
e21338be 3915 (version "4.0.6")
3cff95cb
RW
3916 (source
3917 (origin
3918 (method url-fetch)
e21338be 3919 (uri (pypi-uri "decorator" version))
3cff95cb 3920 (sha256
e21338be 3921 (base32 "1710cwsbwr8fkiq59w2min7rwgdz7ly51yz8l8yh1zbpfxcm8qhw"))))
3cff95cb
RW
3922 (build-system python-build-system)
3923 (arguments '(#:tests? #f)) ; no test target
3924 (native-inputs
3925 `(("python-setuptools" ,python-setuptools)))
3926 (home-page "http://pypi.python.org/pypi/decorator/")
3927 (synopsis "Python module to simplify usage of decorators")
3928 (description
3929 "The aim of the decorator module is to simplify the usage of decorators
3930for the average programmer, and to popularize decorators usage giving examples
3931of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
3932etc. The core of this module is a decorator factory.")
3933 (license license:expat)))
3934
3935(define-public python2-decorator
3936 (package-with-python2 python-decorator))
3937
2c0499ad
RW
3938(define-public python-drmaa
3939 (package
3940 (name "python-drmaa")
3941 (version "0.7.6")
3942 (source
3943 (origin
3944 (method url-fetch)
3945 (uri (string-append
3946 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
3947 version ".tar.gz"))
3948 (sha256
3949 (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
3950 (build-system python-build-system)
3951 ;; The test suite requires libdrmaa which is provided by the cluster
3952 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
3953 ;; should be set to the path of the libdrmaa library.
3954 (arguments '(#:tests? #f))
3955 (native-inputs
3956 `(("python-nose" ,python-nose)
3957 ("python-setuptools" ,python-setuptools)))
3958 (home-page "https://pypi.python.org/pypi/drmaa")
3959 (synopsis "Python bindings for the DRMAA library")
3960 (description
3961 "A Python package for Distributed Resource Management (DRM) job
3962submission and control. This package is an implementation of the DRMAA 1.0
3963Python language binding specification.")
3964 (license bsd-3)))
3965
3966(define-public python2-drmaa
3967 (package-with-python2 python-drmaa))
3968
d05c6da0
RW
3969(define-public python-gridmap
3970 (package
3971 (name "python-gridmap")
3972 (version "0.13.0")
3973 (source
3974 (origin
3975 (method url-fetch)
3976 (uri (string-append
3977 "https://github.com/pygridtools/gridmap/archive/v"
3978 version ".tar.gz"))
3979 (file-name (string-append name "-" version ".tar.gz"))
3980 (sha256
3981 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
3982 (build-system python-build-system)
3983 (inputs
3984 `(("python-psutil" ,python-psutil)
3985 ("python-drmaa" ,python-drmaa)
3986 ("python-pyzmq" ,python-pyzmq)))
3987 (native-inputs
3988 `(("python-setuptools" ,python-setuptools)))
3989 (home-page "https://github.com/pygridtools/gridmap")
3990 (synopsis "Create jobs on a cluster directly from Python")
3991 (description
3992 "Gridmap is a Python package to allow you to easily create jobs on the
3993cluster directly from Python. You can directly map Python functions onto the
3994cluster without needing to write any wrapper code yourself.")
3995 (license gpl3+)))
3996
3997(define-public python2-gridmap
3998 (package-with-python2 python-gridmap))
3999
cb6d5c54
RW
4000(define-public python-pexpect
4001 (package
4002 (name "python-pexpect")
4003 (version "3.3")
4004 (source
4005 (origin
4006 (method url-fetch)
4007 (uri (string-append "https://pypi.python.org/packages/source/p/"
4008 "pexpect/pexpect-" version ".tar.gz"))
4009 (sha256
4010 (base32 "1fp5gm976z7ghm8jw57463rj19cv06c8zw842prgyg788f6n3snz"))))
4011 (build-system python-build-system)
4012 (arguments
4013 `(#:phases
4014 (modify-phases %standard-phases
4015 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4016 (native-inputs
4017 `(("python-nose" ,python-nose)))
4018 (home-page "http://pexpect.readthedocs.org/")
4019 (synopsis "Controlling interactive console applications")
4020 (description
4021 "Pexpect is a pure Python module for spawning child applications;
4022controlling them; and responding to expected patterns in their output.
4023Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4024child application and control it as if a human were typing commands.")
4025 (license isc)))
4026
4027(define-public python2-pexpect
4028 (package-with-python2 python-pexpect))
4029
229ad120
RW
4030(define-public python-setuptools-scm
4031 (package
4032 (name "python-setuptools-scm")
383af6b0 4033 (version "1.9.0")
229ad120
RW
4034 (source (origin
4035 (method url-fetch)
383af6b0 4036 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4037 (sha256
4038 (base32
383af6b0 4039 "0y24bl893zk6nrklbvdrlmpkalf214zjn6k1xrglljd29rrn4wxi"))))
229ad120 4040 (build-system python-build-system)
383af6b0 4041 (native-inputs `(("python-setuptools" ,python-setuptools)))
229ad120
RW
4042 (home-page "https://github.com/pypa/setuptools_scm/")
4043 (synopsis "Manage Python package versions in SCM metadata")
4044 (description
383af6b0 4045 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4046@dfn{software configuration management} (SCM) metadata instead of declaring
4047them as the version argument or in a SCM managed file.")
4048 (license license:expat)))
4049
4050(define-public python2-setuptools-scm
4051 (package-with-python2 python-setuptools-scm))
4052
b74270ee
RW
4053(define-public python-pathpy
4054 (package
4055 (name "python-pathpy")
4056 (version "8.1.1")
4057 (source
4058 (origin
4059 (method url-fetch)
4060 (uri (string-append "https://pypi.python.org/packages/source/p/"
4061 "path.py/path.py-" version ".tar.gz"))
4062 (sha256
4063 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
4064 (build-system python-build-system)
4065 (propagated-inputs
4066 `(("python-appdirs" ,python-appdirs)))
4067 (native-inputs
553b709b
EF
4068 `(("python-setuptools" ,python-setuptools)
4069 ("python-setuptools-scm" ,python-setuptools-scm)
b74270ee
RW
4070 ("python-pytest" ,python-pytest)
4071 ("python-pytest-runner" ,python-pytest-runner)))
4072 (home-page "http://github.com/jaraco/path.py")
4073 (synopsis "Python module wrapper for built-in os.path")
4074 (description
4075 "@code{path.py} implements path objects as first-class entities, allowing
4076common operations on files to be invoked on those path objects directly.")
4077 (license license:expat)))
4078
4079(define-public python2-pathpy
4080 (package-with-python2 python-pathpy))
4081
0d34e01b
RW
4082(define-public python-pickleshare
4083 (package
4084 (name "python-pickleshare")
4085 (version "0.5")
4086 (source
4087 (origin
4088 (method url-fetch)
4089 (uri (string-append "https://pypi.python.org/packages/source/p/"
4090 "pickleshare/pickleshare-" version ".tar.gz"))
4091 (sha256
4092 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
4093 (build-system python-build-system)
4094 (propagated-inputs
4095 `(("python-pathpy" ,python-pathpy)))
b72a4410
EF
4096 (native-inputs
4097 `(("python-setuptools" ,python-setuptools)))
0d34e01b
RW
4098 (home-page "https://github.com/vivainio/pickleshare")
4099 (synopsis "Tiny key value database with concurrency support")
4100 (description
4101 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
4102Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
4103shelve, many processes can access the database simultaneously. Changing a
4104value in database is immediately visible to other processes accessing the same
4105database. Concurrency is possible because the values are stored in separate
4106files. Hence the “database” is a directory where all files are governed by
4107PickleShare.")
4108 (license license:expat)))
4109
4110(define-public python2-pickleshare
4111 (package-with-python2 python-pickleshare))
4112
cd6e5189
RW
4113(define-public python-simplegeneric
4114 (package
4115 (name "python-simplegeneric")
4116 (version "0.8.1")
4117 (source
4118 (origin
4119 (method url-fetch)
4120 (uri (string-append "https://pypi.python.org/packages/source/s/"
4121 "simplegeneric/simplegeneric-" version ".zip"))
4122 (sha256
4123 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
4124 (build-system python-build-system)
4125 (native-inputs
69b96e5e
RW
4126 `(("python-setuptools" ,python-setuptools)
4127 ("unzip" ,unzip)))
cd6e5189
RW
4128 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
4129 (synopsis "Python module for simple generic functions")
4130 (description
4131 "The simplegeneric module lets you define simple single-dispatch generic
4132functions, akin to Python’s built-in generic functions like @code{len()},
4133@code{iter()} and so on. However, instead of using specially-named methods,
4134these generic functions use simple lookup tables, akin to those used by
4135e.g. @code{pickle.dump()} and other generic functions found in the Python
4136standard library.")
4137 (license zpl2.1)))
4138
4139(define-public python2-simplegeneric
4140 (package-with-python2 python-simplegeneric))
4141
ddc7d8ed
RW
4142(define-public python-ipython-genutils
4143 (package
4144 (name "python-ipython-genutils")
4145 (version "0.1.0")
4146 (source
4147 (origin
4148 (method url-fetch)
4149 (uri (string-append "https://pypi.python.org/packages/source/i/"
4150 "ipython_genutils/ipython_genutils-"
4151 version ".tar.gz"))
4152 (sha256
4153 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
4154 (build-system python-build-system)
4155 (arguments `(#:tests? #f)) ; no tests
4156 (home-page "http://ipython.org")
4157 (synopsis "Vestigial utilities from IPython")
4158 (description
4159 "This package provides retired utilities from IPython.")
4160 (license bsd-3)))
4161
4162(define-public python2-ipython-genutils
4163 (package-with-python2 python-ipython-genutils))
4164
2b10eb48
RW
4165(define-public python-traitlets
4166 (package
4167 (name "python-traitlets")
4168 (version "4.0.0")
4169 (source
4170 (origin
4171 (method url-fetch)
4172 (uri (string-append "https://pypi.python.org/packages/source/t/"
4173 "traitlets/traitlets-" version ".tar.gz"))
4174 (sha256
4175 (base32
4176 "0fr3w2xwb46c591dp7zw02bgf4d21mjy9g6rhwc9bwd4ji50n50b"))))
4177 (build-system python-build-system)
4178 (arguments
4179 `(#:phases
4180 (modify-phases %standard-phases
4181 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4182 (propagated-inputs
4183 `(("python-ipython-genutils" ,python-ipython-genutils)
4184 ("python-decorator" ,python-decorator)))
4185 (native-inputs
4186 `(("python-nose" ,python-nose)))
4187 (home-page "http://ipython.org")
4188 (synopsis "Configuration system for Python applications")
4189 (description
4190 "Traitlets is a framework that lets Python classes have attributes with
4191type checking, dynamically calculated default values, and ‘on change’
4192callbacks. The package also includes a mechanism to use traitlets for
4193configuration, loading values from files or from command line arguments. This
4194is a distinct layer on top of traitlets, so you can use traitlets in your code
4195without using the configuration machinery.")
4196 (license bsd-3)))
4197
4198(define-public python2-traitlets
4199 (package-with-python2 python-traitlets))
4200
ae1ab9fe
FB
4201(define-public python-ipython
4202 (package
4203 (name "python-ipython")
3a0b1b9a 4204 (version "3.2.1")
ae1ab9fe
FB
4205 (source
4206 (origin
fceac880
FB
4207 (method url-fetch)
4208 (patches (list (search-patch "python-ipython-inputhook-ctype.patch")))
4209 (uri (string-append "https://pypi.python.org/packages/source/i/"
4210 "ipython/ipython-" version ".tar.gz"))
4211 (sha256
4212 (base32 "0xwin0sa9n0cabx4cq1ibf5ldsiw5dyimibla82kicz5gbpas4y9"))))
ae1ab9fe
FB
4213 (build-system python-build-system)
4214 (outputs '("out" "doc"))
3a0b1b9a
FB
4215 (propagated-inputs
4216 `(("python-pyzmq" ,python-pyzmq)
4217 ("python-terminado" ,python-terminado)))
ae1ab9fe
FB
4218 (inputs
4219 `(("readline" ,readline)
3a0b1b9a 4220 ("which" ,which)
ae1ab9fe 4221 ("python-matplotlib" ,python-matplotlib)
5d26e542 4222 ("python-numpy" ,python-numpy)
ae1ab9fe 4223 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
4224 ("python-jinja2" ,python-jinja2)
4225 ("python-mistune" ,python-mistune)
4226 ("python-jsonschema" ,python-jsonschema)
4227 ("python-pygments" ,python-pygments)
4228 ("python-requests" ,python-requests) ;; for tests
ae1ab9fe
FB
4229 ("python-nose" ,python-nose)))
4230 (native-inputs
4231 `(("pkg-config" ,pkg-config)
4232 ("python-sphinx" ,python-sphinx)
4233 ("texlive" ,texlive)
4234 ("texinfo" ,texinfo)
4235 ("python-setuptools" ,python-setuptools)))
4236 (arguments
89b5c60e 4237 `(#:phases
3a0b1b9a
FB
4238 (modify-phases %standard-phases
4239 (add-after
4240 'install 'install-doc
4241 (lambda* (#:key inputs outputs #:allow-other-keys)
4242 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4243 (doc (string-append data "/doc/" ,name "-" ,version))
4244 (html (string-append doc "/html"))
4245 (man1 (string-append data "/man/man1"))
4246 (info (string-append data "/info"))
4247 (examples (string-append doc "/examples")))
afd3d931 4248 (setenv "LANG" "en_US.utf8")
3a0b1b9a
FB
4249 (with-directory-excursion "docs"
4250 ;; FIXME: html and pdf fail to build
4251 ;; (system* "make" "html")
4252 ;; (system* "make" "pdf" "PAPER=a4")
4253 (system* "make" "info"))
4254 (copy-recursively "docs/man" man1)
4255 (copy-recursively "examples" examples)
4256 ;; (copy-recursively "docs/build/html" html)
4257 ;; (copy-file "docs/build/latex/ipython.pdf"
4258 ;; (string-append doc "/ipython.pdf"))
4259 (mkdir-p info)
4260 (copy-file "docs/build/texinfo/ipython.info"
4261 (string-append info "/ipython.info"))
4262 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
4263 ;; Tests can only be run after the library has been installed and not
4264 ;; within the source directory.
4265 (delete 'check)
4266 (add-after
4267 'install 'check
4268 (lambda* (#:key outputs tests? #:allow-other-keys)
4269 (if tests?
4270 (with-directory-excursion "/tmp"
4271 (setenv "HOME" "/tmp/") ;; required by a test
4272 (zero? (system* (string-append (assoc-ref outputs "out")
4273 "/bin/iptest"))))
4274 #t)))
4275 (add-before
4276 'install 'fix-tests
4277 (lambda* (#:key inputs #:allow-other-keys)
4278 (substitute* "./IPython/utils/_process_posix.py"
4279 (("/usr/bin/env', 'which") (which "which")))
4280 (substitute* "./IPython/core/tests/test_inputtransformer.py"
4281 (("#!/usr/bin/env python")
4282 (string-append "#!" (which "python"))))
4283 ;; Disable 1 failing test
4284 (substitute* "./IPython/core/tests/test_magic.py"
4285 (("def test_dirops\\(\\):" all)
4286 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
4287 (home-page "http://ipython.org")
4288 (synopsis "IPython is a tool for interactive computing in Python")
4289 (description
4290 "IPython provides a rich architecture for interactive computing with:
4291Powerful interactive shells, a browser-based notebook, support for interactive
4292data visualization, embeddable interpreters and tools for parallel
4293computing.")
4294 (license bsd-3)))
4295
4296(define-public python2-ipython
4297 (let ((ipython (package-with-python2 python-ipython)))
3a0b1b9a
FB
4298 (package
4299 (inherit ipython)
4300 ;; FIXME: some tests are failing
4301 (arguments
4302 `(#:tests? #f ,@(package-arguments ipython)))
ae1ab9fe 4303 ;; Make sure we use custom python2-NAME packages.
3a0b1b9a 4304 ;; FIXME: add pyreadline once available.
667d90df
RW
4305 (propagated-inputs
4306 `(("python2-terminado" ,python2-terminado)
4307 ,@(alist-delete "python-terminado"
4308 (package-propagated-inputs ipython))))
89b5c60e 4309 (inputs
264ae686
EF
4310 `(("python2-jsonschema" ,python2-jsonschema)
4311 ("python2-mock" ,python2-mock)
3a0b1b9a 4312 ("python2-matplotlib" ,python2-matplotlib)
5587253a 4313 ("python2-numpy" ,python2-numpy)
264ae686 4314 ("python2-requests" ,python2-requests)
5587253a 4315 ,@(fold alist-delete (package-inputs ipython)
264ae686 4316 '("python-jsonschema" "python-matplotlib" "python-numpy" "python-requests")))))))
03411993
AE
4317
4318(define-public python-isodate
4319 (package
4320 (name "python-isodate")
4321 (version "0.5.1")
4322 (source
4323 (origin
4324 (method url-fetch)
4325 (uri (string-append
4326 "https://pypi.python.org/packages/source/i/isodate/isodate-"
4327 version
4328 ".tar.gz"))
4329 (sha256
4330 (base32
4331 "1yqjn0is0p64cmk9xhq4hc6q06jk86d60kg2jws58d78q0qysami"))))
4332 (build-system python-build-system)
4333 (inputs
4334 `(("python-setuptools" ,python-setuptools)))
4335 (home-page
4336 "http://cheeseshop.python.org/pypi/isodate")
4337 (synopsis
4338 "Python date parser and formatter")
4339 (description
4340 "Python-isodate is a python module for parsing and formatting
4341ISO 8601 dates, time and duration.")
4342 (license bsd-3)))
4343
4344(define-public python2-isodate
4345 (package-with-python2 python-isodate))
673ab897
AE
4346
4347(define-public python-html5lib
4348 (package
4349 (name "python-html5lib")
4350 (version "1.0b3")
4351 (source
4352 (origin
4353 (method url-fetch)
4354 (uri (string-append
4355 "https://pypi.python.org/packages/source/h/html5lib/html5lib-"
4356 version
4357 ".tar.gz"))
4358 (sha256
4359 (base32
4360 "1l5i6xzckzx4hnh9qzv9q3kyhkgjx2hsi2k9srgci3qizjmvp6ln"))))
4361 (build-system python-build-system)
3dd75476
AE
4362 (propagated-inputs
4363 `(("python-six" ,python-six))) ; required to "import html5lib"
673ab897
AE
4364 (inputs
4365 `(("python-setuptools" ,python-setuptools)))
4366 (arguments
4367 `(#:test-target "check"))
4368 (home-page
4369 "https://github.com/html5lib/html5lib-python")
4370 (synopsis
4371 "Python HTML parser based on the WHATWG HTML specifcation")
4372 (description
4373 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
4374and written in Python.")
bd3fa666 4375 (license license:expat)))
673ab897
AE
4376
4377(define-public python2-html5lib
4378 (package-with-python2 python-html5lib))
e99f4211
MW
4379
4380(define-public python-urwid
4381 (package
4382 (name "python-urwid")
4383 (version "1.3.0")
4384 (source
4385 (origin
4386 (method url-fetch)
b97c1bfd 4387 (uri (pypi-uri "urwid" version))
e99f4211
MW
4388 (sha256
4389 (base32
4390 "18mb0yy94sjc434rd61m2sfnw27sa0nyrszpj5a9r9zh7fnlzw19"))))
4391 (build-system python-build-system)
b97c1bfd
LF
4392 (arguments
4393 `(#:phases
4394 (modify-phases %standard-phases
4395 ;; Disable failing test. Bug filed upstream:
4396 ;; https://github.com/wardi/urwid/issues/164
4397 ;; TODO: check again for python-urwid > 1.3.0 or python > 3.4.3.
4398 (add-after 'unpack 'disable-failing-test
4399 (lambda _
4400 (substitute* "urwid/tests/test_event_loops.py"
4401 (("test_remove_watch_file")
4402 "disable_remove_watch_file")))))))
e99f4211
MW
4403 (native-inputs `(("python-setuptools" ,python-setuptools)))
4404 (home-page "http://urwid.org")
4405 (synopsis "Console user interface library for Python")
4406 (description
4407 "Urwid is a curses-based UI/widget library for Python. It includes many
4408features useful for text console applications.")
4409 (license lgpl2.1+)))
4410
4411(define-public python2-urwid
4412 (package-with-python2 python-urwid))
d95a56c6
PAR
4413
4414(define-public python-dbus
4415 (package
4416 (name "python-dbus")
4417 (version "1.2.0")
4418 (source
4419 (origin
4420 (method url-fetch)
4421 (uri (string-append
4422 "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
4423 version ".tar.gz"))
4424 (sha256
4425 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
4426 (build-system gnu-build-system)
6717c879
SB
4427 (arguments
4428 '(#:phases
4429 (modify-phases %standard-phases
4430 (add-before
4431 'check 'pre-check
4432 (lambda _
4433 ;; XXX: For the missing '/etc/machine-id'.
4434 (substitute* "test/run-test.sh"
4435 (("DBUS_FATAL_WARNINGS=1")
4436 "DBUS_FATAL_WARNINGS=0"))
4437 #t)))))
d95a56c6
PAR
4438 (native-inputs
4439 `(("pkg-config" ,pkg-config)))
4440 (inputs
4441 `(("python" ,python)
2e88d113 4442 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
4443 (synopsis "Python bindings for D-bus")
4444 (description "python-dbus provides bindings for libdbus, the reference
4445implementation of D-Bus.")
4446 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 4447 (license license:expat)))
b52af02b
MW
4448
4449(define-public python2-dbus
4450 (package (inherit python-dbus)
4451 (name "python2-dbus")
4452 (inputs `(("python" ,python-2)
4453 ,@(alist-delete "python"
4454 (package-inputs python-dbus)
4455 equal?)))
4456 ;; FIXME: on Python 2, the test_utf8 fails with:
4457 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
4458 (arguments `(#:tests? #f))))
a6ac8332
AE
4459
4460(define-public python-apsw
4461 (package
4462 (name "python-apsw")
917708c2 4463 (version "3.9.2-r1")
a6ac8332
AE
4464 (source
4465 (origin
4466 (method url-fetch)
917708c2 4467 (uri (pypi-uri "apsw" version))
a6ac8332
AE
4468 (sha256
4469 (base32
917708c2 4470 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
4471 (build-system python-build-system)
4472 (inputs
4473 `(("python-setuptools" ,python-setuptools)
4474 ("sqlite" ,sqlite)))
4475 (arguments
4476 `(#:phases
4477 ;; swap check and install phases
4478 (alist-cons-after
4479 'install 'check
4480 (assoc-ref %standard-phases 'check)
4481 (alist-delete
4482 'check
4483 %standard-phases))))
4484 (home-page "https://github.com/rogerbinns/apsw/")
4485 (synopsis "Another Python SQLite Wrapper")
4486 (description "APSW is a Python wrapper for the SQLite
4487embedded relational database engine. In contrast to other wrappers such as
4488pysqlite it focuses on being a minimal layer over SQLite attempting just to
4489translate the complete SQLite API into Python.")
abde5f37 4490 (license license:zlib)))
a6ac8332
AE
4491
4492(define-public python2-apsw
4493 (package-with-python2 python-apsw))
26b307e2
AE
4494
4495(define-public python-lxml
4496 (package
4497 (name "python-lxml")
4498 (version "3.4.2")
4499 (source
4500 (origin
4501 (method url-fetch)
4502 (uri (string-append
4503 "https://pypi.python.org/packages/source/l/lxml/lxml-"
4504 version
4505 ".tar.gz"))
4506 (sha256
4507 (base32
4508 "0pd23qz8vms1mgm41p96h4vac5y91igs4wr9640gnvxgk019kmf7"))))
4509 (build-system python-build-system)
4510 (inputs
4511 `(("libxml2" ,libxml2)
4512 ("libxslt" ,libxslt)
4513 ("python-setuptools" ,python-setuptools)))
4514 (home-page "http://lxml.de/")
4515 (synopsis
4516 "Python XML processing library")
4517 (description
4518 "The lxml XML toolkit is a Pythonic binding for the C libraries
4519libxml2 and libxslt.")
4520 (license bsd-3))) ; and a few more, see LICENSES.txt
4521
4522(define-public python2-lxml
4523 (package-with-python2 python-lxml))
4ed20663 4524
bec07a7c
AE
4525(define-public python2-pil
4526 (package
4527 (name "python2-pil")
4528 (version "1.1.7")
4529 (source
4530 (origin
4531 (method url-fetch)
4532 (uri (string-append
4533 "http://effbot.org/downloads/Imaging-"
4534 version ".tar.gz"))
4535 (sha256
4536 (base32
516277cb
AE
4537 "04aj80jhfbmxqzvmq40zfi4z3cw6vi01m3wkk6diz3lc971cfnw9"))
4538 (modules '((guix build utils)))
4539 (snippet
4540 ;; Adapt to newer freetype. As the package is unmaintained upstream,
4541 ;; there is no use in creating a patch and reporting it.
4542 '(substitute* "_imagingft.c"
4543 (("freetype/")
4544 "freetype2/")))))
bec07a7c
AE
4545 (build-system python-build-system)
4546 (inputs
4547 `(("freetype" ,freetype)
4548 ("libjpeg" ,libjpeg)
4549 ("libtiff" ,libtiff)
4550 ("python-setuptools" ,python-setuptools)
4551 ("zlib" ,zlib)))
4552 (arguments
4553 ;; Only the fork python-pillow works with Python 3.
4554 `(#:python ,python-2
4555 #:tests? #f ; no check target
4556 #:phases
4557 (alist-cons-before
4558 'build 'configure
4559 ;; According to README and setup.py, manual configuration is
4560 ;; the preferred way of "searching" for inputs.
4561 ;; lcms is not found, TCL_ROOT refers to the unavailable tkinter.
4562 (lambda* (#:key inputs #:allow-other-keys)
4563 (let ((jpeg (assoc-ref inputs "libjpeg"))
4564 (zlib (assoc-ref inputs "zlib"))
4565 (tiff (assoc-ref inputs "libtiff"))
4566 (freetype (assoc-ref inputs "freetype")))
4567 (substitute* "setup.py"
4568 (("JPEG_ROOT = None")
4569 (string-append "JPEG_ROOT = libinclude(\"" jpeg "\")"))
4570 (("ZLIB_ROOT = None")
4571 (string-append "ZLIB_ROOT = libinclude(\"" zlib "\")"))
4572 (("TIFF_ROOT = None")
4573 (string-append "TIFF_ROOT = libinclude(\"" tiff "\")"))
4574 (("FREETYPE_ROOT = None")
4575 (string-append "FREETYPE_ROOT = libinclude(\""
4576 freetype "\")")))))
4577 %standard-phases)))
4578 (home-page "http://www.pythonware.com/products/pil/")
4579 (synopsis "Python Imaging Library")
4580 (description "The Python Imaging Library (PIL) adds image processing
4581capabilities to the Python interpreter.")
4582 (license (x11-style
4583 "file://README"
4584 "See 'README' in the distribution."))))
092e86f5
AE
4585
4586(define-public python2-cssutils
4587 (package
4588 (name "python2-cssutils")
4589 (version "1.0")
4590 (source
4591 (origin
4592 (method url-fetch)
4593 (uri (string-append
4594 "https://pypi.python.org/packages/source/c/cssutils/cssutils-"
4595 version
4596 ".zip"))
4597 (sha256
4598 (base32
4599 "1bwim1353r4hqiir73sn4sc43y7ymh09qx0kly7vj048blppc125"))))
4600 (build-system python-build-system)
4601 (native-inputs
4602 `(("python2-mock" ,python2-mock) ; for the tests
4603 ("unzip" ,unzip))) ; for unpacking the source
4604 (inputs
4605 `(("python2-setuptools" ,python2-setuptools)))
4606 (arguments
4607 `(#:python ,python-2 ; Otherwise tests fail with a syntax error.
4608 #:tests? #f ; The tests apparently download an external URL.
da6dd842 4609 ))
092e86f5
AE
4610 (home-page "http://cthedot.de/cssutils/")
4611 (synopsis
4612 "CSS Cascading Style Sheets library for Python")
4613 (description
4614 "Cssutils is a Python package for parsing and building CSS
4615Cascading Style Sheets. Currently it provides a DOM only and no rendering
4616options.")
4617 (license lgpl3+)))
880ff77c
AE
4618
4619(define-public python-cssselect
4620 (package
4621 (name "python-cssselect")
4622 (version "0.9.1")
4623 (source
4624 (origin
4625 (method url-fetch)
4626 (uri (string-append
4627 "https://pypi.python.org/packages/source/c/cssselect/cssselect-"
4628 version
4629 ".tar.gz"))
4630 (sha256
4631 (base32
4632 "10h623qnp6dp1191jri7lvgmnd4yfkl36k9smqklp1qlf3iafd85"))))
4633 (build-system python-build-system)
4634 (inputs
4635 `(("python-setuptools" ,python-setuptools)))
4636 (arguments
4637 ;; tests fail with message
4638 ;; AttributeError: 'module' object has no attribute 'tests'
4639 `(#:tests? #f))
4640 (home-page
4641 "https://pythonhosted.org/cssselect/")
4642 (synopsis
4643 "CSS3 selector parser and translator to XPath 1.0")
4644 (description
4645 "Cssselect ia a Python module that parses CSS3 Selectors and translates
4646them to XPath 1.0 expressions. Such expressions can be used in lxml or
4647another XPath engine to find the matching elements in an XML or HTML document.")
4648 (license bsd-3)))
4649
4650(define-public python2-cssselect
4651 (package-with-python2 python-cssselect))
60357f99
AE
4652
4653(define-public python-netifaces
4654 (package
4655 (name "python-netifaces")
4656 (version "0.10.4")
4657 (source
4658 (origin
4659 (method url-fetch)
4660 (uri (string-append
4661 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
4662 version
4663 ".tar.gz"))
4664 (sha256
4665 (base32
4666 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
4667 (build-system python-build-system)
4668 (inputs
4669 `(("python-setuptools" ,python-setuptools)))
4670 (home-page
4671 "https://bitbucket.org/al45tair/netifaces")
4672 (synopsis
4673 "Python module for portable network interface information")
4674 (description
4675 "Netifaces is a Python module providing information on network
4676interfaces in an easy and portable manner.")
4677 (license license:expat)))
4678
4679(define-public python2-netifaces
4680 (package-with-python2 python-netifaces))
92cb152b 4681
32f77c04
RW
4682(define-public python-networkx
4683 (package
4684 (name "python-networkx")
4685 (version "1.9.1")
4686 (source
4687 (origin
4688 (method url-fetch)
4689 (uri (string-append
4690 "https://pypi.python.org/packages/source/n/networkx/networkx-"
4691 version ".tar.gz"))
4692 (sha256
4693 (base32 "0n8wy0yq1kmdq4wh68mlhwhkndvwzx48lg41a1z0sxxms0wfp033"))))
4694 (build-system python-build-system)
4695 ;; python-decorator is needed at runtime
4696 (propagated-inputs
4697 `(("python-decorator" ,python-decorator)))
4698 (native-inputs
4699 `(("python-setuptools" ,python-setuptools)
4700 ("python-nose" ,python-nose)))
4701 (home-page "http://networkx.github.io/")
4702 (synopsis "Python module for creating and manipulating graphs and networks")
4703 (description
4704 "NetworkX is a Python package for the creation, manipulation, and study
4705of the structure, dynamics, and functions of complex networks.")
4706 (license bsd-3)))
4707
4708(define-public python2-networkx
4709 (package-with-python2 python-networkx))
4710
92cb152b
RW
4711(define-public snakemake
4712 (package
4713 (name "snakemake")
4714 (version "3.2.1")
4715 (source
4716 (origin
4717 (method url-fetch)
4718 (uri (string-append
4719 "https://pypi.python.org/packages/source/s/snakemake/snakemake-"
4720 version ".tar.gz"))
4721 (sha256
4722 (base32 "0fi4b63sj60hvi7rfydvmz2icl4wj74djw5sn2gl8hxd02qw4b91"))))
4723 (build-system python-build-system)
4724 (inputs `(("python-setuptools" ,python-setuptools)))
4725 (home-page "https://bitbucket.org/johanneskoester/snakemake")
4726 (synopsis "Python-based execution environment for make-like workflows")
4727 (description
4728 "Snakemake aims to reduce the complexity of creating workflows by
4729providing a clean and modern domain specific specification language (DSL) in
4730Python style, together with a fast and comfortable execution environment.")
4731 (license license:expat)))
a1920bc9 4732
35de1fbd
RW
4733(define-public python-seaborn
4734 (package
4735 (name "python-seaborn")
4736 (version "0.5.1")
4737 (source
4738 (origin
4739 (method url-fetch)
4740 (uri (string-append
4741 "https://pypi.python.org/packages/source/s/seaborn/seaborn-"
4742 version ".tar.gz"))
4743 (sha256
4744 (base32 "1236abw18ijjglmv60q85ckqrvgf5qyy4zlq7nz5aqfg6q87z3wc"))))
4745 (build-system python-build-system)
4746 (propagated-inputs
4747 `(("python-pandas" ,python-pandas)
4748 ("python-matplotlib" ,python-matplotlib)
4749 ("python-scipy" ,python-scipy)))
4750 (native-inputs
4751 `(("python-setuptools" ,python-setuptools)))
4752 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
4753 (synopsis "Statistical data visualization")
4754 (description
4755 "Seaborn is a library for making attractive and informative statistical
4756graphics in Python. It is built on top of matplotlib and tightly integrated
4757with the PyData stack, including support for numpy and pandas data structures
4758and statistical routines from scipy and statsmodels.")
4759 (license bsd-3)))
4760
4761(define-public python2-seaborn
4762 (let ((seaborn (package-with-python2 python-seaborn)))
4763 (package (inherit seaborn)
4764 (propagated-inputs
4765 `(("python2-pytz" ,python2-pytz)
dab8ebd9
FB
4766 ("python2-pandas" ,python2-pandas)
4767 ("python2-matplotlib" ,python2-matplotlib)
4768 ("python2-scipy" ,python2-scipy))))))
35de1fbd 4769
90fc547f
RW
4770(define-public python-sympy
4771 (package
4772 (name "python-sympy")
4773 (version "0.7.6")
4774 (source
4775 (origin
4776 (method url-fetch)
4777 (uri (string-append
4778 "https://github.com/sympy/sympy/releases/download/sympy-"
4779 version "/sympy-" version ".tar.gz"))
4780 (sha256
4781 (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
4782 (build-system python-build-system)
4783 (native-inputs
4784 `(("python-setuptools" ,python-setuptools)))
4785 (home-page "http://www.sympy.org/")
4786 (synopsis "Python library for symbolic mathematics")
4787 (description
4788 "SymPy is a Python library for symbolic mathematics. It aims to become a
4789full-featured computer algebra system (CAS) while keeping the code as simple
4790as possible in order to be comprehensible and easily extensible.")
4791 (license bsd-3)))
4792
4793(define-public python2-sympy
4794 (package-with-python2 python-sympy))
4795
a1920bc9
FB
4796(define-public python-testlib
4797 (package
4798 (name "python-testlib")
4799 (version "0.6.5")
4800 (source
4801 (origin
4802 (method url-fetch)
4803 (uri (string-append
4804 "https://pypi.python.org/packages/source/t/testlib/testlib-"
4805 version ".zip"))
4806 (sha256
4807 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
4808 (build-system python-build-system)
4809 (inputs
4810 `(("python-setuptools" ,python-setuptools)))
4811 (native-inputs
4812 `(("unzip" ,unzip)))
4813 (arguments
4814 `(#:phases
4815 (alist-replace
4816 'unpack
4817 (lambda* (#:key inputs outputs #:allow-other-keys)
4818 (let ((unzip (string-append (assoc-ref inputs "unzip")
4819 "/bin/unzip"))
4820 (source (assoc-ref inputs "source")))
4821 (and (zero? (system* unzip source))
4822 (chdir (string-append "testlib-" ,version)))))
4823 %standard-phases)))
4824 (synopsis "Python micro test suite harness")
4825 (description "A micro unittest suite harness for Python.")
4826 (home-page "https://github.com/trentm/testlib")
1cb9c006 4827 (license license:expat)))
a1920bc9
FB
4828
4829(define-public python2-testlib
4830 (package-with-python2 python-testlib))
db62afa5
LC
4831
4832(define-public python2-xlib
4833 (package
4834 (name "python2-xlib")
4835 (version "0.14")
4836 (source (origin
4837 (method url-fetch)
4838 (uri (string-append "mirror://sourceforge/python-xlib/"
4839 "python-xlib-" version ".tar.gz"))
4840 (sha256
4841 (base32
4842 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
4843 (build-system python-build-system)
4844 (arguments
4845 `(#:python ,python-2 ;Python 2 only
4846 #:tests? #f)) ;no tests
4847 (inputs
4848 `(("python-setuptools" ,python-setuptools)))
4849 (home-page "http://python-xlib.sourceforge.net/")
4850 (synopsis "Python X11 client library")
4851 (description
4852 "The Python X Library is intended to be a fully functional X client
4853library for Python programs. It is useful to implement low-level X clients.
4854It is written entirely in Python.")
4855 (license gpl2+)))
0234ca06
DT
4856
4857(define-public python-singledispatch
4858 (package
4859 (name "python-singledispatch")
4860 (version "3.4.0.3")
4861 (source
4862 (origin
4863 (method url-fetch)
4864 (uri (string-append
4865 "https://pypi.python.org/packages/source/s/singledispatch/"
4866 "singledispatch-" version ".tar.gz"))
4867 (sha256
4868 (base32
4869 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
4870 (build-system python-build-system)
4871 (native-inputs
4872 `(("python-setuptools" ,python-setuptools)))
4873 (propagated-inputs
4874 `(("python-six" ,python-six)))
4875 (home-page
4876 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
4877 (synopsis "Backport of singledispatch feature from Python 3.4")
4878 (description
4879 "This library brings functools.singledispatch from Python 3.4 to Python
48802.6-3.3.")
4881 (license license:expat)))
4882
4883(define-public python2-singledispatch
4884 (package-with-python2 python-singledispatch))
feaae484 4885
310d218f
RW
4886(define-public python-tornado
4887 (package
4888 (name "python-tornado")
4889 (version "4.1")
4890 (source
4891 (origin
4892 (method url-fetch)
4893 (uri (string-append
4894 "https://pypi.python.org/packages/source/t/tornado/"
4895 "tornado-" version ".tar.gz"))
4896 (sha256
4897 (base32 "0a12f00h277zbifibnj46wf14801f573irvf6hwkgja5vspd7awr"))))
4898 (build-system python-build-system)
4899 (inputs
4900 `(("python-certifi" ,python-certifi)))
4901 (native-inputs
4902 `(("python-setuptools" ,python-setuptools)))
f4a4a718 4903 (home-page "http://www.tornadoweb.org/")
310d218f
RW
4904 (synopsis "Python web framework and asynchronous networking library")
4905 (description
4906 "Tornado is a Python web framework and asynchronous networking library,
4907originally developed at FriendFeed. By using non-blocking network I/O,
4908Tornado can scale to tens of thousands of open connections, making it ideal
4909for long polling, WebSockets, and other applications that require a long-lived
4910connection to each user.")
4911 (license asl2.0)))
4912
4913(define-public python2-tornado
4914 (let ((tornado (package-with-python2 python-tornado)))
4915 (package (inherit tornado)
4916 (inputs
4917 `(("python2-backport-ssl-match-hostname"
4918 ,python2-backport-ssl-match-hostname)
4919 ,@(package-inputs tornado))))))
4920
feaae484
SB
4921(define-public python-waf
4922 (package
4923 (name "python-waf")
4924 (version "1.8.8")
4925 (source (origin
4926 (method url-fetch)
4927 (uri (string-append "https://waf.io/"
4928 "waf-" version ".tar.bz2"))
4929 (sha256
4930 (base32
4931 "0b5q307fgn6a5d8yjia2d1l4bk1q3ilvc0w8k4isfrrx2gbcw8wn"))))
4932 (build-system python-build-system)
4933 (arguments
4934 '(#:phases
4935 (modify-phases %standard-phases
4936 (replace 'build
4937 (lambda _
4938 (zero? (begin
4939 (system* "python" "waf-light" "configure")
4940 (system* "python" "waf-light" "build")))))
4941 (replace 'check
4942 (lambda _
4943 (zero? (system* "python" "waf" "--version"))))
4944 (replace 'install
4945 (lambda _
4946 (copy-file "waf" %output))))))
4947 (home-page "https://waf.io/")
4948 (synopsis "Python-based build system")
4949 (description
4950 "Waf is a Python-based framework for configuring, compiling and installing
4951applications.")
4952 (license bsd-3)))
4953
4954(define-public python2-waf
4955 (package-with-python2 python-waf))
45203542
RW
4956
4957(define-public python-pyzmq
4958 (package
4959 (name "python-pyzmq")
3655ee76 4960 (version "15.1.0")
45203542
RW
4961 (source
4962 (origin
4963 (method url-fetch)
3655ee76 4964 (uri (pypi-uri "pyzmq" version))
45203542 4965 (sha256
3655ee76 4966 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
4967 (build-system python-build-system)
4968 (arguments
4969 `(#:configure-flags
4970 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
4971 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
4972 ;; --inplace' for 'python setup.py test' to work.
4973 #:tests? #f))
4974 (inputs
4975 `(("zeromq" ,zeromq)))
4976 (native-inputs
4977 `(("pkg-config" ,pkg-config)
4978 ("python-nose" ,python-nose)
4979 ("python-setuptools" ,python-setuptools)))
4980 (home-page "http://github.com/zeromq/pyzmq")
4981 (synopsis "Python bindings for 0MQ")
4982 (description
4983 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
4984 (license bsd-4)))
4985
4986(define-public python2-pyzmq
4987 (package-with-python2 python-pyzmq))
d889e6c4
CR
4988
4989(define-public python-pep8
4990 (package
4991 (name "python-pep8")
4992 (version "1.6.2")
4993 (source
4994 (origin
4995 (method url-fetch)
4996 (uri (string-append
4997 "https://pypi.python.org/packages/source/p/pep8/pep8-"
4998 version
4999 ".tar.gz"))
5000 (sha256
5001 (base32
5002 "1zybkcdw1sx84dvkfss96nhykqg9bc0cdpwpl4k9wlxm61bf7dxq"))))
5003 (build-system python-build-system)
5004 (inputs
5005 `(("python-setuptools" ,python-setuptools)))
5006 (home-page "http://pep8.readthedocs.org/")
5007 (synopsis "Python style guide checker")
5008 (description
5009 "This tools checks Python code against some of the style conventions in
5010PEP 8.")
5011 (license license:expat)))
5012
5013(define-public python2-pep8
5014 (package-with-python2 python-pep8))
e31d7f44
CR
5015
5016(define-public python-pyflakes
5017 (package
5018 (name "python-pyflakes")
2abc3972 5019 (version "1.0.0")
e31d7f44
CR
5020 (source
5021 (origin
5022 (method url-fetch)
2abc3972 5023 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
5024 (sha256
5025 (base32
2abc3972 5026 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44
CR
5027 (build-system python-build-system)
5028 (inputs
5029 `(("python-setuptools" ,python-setuptools)))
5030 (home-page
5031 "https://github.com/pyflakes/pyflakes")
5032 (synopsis "Passive checker of Python programs")
5033 (description
5034 "Pyflakes statically checks Python source code for common errors.")
5035 (license license:expat)))
a59e017c 5036
7261d9eb
CR
5037(define-public python2-pyflakes
5038 (package-with-python2 python-pyflakes))
5039
a59e017c
CR
5040(define-public python-mccabe
5041 (package
5042 (name "python-mccabe")
5043 (version "0.3.1")
5044 (source
5045 (origin
5046 (method url-fetch)
5047 (uri (string-append
5048 "https://pypi.python.org/packages/source/m/mccabe/mccabe-"
5049 version
5050 ".tar.gz"))
5051 (sha256
5052 (base32
5053 "05ix3vdv5hjk4irl97n2n3c4g1vqvz7dbmkzs13f3bx97bxsczjz"))))
5054 (build-system python-build-system)
5055 (inputs
5056 `(("python-setuptools" ,python-setuptools)))
5057 (home-page "https://github.com/flintwork/mccabe")
5058 (synopsis "McCabe checker, plugin for flake8")
5059 (description
5060 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
5061complexity of Python source code.")
7362371d 5062 (license license:expat)))
a59e017c
CR
5063
5064(define-public python2-mccabe
5065 (package-with-python2 python-mccabe))
e8df8f47 5066
7477fbb1
CR
5067(define-public python-mccabe-0.2.1
5068 (package (inherit python-mccabe)
5069 (version "0.2.1")
5070 (source
5071 (origin
5072 (method url-fetch)
5073 (uri (pypi-uri "mccabe" version))
5074 (sha256
5075 (base32
5076 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
5077
5078(define-public python2-mccabe-0.2.1
5079 (package-with-python2 python-mccabe-0.2.1))
5080
e8df8f47
CR
5081;; Flake8 2.4.1 requires an older version of pep8.
5082;; This should be removed ASAP.
5083(define-public python-pep8-1.5.7
5084 (package (inherit python-pep8)
5085 (version "1.5.7")
5086 (source
5087 (origin
5088 (method url-fetch)
5089 (uri (string-append
5090 "https://pypi.python.org/packages/source/p/pep8/pep8-"
5091 version
5092 ".tar.gz"))
5093 (sha256
5094 (base32
5095 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))))
5096
5097(define-public python2-pep8-1.5.7
5098 (package-with-python2 python-pep8-1.5.7))
5099
5100;; Flake8 2.4.1 requires an older version of pyflakes.
5101;; This should be removed ASAP.
5102(define-public python-pyflakes-0.8.1
5103 (package (inherit python-pyflakes)
5104 (version "0.8.1")
5105 (source
5106 (origin
5107 (method url-fetch)
5108 (uri (string-append
5109 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
5110 version
5111 ".tar.gz"))
5112 (sha256
5113 (base32
5114 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))))
5115
5116(define-public python2-pyflakes-0.8.1
7261d9eb 5117 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
5118
5119(define-public python-flake8
5120 (package
5121 (name "python-flake8")
1b995533 5122 (version "2.5.1")
e8df8f47
CR
5123 (source
5124 (origin
5125 (method url-fetch)
1b995533 5126 (uri (pypi-uri "flake8" version))
e8df8f47
CR
5127 (sha256
5128 (base32
1b995533 5129 "00sn2g5ydriv5anbipcrprpv797kh4q8rfa75w3fc7v7n14fv2j4"))))
e8df8f47
CR
5130 (build-system python-build-system)
5131 (inputs
5132 `(("python-setuptools" ,python-setuptools)
5133 ("python-pep8" ,python-pep8-1.5.7)
5134 ("python-pyflakes" ,python-pyflakes-0.8.1)
5135 ("python-mccabe" ,python-mccabe)
5136 ("python-mock" ,python-mock)
5137 ("python-nose" ,python-nose)))
5138 (home-page "https://gitlab.com/pycqa/flake8")
5139 (synopsis
5140 "The modular source code checker: pep8, pyflakes and co")
5141 (description
5142 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
5143 (license license:expat)))
5144
5145(define-public python2-flake8
5146 (package-with-python2 python-flake8))
61b9ac53 5147
abf21efc
CR
5148;; This will only be needed by the python-hacking package and will not be
5149;; necessary once python-hacking > 0.10.2 is released.
5150(define-public python-flake8-2.2.4
5151 (package (inherit python-flake8)
5152 (inputs
5153 `(("python-setuptools" ,python-setuptools)
5154 ("python-pep8" ,python-pep8-1.5.7)
5155 ("python-pyflakes" ,python-pyflakes-0.8.1)
5156 ("python-mccabe" ,python-mccabe-0.2.1)
5157 ("python-mock" ,python-mock)
5158 ("python-nose" ,python-nose)))
5159 (version "2.2.4")
5160 (source
5161 (origin
5162 (method url-fetch)
5163 (uri (pypi-uri "flake8" version))
5164 (sha256
5165 (base32
5166 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))))))
5167
5168(define-public python2-flake8-2.2.4
5169 (package-with-python2 python-flake8-2.2.4))
5170
61b9ac53
FB
5171(define-public python-mistune
5172 (package
5173 (name "python-mistune")
5174 (version "0.7")
5175 (source
5176 (origin
5177 (method url-fetch)
5178 (uri (string-append
5179 "https://pypi.python.org/packages/source/m/mistune/mistune-"
5180 version
5181 ".tar.gz"))
5182 (sha256
5183 (base32
5184 "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
5185 (build-system python-build-system)
5186 (inputs
5187 `(("python-setuptools" ,python-setuptools)
5188 ("python-nose" ,python-nose)
5189 ("python-cython" ,python-cython)))
5190 (home-page "https://github.com/lepture/mistune")
5191 (synopsis "Markdown parser in pure Python")
5192 (description "This package provides a fast markdown parser in pure
5193Python.")
5194 (license bsd-3)))
5195
5196(define-public python2-mistune
5197 (package-with-python2 python-mistune))
6d992d07 5198
b9893908
EE
5199(define-public python-markdown
5200 (package
5201 (name "python-markdown")
5202 (version "2.6.5")
5203 (source
5204 (origin
5205 (method url-fetch)
5206 (uri (pypi-uri "Markdown" version))
5207 (sha256
5208 (base32
5209 "0q758a3fiiawr20b3hhjfs677cwj6xi284yb7xspcvv0fdicz54d"))))
5210 (build-system python-build-system)
5211 (arguments
5212 `(#:phases
5213 (modify-phases %standard-phases
5214 (replace 'check
5215 (lambda _
5216 (zero? (system* "python" "run-tests.py")))))))
5217 (native-inputs
5218 `(("python-nose" ,python-nose)
5219 ("python-pyyaml" ,python-pyyaml)))
5220 (home-page "https://pythonhosted.org/Markdown/")
5221 (synopsis "Python implementation of Markdown")
5222 (description
5223 "This package provides a Python implementation of John Gruber's
5224Markdown. The library features international input, various Markdown
5225extensions, and several HTML output formats. A command line wrapper
5226markdown_py is also provided to convert Markdown files to HTML.")
5227 (license bsd-3)))
5228
5229(define-public python2-markdown
5230 (package-with-python2 python-markdown))
5231
6d992d07
FB
5232(define-public python-ptyprocess
5233 (package
5234 (name "python-ptyprocess")
5235 (version "0.5")
5236 (source
5237 (origin
5238 (method url-fetch)
5239 (uri (string-append
5240 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
5241 version ".tar.gz"))
5242 (sha256
5243 (base32
5244 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
5245 (build-system python-build-system)
5246 (inputs
5247 `(("python-setuptools" ,python-setuptools)
5248 ("python-nose" ,python-nose)))
5249 (arguments
5250 `(#:phases
5251 (modify-phases %standard-phases
5252 (replace 'check
5253 (lambda _
5254 (zero? (system* "nosetests")))))))
5255 (home-page "https://github.com/pexpect/ptyprocess")
5256 (synopsis "Run a subprocess in a pseudo terminal")
5257 (description
5258 "This package provides a Python library used to launch a subprocess in a
5259pseudo terminal (pty), and interact with both the process and its pty.")
5260 (license isc)))
5261
5262(define-public python2-ptyprocess
5263 (package-with-python2 python-ptyprocess))
4aadb1df
FB
5264
5265(define-public python-terminado
5266 (package
5267 (name "python-terminado")
5268 (version "0.5")
5269 (source
5270 (origin
5271 (method url-fetch)
5272 (uri (string-append
5273 "https://pypi.python.org/packages/source/t/terminado/terminado-"
5274 version ".tar.gz"))
5275 (sha256
5276 (base32
5277 "1dkmp1n8dj5v1jl9mfrq8lwyc7dsfrvcmz2bgkpg315sy7pr7s33"))))
5278 (build-system python-build-system)
5279 (propagated-inputs
5280 `(("python-tornado" ,python-tornado)
5281 ("python-ptyprocess" ,python-ptyprocess)))
5282 (inputs
5283 `(("python-setuptools" ,python-setuptools)
5284 ("python-nose" ,python-nose)))
5285 (arguments
5286 `(#:phases
5287 (modify-phases %standard-phases
5288 (replace 'check
5289 (lambda _
5290 (zero? (system* "nosetests")))))))
5291 (home-page "https://github.com/takluyver/terminado")
5292 (synopsis "Terminals served to term.js using Tornado websockets")
5293 (description "This package provides a Tornado websocket backend for the
5294term.js Javascript terminal emulator library.")
5295 (license bsd-2)))
5296
5297(define-public python2-terminado
5298 (let ((terminado (package-with-python2 python-terminado)))
5299 (package (inherit terminado)
5300 (propagated-inputs
5301 `(("python2-tornado" ,python2-tornado)
5302 ("python2-backport-ssl-match-hostname"
5303 ,python2-backport-ssl-match-hostname)
5304 ,@(alist-delete "python-tornado"
5305 (package-propagated-inputs terminado)))))))
5faa5ce4 5306
d582eaac
SB
5307(define-public python-fonttools
5308 (package
5309 (name "python-fonttools")
5310 (version "2.5")
5311 (source (origin
5312 (method url-fetch)
5313 (uri (string-append
5314 "https://pypi.python.org/packages/source/F/FontTools/"
5315 "fonttools-" version ".tar.gz"))
5316 (sha256
5317 (base32
5318 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
5319 (build-system python-build-system)
5320 (arguments '(#:test-target "check"))
5321 (propagated-inputs
5322 ;; XXX: module not found if setuptools is not available.
5323 `(("python-setuptools" ,python-setuptools)))
5324 (home-page "http://github.com/behdad/fonttools")
5325 (synopsis "Tools to manipulate font files")
5326 (description
5327 "FontTools/TTX is a library to manipulate font files from Python. It
5328supports reading and writinfg of TrueType/OpenType fonts, reading and writing
5329of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
5330also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
5331from an XML-based format.")
5332 (license (non-copyleft "file://LICENSE.txt"
5333 "See LICENSE.txt in the distribution."))))
5334
5335(define-public python2-fonttools
5336 (package-with-python2 python-fonttools))
75710da6 5337
5faa5ce4
RW
5338(define-public python-ly
5339 (package
5340 (name "python-ly")
5341 (version "0.9.2")
5342 (source
5343 (origin
5344 (method url-fetch)
5345 (uri (string-append
5346 "https://pypi.python.org/packages/source/p/python-ly/python-ly-"
5347 version ".tar.gz"))
5348 (sha256
5349 (base32
5350 "1bsjg4q9ihr8bfdclrcmb8yjcg8xm9dznh58f3zsyrkrjzwbhcd2"))))
5351 (build-system python-build-system)
5352 (native-inputs
5353 `(("python-setuptools" ,python-setuptools)))
5354 (synopsis "Tool and library for manipulating LilyPond files")
5355 (description "This package provides a Python library to parse, manipulate
5356or create documents in LilyPond format. A command line program ly is also
5357provided that can be used to do various manipulations with LilyPond files.")
5358 (home-page "https://pypi.python.org/pypi/python-ly")
5359 (license gpl2+)))
7e7b27d9
CR
5360
5361(define-public python-appdirs
5362 (package
5363 (name "python-appdirs")
5364 (version "1.4.0")
5365 (source
5366 (origin
5367 (method url-fetch)
5368 (uri (string-append
5369 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
5370 version
5371 ".tar.gz"))
5372 (sha256
5373 (base32
5374 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
5375 (build-system python-build-system)
5376 (inputs
5377 `(("python-setuptools" ,python-setuptools)))
5378 (home-page "http://github.com/ActiveState/appdirs")
5379 (synopsis
5380 "Determine platform-specific dirs, e.g. a \"user data dir\"")
5381 (description
5382 "This module provides a portable way of finding out where user data
5383should be stored on various operating systems.")
5384 (license license:expat)))
5385
5386(define-public python2-appdirs
5387 (package-with-python2 python-appdirs))
89b2e0b0
LF
5388
5389(define-public python-llfuse
5390 (package
5391 (name "python-llfuse")
5392 (version "0.41")
5393 (source (origin
5394 (method url-fetch)
5395 (uri (string-append
5396 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
5397 "llfuse-" version ".tar.bz2"))
5398 (sha256
5399 (base32
5400 "0yzy8ixpmxk00kdq6lx5vvwbs0n6s59qnja5q0js2ahbqyxiz2hb"))))
5401 (build-system python-build-system)
5402 (inputs
5403 `(("fuse" ,fuse)
5404 ("attr" ,attr)))
5405 (native-inputs
5406 `(("pkg-config" ,pkg-config)
5407 ("python-setuptools" ,python-setuptools)))
5408 (synopsis "Python bindings for FUSE")
5409 (description
5410 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
5411 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
5412 ;; Python-LLFUSE includes underscore.js, which is MIT (expat) licensed.
5413 ;; The rest of the package is licensed under LGPL2.0 or later.
5414 (license (list license:expat lgpl2.0+))))
5415
5416(define-public python2-llfuse
5417 (package-with-python2 python-llfuse))
641c9871
LF
5418
5419(define-public python-msgpack
5420 (package
5421 (name "python-msgpack")
5422 (version "0.4.6")
5423 (source (origin
5424 (method url-fetch)
5425 (uri (string-append
5426 "https://pypi.python.org/packages/source/m/"
5427 "msgpack-python/msgpack-python-" version ".tar.gz"))
5428 (sha256
5429 (base32
5430 "1527c76b6fn4zzkgfq5xvhh7x9a9686g7fjiz717rw5vklf5ik5z"))))
5431 (build-system python-build-system)
5432 (native-inputs
5433 `(("python-setuptools" ,python-setuptools)))
5434 (synopsis "MessagePack (de)serializer")
5435 (description "MessagePack is a fast, compact binary serialization format,
5436suitable for similar data to JSON. This package provides CPython bindings for
5437reading and writing MessagePack data.")
5438 (home-page "https://pypi.python.org/pypi/msgpack-python/")
5439 (license asl2.0)))
5440
5441(define-public python2-msgpack
5442 (package-with-python2 python-msgpack))
6e5e39f4
CR
5443
5444(define-public python-netaddr
5445 (package
5446 (name "python-netaddr")
5447 (version "0.7.18")
5448 (source
5449 (origin
5450 (method url-fetch)
5451 (uri (string-append
5452 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
5453 version
5454 ".tar.gz"))
5455 (sha256
5456 (base32
5457 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
5458 (build-system python-build-system)
5459 (arguments `(#:tests? #f)) ;; No tests.
5460 (inputs
5461 `(("python-setuptools" ,python-setuptools)))
5462 (home-page "https://github.com/drkjam/netaddr/")
5463 (synopsis "Pythonic manipulation of network addresses")
5464 (description
5465 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
5466and MAC network addresses.")
5467 (license bsd-3)))
5468
5469(define-public python2-netaddr
5470 (package-with-python2 python-netaddr))
8c692a52
CR
5471
5472(define-public python-wrapt
5473 (package
5474 (name "python-wrapt")
5475 (version "1.10.5")
5476 (source
5477 (origin
5478 (method url-fetch)
5479 (uri (string-append
5480 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
5481 version
5482 ".tar.gz"))
5483 (sha256
5484 (base32
5485 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
5486 (build-system python-build-system)
5487 (arguments
5488 ;; Tests are not included in the tarball, they are only available in the
5489 ;; git repository.
5490 `(#:tests? #f))
5491 (inputs
5492 `(("python-setuptools" ,python-setuptools)))
5493 (home-page "https://github.com/GrahamDumpleton/wrapt")
5494 (synopsis "Module for decorators, wrappers and monkey patching")
5495 (description
5496 "The aim of the wrapt module is to provide a transparent object proxy for
5497 Python, which can be used as the basis for the construction of function
5498 wrappers and decorator functions.")
5499 (license bsd-2)))
5500
5501(define-public python2-wrapt
5502 (package-with-python2 python-wrapt))
b85c85be
CR
5503
5504(define-public python-iso8601
5505 (package
5506 (name "python-iso8601")
5507 (version "0.1.10")
5508 (source
5509 (origin
5510 (method url-fetch)
5511 (uri (string-append
5512 "https://pypi.python.org/packages/source/i/iso8601/iso8601-"
5513 version
5514 ".tar.gz"))
5515 (sha256
5516 (base32
5517 "1qf01afxh7j4gja71vxv345if8avg6nnm0ry0zsk6j3030xgy4p7"))))
5518 (build-system python-build-system)
5519 (inputs
5520 `(("python-setuptools" ,python-setuptools)))
5521 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
5522 (synopsis "Module to parse ISO 8601 dates")
5523 (description
5524 "This module parses the most common forms of ISO 8601 date strings (e.g.
5525@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
5526 (license license:expat)))
5527
5528(define-public python2-iso8601
5529 (package-with-python2 python-iso8601))
5e412b63
CR
5530
5531(define-public python-monotonic
5532 (package
5533 (name "python-monotonic")
5534 (version "0.3")
5535 (source
5536 (origin
5537 (method url-fetch)
5538 (uri (string-append
5539 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
5540 version
5541 ".tar.gz"))
5542 (sha256
5543 (base32
5544 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
5545 (build-system python-build-system)
5546 (inputs
5547 `(("python-setuptools" ,python-setuptools)))
5548 (home-page "https://github.com/atdt/monotonic")
5549 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
5550 (description
5551 "This module provides a monotonic() function which returns the value (in
5552fractional seconds) of a clock which never goes backwards.")
5553 (license asl2.0)))
5554
5555(define-public python2-monotonic
5556 (package-with-python2 python-monotonic))
de34afac
CR
5557
5558(define-public python-webob
5559 (package
5560 (name "python-webob")
b8834c21 5561 (version "1.5.1")
de34afac
CR
5562 (source
5563 (origin
5564 (method url-fetch)
b8834c21 5565 (uri (pypi-uri "WebOb" version))
de34afac
CR
5566 (sha256
5567 (base32
b8834c21 5568 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac
CR
5569 (build-system python-build-system)
5570 (inputs
5571 `(("python-nose" ,python-nose)
5572 ("python-setuptools" ,python-setuptools)))
5573 (home-page "http://webob.org/")
5574 (synopsis "WSGI request and response object")
5575 (description
5576 "WebOb provides wrappers around the WSGI request environment, and an
5577object to help create WSGI responses.")
5578 (license license:expat)))
5579
5580(define-public python2-webob
5581 (package-with-python2 python-webob))
350ba0a3 5582
02a8a187
BW
5583(define-public python-xlrd
5584 (package
5585 (name "python-xlrd")
5586 (version "0.9.4")
5587 (source (origin
5588 (method url-fetch)
5589 (uri (string-append "https://pypi.python.org/packages/source/x/"
5590 "xlrd/xlrd-" version ".tar.gz"))
5591 (sha256
5592 (base32
5593 "0wpa55nvidmm5m2qr622dsh3cj46akdk0h3zjgzschcmydck73cf"))))
5594 (build-system python-build-system)
5595 (arguments
5596 `(#:phases
5597 (modify-phases %standard-phases
5598 ;; Current test in setup.py does not work as of 0.9.4, so use nose to
5599 ;; run tests instead for now.
5600 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5601 (native-inputs `(("python-nose" ,python-nose)
5602 ("python-setuptools" ,python-setuptools)))
5603 (home-page "http://www.python-excel.org/")
5604 (synopsis "Library for extracting data from Excel files")
5605 (description "This packages provides a library to extract data from
5606spreadsheets using Microsoft Excel® proprietary file formats @samp{.xls} and
5607@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
5608Unicode-aware. It is not intended as an end-user tool.")
5609 (license bsd-3)))
5610
5611(define-public python2-xlrd
5612 (package-with-python2 python-xlrd))
5613
350ba0a3
CR
5614(define-public python-prettytable
5615 (package
5616 (name "python-prettytable")
5617 (version "0.7.2")
5618 (source
5619 (origin
5620 (method url-fetch)
5621 (uri (string-append
5622 "https://pypi.python.org/packages/source/P/PrettyTable/"
5623 "prettytable-" version ".tar.bz2"))
5624 (sha256
5625 (base32
5626 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
5627 (build-system python-build-system)
5628 (inputs
5629 `(("python-setuptools" ,python-setuptools)))
5630 (home-page "http://code.google.com/p/prettytable/")
5631 (synopsis "Display tabular data in an ASCII table format")
5632 (description
5633 "A library designed to represent tabular data in visually appealing ASCII
5634tables. PrettyTable allows for selection of which columns are to be printed,
5635independent alignment of columns (left or right justified or centred) and
5636printing of sub-tables by specifying a row range.")
5637 (license bsd-3)))
5638
5639(define-public python2-prettytable
5640 (package-with-python2 python-prettytable))
7a8ac75a
RW
5641
5642(define-public python-pyasn1
5643 (package
5644 (name "python-pyasn1")
5645 (version "0.1.8")
5646 (source
5647 (origin
5648 (method url-fetch)
5649 (uri (string-append "https://pypi.python.org/packages/source/p/"
5650 "pyasn1/pyasn1-" version ".tar.gz"))
5651 (sha256
5652 (base32
5653 "0iw31d9l0zwx35szkzq72hiw002wnqrlrsi9dpbrfngcl1ybwcsx"))))
5654 (build-system python-build-system)
5655 (home-page "http://pyasn1.sourceforge.net/")
5656 (synopsis "ASN.1 types and codecs")
5657 (description
5658 "This is an implementation of ASN.1 types and codecs in Python. It is
5659suitable for a wide range of protocols based on the ASN.1 specification.")
5660 (license bsd-2)))
5661
5662(define-public python2-pyasn1
5663 (package-with-python2 python-pyasn1))
9a49a535 5664
5988c299
EF
5665(define-public python-pyasn1-modules
5666 (package
5667 (name "python-pyasn1-modules")
5668 (version "0.0.8")
5669 (source
5670 (origin
5671 (method url-fetch)
5672 (uri (pypi-uri "pyasn1-modules" version))
5673 (sha256
5674 (base32
5675 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
5676 (build-system python-build-system)
5677 (native-inputs
5678 `(("python-setuptools" ,python-setuptools)))
5679 (propagated-inputs
5680 `(("python-pyasn1" ,python-pyasn1)))
5681 (home-page "http://sourceforge.net/projects/pyasn1/")
5682 (synopsis "ASN.1 codec implementations")
5683 (description
5684 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
5685implementations of ASN.1-based codecs and protocols.")
5686 (license bsd-3)))
5687
5688(define-public python2-pyasn1-modules
5689 (package-with-python2 python-pyasn1-modules))
5690
9a49a535
RW
5691(define-public python2-ipaddress
5692 (package
5693 (name "python2-ipaddress")
5694 (version "1.0.14")
5695 (source
5696 (origin
5697 (method url-fetch)
5698 (uri (string-append "https://pypi.python.org/packages/source/i/"
5699 "ipaddress/ipaddress-" version ".tar.gz"))
5700 (sha256
5701 (base32
5702 "0givid4963n57nsjibms2fc347zmcs188q1hw9al1dkc9kj4nvr2"))))
5703 (build-system python-build-system)
5704 (arguments
5705 `(#:tests? #f ; no tests
5706 #:python ,python-2))
5707 (home-page "https://github.com/phihag/ipaddress")
5708 (synopsis "IP address manipulation library")
5709 (description
5710 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
5711in Python. This library is used to create, poke at, and manipulate IPv4 and
5712IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
5713module to older versions of Python.")
5714 (license psfl)))
3f00e078
RW
5715
5716(define-public python-idna
5717 (package
5718 (name "python-idna")
5719 (version "2.0")
5720 (source
5721 (origin
5722 (method url-fetch)
5723 (uri (string-append "https://pypi.python.org/packages/source/i/"
5724 "idna/idna-" version ".tar.gz"))
5725 (sha256
5726 (base32
5727 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
5728 (build-system python-build-system)
5729 (native-inputs
5730 `(("python-setuptools" ,python-setuptools)))
5731 (home-page "https://github.com/kjd/idna")
5732 (synopsis "Internationalized domain names in applications")
5733 (description
5734 "This is a library to support the Internationalised Domain Names in
5735Applications (IDNA) protocol as specified in RFC 5891. This version of the
5736protocol is often referred to as “IDNA2008” and can produce different results
5737from the earlier standard from 2003. The library is also intended to act as a
5738suitable drop-in replacement for the “encodings.idna” module that comes with
5739the Python standard library but currently only supports the older 2003
5740specification.")
5741 (license bsd-4)))
5742
5743(define-public python2-idna
5744 (package-with-python2 python-idna))
36ebf972
RW
5745
5746(define-public python-pretend
5747 (package
5748 (name "python-pretend")
5749 (version "1.0.8")
5750 (source
5751 (origin
5752 (method url-fetch)
5753 (uri (string-append "https://pypi.python.org/packages/source/p/"
5754 "pretend/pretend-" version ".tar.gz"))
5755 (sha256
5756 (base32
5757 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
5758 (build-system python-build-system)
5759 (native-inputs
5760 `(("python-setuptools" ,python-setuptools)))
5761 (home-page "https://github.com/alex/pretend")
5762 (synopsis "Library for stubbing in Python")
5763 (description
5764 "Pretend is a library to make stubbing with Python easier. Stubbing is a
5765technique for writing tests. You may hear the term mixed up with mocks,
5766fakes, or doubles. Basically, a stub is an object that returns pre-canned
5767responses, rather than doing any computation.")
5768 (license bsd-3)))
5769
5770(define-public python2-pretend
5771 (package-with-python2 python-pretend))
aa759a51
RW
5772
5773(define-public python-cryptography-vectors
5774 (package
5775 (name "python-cryptography-vectors")
b39b33e8 5776 (version "1.2.2")
aa759a51
RW
5777 (source
5778 (origin
5779 (method url-fetch)
5780 (uri (string-append "https://pypi.python.org/packages/source/c/"
5781 "cryptography-vectors/cryptography_vectors-"
5782 version ".tar.gz"))
5783 (sha256
5784 (base32
b39b33e8 5785 "1zg47fzzn30mgkkbwrxqqcfq9crgabcmxyiy106n9404wbhfjkkl"))))
aa759a51
RW
5786 (build-system python-build-system)
5787 (native-inputs
5788 `(("python-setuptools" ,python-setuptools)))
5789 (home-page "https://github.com/pyca/cryptography")
5790 (synopsis "Test vectors for the cryptography package.")
5791 (description
5792 "This package contains test vectors for the cryptography package.")
5793 ;; Distributed under either BSD-3 or ASL2.0
5794 (license (list bsd-3 asl2.0))))
5795
5796(define-public python2-cryptography-vectors
5797 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
5798
5799(define-public python-cryptography
5800 (package
5801 (name "python-cryptography")
ce6c13ee 5802 (version "1.2.2")
88b47cb0
RW
5803 (source
5804 (origin
5805 (method url-fetch)
ce6c13ee 5806 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
5807 (sha256
5808 (base32
ce6c13ee 5809 "0rvaha7ymgbqkzbxk7xmj67k5b3hbp8w8cn3m5z776vd22wrq89z"))))
88b47cb0
RW
5810 (build-system python-build-system)
5811 (inputs
5812 `(("openssl" ,openssl)))
5813 (propagated-inputs
5814 `(("python-cffi" ,python-cffi)
5815 ("python-six" ,python-six)
5816 ("python-pyasn1" ,python-pyasn1)
5817 ("python-enum34" ,python-enum34)
5818 ("python-idna" ,python-idna)
5819 ("python-iso8601" ,python-iso8601)))
5820 (native-inputs
5821 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 5822 ("python-hypothesis" ,python-hypothesis)
88b47cb0
RW
5823 ("python-setuptools" ,python-setuptools)
5824 ("python-pretend" ,python-pretend)
ce6c13ee
EF
5825 ("python-pyasn1" ,python-pyasn1)
5826 ("python-pyasn1-modules" ,python-pyasn1-modules)
88b47cb0
RW
5827 ("python-pytest" ,python-pytest)))
5828 (home-page "https://github.com/pyca/cryptography")
5829 (synopsis "Cryptographic recipes and primitives for Python")
5830 (description
5831 "cryptography is a package which provides cryptographic recipes and
5832primitives to Python developers. It aims to be the “cryptographic standard
5833library” for Python. The package includes both high level recipes, and low
5834level interfaces to common cryptographic algorithms such as symmetric ciphers,
5835message digests and key derivation functions.")
5836 ;; Distributed under either BSD-3 or ASL2.0
5837 (license (list bsd-3 asl2.0))))
5838
5839(define-public python2-cryptography
5840 (let ((crypto (package-with-python2 python-cryptography)))
5841 (package (inherit crypto)
5842 (propagated-inputs
5843 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
5844 ("python2-backport-ssl-match-hostname"
5845 ,python2-backport-ssl-match-hostname)
88b47cb0 5846 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
5847
5848(define-public python-pyopenssl
5849 (package
5850 (name "python-pyopenssl")
5851 (version "0.15.1")
5852 (source
5853 (origin
5854 (method url-fetch)
5855 (uri (string-append "https://pypi.python.org/packages/source/p/"
5856 "pyOpenSSL/pyOpenSSL-" version ".tar.gz"))
5857 (sha256
5858 (base32
5859 "0wnnq15rhj7fhdcd8ycwiw6r6g3w9f9lcy6cigg8226vsrq618ph"))))
5860 (build-system python-build-system)
5861 (arguments
5862 `(#:phases
5863 (modify-phases %standard-phases
5864 (add-after 'unpack 'fix-tests
5865 (lambda* (#:key inputs #:allow-other-keys)
5866 (substitute* "OpenSSL/test/test_ssl.py"
5867 (("client\\.connect\\(\\('verisign\\.com', 443\\)\\)")
5868 "return True")
5869 ;; FIXME: disable broken test
5870 (("test_set_tmp_ecdh") "disabled__set_tmp_ecdh"))
5871 (substitute* "OpenSSL/test/test_crypto.py"
5872 (("command = b\"openssl \"")
5873 (string-append "command = b\""
5874 (assoc-ref inputs "openssl")
5875 "/bin/openssl" " \""))
5876 ;; FIXME: disable four broken tests
5877 (("test_der") "disabled__der")
5878 (("test_digest") "disabled__digest")
5879 (("test_get_extension") "disabled__get_extension")
5880 (("test_extension_count") "disabled__extension_count"))
5881 #t)))))
5882 (propagated-inputs
5883 `(("python-cryptography" ,python-cryptography)
5884 ("python-six" ,python-six)))
5885 (inputs
5886 `(("openssl" ,openssl)))
5887 (native-inputs
5888 `(("python-setuptools" ,python-setuptools)))
5889 (home-page "https://github.com/pyca/pyopenssl")
5890 (synopsis "Python wrapper module around the OpenSSL library")
5891 (description
5892 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
5893library.")
5894 (license asl2.0)))
5895
5896(define-public python2-pyopenssl
5897 (let ((pyopenssl (package-with-python2 python-pyopenssl)))
5898 (package (inherit pyopenssl)
5899 (propagated-inputs
5900 `(("python2-cryptography" ,python2-cryptography)
5901 ,@(alist-delete "python-cryptography"
5902 (package-propagated-inputs pyopenssl)))))))
643725a1
CR
5903
5904(define-public python-pip
5905 (package
5906 (name "python-pip")
6fb54e3b 5907 (version "8.0.2")
643725a1
CR
5908 (source
5909 (origin
5910 (method url-fetch)
6fb54e3b 5911 (uri (pypi-uri "pip" version))
643725a1
CR
5912 (sha256
5913 (base32
6fb54e3b 5914 "08cm8d4228fj0qnrysy3qv1a6022zr3dcs25amd14lgxil6vvx26"))))
643725a1
CR
5915 (build-system python-build-system)
5916 (inputs
5917 `(("python-setuptools" ,python-setuptools)
5918 ("python-virtualenv" ,python-virtualenv)
5919 ;; Tests
5920 ("python-mock" ,python-mock)
5921 ("python-pytest" ,python-pytest)
5922 ("python-scripttest" ,python-scripttest)))
5923 (home-page "https://pip.pypa.io/")
5924 (synopsis
5925 "Package manager for Python software")
5926 (description
5927 "Pip is a package manager for Python software, that finds packages on the
5928Python Package Index (PyPI).")
5929 (license license:expat)))
5930
5931(define-public python2-pip
5932 (package-with-python2 python-pip))
d8c4998f
LC
5933
5934(define-public python-tlsh
5935 (package
5936 (name "python-tlsh")
99b00dc7 5937 (version "3.4.4")
d8c4998f
LC
5938 (home-page "https://github.com/trendmicro/tlsh")
5939 (source (origin
99b00dc7
EF
5940 (method url-fetch)
5941 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
5942 version ".tar.gz"))
d8c4998f
LC
5943 (sha256
5944 (base32
99b00dc7
EF
5945 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
5946 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
5947 (build-system cmake-build-system)
5948 (arguments
5949 '(#:out-of-source? #f
5950 #:phases (modify-phases %standard-phases
5951 (replace
5952 'install
5953 (lambda* (#:key outputs #:allow-other-keys)
5954 ;; Build and install the Python bindings. The underlying
5955 ;; C++ library is apparently not meant to be installed.
5956 (let ((out (assoc-ref outputs "out")))
5957 (with-directory-excursion "py_ext"
5958 (and (system* "python" "setup.py" "build")
5959 (system* "python" "setup.py" "install"
5960 (string-append "--prefix=" out))))))))))
5961 (inputs `(("python" ,python-wrapper))) ;for the bindings
5962 (synopsis "Fuzzy matching library for Python")
5963 (description
5964 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
5965Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
5966value which can be used for similarity comparisons. Similar objects have
5967similar hash values, which allows for the detection of similar objects by
5968comparing their hash values. The byte stream should have a sufficient amount
5969of complexity; for example, a byte stream of identical bytes will not generate
5970a hash value.")
5971 (license asl2.0)))
5972
5973(define-public python2-tlsh
5974 (package
5975 (inherit python-tlsh)
5976 (name "python2-tlsh")
5977 (inputs `(("python" ,python-2)))))
d96034ed
LC
5978
5979(define-public python-libarchive-c
5980 (package
5981 (name "python-libarchive-c")
03fd001c 5982 (version "2.2")
d96034ed
LC
5983 (source (origin
5984 (method url-fetch)
03fd001c 5985 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
5986 (sha256
5987 (base32
03fd001c 5988 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
5989 (build-system python-build-system)
5990 (arguments
5991 '(#:phases (modify-phases %standard-phases
5992 (add-before
5993 'build 'reference-libarchive
5994 (lambda* (#:key inputs #:allow-other-keys)
5995 ;; Retain the absolute file name of libarchive.so.
5996 (let ((libarchive (assoc-ref inputs "libarchive")))
5997 (substitute* "libarchive/ffi.py"
5998 (("find_library\\('archive'\\)")
5999 (string-append "'" libarchive
6000 "/lib/libarchive.so'"))))
6001
6002 ;; Do not make a compressed egg (see
6003 ;; <http://bugs.gnu.org/20765>).
6004 (let ((port (open-file "setup.cfg" "a")))
6005 (display "\n[easy_install]\nzip_ok = 0\n"
6006 port)
6007 (close-port port)
6008 #t))))))
6009 (inputs
6010 `(("python-setuptools" ,python-setuptools)
6011 ("libarchive" ,libarchive)))
6012 (home-page "https://github.com/Changaco/python-libarchive-c")
6013 (synopsis "Python interface to libarchive")
6014 (description
6015 "This package provides Python bindings to libarchive, a C library to
6016access possibly compressed archives in many different formats. It uses
6017Python's @code{ctypes} foreign function interface (FFI).")
6018 (license lgpl2.0+)))
6019
6020(define-public python2-libarchive-c
6021 (package-with-python2 python-libarchive-c))
5e1c9367
LC
6022
6023(define-public python-file
6024 (package
6025 (inherit file)
6026 (name "python-file")
6027 (build-system python-build-system)
6028 (arguments
6029 '(#:tests? #f ;no tests
6030 #:phases (modify-phases %standard-phases
6031 (add-before 'build 'change-directory
6032 (lambda _
6033 (chdir "python")
6034 #t))
6035 (add-before 'build 'set-library-file-name
6036 (lambda* (#:key inputs #:allow-other-keys)
6037 (let ((file (assoc-ref inputs "file")))
6038 (substitute* "magic.py"
6039 (("find_library\\('magic'\\)")
6040 (string-append "'" file "/lib/libmagic.so'")))
6041 #t))))))
6042 (inputs `(("file" ,file)))
6043 (self-native-input? #f)
6044 (synopsis "Python bindings to the libmagic file type guesser")))
6045
6046(define-public python2-file
6047 (package-with-python2 python-file))
85d4aeac
LC
6048
6049(define-public python-debian
6050 (package
6051 (name "python-debian")
6052 (version "0.1.23")
6053 (source
6054 (origin
6055 (method url-fetch)
6056 (uri (string-append
6057 "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
6058 version ".tar.gz"))
6059 (sha256
6060 (base32
6061 "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
6062 (build-system python-build-system)
6063 (inputs
6064 `(("python-six" ,python-six)))
6065 (native-inputs
6066 `(("python-setuptools" ,python-setuptools)))
6067 (home-page "http://packages.debian.org/sid/python-debian")
6068 (synopsis "Debian package related modules")
6069 (description
5c7bdc9a
LC
6070 ;; XXX: Use @enumerate instead of @itemize to work around
6071 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
6072 "This package provides Python modules that abstract many formats of
6073Debian-related files, such as:
6074
5c7bdc9a 6075@enumerate
85d4aeac
LC
6076@item Debtags information;
6077@item @file{debian/changelog} files;
6078@item packages files, pdiffs;
6079@item control files of single or multiple RFC822-style paragraphs---e.g.
6080 @file{debian/control}, @file{.changes}, @file{.dsc};
6081@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
6082 contained files and meta-information.
5c7bdc9a 6083@end enumerate\n")
85d4aeac
LC
6084
6085 ;; Modules are either GPLv2+ or GPLv3+.
6086 (license gpl3+)))
6087
6088(define-public python2-debian
6089 (package-with-python2 python-debian))
816a6538
LC
6090
6091(define-public python-chardet
6092 (package
6093 (name "python-chardet")
6094 (version "2.3.0")
6095 (source
6096 (origin
6097 (method url-fetch)
6098 (uri (string-append
6099 "https://pypi.python.org/packages/source/c/chardet/chardet-"
6100 version
6101 ".tar.gz"))
6102 (sha256
6103 (base32
6104 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
6105 (build-system python-build-system)
6106 (native-inputs
6107 `(("python-setuptools" ,python-setuptools)))
6108 (home-page "https://github.com/chardet/chardet")
6109 (synopsis "Universal encoding detector for Python 2 and 3")
6110 (description
6111 "This package provides @code{chardet}, a Python module that can
6112automatically detect a wide range of file encodings.")
6113 (license lgpl2.1+)))
6114
6115(define-public python2-chardet
6116 (package-with-python2 python-chardet))
2fc5f186 6117
1872f1bb
KM
6118(define-public python-docopt
6119 (package
6120 (name "python-docopt")
6121 (version "0.6.2")
6122 (source
6123 (origin
6124 (method url-fetch)
6125 ;; The release on PyPI does not include tests.
6126 (uri (string-append
6127 "https://github.com/docopt/docopt/archive/"
6128 version ".tar.gz"))
6129 (file-name (string-append name "-" version ".tar.gz"))
6130 (sha256
6131 (base32
6132 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
6133 (build-system python-build-system)
6134 (native-inputs
6135 `(("python-pytest" ,python-pytest)
6136 ("python-setuptools" ,python-setuptools)))
6137 (arguments
6138 `(#:phases (alist-replace
6139 'check
6140 (lambda _ (zero? (system* "py.test")))
6141 %standard-phases)))
6142 (home-page "http://docopt.org")
6143 (synopsis "Command-line interface description language for Python")
6144 (description "This library allows the user to define a command-line
6145interface from a program's help message rather than specifying it
6146programatically with command-line parsers like @code{getopt} and
6147@code{argparse}.")
6148 (license license:expat)))
6149
6150(define-public python2-docopt
6151 (package-with-python2 python-docopt))
6152
2fc5f186
LF
6153(define-public python-zope-event
6154 (package
6155 (name "python-zope-event")
6156 (version "4.1.0")
6157 (source
6158 (origin
6159 (method url-fetch)
6160 (uri (string-append "https://pypi.python.org/packages/source/z"
6161 "/zope.event/zope.event-" version ".tar.gz"))
6162 (sha256
6163 (base32
6164 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
6165 (build-system python-build-system)
6166 (inputs
6167 `(("python-setuptools" ,python-setuptools)))
6168 (home-page "http://pypi.python.org/pypi/zope.event")
6169 (synopsis "Event publishing system for Python")
6170 (description "Zope.event provides an event publishing API, intended for
6171use by applications which are unaware of any subscribers to their events. It
6172is a simple event-dispatching system on which more sophisticated event
6173dispatching systems can be built.")
6174 (license zpl2.1)))
6175
6176(define-public python2-zope-event
6177 (package-with-python2 python-zope-event))
97abe268
LF
6178
6179(define-public python-zope-interface
6180 (package
6181 (name "python-zope-interface")
6182 (version "4.1.3")
6183 (source
6184 (origin
6185 (method url-fetch)
6186 (uri (string-append "https://pypi.python.org/packages/source/z"
6187 "/zope.interface/zope.interface-" version ".tar.gz"))
6188 (sha256
6189 (base32
6190 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
6191 (build-system python-build-system)
6192 (propagated-inputs
6193 `(("python-zope-event" ,python-zope-event)))
6194 (home-page "https://github.com/zopefoundation/zope.interface")
6195 (synopsis "Python implementation of the \"design by contract\"
6196methodology")
6197 (description "Zope.interface provides an implementation of \"object
6198interfaces\" for Python. Interfaces are a mechanism for labeling objects as
6199conforming to a given API or contract.")
6200 (license zpl2.1)))
6201
6202(define-public python2-zope-interface
6203 (package-with-python2 python-zope-interface))
81f2373c
LF
6204
6205(define-public python-zope-exceptions
6206 (package
6207 (name "python-zope-exceptions")
6208 (version "4.0.8")
6209 (source
6210 (origin
6211 (method url-fetch)
6212 (uri (string-append "https://pypi.python.org/packages/source/z"
6213 "/zope.exceptions/zope.exceptions-"
6214 version ".tar.gz"))
6215 (sha256
6216 (base32
6217 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
6218 (build-system python-build-system)
6219 (arguments
6220 '(#:tests? #f)) ; circular dependency with zope.testrunner
6221 (propagated-inputs
6222 `(("python-zope-interface" ,python-zope-interface)))
6223 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
6224 (synopsis "Zope exceptions")
6225 (description "Zope.exceptions provides general-purpose exception types
6226that have uses outside of the Zope framework.")
6227 (license zpl2.1)))
6228
6229(define-public python2-zope-exceptions
6230 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
6231
6232(define-public python-zope-testing
6233 (package
6234 (name "python-zope-testing")
6235 (version "4.5.0")
6236 (source
6237 (origin
6238 (method url-fetch)
6239 (uri (string-append "https://pypi.python.org/packages/source/z"
6240 "/zope.testing/zope.testing-" version ".tar.gz"))
6241 (sha256
6242 (base32
6243 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))))
6244 (build-system python-build-system)
6245 (native-inputs
6246 `(("python-zope-exceptions" ,python-zope-exceptions)))
6247 (propagated-inputs
6248 `(("python-zope-interface" ,python-zope-interface)))
6249 (home-page "http://pypi.python.org/pypi/zope.testing")
6250 (synopsis "Zope testing helpers")
6251 (description "Zope.testing provides a number of testing utilities for HTML
6252forms, HTTP servers, regular expressions, and more.")
6253 (license zpl2.1)))
6254
6255(define-public python2-zope-testing
6256 (package-with-python2 python-zope-testing))
01614c4f
LF
6257
6258(define-public python-zope-testrunner
6259 (package
6260 (name "python-zope-testrunner")
6261 (version "4.4.9")
6262 (source
6263 (origin
6264 (method url-fetch)
6265 (uri (string-append "https://pypi.python.org/packages/source/z"
6266 "/zope.testrunner/zope.testrunner-"
6267 version ".zip"))
6268 (sha256
6269 (base32
6270 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
6271 (build-system python-build-system)
6272 (native-inputs
6273 `(("python-six" ,python-six)
6274 ("python-zope-exceptions" ,python-zope-exceptions)
6275 ("python-zope-testing" ,python-zope-testing)
6276 ("unzip" ,unzip)))
6277 (propagated-inputs
6278 `(("python-zope-interface" ,python-zope-interface)))
6279 (home-page "http://pypi.python.org/pypi/zope.testrunner")
6280 (synopsis "Zope testrunner script")
6281 (description "Zope.testrunner provides a script for running Python
6282tests.")
6283 (license zpl2.1)))
6284
6285(define-public python2-zope-testrunner
6286 (let ((base (package-with-python2 python-zope-testrunner)))
6287 (package
6288 (inherit base)
6289 (native-inputs
6290 (append (package-native-inputs base)
6291 `(("python2-subunit" ,python2-subunit)
6292 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
6293
6294(define-public python-zope-i18nmessageid
6295 (package
6296 (name "python-zope-i18nmessageid")
6297 (version "4.0.3")
6298 (source
6299 (origin
6300 (method url-fetch)
6301 (uri (string-append
6302 "https://pypi.python.org/packages/source/z"
6303 "/zope.i18nmessageid/zope.i18nmessageid-"
6304 version ".tar.gz"))
6305 (sha256
6306 (base32
6307 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
6308 (build-system python-build-system)
6309 (inputs
6310 `(("python-setuptools" ,python-setuptools)))
6311 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
6312 (synopsis "Message identifiers for internationalization")
6313 (description "Zope.i18nmessageid provides facilities for declaring
6314internationalized messages within program source text.")
6315 (license zpl2.1)))
6316
6317(define-public python2-zope-i18nmessageid
6318 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
6319
6320(define-public python-zope-schema
6321 (package
6322 (name "python-zope-schema")
6323 (version "4.4.2")
6324 (source
6325 (origin
6326 (method url-fetch)
6327 (uri (string-append "https://pypi.python.org/packages/source/z"
6328 "/zope.schema/zope.schema-" version ".tar.gz"))
6329 (sha256
6330 (base32
6331 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
6332 (build-system python-build-system)
6333 (propagated-inputs
6334 `(("python-zope-event" ,python-zope-event)
6335 ("python-zope-interface" ,python-zope-interface)))
6336 (native-inputs
6337 `(("python-zope-testing" ,python-zope-testing)))
6338 (home-page "http://pypi.python.org/pypi/zope.schema")
6339 (synopsis "Zope data schemas")
6340 (description "Zope.scheme provides extensions to zope.interface for
6341defining data schemas.")
6342 (license zpl2.1)))
6343
6344(define-public python2-zope-schema
6345 (package-with-python2 python-zope-schema))
fbac9b17
LF
6346
6347(define-public python-zope-configuration
6348 (package
6349 (name "python-zope-configuration")
6350 (version "4.0.3")
6351 (source (origin
6352 (method url-fetch)
6353 (uri (string-append "https://pypi.python.org/packages/source/z"
6354 "/zope.configuration/zope.configuration-"
6355 version ".tar.gz"))
6356 (sha256
6357 (base32
6358 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
6359 (build-system python-build-system)
6360 (propagated-inputs
6361 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6362 ("python-zope-schema" ,python-zope-schema)))
6363 (home-page "http://pypi.python.org/pypi/zope.configuration")
6364 (synopsis "Zope Configuration Markup Language")
6365 (description "Zope.configuration implements ZCML, the Zope Configuration
6366Markup Language.")
6367 (license zpl2.1)))
6368
6369(define-public python2-zope-configuration
6370 (package-with-python2 python-zope-configuration))
2ad52086
LF
6371
6372(define-public python-zope-proxy
6373 (package
6374 (name "python-zope-proxy")
6375 (version "4.1.6")
6376 (source
6377 (origin
6378 (method url-fetch)
6379 (uri (string-append "https://pypi.python.org/packages/source/z"
6380 "/zope.proxy/zope.proxy-" version ".tar.gz"))
6381 (sha256
6382 (base32
6383 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
6384 (build-system python-build-system)
6385 (propagated-inputs
6386 `(("python-zope-interface" ,python-zope-interface)))
6387 (home-page "http://pypi.python.org/pypi/zope.proxy")
6388 (synopsis "Generic, transparent proxies")
6389 (description "Zope.proxy provides generic, transparent proxies for Python.
6390Proxies are special objects which serve as mostly-transparent wrappers around
6391another object, intervening in the apparent behavior of the wrapped object
6392only when necessary to apply the policy (e.g., access checking, location
6393brokering, etc.) for which the proxy is responsible.")
6394 (license zpl2.1)))
6395
6396(define-public python2-zope-proxy
6397 (package-with-python2 python-zope-proxy))
f404b5ea
LF
6398
6399(define-public python-zope-location
6400 (package
6401 (name "python-zope-location")
6402 (version "4.0.3")
6403 (source
6404 (origin
6405 (method url-fetch)
6406 (uri (string-append "https://pypi.python.org/packages/source/z"
6407 "/zope.location/zope.location-" version ".tar.gz"))
6408 (sha256
6409 (base32
6410 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
6411 (build-system python-build-system)
6412 (native-inputs
6413 `(("python-zope-proxy" ,python-zope-proxy)
6414 ("python-zope-schema" ,python-zope-schema)))
6415 (home-page "http://pypi.python.org/pypi/zope.location/")
6416 (synopsis "Zope location library")
6417 (description "Zope.location implements the concept of \"locations\" in
6418Zope3, which are are special objects that have a structural location.")
6419 (license zpl2.1)))
6420
6421(define-public python2-zope-location
6422 (package-with-python2 python-zope-location))
d4b77f36
LF
6423
6424(define-public python-zope-security
6425 (package
6426 (name "python-zope-security")
6427 (version "4.0.3")
6428 (source
6429 (origin
6430 (method url-fetch)
6431 (uri (string-append "https://pypi.python.org/packages/source/z"
6432 "/zope.security/zope.security-" version ".tar.gz"))
6433 (sha256
6434 (base32
6435 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
6436 (build-system python-build-system)
6437 (propagated-inputs
6438 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6439 ("python-zope-component" ,python-zope-component)
6440 ("python-zope-location" ,python-zope-location)
6441 ("python-zope-proxy" ,python-zope-proxy)
6442 ("python-zope-schema" ,python-zope-schema)
6443 ("python-zope-testrunner" ,python-zope-testrunner)
6444 ("python-zope-testing" ,python-zope-testing)))
6445 (home-page "http://pypi.python.org/pypi/zope.security")
6446 (synopsis "Zope security framework")
6447 (description "Zope.security provides a generic mechanism to implement
6448security policies on Python objects.")
6449 (license zpl2.1)))
6450
6451(define-public python2-zope-security
04417662
EF
6452 (let ((zope-security (package-with-python2 python-zope-security)))
6453 (package (inherit zope-security)
6454 (propagated-inputs
6455 `(("python2-zope-testrunner" ,python2-zope-testrunner)
6456 ,@(alist-delete
6457 "python-zope-testrunner"
6458 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
6459
6460(define-public python-zope-component
6461 (package
6462 (name "python-zope-component")
6463 (version "4.2.2")
6464 (source
6465 (origin
6466 (method url-fetch)
6467 (uri (string-append "https://pypi.python.org/packages/source/z"
6468 "/zope.component/zope.component-" version ".tar.gz"))
6469 (sha256
6470 (base32
6471 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
6472 (build-system python-build-system)
6473 (arguments
6474 ;; Skip tests due to circular dependency with python-zope-security.
6475 '(#:tests? #f))
6476 (native-inputs
6477 `(("python-zope-testing" ,python-zope-testing)))
6478 (propagated-inputs
6479 `(("python-zope-event" ,python-zope-event)
6480 ("python-zope-interface" ,python-zope-interface)
6481 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6482 ("python-zope-configuration" ,python-zope-configuration)))
6483 (home-page "https://github.com/zopefoundation/zope.component")
6484 (synopsis "Zope Component Architecture")
6485 (description "Zope.component represents the core of the Zope Component
6486Architecture. Together with the zope.interface package, it provides
6487facilities for defining, registering and looking up components.")
6488 (license zpl2.1)))
6489
6490(define-public python2-zope-component
6491 (package-with-python2 python-zope-component))
3859ac12 6492
b5f218be
LF
6493(define-public python2-pythondialog
6494 (package
6495 (name "python2-pythondialog")
6496 (version "3.3.0")
6497 (source
6498 (origin
6499 (method url-fetch)
6500 (uri (string-append "https://pypi.python.org/packages/source/p/"
6501 "python2-pythondialog/python2-pythondialog-"
6502 version ".tar.gz"))
6503 (sha256
6504 (base32
6505 "1yhkagsh99bfi592ymczf8rnw8rk6n9hdqy3dd98m3yrx8zmjvry"))))
6506 (build-system python-build-system)
6507 (arguments
6508 `(#:phases
6509 (modify-phases %standard-phases
6510 (add-after 'unpack 'patch-path
6511 (lambda* (#:key inputs #:allow-other-keys)
6512 (let* ((dialog (assoc-ref inputs "dialog")))
6513 ;; Since this library really wants to grovel the search path, we
6514 ;; must hardcode dialog's store path into it.
6515 (substitute* "dialog.py"
6516 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
6517 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
6518 #t))))
6519 #:python ,python-2
6520 #:tests? #f)) ; no test suite
6521 (propagated-inputs
6522 `(("dialog" ,dialog)))
6523 (home-page "http://pythondialog.sourceforge.net/")
6524 (synopsis "Python interface to the UNIX dialog utility")
6525 (description "A Python wrapper for the dialog utility. Its purpose is to
6526provide an easy to use, pythonic and comprehensive Python interface to dialog.
6527This allows one to make simple text-mode user interfaces on Unix-like systems")
6528 (license lgpl2.1)))
6529
3859ac12
LF
6530(define-public python-pyrfc3339
6531 (package
6532 (name "python-pyrfc3339")
d9aa097b 6533 (version "1.0")
3859ac12
LF
6534 (source
6535 (origin
6536 (method url-fetch)
d9aa097b 6537 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
6538 (sha256
6539 (base32
d9aa097b 6540 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
6541 (build-system python-build-system)
6542 (propagated-inputs
6543 `(("python-pytz" ,python-pytz)))
6544 (native-inputs
6545 `(("python-nose" ,python-nose)
6546 ("python-setuptools" ,python-setuptools)))
6547 (home-page "https://github.com/kurtraschke/pyRFC3339")
6548 (synopsis "Python timestamp library")
6549 (description "Python library for generating and parsing RFC 3339-compliant
6550timestamps.")
6551 (license license:expat)))
6552
6553(define-public python2-pyrfc3339
6554 (package-with-python2 python-pyrfc3339))
5eea2005
LF
6555
6556(define-public python-werkzeug
6557 (package
6558 (name "python-werkzeug")
6559 (version "0.11.2")
6560 (source
6561 (origin
6562 (method url-fetch)
6563 (uri (string-append "https://pypi.python.org/packages/source/W/Werkzeug"
6564 "/Werkzeug-" version ".tar.gz"))
6565 (file-name (string-append name "-" version ".tar.gz"))
6566 (sha256
6567 (base32
6568 "1gzwn1lkl90f3l1nzzxr7vjhm21qk8f837i8rvny5a209fcrhkzb"))))
6569 (build-system python-build-system)
6570 (native-inputs
6571 `(("python-pytest" ,python-pytest)))
6572 (home-page "http://werkzeug.pocoo.org/")
6573 (synopsis "Utilities for WSGI applications")
6574 (description "One of the most advanced WSGI utility modules. It includes a
6575powerful debugger, full-featured request and response objects, HTTP utilities to
6576handle entity tags, cache control headers, HTTP dates, cookie handling, file
6577uploads, a powerful URL routing system and a bunch of community-contributed
6578addon modules.")
6579 (license x11)))
6580
6581(define-public python2-werkzeug
6582 (package-with-python2 python-werkzeug))
99fffa8a
LF
6583
6584(define-public python-configobj
6585 (package
6586 (name "python-configobj")
6587 (version "5.0.6")
6588 (source (origin
6589 (method url-fetch)
6590 (uri (string-append
6591 "https://pypi.python.org/packages/source/c/configobj/"
6592 "configobj-" version ".tar.gz"))
6593 (sha256
6594 (base32
6595 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
6596 ;; Patch setup.py so it looks for python-setuptools, which is
6597 ;; required to parse the keyword 'install_requires' in setup.py.
6598 (patches (list (search-patch "python-configobj-setuptools.patch")))))
6599 (build-system python-build-system)
6600 (native-inputs
6601 `(("python-setuptools" ,python-setuptools)
6602 ("python-six" ,python-six)))
6603 (synopsis "Config file reading, writing and validation")
6604 (description "ConfigObj is a simple but powerful config file reader and
6605writer: an ini file round tripper. Its main feature is that it is very easy to
6606use, with a straightforward programmer’s interface and a simple syntax for
6607config files.")
6608 (home-page "https://github.com/DiffSK/configobj")
6609 (license bsd-3)))
6610
6611(define-public python2-configobj
6612 (package-with-python2 python-configobj))
79e8a291
LF
6613
6614(define-public python-configargparse
6615 (package
6616 (name "python-configargparse")
6617 (version "0.10.0")
6618 (source (origin
6619 (method url-fetch)
6620 (uri (string-append
6621 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
6622 "ConfigArgParse-" version ".tar.gz"))
6623 (sha256
6624 (base32
6625 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
6626 (build-system python-build-system)
6627 (arguments
6628 ;; FIXME: Bug in test suite filed upstream:
6629 ;; https://github.com/bw2/ConfigArgParse/issues/32
6630 '(#:tests? #f))
6631 (synopsis "Replacement for argparse")
6632 (description "A drop-in replacement for argparse that allows options to also
6633be set via config files and/or environment variables.")
6634 (home-page "https://github.com/bw2/ConfigArgParse")
6635 (license license:expat)))
6636
6637(define-public python2-configargparse
6638 (package-with-python2 python-configargparse))
ab41f979
LF
6639
6640(define-public python-ndg-httpsclient
6641 (package
6642 (name "python-ndg-httpsclient")
6643 (version "0.4.0")
6644 (source (origin
6645 (method url-fetch)
6646 (uri (string-append
6647 "https://pypi.python.org/packages/source/n/ndg-httpsclient/"
6648 "ndg_httpsclient-" version ".tar.gz"))
6649 (sha256
6650 (base32
6651 "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8"))))
6652 (build-system python-build-system)
6653 (propagated-inputs
6654 `(("python-pyopenssl" ,python-pyopenssl)))
6655 (synopsis "HTTPS support for Python's httplib and urllib2")
6656 (description "This is a HTTPS client implementation for httplib and urllib2
6657based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
6658over the default provided with Python and importantly enables full verification
6659of the SSL peer.")
6660 (home-page "https://github.com/cedadev/ndg_httpsclient/")
6661 (license bsd-3)))
6662
6663;; python2-openssl requires special care, so package-with-python2 is
6664;; insufficient.
6665(define-public python2-ndg-httpsclient
6666 (package (inherit python-ndg-httpsclient)
6667 (name "python2-ndg-httpsclient")
6668 (arguments `(#:python ,python-2))
6669 (propagated-inputs
6670 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
6671
6672(define-public python-contextlib2
6673 (package
6674 (name "python-contextlib2")
6675 (version "0.4.0")
6676 (source
6677 (origin
6678 (method url-fetch)
6679 (uri (pypi-uri "contextlib2" version))
6680 (sha256
6681 (base32
6682 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
6683 (build-system python-build-system)
6684 (arguments
6685 `(#:phases
6686 (modify-phases %standard-phases
6687 (replace 'check
6688 (lambda _ (zero?
6689 (system*
6690 "python" "test_contextlib2.py", "-v")))))))
6691 (home-page "http://contextlib2.readthedocs.org/")
6692 (synopsis "Tools for decorators and context managers")
6693 (description "This module is primarily a backport of the Python
66943.2 contextlib to earlier Python versions. Like contextlib, it
6695provides utilities for common tasks involving decorators and context
6696managers. It also contains additional features that are not part of
6697the standard library.")
6698 (license psfl)))
6699
6700(define-public python2-contextlib2
6701 (package-with-python2 python-contextlib2))
210bf497
DT
6702
6703(define-public python-texttable
6704 (package
6705 (name "python-texttable")
6706 (version "0.8.4")
6707 (source
6708 (origin
6709 (method url-fetch)
6710 (uri (pypi-uri "texttable" version))
6711 (sha256
6712 (base32
6713 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
6714 (build-system python-build-system)
6715 (arguments '(#:tests? #f)) ; no tests
6716 (home-page "https://github.com/foutaise/texttable/")
6717 (synopsis "Python module for creating simple ASCII tables")
6718 (description "Texttable is a Python module for creating simple ASCII
6719tables.")
6720 (license lgpl2.1+)))
6721
6722(define-public python2-texttable
6723 (package-with-python2 python-texttable))
67c52bb3
DT
6724
6725(define-public python-websocket-client
6726 (package
6727 (name "python-websocket-client")
6728 (version "0.34.0")
6729 (source
6730 (origin
6731 (method url-fetch)
6732 (uri (string-append "https://pypi.python.org/packages/source/w"
6733 "/websocket-client/websocket_client-"
6734 version ".tar.gz"))
6735 (sha256
6736 (base32
6737 "1prdx6d49f1cff17kzj15bnz09palfdgc1m5dkq9jd4mr90n4ak8"))))
6738 (build-system python-build-system)
6739 (native-inputs
6740 `(("python-six" ,python-six))) ; for tests
6741 (inputs
6742 `(("python-setuptools" ,python-setuptools)))
6743 (home-page "https://github.com/liris/websocket-client")
6744 (synopsis "WebSocket client for Python")
6745 (description "The Websocket-client module provides the low level APIs for
6746WebSocket usage in Python programs.")
6747 (license lgpl2.1+)))
6748
6749(define-public python2-websocket-client
6750 (package-with-python2 python-websocket-client))
5c6eea2a
LF
6751
6752(define-public python-atomicwrites
6753 (package
6754 (name "python-atomicwrites")
6755 (version "0.1.8")
6756 (source (origin
6757 (method url-fetch)
6758 (uri (pypi-uri "atomicwrites" version))
6759 (sha256
6760 (base32
6761 "13nwk0gw0yb61pnf5vxs3fvhav6q3zrf08x9ggc93bnk5fsssx1j"))))
6762 (build-system python-build-system)
6763 (synopsis "Atomic file writes in Python")
6764 (description "Library for atomic file writes using platform dependent tools
6765for atomic filesystem operations.")
6766 (home-page "https://github.com/untitaker/python-atomicwrites")
6767 (license license:expat)))
561bb3cb
LF
6768
6769(define-public python-requests-toolbelt
6770 (package
6771 (name "python-requests-toolbelt")
6772 (version "0.5.0")
6773 (source (origin
6774 (method url-fetch)
6775 (uri (pypi-uri "requests-toolbelt" version))
6776 (sha256
6777 (base32
6778 "1kbms1s52dhb98vbpaprr15b0ijdbqp500lpfsyjccpd8cjkyngk"))))
6779 (build-system python-build-system)
6780 (propagated-inputs
6781 `(("python-requests" ,python-requests)))
6782 (synopsis "Extensions to python-requests")
6783 (description "This is a toolbelt of useful classes and functions to be used
6784with python-requests.")
6785 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
6786 (license asl2.0)))
d1deb90b
LF
6787
6788(define-public python-click-threading
6789 (package
6790 (name "python-click-threading")
6791 (version "0.1.2")
6792 (source (origin
6793 (method url-fetch)
6794 (uri (pypi-uri "click-threading" version))
6795 (sha256
6796 (base32
6797 "0jmrv4334lfxa2ss53c06dafdwqbk1pb3ihd26izn5igw1bm8145"))))
6798 (build-system python-build-system)
6799 (propagated-inputs
6800 `(("python-click" ,python-click)))
6801 (synopsis "Utilities for multithreading in Click")
6802 (description "This package provides utilities for multithreading in Click
6803applications.")
6804 (home-page "https://github.com/click-contrib/click-threading")
6805 (license license:expat)))
7b17cab9
LF
6806
6807(define-public python-click-log
6808 (package
6809 (name "python-click-log")
6810 (version "0.1.1")
6811 (source (origin
6812 (method url-fetch)
6813 (uri (pypi-uri "click-log" version))
6814 (sha256
6815 (base32
6816 "1z3jdwjmwax159zrnyx830xa968rfqrpkm04ad5xqyh0269ydiqb"))))
6817 (build-system python-build-system)
6818 (propagated-inputs
6819 `(("python-click" ,python-click)))
6820 (synopsis "Logging for click applications")
6821 (description "This package provides a Python library for logging Click
6822applications.")
6823 (home-page "https://github.com/click-contrib/click-log")
6824 (license license:expat)))
7b3a4ee4
LF
6825
6826(define-public python-apipkg
6827 (package
6828 (name "python-apipkg")
6829 (version "1.4")
6830 (source (origin
6831 (method url-fetch)
6832 (uri (pypi-uri "apipkg" version))
6833 (sha256
6834 (base32
6835 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
6836 (build-system python-build-system)
6837 (native-inputs
6838 `(("unzip" ,unzip)))
6839 (propagated-inputs
6840 `(("python-pytest" ,python-pytest)))
6841 (synopsis "Namespace control and lazy-import mechanism")
6842 (description "With apipkg you can control the exported namespace of a Python
6843package and greatly reduce the number of imports for your users. It is a small
6844pure Python module that works on virtually all Python versions.")
6845 (home-page "https://bitbucket.org/hpk42/apipkg")
6846 (license license:expat)))
848964fe
LF
6847
6848(define-public python-execnet
6849 (package
6850 (name "python-execnet")
6851 (version "1.4.1")
6852 (source (origin
6853 (method url-fetch)
6854 (uri (pypi-uri "execnet" version))
6855 (sha256
6856 (base32
6857 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
6858 (build-system python-build-system)
6859 (native-inputs
6860 `(("python-setuptools-scm" ,python-setuptools-scm)))
6861 (propagated-inputs
6862 `(("python-apipkg" ,python-apipkg)))
6863 (synopsis "Rapid multi-Python deployment")
6864 (description "Execnet provides a share-nothing model with
6865channel-send/receive communication for distributing execution across many
6866Python interpreters across version, platform and network barriers. It has a
6867minimal and fast API targetting the following uses:
6868@enumerate
6869@item distribute tasks to (many) local or remote CPUs
6870@item write and deploy hybrid multi-process applications
6871@item write scripts to administer multiple environments
6872@end enumerate")
6873 (home-page "http://codespeak.net/execnet/")
6874 (license license:expat)))
6720dbb4
LF
6875
6876;;; The software provided by this package was integrated into pytest 2.8.
6877(define-public python-pytest-cache
6878 (package
6879 (name "python-pytest-cache")
6880 (version "1.0")
6881 (source (origin
6882 (method url-fetch)
6883 (uri (pypi-uri "pytest-cache" version))
6884 (sha256
6885 (base32
6886 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
6887 (build-system python-build-system)
6888 (propagated-inputs
6889 `(("python-execnet" ,python-execnet)))
6890 (synopsis "Py.test plugin with mechanisms for caching across test runs")
6891 (description "The pytest-cache plugin provides tools to rerun failures from
6892the last py.test invocation.")
6893 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
6894 (license license:expat)))
d7e729fe
LF
6895
6896(define-public python-pytest-localserver
6897 (package
6898 (name "python-pytest-localserver")
6899 (version "0.3.4")
6900 (source (origin
6901 (method url-fetch)
6902 (uri (pypi-uri "pytest-localserver" version ".zip"))
6903 (sha256
6904 (base32
6905 "050q505a7gnsz7vqidw0w5dvxjb2flzi7z734agpjzmsl85c2bcx"))))
6906 (build-system python-build-system)
6907 (arguments
6908 `(#:phases (modify-phases %standard-phases
6909 (replace 'check
6910 (lambda _
6911 (zero? (system* "py.test" "--genscript=runtests.py"))
6912 (zero? (system* "py.test")))))))
6913 (native-inputs
6914 `(("unzip" ,unzip)))
6915 (propagated-inputs
6916 `(("python-pytest" ,python-pytest)
6917 ("python-requests" ,python-requests)
6918 ("python-six" ,python-six)
6919 ("python-werkzeug" ,python-werkzeug)))
6920 (synopsis "Py.test plugin to test server connections locally")
6921 (description "Pytest-localserver is a plugin for the pytest testing
6922framework which enables you to test server connections locally.")
6923 (home-page "https://pypi.python.org/pypi/pytest-localserver")
6924 (license license:expat)))
28cecbb7
LF
6925
6926(define-public python-wsgi-intercept
6927 (package
6928 (name "python-wsgi-intercept")
6929 (version "0.10.3")
6930 (source (origin
6931 (method url-fetch)
6932 (uri (pypi-uri "wsgi_intercept" version))
6933 (sha256
6934 (base32
6935 "0xyfchacywb1mql84270mcidsqc5ssyspd18yacjk82x2xc68h0r"))))
6936 (build-system python-build-system)
6937 (native-inputs
6938 `(("python-pytest" ,python-pytest)))
6939 (propagated-inputs
6940 `(("python-httplib2" ,python-httplib2)
6941 ("python-requests" ,python-requests)))
6942 (synopsis "Puts a WSGI application in place of a real URI for testing")
6943 (description "Wsgi_intercept installs a WSGI application in place of a real
6944URI for testing. Testing a WSGI application normally involves starting a
6945server at a local host and port, then pointing your test code to that address.
6946Instead, this library lets you intercept calls to any specific host/port
6947combination and redirect them into a WSGI application importable by your test
6948program. Thus, you can avoid spawning multiple processes or threads to test
6949your Web app.")
6950 (home-page "https://github.com/cdent/wsgi-intercept")
6951 (license license:expat)))
89b8a551
LF
6952
6953(define-public python-pytest-xprocess
6954 (package
6955 (name "python-pytest-xprocess")
6956 (version "0.9.1")
6957 (source (origin
6958 (method url-fetch)
6959 (uri (pypi-uri "pytest-xprocess" version))
6960 (sha256
6961 (base32
6962 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
6963 (build-system python-build-system)
6964 (propagated-inputs
6965 `(("python-pytest" ,python-pytest)
6966 ("python-pytest-cache" ,python-pytest-cache)
6967 ("python-psutil" ,python-psutil)))
6968 (synopsis "Pytest plugin to manage external processes across test runs")
6969 (description "Pytest-xprocess is an experimental py.test plugin for managing
6970processes across test runs.")
6971 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
6972 (license license:expat)))
5c299bf0
LF
6973
6974(define-public python-icalendar
6975 (package
6976 (name "python-icalendar")
6977 (version "3.9.1")
6978 (source (origin
6979 (method url-fetch)
6980 (uri (pypi-uri "icalendar" version))
6981 (sha256
6982 (base32
6983 "0fhrczdj3jxy5bvswphp3vys7vwv5c9bpwg7asykqwa3z6253q6q"))))
6984 (build-system python-build-system)
6985 (propagated-inputs
6986 `(("python-dateutil-2" ,python-dateutil-2)
6987 ("python-pytz" ,python-pytz)))
6988 (synopsis "Python library for parsing iCalendar files")
6989 (description "The icalendar package is a parser/generator of iCalendar
6990files for use with Python.")
6991 (home-page "https://github.com/collective/icalendar")
6992 (license bsd-2)))
6bbbb53e
LF
6993
6994(define-public python-sphinxcontrib-newsfeed
6995 (package
6996 (name "python-sphinxcontrib-newsfeed")
6997 (version "0.1.4")
6998 (source (origin
6999 (method url-fetch)
7000 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
7001 (sha256
7002 (base32
7003 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
7004 (build-system python-build-system)
7005 (propagated-inputs
7006 `(("python-docutils" ,python-docutils)
7007 ("python-sphinx" ,python-sphinx)))
7008 (synopsis "News Feed extension for Sphinx")
7009 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
7010Blog, News or Announcements section to a Sphinx website.")
7011 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
7012 (license bsd-2)))
2216e15c
SB
7013
7014(define-public python-args
7015 (package
7016 (name "python-args")
7017 (version "0.1.0")
7018 (source (origin
7019 (method url-fetch)
7020 (uri (pypi-uri "args" version))
7021 (sha256
7022 (base32
7023 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
7024 (build-system python-build-system)
7025 (inputs
7026 `(("python-setuptools" ,python-setuptools)))
7027 (home-page "https://github.com/kennethreitz/args")
7028 (synopsis "Command-line argument parser")
7029 (description
7030 "This library provides a Python module to parse command-line arguments.")
7031 (license bsd-3)))
7032
7033(define-public python2-args
7034 (package-with-python2 python-args))
c06a3de9
SB
7035
7036(define-public python-clint
7037 (package
7038 (name "python-clint")
7039 (version "0.5.1")
7040 (source (origin
7041 (method url-fetch)
7042 (uri (pypi-uri "clint" version))
7043 (sha256
7044 (base32
7045 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
7046 (build-system python-build-system)
7047 (inputs
7048 `(("python-args" ,python-args)
7049 ("python-setuptools" ,python-setuptools)))
7050 (home-page "https://github.com/kennethreitz/clint")
7051 (synopsis "Command-line interface tools")
7052 (description
7053 "Clint is a Python module filled with a set of tools for developing
7054command-line applications, including tools for colored and indented
7055output, progress bar display, and pipes.")
7056 (license isc)))
7057
7058(define-public python2-clint
7059 (package-with-python2 python-clint))
4ecdeef8
SB
7060
7061(define-public python-astor
7062 (package
7063 (name "python-astor")
7064 (version "0.5")
7065 (source (origin
7066 (method url-fetch)
7067 (uri (pypi-uri "astor" version))
7068 (sha256
7069 (base32
7070 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
7071 (build-system python-build-system)
7072 (inputs
7073 `(("python-setuptools" ,python-setuptools)))
7074 (home-page "https://github.com/berkerpeksag/astor")
7075 (synopsis "Read and write Python ASTs")
7076 (description
7077 "Astor is designed to allow easy manipulation of Python source via the
7078Abstract Syntax Tree.")
7079 (license bsd-3)))
7080
7081(define-public python2-astor
7082 (package-with-python2 python-astor))
e224b7d0
SB
7083
7084(define-public python-rply
7085 (package
7086 (name "python-rply")
7087 (version "0.7.4")
7088 (source (origin
7089 (method url-fetch)
7090 (uri (pypi-uri "rply" version))
7091 (sha256
7092 (base32
7093 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
7094 (build-system python-build-system)
7095 (inputs
7096 `(("python-appdirs" ,python-appdirs)
7097 ("python-setuptools" ,python-setuptools)))
7098 (home-page "https://github.com/alex/rply")
7099 (synopsis "Parser generator for Python")
7100 (description
7101 "This package provides a pure Python based parser generator, that also
7102works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
7103with a new public API, and RPython support.")
7104 (license bsd-3)))
7105
7106(define-public python2-rply
7107 (package-with-python2 python-rply))
c3e919d7
SB
7108
7109(define-public python-hy
7110 (package
7111 (name "python-hy")
7112 (version "0.11.1")
7113 (source (origin
7114 (method url-fetch)
7115 (uri (pypi-uri "hy" version))
7116 (sha256
7117 (base32
7118 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
7119 (build-system python-build-system)
7120 (inputs
7121 `(("python-astor" ,python-astor)
7122 ("python-clint" ,python-clint)
7123 ("python-rply" ,python-rply)
7124 ("python-setuptools" ,python-setuptools)))
7125 (home-page "http://hylang.org/")
7126 (synopsis "Lisp frontend to Python")
7127 (description
7128 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
7129its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
7130Python at your fingertips, in Lisp form.")
7131 (license license:expat)))
7132
7133(define-public python2-hy
7134 (package-with-python2 python-hy))
7a5b944e 7135
81f7f297
EF
7136(define-public python-rauth
7137 (package
7138 (name "python-rauth")
7139 (version "0.7.2")
7140 (source
7141 (origin
7142 (method url-fetch)
7143 (uri (pypi-uri "rauth" version))
7144 (sha256
7145 (base32
7146 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
7147 (build-system python-build-system)
7148 (arguments
7149 `(#:test-target "check"))
7150 (native-inputs
7151 `(("python-setuptools" ,python-setuptools)))
7152 (propagated-inputs
7153 `(("python-requests" ,python-requests)))
7154 (home-page "https://github.com/litl/rauth")
7155 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
7156 (description
7157 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
7158provides service wrappers for convenient connection initialization and
7159authenticated session objects providing things like keep-alive.")
7160 (license license:expat)))
7161
7162(define-public python2-rauth
7163 (let ((rauth (package-with-python2 python-rauth)))
7164 (package (inherit rauth)
264ae686 7165 (propagated-inputs `(("python2-requests" ,python2-requests)))
81f7f297
EF
7166 (native-inputs
7167 `(("python2-unittest2", python2-unittest2)
7168 ,@(package-native-inputs rauth))))))
7169
1abe448d
EF
7170(define-public python2-functools32
7171 (package
7172 (name "python2-functools32")
7173 (version "3.2.3-2")
7174 (source
7175 (origin
7176 (method url-fetch)
7177 (uri (pypi-uri "functools32" version))
7178 (sha256
7179 (base32
7180 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
7181 (build-system python-build-system)
7182 (arguments
7183 `(#:python ,python-2
7184 #:tests? #f)) ; no test target
7185 (native-inputs
7186 `(("python2-setuptools" ,python2-setuptools)))
7187 (home-page "https://github.com/MiCHiLU/python-functools32")
7188 (synopsis
7189 "Backport of the functools module from Python 3.2.3")
7190 (description
7191 "This package is a backport of the @code{functools} module from Python
71923.2.3 for use with older versions of Python and PyPy.")
7193 (license license:expat)))
7194
7a5b944e
EF
7195(define-public python-futures
7196 (package
7197 (name "python-futures")
7198 (version "3.0.3")
7199 (source
7200 (origin
7201 (method url-fetch)
7202 (uri (pypi-uri "futures" version))
7203 (sha256
7204 (base32
7205 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
7206 (build-system python-build-system)
7207 (native-inputs
7208 `(("python-setuptools" ,python-setuptools)))
7209 (home-page "https://github.com/agronholm/pythonfutures")
7210 (synopsis
7211 "Backport of the concurrent.futures package from Python 3.2")
7212 (description
7213 "The concurrent.futures module provides a high-level interface for
7214asynchronously executing callables. This package backports the
7215concurrent.futures package from Python 3.2")
7216 (license bsd-3)))
7217
7218(define-public python2-futures
7219 (package-with-python2 python-futures))
c18f6368
EF
7220
7221(define-public python-urllib3
7222 (package
7223 (name "python-urllib3")
7224 (version "1.13.1")
7225 (source
7226 (origin
7227 (method url-fetch)
7228 (uri (pypi-uri "urllib3" version))
7229 (sha256
7230 (base32
7231 "10rrbr6c6k7j5dvfsyj4b2gsgxg9gggnn708qixf6ll57xqivfkf"))))
7232 (build-system python-build-system)
7233 (arguments `(#:tests? #f))
7234 (native-inputs
7235 `(("python-setuptools" ,python-setuptools)
7236 ;; some packages for tests
7237 ("python-nose" ,python-nose)
7238 ("python-mock" ,python-mock)
7239 ("python-tornado" ,python-tornado)))
7240 (propagated-inputs
7241 `(;; packages for https security
7242 ("python-certifi" ,python-certifi)
7243 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
7244 ("python-pyasn1" ,python-pyasn1)
7245 ("python-pyopenssl" ,python-pyopenssl)))
7246 (home-page "http://urllib3.readthedocs.org/")
7247 (synopsis "HTTP library with thread-safe connection pooling")
7248 (description
7249 "Urllib3 supports features left out of urllib and urllib2 libraries. It
7250can reuse the same socket connection for multiple requests, it can POST files,
7251supports url redirection and retries, and also gzip and deflate decoding.")
7252 (license license:expat)))
7253
7254(define-public python2-urllib3
7255 (package-with-python2 python-urllib3))
2b2f2fc1
DT
7256
7257(define-public python-colorama
7258 (package
7259 (name "python-colorama")
7260 (version "0.3.3")
7261 (source
7262 (origin
7263 (method url-fetch)
7264 (uri (pypi-uri "colorama" version))
7265 (sha256
7266 (base32
7267 "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
7268 (build-system python-build-system)
7269 (inputs
7270 `(("python-setuptools" ,python-setuptools)))
7271 (synopsis "colored terminal text rendering for Python")
7272 (description "Colorama is a Python library for rendering colored terminal
7273text.")
7274 (home-page "https://pypi.python.org/pypi/colorama")
7275 (license bsd-3)))
7276
7277(define-public python2-colorama
7278 (package-with-python2 python-colorama))
f5bcec6e
DT
7279
7280(define-public python-rsa
7281 (package
7282 (name "python-rsa")
7283 (version "3.2")
7284 (source
7285 (origin
7286 (method url-fetch)
7287 (uri (pypi-uri "rsa" version))
7288 (sha256
7289 (base32
7290 "0xwp929g7lvb1sghxfpqlxvgg96qcwqdbhh27sjplx30n3xp3wrh"))))
7291 (build-system python-build-system)
7292 (inputs
7293 `(("python-pyasn1" ,python-pyasn1)
7294 ("python-setuptools" ,python-setuptools)))
7295 (synopsis "Pure-Python RSA implementation")
7296 (description "Python-RSA is a pure-Python RSA implementation. It supports
7297encryption and decryption, signing and verifying signatures, and key
7298generation according to PKCS#1 version 1.5. It can be used as a Python
7299library as well as on the command line.")
7300 (home-page "http://stuvel.eu/rsa")
7301 (license asl2.0)))
7302
7303(define-public python2-rsa
7304 (package-with-python2 python-rsa))
c0aacfa5
DT
7305
7306(define-public python-pluggy
7307 (package
7308 (name "python-pluggy")
7309 (version "0.3.1")
7310 (source
7311 (origin
7312 (method url-fetch)
7313 (uri (pypi-uri "pluggy" version))
7314 (sha256
7315 (base32
7316 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
7317 (build-system python-build-system)
7318 (inputs
7319 `(("python-setuptools" ,python-setuptools)))
7320 (synopsis "Plugin and hook calling mechanism for Python")
7321 (description "Pluggy is an extraction of the plugin manager as used by
7322Pytest but stripped of Pytest specific details.")
7323 (home-page "https://pypi.python.org/pypi/pluggy")
7324 (license license:expat)))
7325
7326(define-public python2-pluggy
7327 (package-with-python2 python-pluggy))
a4af21ca
DT
7328
7329(define-public python-tox
7330 (package
7331 (name "python-tox")
7332 (version "2.3.1")
7333 (source
7334 (origin
7335 (method url-fetch)
7336 (uri (pypi-uri "tox" version))
7337 (sha256
7338 (base32
7339 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
7340 (build-system python-build-system)
7341 (arguments
7342 ;; FIXME: Tests require a newer version of pytest, but upgrading our
7343 ;; pytest breaks other packages.
7344 '(#:tests? #f))
7345 (inputs
7346 `(("python-setuptools" ,python-setuptools)
7347 ("python-pluggy" ,python-pluggy)
7348 ("python-py" ,python-py)
7349 ("python-virtualenv" ,python-virtualenv)
7350 ("python-pytest" ,python-pytest)))
7351 (home-page "http://tox.testrun.org/")
7352 (synopsis "Virtualenv-based automation of test activities")
7353 (description "Tox is a generic virtualenv management and test command line
7354tool. It can be used to check that a package installs correctly with
7355different Python versions and interpreters, or run tests in each type of
7356supported environment, or act as a frontend to continuous integration
7357servers.")
7358 (license license:expat)))
7359
7360(define-public python2-tox
7361 (package-with-python2 python-tox))
ba9da248
DT
7362
7363(define-public python-jmespath
7364 (package
7365 (name "python-jmespath")
7366 (version "0.9.0")
7367 (source
7368 (origin
7369 (method url-fetch)
7370 (uri (pypi-uri "jmespath" version))
7371 (sha256
7372 (base32
7373 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
7374 (build-system python-build-system)
7375 (inputs
7376 `(("python-setuptools" ,python-setuptools)))
7377 (synopsis "JSON Matching Expressions")
7378 (description "JMESPath (pronounced “james path”) is a Python library that
7379allows one to declaratively specify how to extract elements from a JSON
7380document.")
7381 (home-page "https://github.com/jmespath/jmespath.py")
7382 (license license:expat)))
7383
7384(define-public python2-jmespath
7385 (package-with-python2 python-jmespath))
935fcd5c
DT
7386
7387(define-public python-botocore
7388 (package
7389 (name "python-botocore")
7390 (version "1.3.17")
7391 (source
7392 (origin
7393 (method url-fetch)
7394 (uri (pypi-uri "botocore" version))
7395 (sha256
7396 (base32
7397 "08vpvdixx1c1lfv6vzjig68bpiir7wfyhzf49ysxgvhbprg5ra0w"))))
7398 (build-system python-build-system)
7399 (inputs
7400 `(("python-dateutil" ,python-dateutil-2)
7401 ("python-docutils" ,python-docutils)
7402 ("python-mock" ,python-mock)
7403 ("python-nose" ,python-nose)
7404 ("python-setuptools" ,python-setuptools)
7405 ("python-tox" ,python-tox)
7406 ("python-wheel" ,python-wheel)
7407 ("python-jmespath" ,python-jmespath)))
7408 (home-page "https://github.com/boto/botocore")
7409 (synopsis "Low-level interface to AWS")
7410 (description "Botocore is a Python library that provides a low-level
7411interface to the Amazon Web Services (AWS) API.")
7412 (license asl2.0)))
7413
7414(define-public python2-botocore
7415 (package-with-python2 python-botocore))
f861b8b8
DT
7416
7417(define-public awscli
7418 (package
7419 (name "awscli")
7420 (version "1.9.17")
7421 (source
7422 (origin
7423 (method url-fetch)
7424 (uri (string-append
7425 "https://pypi.python.org/packages/source/a/awscli/awscli-"
7426 version ".tar.gz"))
7427 (sha256
7428 (base32
7429 "1nj7jqvlpq57hfhby1njsbf8303gapa3njc4dramr6p3ffzvfi2i"))))
7430 (build-system python-build-system)
7431 (inputs
7432 `(("python-colorama" ,python-colorama)
7433 ("python-docutils" ,python-docutils)
7434 ("python-mock" ,python-mock)
7435 ("python-nose" ,python-nose)
7436 ("python-rsa" ,python-rsa)
7437 ("python-setuptools" ,python-setuptools)
7438 ("python-sphinx" ,python-sphinx)
7439 ("python-tox" ,python-tox)
7440 ("python-wheel" ,python-wheel)
7441 ("python-botocore" ,python-botocore)))
7442 (home-page "http://aws.amazon.com/cli/")
7443 (synopsis "Command line client for AWS")
7444 (description "AWS CLI provides a unified command line interface to the
7445Amazon Web Services (AWS) API.")
7446 (license asl2.0)))
6a44697d
LF
7447
7448(define-public python-hypothesis
7449 (package
7450 (name "python-hypothesis")
7451 (version "2.0.0")
7452 (source (origin
7453 (method url-fetch)
7454 (uri (pypi-uri "hypothesis" version))
7455 (sha256
7456 (base32
7457 "1la6mfpvcn640gs2v35iv8b4sh6xdhp9j5ghay0jd86c9n4fkgxr"))))
7458 (build-system python-build-system)
7459 (native-inputs
7460 `(;; setuptools required for python-2 variant
7461 ("python-setuptools" ,python-setuptools)))
7462 (propagated-inputs
7463 `(("python-flake8" ,python-flake8)
7464 ("python-pytest" ,python-pytest)))
7465 (synopsis "Library for property based testing")
7466 (description "Hypothesis is a library for testing your Python code against a
7467much larger range of examples than you would ever want to write by hand. It’s
7468based on the Haskell library, Quickcheck, and is designed to integrate
7469seamlessly into your existing Python unit testing work flow.")
7470 (home-page "https://github.com/DRMacIver/hypothesis")
7471 (license mpl2.0)))
7472
7473(define-public python2-hypothesis
7474 (package-with-python2 python-hypothesis))
7517e73c
LF
7475
7476(define-public python-pytest-subtesthack
7477 (package
7478 (name "python-pytest-subtesthack")
7479 (version "0.1.1")
7480 (source (origin
7481 (method url-fetch)
7482 (uri (pypi-uri "pytest-subtesthack" version))
7483 (sha256
7484 (base32
7485 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
7486 (build-system python-build-system)
7487 (native-inputs
7488 `(;; setuptools required for python-2 variant
7489 ("python-setuptools" ,python-setuptools)))
7490 (propagated-inputs
7491 `(("python-pytest" ,python-pytest)))
7492 (synopsis "Set-up and tear-down fixtures for unit tests")
7493 (description "This plugin allows you to set up and tear down fixtures within
7494unit test functions that use @code{py.test}. This is useful for using
7495@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
7496function multiple times, without setting up or tearing down fixture state as is
7497normally the case.")
7498 (home-page "https://github.com/untitaker/pytest-subtesthack/")
7499 (license unlicense)))
7500
7501(define-public python2-pytest-subtesthack
7502 (package-with-python2 python-pytest-subtesthack))