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