gnu: python-ccm: Update to 2.1.6.
[jackhill/guix/guix.git] / gnu / packages / python.scm
CommitLineData
a01b6da7
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
48b311b1 3;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
8e451885 4;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
e99f4211 5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
a480bc41 6;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
da6ce3f1 7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
e99f4211 8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
d95a56c6 9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
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>
daeeea71 19;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
b31fbea5 20;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
a01b6da7
NK
21;;;
22;;; This file is part of GNU Guix.
23;;;
24;;; GNU Guix is free software; you can redistribute it and/or modify it
25;;; under the terms of the GNU General Public License as published by
26;;; the Free Software Foundation; either version 3 of the License, or (at
27;;; your option) any later version.
28;;;
29;;; GNU Guix is distributed in the hope that it will be useful, but
30;;; WITHOUT ANY WARRANTY; without even the implied warranty of
31;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32;;; GNU General Public License for more details.
33;;;
34;;; You should have received a copy of the GNU General Public License
35;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
36
1ffa7090 37(define-module (gnu packages python)
011b18c3 38 #:use-module ((guix licenses)
45203542 39 #:select (asl2.0 bsd-4 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style
b8050e71 40 gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ agpl3+
548d7165 41 isc mpl2.0 psfl public-domain repoze unlicense x11-style
7517e73c 42 zpl2.1))
bd3fa666 43 #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
3fdc99da 44 #:use-module (gnu packages)
8e451885 45 #:use-module (gnu packages algebra)
89b2e0b0 46 #:use-module (gnu packages attr)
d96034ed 47 #:use-module (gnu packages backup)
1ffa7090 48 #:use-module (gnu packages compression)
4ed20663 49 #:use-module (gnu packages databases)
5e1c9367 50 #:use-module (gnu packages file)
4ed20663 51 #:use-module (gnu packages fontutils)
4ed20663
AE
52 #:use-module (gnu packages gcc)
53 #:use-module (gnu packages ghostscript)
54 #:use-module (gnu packages glib)
55 #:use-module (gnu packages gtk)
421a80a2 56 #:use-module (gnu packages icu4c)
c937562e 57 #:use-module (gnu packages image)
4ed20663 58 #:use-module (gnu packages imagemagick)
b10ab723 59 #:use-module (gnu packages libffi)
89b2e0b0 60 #:use-module (gnu packages linux)
0da98533 61 #:use-module (gnu packages maths)
4ed20663 62 #:use-module (gnu packages multiprecision)
45203542 63 #:use-module (gnu packages networking)
be7134bf 64 #:use-module (gnu packages ncurses)
c9b1b4f9 65 #:use-module (gnu packages pcre)
4ed20663 66 #:use-module (gnu packages perl)
b10ab723 67 #:use-module (gnu packages pkg-config)
4ed20663 68 #:use-module (gnu packages readline)
c9b1b4f9 69 #:use-module (gnu packages statistics)
1c65314c
FB
70 #:use-module (gnu packages texlive)
71 #:use-module (gnu packages texinfo)
cc2b77df 72 #:use-module (gnu packages tls)
e25f0174 73 #:use-module (gnu packages version-control)
8d12be1e 74 #:use-module (gnu packages web)
ce0614dd 75 #:use-module (gnu packages base)
26b307e2 76 #:use-module (gnu packages xml)
6fa14469 77 #:use-module (gnu packages xorg)
0bdc1671 78 #:use-module (gnu packages xdisorg)
4ed20663 79 #:use-module (gnu packages zip)
afa181ff 80 #:use-module (gnu packages tcl)
a01b6da7
NK
81 #:use-module (guix packages)
82 #:use-module (guix download)
ea5456c8 83 #:use-module (guix git-download)
11bb85a1 84 #:use-module (guix utils)
acc26ff1 85 #:use-module (guix build-system gnu)
d8c4998f 86 #:use-module (guix build-system cmake)
898238b9 87 #:use-module (guix build-system python)
1c65314c
FB
88 #:use-module (guix build-system trivial)
89 #:use-module (srfi srfi-1))
a01b6da7 90
b24d1cfc 91(define-public python-2
a01b6da7
NK
92 (package
93 (name "python")
ff6f33cf 94 (version "2.7.10")
a01b6da7
NK
95 (source
96 (origin
97 (method url-fetch)
9b43a0ff 98 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
99 version "/Python-" version ".tar.xz"))
100 (sha256
101 (base32
6a20289d 102 "1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw"))
dedc8320
LC
103 (patches (map search-patch
104 '("python-2.7-search-paths.patch"
9820a6d4 105 "python-2-deterministic-build-info.patch"
dedc8320 106 "python-2.7-source-date-epoch.patch")))))
02f0c3b2
LC
107 (outputs '("out"
108 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 109 (build-system gnu-build-system)
3fdc99da 110 (arguments
af807dea 111 `(#:tests? #f
ff6f33cf
ED
112 ;; 268 tests OK.
113 ;; 103 tests failed:
114 ;; test_distutils test_shutil test_signal test_site test_slice
115 ;; test_smtplib test_smtpnet test_socket test_socketserver
116 ;; test_softspace test_sort test_spwd test_sqlite test_ssl
117 ;; test_startfile test_stat test_str test_strftime test_string
118 ;; test_stringprep test_strop test_strptime test_strtod test_struct
119 ;; test_structmembers test_structseq test_subprocess test_sunau
120 ;; test_sunaudiodev test_sundry test_symtable test_syntax test_sys
121 ;; test_sys_setprofile test_sys_settrace test_sysconfig test_tarfile
122 ;; test_tcl test_telnetlib test_tempfile test_textwrap test_thread
123 ;; test_threaded_import test_threadedtempfile test_threading
124 ;; test_threading_local test_threadsignals test_time test_timeit
125 ;; test_timeout test_tk test_tokenize test_tools test_trace
126 ;; test_traceback test_transformer test_ttk_guionly test_ttk_textonly
127 ;; test_tuple test_typechecks test_ucn test_unary
128 ;; test_undocumented_details test_unicode test_unicode_file
129 ;; test_unicodedata test_univnewlines test_univnewlines2k test_unpack
130 ;; test_urllib test_urllib2 test_urllib2_localnet test_urllib2net
131 ;; test_urllibnet test_urlparse test_userdict test_userlist
132 ;; test_userstring test_uu test_uuid test_wait3 test_wait4
133 ;; test_warnings test_wave test_weakref test_weakset test_whichdb
134 ;; test_winreg test_winsound test_with test_wsgiref test_xdrlib
135 ;; test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc
136 ;; test_xpickle test_xrange test_zipfile test_zipfile64
137 ;; test_zipimport test_zipimport_support test_zlib
138 ;; 30 tests skipped:
139 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
140 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
141 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_crypt
142 ;; test_curses test_dl test_gdb test_gl test_idle test_imageop
143 ;; test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos
144 ;; test_macostools test_msilib test_nis test_ossaudiodev
145 ;; test_scriptpackages
146 ;; 6 skips unexpected on linux2:
147 ;; test_bsddb test_bsddb3 test_crypt test_gdb test_idle test_ioctl
148 ;; One of the typical errors:
149 ;; test_unicode
150 ;; test test_unicode crashed -- <type 'exceptions.OSError'>: [Errno 2] No
151 ;; such file or directory
af807dea 152 #:test-target "test"
3fdc99da 153 #:configure-flags
6a20289d
LC
154 (list "--enable-shared" ;allow embedding
155 "--with-system-ffi" ;build ctypes
156 (string-append "LDFLAGS=-Wl,-rpath="
157 (assoc-ref %outputs "out") "/lib"))
fd982732 158
d2cc9c7c
LC
159 #:modules ((ice-9 ftw) (ice-9 match)
160 (guix build utils) (guix build gnu-build-system))
fd982732 161 #:phases
46472ecd
MW
162 (modify-phases %standard-phases
163 (add-before
164 'configure 'patch-lib-shells
165 (lambda _
166 ;; Filter for existing files, since some may not exist in all
167 ;; versions of python that are built with this recipe.
168 (substitute* (filter file-exists?
169 '("Lib/subprocess.py"
170 "Lib/popen2.py"
171 "Lib/distutils/tests/test_spawn.py"
172 "Lib/test/test_subprocess.py"))
173 (("/bin/sh") (which "sh")))
dedc8320
LC
174
175 ;; Use zero as the timestamp in .pyc files so that builds are
176 ;; deterministic. TODO: Remove it when this variable is set in
177 ;; gnu-build-system.scm.
a665996f 178 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 179 #t))
5b4e2791
LC
180 (add-before 'configure 'do-not-record-configure-flags
181 (lambda* (#:key configure-flags #:allow-other-keys)
182 ;; Remove configure flags from the installed '_sysconfigdata.py'
183 ;; and 'Makefile' so we don't end up keeping references to the
184 ;; build tools.
185 ;;
186 ;; Preserve at least '--with-system-ffi' since otherwise the
187 ;; thing tries to build libffi, fails, and we end up with a
188 ;; Python that lacks ctypes.
189 (substitute* "configure"
190 (("^CONFIG_ARGS=.*$")
191 (format #f "CONFIG_ARGS='~a'\n"
192 (if (member "--with-system-ffi" configure-flags)
193 "--with-system-ffi"
194 ""))))
195 #t))
46472ecd
MW
196 (add-before
197 'check 'pre-check
198 (lambda _
199 ;; 'Lib/test/test_site.py' needs a valid $HOME
200 (setenv "HOME" (getcwd))
201 #t))
202 (add-after
203 'unpack 'set-source-file-times-to-1980
204 ;; XXX One of the tests uses a ZIP library to pack up some of the
205 ;; source tree, and fails with "ZIP does not support timestamps
206 ;; before 1980". Work around this by setting the file times in the
207 ;; source tree to sometime in early 1980.
208 (lambda _
209 (let ((circa-1980 (* 10 366 24 60 60)))
210 (ftw "." (lambda (file stat flag)
211 (utime file circa-1980 circa-1980)
212 #t))
02f0c3b2
LC
213 #t)))
214 (add-after 'install 'move-tk-inter
215 (lambda* (#:key outputs #:allow-other-keys)
216 ;; When Tkinter support is built move it to a separate output so
217 ;; that the main output doesn't contain a reference to Tcl/Tk.
218 (let ((out (assoc-ref outputs "out"))
219 (tk (assoc-ref outputs "tk")))
220 (when tk
221 (match (find-files out "tkinter.*\\.so")
222 ((tkinter.so)
223 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
224 ;; want it under TK/lib/pythonX.Y/site-packages.
225 (let* ((len (string-length out))
226 (target (string-append
227 tk "/"
228 (string-drop
229 (dirname (dirname tkinter.so))
230 len)
231 "/site-packages")))
232 (install-file tkinter.so target)
233 (delete-file tkinter.so)))))
234 #t))))))
a01b6da7 235 (inputs
3fdc99da
CR
236 `(("bzip2" ,bzip2)
237 ("gdbm" ,gdbm)
b10ab723 238 ("libffi" ,libffi) ; for ctypes
b88e1b0a 239 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 240 ("openssl" ,openssl)
3fdc99da 241 ("readline" ,readline)
afa181ff
LC
242 ("zlib" ,zlib)
243 ("tcl" ,tcl)
244 ("tk" ,tk))) ; for tkinter
b10ab723
CR
245 (native-inputs
246 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
247 (native-search-paths
248 (list (search-path-specification
249 (variable "PYTHONPATH")
af070955 250 (files '("lib/python2.7/site-packages")))))
a01b6da7 251 (home-page "http://python.org")
afa181ff 252 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
253 (description
254 "Python is a remarkably powerful dynamic programming language that
255is used in a wide variety of application domains. Some of its key
256distinguishing features include: clear, readable syntax; strong
257introspection capabilities; intuitive object orientation; natural
258expression of procedural code; full modularity, supporting hierarchical
259packages; exception-based error handling; and very high level dynamic
260data types.")
261 (license psfl)))
acc26ff1 262
b24d1cfc
AE
263(define-public python
264 (package (inherit python-2)
08c04509 265 (version "3.4.3")
717003e3
LC
266 (source (origin
267 (method url-fetch)
268 (uri (string-append "https://www.python.org/ftp/python/"
269 version "/Python-" version ".tar.xz"))
6a20289d
LC
270 (patches (map search-patch
271 '("python-fix-tests.patch"
272 ;; XXX Try removing this patch for python > 3.4.3
273 "python-disable-ssl-test.patch"
9820a6d4 274 "python-3-deterministic-build-info.patch"
6a20289d 275 "python-3-search-paths.patch")))
717003e3
LC
276 (patch-flags '("-p0"))
277 (sha256
278 (base32
08c04509 279 "1f4nm4z08sy0kqwisvv95l02crv6dyysdmx44p1mz3bn6csrdcxm"))))
1f434457
MW
280 (arguments (substitute-keyword-arguments (package-arguments python-2)
281 ((#:tests? _) #t)))
1aebc0cb
AE
282 (native-search-paths
283 (list (search-path-specification
284 (variable "PYTHONPATH")
0e05d01e
SB
285 (files (list (string-append "lib/python"
286 (version-major+minor version)
287 "/site-packages"))))))))
f26a77ff 288
95288fcc
LC
289;; Minimal variants of Python, mostly used to break the cycle between Tk and
290;; Python (Tk -> libxcb -> Python.)
291
292(define-public python2-minimal
293 (package (inherit python-2)
294 (name "python-minimal")
02f0c3b2 295 (outputs '("out"))
95288fcc
LC
296 (arguments
297 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
298 ((#:configure-flags cf)
299 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
300 (inputs '()))) ;none of the optional dependencies
301
302(define-public python-minimal
898238b9 303 (package (inherit python)
95288fcc 304 (name "python-minimal")
02f0c3b2 305 (outputs '("out"))
95288fcc
LC
306 (arguments
307 (substitute-keyword-arguments (package-arguments python)
c5a05e31
LC
308 ((#:configure-flags cf)
309 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
310
311 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
312 ;; zlib is required by 'zipimport', used by pip.
313 (inputs `(("openssl" ,openssl)
314 ("zlib" ,zlib)))))
315
64cb064c
LC
316(define* (wrap-python3 python
317 #:optional
318 (name (string-append (package-name python) "-wrapper")))
898238b9 319 (package (inherit python)
95288fcc 320 (name name)
898238b9
AE
321 (source #f)
322 (build-system trivial-build-system)
02f0c3b2 323 (outputs '("out"))
3c0f2329 324 (propagated-inputs `(("python" ,python)))
898238b9
AE
325 (arguments
326 `(#:modules ((guix build utils))
327 #:builder
328 (begin
329 (use-modules (guix build utils))
330 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
331 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
332 (mkdir-p bin)
333 (for-each
334 (lambda (old new)
335 (symlink (string-append python old)
336 (string-append bin "/" new)))
b3546174
MW
337 `("python3" ,"pydoc3" ,"idle3")
338 `("python" ,"pydoc" ,"idle"))))))
0d56e3e1
LC
339 (synopsis "Wrapper for the Python 3 commands")
340 (description
341 "This package provides wrappers for the commands of Python@tie{}3.x such
342that they can be invoked under their usual name---e.g., @command{python}
343instead of @command{python3}.")))
344
95288fcc
LC
345(define-public python-wrapper (wrap-python3 python))
346(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 347
aaf625b8
RW
348(define-public python-psutil
349 (package
350 (name "python-psutil")
f56777be 351 (version "3.3.0")
aaf625b8
RW
352 (source
353 (origin
354 (method url-fetch)
f56777be 355 (uri (pypi-uri "psutil" version))
aaf625b8
RW
356 (sha256
357 (base32
f56777be 358 "11bd1555vf2ibjnmqf64im5cp55vcqfq45ccinm9ll3bs68na6s2"))))
aaf625b8
RW
359 (build-system python-build-system)
360 (native-inputs
361 `(("python-setuptools" ,python-setuptools)))
362 (home-page "https://pypi.python.org/pypi/psutil/")
363 (synopsis "Library for retrieving information on running processes")
364 (description
365 "psutil (Python system and process utilities) is a library for retrieving
366information on running processes and system utilization (CPU, memory, disks,
367network) in Python. It is useful mainly for system monitoring, profiling and
368limiting process resources and management of running processes. It implements
369many functionalities offered by command line tools such as: ps, top, lsof,
370netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
371pidof, tty, taskset, pmap.")
372 (license bsd-3)))
373
374(define-public python2-psutil
375 (package-with-python2 python-psutil))
898238b9 376
f9da1d8a
ED
377(define-public python-passlib
378 (package
379 (name "python-passlib")
690e8c66 380 (version "1.6.5")
f9da1d8a
ED
381 (source
382 (origin
383 (method url-fetch)
690e8c66 384 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
385 (sha256
386 (base32
690e8c66 387 "1z27wdxs5rj5xhhqfzvzn3yg682irkxw6dcs5jj7mcf97psk8gd8"))))
f9da1d8a
ED
388 (build-system python-build-system)
389 (native-inputs
390 `(("python-nose" ,python-nose)
391 ("python-setuptools" ,python-setuptools)))
392 (inputs
393 `(("python-py-bcrypt" ,python-py-bcrypt)))
394 (arguments
395 `(#:phases
396 (alist-cons-before
397 'check 'set-PYTHON_EGG_CACHE
398 ;; some tests require access to "$HOME/.cython"
399 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
400 %standard-phases)))
401 (home-page "https://bitbucket.org/ecollins/passlib")
402 (synopsis
403 "Comprehensive password hashing framework")
404 (description
405 "Passlib is a password hashing library for Python 2 & 3, which provides
406cross-platform implementations of over 30 password hashing algorithms, as well
407as a framework for managing existing password hashes. It's designed to be
408useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
409to providing full-strength password hashing for multi-user application.")
410 (license bsd-3)))
411
412(define-public python2-passlib
413 (package-with-python2 python-passlib))
414
feb0d9c3
ED
415(define-public python-py-bcrypt
416 (package
417 (name "python-py-bcrypt")
418 (version "0.4")
419 (source
420 (origin
421 (method url-fetch)
422 (uri (string-append
423 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
424 version
425 ".tar.gz"))
426 (sha256
427 (base32
428 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
429 (build-system python-build-system)
430 (native-inputs
431 `(("python-setuptools" ,python-setuptools)))
432 (home-page "https://code.google.com/p/py-bcrypt")
433 (synopsis
434 "Bcrypt password hashing and key derivation")
435 (description
436 "A python wrapper of OpenBSD's Blowfish password hashing code. This
437system hashes passwords using a version of Bruce Schneier's Blowfish block
438cipher with modifications designed to raise the cost of off-line password
439cracking and frustrate fast hardware implementation. The computation cost of
440the algorithm is parametised, so it can be increased as computers get faster.
441The intent is to make a compromise of a password database less likely to
442result in an attacker gaining knowledge of the plaintext passwords (e.g. using
443John the Ripper).")
444 ;; "sha2.c" is under BSD-3;
445 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
446 ;; the rest is under ISC.
447 (license (list isc bsd-3 bsd-4))))
448
449(define-public python2-py-bcrypt
450 (package-with-python2 python-py-bcrypt))
451
452
429fdea1
ED
453(define-public python-paramiko
454 (package
455 (name "python-paramiko")
81b9bbbd 456 (version "1.16.0")
429fdea1
ED
457 (source
458 (origin
459 (method url-fetch)
81b9bbbd 460 (uri (pypi-uri "paramiko" version))
429fdea1
ED
461 (sha256
462 (base32
81b9bbbd 463 "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
429fdea1
ED
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")
286f1bac 486 (version "0.9.2")
de73dbf6
ED
487 (source
488 (origin
489 (method url-fetch)
286f1bac 490 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
491 (sha256
492 (base32
286f1bac 493 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6
ED
494 (build-system python-build-system)
495 (native-inputs
496 `(("python-setuptools" ,python-setuptools)))
286f1bac 497 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
498 (synopsis "Comprehensive HTTP client library")
499 (description
500 "A comprehensive HTTP client library supporting many features left out of
501other HTTP libraries.")
502 (license license:expat)))
503
504(define-public python2-httplib2
505 (package-with-python2 python-httplib2))
506
67039875
ED
507(define-public python-ecdsa
508 (package
509 (name "python-ecdsa")
510 (version "0.13")
511 (source
512 (origin
513 (method url-fetch)
514 (uri (string-append
515 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
516 version
517 ".tar.gz"))
518 (sha256
519 (base32
520 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
521 (build-system python-build-system)
522 (native-inputs
523 `(("python-setuptools" ,python-setuptools)))
524 (inputs
525 `(("openssl" ,openssl)))
526 (home-page
527 "http://github.com/warner/python-ecdsa")
528 (synopsis
529 "ECDSA cryptographic signature library (pure python)")
530 (description
531 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
532Curve Digital Signature Algorithm), implemented purely in Python. With this
533library, you can quickly create keypairs (signing key and verifying key), sign
534messages, and verify the signatures. The keys and signatures are very short,
535making them easy to handle and incorporate into other protocols.")
536 (license license:expat)))
537
538(define-public python2-ecdsa
539 (package-with-python2 python-ecdsa))
540
52323f32
ED
541(define-public python-ccm
542 (package
543 (name "python-ccm")
db5567f7 544 (version "2.1.6")
52323f32
ED
545 (source
546 (origin
547 (method url-fetch)
db5567f7 548 (uri (pypi-uri "ccm" version))
52323f32
ED
549 (sha256
550 (base32
db5567f7 551 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32
ED
552 (build-system python-build-system)
553 (native-inputs
554 `(("python-setuptools" ,python-setuptools)))
555 (inputs
556 `(("python-pyyaml" ,python-pyyaml)
557 ("python-six" ,python-six)))
558 (home-page "https://github.com/pcmanus/ccm")
559 (synopsis "Cassandra Cluster Manager")
560 (description "A script/library to create, launch and remove an Apache
561Cassandra cluster on localhost.")
562 (license asl2.0)))
563
564(define-public python2-ccm
565 (package-with-python2 python-ccm))
566
89114f39 567(define-public python-pytz
acc26ff1 568 (package
89114f39 569 (name "python-pytz")
b01bbbcf 570 (version "2015.7")
acc26ff1
CR
571 (source
572 (origin
573 (method url-fetch)
b01bbbcf 574 (uri (pypi-uri "pytz" version))
acc26ff1
CR
575 (sha256
576 (base32
b01bbbcf 577 "1spgdfp1ssya7v3kww7zp71xpj437skpqazcvqr3kr1p1brnw9lr"))))
acc26ff1 578 (build-system python-build-system)
8498b8cf 579 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 580 (home-page "http://pythonhosted.org/pytz")
9e771e3b 581 (synopsis "Python timezone library")
acc26ff1
CR
582 (description
583 "This library allows accurate and cross platform timezone calculations
584using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 585 (license license:expat)))
5ace6e2f 586
89114f39 587(define-public python2-pytz
11bb85a1 588 (package-with-python2 python-pytz))
89114f39 589
fc50e9c6 590
89114f39 591(define-public python-babel
5ace6e2f 592 (package
89114f39 593 (name "python-babel")
b850a6d8 594 (version "2.1.1")
5ace6e2f
CR
595 (source
596 (origin
597 (method url-fetch)
b850a6d8 598 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
599 (sha256
600 (base32
b850a6d8 601 "0j2jgfzj1a2m39pm2qc36fzr7a6p5ybwndi0xdzhi2p8zw7dbdkz"))))
5ace6e2f
CR
602 (build-system python-build-system)
603 (inputs
e1804763
AE
604 `(("python-pytz" ,python-pytz)
605 ("python-setuptools" ,python-setuptools)))
8498b8cf 606 (arguments `(#:tests? #f)) ; no test target
e1804763 607 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
608 (synopsis
609 "Tools for internationalizing Python applications")
610 (description
611 "Babel is composed of two major parts:
612- tools to build and work with gettext message catalogs
613- a Python interface to the CLDR (Common Locale Data Repository), providing
614access to various locale display names, localized number and date formatting,
615etc. ")
616 (license bsd-3)))
89114f39
AE
617
618(define-public python2-babel
11bb85a1 619 (package-with-python2 python-babel))
73adf220 620
ed377cc6
RW
621(define-public python2-backport-ssl-match-hostname
622 (package
623 (name "python2-backport-ssl-match-hostname")
f2d06d46 624 (version "3.5.0.1")
ed377cc6
RW
625 (source
626 (origin
627 (method url-fetch)
628 (uri (string-append
629 "https://pypi.python.org/packages/source/b/"
630 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
631 version ".tar.gz"))
632 (sha256
633 (base32
f2d06d46 634 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 635 (build-system python-build-system)
f2d06d46
EF
636 (arguments
637 `(#:python ,python-2
638 #:tests? #f)) ; no test target
ed377cc6
RW
639 (inputs
640 `(("python2-setuptools" ,python2-setuptools)))
f2d06d46
EF
641 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
642 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
643 (description
644 "This backport brings the ssl.match_hostname() function to users of
645earlier versions of Python. The function checks the hostname in the
646certificate returned by the server to which a connection has been established,
647and verifies that it matches the intended target hostname.")
648 (license psfl)))
649
ef5cbf9b
RW
650(define-public python-h5py
651 (package
652 (name "python-h5py")
653 (version "2.4.0")
654 (source
655 (origin
656 (method url-fetch)
657 (uri (string-append "https://pypi.python.org/packages/source/h/h5py/h5py-"
658 version ".tar.gz"))
659 (sha256
660 (base32
661 "0q4f9l8grf6pwp64xbv8bmyxx416s7h4522nnxac056ap3savbps"))))
662 (build-system python-build-system)
797e1401
RW
663 (arguments
664 `(#:tests? #f ; no test target
665 #:phases
666 (modify-phases %standard-phases
667 (add-after 'unpack 'fix-hdf5-paths
668 (lambda* (#:key inputs #:allow-other-keys)
669 (let ((prefix (assoc-ref inputs "hdf5")))
670 (substitute* "setup_build.py"
671 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
672 (string-append "['" prefix "/lib" "']"))
673 (("'/opt/local/include', '/usr/local/include'")
674 (string-append "'" prefix "/include" "'")))
675 (substitute* "setup_configure.py"
676 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
677 (string-append "['" prefix "/lib" "']")))
678 #t))))))
3c4010b1
RW
679 (propagated-inputs
680 `(("python-numpy" ,python-numpy)))
ef5cbf9b 681 (inputs
3c4010b1 682 `(("hdf5" ,hdf5)))
ef5cbf9b 683 (native-inputs
3c4010b1 684 `(("python-cython" ,python-cython)))
ef5cbf9b
RW
685 (home-page "http://www.h5py.org/")
686 (synopsis "Read and write HDF5 files from Python")
687 (description
688 "The h5py package provides both a high- and low-level interface to the
689HDF5 library from Python. The low-level interface is intended to be a
690complete wrapping of the HDF5 API, while the high-level component supports
691access to HDF5 files, datasets and groups using established Python and NumPy
692concepts.")
693 (license bsd-3)))
694
695(define-public python2-h5py
696 (let ((h5py (package-with-python2 python-h5py)))
697 (package (inherit h5py)
3c4010b1 698 (propagated-inputs
ef5cbf9b
RW
699 `(("python2-numpy" ,python2-numpy)
700 ,@(alist-delete
701 "python-numpy"
3c4010b1 702 (package-propagated-inputs h5py)))))))
ef5cbf9b 703
c1448c69
EB
704(define-public python-lockfile
705 (package
706 (name "python-lockfile")
692add53 707 (version "0.12.2")
c1448c69
EB
708 (source
709 (origin
710 (method url-fetch)
711 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
712 "lockfile-" version ".tar.gz"))
713 (sha256
714 (base32
692add53 715 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
716 (build-system python-build-system)
717 (arguments '(#:test-target "check"))
692add53
BW
718 (native-inputs
719 `(("python-pbr" ,python-pbr)))
c1448c69
EB
720 (home-page "http://code.google.com/p/pylockfile/")
721 (synopsis "Platform-independent file locking module")
722 (description
723 "The lockfile package exports a LockFile class which provides a simple
724API for locking files.")
1804527a
BW
725 (license license:expat)
726 (properties `((python2-variant . ,(delay python2-lockfile))))))
c1448c69
EB
727
728(define-public python2-lockfile
1804527a
BW
729 (let ((base (package-with-python2 (strip-python2-variant python-lockfile))))
730 (package
692add53
BW
731 (inherit base)
732 (native-inputs `(("python2-setuptools" ,python2-setuptools)
733 ,@(package-native-inputs base))))))
c1448c69 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")
78c0d323 980 (version "0.18.0")
d072efcb
RW
981 (source
982 (origin
1b96f069
RW
983 (method url-fetch)
984 (uri (pypi-uri "pandas" version))
985 (sha256
78c0d323 986 (base32 "050qw0ap5bhyv5flp78x3lcq1dlminl3xaj6kbrm0jqmx0672xf9"))))
d072efcb 987 (build-system python-build-system)
d072efcb
RW
988 (propagated-inputs
989 `(("python-numpy" ,python-numpy)
990 ("python-pytz" ,python-pytz)
991 ("python-dateutil" ,python-dateutil-2)))
992 (native-inputs
993 `(("python-nose" ,python-nose)
994 ("python-setuptools" ,python-setuptools)))
995 (home-page "http://pandas.pydata.org")
996 (synopsis "Data structures for data analysis, time series, and statistics")
997 (description
998 "Pandas is a Python package providing fast, flexible, and expressive data
999structures designed to make working with structured (tabular,
1000multidimensional, potentially heterogeneous) and time series data both easy
1001and intuitive. It aims to be the fundamental high-level building block for
1002doing practical, real world data analysis in Python.")
1003 (license bsd-3)))
1004
1005(define-public python2-pandas
3cbe7d5e
FB
1006 (let ((pandas (package-with-python2 python-pandas)))
1007 (package (inherit pandas)
1008 (propagated-inputs
1009 `(("python2-numpy" ,python2-numpy)
1010 ,@(alist-delete "python-numpy"
1011 (package-propagated-inputs pandas)))))))
d072efcb 1012
cafc3f5a
EB
1013(define-public python-tzlocal
1014 (package
1015 (name "python-tzlocal")
226d3331 1016 (version "1.2")
cafc3f5a
EB
1017 (source
1018 (origin
1019 (method url-fetch)
226d3331 1020 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1021 (sha256
1022 (base32
226d3331 1023 "12wsw2fl3adrqrwghasld57bhqdrzn0crblqrci1p5acd0ni53s3"))))
cafc3f5a 1024 (build-system python-build-system)
226d3331 1025 (propagated-inputs `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1026 (home-page "https://github.com/regebro/tzlocal")
1027 (synopsis
35b9e423 1028 "Local timezone information for Python")
cafc3f5a
EB
1029 (description
1030 "Tzlocal returns a tzinfo object with the local timezone information.
1031This module attempts to fix a glaring hole in pytz, that there is no way to
1032get the local timezone information, unless you know the zoneinfo name, and
1033under several distributions that's hard or impossible to figure out.")
1034 (license cc0)))
1035
1d08c01f
AE
1036(define-public python2-pysqlite
1037 (package
1038 (name "python2-pysqlite")
fe476868 1039 (version "2.8.1")
1d08c01f
AE
1040 (source
1041 (origin
1042 (method url-fetch)
fe476868 1043 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1044 (sha256
1045 (base32
fe476868 1046 "0rm0zqyb363y6wljhfmbxs16jjv7p8nk1d8zgq9sdwj6js7y3jkm"))))
1d08c01f
AE
1047 (build-system python-build-system)
1048 (inputs
1049 `(("sqlite" ,sqlite)))
1050 (arguments
1051 `(#:python ,python-2 ; incompatible with Python 3
1052 #:tests? #f)) ; no test target
fe476868 1053 (home-page "http://github.com/ghaering/pysqlite")
7a03af70 1054 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1055 (description
1056 "Pysqlite provides SQLite bindings for Python that comply to the
1057Database API 2.0T.")
ed0cdf83 1058 (license license:zlib)))
1d08c01f 1059
2875caf5
AE
1060
1061(define-public python2-mechanize
1062 (package
1063 (name "python2-mechanize")
1064 (version "0.2.5")
1065 (source
1066 (origin
1067 (method url-fetch)
1068 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1069 version ".tar.gz"))
1070 (sha256
1071 (base32
1072 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1073 (build-system python-build-system)
1074 (inputs
1075 `(("python2-setuptools" ,python2-setuptools)))
1076 (arguments
1077 `(#:python ,python-2 ; apparently incompatible with Python 3
1078 #:tests? #f))
1079 ;; test fails with message
1080 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1081 ;; (python-3.3.2) or
1082 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1083 ;; (python-2.7.5).
1084 ;; The source code is from March 2011 and probably not up-to-date
1085 ;; with respect to python unit tests.
1086 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1087 (synopsis
1088 "Stateful programmatic web browsing in Python")
1089 (description
1090 "Mechanize implements stateful programmatic web browsing in Python,
1091after Andy Lester’s Perl module WWW::Mechanize.")
166191b3 1092 (license (non-copyleft "file://COPYING"
e881752c 1093 "See COPYING in the distribution."))))
2875caf5 1094
0352532e
AE
1095
1096(define-public python-simplejson
1097 (package
1098 (name "python-simplejson")
1099 (version "3.3.0")
1100 (source
1101 (origin
1102 (method url-fetch)
1103 (uri (string-append "https://pypi.python.org/packages/source/s/simplejson/simplejson-"
1104 version ".tar.gz"))
1105 (sha256
1106 (base32
1107 "07wsry5j44l5zzm74l4j2bvasiq8n5m32f31n2p7c68i5vc6p2ks"))))
1108 (build-system python-build-system)
1109 (home-page "http://simplejson.readthedocs.org/en/latest/")
1110 (synopsis
1111 "Json library for Python")
1112 (description
e881752c
AK
1113 "JSON (JavaScript Object Notation) is a subset of JavaScript
1114syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1115format.
0352532e
AE
1116
1117Simplejson exposes an API familiar to users of the standard library marshal
1118and pickle modules. It is the externally maintained version of the json
1119library contained in Python 2.6, but maintains compatibility with Python 2.5
1120and (currently) has significant performance advantages, even without using
1121the optional C extension for speedups. Simplejson is also supported on
1122Python 3.3+.")
1123 (license x11)))
1124
1125(define-public python2-simplejson
1126 (package-with-python2 python-simplejson))
421a80a2
AE
1127
1128
ed07b08d 1129(define-public python-pyicu
421a80a2 1130 (package
ed07b08d 1131 (name "python-pyicu")
d3b29319 1132 (version "1.9.2")
421a80a2
AE
1133 (source
1134 (origin
1135 (method url-fetch)
1136 (uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
1137 version ".tar.gz"))
1138 (sha256
1139 (base32
d3b29319 1140 "1diba0g8md614fvm9yf50paiwdkhj6rd7xwf1rg9mc0pxc0hhn4v"))))
421a80a2
AE
1141 (build-system python-build-system)
1142 (inputs
1143 `(("icu4c" ,icu4c)))
421a80a2 1144 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1145 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1146 (description
1147 "PyICU is a python extension wrapping the ICU C++ API.")
ed07b08d
LF
1148 (license x11)
1149 (properties `((python2-variant . ,(delay python2-pyicu))))))
1150
1151(define-public python2-pyicu
1152 (package
1153 (inherit (package-with-python2
1154 (strip-python2-variant python-pyicu)))
1155 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
cc20a22a
LC
1156
1157(define-public python2-dogtail
1158 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1159 ;; spaces in indentation" with Python 3.
1160 (package
1161 (name "python2-dogtail")
1162 (version "0.8.2")
1163 (source (origin
1164 (method url-fetch)
1165 (uri (string-append
1166 "https://fedorahosted.org/released/dogtail/dogtail-"
1167 version ".tar.gz"))
1168 (sha256
1169 (base32
1170 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1171 (build-system python-build-system)
1172 (arguments `(#:python ,python-2
1173 #:tests? #f)) ; invalid command "test"
1174 (home-page "https://fedorahosted.org/dogtail/")
1175 (synopsis "GUI test tool and automation framework written in ​Python")
1176 (description
35b9e423 1177 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1178It uses Accessibility (a11y) technologies to communicate with desktop
1179applications. dogtail scripts are written in Python and executed like any
1180other Python program.")
1181 (license gpl2+)))
515e6878 1182
011b18c3
LC
1183(define-public python2-empy
1184 (package
1185 (name "python2-empy")
1186 (version "3.3")
1187 (source (origin
1188 (method url-fetch)
1189 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1190 version ".tar.gz"))
1191 (sha256
1192 (base32
1193 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1194 (build-system python-build-system)
1195 (arguments
1196 `(#:python ,python-2
1197 #:phases (alist-replace
1198 'check
1199 (lambda _
1200 (zero? (system* "./test.sh")))
1201 %standard-phases)))
1202 (home-page "http://www.alcyone.com/software/empy/")
1203 (synopsis "Templating system for Python")
1204 (description
1205 "EmPy is a system for embedding Python expressions and statements in
1206template text; it takes an EmPy source file, processes it, and produces
1207output. This is accomplished via expansions, which are special signals to the
1cd4027c 1208EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1209EmPy can expand arbitrary Python expressions and statements in this way, as
1210well as a variety of special forms. Textual data not explicitly delimited in
1211this way is sent unaffected to the output, allowing Python to be used in
1212effect as a markup language. Also supported are callbacks via hooks,
1213recording and playback via diversions, and dynamic, chainable filters. The
1214system is highly configurable via command line options and embedded
1215commands.")
1216 (license lgpl2.1+)))
1217
8deeda0c
LC
1218(define-public python2-element-tree
1219 (package
1220 (name "python2-element-tree")
1221 (version "1.2.6")
1222 (source (origin
1223 (method url-fetch)
1224 (uri (string-append
1225 "http://effbot.org/media/downloads/elementtree-"
1226 version "-20050316.tar.gz"))
1227 (sha256
1228 (base32
1229 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1230 (build-system python-build-system)
1231 (arguments
1232 `(#:python ,python-2 ; seems to be part of Python 3
1233 #:tests? #f)) ; no 'test' sub-command
1234 (synopsis "Toolkit for XML processing in Python")
1235 (description
1236 "ElementTree is a Python library supporting lightweight XML processing.")
1237 (home-page "http://effbot.org/zone/element-index.htm")
1238 (license (x11-style "http://docs.python.org/2/license.html"
1239 "Like \"CWI LICENSE AGREEMENT FOR PYTHON \
12400.9.0 THROUGH 1.2\"."))))
1241
1242(define-public python2-pybugz
1243 (package
1244 (name "python2-pybugz")
1245 (version "0.6.11")
1246 (source (origin
1247 (method url-fetch)
1248 (uri (string-append
1249 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1250 version ".tar.gz"))
1251 (sha256
1252 (base32
6f194a1e
LC
1253 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
1254 (patches (map search-patch
1255 (list "pybugz-stty.patch"
1256 "pybugz-encode-error.patch")))))
8deeda0c
LC
1257 (build-system python-build-system)
1258 (arguments
1259 `(#:python ,python-2 ; SyntaxError with Python 3
1260 #:tests? #f)) ; no 'test' sub-command
1261 (inputs `(("element-tree" ,python2-element-tree)))
1262 (synopsis "Python and command-line interface to Bugzilla")
1263 (description
1264 "PyBugz is a Python library and command-line tool to query the Bugzilla
1265bug tracking system. It is meant as an aid to speed up interaction with the
1266bug tracker.")
1267 (home-page "http://www.liquidx.net/pybugz/")
1268 (license gpl2)))
1269
a480bc41
EB
1270(define-public python-enum34
1271 (package
1272 (name "python-enum34")
d39ae1e5 1273 (version "1.1.0")
a480bc41
EB
1274 (source
1275 (origin
1276 (method url-fetch)
d39ae1e5 1277 (uri (pypi-uri "enum34" version))
a480bc41
EB
1278 (sha256
1279 (base32
d39ae1e5 1280 "0yx1m4564wxgbm4glb3457hi16xihd9w63rv13y2przkdir9dfgp"))))
a480bc41 1281 (build-system python-build-system)
a480bc41
EB
1282 (arguments
1283 `(#:phases
1284 (alist-replace
1285 'check
1286 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1287 %standard-phases)))
1288 (home-page "https://pypi.python.org/pypi/enum34")
1289 (synopsis "Backported Python 3.4 Enum")
1290 (description
1291 "Enum34 is the new Python stdlib enum module available in Python 3.4
1292backported for previous versions of Python from 2.4 to 3.3.")
1293 (license bsd-3)))
1294
820acd1b
LF
1295(define-public python2-enum34
1296 (package-with-python2 python-enum34))
1297
a480bc41
EB
1298(define-public python-parse-type
1299 (package
1300 (name "python-parse-type")
1301 (version "0.3.4")
1302 (source
1303 (origin
1304 (method url-fetch)
1305 (uri (string-append "https://pypi.python.org/packages/source/p/"
1306 "parse_type/parse_type-" version ".tar.gz"))
1307 (sha256
1308 (base32
1309 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1310 (build-system python-build-system)
1311 (inputs
1312 `(("python-setuptools" ,python-setuptools)
1313 ("python-six" ,python-six)
68f1cdec 1314 ("python-parse" ,python-parse)))
a480bc41
EB
1315 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1316 (home-page "https://github.com/jenisys/parse_type")
1317 (synopsis "Extended parse module")
1318 (description
1319 "Parse_type extends the python parse module.")
1320 (license bsd-3)))
1321
1322(define-public python-parse
1323 (package
1324 (name "python-parse")
1325 (version "1.6.4")
1326 (source
1327 (origin
1328 (method url-fetch)
1329 (uri (string-append "https://pypi.python.org/packages/source/p/"
1330 "parse/parse-" version ".tar.gz"))
1331 (sha256
1332 (base32
1333 "0m30q64l6szl7s9mhvqy64w2fdhdn8lb91fmacjiwbv3479cmk57"))))
1334 (build-system python-build-system)
1335 (arguments
1336 `(#:phases
1337 (alist-replace
1338 'check
1339 (lambda _ (zero? (system* "python" "test_parse.py")))
1340 %standard-phases)))
1341 (home-page "https://github.com/r1chardj0n3s/parse")
1342 (synopsis "Parse strings")
1343 (description
1344 "Parse strings using a specification based on the Python format()
1345syntax.")
1346 (license x11)))
1347
1348
515e6878
LC
1349(define-public scons
1350 (package
1351 (name "scons")
a3f61425 1352 (version "2.3.4")
515e6878
LC
1353 (source (origin
1354 (method url-fetch)
1355 (uri (string-append "mirror://sourceforge/scons/scons-"
1356 version ".tar.gz"))
1357 (sha256
1358 (base32
a3f61425 1359 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1360 (build-system python-build-system)
1361 (arguments
1362 ;; With Python 3.x, fails to build with a syntax error.
1363 `(#:python ,python-2
1364 #:tests? #f)) ; no 'python setup.py test' command
1365 (home-page "http://scons.org/")
1366 (synopsis "Software construction tool written in Python")
1367 (description
1368 "SCons is a software construction tool. Think of SCons as an improved,
1369cross-platform substitute for the classic Make utility with integrated
1370functionality similar to autoconf/automake and compiler caches such as ccache.
1371In short, SCons is an easier, more reliable and faster way to build
1372software.")
1373 (license x11)))
011b18c3 1374
c15a5c0e
DT
1375(define-public python-extras
1376 (package
1377 (name "python-extras")
1378 (version "0.0.3")
1379 (source
1380 (origin
1381 (method url-fetch)
1382 (uri (string-append
1383 "https://pypi.python.org/packages/source/e/extras/extras-"
1384 version ".tar.gz"))
1385 (sha256
1386 (base32
1387 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1388 (build-system python-build-system)
1389 (inputs
1390 `(("python-setuptools" ,python-setuptools)))
1391 (arguments
1392 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1393 '(#:tests? #f))
1394 (home-page "https://github.com/testing-cabal/extras")
1395 (synopsis "Useful extensions to the Python standard library")
1396 (description
1397 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1398 (license license:expat)))
c15a5c0e
DT
1399
1400(define-public python2-extras
1401 (package-with-python2 python-extras))
1402
56ea0efd
DT
1403(define-public python-mimeparse
1404 (package
1405 (name "python-mimeparse")
1406 (version "0.1.4")
1407 (source
1408 (origin
1409 (method url-fetch)
1410 (uri (string-append
1411 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1412 version ".tar.gz"))
1413 (sha256
1414 (base32
1415 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1416 (build-system python-build-system)
1417 (inputs
1418 `(("python-setuptools" ,python-setuptools)))
1419 (arguments
1420 '(#:tests? #f)) ; no setup.py test command
1421 (home-page
1422 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1423 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1424 (description
1425 "Mimeparse provides basic functions for parsing MIME type names and
1426matching them against a list of media-ranges.")
bd3fa666 1427 (license license:expat)))
56ea0efd
DT
1428
1429(define-public python2-mimeparse
1430 (package-with-python2 python-mimeparse))
1431
4435427e
DT
1432(define-public python-nose
1433 (package
1434 (name "python-nose")
f7cb9841 1435 (version "1.3.7")
4435427e
DT
1436 (source
1437 (origin
1438 (method url-fetch)
f7cb9841 1439 (uri (pypi-uri "nose" version))
4435427e
DT
1440 (sha256
1441 (base32
f7cb9841 1442 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e
DT
1443 (build-system python-build-system)
1444 (inputs
1445 `(("python-setuptools" ,python-setuptools)))
1446 (arguments
1447 '(#:tests? #f)) ; FIXME: test suite fails
1448 (home-page "http://readthedocs.org/docs/nose/")
1449 (synopsis "Python testing library")
1450 (description
1451 "Nose extends the unittest library to make testing easier.")
1452 (license lgpl2.0+)))
1453
1454(define-public python2-nose
1455 (package-with-python2 python-nose))
1456
6cd9c356
DT
1457(define-public python-unittest2
1458 (package
1459 (name "python-unittest2")
1460 (version "0.5.1")
1461 (source
1462 (origin
1463 (method url-fetch)
1464 (uri (string-append
1465 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1466 version ".tar.gz"))
1467 (sha256
1468 (base32
1469 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1470 (build-system python-build-system)
1471 (inputs
1472 `(("python-setuptools" ,python-setuptools)))
1473 (home-page "http://pypi.python.org/pypi/unittest2")
1474 (synopsis "Python unit testing library")
1475 (description
1476 "Unittest2 is a replacement for the unittest module in the Python
1477standard library.")
1478 (license psfl)))
1479
1480(define-public python2-unittest2
1481 (package (inherit python-unittest2)
1482 (name "python2-unittest2")
1483 (version "0.5.1")
1484 (source
1485 (origin
1486 (method url-fetch)
1487 (uri (string-append
1488 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1489 version ".tar.gz"))
1490 (sha256
1491 (base32
1492 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
1493 (inputs
7957fe6c 1494 `(("python2-setuptools" ,python2-setuptools)))
6cd9c356
DT
1495 (arguments
1496 `(#:python ,python-2
1497 #:tests? #f)))) ; no setup.py test command
1498
542ad60f
DT
1499(define-public python-py
1500 (package
1501 (name "python-py")
71c8a804 1502 (version "1.4.31")
542ad60f
DT
1503 (source
1504 (origin
1505 (method url-fetch)
71c8a804 1506 (uri (pypi-uri "py" version))
542ad60f
DT
1507 (sha256
1508 (base32
71c8a804 1509 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f
DT
1510 (build-system python-build-system)
1511 (inputs
1512 `(("python-setuptools" ,python-setuptools)))
1513 (home-page "http://pylib.readthedocs.org/")
1514 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1515 (description
1516 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1517code introspection, and logging.")
bd3fa666 1518 (license license:expat)))
542ad60f
DT
1519
1520(define-public python2-py
1521 (package-with-python2 python-py))
1522
855d4761
DT
1523(define-public python-pytest
1524 (package
1525 (name "python-pytest")
61a4332d 1526 (version "2.7.3")
855d4761
DT
1527 (source
1528 (origin
1529 (method url-fetch)
1530 (uri (string-append
1531 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1532 version ".tar.gz"))
1533 (sha256
1534 (base32
61a4332d 1535 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1536 (modules '((guix build utils)))
1537 (snippet
1538 ;; One of the tests involves the /usr directory, so it fails.
1539 '(substitute* "testing/test_argcomplete.py"
1540 (("def test_remove_dir_prefix\\(self\\):")
1541 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1542 (build-system python-build-system)
1543 (inputs
1544 `(("python-setuptools" ,python-setuptools)
1545 ("python-py" ,python-py)
1546 ("python-nose" ,python-nose)
1547 ("python-mock" ,python-mock)))
1548 (home-page "http://pytest.org")
1549 (synopsis "Python testing library")
1550 (description
1551 "Pytest is a testing tool that provides auto-discovery of test modules
1552and functions, detailed info on failing assert statements, modular fixtures,
1553and many external plugins.")
bd3fa666 1554 (license license:expat)))
855d4761
DT
1555
1556(define-public python2-pytest
1557 (package-with-python2 python-pytest))
1558
358c3d61
EF
1559(define-public python-pytest-cov
1560 (package
1561 (name "python-pytest-cov")
1562 (version "2.2.0")
1563 (source
1564 (origin
1565 (method url-fetch)
1566 (uri (pypi-uri "pytest-cov" version))
1567 (sha256
1568 (base32
1569 "1lf9jsmhqk5nc4w3kzwglmdzjvmi7ajvrsnwv826j3bn0wzx8c92"))))
10468636
EF
1570 (build-system python-build-system)
1571 (propagated-inputs
1572 `(("python-coverage" ,python-coverage)
1573 ("python-pytest" ,python-pytest)))
1574 (native-inputs
1575 `(("python-setuptools" ,python-setuptools)))
1576 (home-page "https://github.com/pytest-dev/pytest-cov")
1577 (synopsis "Pytest plugin for measuring coverage")
1578 (description
1579 "Pytest-cov produces coverage reports. It supports centralised testing and
1580distributed testing in both @code{load} and @code{each} modes. It also
1581supports coverage of subprocesses.")
358c3d61
EF
1582 (license license:expat)))
1583
1584(define-public python2-pytest-cov
1585 (package-with-python2 python-pytest-cov))
1586
6784f2e3
RW
1587(define-public python-pytest-runner
1588 (package
1589 (name "python-pytest-runner")
1590 (version "2.6.2")
1591 (source
1592 (origin
1593 (method url-fetch)
1594 (uri (string-append "https://pypi.python.org/packages/source/p/"
1595 "pytest-runner/pytest-runner-"
1596 version ".tar.gz"))
1597 (sha256
1598 (base32
1599 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1600 (build-system python-build-system)
1601 (arguments
1602 `(#:phases
1603 (modify-phases %standard-phases
1604 ;; The fancy way of setting the version with setuptools_scm does not
1605 ;; seem to work here.
1606 (add-after 'unpack 'set-version
1607 (lambda _
1608 (substitute* "docs/conf.py"
1609 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1610 (string-append "version = \"" ,version "\"")))
1611 #t)))))
1612 (native-inputs
1613 `(("python-pytest" ,python-pytest)
d50d097d 1614 ("python-setuptools" ,python-setuptools)
6784f2e3
RW
1615 ("python-setuptools-scm" ,python-setuptools-scm)))
1616 (home-page "https://bitbucket.org/pytest-dev/pytest-runner")
1617 (synopsis "Invoke py.test as a distutils command")
1618 (description
1619 "This package provides a @command{pytest-runner} command that
1620@file{setup.py} files can use to run tests.")
1621 (license license:expat)))
1622
1623(define-public python2-pytest-runner
1624 (package-with-python2 python-pytest-runner))
1625
8fa58fc9
CAW
1626(define-public python-pytest-xdist
1627 (package
1628 (name "python-pytest-xdist")
1629 (version "1.14")
1630 (source
1631 (origin
1632 (method url-fetch)
1633 (uri (pypi-uri "pytest-xdist" version ".zip"))
1634 (sha256
1635 (base32
1636 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))))
1637 (build-system python-build-system)
1638 (native-inputs
1639 `(("unzip" ,unzip)
1640 ("python-setuptools" ,python-setuptools)
1641 ("python-setuptools-scm" ,python-setuptools-scm)))
1642 (propagated-inputs
1643 `(("python-execnet" ,python-execnet)
1644 ("python-pytest" ,python-pytest)
1645 ("python-py" ,python-py)))
1646 (home-page
1647 "https://github.com/pytest-dev/pytest-xdist")
1648 (synopsis
1649 "Plugin for py.test with distributed testing and loop-on-failing modes")
1650 (description
1651 "The pytest-xdist plugin extends py.test with some unique test execution
1652modes: parallelization, running tests in boxed subprocesses, the ability
1653to run tests repeatedly when failed, and the ability to run tests on multiple
1654Python interpreters or platforms. It uses rsync to copy the existing
1655program code to a remote location, executes there, and then syncs the
1656result back.")
1657 (license license:expat)))
1658
1659(define-public python2-pytest-xdist
1660 (package-with-python2 python-pytest-xdist))
1661
84d24017
DT
1662(define-public python-scripttest
1663 (package
1664 (name "python-scripttest")
1665 (version "1.3")
1666 (source
1667 (origin
1668 (method url-fetch)
1669 (uri (string-append
1670 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
1671 version ".tar.gz"))
1672 (sha256
1673 (base32
1674 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
1675 (build-system python-build-system)
1676 (inputs
1677 `(("python-setuptools" ,python-setuptools)
1678 ("python-pytest" ,python-pytest)))
1679 (home-page "http://pythonpaste.org/scripttest/")
1680 (synopsis "Python library to test command-line scripts")
1681 (description "Scripttest is a Python helper library for testing
1682interactive command-line applications. With it you can run a script in a
1683subprocess and see the output as well as any file modifications.")
bd3fa666 1684 (license license:expat)))
84d24017
DT
1685
1686(define-public python2-scripttest
1687 (package-with-python2 python-scripttest))
1688
d8fa80e1
DT
1689(define-public python-testtools
1690 (package
1691 (name "python-testtools")
1692 (version "1.0.0")
1693 (source
1694 (origin
1695 (method url-fetch)
1696 (uri (string-append
1697 "https://pypi.python.org/packages/source/t/testtools/testtools-"
1698 version ".tar.gz"))
1699 (sha256
1700 (base32
1701 "1dyml28ykpl5jb9khdmcdvhy1cxqingys6qvj2k04fzlaj6z3bbx"))))
1702 (build-system python-build-system)
0e88cbf8
CR
1703 (propagated-inputs
1704 `(("python-mimeparse" ,python-mimeparse)))
d8fa80e1
DT
1705 (inputs
1706 `(("python-setuptools" ,python-setuptools)
d8fa80e1
DT
1707 ("python-extras" ,python-extras)))
1708 (home-page "https://github.com/testing-cabal/testtools")
1709 (synopsis
1710 "Extensions to the Python standard library unit testing framework")
1711 (description
1712 "Testtools extends the Python standard library unit testing framework to
1713provide matchers, more debugging information, and cross-Python
1714compatibility.")
1715 (license psfl)))
1716
1717(define-public python2-testtools
1718 (package-with-python2 python-testtools))
1719
5bf3afea
DT
1720(define-public python-testscenarios
1721 (package
1722 (name "python-testscenarios")
1723 (version "0.4")
1724 (source
1725 (origin
1726 (method url-fetch)
1727 (uri (string-append
1728 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
1729 version ".tar.gz"))
1730 (sha256
1731 (base32
1732 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
1733 (build-system python-build-system)
1734 (inputs
1735 `(("python-setuptools" ,python-setuptools)
1736 ("python-testtools" ,python-testtools)
1737 ("python-mimeparse" ,python-mimeparse)))
1738 (home-page "https://launchpad.net/testscenarios")
1739 (synopsis "Pyunit extension for dependency injection")
1740 (description
1741 "Testscenarios provides clean dependency injection for Python unittest
1742style tests.")
1743 (license (list bsd-3 asl2.0)))) ; at the user's option
1744
1745(define-public python2-testscenarios
1746 (package-with-python2 python-testscenarios))
1747
dac79ecc
DT
1748(define-public python-testresources
1749 (package
1750 (name "python-testresources")
1751 (version "0.2.7")
1752 (source
1753 (origin
1754 (method url-fetch)
1755 (uri (string-append
1756 "https://pypi.python.org/packages/source/t/testresources/testresources-"
1757 version ".tar.gz"))
1758 (sha256
1759 (base32
1760 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
1761 (build-system python-build-system)
1762 (inputs
1763 `(("python-setuptools" ,python-setuptools)))
1764 (home-page "https://launchpad.net/testresources")
1765 (synopsis
1766 "Pyunit extension for managing test resources")
1767 (description
1768 "Testresources is an extension to Python's unittest to allow declarative
1769use of resources by test cases.")
1770 (license (list bsd-3 asl2.0)))) ; at the user's option
1771
1772(define-public python2-testresources
1773 (package-with-python2 python-testresources))
1774
070ab058
DT
1775(define-public python-subunit
1776 (package
1777 (name "python-subunit")
1778 (version "0.0.21")
1779 (source
1780 (origin
1781 (method url-fetch)
1782 (uri (string-append
1783 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
1784 version ".tar.gz"))
1785 (sha256
1786 (base32
1787 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
1788 (build-system python-build-system)
1789 (inputs
1790 `(("python-setuptools" ,python-setuptools)
1791 ("python-testtools" ,python-testtools)
1792 ("python-mimeparse" ,python-mimeparse)
1793 ("python-testscenarios" ,python-testscenarios)))
1794 (home-page "http://launchpad.net/subunit")
1795 (synopsis "Python implementation of the subunit protocol")
1796 (description
1797 "Python-subunit is a Python implementation of the subunit test streaming
1798protocol.")
1799 (license (list bsd-3 asl2.0)))) ; at the user's option
1800
1801(define-public python2-subunit
1802 (package-with-python2 python-subunit))
1803
7787ef76
CR
1804;; Recent versions of python-fixtures need a recent version of python-pbr,
1805;; which needs a recent version of python-fixtures. To fix this circular
1806;; dependency, we keep old versions of python-fixtures and python-pbr to
1807;; bootstrap the whole thing:
1808;; - python-fixtures-0.3.16 is used to build python-pbr-0.11
1809;; - python-pbr-0.11 is used to build python-fixtures
1810;; - python-fixtures is used to build python-pbr
1811(define-public python-fixtures-0.3.16
cd49454b
DT
1812 (package
1813 (name "python-fixtures")
1814 (version "0.3.16")
1815 (source
1816 (origin
1817 (method url-fetch)
1818 (uri (string-append
1819 "https://pypi.python.org/packages/source/f/fixtures/fixtures-"
1820 version ".tar.gz"))
1821 (sha256
1822 (base32
1823 "0x9r2gwilcig5g54k60bxzg96zabizq1855lrprlb4zckalp9asc"))))
1824 (build-system python-build-system)
1825 (inputs
1826 `(("python-setuptools" ,python-setuptools)))
1827 (arguments
1828 '(#:tests? #f)) ; no setup.py test command
1829 (home-page "https://launchpad.net/python-fixtures")
1830 (synopsis "Python test fixture library")
1831 (description
1832 "Fixtures provides a way to create reusable state, useful when writing
1833Python tests.")
1834 (license (list bsd-3 asl2.0)))) ; at user's option
1835
7787ef76
CR
1836(define-public python2-fixtures-0.3.16
1837 (package-with-python2 python-fixtures-0.3.16))
1838
1839(define-public python-pbr-0.11
1840 (package
1841 (name "python-pbr")
1842 (version "0.11.0")
1843 (source
1844 (origin
1845 (method url-fetch)
1846 (uri (string-append
1847 "https://pypi.python.org/packages/source/p/pbr/pbr-"
1848 version ".tar.gz"))
1849 (sha256
1850 (base32
1851 "0v9gb7gyqf7q9s99l0nnjj9ww9b0jvyqlwm4d56pcyinxydddw6p"))))
1852 (build-system python-build-system)
1853 (arguments
1854 `(#:tests? #f)) ;; Most tests seem to use the Internet.
1855 (inputs
1856 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
1857 ("python-pip" ,python-pip)
1858 ("python-setuptools" ,python-setuptools)))
1859 (home-page "https://launchpad.net/pbr")
1860 (synopsis "Change the default behavior of Python’s setuptools")
1861 (description
1862 "Python Build Reasonableness (PBR) is a library that injects some useful
1863and sensible default behaviors into your setuptools run.")
1864 (license asl2.0)))
1865
1866(define-public python2-pbr-0.11
1867 (package-with-python2 python-pbr-0.11))
1868
1ef09c0c 1869(define-public python-pbr
e25f0174
BW
1870 (package
1871 (name "python-pbr")
1ef09c0c
BW
1872 (version "1.8.1")
1873 (source
e25f0174
BW
1874 (origin
1875 (method url-fetch)
1876 (uri (string-append
1877 "https://pypi.python.org/packages/source/p/pbr/pbr-"
1878 version
1879 ".tar.gz"))
1880 (sha256
1881 (base32
1882 "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2"))))
1ef09c0c 1883 (build-system python-build-system)
e25f0174
BW
1884 (arguments
1885 `(#:tests? #f)) ;; Most tests seem to use the Internet.
1886 (propagated-inputs
1887 `(("python-testrepository" ,python-testrepository)
1888 ("git" ,git))) ;; pbr actually uses the "git" binary.
1ef09c0c 1889 (inputs
e25f0174
BW
1890 `(("python-fixtures" ,python-fixtures)
1891 ("python-mimeparse" ,python-mimeparse)
1892 ("python-mock" ,python-mock)
1893 ("python-setuptools" ,python-setuptools)
1894 ("python-six" ,python-six)
1895 ("python-sphinx" ,python-sphinx)
1896 ("python-testrepository" ,python-testrepository)
1897 ("python-testresources" ,python-testresources)
1898 ("python-testscenarios" ,python-testscenarios)
1899 ("python-testtools" ,python-testtools)
1900 ("python-virtualenv" ,python-virtualenv)))
1901 (home-page "https://launchpad.net/pbr")
1902 (synopsis "Change the default behavior of Python’s setuptools")
1903 (description
1904 "Python Build Reasonableness (PBR) is a library that injects some useful
1905and sensible default behaviors into your setuptools run.")
1906 (license asl2.0)))
1ef09c0c
BW
1907
1908(define-public python2-pbr
e25f0174 1909 (package-with-python2 python-pbr))
1ef09c0c 1910
7787ef76
CR
1911(define-public python-fixtures
1912 (package
1913 (name "python-fixtures")
13fcc6df 1914 (version "1.4.0")
7787ef76
CR
1915 (source
1916 (origin
1917 (method url-fetch)
13fcc6df 1918 (uri (pypi-uri "fixtures" version))
7787ef76
CR
1919 (sha256
1920 (base32
13fcc6df 1921 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76
CR
1922 (build-system python-build-system)
1923 (propagated-inputs
1924 `(("python-six" ,python-six)
1925 ("python-pbr-0.11" ,python-pbr-0.11)))
1926 (inputs
1927 `(("python-pip" ,python-pip)
1928 ("python-setuptools" ,python-setuptools)
1929 ;; Tests
1930 ("python-testtools" ,python-testtools)))
1931 (arguments
1932 '(#:tests? #f)) ; no setup.py test command
1933 (home-page "https://launchpad.net/python-fixtures")
1934 (synopsis "Python test fixture library")
1935 (description
1936 "Fixtures provides a way to create reusable state, useful when writing
1937Python tests.")
1938 (license (list bsd-3 asl2.0)))) ; at user's option
1939
cd49454b
DT
1940(define-public python2-fixtures
1941 (package-with-python2 python-fixtures))
1942
b24a0c00
DT
1943(define-public python-testrepository
1944 (package
1945 (name "python-testrepository")
1946 (version "0.0.20")
1947 (source
1948 (origin
1949 (method url-fetch)
1950 (uri (string-append
1951 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
1952 version ".tar.gz"))
1953 (sha256
1954 (base32
1955 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
1956 (build-system python-build-system)
05de40c5 1957 (propagated-inputs
7787ef76 1958 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
05de40c5 1959 ("python-testtools" ,python-testtools)))
b24a0c00
DT
1960 (inputs
1961 `(("python-setuptools" ,python-setuptools)
b24a0c00 1962 ("python-subunit" ,python-subunit)
b24a0c00
DT
1963 ("python-mimeparse" ,python-mimeparse)))
1964 (home-page "https://launchpad.net/testrepository")
1965 (synopsis "Database for Python test results")
1966 (description "Testrepository provides a database of test results which can
1967be used as part of a developer's workflow to check things such as what tests
1968have failed since the last commit or what tests are currently failing.")
1969 (license (list bsd-3 asl2.0)))) ; at user's option
1970
1971(define-public python2-testrepository
1972 (package-with-python2 python-testrepository))
1973
243a009a
DT
1974(define-public python-coverage
1975 (package
1976 (name "python-coverage")
82a3c582 1977 (version "4.0.3")
243a009a
DT
1978 (source
1979 (origin
1980 (method url-fetch)
82a3c582 1981 (uri (pypi-uri "coverage" version))
243a009a
DT
1982 (sha256
1983 (base32
82a3c582 1984 "0qjlja8ny4gcfp8abqfwdrvr8qw9kr69lkja0b4cqqbsdmdjgcc5"))))
243a009a
DT
1985 (build-system python-build-system)
1986 (inputs
1987 `(("python-setuptools" ,python-setuptools)))
1988 (home-page "http://nedbatchelder.com/code/coverage")
1989 (synopsis "Code coverage measurement for Python")
1990 (description
1991 "Coverage measures code coverage, typically during test execution. It
1992uses the code analysis tools and tracing hooks provided in the Python standard
1993library to determine which lines are executable, and which have been
1994executed.")
1995 (license bsd-3)))
1996
1997(define-public python2-coverage
1998 (package-with-python2 python-coverage))
1999
041358fb
DT
2000(define-public python-discover
2001 (package
2002 (name "python-discover")
2003 (version "0.4.0")
2004 (source
2005 (origin
2006 (method url-fetch)
2007 (uri (string-append
2008 "https://pypi.python.org/packages/source/d/discover/discover-"
2009 version ".tar.gz"))
2010 (sha256
2011 (base32
2012 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2013 (build-system python-build-system)
2014 (inputs
2015 `(("python-setuptools" ,python-setuptools)))
2016 (home-page "http://pypi.python.org/pypi/discover/")
2017 (synopsis
2018 "Python test discovery for unittest")
2019 (description
2020 "Discover provides test discovery for unittest, a feature that has been
e881752c 2021backported from Python 2.7 for Python 2.4+.")
041358fb
DT
2022 (license bsd-3)))
2023
2024(define-public python2-discover
2025 (package-with-python2 python-discover))
2026
a480bc41
EB
2027(define-public behave
2028 (package
2029 (name "behave")
2030 (version "1.2.4")
2031 (source (origin
2032 (method url-fetch)
2033 (uri (string-append "https://pypi.python.org/packages/source/b/"
2034 name "/" name "-" version ".tar.gz"))
2035 (sha256
2036 (base32
2037 "1v2rfy8xnf0rk7cj4cgr7lam4015d458i7bg0xqs9czfv6njlm14"))))
2038 (build-system python-build-system)
2039 (inputs
2040 `(("python-setuptools" ,python-setuptools)
2041 ("python-six" ,python-six)
a480bc41
EB
2042 ("python-parse" ,python-parse)
2043 ("python-parse-type" ,python-parse-type)))
2044 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2045 ;PyHamcrest>=1.8
2046 (home-page "http://github.com/behave/behave")
2047 (synopsis "Python behavior-driven development")
2048 (description
2049 "Behave is a tool for behavior-driven development in python.
2050Behavior-driven development (or BDD) is an agile software development
2051technique that encourages collaboration between developers, QA and
2052non-technical or business participants in a software project. Behave uses
2053tests written in a natural language style, backed up by Python code.")
2054 (license x11)))
c7303d3c
DT
2055
2056(define-public python-exif-read
2057 (package
2058 (name "python-exif-read")
2a2d0981 2059 (version "2.1.2")
c7303d3c
DT
2060 (source (origin
2061 (method url-fetch)
2a2d0981 2062 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2063 (sha256
2064 (base32
2a2d0981 2065 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c
DT
2066 (build-system python-build-system)
2067 (inputs
2068 `(("python-setuptools" ,python-setuptools)))
2069 (arguments `(#:tests? #f)) ; no tests
2070 (home-page "https://github.com/ianare/exif-py")
2071 (synopsis "Python library to extract EXIF data from image files")
2072 (description
2073 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2074files.")
2075 (license bsd-3)))
2076
2077(define-public python2-exif-read
2078 (package-with-python2 python-exif-read))
d5f89b22
DT
2079
2080(define-public python-pyld
2081 (package
2082 (name "python-pyld")
af1ab773 2083 (version "0.6.8")
d5f89b22
DT
2084 (source (origin
2085 (method url-fetch)
af1ab773 2086 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2087 (sha256
2088 (base32
af1ab773 2089 "0k881ffazpf8q1z8862g4bb3pzwpnz9whrci2mf311mvn1qbyqad"))))
d5f89b22
DT
2090 (build-system python-build-system)
2091 (inputs
2092 `(("python-setuptools" ,python-setuptools)))
2093 (arguments `(#:tests? #f)) ; no tests
2094 (home-page "http://github.com/digitalbazaar/pyld")
2095 (synopsis "Python implementation of the JSON-LD specification")
2096 (description
2097 "PyLD is an implementation of the JSON-LD specification.")
2098 (license bsd-3)))
2099
2100(define-public python2-pyld
2101 (package-with-python2 python-pyld))
3a1f9a68
DT
2102
2103(define-public python-certifi
2104 (package
2105 (name "python-certifi")
9a41f443 2106 (version "2015.11.20.1")
3a1f9a68
DT
2107 (source (origin
2108 (method url-fetch)
9a41f443 2109 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2110 (sha256
2111 (base32
9a41f443 2112 "05lgwf9rz1kn465azy2bpb3zmpnsn9gkypbhnjlclchv98ssgc1h"))))
3a1f9a68
DT
2113 (build-system python-build-system)
2114 (inputs
2115 `(("python-setuptools" ,python-setuptools)))
2116 (arguments `(#:tests? #f)) ; no tests
2117 (home-page "http://python-requests.org/")
2118 (synopsis "Python CA certificate bundle")
2119 (description
2120 "Certifi is a Python library that contains a CA certificate bundle, which
2121is used by the Requests library to verify HTTPS requests.")
2122 (license asl2.0)))
2123
2124(define-public python2-certifi
2125 (package-with-python2 python-certifi))
e6cfbd36 2126
12c270dd
RW
2127(define-public python-click
2128 (package
2129 (name "python-click")
5bd88cf1 2130 (version "6.2")
12c270dd
RW
2131 (source
2132 (origin
2133 (method url-fetch)
5bd88cf1 2134 (uri (pypi-uri "click" version))
12c270dd 2135 (sha256
5bd88cf1 2136 (base32 "10kavbisnk9m93jl2wi34pw7ryr2qbxshh2cysxwxd7bymqgz87v"))))
12c270dd
RW
2137 (build-system python-build-system)
2138 (native-inputs
2139 `(("python-setuptools" ,python-setuptools)))
2140 (home-page "http://click.pocoo.org")
2141 (synopsis "Command line library for Python")
2142 (description
2143 "Click is a Python package for creating command line interfaces in a
2144composable way with as little code as necessary. Its name stands for
2145\"Command Line Interface Creation Kit\". It's highly configurable but comes
2146with sensible defaults out of the box.")
2147 (license bsd-3)))
2148
2149(define-public python2-click
2150 (package-with-python2 python-click))
2151
addc808d
EF
2152(define-public python-wheel
2153 (package
2154 (name "python-wheel")
40981b5c 2155 (version "0.29.0")
e1ba0749
EF
2156 (source
2157 (origin
2158 (method url-fetch)
2159 (uri (pypi-uri "wheel" version))
2160 (sha256
2161 (base32
40981b5c 2162 "0j0n38hg1jvrmyy68f9ikvzq1gs9g0sx4ws7maf8wi3bwbbqmfqy"))))
e1ba0749
EF
2163 (build-system python-build-system)
2164 (native-inputs
2165 `(("python-setuptools" ,python-setuptools)
2166 ("python-jsonschema" ,python-jsonschema)
2167 ("python-pytest-cov" ,python-pytest-cov)))
2168 (home-page "https://bitbucket.org/pypa/wheel/")
2169 (synopsis "Format for built Python packages")
2170 (description
2171 "A wheel is a ZIP-format archive with a specially formatted filename and
2172the @code{.whl} extension. It is designed to contain all the files for a PEP
2173376 compatible install in a way that is very close to the on-disk format. Many
2174packages will be properly installed with only the @code{Unpack} step and the
2175unpacked archive preserves enough information to @code{Spread} (copy data and
2176scripts to their final locations) at any later time. Wheel files can be
2177installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2178 (license license:expat)
2179 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2180
2181(define-public python2-wheel
8ad4ae20
LF
2182 (let ((wheel (package-with-python2
2183 (strip-python2-variant python-wheel))))
264ae686 2184 (package (inherit wheel)
8ad4ae20
LF
2185 (native-inputs `(("python2-functools32" ,python2-functools32)
2186 ,@(package-native-inputs wheel))))))
2187
addc808d 2188
ae641128 2189(define-public python-requests
e6cfbd36 2190 (package
ae641128 2191 (name "python-requests")
74a066f9 2192 (version "2.9.1")
e6cfbd36
DT
2193 (source (origin
2194 (method url-fetch)
5d691657 2195 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2196 (sha256
2197 (base32
74a066f9 2198 "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5"))))
e6cfbd36 2199 (build-system python-build-system)
5d691657 2200 (native-inputs
6a308947
EF
2201 `(("python-setuptools" ,python-setuptools)
2202 ("python-py" ,python-py)
5d691657
EF
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)
b3546174 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")
435a0462 2946 (version "0.24")
6888830b
FB
2947 (source
2948 (origin
2949 (method url-fetch)
56918e26 2950 (uri (pypi-uri "Cython" version))
6888830b
FB
2951 (sha256
2952 (base32
435a0462 2953 "1wd3q97gia3zhsgcdlvxh26hkrf3m53i6r1l4g0yya119264vr3d"))))
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")
eb6e2e81 3964 (version "4.0.9")
3cff95cb
RW
3965 (source
3966 (origin
3967 (method url-fetch)
e21338be 3968 (uri (pypi-uri "decorator" version))
3cff95cb 3969 (sha256
eb6e2e81 3970 (base32 "1a5vwhflfd9sh3rfb40xlyipldgdzfff6brman57hqv3661jw0lh"))))
3cff95cb
RW
3971 (build-system python-build-system)
3972 (arguments '(#:tests? #f)) ; no test target
3973 (native-inputs
3974 `(("python-setuptools" ,python-setuptools)))
eb6e2e81 3975 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
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")
cc0c4fde 4217 (version "4.1.0")
2b10eb48
RW
4218 (source
4219 (origin
4220 (method url-fetch)
cc0c4fde 4221 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
4222 (sha256
4223 (base32
cc0c4fde 4224 "0nxgj8jxlm1kqf8cx2x7vjid05zdgbxpqhjbdl46r8njlpgkh3j4"))))
2b10eb48
RW
4225 (build-system python-build-system)
4226 (arguments
4227 `(#:phases
4228 (modify-phases %standard-phases
4229 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4230 (propagated-inputs
4231 `(("python-ipython-genutils" ,python-ipython-genutils)
4232 ("python-decorator" ,python-decorator)))
4233 (native-inputs
cc0c4fde
EF
4234 `(("python-mock" ,python-mock)
4235 ("python-nose" ,python-nose)))
2b10eb48
RW
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")
b6785c2e 4370 (version "0.5.4")
03411993
AE
4371 (source
4372 (origin
4373 (method url-fetch)
b6785c2e 4374 (uri (pypi-uri "isodate" version))
03411993
AE
4375 (sha256
4376 (base32
b6785c2e 4377 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993
AE
4378 (build-system python-build-system)
4379 (inputs
4380 `(("python-setuptools" ,python-setuptools)))
4381 (home-page
4382 "http://cheeseshop.python.org/pypi/isodate")
4383 (synopsis
4384 "Python date parser and formatter")
4385 (description
4386 "Python-isodate is a python module for parsing and formatting
4387ISO 8601 dates, time and duration.")
4388 (license bsd-3)))
4389
4390(define-public python2-isodate
4391 (package-with-python2 python-isodate))
673ab897
AE
4392
4393(define-public python-html5lib
4394 (package
4395 (name "python-html5lib")
fee04c19 4396 (version "1.0b8")
673ab897
AE
4397 (source
4398 (origin
4399 (method url-fetch)
fee04c19 4400 (uri (pypi-uri "html5lib" version))
673ab897
AE
4401 (sha256
4402 (base32
fee04c19 4403 "1lknq5j3nh11xrl268ks76zaj0gyzh34v94n5vbf6dk8llzxdx0q"))))
673ab897 4404 (build-system python-build-system)
3dd75476
AE
4405 (propagated-inputs
4406 `(("python-six" ,python-six))) ; required to "import html5lib"
673ab897
AE
4407 (inputs
4408 `(("python-setuptools" ,python-setuptools)))
4409 (arguments
4410 `(#:test-target "check"))
4411 (home-page
4412 "https://github.com/html5lib/html5lib-python")
4413 (synopsis
4414 "Python HTML parser based on the WHATWG HTML specifcation")
4415 (description
4416 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
4417and written in Python.")
bd3fa666 4418 (license license:expat)))
673ab897
AE
4419
4420(define-public python2-html5lib
4421 (package-with-python2 python-html5lib))
e99f4211
MW
4422
4423(define-public python-urwid
4424 (package
4425 (name "python-urwid")
4426 (version "1.3.0")
4427 (source
4428 (origin
4429 (method url-fetch)
b97c1bfd 4430 (uri (pypi-uri "urwid" version))
e99f4211
MW
4431 (sha256
4432 (base32
4433 "18mb0yy94sjc434rd61m2sfnw27sa0nyrszpj5a9r9zh7fnlzw19"))))
4434 (build-system python-build-system)
b97c1bfd
LF
4435 (arguments
4436 `(#:phases
4437 (modify-phases %standard-phases
4438 ;; Disable failing test. Bug filed upstream:
4439 ;; https://github.com/wardi/urwid/issues/164
4440 ;; TODO: check again for python-urwid > 1.3.0 or python > 3.4.3.
4441 (add-after 'unpack 'disable-failing-test
4442 (lambda _
4443 (substitute* "urwid/tests/test_event_loops.py"
4444 (("test_remove_watch_file")
4445 "disable_remove_watch_file")))))))
e99f4211
MW
4446 (native-inputs `(("python-setuptools" ,python-setuptools)))
4447 (home-page "http://urwid.org")
4448 (synopsis "Console user interface library for Python")
4449 (description
4450 "Urwid is a curses-based UI/widget library for Python. It includes many
4451features useful for text console applications.")
4452 (license lgpl2.1+)))
4453
4454(define-public python2-urwid
4455 (package-with-python2 python-urwid))
d95a56c6
PAR
4456
4457(define-public python-dbus
4458 (package
4459 (name "python-dbus")
4460 (version "1.2.0")
4461 (source
4462 (origin
4463 (method url-fetch)
4464 (uri (string-append
5cc3096c 4465 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
4466 version ".tar.gz"))
4467 (sha256
4468 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
4469 (build-system gnu-build-system)
6717c879
SB
4470 (arguments
4471 '(#:phases
4472 (modify-phases %standard-phases
4473 (add-before
4474 'check 'pre-check
4475 (lambda _
4476 ;; XXX: For the missing '/etc/machine-id'.
4477 (substitute* "test/run-test.sh"
4478 (("DBUS_FATAL_WARNINGS=1")
4479 "DBUS_FATAL_WARNINGS=0"))
4480 #t)))))
d95a56c6
PAR
4481 (native-inputs
4482 `(("pkg-config" ,pkg-config)))
4483 (inputs
4484 `(("python" ,python)
2e88d113 4485 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
4486 (synopsis "Python bindings for D-bus")
4487 (description "python-dbus provides bindings for libdbus, the reference
4488implementation of D-Bus.")
4489 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 4490 (license license:expat)))
b52af02b
MW
4491
4492(define-public python2-dbus
4493 (package (inherit python-dbus)
4494 (name "python2-dbus")
4495 (inputs `(("python" ,python-2)
4496 ,@(alist-delete "python"
4497 (package-inputs python-dbus)
4498 equal?)))
4499 ;; FIXME: on Python 2, the test_utf8 fails with:
4500 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
4501 (arguments `(#:tests? #f))))
a6ac8332
AE
4502
4503(define-public python-apsw
4504 (package
4505 (name "python-apsw")
917708c2 4506 (version "3.9.2-r1")
a6ac8332
AE
4507 (source
4508 (origin
4509 (method url-fetch)
917708c2 4510 (uri (pypi-uri "apsw" version))
a6ac8332
AE
4511 (sha256
4512 (base32
917708c2 4513 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
4514 (build-system python-build-system)
4515 (inputs
4516 `(("python-setuptools" ,python-setuptools)
4517 ("sqlite" ,sqlite)))
4518 (arguments
4519 `(#:phases
4520 ;; swap check and install phases
4521 (alist-cons-after
4522 'install 'check
4523 (assoc-ref %standard-phases 'check)
4524 (alist-delete
4525 'check
4526 %standard-phases))))
4527 (home-page "https://github.com/rogerbinns/apsw/")
4528 (synopsis "Another Python SQLite Wrapper")
4529 (description "APSW is a Python wrapper for the SQLite
4530embedded relational database engine. In contrast to other wrappers such as
4531pysqlite it focuses on being a minimal layer over SQLite attempting just to
4532translate the complete SQLite API into Python.")
abde5f37 4533 (license license:zlib)))
a6ac8332
AE
4534
4535(define-public python2-apsw
4536 (package-with-python2 python-apsw))
26b307e2
AE
4537
4538(define-public python-lxml
4539 (package
4540 (name "python-lxml")
97bbc480 4541 (version "3.5.0")
26b307e2
AE
4542 (source
4543 (origin
4544 (method url-fetch)
97bbc480 4545 (uri (pypi-uri "lxml" version))
26b307e2
AE
4546 (sha256
4547 (base32
97bbc480 4548 "0y7m2s8ci6q642zl85y5axkj8z827l0vhjl532acb75hlkir77rl"))))
26b307e2
AE
4549 (build-system python-build-system)
4550 (inputs
4551 `(("libxml2" ,libxml2)
4552 ("libxslt" ,libxslt)
4553 ("python-setuptools" ,python-setuptools)))
4554 (home-page "http://lxml.de/")
4555 (synopsis
4556 "Python XML processing library")
4557 (description
4558 "The lxml XML toolkit is a Pythonic binding for the C libraries
4559libxml2 and libxslt.")
4560 (license bsd-3))) ; and a few more, see LICENSES.txt
4561
4562(define-public python2-lxml
4563 (package-with-python2 python-lxml))
4ed20663 4564
b32a1e47
CAW
4565;; beautifulsoup4 has a totally different namespace than 3.x,
4566;; and pypi seems to put it under its own name, so I guess we should too
4567(define-public python-beautifulsoup4
4568 (package
4569 (name "python-beautifulsoup4")
4570 (version "4.4.1")
4571 (source
4572 (origin
4573 (method url-fetch)
4574 (uri (pypi-uri "beautifulsoup4" version))
4575 (sha256
4576 (base32
4577 "1d36lc4pfkvl74fmzdib2nqnvknm0jddgf2n9yd7im150qyh3m47"))))
4578 (build-system python-build-system)
4579 (home-page
4580 "http://www.crummy.com/software/BeautifulSoup/bs4/")
4581 (synopsis
4582 "Python screen-scraping library")
4583 (description
4584 "Beautiful Soup is a Python library designed for rapidly setting up
4585screen-scraping projects. It offers Pythonic idioms for navigating,
4586searching, and modifying a parse tree, providing a toolkit for
4587dissecting a document and extracting what you need. It automatically
4588converts incoming documents to Unicode and outgoing documents to UTF-8.")
4589 (license license:expat)
4590 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
4591
4592(define-public python2-beautifulsoup4
4593 (package
4594 (inherit (package-with-python2
4595 (strip-python2-variant python-beautifulsoup4)))
4596 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
4597
092e86f5
AE
4598(define-public python2-cssutils
4599 (package
4600 (name "python2-cssutils")
4601 (version "1.0")
4602 (source
4603 (origin
4604 (method url-fetch)
4605 (uri (string-append
4606 "https://pypi.python.org/packages/source/c/cssutils/cssutils-"
4607 version
4608 ".zip"))
4609 (sha256
4610 (base32
4611 "1bwim1353r4hqiir73sn4sc43y7ymh09qx0kly7vj048blppc125"))))
4612 (build-system python-build-system)
4613 (native-inputs
4614 `(("python2-mock" ,python2-mock) ; for the tests
4615 ("unzip" ,unzip))) ; for unpacking the source
4616 (inputs
4617 `(("python2-setuptools" ,python2-setuptools)))
4618 (arguments
4619 `(#:python ,python-2 ; Otherwise tests fail with a syntax error.
4620 #:tests? #f ; The tests apparently download an external URL.
da6dd842 4621 ))
092e86f5
AE
4622 (home-page "http://cthedot.de/cssutils/")
4623 (synopsis
4624 "CSS Cascading Style Sheets library for Python")
4625 (description
4626 "Cssutils is a Python package for parsing and building CSS
4627Cascading Style Sheets. Currently it provides a DOM only and no rendering
4628options.")
4629 (license lgpl3+)))
880ff77c
AE
4630
4631(define-public python-cssselect
4632 (package
4633 (name "python-cssselect")
4634 (version "0.9.1")
4635 (source
4636 (origin
4637 (method url-fetch)
4638 (uri (string-append
4639 "https://pypi.python.org/packages/source/c/cssselect/cssselect-"
4640 version
4641 ".tar.gz"))
4642 (sha256
4643 (base32
4644 "10h623qnp6dp1191jri7lvgmnd4yfkl36k9smqklp1qlf3iafd85"))))
4645 (build-system python-build-system)
4646 (inputs
4647 `(("python-setuptools" ,python-setuptools)))
4648 (arguments
4649 ;; tests fail with message
4650 ;; AttributeError: 'module' object has no attribute 'tests'
4651 `(#:tests? #f))
4652 (home-page
4653 "https://pythonhosted.org/cssselect/")
4654 (synopsis
4655 "CSS3 selector parser and translator to XPath 1.0")
4656 (description
4657 "Cssselect ia a Python module that parses CSS3 Selectors and translates
4658them to XPath 1.0 expressions. Such expressions can be used in lxml or
4659another XPath engine to find the matching elements in an XML or HTML document.")
4660 (license bsd-3)))
4661
4662(define-public python2-cssselect
4663 (package-with-python2 python-cssselect))
60357f99
AE
4664
4665(define-public python-netifaces
4666 (package
4667 (name "python-netifaces")
4668 (version "0.10.4")
4669 (source
4670 (origin
4671 (method url-fetch)
4672 (uri (string-append
4673 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
4674 version
4675 ".tar.gz"))
4676 (sha256
4677 (base32
4678 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
4679 (build-system python-build-system)
4680 (inputs
4681 `(("python-setuptools" ,python-setuptools)))
4682 (home-page
4683 "https://bitbucket.org/al45tair/netifaces")
4684 (synopsis
4685 "Python module for portable network interface information")
4686 (description
4687 "Netifaces is a Python module providing information on network
4688interfaces in an easy and portable manner.")
4689 (license license:expat)))
4690
4691(define-public python2-netifaces
4692 (package-with-python2 python-netifaces))
92cb152b 4693
32f77c04
RW
4694(define-public python-networkx
4695 (package
4696 (name "python-networkx")
a4d9609c 4697 (version "1.11")
32f77c04
RW
4698 (source
4699 (origin
4700 (method url-fetch)
a4d9609c 4701 (uri (pypi-uri "networkx" version))
32f77c04 4702 (sha256
a4d9609c 4703 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
4704 (build-system python-build-system)
4705 ;; python-decorator is needed at runtime
4706 (propagated-inputs
4707 `(("python-decorator" ,python-decorator)))
4708 (native-inputs
4709 `(("python-setuptools" ,python-setuptools)
4710 ("python-nose" ,python-nose)))
4711 (home-page "http://networkx.github.io/")
4712 (synopsis "Python module for creating and manipulating graphs and networks")
4713 (description
4714 "NetworkX is a Python package for the creation, manipulation, and study
4715of the structure, dynamics, and functions of complex networks.")
4716 (license bsd-3)))
4717
4718(define-public python2-networkx
4719 (package-with-python2 python-networkx))
4720
92cb152b
RW
4721(define-public snakemake
4722 (package
4723 (name "snakemake")
4724 (version "3.2.1")
4725 (source
4726 (origin
4727 (method url-fetch)
4728 (uri (string-append
4729 "https://pypi.python.org/packages/source/s/snakemake/snakemake-"
4730 version ".tar.gz"))
4731 (sha256
4732 (base32 "0fi4b63sj60hvi7rfydvmz2icl4wj74djw5sn2gl8hxd02qw4b91"))))
4733 (build-system python-build-system)
4734 (inputs `(("python-setuptools" ,python-setuptools)))
4735 (home-page "https://bitbucket.org/johanneskoester/snakemake")
4736 (synopsis "Python-based execution environment for make-like workflows")
4737 (description
4738 "Snakemake aims to reduce the complexity of creating workflows by
4739providing a clean and modern domain specific specification language (DSL) in
4740Python style, together with a fast and comfortable execution environment.")
4741 (license license:expat)))
a1920bc9 4742
35de1fbd
RW
4743(define-public python-seaborn
4744 (package
4745 (name "python-seaborn")
4746 (version "0.5.1")
4747 (source
4748 (origin
4749 (method url-fetch)
4750 (uri (string-append
4751 "https://pypi.python.org/packages/source/s/seaborn/seaborn-"
4752 version ".tar.gz"))
4753 (sha256
4754 (base32 "1236abw18ijjglmv60q85ckqrvgf5qyy4zlq7nz5aqfg6q87z3wc"))))
4755 (build-system python-build-system)
4756 (propagated-inputs
4757 `(("python-pandas" ,python-pandas)
4758 ("python-matplotlib" ,python-matplotlib)
4759 ("python-scipy" ,python-scipy)))
4760 (native-inputs
4761 `(("python-setuptools" ,python-setuptools)))
4762 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
4763 (synopsis "Statistical data visualization")
4764 (description
4765 "Seaborn is a library for making attractive and informative statistical
4766graphics in Python. It is built on top of matplotlib and tightly integrated
4767with the PyData stack, including support for numpy and pandas data structures
4768and statistical routines from scipy and statsmodels.")
4769 (license bsd-3)))
4770
4771(define-public python2-seaborn
4772 (let ((seaborn (package-with-python2 python-seaborn)))
4773 (package (inherit seaborn)
4774 (propagated-inputs
4775 `(("python2-pytz" ,python2-pytz)
dab8ebd9
FB
4776 ("python2-pandas" ,python2-pandas)
4777 ("python2-matplotlib" ,python2-matplotlib)
4778 ("python2-scipy" ,python2-scipy))))))
35de1fbd 4779
90fc547f
RW
4780(define-public python-sympy
4781 (package
4782 (name "python-sympy")
4783 (version "0.7.6")
4784 (source
4785 (origin
4786 (method url-fetch)
4787 (uri (string-append
4788 "https://github.com/sympy/sympy/releases/download/sympy-"
4789 version "/sympy-" version ".tar.gz"))
4790 (sha256
4791 (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
4792 (build-system python-build-system)
4793 (native-inputs
4794 `(("python-setuptools" ,python-setuptools)))
4795 (home-page "http://www.sympy.org/")
4796 (synopsis "Python library for symbolic mathematics")
4797 (description
4798 "SymPy is a Python library for symbolic mathematics. It aims to become a
4799full-featured computer algebra system (CAS) while keeping the code as simple
4800as possible in order to be comprehensible and easily extensible.")
4801 (license bsd-3)))
4802
4803(define-public python2-sympy
4804 (package-with-python2 python-sympy))
4805
a1920bc9
FB
4806(define-public python-testlib
4807 (package
4808 (name "python-testlib")
4809 (version "0.6.5")
4810 (source
4811 (origin
4812 (method url-fetch)
4813 (uri (string-append
4814 "https://pypi.python.org/packages/source/t/testlib/testlib-"
4815 version ".zip"))
4816 (sha256
4817 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
4818 (build-system python-build-system)
4819 (inputs
4820 `(("python-setuptools" ,python-setuptools)))
4821 (native-inputs
4822 `(("unzip" ,unzip)))
4823 (arguments
4824 `(#:phases
4825 (alist-replace
4826 'unpack
4827 (lambda* (#:key inputs outputs #:allow-other-keys)
4828 (let ((unzip (string-append (assoc-ref inputs "unzip")
4829 "/bin/unzip"))
4830 (source (assoc-ref inputs "source")))
4831 (and (zero? (system* unzip source))
4832 (chdir (string-append "testlib-" ,version)))))
4833 %standard-phases)))
4834 (synopsis "Python micro test suite harness")
4835 (description "A micro unittest suite harness for Python.")
4836 (home-page "https://github.com/trentm/testlib")
1cb9c006 4837 (license license:expat)))
a1920bc9
FB
4838
4839(define-public python2-testlib
4840 (package-with-python2 python-testlib))
db62afa5
LC
4841
4842(define-public python2-xlib
4843 (package
4844 (name "python2-xlib")
4845 (version "0.14")
4846 (source (origin
4847 (method url-fetch)
4848 (uri (string-append "mirror://sourceforge/python-xlib/"
4849 "python-xlib-" version ".tar.gz"))
4850 (sha256
4851 (base32
4852 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
4853 (build-system python-build-system)
4854 (arguments
4855 `(#:python ,python-2 ;Python 2 only
4856 #:tests? #f)) ;no tests
4857 (inputs
4858 `(("python-setuptools" ,python-setuptools)))
4859 (home-page "http://python-xlib.sourceforge.net/")
4860 (synopsis "Python X11 client library")
4861 (description
4862 "The Python X Library is intended to be a fully functional X client
4863library for Python programs. It is useful to implement low-level X clients.
4864It is written entirely in Python.")
4865 (license gpl2+)))
0234ca06
DT
4866
4867(define-public python-singledispatch
4868 (package
4869 (name "python-singledispatch")
4870 (version "3.4.0.3")
4871 (source
4872 (origin
4873 (method url-fetch)
4874 (uri (string-append
4875 "https://pypi.python.org/packages/source/s/singledispatch/"
4876 "singledispatch-" version ".tar.gz"))
4877 (sha256
4878 (base32
4879 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
4880 (build-system python-build-system)
4881 (native-inputs
4882 `(("python-setuptools" ,python-setuptools)))
4883 (propagated-inputs
4884 `(("python-six" ,python-six)))
4885 (home-page
4886 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
4887 (synopsis "Backport of singledispatch feature from Python 3.4")
4888 (description
4889 "This library brings functools.singledispatch from Python 3.4 to Python
48902.6-3.3.")
4891 (license license:expat)))
4892
4893(define-public python2-singledispatch
4894 (package-with-python2 python-singledispatch))
feaae484 4895
310d218f
RW
4896(define-public python-tornado
4897 (package
4898 (name "python-tornado")
a724924b 4899 (version "4.3")
310d218f
RW
4900 (source
4901 (origin
4902 (method url-fetch)
a724924b 4903 (uri (pypi-uri "tornado" version))
310d218f 4904 (sha256
a724924b 4905 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f
RW
4906 (build-system python-build-system)
4907 (inputs
4908 `(("python-certifi" ,python-certifi)))
4909 (native-inputs
a724924b
EF
4910 `(("python-backports-abc" ,python-backports-abc)
4911 ("python-setuptools" ,python-setuptools)))
f4a4a718 4912 (home-page "http://www.tornadoweb.org/")
310d218f
RW
4913 (synopsis "Python web framework and asynchronous networking library")
4914 (description
4915 "Tornado is a Python web framework and asynchronous networking library,
4916originally developed at FriendFeed. By using non-blocking network I/O,
4917Tornado can scale to tens of thousands of open connections, making it ideal
4918for long polling, WebSockets, and other applications that require a long-lived
4919connection to each user.")
4920 (license asl2.0)))
4921
4922(define-public python2-tornado
4923 (let ((tornado (package-with-python2 python-tornado)))
4924 (package (inherit tornado)
4925 (inputs
4926 `(("python2-backport-ssl-match-hostname"
4927 ,python2-backport-ssl-match-hostname)
a724924b 4928 ("python2-singledispatch", python2-singledispatch)
310d218f
RW
4929 ,@(package-inputs tornado))))))
4930
6b59fc10
EF
4931;; the python- version can be removed with python-3.5
4932(define-public python-backports-abc
4933 (package
4934 (name "python-backports-abc")
4935 (version "0.4")
4936 (source
4937 (origin
4938 (method url-fetch)
4939 (uri (pypi-uri "backports_abc" version))
4940 (sha256
4941 (base32
4942 "19fh75lni9pb673n2fn505m1rckm0af0szcv5xx1qm1xpa940glb"))))
4943 (build-system python-build-system)
4944 (inputs
4945 `(("python-setuptools" ,python-setuptools)))
4946 (home-page "https://github.com/cython/backports_abc")
4947 (synopsis "Backport of additions to the 'collections.abc' module.")
4948 (description
4949 "Python-backports-abc provides a backport of additions to the
4950'collections.abc' module in Python-3.5.")
4951 (license psfl)))
4952
4953(define-public python2-backports-abc
4954 (package-with-python2 python-backports-abc))
4955
feaae484
SB
4956(define-public python-waf
4957 (package
4958 (name "python-waf")
4959 (version "1.8.8")
4960 (source (origin
4961 (method url-fetch)
4962 (uri (string-append "https://waf.io/"
4963 "waf-" version ".tar.bz2"))
4964 (sha256
4965 (base32
4966 "0b5q307fgn6a5d8yjia2d1l4bk1q3ilvc0w8k4isfrrx2gbcw8wn"))))
4967 (build-system python-build-system)
4968 (arguments
4969 '(#:phases
4970 (modify-phases %standard-phases
4971 (replace 'build
4972 (lambda _
4973 (zero? (begin
4974 (system* "python" "waf-light" "configure")
4975 (system* "python" "waf-light" "build")))))
4976 (replace 'check
4977 (lambda _
4978 (zero? (system* "python" "waf" "--version"))))
4979 (replace 'install
4980 (lambda _
4981 (copy-file "waf" %output))))))
4982 (home-page "https://waf.io/")
4983 (synopsis "Python-based build system")
4984 (description
4985 "Waf is a Python-based framework for configuring, compiling and installing
4986applications.")
4987 (license bsd-3)))
4988
4989(define-public python2-waf
4990 (package-with-python2 python-waf))
45203542
RW
4991
4992(define-public python-pyzmq
4993 (package
4994 (name "python-pyzmq")
3655ee76 4995 (version "15.1.0")
45203542
RW
4996 (source
4997 (origin
4998 (method url-fetch)
3655ee76 4999 (uri (pypi-uri "pyzmq" version))
45203542 5000 (sha256
3655ee76 5001 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
5002 (build-system python-build-system)
5003 (arguments
5004 `(#:configure-flags
5005 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
5006 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
5007 ;; --inplace' for 'python setup.py test' to work.
5008 #:tests? #f))
5009 (inputs
5010 `(("zeromq" ,zeromq)))
5011 (native-inputs
5012 `(("pkg-config" ,pkg-config)
5013 ("python-nose" ,python-nose)
5014 ("python-setuptools" ,python-setuptools)))
5015 (home-page "http://github.com/zeromq/pyzmq")
5016 (synopsis "Python bindings for 0MQ")
5017 (description
5018 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
5019 (license bsd-4)))
5020
5021(define-public python2-pyzmq
5022 (package-with-python2 python-pyzmq))
d889e6c4
CR
5023
5024(define-public python-pep8
5025 (package
5026 (name "python-pep8")
db251311 5027 (version "1.7.0")
d889e6c4
CR
5028 (source
5029 (origin
5030 (method url-fetch)
db251311 5031 (uri (pypi-uri "pep8" version))
d889e6c4
CR
5032 (sha256
5033 (base32
db251311 5034 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4
CR
5035 (build-system python-build-system)
5036 (inputs
5037 `(("python-setuptools" ,python-setuptools)))
5038 (home-page "http://pep8.readthedocs.org/")
5039 (synopsis "Python style guide checker")
5040 (description
5041 "This tools checks Python code against some of the style conventions in
5042PEP 8.")
5043 (license license:expat)))
5044
5045(define-public python2-pep8
5046 (package-with-python2 python-pep8))
e31d7f44
CR
5047
5048(define-public python-pyflakes
5049 (package
5050 (name "python-pyflakes")
2abc3972 5051 (version "1.0.0")
e31d7f44
CR
5052 (source
5053 (origin
5054 (method url-fetch)
2abc3972 5055 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
5056 (sha256
5057 (base32
2abc3972 5058 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44
CR
5059 (build-system python-build-system)
5060 (inputs
5061 `(("python-setuptools" ,python-setuptools)))
5062 (home-page
5063 "https://github.com/pyflakes/pyflakes")
5064 (synopsis "Passive checker of Python programs")
5065 (description
5066 "Pyflakes statically checks Python source code for common errors.")
5067 (license license:expat)))
a59e017c 5068
7261d9eb
CR
5069(define-public python2-pyflakes
5070 (package-with-python2 python-pyflakes))
5071
a59e017c
CR
5072(define-public python-mccabe
5073 (package
5074 (name "python-mccabe")
c6ebd40d 5075 (version "0.4.0")
a59e017c
CR
5076 (source
5077 (origin
5078 (method url-fetch)
c6ebd40d 5079 (uri (pypi-uri "mccabe" version))
a59e017c
CR
5080 (sha256
5081 (base32
c6ebd40d 5082 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c
CR
5083 (build-system python-build-system)
5084 (inputs
c6ebd40d
EF
5085 `(("python-pytest" ,python-pytest)
5086 ("python-pytest-runner" ,python-pytest-runner)
5087 ("python-setuptools" ,python-setuptools)))
a59e017c
CR
5088 (home-page "https://github.com/flintwork/mccabe")
5089 (synopsis "McCabe checker, plugin for flake8")
5090 (description
5091 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
5092complexity of Python source code.")
7362371d 5093 (license license:expat)))
a59e017c
CR
5094
5095(define-public python2-mccabe
5096 (package-with-python2 python-mccabe))
e8df8f47 5097
7477fbb1
CR
5098(define-public python-mccabe-0.2.1
5099 (package (inherit python-mccabe)
5100 (version "0.2.1")
5101 (source
5102 (origin
5103 (method url-fetch)
5104 (uri (pypi-uri "mccabe" version))
5105 (sha256
5106 (base32
c6ebd40d 5107 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))
b3546174 5108 (inputs `(("python-setuptools" ,python-setuptools)))))
7477fbb1
CR
5109
5110(define-public python2-mccabe-0.2.1
5111 (package-with-python2 python-mccabe-0.2.1))
5112
e8df8f47
CR
5113;; Flake8 2.4.1 requires an older version of pep8.
5114;; This should be removed ASAP.
5115(define-public python-pep8-1.5.7
5116 (package (inherit python-pep8)
5117 (version "1.5.7")
5118 (source
5119 (origin
5120 (method url-fetch)
5121 (uri (string-append
5122 "https://pypi.python.org/packages/source/p/pep8/pep8-"
5123 version
5124 ".tar.gz"))
5125 (sha256
5126 (base32
5127 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))))
5128
5129(define-public python2-pep8-1.5.7
5130 (package-with-python2 python-pep8-1.5.7))
5131
5132;; Flake8 2.4.1 requires an older version of pyflakes.
5133;; This should be removed ASAP.
5134(define-public python-pyflakes-0.8.1
5135 (package (inherit python-pyflakes)
5136 (version "0.8.1")
5137 (source
5138 (origin
5139 (method url-fetch)
5140 (uri (string-append
5141 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
5142 version
5143 ".tar.gz"))
5144 (sha256
5145 (base32
5146 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))))
5147
5148(define-public python2-pyflakes-0.8.1
7261d9eb 5149 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
5150
5151(define-public python-flake8
5152 (package
5153 (name "python-flake8")
43789136 5154 (version "2.5.4")
e8df8f47
CR
5155 (source
5156 (origin
5157 (method url-fetch)
1b995533 5158 (uri (pypi-uri "flake8" version))
e8df8f47
CR
5159 (sha256
5160 (base32
43789136 5161 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))))
e8df8f47
CR
5162 (build-system python-build-system)
5163 (inputs
5164 `(("python-setuptools" ,python-setuptools)
43789136
EF
5165 ("python-pep8" ,python-pep8)
5166 ("python-pyflakes" ,python-pyflakes)
e8df8f47
CR
5167 ("python-mccabe" ,python-mccabe)
5168 ("python-mock" ,python-mock)
5169 ("python-nose" ,python-nose)))
5170 (home-page "https://gitlab.com/pycqa/flake8")
5171 (synopsis
5172 "The modular source code checker: pep8, pyflakes and co")
5173 (description
5174 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
5175 (license license:expat)))
5176
5177(define-public python2-flake8
5178 (package-with-python2 python-flake8))
61b9ac53 5179
abf21efc
CR
5180;; This will only be needed by the python-hacking package and will not be
5181;; necessary once python-hacking > 0.10.2 is released.
5182(define-public python-flake8-2.2.4
5183 (package (inherit python-flake8)
5184 (inputs
5185 `(("python-setuptools" ,python-setuptools)
5186 ("python-pep8" ,python-pep8-1.5.7)
5187 ("python-pyflakes" ,python-pyflakes-0.8.1)
5188 ("python-mccabe" ,python-mccabe-0.2.1)
5189 ("python-mock" ,python-mock)
5190 ("python-nose" ,python-nose)))
5191 (version "2.2.4")
5192 (source
5193 (origin
5194 (method url-fetch)
5195 (uri (pypi-uri "flake8" version))
5196 (sha256
5197 (base32
5198 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))))))
5199
5200(define-public python2-flake8-2.2.4
5201 (package-with-python2 python-flake8-2.2.4))
5202
61b9ac53
FB
5203(define-public python-mistune
5204 (package
5205 (name "python-mistune")
5206 (version "0.7")
5207 (source
5208 (origin
5209 (method url-fetch)
5210 (uri (string-append
5211 "https://pypi.python.org/packages/source/m/mistune/mistune-"
5212 version
5213 ".tar.gz"))
5214 (sha256
5215 (base32
5216 "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
5217 (build-system python-build-system)
5218 (inputs
5219 `(("python-setuptools" ,python-setuptools)
5220 ("python-nose" ,python-nose)
5221 ("python-cython" ,python-cython)))
5222 (home-page "https://github.com/lepture/mistune")
5223 (synopsis "Markdown parser in pure Python")
5224 (description "This package provides a fast markdown parser in pure
5225Python.")
5226 (license bsd-3)))
5227
5228(define-public python2-mistune
5229 (package-with-python2 python-mistune))
6d992d07 5230
b9893908
EE
5231(define-public python-markdown
5232 (package
5233 (name "python-markdown")
5234 (version "2.6.5")
5235 (source
5236 (origin
5237 (method url-fetch)
5238 (uri (pypi-uri "Markdown" version))
5239 (sha256
5240 (base32
5241 "0q758a3fiiawr20b3hhjfs677cwj6xi284yb7xspcvv0fdicz54d"))))
5242 (build-system python-build-system)
5243 (arguments
5244 `(#:phases
5245 (modify-phases %standard-phases
5246 (replace 'check
5247 (lambda _
5248 (zero? (system* "python" "run-tests.py")))))))
5249 (native-inputs
5250 `(("python-nose" ,python-nose)
5251 ("python-pyyaml" ,python-pyyaml)))
5252 (home-page "https://pythonhosted.org/Markdown/")
5253 (synopsis "Python implementation of Markdown")
5254 (description
5255 "This package provides a Python implementation of John Gruber's
5256Markdown. The library features international input, various Markdown
5257extensions, and several HTML output formats. A command line wrapper
5258markdown_py is also provided to convert Markdown files to HTML.")
5259 (license bsd-3)))
5260
5261(define-public python2-markdown
5262 (package-with-python2 python-markdown))
5263
6d992d07
FB
5264(define-public python-ptyprocess
5265 (package
5266 (name "python-ptyprocess")
5267 (version "0.5")
5268 (source
5269 (origin
5270 (method url-fetch)
5271 (uri (string-append
5272 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
5273 version ".tar.gz"))
5274 (sha256
5275 (base32
5276 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
5277 (build-system python-build-system)
5278 (inputs
5279 `(("python-setuptools" ,python-setuptools)
5280 ("python-nose" ,python-nose)))
5281 (arguments
5282 `(#:phases
5283 (modify-phases %standard-phases
5284 (replace 'check
5285 (lambda _
5286 (zero? (system* "nosetests")))))))
5287 (home-page "https://github.com/pexpect/ptyprocess")
5288 (synopsis "Run a subprocess in a pseudo terminal")
5289 (description
5290 "This package provides a Python library used to launch a subprocess in a
5291pseudo terminal (pty), and interact with both the process and its pty.")
5292 (license isc)))
5293
5294(define-public python2-ptyprocess
5295 (package-with-python2 python-ptyprocess))
4aadb1df
FB
5296
5297(define-public python-terminado
5298 (package
5299 (name "python-terminado")
5300 (version "0.5")
5301 (source
5302 (origin
5303 (method url-fetch)
5304 (uri (string-append
5305 "https://pypi.python.org/packages/source/t/terminado/terminado-"
5306 version ".tar.gz"))
5307 (sha256
5308 (base32
5309 "1dkmp1n8dj5v1jl9mfrq8lwyc7dsfrvcmz2bgkpg315sy7pr7s33"))))
5310 (build-system python-build-system)
5311 (propagated-inputs
5312 `(("python-tornado" ,python-tornado)
5313 ("python-ptyprocess" ,python-ptyprocess)))
5314 (inputs
5315 `(("python-setuptools" ,python-setuptools)
5316 ("python-nose" ,python-nose)))
5317 (arguments
5318 `(#:phases
5319 (modify-phases %standard-phases
5320 (replace 'check
5321 (lambda _
5322 (zero? (system* "nosetests")))))))
5323 (home-page "https://github.com/takluyver/terminado")
5324 (synopsis "Terminals served to term.js using Tornado websockets")
5325 (description "This package provides a Tornado websocket backend for the
5326term.js Javascript terminal emulator library.")
5327 (license bsd-2)))
5328
5329(define-public python2-terminado
5330 (let ((terminado (package-with-python2 python-terminado)))
5331 (package (inherit terminado)
5332 (propagated-inputs
5333 `(("python2-tornado" ,python2-tornado)
5334 ("python2-backport-ssl-match-hostname"
5335 ,python2-backport-ssl-match-hostname)
5336 ,@(alist-delete "python-tornado"
5337 (package-propagated-inputs terminado)))))))
5faa5ce4 5338
d582eaac
SB
5339(define-public python-fonttools
5340 (package
5341 (name "python-fonttools")
5342 (version "2.5")
5343 (source (origin
5344 (method url-fetch)
5345 (uri (string-append
5346 "https://pypi.python.org/packages/source/F/FontTools/"
5347 "fonttools-" version ".tar.gz"))
5348 (sha256
5349 (base32
5350 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
5351 (build-system python-build-system)
5352 (arguments '(#:test-target "check"))
5353 (propagated-inputs
5354 ;; XXX: module not found if setuptools is not available.
5355 `(("python-setuptools" ,python-setuptools)))
5356 (home-page "http://github.com/behdad/fonttools")
5357 (synopsis "Tools to manipulate font files")
5358 (description
5359 "FontTools/TTX is a library to manipulate font files from Python. It
5360supports reading and writinfg of TrueType/OpenType fonts, reading and writing
5361of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
5362also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
5363from an XML-based format.")
5364 (license (non-copyleft "file://LICENSE.txt"
5365 "See LICENSE.txt in the distribution."))))
5366
5367(define-public python2-fonttools
5368 (package-with-python2 python-fonttools))
75710da6 5369
5faa5ce4
RW
5370(define-public python-ly
5371 (package
5372 (name "python-ly")
b6b07d9d 5373 (version "0.9.3")
5faa5ce4
RW
5374 (source
5375 (origin
5376 (method url-fetch)
5377 (uri (string-append
5378 "https://pypi.python.org/packages/source/p/python-ly/python-ly-"
5379 version ".tar.gz"))
5380 (sha256
5381 (base32
b6b07d9d 5382 "1y6ananq8fia4y4m5id6gvsrm68bzpzd1y46pfzvawic0wjg2l0l"))))
5faa5ce4
RW
5383 (build-system python-build-system)
5384 (native-inputs
5385 `(("python-setuptools" ,python-setuptools)))
5386 (synopsis "Tool and library for manipulating LilyPond files")
5387 (description "This package provides a Python library to parse, manipulate
5388or create documents in LilyPond format. A command line program ly is also
5389provided that can be used to do various manipulations with LilyPond files.")
5390 (home-page "https://pypi.python.org/pypi/python-ly")
5391 (license gpl2+)))
7e7b27d9
CR
5392
5393(define-public python-appdirs
5394 (package
5395 (name "python-appdirs")
5396 (version "1.4.0")
5397 (source
5398 (origin
5399 (method url-fetch)
5400 (uri (string-append
5401 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
5402 version
5403 ".tar.gz"))
5404 (sha256
5405 (base32
5406 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
5407 (build-system python-build-system)
5408 (inputs
5409 `(("python-setuptools" ,python-setuptools)))
5410 (home-page "http://github.com/ActiveState/appdirs")
5411 (synopsis
5412 "Determine platform-specific dirs, e.g. a \"user data dir\"")
5413 (description
5414 "This module provides a portable way of finding out where user data
5415should be stored on various operating systems.")
5416 (license license:expat)))
5417
5418(define-public python2-appdirs
5419 (package-with-python2 python-appdirs))
89b2e0b0
LF
5420
5421(define-public python-llfuse
5422 (package
5423 (name "python-llfuse")
cd0569c4 5424 (version "1.0")
89b2e0b0
LF
5425 (source (origin
5426 (method url-fetch)
5427 (uri (string-append
5428 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
5429 "llfuse-" version ".tar.bz2"))
5430 (sha256
5431 (base32
cd0569c4 5432 "1li7q04ljrvwharw4fblcbfhvk6s0l3lnv8yqb4c22lcgbkiqlps"))))
89b2e0b0
LF
5433 (build-system python-build-system)
5434 (inputs
5435 `(("fuse" ,fuse)
5436 ("attr" ,attr)))
5437 (native-inputs
5438 `(("pkg-config" ,pkg-config)
5439 ("python-setuptools" ,python-setuptools)))
5440 (synopsis "Python bindings for FUSE")
5441 (description
5442 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
5443 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
cd0569c4
LF
5444 (license lgpl2.0+)
5445 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
5446
5447(define-public python2-llfuse
cd0569c4
LF
5448 (package (inherit (package-with-python2
5449 (strip-python2-variant python-llfuse)))
5450 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
5451
5452;; For attic-0.16
5453(define-public python-llfuse-0.41
5454 (package (inherit python-llfuse)
229b3661 5455 (version "0.41.1")
cd0569c4
LF
5456 (source (origin
5457 (method url-fetch)
5458 (uri (string-append
5459 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
5460 "llfuse-" version ".tar.bz2"))
5461 (sha256
5462 (base32
229b3661 5463 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
5464 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
5465 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
5466 (license (list license:expat lgpl2.0+))))
641c9871
LF
5467
5468(define-public python-msgpack
5469 (package
5470 (name "python-msgpack")
ae831df4 5471 (version "0.4.7")
641c9871
LF
5472 (source (origin
5473 (method url-fetch)
ae831df4 5474 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
5475 (sha256
5476 (base32
ae831df4 5477 "0syd7bs83qs9qmxw540jbgsildbqk4yb57fmrlns1021llli402y"))))
641c9871 5478 (build-system python-build-system)
641c9871
LF
5479 (synopsis "MessagePack (de)serializer")
5480 (description "MessagePack is a fast, compact binary serialization format,
5481suitable for similar data to JSON. This package provides CPython bindings for
5482reading and writing MessagePack data.")
5483 (home-page "https://pypi.python.org/pypi/msgpack-python/")
bd74be7b
LF
5484 (license asl2.0)
5485 (properties `((python2-variant . ,(delay python2-msgpack))))))
5486
5487(define-public python2-msgpack
5488 (package (inherit (package-with-python2
5489 (strip-python2-variant python-msgpack)))
5490 (native-inputs
5491 `(("python2-setuptools" ,python2-setuptools)))))
641c9871
LF
5492
5493(define-public python2-msgpack
5494 (package-with-python2 python-msgpack))
6e5e39f4
CR
5495
5496(define-public python-netaddr
5497 (package
5498 (name "python-netaddr")
5499 (version "0.7.18")
5500 (source
5501 (origin
5502 (method url-fetch)
5503 (uri (string-append
5504 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
5505 version
5506 ".tar.gz"))
5507 (sha256
5508 (base32
5509 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
5510 (build-system python-build-system)
5511 (arguments `(#:tests? #f)) ;; No tests.
5512 (inputs
5513 `(("python-setuptools" ,python-setuptools)))
5514 (home-page "https://github.com/drkjam/netaddr/")
5515 (synopsis "Pythonic manipulation of network addresses")
5516 (description
5517 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
5518and MAC network addresses.")
5519 (license bsd-3)))
5520
5521(define-public python2-netaddr
5522 (package-with-python2 python-netaddr))
8c692a52
CR
5523
5524(define-public python-wrapt
5525 (package
5526 (name "python-wrapt")
5527 (version "1.10.5")
5528 (source
5529 (origin
5530 (method url-fetch)
5531 (uri (string-append
5532 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
5533 version
5534 ".tar.gz"))
5535 (sha256
5536 (base32
5537 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
5538 (build-system python-build-system)
5539 (arguments
5540 ;; Tests are not included in the tarball, they are only available in the
5541 ;; git repository.
5542 `(#:tests? #f))
5543 (inputs
5544 `(("python-setuptools" ,python-setuptools)))
5545 (home-page "https://github.com/GrahamDumpleton/wrapt")
5546 (synopsis "Module for decorators, wrappers and monkey patching")
5547 (description
5548 "The aim of the wrapt module is to provide a transparent object proxy for
5549 Python, which can be used as the basis for the construction of function
5550 wrappers and decorator functions.")
5551 (license bsd-2)))
5552
5553(define-public python2-wrapt
5554 (package-with-python2 python-wrapt))
b85c85be
CR
5555
5556(define-public python-iso8601
5557 (package
5558 (name "python-iso8601")
5559 (version "0.1.10")
5560 (source
5561 (origin
5562 (method url-fetch)
5563 (uri (string-append
5564 "https://pypi.python.org/packages/source/i/iso8601/iso8601-"
5565 version
5566 ".tar.gz"))
5567 (sha256
5568 (base32
5569 "1qf01afxh7j4gja71vxv345if8avg6nnm0ry0zsk6j3030xgy4p7"))))
5570 (build-system python-build-system)
5571 (inputs
5572 `(("python-setuptools" ,python-setuptools)))
5573 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
5574 (synopsis "Module to parse ISO 8601 dates")
5575 (description
5576 "This module parses the most common forms of ISO 8601 date strings (e.g.
5577@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
5578 (license license:expat)))
5579
5580(define-public python2-iso8601
5581 (package-with-python2 python-iso8601))
5e412b63
CR
5582
5583(define-public python-monotonic
5584 (package
5585 (name "python-monotonic")
5586 (version "0.3")
5587 (source
5588 (origin
5589 (method url-fetch)
5590 (uri (string-append
5591 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
5592 version
5593 ".tar.gz"))
5594 (sha256
5595 (base32
5596 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
5597 (build-system python-build-system)
5598 (inputs
5599 `(("python-setuptools" ,python-setuptools)))
5600 (home-page "https://github.com/atdt/monotonic")
5601 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
5602 (description
5603 "This module provides a monotonic() function which returns the value (in
5604fractional seconds) of a clock which never goes backwards.")
5605 (license asl2.0)))
5606
5607(define-public python2-monotonic
5608 (package-with-python2 python-monotonic))
de34afac
CR
5609
5610(define-public python-webob
5611 (package
5612 (name "python-webob")
b8834c21 5613 (version "1.5.1")
de34afac
CR
5614 (source
5615 (origin
5616 (method url-fetch)
b8834c21 5617 (uri (pypi-uri "WebOb" version))
de34afac
CR
5618 (sha256
5619 (base32
b8834c21 5620 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac
CR
5621 (build-system python-build-system)
5622 (inputs
5623 `(("python-nose" ,python-nose)
5624 ("python-setuptools" ,python-setuptools)))
5625 (home-page "http://webob.org/")
5626 (synopsis "WSGI request and response object")
5627 (description
5628 "WebOb provides wrappers around the WSGI request environment, and an
5629object to help create WSGI responses.")
5630 (license license:expat)))
5631
5632(define-public python2-webob
5633 (package-with-python2 python-webob))
350ba0a3 5634
02a8a187
BW
5635(define-public python-xlrd
5636 (package
5637 (name "python-xlrd")
5638 (version "0.9.4")
5639 (source (origin
5640 (method url-fetch)
5641 (uri (string-append "https://pypi.python.org/packages/source/x/"
5642 "xlrd/xlrd-" version ".tar.gz"))
5643 (sha256
5644 (base32
5645 "0wpa55nvidmm5m2qr622dsh3cj46akdk0h3zjgzschcmydck73cf"))))
5646 (build-system python-build-system)
5647 (arguments
5648 `(#:phases
5649 (modify-phases %standard-phases
5650 ;; Current test in setup.py does not work as of 0.9.4, so use nose to
5651 ;; run tests instead for now.
5652 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5653 (native-inputs `(("python-nose" ,python-nose)
5654 ("python-setuptools" ,python-setuptools)))
5655 (home-page "http://www.python-excel.org/")
5656 (synopsis "Library for extracting data from Excel files")
5657 (description "This packages provides a library to extract data from
5658spreadsheets using Microsoft Excel® proprietary file formats @samp{.xls} and
5659@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
5660Unicode-aware. It is not intended as an end-user tool.")
5661 (license bsd-3)))
5662
5663(define-public python2-xlrd
5664 (package-with-python2 python-xlrd))
5665
350ba0a3
CR
5666(define-public python-prettytable
5667 (package
5668 (name "python-prettytable")
5669 (version "0.7.2")
5670 (source
5671 (origin
5672 (method url-fetch)
5673 (uri (string-append
5674 "https://pypi.python.org/packages/source/P/PrettyTable/"
5675 "prettytable-" version ".tar.bz2"))
5676 (sha256
5677 (base32
5678 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
5679 (build-system python-build-system)
5680 (inputs
5681 `(("python-setuptools" ,python-setuptools)))
5682 (home-page "http://code.google.com/p/prettytable/")
5683 (synopsis "Display tabular data in an ASCII table format")
5684 (description
5685 "A library designed to represent tabular data in visually appealing ASCII
5686tables. PrettyTable allows for selection of which columns are to be printed,
5687independent alignment of columns (left or right justified or centred) and
5688printing of sub-tables by specifying a row range.")
5689 (license bsd-3)))
5690
5691(define-public python2-prettytable
5692 (package-with-python2 python-prettytable))
7a8ac75a
RW
5693
5694(define-public python-pyasn1
5695 (package
5696 (name "python-pyasn1")
5697 (version "0.1.8")
5698 (source
5699 (origin
5700 (method url-fetch)
5701 (uri (string-append "https://pypi.python.org/packages/source/p/"
5702 "pyasn1/pyasn1-" version ".tar.gz"))
5703 (sha256
5704 (base32
5705 "0iw31d9l0zwx35szkzq72hiw002wnqrlrsi9dpbrfngcl1ybwcsx"))))
5706 (build-system python-build-system)
5707 (home-page "http://pyasn1.sourceforge.net/")
5708 (synopsis "ASN.1 types and codecs")
5709 (description
5710 "This is an implementation of ASN.1 types and codecs in Python. It is
5711suitable for a wide range of protocols based on the ASN.1 specification.")
5712 (license bsd-2)))
5713
5714(define-public python2-pyasn1
5715 (package-with-python2 python-pyasn1))
9a49a535 5716
5988c299
EF
5717(define-public python-pyasn1-modules
5718 (package
5719 (name "python-pyasn1-modules")
5720 (version "0.0.8")
5721 (source
5722 (origin
5723 (method url-fetch)
5724 (uri (pypi-uri "pyasn1-modules" version))
5725 (sha256
5726 (base32
5727 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
5728 (build-system python-build-system)
5729 (native-inputs
5730 `(("python-setuptools" ,python-setuptools)))
5731 (propagated-inputs
5732 `(("python-pyasn1" ,python-pyasn1)))
5733 (home-page "http://sourceforge.net/projects/pyasn1/")
5734 (synopsis "ASN.1 codec implementations")
5735 (description
5736 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
5737implementations of ASN.1-based codecs and protocols.")
5738 (license bsd-3)))
5739
5740(define-public python2-pyasn1-modules
5741 (package-with-python2 python-pyasn1-modules))
5742
9a49a535
RW
5743(define-public python2-ipaddress
5744 (package
5745 (name "python2-ipaddress")
5746 (version "1.0.14")
5747 (source
5748 (origin
5749 (method url-fetch)
5750 (uri (string-append "https://pypi.python.org/packages/source/i/"
5751 "ipaddress/ipaddress-" version ".tar.gz"))
5752 (sha256
5753 (base32
5754 "0givid4963n57nsjibms2fc347zmcs188q1hw9al1dkc9kj4nvr2"))))
5755 (build-system python-build-system)
5756 (arguments
5757 `(#:tests? #f ; no tests
5758 #:python ,python-2))
5759 (home-page "https://github.com/phihag/ipaddress")
5760 (synopsis "IP address manipulation library")
5761 (description
5762 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
5763in Python. This library is used to create, poke at, and manipulate IPv4 and
5764IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
5765module to older versions of Python.")
5766 (license psfl)))
3f00e078
RW
5767
5768(define-public python-idna
5769 (package
5770 (name "python-idna")
5771 (version "2.0")
5772 (source
5773 (origin
5774 (method url-fetch)
5775 (uri (string-append "https://pypi.python.org/packages/source/i/"
5776 "idna/idna-" version ".tar.gz"))
5777 (sha256
5778 (base32
5779 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
5780 (build-system python-build-system)
5781 (native-inputs
5782 `(("python-setuptools" ,python-setuptools)))
5783 (home-page "https://github.com/kjd/idna")
5784 (synopsis "Internationalized domain names in applications")
5785 (description
5786 "This is a library to support the Internationalised Domain Names in
5787Applications (IDNA) protocol as specified in RFC 5891. This version of the
5788protocol is often referred to as “IDNA2008” and can produce different results
5789from the earlier standard from 2003. The library is also intended to act as a
5790suitable drop-in replacement for the “encodings.idna” module that comes with
5791the Python standard library but currently only supports the older 2003
5792specification.")
5793 (license bsd-4)))
5794
5795(define-public python2-idna
5796 (package-with-python2 python-idna))
36ebf972
RW
5797
5798(define-public python-pretend
5799 (package
5800 (name "python-pretend")
5801 (version "1.0.8")
5802 (source
5803 (origin
5804 (method url-fetch)
5805 (uri (string-append "https://pypi.python.org/packages/source/p/"
5806 "pretend/pretend-" version ".tar.gz"))
5807 (sha256
5808 (base32
5809 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
5810 (build-system python-build-system)
5811 (native-inputs
5812 `(("python-setuptools" ,python-setuptools)))
5813 (home-page "https://github.com/alex/pretend")
5814 (synopsis "Library for stubbing in Python")
5815 (description
5816 "Pretend is a library to make stubbing with Python easier. Stubbing is a
5817technique for writing tests. You may hear the term mixed up with mocks,
5818fakes, or doubles. Basically, a stub is an object that returns pre-canned
5819responses, rather than doing any computation.")
5820 (license bsd-3)))
5821
5822(define-public python2-pretend
5823 (package-with-python2 python-pretend))
aa759a51
RW
5824
5825(define-public python-cryptography-vectors
5826 (package
5827 (name "python-cryptography-vectors")
4f363e73 5828 (version "1.3.1")
aa759a51
RW
5829 (source
5830 (origin
5831 (method url-fetch)
5832 (uri (string-append "https://pypi.python.org/packages/source/c/"
5833 "cryptography-vectors/cryptography_vectors-"
5834 version ".tar.gz"))
5835 (sha256
5836 (base32
4f363e73 5837 "1144l3ypz3bngxd59lb4y74xa401w92lhvvjgxzglmvbh8wzkcbb"))))
aa759a51
RW
5838 (build-system python-build-system)
5839 (native-inputs
5840 `(("python-setuptools" ,python-setuptools)))
5841 (home-page "https://github.com/pyca/cryptography")
5842 (synopsis "Test vectors for the cryptography package.")
5843 (description
5844 "This package contains test vectors for the cryptography package.")
5845 ;; Distributed under either BSD-3 or ASL2.0
5846 (license (list bsd-3 asl2.0))))
5847
5848(define-public python2-cryptography-vectors
5849 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
5850
5851(define-public python-cryptography
5852 (package
5853 (name "python-cryptography")
4f363e73 5854 (version "1.3.1")
88b47cb0
RW
5855 (source
5856 (origin
5857 (method url-fetch)
ce6c13ee 5858 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
5859 (sha256
5860 (base32
4f363e73 5861 "1qjkrpfvxcyd0kal3zpm5y7f9p3y77ixn9jw8f4dqpgrw1sn3cxl"))))
88b47cb0
RW
5862 (build-system python-build-system)
5863 (inputs
5864 `(("openssl" ,openssl)))
5865 (propagated-inputs
5866 `(("python-cffi" ,python-cffi)
5867 ("python-six" ,python-six)
5868 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
5869 ("python-idna" ,python-idna)
5870 ("python-iso8601" ,python-iso8601)))
5871 (native-inputs
5872 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 5873 ("python-hypothesis" ,python-hypothesis)
88b47cb0
RW
5874 ("python-setuptools" ,python-setuptools)
5875 ("python-pretend" ,python-pretend)
ce6c13ee
EF
5876 ("python-pyasn1" ,python-pyasn1)
5877 ("python-pyasn1-modules" ,python-pyasn1-modules)
88b47cb0
RW
5878 ("python-pytest" ,python-pytest)))
5879 (home-page "https://github.com/pyca/cryptography")
5880 (synopsis "Cryptographic recipes and primitives for Python")
5881 (description
5882 "cryptography is a package which provides cryptographic recipes and
5883primitives to Python developers. It aims to be the “cryptographic standard
5884library” for Python. The package includes both high level recipes, and low
5885level interfaces to common cryptographic algorithms such as symmetric ciphers,
5886message digests and key derivation functions.")
5887 ;; Distributed under either BSD-3 or ASL2.0
519e2f4f
LF
5888 (license (list bsd-3 asl2.0))
5889 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
5890
5891(define-public python2-cryptography
519e2f4f
LF
5892 (let ((crypto (package-with-python2
5893 (strip-python2-variant python-cryptography))))
88b47cb0
RW
5894 (package (inherit crypto)
5895 (propagated-inputs
5896 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
5897 ("python2-backport-ssl-match-hostname"
5898 ,python2-backport-ssl-match-hostname)
68f1cdec 5899 ("python2-enum34" ,python2-enum34)
88b47cb0 5900 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
5901
5902(define-public python-pyopenssl
5903 (package
5904 (name "python-pyopenssl")
2fc629dd 5905 (version "16.0.0")
5af999b8
RW
5906 (source
5907 (origin
5908 (method url-fetch)
5909 (uri (string-append "https://pypi.python.org/packages/source/p/"
5910 "pyOpenSSL/pyOpenSSL-" version ".tar.gz"))
5911 (sha256
5912 (base32
2fc629dd 5913 "0zfijaxlq4vgi6jz0d4i5xq9ygqnyps6br7lmigjhqnh8gp10g9n"))))
5af999b8 5914 (build-system python-build-system)
5af999b8
RW
5915 (propagated-inputs
5916 `(("python-cryptography" ,python-cryptography)
5917 ("python-six" ,python-six)))
5918 (inputs
5919 `(("openssl" ,openssl)))
5920 (native-inputs
5921 `(("python-setuptools" ,python-setuptools)))
5922 (home-page "https://github.com/pyca/pyopenssl")
5923 (synopsis "Python wrapper module around the OpenSSL library")
5924 (description
5925 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
5926library.")
5927 (license asl2.0)))
5928
5929(define-public python2-pyopenssl
519e2f4f 5930 (package-with-python2 python-pyopenssl))
643725a1
CR
5931
5932(define-public python-pip
5933 (package
5934 (name "python-pip")
6fb54e3b 5935 (version "8.0.2")
643725a1
CR
5936 (source
5937 (origin
5938 (method url-fetch)
6fb54e3b 5939 (uri (pypi-uri "pip" version))
643725a1
CR
5940 (sha256
5941 (base32
6fb54e3b 5942 "08cm8d4228fj0qnrysy3qv1a6022zr3dcs25amd14lgxil6vvx26"))))
643725a1
CR
5943 (build-system python-build-system)
5944 (inputs
5945 `(("python-setuptools" ,python-setuptools)
5946 ("python-virtualenv" ,python-virtualenv)
5947 ;; Tests
5948 ("python-mock" ,python-mock)
5949 ("python-pytest" ,python-pytest)
5950 ("python-scripttest" ,python-scripttest)))
5951 (home-page "https://pip.pypa.io/")
5952 (synopsis
5953 "Package manager for Python software")
5954 (description
5955 "Pip is a package manager for Python software, that finds packages on the
5956Python Package Index (PyPI).")
5957 (license license:expat)))
5958
5959(define-public python2-pip
5960 (package-with-python2 python-pip))
d8c4998f
LC
5961
5962(define-public python-tlsh
5963 (package
5964 (name "python-tlsh")
99b00dc7 5965 (version "3.4.4")
d8c4998f
LC
5966 (home-page "https://github.com/trendmicro/tlsh")
5967 (source (origin
99b00dc7
EF
5968 (method url-fetch)
5969 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
5970 version ".tar.gz"))
d8c4998f
LC
5971 (sha256
5972 (base32
99b00dc7
EF
5973 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
5974 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
5975 (build-system cmake-build-system)
5976 (arguments
5977 '(#:out-of-source? #f
5978 #:phases (modify-phases %standard-phases
5979 (replace
5980 'install
5981 (lambda* (#:key outputs #:allow-other-keys)
5982 ;; Build and install the Python bindings. The underlying
5983 ;; C++ library is apparently not meant to be installed.
5984 (let ((out (assoc-ref outputs "out")))
5985 (with-directory-excursion "py_ext"
5986 (and (system* "python" "setup.py" "build")
5987 (system* "python" "setup.py" "install"
5988 (string-append "--prefix=" out))))))))))
5989 (inputs `(("python" ,python-wrapper))) ;for the bindings
5990 (synopsis "Fuzzy matching library for Python")
5991 (description
5992 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
5993Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
5994value which can be used for similarity comparisons. Similar objects have
5995similar hash values, which allows for the detection of similar objects by
5996comparing their hash values. The byte stream should have a sufficient amount
5997of complexity; for example, a byte stream of identical bytes will not generate
5998a hash value.")
5999 (license asl2.0)))
6000
6001(define-public python2-tlsh
6002 (package
6003 (inherit python-tlsh)
6004 (name "python2-tlsh")
6005 (inputs `(("python" ,python-2)))))
d96034ed
LC
6006
6007(define-public python-libarchive-c
6008 (package
6009 (name "python-libarchive-c")
03fd001c 6010 (version "2.2")
d96034ed
LC
6011 (source (origin
6012 (method url-fetch)
03fd001c 6013 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
6014 (sha256
6015 (base32
03fd001c 6016 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
6017 (build-system python-build-system)
6018 (arguments
6019 '(#:phases (modify-phases %standard-phases
6020 (add-before
6021 'build 'reference-libarchive
6022 (lambda* (#:key inputs #:allow-other-keys)
6023 ;; Retain the absolute file name of libarchive.so.
6024 (let ((libarchive (assoc-ref inputs "libarchive")))
6025 (substitute* "libarchive/ffi.py"
6026 (("find_library\\('archive'\\)")
6027 (string-append "'" libarchive
6028 "/lib/libarchive.so'"))))
6029
6030 ;; Do not make a compressed egg (see
6031 ;; <http://bugs.gnu.org/20765>).
6032 (let ((port (open-file "setup.cfg" "a")))
6033 (display "\n[easy_install]\nzip_ok = 0\n"
6034 port)
6035 (close-port port)
6036 #t))))))
6037 (inputs
6038 `(("python-setuptools" ,python-setuptools)
6039 ("libarchive" ,libarchive)))
6040 (home-page "https://github.com/Changaco/python-libarchive-c")
6041 (synopsis "Python interface to libarchive")
6042 (description
6043 "This package provides Python bindings to libarchive, a C library to
6044access possibly compressed archives in many different formats. It uses
6045Python's @code{ctypes} foreign function interface (FFI).")
6046 (license lgpl2.0+)))
6047
6048(define-public python2-libarchive-c
6049 (package-with-python2 python-libarchive-c))
5e1c9367
LC
6050
6051(define-public python-file
6052 (package
6053 (inherit file)
6054 (name "python-file")
6055 (build-system python-build-system)
6056 (arguments
6057 '(#:tests? #f ;no tests
6058 #:phases (modify-phases %standard-phases
6059 (add-before 'build 'change-directory
6060 (lambda _
6061 (chdir "python")
6062 #t))
6063 (add-before 'build 'set-library-file-name
6064 (lambda* (#:key inputs #:allow-other-keys)
6065 (let ((file (assoc-ref inputs "file")))
6066 (substitute* "magic.py"
6067 (("find_library\\('magic'\\)")
6068 (string-append "'" file "/lib/libmagic.so'")))
6069 #t))))))
6070 (inputs `(("file" ,file)))
6071 (self-native-input? #f)
daeeea71
CM
6072 (synopsis "Python bindings to the libmagic file type guesser. Note that
6073this module and the python-magic module both provide a \"magic.py\" file;
6074these two modules, which are different and were developed separately, both
6075serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
6076
6077(define-public python2-file
6078 (package-with-python2 python-file))
85d4aeac
LC
6079
6080(define-public python-debian
6081 (package
6082 (name "python-debian")
6083 (version "0.1.23")
6084 (source
6085 (origin
6086 (method url-fetch)
6087 (uri (string-append
6088 "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
6089 version ".tar.gz"))
6090 (sha256
6091 (base32
6092 "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
6093 (build-system python-build-system)
6094 (inputs
6095 `(("python-six" ,python-six)))
6096 (native-inputs
6097 `(("python-setuptools" ,python-setuptools)))
6098 (home-page "http://packages.debian.org/sid/python-debian")
6099 (synopsis "Debian package related modules")
6100 (description
5c7bdc9a
LC
6101 ;; XXX: Use @enumerate instead of @itemize to work around
6102 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
6103 "This package provides Python modules that abstract many formats of
6104Debian-related files, such as:
6105
5c7bdc9a 6106@enumerate
85d4aeac
LC
6107@item Debtags information;
6108@item @file{debian/changelog} files;
6109@item packages files, pdiffs;
6110@item control files of single or multiple RFC822-style paragraphs---e.g.
6111 @file{debian/control}, @file{.changes}, @file{.dsc};
6112@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
6113 contained files and meta-information.
5c7bdc9a 6114@end enumerate\n")
85d4aeac
LC
6115
6116 ;; Modules are either GPLv2+ or GPLv3+.
6117 (license gpl3+)))
6118
6119(define-public python2-debian
6120 (package-with-python2 python-debian))
816a6538
LC
6121
6122(define-public python-chardet
6123 (package
6124 (name "python-chardet")
6125 (version "2.3.0")
6126 (source
6127 (origin
6128 (method url-fetch)
6129 (uri (string-append
6130 "https://pypi.python.org/packages/source/c/chardet/chardet-"
6131 version
6132 ".tar.gz"))
6133 (sha256
6134 (base32
6135 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
6136 (build-system python-build-system)
6137 (native-inputs
6138 `(("python-setuptools" ,python-setuptools)))
6139 (home-page "https://github.com/chardet/chardet")
6140 (synopsis "Universal encoding detector for Python 2 and 3")
6141 (description
6142 "This package provides @code{chardet}, a Python module that can
6143automatically detect a wide range of file encodings.")
6144 (license lgpl2.1+)))
6145
6146(define-public python2-chardet
6147 (package-with-python2 python-chardet))
2fc5f186 6148
1872f1bb
KM
6149(define-public python-docopt
6150 (package
6151 (name "python-docopt")
6152 (version "0.6.2")
6153 (source
6154 (origin
6155 (method url-fetch)
6156 ;; The release on PyPI does not include tests.
6157 (uri (string-append
6158 "https://github.com/docopt/docopt/archive/"
6159 version ".tar.gz"))
6160 (file-name (string-append name "-" version ".tar.gz"))
6161 (sha256
6162 (base32
6163 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
6164 (build-system python-build-system)
6165 (native-inputs
6166 `(("python-pytest" ,python-pytest)
6167 ("python-setuptools" ,python-setuptools)))
6168 (arguments
6169 `(#:phases (alist-replace
6170 'check
6171 (lambda _ (zero? (system* "py.test")))
6172 %standard-phases)))
6173 (home-page "http://docopt.org")
6174 (synopsis "Command-line interface description language for Python")
6175 (description "This library allows the user to define a command-line
6176interface from a program's help message rather than specifying it
6177programatically with command-line parsers like @code{getopt} and
6178@code{argparse}.")
6179 (license license:expat)))
6180
6181(define-public python2-docopt
6182 (package-with-python2 python-docopt))
6183
2fc5f186
LF
6184(define-public python-zope-event
6185 (package
6186 (name "python-zope-event")
6187 (version "4.1.0")
6188 (source
6189 (origin
6190 (method url-fetch)
6191 (uri (string-append "https://pypi.python.org/packages/source/z"
6192 "/zope.event/zope.event-" version ".tar.gz"))
6193 (sha256
6194 (base32
6195 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
6196 (build-system python-build-system)
6197 (inputs
6198 `(("python-setuptools" ,python-setuptools)))
6199 (home-page "http://pypi.python.org/pypi/zope.event")
6200 (synopsis "Event publishing system for Python")
6201 (description "Zope.event provides an event publishing API, intended for
6202use by applications which are unaware of any subscribers to their events. It
6203is a simple event-dispatching system on which more sophisticated event
6204dispatching systems can be built.")
6205 (license zpl2.1)))
6206
6207(define-public python2-zope-event
6208 (package-with-python2 python-zope-event))
97abe268
LF
6209
6210(define-public python-zope-interface
6211 (package
6212 (name "python-zope-interface")
6213 (version "4.1.3")
6214 (source
6215 (origin
6216 (method url-fetch)
6217 (uri (string-append "https://pypi.python.org/packages/source/z"
6218 "/zope.interface/zope.interface-" version ".tar.gz"))
6219 (sha256
6220 (base32
6221 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
6222 (build-system python-build-system)
6223 (propagated-inputs
6224 `(("python-zope-event" ,python-zope-event)))
6225 (home-page "https://github.com/zopefoundation/zope.interface")
6226 (synopsis "Python implementation of the \"design by contract\"
6227methodology")
6228 (description "Zope.interface provides an implementation of \"object
6229interfaces\" for Python. Interfaces are a mechanism for labeling objects as
6230conforming to a given API or contract.")
6231 (license zpl2.1)))
6232
6233(define-public python2-zope-interface
6234 (package-with-python2 python-zope-interface))
81f2373c
LF
6235
6236(define-public python-zope-exceptions
6237 (package
6238 (name "python-zope-exceptions")
6239 (version "4.0.8")
6240 (source
6241 (origin
6242 (method url-fetch)
6243 (uri (string-append "https://pypi.python.org/packages/source/z"
6244 "/zope.exceptions/zope.exceptions-"
6245 version ".tar.gz"))
6246 (sha256
6247 (base32
6248 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
6249 (build-system python-build-system)
6250 (arguments
6251 '(#:tests? #f)) ; circular dependency with zope.testrunner
6252 (propagated-inputs
6253 `(("python-zope-interface" ,python-zope-interface)))
6254 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
6255 (synopsis "Zope exceptions")
6256 (description "Zope.exceptions provides general-purpose exception types
6257that have uses outside of the Zope framework.")
6258 (license zpl2.1)))
6259
6260(define-public python2-zope-exceptions
6261 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
6262
6263(define-public python-zope-testing
6264 (package
6265 (name "python-zope-testing")
6266 (version "4.5.0")
6267 (source
6268 (origin
6269 (method url-fetch)
6270 (uri (string-append "https://pypi.python.org/packages/source/z"
6271 "/zope.testing/zope.testing-" version ".tar.gz"))
6272 (sha256
6273 (base32
6274 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))))
6275 (build-system python-build-system)
6276 (native-inputs
6277 `(("python-zope-exceptions" ,python-zope-exceptions)))
6278 (propagated-inputs
6279 `(("python-zope-interface" ,python-zope-interface)))
6280 (home-page "http://pypi.python.org/pypi/zope.testing")
6281 (synopsis "Zope testing helpers")
6282 (description "Zope.testing provides a number of testing utilities for HTML
6283forms, HTTP servers, regular expressions, and more.")
6284 (license zpl2.1)))
6285
6286(define-public python2-zope-testing
6287 (package-with-python2 python-zope-testing))
01614c4f
LF
6288
6289(define-public python-zope-testrunner
6290 (package
6291 (name "python-zope-testrunner")
6292 (version "4.4.9")
6293 (source
6294 (origin
6295 (method url-fetch)
6296 (uri (string-append "https://pypi.python.org/packages/source/z"
6297 "/zope.testrunner/zope.testrunner-"
6298 version ".zip"))
6299 (sha256
6300 (base32
6301 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
6302 (build-system python-build-system)
6303 (native-inputs
6304 `(("python-six" ,python-six)
6305 ("python-zope-exceptions" ,python-zope-exceptions)
6306 ("python-zope-testing" ,python-zope-testing)
6307 ("unzip" ,unzip)))
6308 (propagated-inputs
6309 `(("python-zope-interface" ,python-zope-interface)))
6310 (home-page "http://pypi.python.org/pypi/zope.testrunner")
6311 (synopsis "Zope testrunner script")
6312 (description "Zope.testrunner provides a script for running Python
6313tests.")
6314 (license zpl2.1)))
6315
6316(define-public python2-zope-testrunner
6317 (let ((base (package-with-python2 python-zope-testrunner)))
6318 (package
6319 (inherit base)
6320 (native-inputs
6321 (append (package-native-inputs base)
6322 `(("python2-subunit" ,python2-subunit)
6323 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
6324
6325(define-public python-zope-i18nmessageid
6326 (package
6327 (name "python-zope-i18nmessageid")
6328 (version "4.0.3")
6329 (source
6330 (origin
6331 (method url-fetch)
6332 (uri (string-append
6333 "https://pypi.python.org/packages/source/z"
6334 "/zope.i18nmessageid/zope.i18nmessageid-"
6335 version ".tar.gz"))
6336 (sha256
6337 (base32
6338 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
6339 (build-system python-build-system)
6340 (inputs
6341 `(("python-setuptools" ,python-setuptools)))
6342 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
6343 (synopsis "Message identifiers for internationalization")
6344 (description "Zope.i18nmessageid provides facilities for declaring
6345internationalized messages within program source text.")
6346 (license zpl2.1)))
6347
6348(define-public python2-zope-i18nmessageid
6349 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
6350
6351(define-public python-zope-schema
6352 (package
6353 (name "python-zope-schema")
6354 (version "4.4.2")
6355 (source
6356 (origin
6357 (method url-fetch)
6358 (uri (string-append "https://pypi.python.org/packages/source/z"
6359 "/zope.schema/zope.schema-" version ".tar.gz"))
6360 (sha256
6361 (base32
6362 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
6363 (build-system python-build-system)
6364 (propagated-inputs
6365 `(("python-zope-event" ,python-zope-event)
6366 ("python-zope-interface" ,python-zope-interface)))
6367 (native-inputs
6368 `(("python-zope-testing" ,python-zope-testing)))
6369 (home-page "http://pypi.python.org/pypi/zope.schema")
6370 (synopsis "Zope data schemas")
6371 (description "Zope.scheme provides extensions to zope.interface for
6372defining data schemas.")
6373 (license zpl2.1)))
6374
6375(define-public python2-zope-schema
6376 (package-with-python2 python-zope-schema))
fbac9b17
LF
6377
6378(define-public python-zope-configuration
6379 (package
6380 (name "python-zope-configuration")
6381 (version "4.0.3")
6382 (source (origin
6383 (method url-fetch)
6384 (uri (string-append "https://pypi.python.org/packages/source/z"
6385 "/zope.configuration/zope.configuration-"
6386 version ".tar.gz"))
6387 (sha256
6388 (base32
6389 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
6390 (build-system python-build-system)
6391 (propagated-inputs
6392 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6393 ("python-zope-schema" ,python-zope-schema)))
6394 (home-page "http://pypi.python.org/pypi/zope.configuration")
6395 (synopsis "Zope Configuration Markup Language")
6396 (description "Zope.configuration implements ZCML, the Zope Configuration
6397Markup Language.")
6398 (license zpl2.1)))
6399
6400(define-public python2-zope-configuration
6401 (package-with-python2 python-zope-configuration))
2ad52086
LF
6402
6403(define-public python-zope-proxy
6404 (package
6405 (name "python-zope-proxy")
6406 (version "4.1.6")
6407 (source
6408 (origin
6409 (method url-fetch)
6410 (uri (string-append "https://pypi.python.org/packages/source/z"
6411 "/zope.proxy/zope.proxy-" version ".tar.gz"))
6412 (sha256
6413 (base32
6414 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
6415 (build-system python-build-system)
6416 (propagated-inputs
6417 `(("python-zope-interface" ,python-zope-interface)))
6418 (home-page "http://pypi.python.org/pypi/zope.proxy")
6419 (synopsis "Generic, transparent proxies")
6420 (description "Zope.proxy provides generic, transparent proxies for Python.
6421Proxies are special objects which serve as mostly-transparent wrappers around
6422another object, intervening in the apparent behavior of the wrapped object
6423only when necessary to apply the policy (e.g., access checking, location
6424brokering, etc.) for which the proxy is responsible.")
6425 (license zpl2.1)))
6426
6427(define-public python2-zope-proxy
6428 (package-with-python2 python-zope-proxy))
f404b5ea
LF
6429
6430(define-public python-zope-location
6431 (package
6432 (name "python-zope-location")
6433 (version "4.0.3")
6434 (source
6435 (origin
6436 (method url-fetch)
6437 (uri (string-append "https://pypi.python.org/packages/source/z"
6438 "/zope.location/zope.location-" version ".tar.gz"))
6439 (sha256
6440 (base32
6441 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
6442 (build-system python-build-system)
6443 (native-inputs
6444 `(("python-zope-proxy" ,python-zope-proxy)
6445 ("python-zope-schema" ,python-zope-schema)))
6446 (home-page "http://pypi.python.org/pypi/zope.location/")
6447 (synopsis "Zope location library")
6448 (description "Zope.location implements the concept of \"locations\" in
6449Zope3, which are are special objects that have a structural location.")
6450 (license zpl2.1)))
6451
6452(define-public python2-zope-location
6453 (package-with-python2 python-zope-location))
d4b77f36
LF
6454
6455(define-public python-zope-security
6456 (package
6457 (name "python-zope-security")
6458 (version "4.0.3")
6459 (source
6460 (origin
6461 (method url-fetch)
6462 (uri (string-append "https://pypi.python.org/packages/source/z"
6463 "/zope.security/zope.security-" version ".tar.gz"))
6464 (sha256
6465 (base32
6466 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
6467 (build-system python-build-system)
6468 (propagated-inputs
6469 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6470 ("python-zope-component" ,python-zope-component)
6471 ("python-zope-location" ,python-zope-location)
6472 ("python-zope-proxy" ,python-zope-proxy)
6473 ("python-zope-schema" ,python-zope-schema)
6474 ("python-zope-testrunner" ,python-zope-testrunner)
6475 ("python-zope-testing" ,python-zope-testing)))
6476 (home-page "http://pypi.python.org/pypi/zope.security")
6477 (synopsis "Zope security framework")
6478 (description "Zope.security provides a generic mechanism to implement
6479security policies on Python objects.")
6480 (license zpl2.1)))
6481
6482(define-public python2-zope-security
04417662
EF
6483 (let ((zope-security (package-with-python2 python-zope-security)))
6484 (package (inherit zope-security)
6485 (propagated-inputs
6486 `(("python2-zope-testrunner" ,python2-zope-testrunner)
6487 ,@(alist-delete
6488 "python-zope-testrunner"
6489 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
6490
6491(define-public python-zope-component
6492 (package
6493 (name "python-zope-component")
6494 (version "4.2.2")
6495 (source
6496 (origin
6497 (method url-fetch)
6498 (uri (string-append "https://pypi.python.org/packages/source/z"
6499 "/zope.component/zope.component-" version ".tar.gz"))
6500 (sha256
6501 (base32
6502 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
6503 (build-system python-build-system)
6504 (arguments
6505 ;; Skip tests due to circular dependency with python-zope-security.
6506 '(#:tests? #f))
6507 (native-inputs
6508 `(("python-zope-testing" ,python-zope-testing)))
6509 (propagated-inputs
6510 `(("python-zope-event" ,python-zope-event)
6511 ("python-zope-interface" ,python-zope-interface)
6512 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
6513 ("python-zope-configuration" ,python-zope-configuration)))
6514 (home-page "https://github.com/zopefoundation/zope.component")
6515 (synopsis "Zope Component Architecture")
6516 (description "Zope.component represents the core of the Zope Component
6517Architecture. Together with the zope.interface package, it provides
6518facilities for defining, registering and looking up components.")
6519 (license zpl2.1)))
6520
6521(define-public python2-zope-component
6522 (package-with-python2 python-zope-component))
3859ac12 6523
b5f218be
LF
6524(define-public python2-pythondialog
6525 (package
6526 (name "python2-pythondialog")
6527 (version "3.3.0")
6528 (source
6529 (origin
6530 (method url-fetch)
6531 (uri (string-append "https://pypi.python.org/packages/source/p/"
6532 "python2-pythondialog/python2-pythondialog-"
6533 version ".tar.gz"))
6534 (sha256
6535 (base32
6536 "1yhkagsh99bfi592ymczf8rnw8rk6n9hdqy3dd98m3yrx8zmjvry"))))
6537 (build-system python-build-system)
6538 (arguments
6539 `(#:phases
6540 (modify-phases %standard-phases
6541 (add-after 'unpack 'patch-path
6542 (lambda* (#:key inputs #:allow-other-keys)
6543 (let* ((dialog (assoc-ref inputs "dialog")))
6544 ;; Since this library really wants to grovel the search path, we
6545 ;; must hardcode dialog's store path into it.
6546 (substitute* "dialog.py"
6547 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
6548 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
6549 #t))))
6550 #:python ,python-2
6551 #:tests? #f)) ; no test suite
6552 (propagated-inputs
6553 `(("dialog" ,dialog)))
6554 (home-page "http://pythondialog.sourceforge.net/")
6555 (synopsis "Python interface to the UNIX dialog utility")
6556 (description "A Python wrapper for the dialog utility. Its purpose is to
6557provide an easy to use, pythonic and comprehensive Python interface to dialog.
6558This allows one to make simple text-mode user interfaces on Unix-like systems")
6559 (license lgpl2.1)))
6560
3859ac12
LF
6561(define-public python-pyrfc3339
6562 (package
6563 (name "python-pyrfc3339")
d9aa097b 6564 (version "1.0")
3859ac12
LF
6565 (source
6566 (origin
6567 (method url-fetch)
d9aa097b 6568 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
6569 (sha256
6570 (base32
d9aa097b 6571 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
6572 (build-system python-build-system)
6573 (propagated-inputs
6574 `(("python-pytz" ,python-pytz)))
6575 (native-inputs
6576 `(("python-nose" ,python-nose)
6577 ("python-setuptools" ,python-setuptools)))
6578 (home-page "https://github.com/kurtraschke/pyRFC3339")
6579 (synopsis "Python timestamp library")
6580 (description "Python library for generating and parsing RFC 3339-compliant
6581timestamps.")
6582 (license license:expat)))
6583
6584(define-public python2-pyrfc3339
6585 (package-with-python2 python-pyrfc3339))
5eea2005
LF
6586
6587(define-public python-werkzeug
6588 (package
6589 (name "python-werkzeug")
6590 (version "0.11.2")
6591 (source
6592 (origin
6593 (method url-fetch)
6594 (uri (string-append "https://pypi.python.org/packages/source/W/Werkzeug"
6595 "/Werkzeug-" version ".tar.gz"))
6596 (file-name (string-append name "-" version ".tar.gz"))
6597 (sha256
6598 (base32
6599 "1gzwn1lkl90f3l1nzzxr7vjhm21qk8f837i8rvny5a209fcrhkzb"))))
6600 (build-system python-build-system)
6601 (native-inputs
6602 `(("python-pytest" ,python-pytest)))
6603 (home-page "http://werkzeug.pocoo.org/")
6604 (synopsis "Utilities for WSGI applications")
6605 (description "One of the most advanced WSGI utility modules. It includes a
6606powerful debugger, full-featured request and response objects, HTTP utilities to
6607handle entity tags, cache control headers, HTTP dates, cookie handling, file
6608uploads, a powerful URL routing system and a bunch of community-contributed
6609addon modules.")
6610 (license x11)))
6611
6612(define-public python2-werkzeug
6613 (package-with-python2 python-werkzeug))
99fffa8a
LF
6614
6615(define-public python-configobj
6616 (package
6617 (name "python-configobj")
6618 (version "5.0.6")
6619 (source (origin
6620 (method url-fetch)
6621 (uri (string-append
6622 "https://pypi.python.org/packages/source/c/configobj/"
6623 "configobj-" version ".tar.gz"))
6624 (sha256
6625 (base32
6626 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
6627 ;; Patch setup.py so it looks for python-setuptools, which is
6628 ;; required to parse the keyword 'install_requires' in setup.py.
6629 (patches (list (search-patch "python-configobj-setuptools.patch")))))
6630 (build-system python-build-system)
6631 (native-inputs
6632 `(("python-setuptools" ,python-setuptools)
6633 ("python-six" ,python-six)))
6634 (synopsis "Config file reading, writing and validation")
6635 (description "ConfigObj is a simple but powerful config file reader and
6636writer: an ini file round tripper. Its main feature is that it is very easy to
6637use, with a straightforward programmer’s interface and a simple syntax for
6638config files.")
6639 (home-page "https://github.com/DiffSK/configobj")
6640 (license bsd-3)))
6641
6642(define-public python2-configobj
6643 (package-with-python2 python-configobj))
79e8a291
LF
6644
6645(define-public python-configargparse
6646 (package
6647 (name "python-configargparse")
6648 (version "0.10.0")
6649 (source (origin
6650 (method url-fetch)
6651 (uri (string-append
6652 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
6653 "ConfigArgParse-" version ".tar.gz"))
6654 (sha256
6655 (base32
6656 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
6657 (build-system python-build-system)
6658 (arguments
6659 ;; FIXME: Bug in test suite filed upstream:
6660 ;; https://github.com/bw2/ConfigArgParse/issues/32
6661 '(#:tests? #f))
6662 (synopsis "Replacement for argparse")
6663 (description "A drop-in replacement for argparse that allows options to also
6664be set via config files and/or environment variables.")
6665 (home-page "https://github.com/bw2/ConfigArgParse")
6666 (license license:expat)))
6667
6668(define-public python2-configargparse
6669 (package-with-python2 python-configargparse))
ab41f979
LF
6670
6671(define-public python-ndg-httpsclient
6672 (package
6673 (name "python-ndg-httpsclient")
6674 (version "0.4.0")
6675 (source (origin
6676 (method url-fetch)
6677 (uri (string-append
6678 "https://pypi.python.org/packages/source/n/ndg-httpsclient/"
6679 "ndg_httpsclient-" version ".tar.gz"))
6680 (sha256
6681 (base32
6682 "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8"))))
6683 (build-system python-build-system)
6684 (propagated-inputs
6685 `(("python-pyopenssl" ,python-pyopenssl)))
6686 (synopsis "HTTPS support for Python's httplib and urllib2")
6687 (description "This is a HTTPS client implementation for httplib and urllib2
6688based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
6689over the default provided with Python and importantly enables full verification
6690of the SSL peer.")
6691 (home-page "https://github.com/cedadev/ndg_httpsclient/")
6692 (license bsd-3)))
6693
6694;; python2-openssl requires special care, so package-with-python2 is
6695;; insufficient.
6696(define-public python2-ndg-httpsclient
6697 (package (inherit python-ndg-httpsclient)
6698 (name "python2-ndg-httpsclient")
6699 (arguments `(#:python ,python-2))
6700 (propagated-inputs
6701 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
6702
6703(define-public python-contextlib2
6704 (package
6705 (name "python-contextlib2")
6706 (version "0.4.0")
6707 (source
6708 (origin
6709 (method url-fetch)
6710 (uri (pypi-uri "contextlib2" version))
6711 (sha256
6712 (base32
6713 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
6714 (build-system python-build-system)
6715 (arguments
6716 `(#:phases
6717 (modify-phases %standard-phases
6718 (replace 'check
6719 (lambda _ (zero?
6720 (system*
b3546174 6721 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
6722 (home-page "http://contextlib2.readthedocs.org/")
6723 (synopsis "Tools for decorators and context managers")
6724 (description "This module is primarily a backport of the Python
67253.2 contextlib to earlier Python versions. Like contextlib, it
6726provides utilities for common tasks involving decorators and context
6727managers. It also contains additional features that are not part of
6728the standard library.")
6729 (license psfl)))
6730
6731(define-public python2-contextlib2
6732 (package-with-python2 python-contextlib2))
210bf497
DT
6733
6734(define-public python-texttable
6735 (package
6736 (name "python-texttable")
6737 (version "0.8.4")
6738 (source
6739 (origin
6740 (method url-fetch)
6741 (uri (pypi-uri "texttable" version))
6742 (sha256
6743 (base32
6744 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
6745 (build-system python-build-system)
6746 (arguments '(#:tests? #f)) ; no tests
6747 (home-page "https://github.com/foutaise/texttable/")
6748 (synopsis "Python module for creating simple ASCII tables")
6749 (description "Texttable is a Python module for creating simple ASCII
6750tables.")
6751 (license lgpl2.1+)))
6752
6753(define-public python2-texttable
6754 (package-with-python2 python-texttable))
67c52bb3
DT
6755
6756(define-public python-websocket-client
6757 (package
6758 (name "python-websocket-client")
6759 (version "0.34.0")
6760 (source
6761 (origin
6762 (method url-fetch)
6763 (uri (string-append "https://pypi.python.org/packages/source/w"
6764 "/websocket-client/websocket_client-"
6765 version ".tar.gz"))
6766 (sha256
6767 (base32
6768 "1prdx6d49f1cff17kzj15bnz09palfdgc1m5dkq9jd4mr90n4ak8"))))
6769 (build-system python-build-system)
6770 (native-inputs
6771 `(("python-six" ,python-six))) ; for tests
6772 (inputs
6773 `(("python-setuptools" ,python-setuptools)))
6774 (home-page "https://github.com/liris/websocket-client")
6775 (synopsis "WebSocket client for Python")
6776 (description "The Websocket-client module provides the low level APIs for
6777WebSocket usage in Python programs.")
6778 (license lgpl2.1+)))
6779
6780(define-public python2-websocket-client
6781 (package-with-python2 python-websocket-client))
5c6eea2a
LF
6782
6783(define-public python-atomicwrites
6784 (package
6785 (name "python-atomicwrites")
54c30ebc 6786 (version "1.0.0")
5c6eea2a
LF
6787 (source (origin
6788 (method url-fetch)
6789 (uri (pypi-uri "atomicwrites" version))
6790 (sha256
6791 (base32
54c30ebc 6792 "019fa4771q7fb1167yfbh6msdzcqini6v7i59rmf72mzdjd7x5qv"))))
5c6eea2a
LF
6793 (build-system python-build-system)
6794 (synopsis "Atomic file writes in Python")
6795 (description "Library for atomic file writes using platform dependent tools
6796for atomic filesystem operations.")
6797 (home-page "https://github.com/untitaker/python-atomicwrites")
9bb6d184
LF
6798 (license license:expat)
6799 (properties `((python2-variant . ,(delay python2-atomicwrites))))))
6800
6801(define-public python2-atomicwrites
6802 (package (inherit (package-with-python2
6803 (strip-python2-variant python-atomicwrites)))
6804 (native-inputs
6805 `(("python2-setuptools" ,python2-setuptools)))))
561bb3cb
LF
6806
6807(define-public python-requests-toolbelt
6808 (package
6809 (name "python-requests-toolbelt")
da8b011d 6810 (version "0.6.0")
561bb3cb
LF
6811 (source (origin
6812 (method url-fetch)
6813 (uri (pypi-uri "requests-toolbelt" version))
6814 (sha256
6815 (base32
da8b011d 6816 "07slish560haspn0hpwgy2izhk2snqq06s6acp8xzmhhz079qknc"))))
561bb3cb
LF
6817 (build-system python-build-system)
6818 (propagated-inputs
6819 `(("python-requests" ,python-requests)))
6820 (synopsis "Extensions to python-requests")
6821 (description "This is a toolbelt of useful classes and functions to be used
6822with python-requests.")
6823 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
6824 (license asl2.0)))
d1deb90b
LF
6825
6826(define-public python-click-threading
6827 (package
6828 (name "python-click-threading")
6829 (version "0.1.2")
6830 (source (origin
6831 (method url-fetch)
6832 (uri (pypi-uri "click-threading" version))
6833 (sha256
6834 (base32
6835 "0jmrv4334lfxa2ss53c06dafdwqbk1pb3ihd26izn5igw1bm8145"))))
6836 (build-system python-build-system)
6837 (propagated-inputs
6838 `(("python-click" ,python-click)))
6839 (synopsis "Utilities for multithreading in Click")
6840 (description "This package provides utilities for multithreading in Click
6841applications.")
6842 (home-page "https://github.com/click-contrib/click-threading")
6843 (license license:expat)))
7b17cab9
LF
6844
6845(define-public python-click-log
6846 (package
6847 (name "python-click-log")
a9da8fec 6848 (version "0.1.3")
7b17cab9
LF
6849 (source (origin
6850 (method url-fetch)
6851 (uri (pypi-uri "click-log" version))
6852 (sha256
6853 (base32
a9da8fec 6854 "0kdd1vminxpcfczxl2kkf285n0dr1gxh2cdbx1p6vkj7b7bci3gx"))))
7b17cab9
LF
6855 (build-system python-build-system)
6856 (propagated-inputs
6857 `(("python-click" ,python-click)))
6858 (synopsis "Logging for click applications")
6859 (description "This package provides a Python library for logging Click
6860applications.")
6861 (home-page "https://github.com/click-contrib/click-log")
6862 (license license:expat)))
7b3a4ee4
LF
6863
6864(define-public python-apipkg
6865 (package
6866 (name "python-apipkg")
6867 (version "1.4")
6868 (source (origin
6869 (method url-fetch)
6870 (uri (pypi-uri "apipkg" version))
6871 (sha256
6872 (base32
6873 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
6874 (build-system python-build-system)
7b3a4ee4
LF
6875 (propagated-inputs
6876 `(("python-pytest" ,python-pytest)))
6877 (synopsis "Namespace control and lazy-import mechanism")
6878 (description "With apipkg you can control the exported namespace of a Python
6879package and greatly reduce the number of imports for your users. It is a small
6880pure Python module that works on virtually all Python versions.")
6881 (home-page "https://bitbucket.org/hpk42/apipkg")
e08739c3
CAW
6882 (license license:expat)
6883 (properties `((python2-variant . ,(delay python2-apipkg))))))
6884
6885(define-public python2-apipkg
6886 (package
6887 (inherit (package-with-python2
6888 (strip-python2-variant python-apipkg)))
6889 (native-inputs
6890 `(("python2-setuptools" ,python2-setuptools)))))
848964fe
LF
6891
6892(define-public python-execnet
6893 (package
6894 (name "python-execnet")
6895 (version "1.4.1")
6896 (source (origin
6897 (method url-fetch)
6898 (uri (pypi-uri "execnet" version))
6899 (sha256
6900 (base32
6901 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
6902 (build-system python-build-system)
6903 (native-inputs
6904 `(("python-setuptools-scm" ,python-setuptools-scm)))
6905 (propagated-inputs
6906 `(("python-apipkg" ,python-apipkg)))
6907 (synopsis "Rapid multi-Python deployment")
6908 (description "Execnet provides a share-nothing model with
6909channel-send/receive communication for distributing execution across many
6910Python interpreters across version, platform and network barriers. It has a
6911minimal and fast API targetting the following uses:
6912@enumerate
6913@item distribute tasks to (many) local or remote CPUs
6914@item write and deploy hybrid multi-process applications
6915@item write scripts to administer multiple environments
6916@end enumerate")
6917 (home-page "http://codespeak.net/execnet/")
16c84f90
CAW
6918 (license license:expat)
6919 (properties `((python2-variant . ,(delay python2-execnet))))))
6920
6921(define-public python2-execnet
6922 (let ((execnet (package-with-python2
6923 (strip-python2-variant python-execnet))))
6924 (package
6925 (inherit execnet)
6926 (native-inputs
6927 `(("python2-setuptools" ,python2-setuptools)
6928 ,@(package-native-inputs execnet))))))
6720dbb4
LF
6929
6930;;; The software provided by this package was integrated into pytest 2.8.
6931(define-public python-pytest-cache
6932 (package
6933 (name "python-pytest-cache")
6934 (version "1.0")
6935 (source (origin
6936 (method url-fetch)
6937 (uri (pypi-uri "pytest-cache" version))
6938 (sha256
6939 (base32
6940 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
6941 (build-system python-build-system)
6942 (propagated-inputs
6943 `(("python-execnet" ,python-execnet)))
6944 (synopsis "Py.test plugin with mechanisms for caching across test runs")
6945 (description "The pytest-cache plugin provides tools to rerun failures from
6946the last py.test invocation.")
6947 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
6948 (license license:expat)))
d7e729fe
LF
6949
6950(define-public python-pytest-localserver
6951 (package
6952 (name "python-pytest-localserver")
29f20168 6953 (version "0.3.5")
d7e729fe
LF
6954 (source (origin
6955 (method url-fetch)
29f20168 6956 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
6957 (sha256
6958 (base32
29f20168 6959 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
6960 (build-system python-build-system)
6961 (arguments
6962 `(#:phases (modify-phases %standard-phases
6963 (replace 'check
6964 (lambda _
6965 (zero? (system* "py.test" "--genscript=runtests.py"))
6966 (zero? (system* "py.test")))))))
6967 (native-inputs
6968 `(("unzip" ,unzip)))
6969 (propagated-inputs
6970 `(("python-pytest" ,python-pytest)
6971 ("python-requests" ,python-requests)
6972 ("python-six" ,python-six)
6973 ("python-werkzeug" ,python-werkzeug)))
6974 (synopsis "Py.test plugin to test server connections locally")
6975 (description "Pytest-localserver is a plugin for the pytest testing
6976framework which enables you to test server connections locally.")
6977 (home-page "https://pypi.python.org/pypi/pytest-localserver")
6978 (license license:expat)))
28cecbb7
LF
6979
6980(define-public python-wsgi-intercept
6981 (package
6982 (name "python-wsgi-intercept")
9d813ec1 6983 (version "1.1.2")
28cecbb7
LF
6984 (source (origin
6985 (method url-fetch)
6986 (uri (pypi-uri "wsgi_intercept" version))
6987 (sha256
6988 (base32
9d813ec1 6989 "14ajy415ch5d0dnspg4b592p66wlgzah7ay218flp13517fp49zl"))))
28cecbb7
LF
6990 (build-system python-build-system)
6991 (native-inputs
9d813ec1
EF
6992 `(("python-pytest" ,python-pytest)
6993 ("python-six" ,python-six)))
28cecbb7
LF
6994 (propagated-inputs
6995 `(("python-httplib2" ,python-httplib2)
6996 ("python-requests" ,python-requests)))
6997 (synopsis "Puts a WSGI application in place of a real URI for testing")
6998 (description "Wsgi_intercept installs a WSGI application in place of a real
6999URI for testing. Testing a WSGI application normally involves starting a
7000server at a local host and port, then pointing your test code to that address.
7001Instead, this library lets you intercept calls to any specific host/port
7002combination and redirect them into a WSGI application importable by your test
7003program. Thus, you can avoid spawning multiple processes or threads to test
7004your Web app.")
7005 (home-page "https://github.com/cdent/wsgi-intercept")
7006 (license license:expat)))
89b8a551
LF
7007
7008(define-public python-pytest-xprocess
7009 (package
7010 (name "python-pytest-xprocess")
7011 (version "0.9.1")
7012 (source (origin
7013 (method url-fetch)
7014 (uri (pypi-uri "pytest-xprocess" version))
7015 (sha256
7016 (base32
7017 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
7018 (build-system python-build-system)
7019 (propagated-inputs
7020 `(("python-pytest" ,python-pytest)
7021 ("python-pytest-cache" ,python-pytest-cache)
7022 ("python-psutil" ,python-psutil)))
7023 (synopsis "Pytest plugin to manage external processes across test runs")
7024 (description "Pytest-xprocess is an experimental py.test plugin for managing
7025processes across test runs.")
7026 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
7027 (license license:expat)))
5c299bf0
LF
7028
7029(define-public python-icalendar
7030 (package
7031 (name "python-icalendar")
7032 (version "3.9.1")
7033 (source (origin
7034 (method url-fetch)
7035 (uri (pypi-uri "icalendar" version))
7036 (sha256
7037 (base32
7038 "0fhrczdj3jxy5bvswphp3vys7vwv5c9bpwg7asykqwa3z6253q6q"))))
7039 (build-system python-build-system)
7040 (propagated-inputs
7041 `(("python-dateutil-2" ,python-dateutil-2)
7042 ("python-pytz" ,python-pytz)))
7043 (synopsis "Python library for parsing iCalendar files")
7044 (description "The icalendar package is a parser/generator of iCalendar
7045files for use with Python.")
7046 (home-page "https://github.com/collective/icalendar")
7047 (license bsd-2)))
6bbbb53e
LF
7048
7049(define-public python-sphinxcontrib-newsfeed
7050 (package
7051 (name "python-sphinxcontrib-newsfeed")
7052 (version "0.1.4")
7053 (source (origin
7054 (method url-fetch)
7055 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
7056 (sha256
7057 (base32
7058 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
7059 (build-system python-build-system)
7060 (propagated-inputs
7061 `(("python-docutils" ,python-docutils)
7062 ("python-sphinx" ,python-sphinx)))
7063 (synopsis "News Feed extension for Sphinx")
7064 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
7065Blog, News or Announcements section to a Sphinx website.")
7066 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
7067 (license bsd-2)))
2216e15c
SB
7068
7069(define-public python-args
7070 (package
7071 (name "python-args")
7072 (version "0.1.0")
7073 (source (origin
7074 (method url-fetch)
7075 (uri (pypi-uri "args" version))
7076 (sha256
7077 (base32
7078 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
7079 (build-system python-build-system)
7080 (inputs
7081 `(("python-setuptools" ,python-setuptools)))
7082 (home-page "https://github.com/kennethreitz/args")
7083 (synopsis "Command-line argument parser")
7084 (description
7085 "This library provides a Python module to parse command-line arguments.")
7086 (license bsd-3)))
7087
7088(define-public python2-args
7089 (package-with-python2 python-args))
c06a3de9
SB
7090
7091(define-public python-clint
7092 (package
7093 (name "python-clint")
7094 (version "0.5.1")
7095 (source (origin
7096 (method url-fetch)
7097 (uri (pypi-uri "clint" version))
7098 (sha256
7099 (base32
7100 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
7101 (build-system python-build-system)
7102 (inputs
7103 `(("python-args" ,python-args)
7104 ("python-setuptools" ,python-setuptools)))
7105 (home-page "https://github.com/kennethreitz/clint")
7106 (synopsis "Command-line interface tools")
7107 (description
7108 "Clint is a Python module filled with a set of tools for developing
7109command-line applications, including tools for colored and indented
7110output, progress bar display, and pipes.")
7111 (license isc)))
7112
7113(define-public python2-clint
7114 (package-with-python2 python-clint))
4ecdeef8
SB
7115
7116(define-public python-astor
7117 (package
7118 (name "python-astor")
7119 (version "0.5")
7120 (source (origin
7121 (method url-fetch)
7122 (uri (pypi-uri "astor" version))
7123 (sha256
7124 (base32
7125 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
7126 (build-system python-build-system)
7127 (inputs
7128 `(("python-setuptools" ,python-setuptools)))
7129 (home-page "https://github.com/berkerpeksag/astor")
7130 (synopsis "Read and write Python ASTs")
7131 (description
7132 "Astor is designed to allow easy manipulation of Python source via the
7133Abstract Syntax Tree.")
7134 (license bsd-3)))
7135
7136(define-public python2-astor
7137 (package-with-python2 python-astor))
e224b7d0
SB
7138
7139(define-public python-rply
7140 (package
7141 (name "python-rply")
7142 (version "0.7.4")
7143 (source (origin
7144 (method url-fetch)
7145 (uri (pypi-uri "rply" version))
7146 (sha256
7147 (base32
7148 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
7149 (build-system python-build-system)
7150 (inputs
7151 `(("python-appdirs" ,python-appdirs)
7152 ("python-setuptools" ,python-setuptools)))
7153 (home-page "https://github.com/alex/rply")
7154 (synopsis "Parser generator for Python")
7155 (description
7156 "This package provides a pure Python based parser generator, that also
7157works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
7158with a new public API, and RPython support.")
7159 (license bsd-3)))
7160
7161(define-public python2-rply
7162 (package-with-python2 python-rply))
c3e919d7
SB
7163
7164(define-public python-hy
7165 (package
7166 (name "python-hy")
7167 (version "0.11.1")
7168 (source (origin
7169 (method url-fetch)
7170 (uri (pypi-uri "hy" version))
7171 (sha256
7172 (base32
7173 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
7174 (build-system python-build-system)
7175 (inputs
7176 `(("python-astor" ,python-astor)
7177 ("python-clint" ,python-clint)
7178 ("python-rply" ,python-rply)
7179 ("python-setuptools" ,python-setuptools)))
7180 (home-page "http://hylang.org/")
7181 (synopsis "Lisp frontend to Python")
7182 (description
7183 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
7184its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
7185Python at your fingertips, in Lisp form.")
7186 (license license:expat)))
7187
7188(define-public python2-hy
7189 (package-with-python2 python-hy))
7a5b944e 7190
81f7f297
EF
7191(define-public python-rauth
7192 (package
7193 (name "python-rauth")
7194 (version "0.7.2")
7195 (source
7196 (origin
7197 (method url-fetch)
7198 (uri (pypi-uri "rauth" version))
7199 (sha256
7200 (base32
7201 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
7202 (build-system python-build-system)
7203 (arguments
7204 `(#:test-target "check"))
7205 (native-inputs
7206 `(("python-setuptools" ,python-setuptools)))
7207 (propagated-inputs
7208 `(("python-requests" ,python-requests)))
7209 (home-page "https://github.com/litl/rauth")
7210 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
7211 (description
7212 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
7213provides service wrappers for convenient connection initialization and
7214authenticated session objects providing things like keep-alive.")
7215 (license license:expat)))
7216
7217(define-public python2-rauth
7218 (let ((rauth (package-with-python2 python-rauth)))
7219 (package (inherit rauth)
264ae686 7220 (propagated-inputs `(("python2-requests" ,python2-requests)))
81f7f297 7221 (native-inputs
b3546174 7222 `(("python2-unittest2" ,python2-unittest2)
81f7f297
EF
7223 ,@(package-native-inputs rauth))))))
7224
1abe448d
EF
7225(define-public python2-functools32
7226 (package
7227 (name "python2-functools32")
7228 (version "3.2.3-2")
7229 (source
7230 (origin
7231 (method url-fetch)
7232 (uri (pypi-uri "functools32" version))
7233 (sha256
7234 (base32
7235 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
7236 (build-system python-build-system)
7237 (arguments
7238 `(#:python ,python-2
7239 #:tests? #f)) ; no test target
7240 (native-inputs
7241 `(("python2-setuptools" ,python2-setuptools)))
7242 (home-page "https://github.com/MiCHiLU/python-functools32")
7243 (synopsis
7244 "Backport of the functools module from Python 3.2.3")
7245 (description
7246 "This package is a backport of the @code{functools} module from Python
72473.2.3 for use with older versions of Python and PyPy.")
7248 (license license:expat)))
7249
877889f3 7250(define-public python2-futures
7a5b944e 7251 (package
877889f3 7252 (name "python2-futures")
7a5b944e
EF
7253 (version "3.0.3")
7254 (source
7255 (origin
7256 (method url-fetch)
7257 (uri (pypi-uri "futures" version))
7258 (sha256
7259 (base32
7260 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
7261 (build-system python-build-system)
877889f3 7262 (arguments `(#:python ,python-2))
7a5b944e 7263 (native-inputs
877889f3 7264 `(("python2-setuptools" ,python2-setuptools)))
7a5b944e
EF
7265 (home-page "https://github.com/agronholm/pythonfutures")
7266 (synopsis
7267 "Backport of the concurrent.futures package from Python 3.2")
7268 (description
7269 "The concurrent.futures module provides a high-level interface for
7270asynchronously executing callables. This package backports the
7271concurrent.futures package from Python 3.2")
7272 (license bsd-3)))
7273
c18f6368
EF
7274(define-public python-urllib3
7275 (package
7276 (name "python-urllib3")
7277 (version "1.13.1")
7278 (source
7279 (origin
7280 (method url-fetch)
7281 (uri (pypi-uri "urllib3" version))
7282 (sha256
7283 (base32
7284 "10rrbr6c6k7j5dvfsyj4b2gsgxg9gggnn708qixf6ll57xqivfkf"))))
7285 (build-system python-build-system)
7286 (arguments `(#:tests? #f))
7287 (native-inputs
7288 `(("python-setuptools" ,python-setuptools)
7289 ;; some packages for tests
7290 ("python-nose" ,python-nose)
7291 ("python-mock" ,python-mock)
7292 ("python-tornado" ,python-tornado)))
7293 (propagated-inputs
7294 `(;; packages for https security
7295 ("python-certifi" ,python-certifi)
7296 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
7297 ("python-pyasn1" ,python-pyasn1)
7298 ("python-pyopenssl" ,python-pyopenssl)))
7299 (home-page "http://urllib3.readthedocs.org/")
7300 (synopsis "HTTP library with thread-safe connection pooling")
7301 (description
7302 "Urllib3 supports features left out of urllib and urllib2 libraries. It
7303can reuse the same socket connection for multiple requests, it can POST files,
7304supports url redirection and retries, and also gzip and deflate decoding.")
7305 (license license:expat)))
7306
7307(define-public python2-urllib3
7308 (package-with-python2 python-urllib3))
2b2f2fc1
DT
7309
7310(define-public python-colorama
7311 (package
7312 (name "python-colorama")
7313 (version "0.3.3")
7314 (source
7315 (origin
7316 (method url-fetch)
7317 (uri (pypi-uri "colorama" version))
7318 (sha256
7319 (base32
7320 "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
7321 (build-system python-build-system)
7322 (inputs
7323 `(("python-setuptools" ,python-setuptools)))
7324 (synopsis "colored terminal text rendering for Python")
7325 (description "Colorama is a Python library for rendering colored terminal
7326text.")
7327 (home-page "https://pypi.python.org/pypi/colorama")
7328 (license bsd-3)))
7329
7330(define-public python2-colorama
7331 (package-with-python2 python-colorama))
f5bcec6e
DT
7332
7333(define-public python-rsa
7334 (package
7335 (name "python-rsa")
7336 (version "3.2")
7337 (source
7338 (origin
7339 (method url-fetch)
7340 (uri (pypi-uri "rsa" version))
7341 (sha256
7342 (base32
7343 "0xwp929g7lvb1sghxfpqlxvgg96qcwqdbhh27sjplx30n3xp3wrh"))))
7344 (build-system python-build-system)
7345 (inputs
7346 `(("python-pyasn1" ,python-pyasn1)
7347 ("python-setuptools" ,python-setuptools)))
7348 (synopsis "Pure-Python RSA implementation")
7349 (description "Python-RSA is a pure-Python RSA implementation. It supports
7350encryption and decryption, signing and verifying signatures, and key
7351generation according to PKCS#1 version 1.5. It can be used as a Python
7352library as well as on the command line.")
7353 (home-page "http://stuvel.eu/rsa")
7354 (license asl2.0)))
7355
7356(define-public python2-rsa
7357 (package-with-python2 python-rsa))
c0aacfa5
DT
7358
7359(define-public python-pluggy
7360 (package
7361 (name "python-pluggy")
7362 (version "0.3.1")
7363 (source
7364 (origin
7365 (method url-fetch)
7366 (uri (pypi-uri "pluggy" version))
7367 (sha256
7368 (base32
7369 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
7370 (build-system python-build-system)
7371 (inputs
7372 `(("python-setuptools" ,python-setuptools)))
7373 (synopsis "Plugin and hook calling mechanism for Python")
7374 (description "Pluggy is an extraction of the plugin manager as used by
7375Pytest but stripped of Pytest specific details.")
7376 (home-page "https://pypi.python.org/pypi/pluggy")
7377 (license license:expat)))
7378
7379(define-public python2-pluggy
7380 (package-with-python2 python-pluggy))
a4af21ca
DT
7381
7382(define-public python-tox
7383 (package
7384 (name "python-tox")
7385 (version "2.3.1")
7386 (source
7387 (origin
7388 (method url-fetch)
7389 (uri (pypi-uri "tox" version))
7390 (sha256
7391 (base32
7392 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
7393 (build-system python-build-system)
7394 (arguments
7395 ;; FIXME: Tests require a newer version of pytest, but upgrading our
7396 ;; pytest breaks other packages.
7397 '(#:tests? #f))
7398 (inputs
7399 `(("python-setuptools" ,python-setuptools)
7400 ("python-pluggy" ,python-pluggy)
7401 ("python-py" ,python-py)
7402 ("python-virtualenv" ,python-virtualenv)
7403 ("python-pytest" ,python-pytest)))
7404 (home-page "http://tox.testrun.org/")
7405 (synopsis "Virtualenv-based automation of test activities")
7406 (description "Tox is a generic virtualenv management and test command line
7407tool. It can be used to check that a package installs correctly with
7408different Python versions and interpreters, or run tests in each type of
7409supported environment, or act as a frontend to continuous integration
7410servers.")
7411 (license license:expat)))
7412
7413(define-public python2-tox
7414 (package-with-python2 python-tox))
ba9da248
DT
7415
7416(define-public python-jmespath
7417 (package
7418 (name "python-jmespath")
7419 (version "0.9.0")
7420 (source
7421 (origin
7422 (method url-fetch)
7423 (uri (pypi-uri "jmespath" version))
7424 (sha256
7425 (base32
7426 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
7427 (build-system python-build-system)
7428 (inputs
7429 `(("python-setuptools" ,python-setuptools)))
7430 (synopsis "JSON Matching Expressions")
7431 (description "JMESPath (pronounced “james path”) is a Python library that
7432allows one to declaratively specify how to extract elements from a JSON
7433document.")
7434 (home-page "https://github.com/jmespath/jmespath.py")
7435 (license license:expat)))
7436
7437(define-public python2-jmespath
7438 (package-with-python2 python-jmespath))
935fcd5c
DT
7439
7440(define-public python-botocore
7441 (package
7442 (name "python-botocore")
7443 (version "1.3.17")
7444 (source
7445 (origin
7446 (method url-fetch)
7447 (uri (pypi-uri "botocore" version))
7448 (sha256
7449 (base32
7450 "08vpvdixx1c1lfv6vzjig68bpiir7wfyhzf49ysxgvhbprg5ra0w"))))
7451 (build-system python-build-system)
7452 (inputs
7453 `(("python-dateutil" ,python-dateutil-2)
7454 ("python-docutils" ,python-docutils)
7455 ("python-mock" ,python-mock)
7456 ("python-nose" ,python-nose)
7457 ("python-setuptools" ,python-setuptools)
7458 ("python-tox" ,python-tox)
7459 ("python-wheel" ,python-wheel)
7460 ("python-jmespath" ,python-jmespath)))
7461 (home-page "https://github.com/boto/botocore")
7462 (synopsis "Low-level interface to AWS")
7463 (description "Botocore is a Python library that provides a low-level
7464interface to the Amazon Web Services (AWS) API.")
7465 (license asl2.0)))
7466
7467(define-public python2-botocore
7468 (package-with-python2 python-botocore))
f861b8b8
DT
7469
7470(define-public awscli
7471 (package
7472 (name "awscli")
7473 (version "1.9.17")
7474 (source
7475 (origin
7476 (method url-fetch)
7477 (uri (string-append
7478 "https://pypi.python.org/packages/source/a/awscli/awscli-"
7479 version ".tar.gz"))
7480 (sha256
7481 (base32
7482 "1nj7jqvlpq57hfhby1njsbf8303gapa3njc4dramr6p3ffzvfi2i"))))
7483 (build-system python-build-system)
7484 (inputs
7485 `(("python-colorama" ,python-colorama)
7486 ("python-docutils" ,python-docutils)
7487 ("python-mock" ,python-mock)
7488 ("python-nose" ,python-nose)
7489 ("python-rsa" ,python-rsa)
7490 ("python-setuptools" ,python-setuptools)
7491 ("python-sphinx" ,python-sphinx)
7492 ("python-tox" ,python-tox)
7493 ("python-wheel" ,python-wheel)
7494 ("python-botocore" ,python-botocore)))
7495 (home-page "http://aws.amazon.com/cli/")
7496 (synopsis "Command line client for AWS")
7497 (description "AWS CLI provides a unified command line interface to the
7498Amazon Web Services (AWS) API.")
7499 (license asl2.0)))
6a44697d
LF
7500
7501(define-public python-hypothesis
7502 (package
7503 (name "python-hypothesis")
bea6d94d 7504 (version "3.1.0")
6a44697d
LF
7505 (source (origin
7506 (method url-fetch)
7507 (uri (pypi-uri "hypothesis" version))
7508 (sha256
7509 (base32
bea6d94d 7510 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 7511 (build-system python-build-system)
6a44697d
LF
7512 (propagated-inputs
7513 `(("python-flake8" ,python-flake8)
7514 ("python-pytest" ,python-pytest)))
7515 (synopsis "Library for property based testing")
7516 (description "Hypothesis is a library for testing your Python code against a
7517much larger range of examples than you would ever want to write by hand. It’s
7518based on the Haskell library, Quickcheck, and is designed to integrate
7519seamlessly into your existing Python unit testing work flow.")
7520 (home-page "https://github.com/DRMacIver/hypothesis")
6f068e08
EF
7521 (license mpl2.0)
7522 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
7523
7524(define-public python2-hypothesis
6f068e08
EF
7525 (let ((hypothesis (package-with-python2
7526 (strip-python2-variant python-hypothesis))))
7527 (package (inherit hypothesis)
7528 (native-inputs
7529 `(("python2-enum34" ,python2-enum34)
7530 ("python2-setuptools" ,python2-setuptools))))))
7517e73c
LF
7531
7532(define-public python-pytest-subtesthack
7533 (package
7534 (name "python-pytest-subtesthack")
7535 (version "0.1.1")
7536 (source (origin
7537 (method url-fetch)
7538 (uri (pypi-uri "pytest-subtesthack" version))
7539 (sha256
7540 (base32
7541 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
7542 (build-system python-build-system)
7543 (native-inputs
7544 `(;; setuptools required for python-2 variant
7545 ("python-setuptools" ,python-setuptools)))
7546 (propagated-inputs
7547 `(("python-pytest" ,python-pytest)))
7548 (synopsis "Set-up and tear-down fixtures for unit tests")
7549 (description "This plugin allows you to set up and tear down fixtures within
7550unit test functions that use @code{py.test}. This is useful for using
7551@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
7552function multiple times, without setting up or tearing down fixture state as is
7553normally the case.")
7554 (home-page "https://github.com/untitaker/pytest-subtesthack/")
7555 (license unlicense)))
7556
7557(define-public python2-pytest-subtesthack
7558 (package-with-python2 python-pytest-subtesthack))
0bdc1671
CAW
7559
7560(define-public python2-xdo
7561 (package
7562 (name "python2-xdo")
7563 (version "0.2")
7564 (source (origin
7565 (method url-fetch)
7566 (uri (string-append
7567 "http://http.debian.net/debian/pool/main/p/python-xdo/"
7568 "python-xdo_" version ".orig.tar.gz"))
7569 (sha256
7570 (base32
7571 "1kl5c1p0dyxf62plnk6fl77ycfb4whwjms16r14dxx8kn90hlqz4"))))
7572 (build-system python-build-system)
7573 (arguments
7574 `(#:python ,python-2
7575 #:tests? #f)) ; no tests provided
7576 (inputs
7577 `(("xdotool" ,xdotool)
7578 ("libX11" ,libx11)))
7579 (home-page "https://tracker.debian.org/pkg/python-xdo")
7580 (synopsis "Python library for simulating X11 keyboard/mouse input")
7581 (description "Provides bindings to libxdo for manipulating X11 via simulated
7582input. (Note that this is mostly a legacy library; you may wish to look at
7583python-xdo for newer bindings.)")
7584 (license bsd-3)))
7585
cb34dc6c
CAW
7586(define-public python-wtforms
7587 (package
7588 (name "python-wtforms")
7589 (version "2.1")
7590 (source
7591 (origin
7592 (method url-fetch)
7593 (uri (pypi-uri "WTForms" version ".zip"))
7594 (sha256
7595 (base32
7596 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
7597 (build-system python-build-system)
7598 (native-inputs
7599 `(("unzip" ,unzip)))
7600 (home-page "http://wtforms.simplecodes.com/")
7601 (synopsis
7602 "Form validation and rendering library for Python web development")
7603 (description
7604 "WTForms is a flexible forms validation and rendering library
7605for Python web development. It is very similar to the web form API
7606available in Django, but is a standalone package.")
7607 (license bsd-3)
7608 (properties `((python2-variant . ,(delay python2-wtforms))))))
7609
7610(define-public python2-wtforms
7611 (package
7612 (inherit (package-with-python2
7613 (strip-python2-variant python-wtforms)))
7614 (inputs `(("python2-setuptools" ,python2-setuptools)))))
50aaec25
DT
7615
7616(define-public python-mako
7617 (package
7618 (name "python-mako")
7619 (version "1.0.3")
7620 (source
7621 (origin
7622 (method url-fetch)
7623 (uri (pypi-uri "Mako" version))
7624 (sha256
7625 (base32
7626 "136kcjbs0s98qkx8a418b05dfblqp0kiiqyx8vhx4rarwc7bqi3n"))))
7627 (build-system python-build-system)
7628 (native-inputs
7629 `(("python-markupsafe" ,python-markupsafe)
7630 ("python-mock" ,python-mock)
7631 ("python-nose" ,python-nose)))
7632 (home-page "http://www.makotemplates.org/")
7633 (synopsis "Templating language for Python")
7634 (description "Mako is a templating language for Python that compiles
7635templates into Python modules.")
7636 (license license:expat)
7637 (properties `((python2-variant . ,(delay python2-mako))))))
7638
7639(define-public python2-mako
7640 (let ((base (package-with-python2
7641 (strip-python2-variant python-mako))))
7642 (package
7643 (inherit base)
7644 (native-inputs
7645 (cons `("python2-setuptools" ,python2-setuptools)
7646 (package-native-inputs base))))))
ae00a41f
CAW
7647
7648(define-public python-waitress
7649 (package
7650 (name "python-waitress")
7651 (version "0.8.10")
7652 (source
7653 (origin
7654 (method url-fetch)
7655 (uri (pypi-uri "waitress" version))
7656 (sha256
7657 (base32
7658 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
7659 (build-system python-build-system)
7660 (home-page "https://github.com/Pylons/waitress")
7661 (synopsis "Waitress WSGI server")
7662 (description "Waitress is meant to be a production-quality pure-Python WSGI
7663server with very acceptable performance.")
7664 (license zpl2.1)
7665 (properties `((python2-variant . ,(delay python2-waitress))))))
7666
7667(define-public python2-waitress
7668 (package
7669 (inherit (package-with-python2
7670 (strip-python2-variant python-waitress)))
7671 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
778a284b
CAW
7672
7673(define-public python-wsgiproxy2
7674 (package
7675 (name "python-wsgiproxy2")
7676 (version "0.4.2")
7677 (source
7678 (origin
7679 (method url-fetch)
7680 (uri (pypi-uri "WSGIProxy2" version ".zip"))
7681 (sha256
7682 (base32
7683 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
7684 (build-system python-build-system)
7685 (native-inputs
7686 `(("unzip" ,unzip)
7687 ("python-nose" ,python-nose)
7688 ("python-coverage" ,python-coverage)))
7689 (propagated-inputs
7690 `(("python-six" ,python-six)
7691 ("python-webob" ,python-webob)))
7692 (home-page
7693 "https://github.com/gawel/WSGIProxy2/")
7694 (synopsis "WSGI Proxy with various http client backends")
7695 (description "WSGI turns HTTP requests into WSGI function calls.
7696WSGIProxy turns WSGI function calls into HTTP requests.
7697It also includes code to sign requests and pass private data,
7698and to spawn subprocesses to handle requests.")
7699 (license license:expat)
7700 (properties `((python2-variant . ,(delay python2-wsgiproxy2))))))
7701
7702(define-public python2-wsgiproxy2
7703 (let ((wsgiproxy2 (package-with-python2
7704 (strip-python2-variant python-wsgiproxy2))))
7705 (package
7706 (inherit wsgiproxy2)
7707 (inputs `(("python2-setuptools" ,python2-setuptools)
7708 ,@(package-inputs wsgiproxy2))))))
bb7518b1
CAW
7709
7710(define-public python-pastedeploy
7711 (package
7712 (name "python-pastedeploy")
7713 (version "1.5.2")
7714 (source
7715 (origin
7716 (method url-fetch)
7717 (uri (pypi-uri "PasteDeploy" version))
7718 (sha256
7719 (base32
7720 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
7721 (build-system python-build-system)
7722 (native-inputs
7723 `(("python-nose" ,python-nose)))
7724 (propagated-inputs
7725 ;; This package uses pkg_resources, part of setuptools, during runtime,
7726 ;; hence why not a native-input.
7727 `(("python-setuptools" ,python-setuptools)))
7728 (home-page "http://pythonpaste.org/deploy/")
7729 (synopsis
7730 "Load, configure, and compose WSGI applications and servers")
7731 (description
7732 "This tool provides code to load WSGI applications and servers from URIs;
7733these URIs can refer to Python Eggs for INI-style configuration files. Paste
7734Script provides commands to serve applications based on this configuration
7735file.")
7736 (license license:expat)))
7737
7738(define-public python2-pastedeploy
7739 (package-with-python2 python-pastedeploy))
1cf53652 7740
c4a7904c
CAW
7741(define-public python-paste
7742 (package
7743 (name "python-paste")
7744 (version "2.0.2")
7745 (source
7746 (origin
7747 (method url-fetch)
7748 (uri (pypi-uri "Paste" version))
7749 (sha256
7750 (base32
7751 "16dsv9qi0r4qsrsb6dilpq2rx0fnglvh36flzywcdnm2jg43mb5d"))
7752 (patches (list (search-patch
7753 "python-paste-remove-website-test.patch")
7754 (search-patch
7755 "python-paste-remove-timing-test.patch")))))
7756 (build-system python-build-system)
7757 (native-inputs
7758 `(("python-nose" ,python-nose)))
7759 (propagated-inputs
7760 `(;; Uses pkg_resources provided by setuptools internally.
7761 ("python-setuptools" ,python-setuptools)
7762 ("python-six" ,python-six)))
7763 (arguments
7764 '(;; Tests don't pass on Python 3, but work fine on Python 2.
7765 ;; (As of 2.0.2, Python 3 support in Paste is presently a bit broken,
7766 ;; but is usable enough for the minimal amount it's used in MediaGoblin
7767 ;; still... things should be better by the next Paste release.)
7768 #:tests? #f))
7769 (home-page "http://pythonpaste.org")
7770 (synopsis
7771 "Python web development tools, focusing on WSGI")
7772 (description
7773 "Paste provides a variety of web development tools and middleware which
7774can be nested together to build web applications. Paste's design closely
7775follows ideas flowing from WSGI (Web Standard Gateway Interface).")
7776 (license license:expat)
7777 (properties `((python2-variant . ,(delay python2-paste))))))
7778
7779(define-public python2-paste
7780 (let ((paste (package-with-python2
7781 (strip-python2-variant python-paste))))
7782 (package
7783 (inherit paste)
7784 (arguments
7785 ;; Tests are back for Python 2!
7786 `(#:tests? #t
7787 ,@(package-arguments paste))))))
7788
a8f20f63
CAW
7789(define-public python-pastescript
7790 (package
7791 (name "python-pastescript")
7792 (version "2.0.2")
7793 (source
7794 (origin
7795 (method url-fetch)
7796 (uri (pypi-uri "PasteScript" version))
7797 (sha256
7798 (base32
7799 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
7800 (build-system python-build-system)
7801 (native-inputs
7802 `(("python-nose" ,python-nose)))
7803 (propagated-inputs
7804 `(;; Uses pkg_resources provided by setuptools internally.
7805 ("python-setuptools" ,python-setuptools)
7806 ("python-paste" ,python-paste)
7807 ("python-pastedeploy" ,python-pastedeploy)))
7808 (home-page "http://pythonpaste.org/script/")
7809 (arguments
7810 '(;; Unfortunately, this requires the latest unittest2,
7811 ;; but that requires traceback2 which requires linecache2 which requires
7812 ;; unittest2. So we're skipping tests for now.
7813 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
7814 ;; so in theory we could get around this situation somehow.)
7815 #:tests? #f))
7816 (synopsis
7817 "Pluggable command line tool for serving web applications and more")
7818 (description
7819 "PasteScript is a plugin-friendly command line tool which provides a
7820variety of features, from launching web applications to bootstrapping project
7821layouts.")
7822 (license license:expat)))
7823
7824(define-public python2-pastescript
7825 (package-with-python2 python-pastescript))
7826
1cf53652
CAW
7827(define-public python-pyquery
7828 (package
7829 (name "python-pyquery")
7830 (version "1.2.11")
7831 (source
7832 (origin
7833 (method url-fetch)
7834 (uri (pypi-uri "pyquery" version))
7835 (sha256
7836 (base32
7837 "1ikz1387nsp0pp7mzzr6ip9n5gr67acpap24yn33987v7fkjp0sa"))))
7838 (build-system python-build-system)
7839 (propagated-inputs
7840 `(("python-lxml" ,python-lxml)
7841 ("python-cssselect" ,python-cssselect)))
7842 (home-page "https://github.com/gawel/pyquery")
7843 (synopsis "Make jQuery-like queries on xml documents")
7844 (description "pyquery allows you to make jQuery queries on xml documents.
7845The API is as much as possible the similar to jQuery. pyquery uses lxml for
7846fast xml and html manipulation.")
7847 (license bsd-3)
7848 (properties `((python2-variant . ,(delay python2-pyquery))))))
7849
7850(define-public python2-pyquery
7851 (let ((pyquery (package-with-python2
7852 (strip-python2-variant python-pyquery))))
7853 (package
7854 (inherit pyquery)
7855 (native-inputs `(("python2-setuptools" ,python2-setuptools))))))
aa6313d6
CAW
7856
7857(define-public python-webtest
7858 (package
7859 (name "python-webtest")
7860 (version "2.0.20")
7861 (source
7862 (origin
7863 (method url-fetch)
7864 (uri (pypi-uri "WebTest" version))
7865 (sha256
7866 (base32
7867 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
7868 (build-system python-build-system)
7869 (arguments
7870 `(;; Unfortunately we have to disable tests!
7871 ;; This release of WebTest is pinned to python-nose < 1.3,
7872 ;; but older versions of python-nose are plagued with the following
7873 ;; bug(s), which rears its ugly head during test execution:
7874 ;; https://github.com/nose-devs/nose/issues/759
7875 ;; https://github.com/nose-devs/nose/pull/811
7876 #:tests? #f))
7877 ;; Commented out code is no good, but in this case, once tests
7878 ;; are ready to be enabled again, we should put the following
7879 ;; in place:
7880 ;; (native-inputs
7881 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
7882 ;; ; but see above comment
7883 ;; ("python-coverage" ,python-coverage)
7884 ;; ("python-mock" ,python-mock)
7885 ;; ("python-pastedeploy" ,python-pastedeploy)
7886 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
7887 ;; ("python-pyquery" ,python-pyquery)))
7888 (propagated-inputs
7889 `(("python-waitress" ,python-waitress)
7890 ("python-webob" ,python-webob)
7891 ("python-six" ,python-six)
7892 ("python-beautifulsoup4" ,python-beautifulsoup4)))
7893 (home-page "http://webtest.pythonpaste.org/")
7894 (synopsis "Helper to test WSGI applications")
7895 (description "Webtest allows you to test your Python web applications
7896without starting an HTTP server. It supports anything that supports the
7897minimum of WSGI.")
7898 (license license:expat)
7899 (properties `((python2-variant . ,(delay python2-webtest))))))
7900
7901(define-public python2-webtest
7902 (let ((webtest (package-with-python2
7903 (strip-python2-variant python-webtest))))
7904 (package
7905 (inherit webtest)
7906 (native-inputs `(("python2-setuptools" ,python2-setuptools)
7907 ,@(package-native-inputs webtest))))))
4cb122cd
CAW
7908
7909(define-public python-anyjson
7910 (package
7911 (name "python-anyjson")
7912 (version "0.3.3")
7913 (source
7914 (origin
7915 (method url-fetch)
7916 (uri (pypi-uri "anyjson" version))
7917 (sha256
7918 (base32
7919 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
7920 (build-system python-build-system)
7921 (arguments
7922 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
7923 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
7924 ;; whatever) so this transformation needs to be done before the tests
7925 ;; can be run. Maybe we could add a build step to transform beforehand
7926 ;; but it could be annoying/difficult.
7927 ;; We can enable tests for the Python 2 version, though, and do below.
7928 #:tests? #f))
7929 (home-page "http://bitbucket.org/runeh/anyjson/")
7930 (synopsis
7931 "Wraps best available JSON implementation in a common interface")
7932 (description
7933 "Anyjson loads whichever is the fastest JSON module installed
7934and provides a uniform API regardless of which JSON implementation is used.")
7935 (license bsd-3)
7936 (properties `((python2-variant . ,(delay python2-anyjson))))))
7937
7938(define-public python2-anyjson
7939 (let ((anyjson (package-with-python2
7940 (strip-python2-variant python-anyjson))))
7941 (package
7942 (inherit anyjson)
7943 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
7944 #:tests? #t
7945 ,@(package-arguments anyjson)))
7946 (native-inputs `(("python2-setuptools" ,python2-setuptools)
7947 ("python2-nose" ,python2-nose))))))
8dfceab7
CAW
7948
7949(define-public python-amqp
7950 (package
7951 (name "python-amqp")
7952 (version "1.4.9")
7953 (source
7954 (origin
7955 (method url-fetch)
7956 (uri (pypi-uri "amqp" version))
7957 (sha256
7958 (base32
7959 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
7960 (build-system python-build-system)
7961 (native-inputs
7962 `(("python-nose" ,python-nose)
7963 ("python-mock" ,python-mock)))
7964 (home-page "http://github.com/celery/py-amqp")
7965 (synopsis
7966 "Low-level AMQP client for Python (fork of amqplib)")
7967 (description
7968 "This is a fork of amqplib which was originally written by Barry Pederson.
7969It is maintained by the Celery project, and used by kombu as a pure python
7970alternative when librabbitmq is not available.")
7971 (license lgpl2.1+)
7972 (properties `((python2-variant . ,(delay python2-amqp))))))
7973
7974(define-public python2-amqp
7975 (let ((amqp (package-with-python2
7976 (strip-python2-variant python-amqp))))
7977 (package
7978 (inherit amqp)
7979 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
7980 ;; unmaintained. Weirdly, does not do this on the python 3
7981 ;; version?
7982 #:tests? #f
7983 ,@(package-arguments amqp)))
7984 (native-inputs `(("python2-setuptools" ,python2-setuptools)
7985 ,@(package-native-inputs amqp))))))
7d387305
CAW
7986
7987(define-public python-kombu
7988 (package
7989 (name "python-kombu")
7990 (version "3.0.33")
7991 (source
7992 (origin
7993 (method url-fetch)
7994 (uri (pypi-uri "kombu" version))
7995 (sha256
7996 (base32
7997 "16brjx2lgwbj2a37d0pjbfb84nvld6irghmqrs3qfncajp51hgc5"))))
7998 (build-system python-build-system)
7999 (native-inputs
8000 `(("python-mock" ,python-mock)
8001 ("python-nose" ,python-nose)))
8002 (propagated-inputs
8003 `(("python-anyjson" ,python-anyjson)
8004 ("python-amqp" ,python-amqp)))
8005 (home-page "http://kombu.readthedocs.org")
8006 (synopsis "Message passing library for Python")
8007 (description "The aim of Kombu is to make messaging in Python as easy as
8008possible by providing an idiomatic high-level interface for the AMQ protocol,
8009and also provide proven and tested solutions to common messaging problems.
8010AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
8011message orientation, queuing, routing, reliability and security, for which the
8012RabbitMQ messaging server is the most popular implementation.")
8013 (license bsd-3)
8014 (properties `((python2-variant . ,(delay python2-kombu))))))
8015
8016(define-public python2-kombu
8017 (let ((kombu (package-with-python2
8018 (strip-python2-variant python-kombu))))
8019 (package
8020 (inherit kombu)
8021 (inputs `(("python2-setuptools" ,python2-setuptools)
8022 ("python2-unittest2" ,python2-unittest2)
8023 ,@(package-inputs kombu))))))
b6f0b9fb
CAW
8024
8025(define-public python-billiard
8026 (package
8027 (name "python-billiard")
8028 (version "3.3.0.22")
8029 (source
8030 (origin
8031 (method url-fetch)
8032 (uri (pypi-uri "billiard" version))
8033 (sha256
8034 (base32
8035 "0zp7h6a58alrb3mwdw61jds07395j4j0mj6iqsb8czrihw9ih5nj"))))
8036 (build-system python-build-system)
8037 (native-inputs
8038 `(("python-nose" ,python-nose)))
8039 (home-page "http://github.com/celery/billiard")
8040 (synopsis
8041 "Python multiprocessing fork with improvements and bugfixes")
8042 (description
8043 "Billiard is a fork of the Python 2.7 multiprocessing package. The
8044multiprocessing package itself is a renamed and updated version of R Oudkerk's
8045pyprocessing package. This standalone variant is intended to be compatible with
8046Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
8047 (license bsd-3)
8048 (properties `((python2-variant . ,(delay python2-billiard))))))
8049
8050(define-public python2-billiard
8051 (let ((billiard (package-with-python2
8052 (strip-python2-variant python-billiard))))
8053 (package
8054 (inherit billiard)
8055 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8056 ("python2-unittest2" ,python2-unittest2)
8057 ("python2-mock" ,python2-mock)
8058 ,@(package-native-inputs billiard))))))
22df6419
CAW
8059
8060(define-public python-celery
8061 (package
8062 (name "python-celery")
8063 (version "3.1.20")
8064 (source
8065 (origin
8066 (method url-fetch)
8067 (uri (pypi-uri "celery" version))
8068 (sha256
8069 (base32
8070 "1md6ywg1s0946qyp8ndnsd677wm0yax933h2sb4m3a4j7lf1jbyh"))))
8071 (build-system python-build-system)
8072 (native-inputs
8073 `(("python-nose" ,python-nose)))
8074 (propagated-inputs
8075 `(("python-pytz" ,python-pytz)
8076 ("python-billiard" ,python-billiard)
8077 ("python-kombu" ,python-kombu)))
8078 (home-page "http://celeryproject.org")
8079 (synopsis "Distributed Task Queue")
8080 (description "Celery is an asynchronous task queue/job queue based on
8081distributed message passing. It is focused on real-time operation, but
8082supports scheduling as well. The execution units, called tasks, are executed
8083concurrently on a single or more worker servers using multiprocessing,
8084Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
8085synchronously (wait until ready).")
8086 (license bsd-3)
8087 (properties `((python2-variant . ,(delay python2-celery))))))
8088
8089(define-public python2-celery
8090 (let ((celery (package-with-python2
8091 (strip-python2-variant python-celery))))
8092 (package
8093 (inherit celery)
8094 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8095 ("python2-unittest2" ,python2-unittest2)
8096 ("python2-mock" ,python2-mock)
8097 ,@(package-native-inputs celery))))))
97e32948
CAW
8098
8099(define-public python-translitcodec
8100 (package
8101 (name "python-translitcodec")
8102 (version "0.4.0")
8103 (source
8104 (origin
8105 (method url-fetch)
8106 (uri (pypi-uri "translitcodec" version))
8107 (sha256
8108 (base32
8109 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
8110 (build-system python-build-system)
8111 (arguments
8112 `(#:tests? #f)) ; no tests provided
8113 (home-page
8114 "https://github.com/claudep/translitcodec")
8115 (synopsis
8116 "Unicode to 8-bit charset transliteration codec")
8117 (description
8118 "This package contains codecs for transliterating ISO 10646 texts into
8119best-effort representations using smaller coded character sets (ASCII,
8120ISO 8859, etc.).")
8121 (license license:expat)
8122 (properties `((python2-variant . ,(delay python2-translitcodec))))))
8123
8124(define-public python2-translitcodec
8125 (package
8126 (inherit (package-with-python2
8127 (strip-python2-variant python-translitcodec)))
8128 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
0c3b90d4
CAW
8129
8130(define-public python-editor
8131 (package
8132 (name "python-editor")
8133 (version "0.5")
8134 (source
8135 (origin
8136 (method url-fetch)
8137 (uri (pypi-uri "python-editor" version))
8138 (sha256
8139 (base32
8140 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
8141 (build-system python-build-system)
8142 (home-page
8143 "https://github.com/fmoo/python-editor")
8144 (synopsis
8145 "Programmatically open an editor, capture the result")
8146 (description
8147 "python-editor is a library that provides the editor module for
8148programmatically interfacing with your system's $EDITOR.")
8149 (license asl2.0)
8150 (properties `((python2-variant . ,(delay python2-editor))))))
8151
8152(define-public python2-editor
8153 (package
8154 (inherit (package-with-python2
8155 (strip-python2-variant python-editor)))
8156 (inputs `(("python2-setuptools" ,python2-setuptools)))))
3276517c
LF
8157
8158(define-public python-sphinxcontrib-programoutput
8159 (package
8160 (name "python-sphinxcontrib-programoutput")
8161 (version "0.8")
8162 (source (origin
8163 (method url-fetch)
8164 (uri (pypi-uri "sphinxcontrib-programoutput" version))
8165 (sha256
8166 (base32
8167 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
8168 (build-system python-build-system)
8169 (propagated-inputs
8170 `(("python-docutils" ,python-docutils)
8171 ("python-sphinx" ,python-sphinx)))
8172 (synopsis "Sphinx extension to include program output")
8173 (description "A Sphinx extension to literally insert the output of arbitrary
8174commands into documents, helping you to keep your command examples up to date.")
8175 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
8176 (license bsd-2)
8177 (properties `((python2-variant . ,(delay python2-sphinxcontrib-programoutput))))))
8178
8179(define-public python2-sphinxcontrib-programoutput
8180 (package
8181 (inherit (package-with-python2
8182 (strip-python2-variant python-sphinxcontrib-programoutput)))
8183 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
548d7165
LF
8184
8185(define-public python-sphinx-repoze-autointerface
8186 (package
8187 (name "python-sphinx-repoze-autointerface")
8188 (version "0.7.1")
8189 (source (origin
8190 (method url-fetch)
8191 (uri (pypi-uri "repoze.sphinx.autointerface" version))
8192 (sha256
8193 (base32
8194 "016mv3wbylw278wl7z33y2liyra8ljp08zq1g0anzadh1an5zvwp"))))
8195 (build-system python-build-system)
8196 (propagated-inputs
8197 `(("python-docutils" ,python-docutils)
8198 ("python-sphinx" ,python-sphinx)
8199 ("python-zope-interface" ,python-zope-interface)))
8200 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
8201 (description "This package defines an extension for the Sphinx documentation
8202system. The extension allows generation of API documentation by
8203introspection of @code{zope.interface} instances in code.")
8204 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
8205 (license repoze)))
8206
8207(define-public python2-sphinx-repoze-autointerface
8208 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
8209
8210(define-public python-psycopg2
8211 (package
8212 (name "python-psycopg2")
8213 (version "2.6.1")
8214 (source
8215 (origin
8216 (method url-fetch)
8217 (uri (pypi-uri "psycopg2" version))
8218 (sha256
8219 (base32
8220 "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva"))))
8221 (build-system python-build-system)
8222 (arguments
8223 ;; Tests would require a postgresql database "psycopg2_test"
8224 ;; and a running postgresql database management service.
8225 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
8226 (inputs
8227 `(("postgresql" ,postgresql))) ; libpq
8228 (home-page "http://initd.org/psycopg/")
8229 (synopsis "Python PostgreSQL adapter")
8230 (description
8231 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
8232 (license lgpl3+)
8233 (properties `((python2-variant . ,(delay python2-psycopg2))))))
8234
8235(define-public python2-psycopg2
8236 (package
8237 (inherit (package-with-python2
8238 (strip-python2-variant python-psycopg2)))
8239 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
eed1a61f
LF
8240
8241(define-public python-vobject
8242 (package
8243 (name "python-vobject")
8244 (version "0.9.1")
8245 (source (origin
8246 (method url-fetch)
8247 (uri (pypi-uri "vobject" version))
8248 (sha256
8249 (base32
8250 "1cwzjnrdr9yg2x21wbf3kf59ibnchvj33mygd69yzi178a9gs9gz"))))
8251 (build-system python-build-system)
8252 (inputs
8253 `(("python-dateutil-2" ,python-dateutil-2)
8254 ("python-pyicu" ,python-pyicu)))
8255 (synopsis "Parse and generate vCard and vCalendar files")
8256 (description "Vobject is intended to be a full featured Python package for
8257parsing and generating vCard and vCalendar files. Currently, iCalendar files
8258are supported and well tested. vCard 3.0 files are supported, and all data
8259should be imported, but only a few components are understood in a sophisticated
8260way.")
8261 (home-page "http://eventable.github.io/vobject/")
8262 (license asl2.0)
8263 (properties `((python2-variant . ,(delay python2-vobject))))))
8264
8265(define-public python2-vobject
8266 (package
8267 (inherit (package-with-python2
8268 (strip-python2-variant python-vobject)))
8269 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
cedac813
LF
8270
8271(define-public python-munkres
8272 (package
8273 (name "python-munkres")
8274 (version "1.0.7")
8275 (source (origin
8276 (method url-fetch)
8277 (uri (pypi-uri "munkres" version))
8278 (sha256
8279 (base32
8280 "1i6nf45i0kkzdx6k70giybsqxz4dxsjbrkrfqgjd7znfkf25sjik"))))
8281 (build-system python-build-system)
8282 (arguments
8283 '(#:tests? #f)) ; no test suite
8284 (home-page "http://software.clapper.org/munkres/")
8285 (synopsis "Implementation of the Munkres algorithm")
8286 (description "The Munkres module provides an implementation of the Munkres
8287algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
8288useful for solving the Assignment Problem.")
8289 (license bsd-3)))
8290
8291(define-public python2-munkres
8292 (package-with-python2 python-munkres))
f3b3d78f
LF
8293
8294(define-public python-flask
8295 (package
8296 (name "python-flask")
8297 (version "0.10.1")
8298 (source (origin
8299 (method url-fetch)
8300 (uri (pypi-uri "Flask" version))
8301 (sha256
8302 (base32
8303 "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc"))))
8304 (build-system python-build-system)
8305 (propagated-inputs
8306 `(("python-itsdangerous" ,python-itsdangerous)
8307 ("python-jinja2" ,python-jinja2)
8308 ("python-werkzeug" ,python-werkzeug)))
8309 (home-page "https://github.com/mitsuhiko/flask/")
8310 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
8311 (description "Flask is a micro web framework based on the Werkzeug toolkit
8312and Jinja2 template engine. It is called a micro framework because it does not
8313presume or force a developer to use a particular tool or library.")
8314 (license bsd-3)
8315 (properties `((python2-variant . ,(delay python2-flask))))))
8316
8317(define-public python2-flask
8318 (package (inherit (package-with-python2
8319 (strip-python2-variant python-flask)))
8320 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
603d665b
LF
8321
8322(define-public python-cookies
8323 (package
8324 (name "python-cookies")
8325 (version "2.2.1")
8326 (source (origin
8327 (method url-fetch)
8328 (uri (pypi-uri "cookies" version))
8329 (sha256
8330 (base32
8331 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
8332 (build-system python-build-system)
8333 (arguments
8334 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
8335 #:tests? #f))
8336 (native-inputs
8337 `(("python-pytest" ,python2-pytest)))
8338 (synopsis "HTTP cookie parser and renderer")
8339 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
8340Python.")
8341 (home-page "https://gitlab.com/sashahart/cookies")
8342 (license license:expat)
8343 (properties `((python2-variant . ,(delay python2-cookies))))))
8344
8345(define-public python2-cookies
8346 (let ((cookies (package-with-python2
8347 (strip-python2-variant python-cookies))))
8348 (package (inherit cookies)
8349 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8350 ,@(package-native-inputs cookies))))))
0efde7d6
LF
8351
8352(define-public python-responses
8353 (package
8354 (name "python-responses")
8355 (version "0.5.1")
8356 (source (origin
8357 (method url-fetch)
8358 (uri (pypi-uri "responses" version))
8359 (sha256
8360 (base32
8361 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
8362 (build-system python-build-system)
8363 (arguments
8364 `(;; Test suite is not distributed:
8365 ;; https://github.com/getsentry/responses/issues/38
8366 #:tests? #f))
8367 (native-inputs
8368 `(("python-cookies" ,python-cookies)
8369 ("python-mock" ,python-mock)))
8370 (propagated-inputs
8371 `(("python-requests" ,python-requests)
8372 ("python-six" ,python-six)))
8373 (home-page "https://github.com/getsentry/responses")
8374 (synopsis "Utility for mocking out the `requests` Python library")
8375 (description "A utility library for mocking out the `requests` Python
8376library.")
8377 (license asl2.0)
8378 (properties `((python2-variant . ,(delay python2-responses))))))
8379
8380(define-public python2-responses
8381 (let ((responses (package-with-python2
8382 (strip-python2-variant python-responses))))
8383 (package (inherit responses)
8384 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8385 ,@(package-native-inputs responses))))))
76b94885
LF
8386
8387(define-public python-pathlib
8388 (package
8389 (name "python-pathlib")
8390 (version "1.0.1")
8391 (source (origin
8392 (method url-fetch)
8393 (uri (pypi-uri "pathlib" version))
8394 (sha256
8395 (base32
8396 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
8397 (build-system python-build-system)
8398 (arguments
8399 `(#:phases
8400 (modify-phases %standard-phases
8401 (replace 'check
8402 (lambda _ (zero? (system* "python" "./test_pathlib.py")))))))
8403 (home-page "https://pathlib.readthedocs.org/")
8404 (synopsis "Object-oriented filesystem paths")
8405 (description "Pathlib offers a set of classes to handle filesystem paths.
8406It offers the following advantages over using string objects:
8407
8408@enumerate
8409@item No more cumbersome use of os and os.path functions. Everything can
8410be done easily through operators, attribute accesses, and method calls.
8411@item Embodies the semantics of different path types. For example,
8412comparing Windows paths ignores casing.
8413@item Well-defined semantics, eliminating any inconsistencies or
8414ambiguities (forward vs. backward slashes, etc.).
8415@end enumerate\n")
8416 (license license:expat)))
8417
8418(define-public python2-pathlib
8419 (package-with-python2 python-pathlib))
25a7db0a
LF
8420
8421(define-public python-jellyfish
8422 (package
8423 (name "python-jellyfish")
8424 (version "0.5.3")
8425 (source (origin
8426 (method url-fetch)
8427 (uri (pypi-uri "jellyfish" version))
8428 (sha256
8429 (base32
8430 "12bxh8cy9xmvyrjz7aw159nd5pyvb645rkvw4r6bvm4xbvs8gd07"))))
8431 (build-system python-build-system)
8432 (native-inputs
8433 `(("python-pytest" ,python-pytest)))
8434 (home-page "https://github.com/jamesturk/jellyfish")
8435 (synopsis "Approximate and phonetic matching of strings")
8436 (description "Jellyfish uses a variety of string comparison and phonetic
8437encoding algorithms to do fuzzy string matching.")
8438 (license bsd-2)
8439 (properties `((python2-variant . ,(delay python2-jellyfish))))))
8440
8441(define-public python2-jellyfish
8442 (let ((jellyfish (package-with-python2
8443 (strip-python2-variant python-jellyfish))))
8444 (package (inherit jellyfish)
8445 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8446 ("python2-unicodecsv" ,python2-unicodecsv)
8447 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
8448
8449(define-public python2-unicodecsv
8450 (package
8451 (name "python2-unicodecsv")
8452 (version "0.14.1")
8453 (source (origin
8454 (method url-fetch)
8455 ;; The test suite is not included in the PyPi release.
8456 ;; https://github.com/jdunck/python-unicodecsv/issues/19
8457 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
8458 "archive/" version ".tar.gz"))
8459 (file-name (string-append name "-" version ".tar.gz"))
8460 (sha256
8461 (base32
8462 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
8463 (build-system python-build-system)
8464 (arguments
8465 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
8466 #:python ,python-2))
8467 (native-inputs
8468 `(("python2-setuptools" ,python2-setuptools)
8469 ("python2-unittest2" ,python2-unittest2)))
8470 (home-page "https://github.com/jdunck/python-unicodecsv")
8471 (synopsis "Unicode CSV module for Python 2")
8472 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
8473module, adding support for Unicode strings.")
8474 (license bsd-2)))
064503aa
LF
8475
8476(define-public python-rarfile
8477 (package
8478 (name "python-rarfile")
8479 (version "2.7")
8480 (source (origin
8481 (method url-fetch)
8482 (uri (pypi-uri "rarfile" version))
8483 (sha256
8484 (base32
8485 "0d8n1dlpiz7av8dmbp0vclrwl9cnxizr4f2c9xvj1h5nvn480527"))
8486 ;; https://github.com/markokr/rarfile/pull/17/
8487 (patches (list (search-patch "python-rarfile-fix-tests.patch")))))
8488 (build-system python-build-system)
8489 (arguments
8490 '(#:phases
8491 (modify-phases %standard-phases
8492 (replace 'check
8493 ;; Many tests fail, but the installation proceeds.
8494 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
8495 (native-inputs
8496 `(("which" ,which))) ; required for tests
8497 (propagated-inputs
8498 `(("libarchive" ,libarchive)))
8499 (home-page "https://github.com/markokr/rarfile")
8500 (synopsis "RAR archive reader for Python")
8501 (description "This is Python module for RAR archive reading. The interface
8502is made as zipfile like as possible.")
8503 (license isc)))
8504
8505(define-public python2-rarfile
8506 (package-with-python2 python-rarfile))
daeeea71
CM
8507
8508(define-public python-magic
8509 (package
8510 (name "python-magic")
8511 (version "0.4.3")
8512 (source
8513 (origin
8514 (method url-fetch)
8515 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
8516 version ".tar.gz"))
8517 (sha256
8518 (base32
8519 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
8520 (file-name (string-append name "-" version "-checkout"))))
8521 (build-system python-build-system)
8522 (arguments
8523 ;; The tests are unreliable, so don't run them. The tests fail
8524 ;; under Python3 because they were written for Python2 and
8525 ;; contain import statements that do not work in Python3. One of
8526 ;; the tests fails under Python2 because its assertions are
8527 ;; overly stringent; it relies on comparing output strings which
8528 ;; are brittle and can change depending on the version of
8529 ;; libmagic being used and the system on which the test is
8530 ;; running. In my case, under GuixSD 0.10.0, only one test
8531 ;; failed, and it seems to have failed only because the version
8532 ;; of libmagic that is packaged in Guix outputs a slightly
8533 ;; different (but not wrong) string than the one that the test
8534 ;; expected.
8535 '(#:tests? #f
8536 #:phases (modify-phases %standard-phases
8537 ;; Replace a specific method call with a hard-coded
8538 ;; path to the necessary libmagic.so file in the
8539 ;; store. If we don't do this, then the method call
8540 ;; will fail to find the libmagic.so file, which in
8541 ;; turn will cause any application using
8542 ;; python-magic to fail.
8543 (add-before 'build 'hard-code-path-to-libmagic
8544 (lambda* (#:key inputs #:allow-other-keys)
8545 (let ((file (assoc-ref inputs "file")))
8546 (substitute* "magic.py"
8547 (("ctypes.util.find_library\\('magic'\\)")
8548 (string-append "'" file "/lib/libmagic.so'")))
8549 #t))))))
8550 (native-inputs
8551 `(("python-setuptools" ,python-setuptools)))
8552 (inputs
8553 ;; python-magic needs to be able to find libmagic.so.
8554 `(("file" ,file)))
8555 (home-page "https://github.com/ahupp/python-magic")
8556 (synopsis "File type identification using libmagic")
8557 (description
8558 "This module uses ctypes to access the libmagic file type
8559identification library. It makes use of the local magic database and
8560supports both textual and MIME-type output. Note that this module and
8561the python-file module both provide a \"magic.py\" file; these two
8562modules, which are different and were developed separately, both serve
8563the same purpose: to provide Python bindings for libmagic.")
8564 (license license:expat)))
8565
8566(define-public python2-magic
8567 (package-with-python2 python-magic))
12af303f
CM
8568
8569(define-public python2-s3cmd
8570 (package
8571 (name "python2-s3cmd")
8572 (version "1.6.1")
8573 (source
8574 (origin
8575 (method url-fetch)
8576 (uri (string-append "mirror://sourceforge/s3tools/"
8577 "s3cmd-" version ".tar.gz"))
8578 (sha256
8579 (base32
8580 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
8581 (build-system python-build-system)
8582 (arguments
8583 ;; s3cmd is written for python2 only and contains no tests.
8584 `(#:python ,python-2
8585 #:tests? #f))
8586 (native-inputs
8587 `(("python2-setuptools" ,python2-setuptools)))
8588 (inputs
8589 `(("python2-dateutil" ,python2-dateutil)
8590 ;; The python-file package also provides a magic.py module.
8591 ;; This is an unfortunate state of affairs; however, s3cmd
8592 ;; fails to install if it cannot find specifically the
8593 ;; python-magic package. Thus we include it, instead of using
8594 ;; python-file. Ironically, s3cmd sometimes works better
8595 ;; without libmagic bindings at all:
8596 ;; https://github.com/s3tools/s3cmd/issues/198
8597 ("python2-magic" ,python2-magic)))
8598 (home-page "http://s3tools.org/s3cmd")
8599 (synopsis "Command line tool for S3-compatible storage services")
8600 (description
8601 "S3cmd is a command line tool for uploading, retrieving and managing data
8602in storage services that are compatible with the Amazon Simple Storage
8603Service (S3) protocol, including S3 itself. It supports rsync-like backup,
8604GnuPG encryption, and more. It also supports management of Amazon's
8605CloudFront content delivery network.")
8606 (license gpl2+)))
4323a5f0
AE
8607
8608(define-public python-pkgconfig
8609 (package
8610 (name "python-pkgconfig")
8611 (version "1.1.0")
8612 (source
8613 (origin
8614 (method url-fetch)
8615 (uri (pypi-uri "pkgconfig" version))
8616 (sha256
8617 (base32
8618 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
8619 (build-system python-build-system)
8620 (native-inputs
8621 `(("python-nose" ,python-nose)
8622 ("python-setuptools" ,python-setuptools)))
8623 (inputs
8624 `(("pkg-config" ,pkg-config)))
8625 (arguments
8626 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
8627 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
8628 #:tests? #f
8629 ;; Prevent creation of the egg. This works around
8630 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
8631 #:configure-flags '("--single-version-externally-managed" "--root=/")
8632 ;; Hard-code the path to pkg-config.
8633 #:phases
8634 (modify-phases %standard-phases
8635 (add-before
8636 'build 'patch
8637 (lambda _
8638 (substitute* "pkgconfig/pkgconfig.py"
8639 (("cmd = 'pkg-config")
8640 (string-append "cmd = '" (which "pkg-config"))))
8641 #t)))))
8642 (home-page "http://github.com/matze/pkgconfig")
8643 (synopsis "Python interface for pkg-config")
8644 (description "This module provides a Python interface to pkg-config. It
8645can be used to find all pkg-config packages, check if a package exists,
8646check if a package meets certain version requirements, query CFLAGS and
8647LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 8648 (license license:expat)))
4323a5f0
AE
8649
8650(define-public python2-pkgconfig
8651 (package-with-python2 python-pkgconfig))
8652
8e451885
AE
8653(define-public python-cysignals
8654 (package
8655 (name "python-cysignals")
8656 (version "1.1.0")
8657 (source
8658 (origin
8659 (method url-fetch)
8660 (uri (pypi-uri "cysignals" version ".tar.bz2"))
8661 (sha256
8662 (base32
8663 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
8664 (build-system python-build-system)
8665 (native-inputs
8666 `(("python-cython" ,python-cython)
8667 ("python-setuptools" ,python-setuptools)
8668 ("python-sphinx" ,python-sphinx)))
8669 (inputs
8670 `(("pari-gp" ,pari-gp)))
8671 (arguments
8672 `(#:modules ((guix build python-build-system)
8673 ((guix build gnu-build-system) #:prefix gnu:)
8674 (guix build utils))
8675 ;; FIXME: Tests are executed after installation and currently fail
8676 ;; when not installing into standard locations; the author is working
8677 ;; on a fix.
8678 #:tests? #f
8679 #:phases
8680 (modify-phases %standard-phases
8681 (add-before
8682 'build 'configure
8683 (assoc-ref gnu:%standard-phases 'configure)))))
8684 (home-page
8685 "https://github.com/sagemath/cysignals")
8686 (synopsis
8687 "Handling of interrupts and signals for Cython")
8688 (description
8689 "The cysignals package provides mechanisms to handle interrupts (and
8690other signals and errors) in Cython code, using two related approaches,
8691for mixed Cython/Python code or external C libraries and pure Cython code,
8692respectively.")
8693 (license lgpl3+)))
8694
8695(define-public python2-cysignals
8696 (package-with-python2 python-cysignals))
8697