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