gnu: python-iso8601: Fix test dependencies.
[jackhill/guix/guix.git] / gnu / packages / python.scm
CommitLineData
a01b6da7
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
48b311b1 3;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
8e451885 4;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
e99f4211 5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
a480bc41 6;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
da6ce3f1 7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
e99f4211 8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
d95a56c6 9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
534db463 10;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
0bdc1671 11;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
345f0611 12;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
2b2f2fc1 13;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
6a44697d 14;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
02a8a187 15;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
b9893908 16;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
264ae686 17;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
1872f1bb 18;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
daeeea71 19;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
b31fbea5 20;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
88bb4197 21;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
b8fdbca3 22;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
0de78c95 23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
9250b0f3 24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
47d0b292 25;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
42c4b246 26;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
6eb7af2a 27;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
3f641af0 28;;; Copyright © 2016 David Craven <david@craven.ch>
dddcb25c 29;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
4efb9c54 30;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at>
b04a52a6 31;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
ee5fb7ee 32;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
2f6dd9cd 33;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
d3eff97a 34;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
6c2e82bc 35;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
a01b6da7
NK
36;;;
37;;; This file is part of GNU Guix.
38;;;
39;;; GNU Guix is free software; you can redistribute it and/or modify it
40;;; under the terms of the GNU General Public License as published by
41;;; the Free Software Foundation; either version 3 of the License, or (at
42;;; your option) any later version.
43;;;
44;;; GNU Guix is distributed in the hope that it will be useful, but
45;;; WITHOUT ANY WARRANTY; without even the implied warranty of
46;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47;;; GNU General Public License for more details.
48;;;
49;;; You should have received a copy of the GNU General Public License
50;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
51
1ffa7090 52(define-module (gnu packages python)
3f641af0 53 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 54 #:use-module (gnu packages)
8e451885 55 #:use-module (gnu packages algebra)
d79a343b 56 #:use-module (gnu packages adns)
89b2e0b0 57 #:use-module (gnu packages attr)
d96034ed 58 #:use-module (gnu packages backup)
3969ca54 59 #:use-module (gnu packages bash)
1ffa7090 60 #:use-module (gnu packages compression)
4ed20663 61 #:use-module (gnu packages databases)
ddc63a56 62 #:use-module (gnu packages django)
5e1c9367 63 #:use-module (gnu packages file)
4ed20663 64 #:use-module (gnu packages fontutils)
4ed20663
AE
65 #:use-module (gnu packages gcc)
66 #:use-module (gnu packages ghostscript)
6eb7af2a 67 #:use-module (gnu packages gl)
4ed20663 68 #:use-module (gnu packages glib)
6eb7af2a 69 #:use-module (gnu packages gstreamer)
4ed20663 70 #:use-module (gnu packages gtk)
421a80a2 71 #:use-module (gnu packages icu4c)
c937562e 72 #:use-module (gnu packages image)
4ed20663 73 #:use-module (gnu packages imagemagick)
d79a343b 74 #:use-module (gnu packages libevent)
b10ab723 75 #:use-module (gnu packages libffi)
89b2e0b0 76 #:use-module (gnu packages linux)
0da98533 77 #:use-module (gnu packages maths)
4ed20663 78 #:use-module (gnu packages multiprecision)
45203542 79 #:use-module (gnu packages networking)
be7134bf 80 #:use-module (gnu packages ncurses)
b04a52a6 81 #:use-module (gnu packages openstack)
d488d5d6 82 #:use-module (gnu packages password-utils)
c9b1b4f9 83 #:use-module (gnu packages pcre)
4ed20663 84 #:use-module (gnu packages perl)
b10ab723 85 #:use-module (gnu packages pkg-config)
06ff0837 86 #:use-module (gnu packages protobuf)
4ed20663 87 #:use-module (gnu packages readline)
6eb7af2a 88 #:use-module (gnu packages sdl)
c9b1b4f9 89 #:use-module (gnu packages statistics)
8f9ac901 90 #:use-module (gnu packages tex)
1c65314c 91 #:use-module (gnu packages texinfo)
cc2b77df 92 #:use-module (gnu packages tls)
e25f0174 93 #:use-module (gnu packages version-control)
02f8f804 94 #:use-module (gnu packages video)
8d12be1e 95 #:use-module (gnu packages web)
ce0614dd 96 #:use-module (gnu packages base)
26b307e2 97 #:use-module (gnu packages xml)
6fa14469 98 #:use-module (gnu packages xorg)
0bdc1671 99 #:use-module (gnu packages xdisorg)
4ed20663 100 #:use-module (gnu packages zip)
afa181ff 101 #:use-module (gnu packages tcl)
63bcec71 102 #:use-module (gnu packages bdw-gc)
a01b6da7
NK
103 #:use-module (guix packages)
104 #:use-module (guix download)
ea5456c8 105 #:use-module (guix git-download)
11bb85a1 106 #:use-module (guix utils)
acc26ff1 107 #:use-module (guix build-system gnu)
d8c4998f 108 #:use-module (guix build-system cmake)
898238b9 109 #:use-module (guix build-system python)
1c65314c
FB
110 #:use-module (guix build-system trivial)
111 #:use-module (srfi srfi-1))
a01b6da7 112
45848023 113(define-public python-2.7
a01b6da7
NK
114 (package
115 (name "python")
f0499100 116 (version "2.7.12")
a01b6da7
NK
117 (source
118 (origin
119 (method url-fetch)
9b43a0ff 120 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
121 version "/Python-" version ".tar.xz"))
122 (sha256
123 (base32
f0499100 124 "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp"))
c3052d6b
ML
125 (patches (search-patches "python-2.7-search-paths.patch"
126 "python-2-deterministic-build-info.patch"
15e57f57 127 "python-2.7-site-prefixes.patch"
c3052d6b 128 "python-2.7-source-date-epoch.patch"))
10a42aa2
EF
129 (modules '((guix build utils)))
130 ;; suboptimal to delete failing tests here, but if we delete them in the
131 ;; arguments then we need to make sure to strip out that phase when it
132 ;; gets inherited by python and python-minimal.
133 (snippet
134 '(begin
135 (for-each delete-file
136 '("Lib/test/test_compileall.py"
f0499100 137 "Lib/test/test_ctypes.py" ; fails on mips64el
10a42aa2
EF
138 "Lib/test/test_distutils.py"
139 "Lib/test/test_import.py"
140 "Lib/test/test_shutil.py"
141 "Lib/test/test_socket.py"
1bb163b0 142 "Lib/test/test_subprocess.py"))
10a42aa2 143 #t))))
02f0c3b2
LC
144 (outputs '("out"
145 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 146 (build-system gnu-build-system)
3fdc99da 147 (arguments
10a42aa2 148 `(;; 356 tests OK.
e7e7a1eb
EF
149 ;; 6 tests failed:
150 ;; test_compileall test_distutils test_import test_shutil test_socket
151 ;; test_subprocess
152 ;; 39 tests skipped:
ff6f33cf
ED
153 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
154 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
155 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
156 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
157 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
158 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
159 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
160 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
161 ;; test_winreg test_winsound test_zipfile64
162 ;; 4 skips unexpected on linux2:
163 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 164 #:test-target "test"
3fdc99da 165 #:configure-flags
6a20289d
LC
166 (list "--enable-shared" ;allow embedding
167 "--with-system-ffi" ;build ctypes
aaf75c89 168 "--with-ensurepip=install" ;install pip and setuptools
6a20289d
LC
169 (string-append "LDFLAGS=-Wl,-rpath="
170 (assoc-ref %outputs "out") "/lib"))
fd982732 171
d2cc9c7c
LC
172 #:modules ((ice-9 ftw) (ice-9 match)
173 (guix build utils) (guix build gnu-build-system))
fd982732 174 #:phases
46472ecd
MW
175 (modify-phases %standard-phases
176 (add-before
177 'configure 'patch-lib-shells
178 (lambda _
179 ;; Filter for existing files, since some may not exist in all
180 ;; versions of python that are built with this recipe.
181 (substitute* (filter file-exists?
182 '("Lib/subprocess.py"
183 "Lib/popen2.py"
184 "Lib/distutils/tests/test_spawn.py"
185 "Lib/test/test_subprocess.py"))
186 (("/bin/sh") (which "sh")))
dedc8320
LC
187
188 ;; Use zero as the timestamp in .pyc files so that builds are
189 ;; deterministic. TODO: Remove it when this variable is set in
190 ;; gnu-build-system.scm.
a665996f 191 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 192 #t))
5b4e2791
LC
193 (add-before 'configure 'do-not-record-configure-flags
194 (lambda* (#:key configure-flags #:allow-other-keys)
195 ;; Remove configure flags from the installed '_sysconfigdata.py'
196 ;; and 'Makefile' so we don't end up keeping references to the
197 ;; build tools.
198 ;;
199 ;; Preserve at least '--with-system-ffi' since otherwise the
200 ;; thing tries to build libffi, fails, and we end up with a
201 ;; Python that lacks ctypes.
202 (substitute* "configure"
203 (("^CONFIG_ARGS=.*$")
204 (format #f "CONFIG_ARGS='~a'\n"
205 (if (member "--with-system-ffi" configure-flags)
206 "--with-system-ffi"
207 ""))))
208 #t))
46472ecd
MW
209 (add-before
210 'check 'pre-check
211 (lambda _
212 ;; 'Lib/test/test_site.py' needs a valid $HOME
213 (setenv "HOME" (getcwd))
214 #t))
215 (add-after
216 'unpack 'set-source-file-times-to-1980
217 ;; XXX One of the tests uses a ZIP library to pack up some of the
218 ;; source tree, and fails with "ZIP does not support timestamps
219 ;; before 1980". Work around this by setting the file times in the
220 ;; source tree to sometime in early 1980.
221 (lambda _
222 (let ((circa-1980 (* 10 366 24 60 60)))
223 (ftw "." (lambda (file stat flag)
224 (utime file circa-1980 circa-1980)
225 #t))
02f0c3b2 226 #t)))
9ffe61b0
LC
227 (add-after 'install 'remove-tests
228 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
229 ;; because these files are used by some libraries out there.
230 (lambda* (#:key outputs #:allow-other-keys)
231 (let ((out (assoc-ref outputs "out")))
232 (match (scandir (string-append out "/lib")
233 (lambda (name)
234 (string-prefix? "python" name)))
235 ((pythonX.Y)
236 (let ((testdir (string-append out "/lib/" pythonX.Y
237 "/test")))
238 (with-directory-excursion testdir
239 (for-each delete-file-recursively
240 (scandir testdir
241 (match-lambda
242 ((or "." "..") #f)
243 (file
244 (not
245 (string-prefix? "test_support."
246 file))))))
247 (call-with-output-file "__init__.py" (const #t))
248 #t)))))))
216c283b
LC
249 (add-before 'strip 'make-libraries-writable
250 (lambda* (#:key outputs #:allow-other-keys)
251 ;; Make .so files writable so they can be stripped.
252 (let ((out (assoc-ref outputs "out")))
253 (for-each (lambda (file)
254 (chmod file #o755))
255 (find-files (string-append out "/lib")
256 "\\.so"))
257 #t)))
02f0c3b2
LC
258 (add-after 'install 'move-tk-inter
259 (lambda* (#:key outputs #:allow-other-keys)
260 ;; When Tkinter support is built move it to a separate output so
261 ;; that the main output doesn't contain a reference to Tcl/Tk.
262 (let ((out (assoc-ref outputs "out"))
263 (tk (assoc-ref outputs "tk")))
264 (when tk
265 (match (find-files out "tkinter.*\\.so")
266 ((tkinter.so)
267 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
268 ;; want it under TK/lib/pythonX.Y/site-packages.
269 (let* ((len (string-length out))
270 (target (string-append
271 tk "/"
272 (string-drop
273 (dirname (dirname tkinter.so))
274 len)
275 "/site-packages")))
276 (install-file tkinter.so target)
277 (delete-file tkinter.so)))))
278 #t))))))
a01b6da7 279 (inputs
3fdc99da
CR
280 `(("bzip2" ,bzip2)
281 ("gdbm" ,gdbm)
b10ab723 282 ("libffi" ,libffi) ; for ctypes
b88e1b0a 283 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 284 ("openssl" ,openssl)
3fdc99da 285 ("readline" ,readline)
afa181ff
LC
286 ("zlib" ,zlib)
287 ("tcl" ,tcl)
288 ("tk" ,tk))) ; for tkinter
b10ab723
CR
289 (native-inputs
290 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
291 (native-search-paths
292 (list (search-path-specification
293 (variable "PYTHONPATH")
af070955 294 (files '("lib/python2.7/site-packages")))))
f0499100 295 (home-page "https://www.python.org")
afa181ff 296 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
297 (description
298 "Python is a remarkably powerful dynamic programming language that
299is used in a wide variety of application domains. Some of its key
300distinguishing features include: clear, readable syntax; strong
301introspection capabilities; intuitive object orientation; natural
302expression of procedural code; full modularity, supporting hierarchical
303packages; exception-based error handling; and very high level dynamic
304data types.")
3f641af0 305 (license license:psfl)))
acc26ff1 306
45848023
HG
307;; Current 2.x version.
308(define-public python-2 python-2.7)
309
72df6680 310(define-public python-3.5
b24d1cfc 311 (package (inherit python-2)
72df6680 312 (version "3.5.2")
717003e3
LC
313 (source (origin
314 (method url-fetch)
315 (uri (string-append "https://www.python.org/ftp/python/"
316 version "/Python-" version ".tar.xz"))
fc1adab1
AK
317 (patches (search-patches
318 "python-fix-tests.patch"
72df6680 319 "python-3.5-fix-tests.patch"
fc1adab1
AK
320 "python-3-deterministic-build-info.patch"
321 "python-3-search-paths.patch"))
717003e3
LC
322 (patch-flags '("-p0"))
323 (sha256
324 (base32
72df6680 325 "0h6a5fr7ram2s483lh0pnmc4ncijb8llnpfdxdcl5dxr01hza400"))))
1f434457
MW
326 (arguments (substitute-keyword-arguments (package-arguments python-2)
327 ((#:tests? _) #t)))
1aebc0cb
AE
328 (native-search-paths
329 (list (search-path-specification
330 (variable "PYTHONPATH")
0e05d01e
SB
331 (files (list (string-append "lib/python"
332 (version-major+minor version)
333 "/site-packages"))))))))
f26a77ff 334
72df6680
LF
335(define-public python-3.4
336 (package (inherit python-3.5)
337 (version "3.4.5")
338 (source (origin
339 (method url-fetch)
340 (uri (string-append "https://www.python.org/ftp/python/"
341 version "/Python-" version ".tar.xz"))
342 (patches (search-patches
343 "python-fix-tests.patch"
344 "python-3.4-fix-tests.patch"
345 "python-3-deterministic-build-info.patch"
346 "python-3-search-paths.patch"))
347 (patch-flags '("-p0"))
348 (sha256
349 (base32
350 "12l9klp778wklxmckhghniy5hklss8r26995pyd00qbllk4b2r7f"))))))
351
45848023 352;; Current 3.x version.
72df6680 353(define-public python-3 python-3.5)
45848023
HG
354
355;; Current major version.
356(define-public python python-3)
357
95288fcc
LC
358;; Minimal variants of Python, mostly used to break the cycle between Tk and
359;; Python (Tk -> libxcb -> Python.)
360
361(define-public python2-minimal
362 (package (inherit python-2)
363 (name "python-minimal")
02f0c3b2 364 (outputs '("out"))
95288fcc
LC
365 (arguments
366 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
367 ((#:configure-flags cf)
368 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
369 (inputs '()))) ;none of the optional dependencies
370
371(define-public python-minimal
898238b9 372 (package (inherit python)
95288fcc 373 (name "python-minimal")
02f0c3b2 374 (outputs '("out"))
95288fcc 375
d0b73960 376 ;; Build fails due to missing ctypes without libffi.
95288fcc
LC
377 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
378 ;; zlib is required by 'zipimport', used by pip.
d0b73960
CAW
379 (inputs `(("libffi" ,libffi)
380 ("openssl" ,openssl)
95288fcc
LC
381 ("zlib" ,zlib)))))
382
64cb064c
LC
383(define* (wrap-python3 python
384 #:optional
385 (name (string-append (package-name python) "-wrapper")))
898238b9 386 (package (inherit python)
95288fcc 387 (name name)
898238b9
AE
388 (source #f)
389 (build-system trivial-build-system)
02f0c3b2 390 (outputs '("out"))
3969ca54 391 (inputs `(("bash" ,bash)))
3c0f2329 392 (propagated-inputs `(("python" ,python)))
898238b9
AE
393 (arguments
394 `(#:modules ((guix build utils))
395 #:builder
396 (begin
397 (use-modules (guix build utils))
398 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
399 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
400 (mkdir-p bin)
401 (for-each
402 (lambda (old new)
403 (symlink (string-append python old)
404 (string-append bin "/" new)))
3969ca54
SB
405 `("python3" ,"pydoc3" ,"idle3" ,"pip3")
406 `("python" ,"pydoc" ,"idle" ,"pip"))
407 ;; python-config outputs search paths based upon its location,
408 ;; use a bash wrapper to avoid changing its outputs.
409 (let ((bash (string-append (assoc-ref %build-inputs "bash")
410 "/bin/bash"))
411 (old (string-append python "python3-config"))
412 (new (string-append bin "/python-config")))
413 (with-output-to-file new
414 (lambda ()
415 (format #t "#!~a~%" bash)
416 (format #t "exec \"~a\" \"$@\"~%" old)
417 (chmod new #o755)
418 #t)))))))
0d56e3e1
LC
419 (synopsis "Wrapper for the Python 3 commands")
420 (description
421 "This package provides wrappers for the commands of Python@tie{}3.x such
422that they can be invoked under their usual name---e.g., @command{python}
423instead of @command{python3}.")))
424
95288fcc
LC
425(define-public python-wrapper (wrap-python3 python))
426(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 427
aaf625b8
RW
428(define-public python-psutil
429 (package
430 (name "python-psutil")
88535a44 431 (version "4.3.0")
aaf625b8
RW
432 (source
433 (origin
434 (method url-fetch)
f56777be 435 (uri (pypi-uri "psutil" version))
aaf625b8
RW
436 (sha256
437 (base32
88535a44 438 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8 439 (build-system python-build-system)
fb08c4fe
MB
440 (arguments
441 ;; FIXME: some tests does not return and times out.
442 '(#:tests? #f))
88535a44 443 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
444 (synopsis "Library for retrieving information on running processes")
445 (description
446 "psutil (Python system and process utilities) is a library for retrieving
447information on running processes and system utilization (CPU, memory, disks,
448network) in Python. It is useful mainly for system monitoring, profiling and
449limiting process resources and management of running processes. It implements
450many functionalities offered by command line tools such as: ps, top, lsof,
451netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
452pidof, tty, taskset, pmap.")
3f641af0 453 (license license:bsd-3)))
aaf625b8
RW
454
455(define-public python2-psutil
456 (package-with-python2 python-psutil))
898238b9 457
f9da1d8a
ED
458(define-public python-passlib
459 (package
460 (name "python-passlib")
1c9f78ec 461 (version "1.7.0")
f9da1d8a
ED
462 (source
463 (origin
464 (method url-fetch)
690e8c66 465 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
466 (sha256
467 (base32
1c9f78ec 468 "1vdbqsa1a31s98fxkinl052q8nnpvbxnb83qanxfpi2p6c2zdr0b"))))
f9da1d8a
ED
469 (build-system python-build-system)
470 (native-inputs
f3b98f4f 471 `(("python-nose" ,python-nose)))
f22efa01 472 (propagated-inputs
f9da1d8a
ED
473 `(("python-py-bcrypt" ,python-py-bcrypt)))
474 (arguments
475 `(#:phases
476 (alist-cons-before
477 'check 'set-PYTHON_EGG_CACHE
478 ;; some tests require access to "$HOME/.cython"
479 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
480 %standard-phases)))
481 (home-page "https://bitbucket.org/ecollins/passlib")
482 (synopsis
483 "Comprehensive password hashing framework")
484 (description
485 "Passlib is a password hashing library for Python 2 & 3, which provides
486cross-platform implementations of over 30 password hashing algorithms, as well
487as a framework for managing existing password hashes. It's designed to be
488useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
489to providing full-strength password hashing for multi-user application.")
3f641af0 490 (license license:bsd-3)))
f9da1d8a
ED
491
492(define-public python2-passlib
493 (package-with-python2 python-passlib))
494
feb0d9c3
ED
495(define-public python-py-bcrypt
496 (package
497 (name "python-py-bcrypt")
498 (version "0.4")
499 (source
500 (origin
501 (method url-fetch)
502 (uri (string-append
503 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
504 version
505 ".tar.gz"))
506 (sha256
507 (base32
508 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
509 (build-system python-build-system)
feb0d9c3
ED
510 (home-page "https://code.google.com/p/py-bcrypt")
511 (synopsis
512 "Bcrypt password hashing and key derivation")
513 (description
514 "A python wrapper of OpenBSD's Blowfish password hashing code. This
515system hashes passwords using a version of Bruce Schneier's Blowfish block
516cipher with modifications designed to raise the cost of off-line password
517cracking and frustrate fast hardware implementation. The computation cost of
518the algorithm is parametised, so it can be increased as computers get faster.
519The intent is to make a compromise of a password database less likely to
520result in an attacker gaining knowledge of the plaintext passwords (e.g. using
521John the Ripper).")
522 ;; "sha2.c" is under BSD-3;
523 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
524 ;; the rest is under ISC.
3f641af0 525 (license (list license:isc license:bsd-3 license:bsd-4))))
feb0d9c3
ED
526
527(define-public python2-py-bcrypt
528 (package-with-python2 python-py-bcrypt))
529
530
429fdea1
ED
531(define-public python-paramiko
532 (package
533 (name "python-paramiko")
81b9bbbd 534 (version "1.16.0")
429fdea1
ED
535 (source
536 (origin
537 (method url-fetch)
81b9bbbd 538 (uri (pypi-uri "paramiko" version))
429fdea1
ED
539 (sha256
540 (base32
81b9bbbd 541 "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
429fdea1 542 (build-system python-build-system)
a3fc12da 543 (propagated-inputs
f22efa01
HG
544 `(("python-pycrypto" ,python-pycrypto)
545 ("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
546 (home-page "http://www.paramiko.org/")
547 (synopsis "SSHv2 protocol library")
548 (description "Paramiko is a python implementation of the SSHv2 protocol,
549providing both client and server functionality. While it leverages a Python C
550extension for low level cryptography (PyCrypto), Paramiko itself is a pure
551Python interface around SSH networking concepts.")
3f641af0 552 (license license:lgpl2.1+)))
429fdea1
ED
553
554(define-public python2-paramiko
555 (package-with-python2 python-paramiko))
556
557
de73dbf6
ED
558(define-public python-httplib2
559 (package
560 (name "python-httplib2")
286f1bac 561 (version "0.9.2")
de73dbf6
ED
562 (source
563 (origin
564 (method url-fetch)
286f1bac 565 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
566 (sha256
567 (base32
286f1bac 568 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6 569 (build-system python-build-system)
286f1bac 570 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
571 (synopsis "Comprehensive HTTP client library")
572 (description
573 "A comprehensive HTTP client library supporting many features left out of
574other HTTP libraries.")
575 (license license:expat)))
576
577(define-public python2-httplib2
578 (package-with-python2 python-httplib2))
579
67039875
ED
580(define-public python-ecdsa
581 (package
582 (name "python-ecdsa")
583 (version "0.13")
584 (source
585 (origin
586 (method url-fetch)
587 (uri (string-append
588 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
589 version
590 ".tar.gz"))
591 (sha256
592 (base32
593 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
594 (build-system python-build-system)
67039875
ED
595 (inputs
596 `(("openssl" ,openssl)))
597 (home-page
598 "http://github.com/warner/python-ecdsa")
599 (synopsis
600 "ECDSA cryptographic signature library (pure python)")
601 (description
602 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
603Curve Digital Signature Algorithm), implemented purely in Python. With this
604library, you can quickly create keypairs (signing key and verifying key), sign
605messages, and verify the signatures. The keys and signatures are very short,
606making them easy to handle and incorporate into other protocols.")
607 (license license:expat)))
608
609(define-public python2-ecdsa
610 (package-with-python2 python-ecdsa))
611
52323f32
ED
612(define-public python-ccm
613 (package
614 (name "python-ccm")
db5567f7 615 (version "2.1.6")
52323f32
ED
616 (source
617 (origin
618 (method url-fetch)
db5567f7 619 (uri (pypi-uri "ccm" version))
52323f32
ED
620 (sha256
621 (base32
db5567f7 622 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32 623 (build-system python-build-system)
f22efa01 624 (propagated-inputs
52323f32 625 `(("python-pyyaml" ,python-pyyaml)
e165f137
HG
626 ;; Not listed in setup.py, but used in ccmlib/node.py for full
627 ;; functionality
628 ("python-psutil" ,python-psutil)
52323f32
ED
629 ("python-six" ,python-six)))
630 (home-page "https://github.com/pcmanus/ccm")
d9a6e221
HG
631 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
632localhost")
633 (description "Cassandra Cluster Manager is a development tool for testing
634local Cassandra clusters. It creates, launches and removes Cassandra clusters
635on localhost.")
3f641af0 636 (license license:asl2.0)))
52323f32
ED
637
638(define-public python2-ccm
639 (package-with-python2 python-ccm))
640
89114f39 641(define-public python-pytz
acc26ff1 642 (package
89114f39 643 (name "python-pytz")
61c9babb 644 (version "2016.3")
acc26ff1
CR
645 (source
646 (origin
647 (method url-fetch)
61c9babb 648 (uri (pypi-uri "pytz" version ".tar.bz2"))
acc26ff1
CR
649 (sha256
650 (base32
61c9babb 651 "1mjmrkk4vc5xzppw7fm0pli1nnbj57cvqv7jjv5whcmccyhxz4y1"))))
acc26ff1 652 (build-system python-build-system)
8498b8cf 653 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 654 (home-page "http://pythonhosted.org/pytz")
9e771e3b 655 (synopsis "Python timezone library")
acc26ff1
CR
656 (description
657 "This library allows accurate and cross platform timezone calculations
658using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 659 (license license:expat)))
5ace6e2f 660
89114f39 661(define-public python2-pytz
11bb85a1 662 (package-with-python2 python-pytz))
89114f39 663
fc50e9c6 664
89114f39 665(define-public python-babel
5ace6e2f 666 (package
89114f39 667 (name "python-babel")
3f37db6b 668 (version "2.3.2")
5ace6e2f
CR
669 (source
670 (origin
671 (method url-fetch)
b850a6d8 672 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
673 (sha256
674 (base32
3f37db6b 675 "0k43pi0p1dwpds2w0km3fw92wixzxv2vw7p09capxmjz5cfh23lw"))))
5ace6e2f 676 (build-system python-build-system)
f22efa01 677 (propagated-inputs
f3b98f4f 678 `(("python-pytz" ,python-pytz)))
8498b8cf 679 (arguments `(#:tests? #f)) ; no test target
e1804763 680 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
681 (synopsis
682 "Tools for internationalizing Python applications")
683 (description
684 "Babel is composed of two major parts:
685- tools to build and work with gettext message catalogs
686- a Python interface to the CLDR (Common Locale Data Repository), providing
687access to various locale display names, localized number and date formatting,
688etc. ")
3f641af0 689 (license license:bsd-3)))
89114f39
AE
690
691(define-public python2-babel
11bb85a1 692 (package-with-python2 python-babel))
73adf220 693
ed377cc6
RW
694(define-public python2-backport-ssl-match-hostname
695 (package
696 (name "python2-backport-ssl-match-hostname")
f2d06d46 697 (version "3.5.0.1")
ed377cc6
RW
698 (source
699 (origin
700 (method url-fetch)
701 (uri (string-append
702 "https://pypi.python.org/packages/source/b/"
703 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
704 version ".tar.gz"))
705 (sha256
706 (base32
f2d06d46 707 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 708 (build-system python-build-system)
f2d06d46
EF
709 (arguments
710 `(#:python ,python-2
711 #:tests? #f)) ; no test target
f2d06d46
EF
712 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
713 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
714 (description
715 "This backport brings the ssl.match_hostname() function to users of
716earlier versions of Python. The function checks the hostname in the
717certificate returned by the server to which a connection has been established,
718and verifies that it matches the intended target hostname.")
3f641af0 719 (license license:psfl)))
ed377cc6 720
ef5cbf9b
RW
721(define-public python-h5py
722 (package
723 (name "python-h5py")
fe147c41 724 (version "2.6.0")
ef5cbf9b
RW
725 (source
726 (origin
727 (method url-fetch)
fe147c41 728 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
729 (sha256
730 (base32
fe147c41 731 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
ef5cbf9b 732 (build-system python-build-system)
797e1401
RW
733 (arguments
734 `(#:tests? #f ; no test target
735 #:phases
736 (modify-phases %standard-phases
737 (add-after 'unpack 'fix-hdf5-paths
738 (lambda* (#:key inputs #:allow-other-keys)
739 (let ((prefix (assoc-ref inputs "hdf5")))
740 (substitute* "setup_build.py"
741 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
742 (string-append "['" prefix "/lib" "']"))
743 (("'/opt/local/include', '/usr/local/include'")
744 (string-append "'" prefix "/include" "'")))
745 (substitute* "setup_configure.py"
746 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
747 (string-append "['" prefix "/lib" "']")))
748 #t))))))
3c4010b1 749 (propagated-inputs
69866690
HG
750 `(("python-six" ,python-six)
751 ("python-numpy" ,python-numpy)))
ef5cbf9b 752 (inputs
69866690 753 `(("hdf5" ,hdf5)))
ef5cbf9b 754 (native-inputs
fe147c41
EF
755 `(("python-cython" ,python-cython)
756 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
757 (home-page "http://www.h5py.org/")
758 (synopsis "Read and write HDF5 files from Python")
759 (description
760 "The h5py package provides both a high- and low-level interface to the
761HDF5 library from Python. The low-level interface is intended to be a
762complete wrapping of the HDF5 API, while the high-level component supports
763access to HDF5 files, datasets and groups using established Python and NumPy
764concepts.")
9820a028 765 (license license:bsd-3)))
ef5cbf9b
RW
766
767(define-public python2-h5py
9820a028 768 (package-with-python2 python-h5py))
ef5cbf9b 769
c1448c69
EB
770(define-public python-lockfile
771 (package
772 (name "python-lockfile")
692add53 773 (version "0.12.2")
c1448c69
EB
774 (source
775 (origin
776 (method url-fetch)
777 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
778 "lockfile-" version ".tar.gz"))
779 (sha256
780 (base32
692add53 781 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
782 (build-system python-build-system)
783 (arguments '(#:test-target "check"))
692add53
BW
784 (native-inputs
785 `(("python-pbr" ,python-pbr)))
6a8f26a4 786 (home-page "https://launchpad.net/pylockfile")
c1448c69
EB
787 (synopsis "Platform-independent file locking module")
788 (description
789 "The lockfile package exports a LockFile class which provides a simple
790API for locking files.")
f210e944 791 (license license:expat)))
c1448c69
EB
792
793(define-public python2-lockfile
f210e944 794 (package-with-python2 python-lockfile))
c1448c69 795
5a1a4bf6
EB
796(define-public python-mock
797 (package
798 (name "python-mock")
799 (version "1.0.1")
800 (source
801 (origin
802 (method url-fetch)
803 (uri (string-append "https://pypi.python.org/packages/source/m/mock/"
804 "mock-" version ".tar.gz"))
805 (sha256
806 (base32
807 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
808 (build-system python-build-system)
809 (arguments '(#:test-target "check"))
07af3e5e 810 (home-page "http://code.google.com/p/mock/")
9e771e3b 811 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
812 (description
813 "Mock is a library for testing in Python. It allows you to replace parts
814of your system under test with mock objects and make assertions about how they
815have been used.")
bd3fa666 816 (license license:expat)))
5a1a4bf6
EB
817
818(define-public python2-mock
819 (package-with-python2 python-mock))
820
fc50e9c6 821
73adf220
AE
822(define-public python-setuptools
823 (package
824 (name "python-setuptools")
d660f7be 825 (version "31.0.0")
73adf220
AE
826 (source
827 (origin
828 (method url-fetch)
d660f7be 829 (uri (pypi-uri "setuptools" version))
73adf220
AE
830 (sha256
831 (base32
d660f7be 832 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
e0ed4579
HG
833 (modules '((guix build utils)))
834 (snippet
835 '(begin
836 ;; Remove included binaries which are used to build self-extracting
837 ;; installers for Windows.
838 ;; TODO: Find some way to build them ourself so we can include them.
839 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
840 #t))))
73adf220 841 (build-system python-build-system)
d3d656c5
AE
842 ;; FIXME: Tests require pytest, which itself relies on setuptools.
843 ;; One could bootstrap with an internal untested setuptools.
73adf220 844 (arguments
824af8ca 845 `(#:tests? #f))
73adf220
AE
846 (home-page "https://pypi.python.org/pypi/setuptools")
847 (synopsis
848 "Library designed to facilitate packaging Python projects")
849 (description
850 "Setuptools is a fully-featured, stable library designed to facilitate
851packaging Python projects, where packaging includes:
852Python package and module definitions,
853distribution package metadata,
854test hooks,
855project installation,
856platform-specific details,
857Python 3 support.")
d660f7be
MB
858 ;; TODO: setuptools now bundles the following libraries:
859 ;; packaging, pyparsing, six and appdirs. How to unbundle?
860 (license (list license:psfl ; setuptools itself
861 license:expat ; six, appdirs, pyparsing
862 license:asl2.0 ; packaging is dual ASL2/BSD-2
863 license:bsd-2))))
73adf220
AE
864
865(define-public python2-setuptools
866 (package-with-python2 python-setuptools))
fc50e9c6
AE
867
868
cafc3f5a
EB
869(define-public python-pycrypto
870 (package
871 (name "python-pycrypto")
872 (version "2.6.1")
873 (source
874 (origin
875 (method url-fetch)
876 (uri (string-append "https://pypi.python.org/packages/source/p/"
877 "pycrypto/pycrypto-" version ".tar.gz"))
878 (sha256
879 (base32
880 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
881 (build-system python-build-system)
cafc3f5a
EB
882 (inputs
883 `(("python" ,python)
884 ("gmp" ,gmp)))
885 (arguments
886 `(#:phases
887 (alist-cons-before
888 'build 'set-build-env
889 ;; pycrypto runs an autoconf configure script behind the scenes
890 (lambda _
891 (setenv "CONFIG_SHELL" (which "bash")))
892 %standard-phases)))
893 (home-page "http://www.pycrypto.org/")
894 (synopsis "Cryptographic modules for Python")
895 (description
896 "Pycrypto is a collection of both secure hash functions (such as SHA256
897and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 898etc.). The package is structured to make adding new modules easy.")
3f641af0 899 (license license:public-domain)))
cafc3f5a 900
345f0611 901(define-public python2-pycrypto
1c0059da
EF
902 (let ((pycrypto (package-with-python2 python-pycrypto)))
903 (package (inherit pycrypto)
904 (inputs
905 `(("python" ,python-2)
906 ,@(alist-delete
907 "python"
908 (package-inputs pycrypto)))))))
345f0611 909
cafc3f5a
EB
910(define-public python-keyring
911 (package
912 (name "python-keyring")
13f3ff35 913 (version "8.7")
cafc3f5a
EB
914 (source
915 (origin
916 (method url-fetch)
664e6c3a 917 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
918 (sha256
919 (base32
13f3ff35 920 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
921 (build-system python-build-system)
922 (native-inputs
13f3ff35 923 `(("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 924 (propagated-inputs
cafc3f5a
EB
925 `(("python-pycrypto" ,python-pycrypto)))
926 (arguments
664e6c3a 927 `(#:tests? #f)) ;TODO: tests require pytest
190ba6c2 928 (home-page "https://github.com/jaraco/keyring")
cafc3f5a
EB
929 (synopsis "Store and access your passwords safely")
930 (description
931 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 932service from python. It can be used in any application that needs safe
cafc3f5a
EB
933password storage.")
934 ;; "MIT" and PSF dual license
f210e944 935 (license license:x11)))
cafc3f5a 936
d7af1069 937(define-public python2-keyring
f210e944 938 (package-with-python2 python-keyring))
d7af1069 939
a480bc41
EB
940(define-public python-six
941 (package
942 (name "python-six")
b6ab89ef 943 (version "1.10.0")
a480bc41
EB
944 (source
945 (origin
946 (method url-fetch)
b6ab89ef 947 (uri (pypi-uri "six" version))
a480bc41
EB
948 (sha256
949 (base32
b6ab89ef 950 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41 951 (build-system python-build-system)
4fd129ee
MB
952 (native-inputs
953 `(("python-py" ,python-py)
954 ("python-pytest" ,python-pytest)))
a480bc41
EB
955 (home-page "http://pypi.python.org/pypi/six/")
956 (synopsis "Python 2 and 3 compatibility utilities")
957 (description
35b9e423 958 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
959functions for smoothing over the differences between the Python versions with
960the goal of writing Python code that is compatible on both Python versions.
35b9e423 961Six supports every Python version since 2.5. It is contained in only one
a480bc41 962Python file, so it can be easily copied into your project.")
3f641af0 963 (license license:x11)))
a480bc41 964
0c20025c
AE
965(define-public python2-six
966 (package-with-python2 python-six))
967
cafc3f5a
EB
968(define-public python-dateutil-2
969 (package
970 (name "python-dateutil")
394b8060 971 (version "2.5.2")
cafc3f5a
EB
972 (source
973 (origin
974 (method url-fetch)
394b8060 975 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
976 (sha256
977 (base32
394b8060 978 "0jrfpcgvgya6hs45dhrd9yiqgdgz9qp9aa07zsw8gqgn8zphff86"))))
cafc3f5a 979 (build-system python-build-system)
f22efa01 980 (propagated-inputs
394b8060 981 `(("python-six" ,python-six)))
b5a5fb19 982 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a
EB
983 (synopsis "Extensions to the standard datetime module")
984 (description
985 "The dateutil module provides powerful extensions to the standard
986datetime module, available in Python 2.3+.")
f210e944 987 (license license:bsd-3)))
cafc3f5a
EB
988
989(define-public python2-dateutil-2
f210e944 990 (package-with-python2 python-dateutil-2))
cafc3f5a 991
fc50e9c6
AE
992(define-public python-dateutil
993 (package
994 (name "python-dateutil")
995 (version "1.5") ; last version for python < 3
996 (source
997 (origin
998 (method url-fetch)
cafc3f5a
EB
999 (uri (string-append "http://labix.org/download/python-dateutil/"
1000 "python-dateutil-" version ".tar.gz"))
fc50e9c6
AE
1001 (sha256
1002 (base32
1003 "0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
1004 (build-system python-build-system)
b5a5fb19 1005 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a 1006 (synopsis "Extensions to the standard datetime module")
fc50e9c6
AE
1007 (description
1008 "The dateutil module provides powerful extensions to the standard
1009datetime module, available in Python 2.3+.")
3f641af0 1010 (license license:psfl)))
fc50e9c6
AE
1011
1012(define-public python2-dateutil
1013 (package-with-python2 python-dateutil))
1d08c01f 1014
cafc3f5a
EB
1015(define-public python-parsedatetime
1016 (package
1017 (name "python-parsedatetime")
eebf6f01 1018 (version "2.1")
cafc3f5a
EB
1019 (source
1020 (origin
1021 (method url-fetch)
eebf6f01 1022 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1023 (sha256
1024 (base32
eebf6f01 1025 "0bdgyw6y3v7bcxlx0p50s8drxsh5bb5cy2afccqr3j90amvpii8p"))))
cafc3f5a
EB
1026 (build-system python-build-system)
1027 (native-inputs
eebf6f01
EF
1028 `(("python-nose" ,python-nose)
1029 ("python-pyicu" ,python-pyicu)))
cafc3f5a
EB
1030 (home-page "http://github.com/bear/parsedatetime/")
1031 (synopsis
1032 "Parse human-readable date/time text")
1033 (description
e881752c 1034 "Parse human-readable date/time text.")
f210e944 1035 (license license:asl2.0)))
cafc3f5a 1036
38b8f9b2 1037(define-public python2-parsedatetime
f210e944 1038 (package-with-python2 python-parsedatetime))
38b8f9b2 1039
d072efcb
RW
1040(define-public python-pandas
1041 (package
1042 (name "python-pandas")
7d0c3c8d 1043 (version "0.18.1")
d072efcb
RW
1044 (source
1045 (origin
1b96f069 1046 (method url-fetch)
7d0c3c8d
EF
1047 (uri (string-append
1048 "https://pypi.python.org/packages/11/09/"
1049 "e66eb844daba8680ddff26335d5b4fead77f60f957678243549a8dd4830d/"
1050 "pandas-" version ".tar.gz"))
1b96f069 1051 (sha256
7d0c3c8d 1052 (base32 "1ckpxrvvjj6zxmn68icd9hib8qcpx9b35f6izxnr25br5ilq7r6j"))))
d072efcb 1053 (build-system python-build-system)
d072efcb 1054 (propagated-inputs
f22efa01
HG
1055 `(("python-numpy" ,python-numpy)
1056 ("python-pytz" ,python-pytz)
d072efcb
RW
1057 ("python-dateutil" ,python-dateutil-2)))
1058 (native-inputs
abcc7a0e
HG
1059 `(("python-nose" ,python-nose)
1060 ("python-cython" ,python-cython)))
d072efcb
RW
1061 (home-page "http://pandas.pydata.org")
1062 (synopsis "Data structures for data analysis, time series, and statistics")
1063 (description
1064 "Pandas is a Python package providing fast, flexible, and expressive data
1065structures designed to make working with structured (tabular,
1066multidimensional, potentially heterogeneous) and time series data both easy
1067and intuitive. It aims to be the fundamental high-level building block for
1068doing practical, real world data analysis in Python.")
f210e944 1069 (license license:bsd-3)))
d072efcb
RW
1070
1071(define-public python2-pandas
f210e944 1072 (package-with-python2 python-pandas))
d072efcb 1073
cafc3f5a
EB
1074(define-public python-tzlocal
1075 (package
1076 (name "python-tzlocal")
ed80839b 1077 (version "1.2.2")
cafc3f5a
EB
1078 (source
1079 (origin
1080 (method url-fetch)
226d3331 1081 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1082 (sha256
1083 (base32
ed80839b 1084 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1085 (build-system python-build-system)
f22efa01
HG
1086 (propagated-inputs
1087 `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1088 (home-page "https://github.com/regebro/tzlocal")
1089 (synopsis
35b9e423 1090 "Local timezone information for Python")
cafc3f5a
EB
1091 (description
1092 "Tzlocal returns a tzinfo object with the local timezone information.
1093This module attempts to fix a glaring hole in pytz, that there is no way to
1094get the local timezone information, unless you know the zoneinfo name, and
1095under several distributions that's hard or impossible to figure out.")
3f641af0 1096 (license license:cc0)))
cafc3f5a 1097
1d08c01f
AE
1098(define-public python2-pysqlite
1099 (package
1100 (name "python2-pysqlite")
fe476868 1101 (version "2.8.1")
1d08c01f
AE
1102 (source
1103 (origin
1104 (method url-fetch)
fe476868 1105 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1106 (sha256
1107 (base32
fe476868 1108 "0rm0zqyb363y6wljhfmbxs16jjv7p8nk1d8zgq9sdwj6js7y3jkm"))))
1d08c01f
AE
1109 (build-system python-build-system)
1110 (inputs
1111 `(("sqlite" ,sqlite)))
1112 (arguments
1113 `(#:python ,python-2 ; incompatible with Python 3
1114 #:tests? #f)) ; no test target
fe476868 1115 (home-page "http://github.com/ghaering/pysqlite")
7a03af70 1116 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1117 (description
1118 "Pysqlite provides SQLite bindings for Python that comply to the
1119Database API 2.0T.")
ed0cdf83 1120 (license license:zlib)))
1d08c01f 1121
2875caf5
AE
1122
1123(define-public python2-mechanize
1124 (package
1125 (name "python2-mechanize")
1126 (version "0.2.5")
1127 (source
1128 (origin
1129 (method url-fetch)
1130 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1131 version ".tar.gz"))
1132 (sha256
1133 (base32
1134 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1135 (build-system python-build-system)
2875caf5
AE
1136 (arguments
1137 `(#:python ,python-2 ; apparently incompatible with Python 3
1138 #:tests? #f))
1139 ;; test fails with message
1140 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1141 ;; (python-3.3.2) or
1142 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1143 ;; (python-2.7.5).
1144 ;; The source code is from March 2011 and probably not up-to-date
1145 ;; with respect to python unit tests.
1146 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1147 (synopsis
1148 "Stateful programmatic web browsing in Python")
1149 (description
1150 "Mechanize implements stateful programmatic web browsing in Python,
1151after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1152 (license (license:non-copyleft
1153 "file://COPYING"
1154 "See COPYING in the distribution."))))
2875caf5 1155
0352532e
AE
1156
1157(define-public python-simplejson
1158 (package
1159 (name "python-simplejson")
b2e6e150 1160 (version "3.10.0")
0352532e
AE
1161 (source
1162 (origin
1163 (method url-fetch)
988d1bad 1164 (uri (pypi-uri "simplejson" version))
0352532e
AE
1165 (sha256
1166 (base32
b2e6e150 1167 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
0352532e
AE
1168 (build-system python-build-system)
1169 (home-page "http://simplejson.readthedocs.org/en/latest/")
1170 (synopsis
1171 "Json library for Python")
1172 (description
e881752c
AK
1173 "JSON (JavaScript Object Notation) is a subset of JavaScript
1174syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1175format.
0352532e
AE
1176
1177Simplejson exposes an API familiar to users of the standard library marshal
1178and pickle modules. It is the externally maintained version of the json
1179library contained in Python 2.6, but maintains compatibility with Python 2.5
1180and (currently) has significant performance advantages, even without using
1181the optional C extension for speedups. Simplejson is also supported on
1182Python 3.3+.")
3f641af0 1183 (license license:x11)))
0352532e
AE
1184
1185(define-public python2-simplejson
1186 (package-with-python2 python-simplejson))
421a80a2
AE
1187
1188
ed07b08d 1189(define-public python-pyicu
421a80a2 1190 (package
ed07b08d 1191 (name "python-pyicu")
d3b29319 1192 (version "1.9.2")
421a80a2
AE
1193 (source
1194 (origin
1195 (method url-fetch)
1196 (uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
1197 version ".tar.gz"))
1198 (sha256
1199 (base32
d3b29319 1200 "1diba0g8md614fvm9yf50paiwdkhj6rd7xwf1rg9mc0pxc0hhn4v"))))
421a80a2
AE
1201 (build-system python-build-system)
1202 (inputs
1203 `(("icu4c" ,icu4c)))
421a80a2 1204 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1205 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1206 (description
1207 "PyICU is a python extension wrapping the ICU C++ API.")
f210e944 1208 (license license:x11)))
ed07b08d
LF
1209
1210(define-public python2-pyicu
f210e944 1211 (package-with-python2 python-pyicu))
cc20a22a
LC
1212
1213(define-public python2-dogtail
1214 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1215 ;; spaces in indentation" with Python 3.
1216 (package
1217 (name "python2-dogtail")
1218 (version "0.8.2")
1219 (source (origin
1220 (method url-fetch)
1221 (uri (string-append
1222 "https://fedorahosted.org/released/dogtail/dogtail-"
1223 version ".tar.gz"))
1224 (sha256
1225 (base32
1226 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1227 (build-system python-build-system)
1228 (arguments `(#:python ,python-2
1229 #:tests? #f)) ; invalid command "test"
1230 (home-page "https://fedorahosted.org/dogtail/")
1231 (synopsis "GUI test tool and automation framework written in ​Python")
1232 (description
35b9e423 1233 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1234It uses Accessibility (a11y) technologies to communicate with desktop
1235applications. dogtail scripts are written in Python and executed like any
1236other Python program.")
3f641af0 1237 (license license:gpl2+)))
515e6878 1238
011b18c3
LC
1239(define-public python2-empy
1240 (package
1241 (name "python2-empy")
1242 (version "3.3")
1243 (source (origin
1244 (method url-fetch)
1245 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1246 version ".tar.gz"))
1247 (sha256
1248 (base32
1249 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1250 (build-system python-build-system)
1251 (arguments
1252 `(#:python ,python-2
1253 #:phases (alist-replace
1254 'check
1255 (lambda _
1256 (zero? (system* "./test.sh")))
1257 %standard-phases)))
1258 (home-page "http://www.alcyone.com/software/empy/")
1259 (synopsis "Templating system for Python")
1260 (description
1261 "EmPy is a system for embedding Python expressions and statements in
1262template text; it takes an EmPy source file, processes it, and produces
1263output. This is accomplished via expansions, which are special signals to the
1cd4027c 1264EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1265EmPy can expand arbitrary Python expressions and statements in this way, as
1266well as a variety of special forms. Textual data not explicitly delimited in
1267this way is sent unaffected to the output, allowing Python to be used in
1268effect as a markup language. Also supported are callbacks via hooks,
1269recording and playback via diversions, and dynamic, chainable filters. The
1270system is highly configurable via command line options and embedded
1271commands.")
3f641af0 1272 (license license:lgpl2.1+)))
011b18c3 1273
8deeda0c
LC
1274(define-public python2-element-tree
1275 (package
1276 (name "python2-element-tree")
1277 (version "1.2.6")
1278 (source (origin
1279 (method url-fetch)
1280 (uri (string-append
1281 "http://effbot.org/media/downloads/elementtree-"
1282 version "-20050316.tar.gz"))
1283 (sha256
1284 (base32
1285 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1286 (build-system python-build-system)
1287 (arguments
1288 `(#:python ,python-2 ; seems to be part of Python 3
1289 #:tests? #f)) ; no 'test' sub-command
1290 (synopsis "Toolkit for XML processing in Python")
1291 (description
1292 "ElementTree is a Python library supporting lightweight XML processing.")
1293 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1294 (license (license:x11-style
1295 "http://docs.python.org/2/license.html"
1296 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1297
1298(define-public python2-pybugz
1299 (package
1300 (name "python2-pybugz")
1301 (version "0.6.11")
1302 (source (origin
1303 (method url-fetch)
1304 (uri (string-append
1305 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1306 version ".tar.gz"))
1307 (sha256
1308 (base32
6f194a1e 1309 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1310 (patches (search-patches "pybugz-stty.patch"
1311 "pybugz-encode-error.patch"))))
8deeda0c
LC
1312 (build-system python-build-system)
1313 (arguments
1314 `(#:python ,python-2 ; SyntaxError with Python 3
1315 #:tests? #f)) ; no 'test' sub-command
f22efa01
HG
1316 (propagated-inputs
1317 `(("element-tree" ,python2-element-tree)))
8deeda0c
LC
1318 (synopsis "Python and command-line interface to Bugzilla")
1319 (description
1320 "PyBugz is a Python library and command-line tool to query the Bugzilla
1321bug tracking system. It is meant as an aid to speed up interaction with the
1322bug tracker.")
1323 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1324 (license license:gpl2)))
8deeda0c 1325
a480bc41
EB
1326(define-public python-enum34
1327 (package
1328 (name "python-enum34")
d39ae1e5 1329 (version "1.1.0")
a480bc41
EB
1330 (source
1331 (origin
1332 (method url-fetch)
d39ae1e5 1333 (uri (pypi-uri "enum34" version))
a480bc41
EB
1334 (sha256
1335 (base32
d39ae1e5 1336 "0yx1m4564wxgbm4glb3457hi16xihd9w63rv13y2przkdir9dfgp"))))
a480bc41 1337 (build-system python-build-system)
a480bc41
EB
1338 (arguments
1339 `(#:phases
1340 (alist-replace
1341 'check
1342 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1343 %standard-phases)))
1344 (home-page "https://pypi.python.org/pypi/enum34")
1345 (synopsis "Backported Python 3.4 Enum")
1346 (description
1347 "Enum34 is the new Python stdlib enum module available in Python 3.4
1348backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1349 (license license:bsd-3)))
a480bc41 1350
820acd1b
LF
1351(define-public python2-enum34
1352 (package-with-python2 python-enum34))
1353
a480bc41
EB
1354(define-public python-parse-type
1355 (package
1356 (name "python-parse-type")
1357 (version "0.3.4")
1358 (source
1359 (origin
1360 (method url-fetch)
1361 (uri (string-append "https://pypi.python.org/packages/source/p/"
1362 "parse_type/parse_type-" version ".tar.gz"))
1363 (sha256
1364 (base32
1365 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1366 (build-system python-build-system)
f22efa01 1367 (propagated-inputs
f3b98f4f 1368 `(("python-six" ,python-six)
68f1cdec 1369 ("python-parse" ,python-parse)))
a480bc41
EB
1370 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1371 (home-page "https://github.com/jenisys/parse_type")
1372 (synopsis "Extended parse module")
1373 (description
1374 "Parse_type extends the python parse module.")
3f641af0 1375 (license license:bsd-3)))
a480bc41
EB
1376
1377(define-public python-parse
1378 (package
1379 (name "python-parse")
eb3d3503 1380 (version "1.6.6")
a480bc41
EB
1381 (source
1382 (origin
1383 (method url-fetch)
eb3d3503 1384 (uri (pypi-uri "parse" version))
a480bc41
EB
1385 (sha256
1386 (base32
aa6c09ed
EF
1387 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1388 (patches (search-patches "python-parse-too-many-fields.patch"))))
a480bc41
EB
1389 (build-system python-build-system)
1390 (arguments
1391 `(#:phases
f9a65318
EF
1392 (modify-phases %standard-phases
1393 (replace 'check
1394 (lambda _ (zero? (system* "python" "test_parse.py")))))))
a480bc41
EB
1395 (home-page "https://github.com/r1chardj0n3s/parse")
1396 (synopsis "Parse strings")
1397 (description
1398 "Parse strings using a specification based on the Python format()
1399syntax.")
3f641af0 1400 (license license:x11)))
a480bc41 1401
d3eff97a
JL
1402(define-public python-polib
1403 (package
1404 (name "python-polib")
1405 (version "1.0.8")
1406 (source (origin
1407 (method url-fetch)
1408 (uri (pypi-uri "polib" version))
1409 (sha256
1410 (base32
1411 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1412 (build-system python-build-system)
1413 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1414 (synopsis "Manipulate, create and modify gettext files")
1415 (description "Polib can manipulate any gettext format (po, pot and mo)
1416files. It can be used to create po files from scratch or to modify
1417existing ones.")
1418 (license license:expat)))
1419
1420(define-public python2-polib
1421 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1422 (package
1423 (inherit base)
1424 (arguments `(,@(package-arguments base)
1425 ;; Tests don't work with python2.
1426 #:tests? #f)))))
a480bc41 1427
515e6878
LC
1428(define-public scons
1429 (package
1430 (name "scons")
a3f61425 1431 (version "2.3.4")
515e6878
LC
1432 (source (origin
1433 (method url-fetch)
de67e922
LF
1434 (uri (string-append "mirror://sourceforge/scons/scons/" version
1435 "/scons-" version ".tar.gz"))
515e6878
LC
1436 (sha256
1437 (base32
a3f61425 1438 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1439 (build-system python-build-system)
1440 (arguments
1441 ;; With Python 3.x, fails to build with a syntax error.
1442 `(#:python ,python-2
b3e8b4bd 1443 #:use-setuptools? #f ; still relies on distutils
515e6878
LC
1444 #:tests? #f)) ; no 'python setup.py test' command
1445 (home-page "http://scons.org/")
1446 (synopsis "Software construction tool written in Python")
1447 (description
1448 "SCons is a software construction tool. Think of SCons as an improved,
1449cross-platform substitute for the classic Make utility with integrated
1450functionality similar to autoconf/automake and compiler caches such as ccache.
1451In short, SCons is an easier, more reliable and faster way to build
1452software.")
3f641af0 1453 (license license:x11)))
011b18c3 1454
c15a5c0e
DT
1455(define-public python-extras
1456 (package
1457 (name "python-extras")
1458 (version "0.0.3")
1459 (source
1460 (origin
1461 (method url-fetch)
1462 (uri (string-append
1463 "https://pypi.python.org/packages/source/e/extras/extras-"
1464 version ".tar.gz"))
1465 (sha256
1466 (base32
1467 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1468 (build-system python-build-system)
c15a5c0e
DT
1469 (arguments
1470 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1471 '(#:tests? #f))
1472 (home-page "https://github.com/testing-cabal/extras")
1473 (synopsis "Useful extensions to the Python standard library")
1474 (description
1475 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1476 (license license:expat)))
c15a5c0e
DT
1477
1478(define-public python2-extras
1479 (package-with-python2 python-extras))
1480
56ea0efd
DT
1481(define-public python-mimeparse
1482 (package
1483 (name "python-mimeparse")
1484 (version "0.1.4")
1485 (source
1486 (origin
1487 (method url-fetch)
1488 (uri (string-append
1489 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1490 version ".tar.gz"))
1491 (sha256
1492 (base32
1493 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1494 (build-system python-build-system)
56ea0efd
DT
1495 (arguments
1496 '(#:tests? #f)) ; no setup.py test command
1497 (home-page
1498 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1499 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1500 (description
1501 "Mimeparse provides basic functions for parsing MIME type names and
1502matching them against a list of media-ranges.")
bd3fa666 1503 (license license:expat)))
56ea0efd
DT
1504
1505(define-public python2-mimeparse
1506 (package-with-python2 python-mimeparse))
1507
4435427e
DT
1508(define-public python-nose
1509 (package
1510 (name "python-nose")
f7cb9841 1511 (version "1.3.7")
4435427e
DT
1512 (source
1513 (origin
1514 (method url-fetch)
f7cb9841 1515 (uri (pypi-uri "nose" version))
4435427e
DT
1516 (sha256
1517 (base32
f7cb9841 1518 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e 1519 (build-system python-build-system)
4435427e
DT
1520 (arguments
1521 '(#:tests? #f)) ; FIXME: test suite fails
1522 (home-page "http://readthedocs.org/docs/nose/")
1523 (synopsis "Python testing library")
1524 (description
1525 "Nose extends the unittest library to make testing easier.")
3f641af0 1526 (license license:lgpl2.0+)))
4435427e
DT
1527
1528(define-public python2-nose
1529 (package-with-python2 python-nose))
1530
0aea283a
EF
1531(define-public python-nose2
1532 (package
1533 (name "python-nose2")
1534 (version "0.6.5")
1535 (source
1536 (origin
1537 (method url-fetch)
1538 (uri (pypi-uri "nose2" version))
1539 (sha256
1540 (base32
1541 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1542 (build-system python-build-system)
1543 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
f22efa01 1544 (propagated-inputs
0aea283a
EF
1545 `(("python-cov-core" ,python-cov-core)
1546 ("python-pytest-cov" ,python-pytest-cov)
1547 ("python-six" ,python-six)))
1548 (home-page "https://github.com/nose-devs/nose2")
1549 (synopsis "Next generation of nicer testing for Python")
1550 (description
1551 "Nose2 is the next generation of nicer testing for Python, based on the
1552plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1553better plugin api, being easier for users to configure, and simplifying internal
1554interfaces and processes.")
1555 (license license:bsd-2)))
1556
1557(define-public python2-nose2
1558 (package-with-python2 python-nose2))
1559
6cd9c356
DT
1560(define-public python-unittest2
1561 (package
1562 (name "python-unittest2")
1563 (version "0.5.1")
1564 (source
1565 (origin
1566 (method url-fetch)
1567 (uri (string-append
1568 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1569 version ".tar.gz"))
1570 (sha256
1571 (base32
1572 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1573 (build-system python-build-system)
6cd9c356
DT
1574 (home-page "http://pypi.python.org/pypi/unittest2")
1575 (synopsis "Python unit testing library")
1576 (description
1577 "Unittest2 is a replacement for the unittest module in the Python
1578standard library.")
3f641af0 1579 (license license:psfl)))
6cd9c356
DT
1580
1581(define-public python2-unittest2
1582 (package (inherit python-unittest2)
1583 (name "python2-unittest2")
1584 (version "0.5.1")
1585 (source
1586 (origin
1587 (method url-fetch)
1588 (uri (string-append
1589 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1590 version ".tar.gz"))
1591 (sha256
1592 (base32
1593 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
6cd9c356
DT
1594 (arguments
1595 `(#:python ,python-2
1596 #:tests? #f)))) ; no setup.py test command
1597
02f8f804 1598(define-public python-pafy
1599 (package
1600 (name "python-pafy")
1601 (version "0.5.2")
1602 (source
1603 (origin
1604 (method url-fetch)
1605 (uri (pypi-uri "pafy" version))
1606 (sha256
1607 (base32
1608 "1ckvrypyvb7jbqlgwdz0y337ajagjv7dgxyns326nqwypn1wpq0i"))))
1609 (build-system python-build-system)
ed3fee5f 1610 (arguments
1611 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
02f8f804 1612 (propagated-inputs
1613 ;; Youtube-dl is a python package which is imported in the file
1614 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1615 `(("youtube-dl" ,youtube-dl)))
1616 (home-page "https://np1.github.io/pafy/")
1617 (synopsis "Retrieve YouTube content and metadata")
1618 (description
1619 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1620 (license license:lgpl3+)))
1621
542ad60f
DT
1622(define-public python-py
1623 (package
1624 (name "python-py")
71c8a804 1625 (version "1.4.31")
542ad60f
DT
1626 (source
1627 (origin
1628 (method url-fetch)
71c8a804 1629 (uri (pypi-uri "py" version))
542ad60f
DT
1630 (sha256
1631 (base32
71c8a804 1632 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f 1633 (build-system python-build-system)
dcb0da7b
MB
1634 (arguments
1635 ;; FIXME: "ImportError: 'test' module incorrectly imported from
1636 ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
1637 ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
1638 ;; Is this module globally installed?"
1639 '(#:tests? #f))
542ad60f
DT
1640 (home-page "http://pylib.readthedocs.org/")
1641 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1642 (description
1643 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1644code introspection, and logging.")
bd3fa666 1645 (license license:expat)))
542ad60f
DT
1646
1647(define-public python2-py
1648 (package-with-python2 python-py))
1649
855d4761
DT
1650(define-public python-pytest
1651 (package
1652 (name "python-pytest")
61a4332d 1653 (version "2.7.3")
855d4761
DT
1654 (source
1655 (origin
1656 (method url-fetch)
1657 (uri (string-append
1658 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1659 version ".tar.gz"))
1660 (sha256
1661 (base32
61a4332d 1662 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1663 (modules '((guix build utils)))
1664 (snippet
1665 ;; One of the tests involves the /usr directory, so it fails.
1666 '(substitute* "testing/test_argcomplete.py"
1667 (("def test_remove_dir_prefix\\(self\\):")
1668 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1669 (build-system python-build-system)
482d9591
HG
1670 (propagated-inputs
1671 `(("python-py" ,python-py)))
e7881f3d 1672 (native-inputs
482d9591 1673 `(("python-nose" ,python-nose)
855d4761
DT
1674 ("python-mock" ,python-mock)))
1675 (home-page "http://pytest.org")
1676 (synopsis "Python testing library")
1677 (description
1678 "Pytest is a testing tool that provides auto-discovery of test modules
1679and functions, detailed info on failing assert statements, modular fixtures,
1680and many external plugins.")
bd3fa666 1681 (license license:expat)))
855d4761
DT
1682
1683(define-public python2-pytest
1684 (package-with-python2 python-pytest))
1685
fca4ff35
LF
1686;; This package is used by Borg until we can upgrade all our Python packages to
1687;; use a more recent pytest.
1688(define-public python-pytest-2.9.2
1689 (package
1690 (inherit python-pytest)
1691 (name "python-pytest")
1692 (version "2.9.2")
1693 (source (origin
1694 (method url-fetch)
1695 (uri (pypi-uri "pytest" version))
1696 (sha256
1697 (base32
1698 "1n6igbc1b138wx1q5gca4pqw1j6nsyicfxds5n0b5989kaxqmh8j"))))
1699 (arguments
1700 `(#:phases
1701 (modify-phases %standard-phases
1702 (add-before 'check 'disable-invalid-test
1703 (lambda _
1704 (substitute* "testing/test_argcomplete.py"
1705 (("def test_remove_dir_prefix" line)
1706 (string-append "@pytest.mark.skip"
1707 "(reason=\"Assumes that /usr exists.\")\n "
1708 line)))
1709 #t)))))))
1710
358c3d61
EF
1711(define-public python-pytest-cov
1712 (package
1713 (name "python-pytest-cov")
545f4a1c 1714 (version "2.2.1")
358c3d61
EF
1715 (source
1716 (origin
1717 (method url-fetch)
1718 (uri (pypi-uri "pytest-cov" version))
1719 (sha256
545f4a1c
EF
1720 (base32
1721 "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
10468636 1722 (build-system python-build-system)
ce40b383
HG
1723 (arguments
1724 `(#:phases
1725 (modify-phases %standard-phases
1726 (replace 'check
1727 (lambda _
1728 ;; options taken from tox.ini
1729 ;; TODO: make "--restructuredtext" tests pass. They currently fail
1730 ;; with "Duplicate implicit target name"
1731 (zero? (system* "python" "./setup.py" "check"
1732 "--strict" "--metadata")))))))
f22efa01 1733 (propagated-inputs
10468636
EF
1734 `(("python-coverage" ,python-coverage)
1735 ("python-pytest" ,python-pytest)))
10468636
EF
1736 (home-page "https://github.com/pytest-dev/pytest-cov")
1737 (synopsis "Pytest plugin for measuring coverage")
1738 (description
1739 "Pytest-cov produces coverage reports. It supports centralised testing and
1740distributed testing in both @code{load} and @code{each} modes. It also
1741supports coverage of subprocesses.")
f210e944 1742 (license license:expat)))
358c3d61
EF
1743
1744(define-public python2-pytest-cov
f210e944 1745 (package-with-python2 python-pytest-cov))
358c3d61 1746
6784f2e3
RW
1747(define-public python-pytest-runner
1748 (package
1749 (name "python-pytest-runner")
1750 (version "2.6.2")
1751 (source
1752 (origin
1753 (method url-fetch)
54cd239b 1754 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
1755 (sha256
1756 (base32
1757 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1758 (build-system python-build-system)
1759 (arguments
1760 `(#:phases
1761 (modify-phases %standard-phases
1762 ;; The fancy way of setting the version with setuptools_scm does not
1763 ;; seem to work here.
1764 (add-after 'unpack 'set-version
1765 (lambda _
1766 (substitute* "docs/conf.py"
1767 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1768 (string-append "version = \"" ,version "\"")))
1769 #t)))))
1770 (native-inputs
1771 `(("python-pytest" ,python-pytest)
1772 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 1773 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
1774 (synopsis "Invoke py.test as a distutils command")
1775 (description
1776 "This package provides a @command{pytest-runner} command that
1777@file{setup.py} files can use to run tests.")
f210e944 1778 (license license:expat)))
54cd239b
EF
1779
1780(define-public python2-pytest-runner
f210e944 1781 (package-with-python2 python-pytest-runner))
6784f2e3 1782
44547e51
EF
1783(define-public python-pytest-mock
1784 (package
1785 (name "python-pytest-mock")
1786 (version "1.2")
1787 (source
1788 (origin
1789 (method url-fetch)
1790 (uri (pypi-uri "pytest-mock" version ".zip"))
1791 (sha256
1792 (base32
1793 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
1794 (build-system python-build-system)
1795 (native-inputs
1796 `(("unzip" ,unzip)))
f22efa01 1797 (propagated-inputs
d5e41cf2 1798 `(("python-pytest" ,python-pytest)))
44547e51
EF
1799 (home-page "https://github.com/pytest-dev/pytest-mock/")
1800 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
1801 (description
1802 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
1803around the patching API provided by the @code{mock} package, but with the
1804benefit of not having to worry about undoing patches at the end of a test.
1805The mocker fixture has the same API as @code{mock.patch}, supporting the
1806same arguments.")
1807 (properties `((python2-variant . ,(delay python2-pytest-mock))))
1808 (license license:expat)))
1809
1810(define-public python2-pytest-mock
1811 (let ((base (package-with-python2
1812 (strip-python2-variant python-pytest-mock))))
1813 (package (inherit base)
f22efa01 1814 (propagated-inputs
44547e51 1815 `(("python2-mock" ,python2-mock)
f22efa01 1816 ,@(package-propagated-inputs base))))))
44547e51 1817
8fa58fc9
CAW
1818(define-public python-pytest-xdist
1819 (package
1820 (name "python-pytest-xdist")
1821 (version "1.14")
1822 (source
1823 (origin
1824 (method url-fetch)
1825 (uri (pypi-uri "pytest-xdist" version ".zip"))
1826 (sha256
1827 (base32
de585a7e
HG
1828 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
1829 (modules '((guix build utils)))
1830 (snippet
1831 '(begin
1832 ;; Remove pre-compiled .pyc files from source.
1833 (for-each delete-file-recursively
1834 (find-files "." "__pycache__" #:directories? #t))
1835 (for-each delete-file (find-files "." "\\.pyc$"))
1836 #t))))
8fa58fc9
CAW
1837 (build-system python-build-system)
1838 (native-inputs
1839 `(("unzip" ,unzip)
8fa58fc9 1840 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1841 (propagated-inputs
c4516ad2 1842 `(("python-execnet" ,python-execnet)
8fa58fc9
CAW
1843 ("python-pytest" ,python-pytest)
1844 ("python-py" ,python-py)))
1845 (home-page
1846 "https://github.com/pytest-dev/pytest-xdist")
1847 (synopsis
1848 "Plugin for py.test with distributed testing and loop-on-failing modes")
1849 (description
1850 "The pytest-xdist plugin extends py.test with some unique test execution
1851modes: parallelization, running tests in boxed subprocesses, the ability
1852to run tests repeatedly when failed, and the ability to run tests on multiple
1853Python interpreters or platforms. It uses rsync to copy the existing
1854program code to a remote location, executes there, and then syncs the
1855result back.")
f210e944 1856 (license license:expat)))
8fa58fc9
CAW
1857
1858(define-public python2-pytest-xdist
f210e944 1859 (package-with-python2 python-pytest-xdist))
8fa58fc9 1860
84d24017
DT
1861(define-public python-scripttest
1862 (package
1863 (name "python-scripttest")
1864 (version "1.3")
1865 (source
1866 (origin
1867 (method url-fetch)
1868 (uri (string-append
1869 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
1870 version ".tar.gz"))
1871 (sha256
1872 (base32
1873 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
1874 (build-system python-build-system)
521b7772 1875 (native-inputs
f3b98f4f 1876 `(("python-pytest" ,python-pytest)))
84d24017
DT
1877 (home-page "http://pythonpaste.org/scripttest/")
1878 (synopsis "Python library to test command-line scripts")
1879 (description "Scripttest is a Python helper library for testing
1880interactive command-line applications. With it you can run a script in a
1881subprocess and see the output as well as any file modifications.")
bd3fa666 1882 (license license:expat)))
84d24017
DT
1883
1884(define-public python2-scripttest
1885 (package-with-python2 python-scripttest))
1886
d8fa80e1
DT
1887(define-public python-testtools
1888 (package
1889 (name "python-testtools")
1890 (version "1.0.0")
1891 (source
1892 (origin
1893 (method url-fetch)
1894 (uri (string-append
1895 "https://pypi.python.org/packages/source/t/testtools/testtools-"
1896 version ".tar.gz"))
1897 (sha256
1898 (base32
1899 "1dyml28ykpl5jb9khdmcdvhy1cxqingys6qvj2k04fzlaj6z3bbx"))))
1900 (build-system python-build-system)
0e88cbf8 1901 (propagated-inputs
f22efa01
HG
1902 `(("python-mimeparse" ,python-mimeparse)
1903 ("python-extras" ,python-extras)))
d8fa80e1
DT
1904 (home-page "https://github.com/testing-cabal/testtools")
1905 (synopsis
1906 "Extensions to the Python standard library unit testing framework")
1907 (description
1908 "Testtools extends the Python standard library unit testing framework to
1909provide matchers, more debugging information, and cross-Python
1910compatibility.")
3f641af0 1911 (license license:psfl)))
d8fa80e1
DT
1912
1913(define-public python2-testtools
1914 (package-with-python2 python-testtools))
1915
5bf3afea
DT
1916(define-public python-testscenarios
1917 (package
1918 (name "python-testscenarios")
1919 (version "0.4")
1920 (source
1921 (origin
1922 (method url-fetch)
1923 (uri (string-append
1924 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
1925 version ".tar.gz"))
1926 (sha256
1927 (base32
1928 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
1929 (build-system python-build-system)
f22efa01 1930 (propagated-inputs
8e73d3ba 1931 `(("python-testtools" ,python-testtools)))
5bf3afea
DT
1932 (home-page "https://launchpad.net/testscenarios")
1933 (synopsis "Pyunit extension for dependency injection")
1934 (description
1935 "Testscenarios provides clean dependency injection for Python unittest
1936style tests.")
3f641af0 1937 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
1938
1939(define-public python2-testscenarios
1940 (package-with-python2 python-testscenarios))
1941
dac79ecc
DT
1942(define-public python-testresources
1943 (package
1944 (name "python-testresources")
1945 (version "0.2.7")
1946 (source
1947 (origin
1948 (method url-fetch)
1949 (uri (string-append
1950 "https://pypi.python.org/packages/source/t/testresources/testresources-"
1951 version ".tar.gz"))
1952 (sha256
1953 (base32
1954 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
1955 (build-system python-build-system)
dac79ecc
DT
1956 (home-page "https://launchpad.net/testresources")
1957 (synopsis
1958 "Pyunit extension for managing test resources")
1959 (description
1960 "Testresources is an extension to Python's unittest to allow declarative
1961use of resources by test cases.")
3f641af0 1962 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
1963
1964(define-public python2-testresources
1965 (package-with-python2 python-testresources))
1966
070ab058
DT
1967(define-public python-subunit
1968 (package
1969 (name "python-subunit")
1970 (version "0.0.21")
1971 (source
1972 (origin
1973 (method url-fetch)
1974 (uri (string-append
1975 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
1976 version ".tar.gz"))
1977 (sha256
1978 (base32
1979 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
1980 (build-system python-build-system)
f22efa01 1981 (propagated-inputs
b52ad371
HG
1982 `(("python-extras" ,python-extras)
1983 ("python-mimeparse" ,python-mimeparse)))
1984 (native-inputs
1985 `(("python-testscenarios" ,python-testscenarios)))
070ab058
DT
1986 (home-page "http://launchpad.net/subunit")
1987 (synopsis "Python implementation of the subunit protocol")
1988 (description
1989 "Python-subunit is a Python implementation of the subunit test streaming
1990protocol.")
3f641af0 1991 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
1992
1993(define-public python2-subunit
1994 (package-with-python2 python-subunit))
1995
d2a8db92
HG
1996;; Recent versions of python-fixtures and python-testrepository need
1997;; python-pbr for packaging, which itself needs these two packages for
1998;; testing.
1999;; To fix this circular dependency, we use a build of python-pbr, based on the
2000;; same source, just without any test dependencies and with tests disabled.
2001;; python-pbr-minmal is then used to package python-fixtures and
2002;; python-testrepository.
2003;; Strictly speaking we currently could remove the test-requirements from the
2004;; normal python-pbr package (and save this package) since test are disabled
2005;; there anyway. But this may change in future.
2006(define python-pbr-minimal
cd49454b 2007 (package
d2a8db92
HG
2008 (name "python-pbr-minimal")
2009 (version "1.8.1")
7787ef76
CR
2010 (source
2011 (origin
2012 (method url-fetch)
d2a8db92 2013 (uri (pypi-uri "pbr" version))
7787ef76
CR
2014 (sha256
2015 (base32
d2a8db92 2016 "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2"))))
7787ef76
CR
2017 (build-system python-build-system)
2018 (arguments
d2a8db92
HG
2019 `(#:tests? #f))
2020 (home-page "http://docs.openstack.org/developer/pbr/")
2021 (synopsis "Minimal build of python-pbr used for bootstrapping")
7787ef76 2022 (description
d2a8db92 2023 "Used only for bootstrapping python2-pbr, you should not need this.")
3f641af0 2024 (license license:asl2.0)))
7787ef76 2025
d2a8db92
HG
2026(define python2-pbr-minimal
2027 (package-with-python2 python-pbr-minimal))
7787ef76 2028
1ef09c0c 2029(define-public python-pbr
e25f0174 2030 (package
d2a8db92 2031 (inherit python-pbr-minimal)
e25f0174 2032 (name "python-pbr")
e25f0174
BW
2033 (arguments
2034 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2035 (propagated-inputs
d2a8db92
HG
2036 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2037 (native-inputs
e25f0174 2038 `(("python-fixtures" ,python-fixtures)
d2a8db92 2039 ;; discover, coverage, hacking, subunit
e25f0174 2040 ("python-mock" ,python-mock)
d2a8db92 2041 ("python-six" ,python-six)
e25f0174
BW
2042 ("python-sphinx" ,python-sphinx)
2043 ("python-testrepository" ,python-testrepository)
2044 ("python-testresources" ,python-testresources)
2045 ("python-testscenarios" ,python-testscenarios)
2046 ("python-testtools" ,python-testtools)
2047 ("python-virtualenv" ,python-virtualenv)))
d2a8db92 2048 (synopsis "Enhance the default behavior of Python’s setuptools")
e25f0174
BW
2049 (description
2050 "Python Build Reasonableness (PBR) is a library that injects some useful
d2a8db92
HG
2051and sensible default behaviors into your setuptools run. It will set
2052versions, process requirements files and generate AUTHORS and ChangeLog file
2053from git information.
2054")))
1ef09c0c
BW
2055
2056(define-public python2-pbr
e25f0174 2057 (package-with-python2 python-pbr))
1ef09c0c 2058
7787ef76
CR
2059(define-public python-fixtures
2060 (package
2061 (name "python-fixtures")
13fcc6df 2062 (version "1.4.0")
7787ef76
CR
2063 (source
2064 (origin
2065 (method url-fetch)
13fcc6df 2066 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2067 (sha256
2068 (base32
13fcc6df 2069 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76 2070 (build-system python-build-system)
f6c1ef18
MB
2071 (arguments
2072 '(#:phases
2073 (modify-phases %standard-phases
2074 (replace 'check
2075 (lambda _
2076 (zero? (system* "python" "-m" "testtools.run"
2077 "fixtures.test_suite")))))))
7787ef76 2078 (propagated-inputs
ae92cadd 2079 `(("python-six" ,python-six)))
e7881f3d 2080 (native-inputs
f6c1ef18
MB
2081 `(("python-mock" ,python-mock)
2082 ("python-pbr-minimal" ,python-pbr-minimal)
7787ef76 2083 ("python-testtools" ,python-testtools)))
7787ef76
CR
2084 (home-page "https://launchpad.net/python-fixtures")
2085 (synopsis "Python test fixture library")
2086 (description
2087 "Fixtures provides a way to create reusable state, useful when writing
2088Python tests.")
3f641af0 2089 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2090
cd49454b
DT
2091(define-public python2-fixtures
2092 (package-with-python2 python-fixtures))
2093
b24a0c00
DT
2094(define-public python-testrepository
2095 (package
2096 (name "python-testrepository")
2097 (version "0.0.20")
2098 (source
2099 (origin
2100 (method url-fetch)
2101 (uri (string-append
2102 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2103 version ".tar.gz"))
2104 (sha256
2105 (base32
2106 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2107 (build-system python-build-system)
90110ef9
MB
2108 (arguments
2109 ;; FIXME: Many tests are failing.
2110 '(#:tests? #f))
05de40c5 2111 (propagated-inputs
b2e66edf
HG
2112 `(("python-fixtures" ,python-fixtures)
2113 ("python-subunit" ,python-subunit)
b52ad371
HG
2114 ("python-testtools" ,python-testtools)))
2115 (native-inputs
2116 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
b24a0c00
DT
2117 ("python-mimeparse" ,python-mimeparse)))
2118 (home-page "https://launchpad.net/testrepository")
2119 (synopsis "Database for Python test results")
2120 (description "Testrepository provides a database of test results which can
2121be used as part of a developer's workflow to check things such as what tests
2122have failed since the last commit or what tests are currently failing.")
3f641af0 2123 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2124
2125(define-public python2-testrepository
2126 (package-with-python2 python-testrepository))
2127
243a009a
DT
2128(define-public python-coverage
2129 (package
2130 (name "python-coverage")
4d4cf3dd 2131 (version "4.1")
243a009a
DT
2132 (source
2133 (origin
2134 (method url-fetch)
82a3c582 2135 (uri (pypi-uri "coverage" version))
243a009a
DT
2136 (sha256
2137 (base32
4d4cf3dd 2138 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a 2139 (build-system python-build-system)
bd10e677
MB
2140 (arguments
2141 ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
2142 '(#:tests? #f))
243a009a
DT
2143 (home-page "http://nedbatchelder.com/code/coverage")
2144 (synopsis "Code coverage measurement for Python")
2145 (description
2146 "Coverage measures code coverage, typically during test execution. It
2147uses the code analysis tools and tracing hooks provided in the Python standard
2148library to determine which lines are executable, and which have been
2149executed.")
3f641af0 2150 (license license:bsd-3)))
243a009a
DT
2151
2152(define-public python2-coverage
2153 (package-with-python2 python-coverage))
2154
12f839fd
EF
2155(define-public python-cov-core
2156 (package
2157 (name "python-cov-core")
2158 (version "1.15.0")
2159 (source
2160 (origin
2161 (method url-fetch)
2162 (uri (pypi-uri "cov-core" version))
2163 (sha256
2164 (base32
2165 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2166 (build-system python-build-system)
f78e1c27 2167 (propagated-inputs
12f839fd
EF
2168 `(("python-coverage" ,python-coverage)))
2169 (home-page "https://github.com/schlamar/cov-core")
2170 (synopsis "plugin core for use by pytest-cov, nose-cov and nose2-cov")
2171 (description
2172 "This is a library package for use by pytest-cov, nose-cov and nose2-cov.
2173It is useful for developing coverage plugins for these testing frameworks.")
f210e944 2174 (license license:expat)))
12f839fd
EF
2175
2176(define-public python2-cov-core
f210e944 2177 (package-with-python2 python-cov-core))
12f839fd 2178
041358fb
DT
2179(define-public python-discover
2180 (package
2181 (name "python-discover")
2182 (version "0.4.0")
2183 (source
2184 (origin
2185 (method url-fetch)
2186 (uri (string-append
2187 "https://pypi.python.org/packages/source/d/discover/discover-"
2188 version ".tar.gz"))
2189 (sha256
2190 (base32
2191 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2192 (build-system python-build-system)
041358fb
DT
2193 (home-page "http://pypi.python.org/pypi/discover/")
2194 (synopsis
2195 "Python test discovery for unittest")
2196 (description
2197 "Discover provides test discovery for unittest, a feature that has been
e881752c 2198backported from Python 2.7 for Python 2.4+.")
3f641af0 2199 (license license:bsd-3)))
041358fb
DT
2200
2201(define-public python2-discover
2202 (package-with-python2 python-discover))
2203
a480bc41
EB
2204(define-public behave
2205 (package
2206 (name "behave")
287cfd1a 2207 (version "1.2.5")
a480bc41
EB
2208 (source (origin
2209 (method url-fetch)
287cfd1a 2210 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2211 (sha256
2212 (base32
287cfd1a 2213 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41 2214 (build-system python-build-system)
f22efa01 2215 (propagated-inputs
f3b98f4f 2216 `(("python-six" ,python-six)
a480bc41
EB
2217 ("python-parse" ,python-parse)
2218 ("python-parse-type" ,python-parse-type)))
2219 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2220 ;PyHamcrest>=1.8
2221 (home-page "http://github.com/behave/behave")
2222 (synopsis "Python behavior-driven development")
2223 (description
2224 "Behave is a tool for behavior-driven development in python.
2225Behavior-driven development (or BDD) is an agile software development
2226technique that encourages collaboration between developers, QA and
2227non-technical or business participants in a software project. Behave uses
2228tests written in a natural language style, backed up by Python code.")
3f641af0 2229 (license license:x11)))
c7303d3c
DT
2230
2231(define-public python-exif-read
2232 (package
2233 (name "python-exif-read")
2a2d0981 2234 (version "2.1.2")
c7303d3c
DT
2235 (source (origin
2236 (method url-fetch)
2a2d0981 2237 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2238 (sha256
2239 (base32
2a2d0981 2240 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c 2241 (build-system python-build-system)
c7303d3c
DT
2242 (arguments `(#:tests? #f)) ; no tests
2243 (home-page "https://github.com/ianare/exif-py")
2244 (synopsis "Python library to extract EXIF data from image files")
2245 (description
2246 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2247files.")
3f641af0 2248 (license license:bsd-3)))
c7303d3c
DT
2249
2250(define-public python2-exif-read
2251 (package-with-python2 python-exif-read))
d5f89b22
DT
2252
2253(define-public python-pyld
2254 (package
2255 (name "python-pyld")
8957af32 2256 (version "0.7.1")
d5f89b22
DT
2257 (source (origin
2258 (method url-fetch)
af1ab773 2259 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2260 (sha256
2261 (base32
8957af32 2262 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
d5f89b22 2263 (build-system python-build-system)
d5f89b22
DT
2264 (arguments `(#:tests? #f)) ; no tests
2265 (home-page "http://github.com/digitalbazaar/pyld")
2266 (synopsis "Python implementation of the JSON-LD specification")
2267 (description
2268 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2269 (license license:bsd-3)))
d5f89b22
DT
2270
2271(define-public python2-pyld
2272 (package-with-python2 python-pyld))
3a1f9a68
DT
2273
2274(define-public python-certifi
2275 (package
2276 (name "python-certifi")
b2a2232c 2277 (version "2016.8.31")
3a1f9a68
DT
2278 (source (origin
2279 (method url-fetch)
9a41f443 2280 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2281 (sha256
2282 (base32
b2a2232c 2283 "06c9dcyv8ss050gkv5xjivbxhm6qm0s9vzy4r33wqabgv118lw7p"))))
3a1f9a68 2284 (build-system python-build-system)
3a1f9a68
DT
2285 (arguments `(#:tests? #f)) ; no tests
2286 (home-page "http://python-requests.org/")
2287 (synopsis "Python CA certificate bundle")
2288 (description
2289 "Certifi is a Python library that contains a CA certificate bundle, which
2290is used by the Requests library to verify HTTPS requests.")
3f641af0 2291 (license license:asl2.0)))
3a1f9a68
DT
2292
2293(define-public python2-certifi
2294 (package-with-python2 python-certifi))
e6cfbd36 2295
12c270dd
RW
2296(define-public python-click
2297 (package
2298 (name "python-click")
43accb58 2299 (version "6.6")
12c270dd
RW
2300 (source
2301 (origin
2302 (method url-fetch)
375f224b 2303 (uri (pypi-uri "click" version))
12c270dd 2304 (sha256
43accb58
LF
2305 (base32
2306 "1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc"))))
12c270dd 2307 (build-system python-build-system)
e2ab5a09
BW
2308 (arguments
2309 `(#:phases
2310 (modify-phases %standard-phases
2311 (add-after 'unpack 'fix-paths
2312 (lambda* (#:key inputs #:allow-other-keys)
2313 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2314 "cross-libc" "libc"))))
2315 (substitute* "click/_unicodefun.py"
2316 (("'locale'")
2317 (string-append "'" glibc "/bin/locale'"))))
97be1bc2
MB
2318 #t))
2319 (replace 'check
2320 (lambda _
2321 (zero? (system* "make" "test")))))))
2322 (native-inputs
2323 `(("python-pytest" ,python-pytest)))
12c270dd
RW
2324 (home-page "http://click.pocoo.org")
2325 (synopsis "Command line library for Python")
2326 (description
2327 "Click is a Python package for creating command line interfaces in a
2328composable way with as little code as necessary. Its name stands for
2329\"Command Line Interface Creation Kit\". It's highly configurable but comes
2330with sensible defaults out of the box.")
3f641af0 2331 (license license:bsd-3)))
12c270dd
RW
2332
2333(define-public python2-click
2334 (package-with-python2 python-click))
2335
addc808d
EF
2336(define-public python-wheel
2337 (package
2338 (name "python-wheel")
40981b5c 2339 (version "0.29.0")
e1ba0749
EF
2340 (source
2341 (origin
2342 (method url-fetch)
2343 (uri (pypi-uri "wheel" version))
2344 (sha256
2345 (base32
40981b5c 2346 "0j0n38hg1jvrmyy68f9ikvzq1gs9g0sx4ws7maf8wi3bwbbqmfqy"))))
e1ba0749
EF
2347 (build-system python-build-system)
2348 (native-inputs
f3b98f4f 2349 `(("python-jsonschema" ,python-jsonschema)
e1ba0749
EF
2350 ("python-pytest-cov" ,python-pytest-cov)))
2351 (home-page "https://bitbucket.org/pypa/wheel/")
2352 (synopsis "Format for built Python packages")
2353 (description
2354 "A wheel is a ZIP-format archive with a specially formatted filename and
2355the @code{.whl} extension. It is designed to contain all the files for a PEP
2356376 compatible install in a way that is very close to the on-disk format. Many
2357packages will be properly installed with only the @code{Unpack} step and the
2358unpacked archive preserves enough information to @code{Spread} (copy data and
2359scripts to their final locations) at any later time. Wheel files can be
2360installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2361 (license license:expat)
2362 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2363
2364(define-public python2-wheel
8ad4ae20
LF
2365 (let ((wheel (package-with-python2
2366 (strip-python2-variant python-wheel))))
264ae686 2367 (package (inherit wheel)
8ad4ae20
LF
2368 (native-inputs `(("python2-functools32" ,python2-functools32)
2369 ,@(package-native-inputs wheel))))))
2370
addc808d 2371
ae641128 2372(define-public python-requests
e6cfbd36 2373 (package
ae641128 2374 (name "python-requests")
74a066f9 2375 (version "2.9.1")
e6cfbd36
DT
2376 (source (origin
2377 (method url-fetch)
5d691657 2378 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2379 (sha256
2380 (base32
74a066f9 2381 "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5"))))
cff0ccf9 2382 ;; TODO: unbundle urllib3 and chardet.
e6cfbd36 2383 (build-system python-build-system)
cff0ccf9
MB
2384 (arguments
2385 ;; FIXME: Some tests require network access.
2386 '(#:tests? #f))
e6cfbd36
DT
2387 (home-page "http://python-requests.org/")
2388 (synopsis "Python HTTP library")
2389 (description
2390 "Requests is a Python HTTP client library. It aims to be easier to use
2391than Python’s urllib2 library.")
3f641af0 2392 (license license:asl2.0)))
864b5211 2393
e9005180
DT
2394;; Some software requires an older version of Requests, notably Docker
2395;; Compose.
2396(define-public python-requests-2.7
2397 (package (inherit python-requests)
2398 (version "2.7.0")
2399 (source (origin
2400 (method url-fetch)
2401 (uri (pypi-uri "requests" version))
2402 (sha256
2403 (base32
2404 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2405
ae641128 2406(define-public python2-requests
8ad4ae20 2407 (package-with-python2 python-requests))
ae641128 2408
ea521b42
DT
2409(define-public python-vcversioner
2410 (package
2411 (name "python-vcversioner")
538fe019 2412 (version "2.16.0.0")
ea521b42
DT
2413 (source
2414 (origin
2415 (method url-fetch)
2416 (uri (pypi-uri "vcversioner" version))
2417 (sha256
2418 (base32
538fe019 2419 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
ea521b42 2420 (build-system python-build-system)
ea521b42
DT
2421 (synopsis "Python library for version number discovery")
2422 (description "Vcversioner is a Python library that inspects tagging
2423information in a variety of version control systems in order to discover
2424version numbers.")
2425 (home-page "https://github.com/habnabit/vcversioner")
f210e944 2426 (license license:isc)))
ea521b42
DT
2427
2428(define-public python2-vcversioner
f210e944 2429 (package-with-python2 python-vcversioner))
ae641128 2430
864b5211
DT
2431(define-public python-jsonschema
2432 (package
2433 (name "python-jsonschema")
b3667afb 2434 (version "2.5.1")
864b5211
DT
2435 (source (origin
2436 (method url-fetch)
2437 (uri
2438 (string-append
2439 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2440 version ".tar.gz"))
2441 (sha256
2442 (base32
b3667afb 2443 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211 2444 (build-system python-build-system)
8bcd6b91
EF
2445 (arguments
2446 '(#:phases
2447 (modify-phases %standard-phases
2448 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
eaba9d66 2449 (native-inputs
8bcd6b91
EF
2450 `(("python-nose" ,python-nose)
2451 ("python-vcversioner" ,python-vcversioner)))
2452 (home-page "https://github.com/Julian/jsonschema")
864b5211
DT
2453 (synopsis "Implementation of JSON Schema for Python")
2454 (description
2455 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2456 (license license:expat)
2457 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2458
2459(define-public python2-jsonschema
a14600ec
LF
2460 (let ((jsonschema (package-with-python2
2461 (strip-python2-variant python-jsonschema))))
264ae686 2462 (package (inherit jsonschema)
eaba9d66 2463 (native-inputs
8bcd6b91 2464 `(("python2-mock" ,python2-mock)
eaba9d66
MB
2465 ,@(package-native-inputs jsonschema)))
2466 (propagated-inputs
2467 `(("python2-functools32" ,python2-functools32))))))
850189b8
DT
2468
2469(define-public python-unidecode
2470 (package
2471 (name "python-unidecode")
8925d4f3 2472 (version "0.04.18")
850189b8
DT
2473 (source (origin
2474 (method url-fetch)
8925d4f3 2475 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2476 (sha256
2477 (base32
8925d4f3 2478 "12hhblqy1ajvidm38im4171x4arg83pfmziyn53nizp29p3m14gi"))))
850189b8 2479 (build-system python-build-system)
850189b8
DT
2480 (home-page "https://pypi.python.org/pypi/Unidecode")
2481 (synopsis "ASCII transliterations of Unicode text")
2482 (description
2483 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2484useful when integrating with legacy code that doesn't support Unicode, or for
2485ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2486machine identifiers from human-readable Unicode strings that should still be
2487somewhat intelligeble.")
3f641af0 2488 (license license:gpl2+)))
850189b8
DT
2489
2490(define-public python2-unidecode
2491 (package-with-python2 python-unidecode))
6d45fef4
DT
2492
2493(define-public python-pyjwt
2494 (package
2495 (name "python-pyjwt")
eb31d4b4 2496 (version "1.4.0")
6d45fef4
DT
2497 (source
2498 (origin
2499 (method url-fetch)
eb31d4b4 2500 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2501 (sha256
2502 (base32
eb31d4b4 2503 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2504 (build-system python-build-system)
eb31d4b4 2505 (native-inputs
130fe994
HG
2506 `(("python-pytest" ,python-pytest)
2507 ("python-pytest-cov" ,python-pytest-cov)
2508 ("python-pytest-runner" ,python-pytest-runner)))
6d45fef4
DT
2509 (home-page "http://github.com/progrium/pyjwt")
2510 (synopsis "JSON Web Token implementation in Python")
2511 (description
2512 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2513 (license license:expat)))
6d45fef4
DT
2514
2515(define-public python2-pyjwt
2516 (package-with-python2 python-pyjwt))
2517
2cec1f6f
DT
2518(define-public python-oauthlib
2519 (package
2520 (name "python-oauthlib")
bde2171d 2521 (version "1.0.3")
2cec1f6f
DT
2522 (source (origin
2523 (method url-fetch)
bde2171d 2524 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2525 (sha256
2526 (base32
bde2171d 2527 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2528 (build-system python-build-system)
bde2171d 2529 (native-inputs
bb06aa34 2530 `(("python-nose" ,python-nose)
bde2171d 2531 ("python-cryptography" ,python-cryptography)
bb06aa34
HG
2532 ("python-pyjwt" ,python-pyjwt)
2533 ("python-blinker" ,python-blinker)))
2cec1f6f
DT
2534 (home-page "https://github.com/idan/oauthlib")
2535 (synopsis "OAuth implementation for Python")
2536 (description
2537 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2538OAuth request-signing logic.")
3f641af0 2539 (license license:bsd-3)
59f151ec 2540 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2541
2542(define-public python2-oauthlib
59f151ec 2543 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2544 (package
2545 (inherit base)
00e10c6e 2546 (native-inputs `(("python2-unittest2" ,python2-unittest2)
bb06aa34 2547 ("python2-mock" ,python2-mock)
59f151ec 2548 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2549
2550(define-public python-itsdangerous
2551 (package
2552 (name "python-itsdangerous")
2553 (version "0.24")
2554 (source
2555 (origin
2556 (method url-fetch)
2557 (uri (string-append
2558 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2559 version ".tar.gz"))
2560 (sha256
2561 (base32
2562 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2563 (build-system python-build-system)
ec5dbb5c
DT
2564 (home-page "http://github.com/mitsuhiko/itsdangerous")
2565 (synopsis "Python library for passing data to/from untrusted environments")
2566 (description
2567 "Itsdangerous provides various helpers to pass trusted data to untrusted
2568environments and back.")
f210e944 2569 (license license:bsd-3)))
ec5dbb5c
DT
2570
2571(define-public python2-itsdangerous
f210e944 2572 (package-with-python2 python-itsdangerous))
5731cae3 2573
8d12be1e
RW
2574(define-public python-pyyaml
2575 (package
2576 (name "python-pyyaml")
2577 (version "3.11")
2578 (source
2579 (origin
2580 (method url-fetch)
2581 (uri (string-append
2582 "https://pypi.python.org/packages/source/P/PyYAML/PyYAML-"
2583 version ".tar.gz"))
2584 (sha256
2585 (base32
2586 "1s26125vfnskng58ym37xhwv8v0mm95b2cwbjfag8prfhy596v63"))))
2587 (build-system python-build-system)
2588 (inputs
2589 `(("libyaml" ,libyaml)))
8d12be1e
RW
2590 (home-page "http://pyyaml.org/wiki/PyYAML")
2591 (synopsis "YAML parser and emitter for Python")
2592 (description
2593 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2594complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2595API, and sensible error messages. PyYAML supports standard YAML tags and
2596provides Python-specific tags that allow to represent an arbitrary Python
2597object.")
2598 (license license:expat)))
2599
2600(define-public python2-pyyaml
2601 (package-with-python2 python-pyyaml))
2602
5731cae3
DT
2603(define-public python-virtualenv
2604 (package
2605 (name "python-virtualenv")
58d04dba 2606 (version "15.0.3")
5731cae3
DT
2607 (source
2608 (origin
2609 (method url-fetch)
17804240 2610 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2611 (sha256
2612 (base32
58d04dba 2613 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
5731cae3 2614 (build-system python-build-system)
17804240
EF
2615 (arguments
2616 `(#:phases
2617 (modify-phases %standard-phases
58d04dba
RW
2618 (replace 'check
2619 (lambda _
2620 ;; Disable failing test. See upstream bug report
2621 ;; https://github.com/pypa/virtualenv/issues/957
2622 (substitute* "tests/test_virtualenv.py"
2623 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2624 (zero? (system* "py.test")))))))
e7881f3d 2625 (native-inputs
f3b98f4f 2626 `(("python-mock" ,python-mock)
17804240 2627 ("python-pytest" ,python-pytest)))
5731cae3
DT
2628 (home-page "https://virtualenv.pypa.io/")
2629 (synopsis "Virtual Python environment builder")
2630 (description
2631 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2632 (license license:expat)))
5731cae3
DT
2633
2634(define-public python2-virtualenv
2635 (package-with-python2 python-virtualenv))
8176d4d5
DT
2636
2637(define-public python-markupsafe
2638 (package
2639 (name "python-markupsafe")
2640 (version "0.23")
2641 (source
2642 (origin
2643 (method url-fetch)
2644 (uri (string-append
2645 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2646 version ".tar.gz"))
2647 (sha256
2648 (base32
2649 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2650 (build-system python-build-system)
8176d4d5
DT
2651 (home-page "http://github.com/mitsuhiko/markupsafe")
2652 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2653 (description
2654 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2655for Python.")
3f641af0 2656 (license license:bsd-3)))
8176d4d5
DT
2657
2658(define-public python2-markupsafe
2659 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2660
2661(define-public python-jinja2
2662 (package
2663 (name "python-jinja2")
e98149b3 2664 (version "2.8")
fe34f0d1
DT
2665 (source
2666 (origin
2667 (method url-fetch)
e98149b3 2668 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2669 (sha256
2670 (base32
e98149b3 2671 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1 2672 (build-system python-build-system)
f22efa01 2673 (propagated-inputs
f3b98f4f 2674 `(("python-markupsafe" ,python-markupsafe)))
fe34f0d1
DT
2675 (home-page "http://jinja.pocoo.org/")
2676 (synopsis "Python template engine")
2677 (description
2678 "Jinja2 is a small but fast and easy to use stand-alone template engine
2679written in pure Python.")
3f641af0 2680 (license license:bsd-3)))
fe34f0d1
DT
2681
2682(define-public python2-jinja2
2683 (package-with-python2 python-jinja2))
3580ab8b 2684
f7d17ac7
EE
2685(define-public python-pystache
2686 (package
2687 (name "python-pystache")
2688 (version "0.5.4")
2689 (source (origin
2690 (method url-fetch)
2691 (uri (pypi-uri "pystache" version))
2692 (sha256
2693 (base32
2694 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2695 (build-system python-build-system)
f7d17ac7
EE
2696 (home-page "http://defunkt.io/pystache/")
2697 (synopsis "Python logic-less template engine")
2698 (description
2699 "Pystache is a Python implementation of the framework agnostic,
2700logic-free templating system Mustache.")
2701 (license license:expat)))
2702
2703(define-public python2-pystache
2704 (package-with-python2 python-pystache))
2705
1285119b
RW
2706(define-public python-joblib
2707 (package
2708 (name "python-joblib")
f34ef331 2709 (version "0.10.3")
1285119b
RW
2710 (source (origin
2711 (method url-fetch)
f34ef331 2712 (uri (pypi-uri "joblib" version))
1285119b
RW
2713 (sha256
2714 (base32
6aa5f1ca
HG
2715 "0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
2716 (modules '((guix build utils)))
2717 (snippet
2718 '(begin
2719 ;; Remove pre-compiled .pyc files from source.
2720 (for-each delete-file-recursively
2721 (find-files "." "__pycache__" #:directories? #t))
2722 (for-each delete-file (find-files "." "\\.pyc$"))
2723 #t))))
1285119b 2724 (build-system python-build-system)
a8dd960a
RW
2725 (arguments
2726 `(#:phases
2727 (modify-phases %standard-phases
2728 (add-before 'check 'disable-failing-tests
2729 (lambda _
2730 ;; This numpydoc tests fails for unknown reasons
2731 (delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
2732 ;; This numpydoc test depends on matplotlib, which is not a
2733 ;; required input.
2734 (delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
2735 ;; These tests fail to execute sys.executable
2736 (substitute* "joblib/test/test_parallel.py"
2737 (("import nose" line)
2738 (string-append "from nose.plugins.skip import SkipTest\n" line))
2739 (("def test_nested_parallel_warnings" line)
2740 (string-append "@SkipTest\n" line))
2741 (("def test_parallel_with_interactively_defined_functions" line)
2742 (string-append "@SkipTest\n" line)))
2743 #t)))))
f052ec9a 2744 ;; Provide nose to enable tests command
1285119b 2745 (native-inputs
f3b98f4f 2746 `(("python-nose" ,python-nose)
f34ef331
RW
2747 ("python-sphinx" ,python-sphinx)
2748 ("python-docutils" ,python-docutils)
2749 ("python-numpydoc" ,python-numpydoc)))
1285119b
RW
2750 (home-page "http://pythonhosted.org/joblib/")
2751 (synopsis "Using Python functions as pipeline jobs")
2752 (description
2753 "Joblib is a set of tools to provide lightweight pipelining in Python.
2754In particular, joblib offers: transparent disk-caching of the output values
2755and lazy re-evaluation (memoize pattern), easy simple parallel computing
2756logging and tracing of the execution.")
3f641af0 2757 (license license:bsd-3)))
1285119b
RW
2758
2759(define-public python2-joblib
2760 (package-with-python2 python-joblib))
2761
3580ab8b
DT
2762(define-public python-docutils
2763 (package
2764 (name "python-docutils")
2765 (version "0.12")
2766 (source
2767 (origin
2768 (method url-fetch)
2769 (uri (string-append
2770 "https://pypi.python.org/packages/source/d/docutils/docutils-"
2771 version ".tar.gz"))
2772 (sha256
2773 (base32
2774 "1ylnjnw1x4b2y7blr6x35ncdzn69k253kw4cdkv6asdb21w73ny7"))))
2775 (build-system python-build-system)
3580ab8b
DT
2776 (arguments
2777 '(#:tests? #f)) ; no setup.py test command
2778 (home-page "http://docutils.sourceforge.net/")
2779 (synopsis "Python Documentation Utilities")
2780 (description
2781 "Docutils is a modular system for processing documentation into useful
2782formats, such as HTML, XML, and LaTeX. For input Docutils supports
2783reStructuredText.")
2784 ;; Most of the source code is public domain, but some source files are
2785 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 2786 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
2787
2788(define-public python2-docutils
2789 (package-with-python2 python-docutils))
fb35b7c0
DT
2790
2791(define-public python-pygments
2792 (package
2793 (name "python-pygments")
9f442285 2794 (version "2.0.2")
fb35b7c0
DT
2795 (source
2796 (origin
2797 (method url-fetch)
9f442285 2798 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
2799 (sha256
2800 (base32
9f442285 2801 "0lagrwifsgn0s8bzqahpr87p7gd38xja8f06akscinp6hj89283k"))))
fb35b7c0 2802 (build-system python-build-system)
995cb99e
MB
2803 (arguments
2804 ;; FIXME: Tests require sphinx, which depends on this.
2805 '(#:tests? #f))
fb35b7c0
DT
2806 (home-page "http://pygments.org/")
2807 (synopsis "Syntax highlighting")
2808 (description
2809 "Pygments is a syntax highlighting package written in Python.")
3f641af0 2810 (license license:bsd-2)))
fb35b7c0
DT
2811
2812(define-public python2-pygments
2813 (package-with-python2 python-pygments))
9dd6078d
DT
2814
2815(define-public python-sphinx
2816 (package
2817 (name "python-sphinx")
2818 (version "1.2.3")
2819 (source
2820 (origin
2821 (method url-fetch)
2822 (uri (string-append
2823 "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-"
2824 version ".tar.gz"))
2825 (sha256
2826 (base32
2827 "011xizm3jnmf4cvs5i6kgf6c5nn046h79i8j0vd0f27yw9j3p4wl"))))
2828 (build-system python-build-system)
03cb5f9e
MB
2829 (arguments
2830 ;; FIXME: Missing dependencies.
2831 '(#:tests? #f))
f22efa01 2832 (propagated-inputs
f3b98f4f 2833 `(("python-jinja2" ,python-jinja2)
9dd6078d
DT
2834 ("python-docutils" ,python-docutils)
2835 ("python-pygments" ,python-pygments)))
2836 (home-page "http://sphinx-doc.org/")
2837 (synopsis "Python documentation generator")
2838 (description "Sphinx is a tool that makes it easy to create documentation
2839for Python projects or other documents consisting of multiple reStructuredText
2840sources.")
3f641af0 2841 (license license:bsd-3)))
9dd6078d
DT
2842
2843(define-public python2-sphinx
2844 (package-with-python2 python-sphinx))
6888830b 2845
ad320b20
RW
2846(define-public python-sphinx-rtd-theme
2847 (package
2848 (name "python-sphinx-rtd-theme")
2849 (version "0.1.6")
2850 (source
2851 (origin
2852 (method url-fetch)
2853 (uri (string-append "https://pypi.python.org/packages/source/s/"
2854 "sphinx_rtd_theme/sphinx_rtd_theme-"
2855 version ".tar.gz"))
2856 (sha256
2857 (base32
2858 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
2859 (build-system python-build-system)
9d3a15b4
LF
2860 (propagated-inputs
2861 `(("python-sphinx" ,python-sphinx)))
ad320b20
RW
2862 (home-page "https://github.com/snide/sphinx_rtd_theme/")
2863 (synopsis "ReadTheDocs.org theme for Sphinx")
2864 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 2865 (license license:expat)))
ad320b20
RW
2866
2867(define-public python2-sphinx-rtd-theme
2868 (package-with-python2 python-sphinx-rtd-theme))
2869
fe94cf0c
HG
2870(define-public python-rst.linker
2871 (package
2872 (name "python-rst.linker")
2873 (version "1.7")
2874 (source
2875 (origin
2876 (method url-fetch)
2877 (uri (pypi-uri "rst.linker" version))
2878 (sha256
2879 (base32
2880 "0bh4lnj2p1nh0wf5pgxgfbrp27xhb1rinahkb5j7s3qprq6qn0sr"))))
2881 (build-system python-build-system)
2882 (propagated-inputs
2883 `(("python-dateutil" ,python-dateutil-2)
2884 ("python-six" ,python-six)))
2885 (native-inputs
2886 `(("python-setuptools-scm" ,python-setuptools-scm)))
2887 ;; Test would require path.py, which would introduce a cyclic dependence.
2888 (arguments `(#:tests? #f))
2889 ;; Note: As of version 1.7 the documentation is not worth building.
2890 (home-page "https://github.com/jaraco/rst.linker")
2891 (synopsis "Sphinx plugin to add links and timestamps")
2892 (description "rst.linker allows to automatically replace text by a
2893reStructuredText external reference or timestamps. It's primary purpose is to
2894augment the changelog, but it can be used for other documents, too.")
2895 (license license:expat)))
2896
2897(define-public python2-rst.linker
2898 (package-with-python2 python-rst.linker))
2899
f4de5b3b
CAW
2900(define-public python-feedgenerator
2901 (package
2902 (name "python-feedgenerator")
f0412aa2 2903 (version "1.8")
f4de5b3b 2904 (source
f4de5b3b 2905 (origin
f0412aa2
EF
2906 (method url-fetch)
2907 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
2908 (sha256
2909 (base32
7c88bcf4
HG
2910 "0mkimp1fpdan4p3882vzcws4l594k71ich4g0wq97jbra7p602n0"))
2911 (modules '((guix build utils)))
2912 (snippet
2913 '(begin
2914 ;; Remove pre-compiled .pyc files from source.
2915 (for-each delete-file-recursively
2916 (find-files "." "__pycache__" #:directories? #t))
2917 (for-each delete-file (find-files "." "\\.pyc$"))
2918 #t))))
f4de5b3b 2919 (build-system python-build-system)
dae73d9b 2920 (propagated-inputs
f3b98f4f 2921 `(("python-pytz" ,python-pytz)
f4de5b3b 2922 ("python-six" ,python-six)))
f0412aa2 2923 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
2924 (synopsis
2925 "Standalone version of Django's Atom/RSS feed generator")
2926 (description
2927 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
2928which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 2929 (license license:bsd-3)))
f4de5b3b
CAW
2930
2931(define-public python2-feedgenerator
2932 (package-with-python2 python-feedgenerator))
2933
59ad30e3
CAW
2934(define-public python-blinker
2935 (package
2936 (name "python-blinker")
7fb9ff4d 2937 (version "1.4")
59ad30e3
CAW
2938 (source
2939 (origin
2940 (method url-fetch)
7fb9ff4d 2941 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
2942 (sha256
2943 (base32
7fb9ff4d 2944 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3 2945 (build-system python-build-system)
59ad30e3
CAW
2946 (home-page "http://pythonhosted.org/blinker/")
2947 (synopsis "Fast, simple object-to-object and broadcast signaling")
2948 (description
2949 "Blinker provides a fast dispatching system that allows any number of
2950interested parties to subscribe to events, or \"signals\".")
2951 (license license:expat)))
2952
2953(define-public python2-blinker
2954 (package-with-python2 python-blinker))
2955
b8050e71
CAW
2956(define-public pelican
2957 (package
2958 (name "pelican")
11f97c27 2959 (version "3.6.3")
b8050e71
CAW
2960 (source
2961 (origin
2962 (method url-fetch)
11f97c27 2963 (uri (pypi-uri "pelican" version))
b8050e71
CAW
2964 (sha256
2965 (base32
11f97c27 2966 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 2967 (build-system python-build-system)
f22efa01 2968 (propagated-inputs
b8050e71
CAW
2969 `(("python-feedgenerator" ,python-feedgenerator)
2970 ("python-jinja2" ,python-jinja2)
2971 ("python-pygments" ,python-pygments)
2972 ("python-docutils" ,python-docutils)
2973 ("python-pytz" ,python-pytz)
2974 ("python-blinker" ,python-blinker)
2975 ("python-unidecode" ,python-unidecode)
2976 ("python-six" ,python-six)
2977 ("python-dateutil-2" ,python-dateutil-2)))
2978 (home-page "http://getpelican.com/")
2979 (arguments
2980 `(;; XXX Requires a lot more packages to do unit tests :P
2981 #:tests? #f
2982 #:phases (modify-phases %standard-phases
2983 (add-before
2984 'install 'adjust-requires
2985 ;; Since feedgenerator is installed from git, it doesn't
2986 ;; conform to the version requirements.
2987 ;;
2988 ;; We *do have* "feedgenerator >= 1.6", but strip off the
2989 ;; version requirement so setuptools doesn't get confused.
2990 (lambda _
2991 (substitute* "setup.py"
2992 (("['\"]feedgenerator.*?['\"]")
2993 "'feedgenerator'")))))))
2994 (synopsis "Python-based static site publishing system")
2995 (description
2996 "Pelican is a tool to generate a static blog from reStructuredText,
2997Markdown input files, and more. Pelican uses Jinja2 for templating
2998and is very extensible.")
3f641af0 2999 (license license:agpl3+)))
b8050e71 3000
240ca4aa
RW
3001(define-public python-scikit-learn
3002 (package
3003 (name "python-scikit-learn")
be0a4c26 3004 (version "0.16.1")
240ca4aa
RW
3005 (source
3006 (origin
3007 (method url-fetch)
3008 (uri (string-append
3009 "https://github.com/scikit-learn/scikit-learn/archive/"
3010 version ".tar.gz"))
7e21b9fb 3011 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
3012 (sha256
3013 (base32
be0a4c26 3014 "140skabifgc7lvvj873pnzlwx0ni6q8qkrsyad2ccjb3h8rxzkih"))))
240ca4aa
RW
3015 (build-system python-build-system)
3016 (arguments
3017 `(#:phases
3018 (alist-cons-before
2f6b3d2e
RW
3019 'check 'set-HOME
3020 ;; some tests require access to "$HOME"
3021 (lambda _ (setenv "HOME" "/tmp"))
3022 ;; Tests can only be run after the library has been installed and not
3023 ;; within the source directory.
3024 (alist-cons-after
3025 'install 'check
3026 (lambda _
3027 (with-directory-excursion "/tmp"
3028 ;; With Python 3 one test of 3334 fails
3029 ;; (sklearn.tests.test_common.test_transformers); see
3030 ;; https://github.com/scikit-learn/scikit-learn/issues/3693
3031 (system* "nosetests" "-v" "sklearn")))
3032 (alist-delete 'check %standard-phases)))))
240ca4aa 3033 (inputs
328bb95d
HG
3034 `(("openblas" ,openblas)))
3035 (native-inputs
3036 `(("python-nose" ,python-nose)))
240ca4aa
RW
3037 (propagated-inputs
3038 `(("python-numpy" ,python-numpy)
3039 ("python-scipy" ,python-scipy)))
3040 (home-page "http://scikit-learn.org/")
3041 (synopsis "Machine Learning in Python")
3042 (description
3043 "Scikit-learn provides simple and efficient tools for data
3044mining and data analysis.")
1b5241c5 3045 (license license:bsd-3)))
240ca4aa
RW
3046
3047(define-public python2-scikit-learn
1b5241c5 3048 (package-with-python2 python-scikit-learn))
240ca4aa 3049
12f8f9bb
RW
3050(define-public python-scikit-image
3051 (package
3052 (name "python-scikit-image")
3053 (version "0.11.3")
3054 (source
3055 (origin
3056 (method url-fetch)
3057 (uri (string-append
3058 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3059 version ".tar.gz"))
3060 (sha256
3061 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3062 (build-system python-build-system)
b83e2333 3063 ;; See DEPENDS.txt for the list of build and run time requiremnts
12f8f9bb
RW
3064 (propagated-inputs
3065 `(("python-matplotlib" ,python-matplotlib)
3066 ("python-networkx" ,python-networkx)
12f8f9bb 3067 ("python-scipy" ,python-scipy)
12f8f9bb
RW
3068 ("python-pillow" ,python-pillow)))
3069 (native-inputs
b83e2333
HG
3070 `(("python-numpy" ,python-numpy)
3071 ("python-cython" ,python-cython)
3072 ("python-six" ,python-six)))
12f8f9bb
RW
3073 (home-page "http://scikit-image.org/")
3074 (synopsis "Image processing in Python")
3075 (description
e881752c 3076 "Scikit-image is a collection of algorithms for image processing.")
12733594 3077 (license license:bsd-3)))
12f8f9bb
RW
3078
3079(define-public python2-scikit-image
12733594 3080 (package-with-python2 python-scikit-image))
12f8f9bb 3081
5394a6a6
RW
3082(define-public python-redis
3083 (package
3084 (name "python-redis")
3085 (version "2.10.3")
3086 (source
3087 (origin
3088 (method url-fetch)
3089 (uri (string-append
3090 "https://pypi.python.org/packages/source/r/redis/redis-"
3091 version ".tar.gz"))
3092 (sha256
3093 (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4"))))
3094 (build-system python-build-system)
3095 ;; Tests require a running Redis server
3096 (arguments '(#:tests? #f))
cf8124b0
HG
3097 ;; As long as we are not running test, we do not need this input :-)
3098 ;;(native-inputs
3099 ;; `(("python-pytest" ,python-pytest)))
5394a6a6
RW
3100 (home-page "https://github.com/andymccurdy/redis-py")
3101 (synopsis "Redis Python client")
3102 (description
3103 "This package provides a Python interface to the Redis key-value store.")
3104 (license license:expat)))
3105
3106(define-public python2-redis
3107 (package-with-python2 python-redis))
3108
748cef5b
RW
3109(define-public python-rq
3110 (package
3111 (name "python-rq")
3112 (version "0.5.2")
3113 (source
3114 (origin
3115 (method url-fetch)
3116 (uri (string-append
3117 "https://pypi.python.org/packages/source/r/rq/rq-"
3118 version ".tar.gz"))
3119 (sha256
3120 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
3121 (build-system python-build-system)
3122 (propagated-inputs
3123 `(("python-click" ,python-click)
3124 ("python-redis" ,python-redis)))
748cef5b
RW
3125 (home-page "http://python-rq.org/")
3126 (synopsis "Simple job queues for Python")
3127 (description
3128 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3129processing them in the background with workers. It is backed by Redis and it
3130is designed to have a low barrier to entry.")
3f641af0 3131 (license license:bsd-2)))
748cef5b
RW
3132
3133(define-public python2-rq
3134 (package-with-python2 python-rq))
3135
6888830b
FB
3136(define-public python-cython
3137 (package
3138 (name "python-cython")
dd22efef 3139 (version "0.24.1")
6888830b
FB
3140 (source
3141 (origin
3142 (method url-fetch)
56918e26 3143 (uri (pypi-uri "Cython" version))
6888830b
FB
3144 (sha256
3145 (base32
dd22efef 3146 "1fg7fmpvfcq9md4ncyqnnylyjy4z3ksdrshzis95g1sh03d8z044"))))
6888830b
FB
3147 (build-system python-build-system)
3148 ;; we need the full python package and not just the python-wrapper
3149 ;; because we need libpython3.3m.so
3150 (inputs
3151 `(("python" ,python)))
3152 (arguments
3153 `(#:phases
b92f651b
EF
3154 (modify-phases %standard-phases
3155 (add-before 'check 'set-HOME
3156 ;; some tests require access to "$HOME/.cython"
3157 (lambda _ (setenv "HOME" "/tmp")))
3158 (replace 'check
3159 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3160 (home-page "http://cython.org/")
3161 (synopsis "C extensions for Python")
3162 (description "Cython is an optimising static compiler for both the Python
3163programming language and the extended Cython programming language. It makes
3164writing C extensions for Python as easy as Python itself.")
3f641af0 3165 (license license:asl2.0)
48b311b1 3166 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3167
3168(define-public python2-cython
48b311b1
LC
3169 (package (inherit (package-with-python2
3170 (strip-python2-variant python-cython)))
6888830b
FB
3171 (name "python2-cython")
3172 (inputs
3173 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533 3174
ee5fb7ee
AV
3175;; The RPython toolchain currently does not support Python 3.
3176(define-public python2-rpython
3177 (package
3178 (name "python2-rpython")
3179 (version "0.1.4")
3180 (source
3181 (origin
3182 (method url-fetch)
3183 (uri (pypi-uri "rpython" version))
3184 (sha256
3185 (base32
3186 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3187 (build-system python-build-system)
3188 (arguments `(#:python ,python-2))
3189 (native-inputs
f3b98f4f 3190 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
ee5fb7ee
AV
3191 (home-page "https://rpython.readthedocs.org")
3192 (synopsis "Framework for implementing interpreters and virtual machines")
3193 (description "RPython is a translation and support framework for
3194producing implementations of dynamic languages, emphasizing a clean separation
3195between language specification and implementation aspects.")
3196 (license license:expat)))
3197
0da98533
FB
3198;; This version of numpy is missing the documentation and is only used to
3199;; build matplotlib which is required to build numpy's documentation.
3200(define python-numpy-bootstrap
3201 (package
3202 (name "python-numpy-bootstrap")
ef9b4c04 3203 (version "1.10.4")
0da98533
FB
3204 (source
3205 (origin
3206 (method url-fetch)
de67e922 3207 (uri (string-append "mirror://sourceforge/numpy/NumPy/" version
0da98533
FB
3208 "/numpy-" version ".tar.gz"))
3209 (sha256
3210 (base32
ef9b4c04 3211 "1bjjhvncraka5s6i4lg644jrxij6bvycxy7an20gcz3a0m11iygp"))))
0da98533
FB
3212 (build-system python-build-system)
3213 (inputs
328bb95d 3214 `(("openblas" ,openblas)
cba256f8 3215 ("lapack" ,lapack)))
0da98533 3216 (native-inputs
2efabc55
HG
3217 `(("python-nose" ,python-nose)
3218 ("gfortran" ,gfortran)))
0da98533
FB
3219 (arguments
3220 `(#:phases
2efabc55
HG
3221 (modify-phases %standard-phases
3222 (add-before 'build 'set-environment-variables
3223 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3224 (call-with-output-file "site.cfg"
3225 (lambda (port)
cba256f8
RW
3226 (format port
3227 "[openblas]
dbdfe515
RW
3228libraries = openblas
3229library_dirs = ~a/lib
3230include_dirs = ~a/include
cba256f8 3231
2efabc55
HG
3232# backslash-n to make emacs happy
3233\n[lapack]
cba256f8
RW
3234lapack_libs = lapack
3235library_dirs = ~a/lib
3236include_dirs = ~a/include
3237"
3238 (assoc-ref inputs "openblas")
3239 (assoc-ref inputs "openblas")
3240 (assoc-ref inputs "lapack")
3241 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3242 ;; Use "gcc" executable, not "cc".
3243 (substitute* "numpy/distutils/system_info.py"
3244 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3245 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
2efabc55 3246 #t))
6a843168
FB
3247 ;; Tests can only be run after the library has been installed and not
3248 ;; within the source directory.
2efabc55
HG
3249 (delete 'check)
3250 (add-after 'install 'check
3251 (lambda* (#:key outputs inputs #:allow-other-keys)
3252 ;; Make installed package available for running the tests
3253 (add-installed-pythonpath inputs outputs)
6a843168 3254 (with-directory-excursion "/tmp"
89b5c60e 3255 (zero? (system* "python" "-c"
2efabc55 3256 "import numpy; numpy.test(verbose=2)"))))))))
0da98533
FB
3257 (home-page "http://www.numpy.org/")
3258 (synopsis "Fundamental package for scientific computing with Python")
3259 (description "NumPy is the fundamental package for scientific computing
e881752c 3260with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3261object, sophisticated (broadcasting) functions, tools for integrating C/C++
3262and Fortran code, useful linear algebra, Fourier transform, and random number
3263capabilities.")
3f641af0 3264 (license license:bsd-3)))
0da98533
FB
3265
3266(define python2-numpy-bootstrap
3267 (package-with-python2 python-numpy-bootstrap))
15bfe6d6 3268
3a1bfe18
RW
3269(define-public python2-fastlmm
3270 (package
3271 (name "python2-fastlmm")
b074e7d4 3272 (version "0.2.21")
3a1bfe18
RW
3273 (source
3274 (origin
3275 (method url-fetch)
b074e7d4 3276 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3277 (sha256
3278 (base32
b074e7d4 3279 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3280 (build-system python-build-system)
3281 (arguments
3282 `(#:python ,python-2)) ; only Python 2.7 is supported
3283 (propagated-inputs
3284 `(("python2-numpy" ,python2-numpy)
3285 ("python2-scipy" ,python2-scipy)
3286 ("python2-matplotlib" ,python2-matplotlib)
3287 ("python2-pandas" ,python2-pandas)
3288 ("python2-scikit-learn" ,python2-scikit-learn)
3a1bfe18
RW
3289 ("python2-pysnptools" ,python2-pysnptools)))
3290 (native-inputs
3291 `(("unzip" ,unzip)
2efabc55 3292 ("python2-cython" ,python2-cython)
f3b98f4f 3293 ("python2-mock" ,python2-mock)))
3a1bfe18
RW
3294 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3295 (synopsis "Perform genome-wide association studies on large data sets")
3296 (description
3297 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3298Models, is a program for performing both single-SNP and SNP-set genome-wide
3299association studies (GWAS) on extremely large data sets.")
3f641af0 3300 (license license:asl2.0)))
3a1bfe18 3301
2ee8869a
FB
3302(define-public python-numpy
3303 (package (inherit python-numpy-bootstrap)
3304 (name "python-numpy")
3305 (outputs '("out" "doc"))
89b5c60e 3306 (inputs
b0aa6ede
HG
3307 `(("which" ,which)
3308 ,@(package-inputs python-numpy-bootstrap)))
2efabc55
HG
3309 (propagated-inputs
3310 `(("python-matplotlib" ,python-matplotlib)
2ee8869a 3311 ("python-pyparsing" ,python-pyparsing)
b0aa6ede 3312 ,@(package-propagated-inputs python-numpy-bootstrap)))
2ee8869a
FB
3313 (native-inputs
3314 `(("pkg-config" ,pkg-config)
2efabc55
HG
3315 ("python-sphinx" ,python-sphinx)
3316 ("python-numpydoc" ,python-numpydoc)
2ee8869a
FB
3317 ("texlive" ,texlive)
3318 ("texinfo" ,texinfo)
3319 ("perl" ,perl)
3320 ,@(package-native-inputs python-numpy-bootstrap)))
3321 (arguments
89b5c60e 3322 `(,@(substitute-keyword-arguments
2ee8869a
FB
3323 (package-arguments python-numpy-bootstrap)
3324 ((#:phases phases)
3325 `(alist-cons-after
3326 'install 'install-doc
2efabc55
HG
3327 (lambda* (#:key inputs outputs #:allow-other-keys)
3328 ;; Make installed package available for building the
3329 ;; documentation
3330 (add-installed-pythonpath inputs outputs)
2ee8869a 3331 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
89b5c60e
AE
3332 (doc (string-append
3333 data "/doc/" ,name "-"
2ee8869a
FB
3334 ,(package-version python-numpy-bootstrap)))
3335 (info (string-append data "/info"))
3336 (html (string-append doc "/html"))
3337 (pyver ,(string-append "PYVER=")))
3338 (with-directory-excursion "doc"
3339 (mkdir-p html)
3340 (system* "make" "html" pyver)
3341 (system* "make" "latex" "PAPER=a4" pyver)
89b5c60e 3342 (system* "make" "-C" "build/latex"
2ee8869a
FB
3343 "all-pdf" "PAPER=a4" pyver)
3344 ;; FIXME: Generation of the info file fails.
3345 ;; (system* "make" "info" pyver)
3346 ;; (mkdir-p info)
3347 ;; (copy-file "build/texinfo/numpy.info"
3348 ;; (string-append info "/numpy.info"))
3349 (for-each (lambda (file)
3350 (copy-file (string-append "build/latex" file)
3351 (string-append doc file)))
3352 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3353 (with-directory-excursion "build/html"
3354 (for-each (lambda (file)
3355 (let* ((dir (dirname file))
3356 (tgt-dir (string-append html "/" dir)))
3357 (unless (equal? "." dir)
3358 (mkdir-p tgt-dir))
96c46210 3359 (install-file file html)))
2ee8869a
FB
3360 (find-files "." ".*"))))))
3361 ,phases)))))))
3362
764c077b 3363(define-public python2-numpy
57b7b8cd 3364 (package-with-python2 python-numpy))
2ee8869a 3365
15bfe6d6
FB
3366(define-public python-pyparsing
3367 (package
3368 (name "python-pyparsing")
e0669289 3369 (version "2.0.3")
15bfe6d6
FB
3370 (source
3371 (origin
3372 (method url-fetch)
de67e922
LF
3373 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
3374 "/pyparsing-" version
15bfe6d6
FB
3375 "/pyparsing-" version ".tar.gz"))
3376 (sha256
3377 (base32
e0669289 3378 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3379 (build-system python-build-system)
3380 (outputs '("out" "doc"))
3381 (arguments
3382 `(#:tests? #f ; no test target
3383 #:modules ((guix build python-build-system)
3384 (guix build utils))
3385 #:phases
3386 (alist-cons-after
3387 'install 'install-doc
3388 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3389 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3390 "/share/doc/" ,name "-" ,version))
3391 (html-doc (string-append doc "/html"))
3392 (examples (string-append doc "/examples")))
3393 (mkdir-p html-doc)
3394 (mkdir-p examples)
89b5c60e 3395 (for-each
15bfe6d6 3396 (lambda (dir tgt)
89b5c60e 3397 (map (lambda (file)
96c46210 3398 (install-file file tgt))
15bfe6d6
FB
3399 (find-files dir ".*")))
3400 (list "docs" "htmldoc" "examples")
3401 (list doc html-doc examples))))
3402 %standard-phases)))
3403 (home-page "http://pyparsing.wikispaces.com")
3404 (synopsis "Python parsing class library")
3405 (description
3406 "The pyparsing module is an alternative approach to creating and
3407executing simple grammars, vs. the traditional lex/yacc approach, or the use
3408of regular expressions. The pyparsing module provides a library of classes
3409that client code uses to construct the grammar directly in Python code.")
bd3fa666 3410 (license license:expat)))
15bfe6d6
FB
3411
3412(define-public python2-pyparsing
3413 (package-with-python2 python-pyparsing))
3414
ec00de35
FB
3415(define-public python-numpydoc
3416 (package
3417 (name "python-numpydoc")
3418 (version "0.5")
3419 (source
3420 (origin
3421 (method url-fetch)
89b5c60e 3422 (uri (string-append
ec00de35
FB
3423 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3424 version ".tar.gz"))
3425 (sha256
3426 (base32
5e4d8f67
AE
3427 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3428 (modules '((guix build utils)))
3429 (snippet
3430 '(begin
3431 ;; Drop a test requiring matplotlib, which we cannot add as an
3432 ;; input since it would create a circular dependency: Extend the
3433 ;; test for Python 3, where it is already dropped, to Python 2.
3434 (substitute* "numpydoc/tests/test_plot_directive.py"
3435 (("3") "2"))))))
ec00de35 3436 (build-system python-build-system)
fe4a8da4 3437 (propagated-inputs
213d1745
HG
3438 `(("python-sphinx" ,python-sphinx)))
3439 (native-inputs
3440 `(("python-nose" ,python-nose)))
ec00de35
FB
3441 (home-page "https://pypi.python.org/pypi/numpydoc")
3442 (synopsis
3443 "Numpy's Sphinx extensions")
3444 (description
3445 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 3446 (license license:bsd-2)))
ec00de35
FB
3447
3448(define-public python2-numpydoc
5e4d8f67 3449 (package-with-python2 python-numpydoc))
1c65314c 3450
1e656049
RW
3451(define-public python-numexpr
3452 (package
3453 (name "python-numexpr")
26112c0a 3454 (version "2.6.0")
1e656049
RW
3455 (source
3456 (origin
3457 (method url-fetch)
26112c0a 3458 (uri (pypi-uri "numexpr" version))
1e656049
RW
3459 (sha256
3460 (base32
26112c0a 3461 "0i6iagl2hhbr8q4qzbbjd859v5806vqylq87fq7pi914ps6d6cag"))))
1e656049
RW
3462 (build-system python-build-system)
3463 (arguments `(#:tests? #f)) ; no tests included
3464 (propagated-inputs
3465 `(("python-numpy" ,python-numpy)))
3466 (home-page "https://github.com/pydata/numexpr")
3467 (synopsis "Fast numerical expression evaluator for NumPy")
3468 (description
3469 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3470expressions that operate on arrays are accelerated and use less memory than
3471doing the same calculation in Python. In addition, its multi-threaded
3472capabilities can make use of all your cores, which may accelerate
3473computations, most specially if they are not memory-bounded (e.g. those using
3474transcendental functions).")
f210e944 3475 (license license:expat)))
1e656049
RW
3476
3477(define-public python2-numexpr
f210e944 3478 (package-with-python2 python-numexpr))
1e656049 3479
1c65314c
FB
3480(define-public python-matplotlib
3481 (package
3482 (name "python-matplotlib")
1bbc659f 3483 (version "1.4.3")
1c65314c
FB
3484 (source
3485 (origin
3486 (method url-fetch)
de67e922
LF
3487 (uri (string-append "mirror://sourceforge/matplotlib/matplotlib"
3488 "/matplotlib-" version
1c65314c
FB
3489 "/matplotlib-" version ".tar.gz"))
3490 (sha256
3491 (base32
1bbc659f 3492 "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
fc1adab1 3493 (patches (search-patches "matplotlib-setupext-tk.patch"))))
1c65314c
FB
3494 (build-system python-build-system)
3495 (outputs '("out" "doc"))
25f9a068
FB
3496 (propagated-inputs ; the following packages are all needed at run time
3497 `(("python-pyparsing" ,python-pyparsing)
3498 ("python-pygobject" ,python-pygobject)
3499 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3500 ("python-tkinter" ,python "tk")
ca33a3ad
HG
3501 ("python-dateutil" ,python-dateutil-2)
3502 ("python-numpy" ,python-numpy-bootstrap)
3503 ("python-pillow" ,python-pillow)
3504 ("python-pytz" ,python-pytz)
3505 ("python-six" ,python-six)
25f9a068
FB
3506 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3507 ;; from 'gtk+') provides the required 'typelib' files used by
3508 ;; 'gobject-introspection'. The location of these files is set with the
3509 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3510 ;; is done automatically by a 'native-search-path' procedure. However,
3511 ;; at run-time the user must set this variable as follows:
3512 ;;
3513 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3514 ("gtk+" ,gtk+)
3515 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3516 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3517 ;; object. For this reason we need to import both libraries.
3518 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3519 ("python-pycairo" ,python-pycairo)
3520 ("python-cairocffi" ,python-cairocffi)))
1c65314c 3521 (inputs
ca33a3ad 3522 `(("libpng" ,libpng)
1c65314c
FB
3523 ("imagemagick" ,imagemagick)
3524 ("freetype" ,freetype)
25f9a068
FB
3525 ("cairo" ,cairo)
3526 ("glib" ,glib)
1c65314c 3527 ;; FIXME: Add backends when available.
1c65314c
FB
3528 ;("python-wxpython" ,python-wxpython)
3529 ;("python-pyqt" ,python-pyqt)
1bbc659f
FB
3530 ("tcl" ,tcl)
3531 ("tk" ,tk)))
1c65314c
FB
3532 (native-inputs
3533 `(("pkg-config" ,pkg-config)
ca33a3ad
HG
3534 ("python-sphinx" ,python-sphinx)
3535 ("python-numpydoc" ,python-numpydoc)
3536 ("python-nose" ,python-nose)
3537 ("python-mock" ,python-mock)
1c65314c
FB
3538 ("texlive" ,texlive)
3539 ("texinfo" ,texinfo)))
3540 (arguments
3541 `(#:phases
25f9a068
FB
3542 (alist-cons-before
3543 'build 'configure-environment
3544 (lambda* (#:key outputs inputs #:allow-other-keys)
3545 (let ((cairo (assoc-ref inputs "cairo"))
3546 (gtk+ (assoc-ref inputs "gtk+")))
3547 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3548 ;; has not effect.
25f9a068
FB
3549 (setenv "LD_LIBRARY_PATH"
3550 (string-append cairo "/lib:" gtk+ "/lib"))
3551 (setenv "HOME" (getcwd))
3552 (call-with-output-file "setup.cfg"
3553 (lambda (port)
1bbc659f
FB
3554 (format port "[directories]~%
3555basedirlist = ~a,~a~%
57b7b8cd 3556 [rc_options]~%
1bbc659f
FB
3557backend = TkAgg~%"
3558 (assoc-ref inputs "tcl")
3559 (assoc-ref inputs "tk"))))))
25f9a068
FB
3560 (alist-cons-after
3561 'install 'install-doc
ca33a3ad 3562 (lambda* (#:key inputs outputs #:allow-other-keys)
25f9a068
FB
3563 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3564 (doc (string-append data "/doc/" ,name "-" ,version))
3565 (info (string-append data "/info"))
3566 (html (string-append doc "/html")))
ca33a3ad
HG
3567 ;; Make installed package available for building the
3568 ;; documentation
3569 (add-installed-pythonpath inputs outputs)
25f9a068 3570 (with-directory-excursion "doc"
25f9a068
FB
3571 ;; Produce pdf in 'A4' format.
3572 (substitute* (find-files "." "conf\\.py")
3573 (("latex_paper_size = 'letter'")
3574 "latex_paper_size = 'a4'"))
3575 (mkdir-p html)
3576 (mkdir-p info)
3577 ;; The doc recommends to run the 'html' target twice.
3578 (system* "python" "make.py" "html")
3579 (system* "python" "make.py" "html")
18b31516 3580 (copy-recursively "build/html" html)
25f9a068
FB
3581 (system* "python" "make.py" "latex")
3582 (system* "python" "make.py" "texinfo")
18b31516
FB
3583 (symlink (string-append html "/_images")
3584 (string-append info "/matplotlib-figures"))
3585 (with-directory-excursion "build/texinfo"
3586 (substitute* "matplotlib.texi"
3587 (("@image\\{([^,]*)" all file)
3588 (string-append "@image{matplotlib-figures/" file)))
3589 (symlink (string-append html "/_images")
3590 "./matplotlib-figures")
3591 (system* "makeinfo" "--no-split"
3592 "-o" "matplotlib.info" "matplotlib.texi"))
25f9a068
FB
3593 (copy-file "build/texinfo/matplotlib.info"
3594 (string-append info "/matplotlib.info"))
3595 (copy-file "build/latex/Matplotlib.pdf"
18b31516 3596 (string-append doc "/Matplotlib.pdf")))))
25f9a068 3597 %standard-phases))))
1c65314c
FB
3598 (home-page "http://matplotlib.org")
3599 (synopsis "2D plotting library for Python")
3600 (description
3601 "Matplotlib is a Python 2D plotting library which produces publication
3602quality figures in a variety of hardcopy formats and interactive environments
3603across platforms. Matplotlib can be used in Python scripts, the python and
3604ipython shell, web application servers, and six graphical user interface
3605toolkits.")
3f641af0 3606 (license license:psfl)
57b7b8cd 3607 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 3608
764c077b 3609(define-public python2-matplotlib
57b7b8cd
LC
3610 (let ((matplotlib (package-with-python2
3611 (strip-python2-variant python-matplotlib))))
764c077b 3612 (package (inherit matplotlib)
88c26834
AE
3613 ;; Make sure to use special packages for Python 2 instead
3614 ;; of those automatically rewritten by package-with-python2.
89b5c60e 3615 (propagated-inputs
7ca0dbc3 3616 `(("python2-pycairo" ,python2-pycairo)
764c077b 3617 ("python2-pygobject-2" ,python2-pygobject-2)
1bbc659f
FB
3618 ("python2-tkinter" ,python-2 "tk")
3619 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3620 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 3621
0dde6232
RW
3622(define-public python2-pysnptools
3623 (package
3624 (name "python2-pysnptools")
a800018e 3625 (version "0.3.9")
0dde6232
RW
3626 (source
3627 (origin
3628 (method url-fetch)
3f2e9675 3629 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
3630 (sha256
3631 (base32
a800018e 3632 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
3633 (build-system python-build-system)
3634 (arguments
3635 `(#:python ,python-2)) ; only Python 2.7 is supported
3636 (propagated-inputs
3637 `(("python2-numpy" ,python2-numpy)
3638 ("python2-scipy" ,python2-scipy)
b72ac1b5
HG
3639 ("python2-pandas" ,python2-pandas)))
3640 (native-inputs
3641 `(("python2-cython" ,python2-cython)))
0dde6232 3642 (native-inputs
f3b98f4f 3643 `(("unzip" ,unzip)))
0dde6232
RW
3644 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
3645 (synopsis "Library for reading and manipulating genetic data")
3646 (description
3647 "PySnpTools is a library for reading and manipulating genetic data. It
3648can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
3649those files. It can also efficiently manipulate ranges of integers using set
3650operators such as union, intersection, and difference.")
3f641af0 3651 (license license:asl2.0)))
0dde6232 3652
c9b1b4f9
RW
3653(define-public python-rpy2
3654 (package
3655 (name "python-rpy2")
ec3bcbc7 3656 (version "2.7.6")
c9b1b4f9
RW
3657 (source
3658 (origin
3659 (method url-fetch)
ec3bcbc7 3660 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
3661 (sha256
3662 (base32
ec3bcbc7 3663 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9 3664 (build-system python-build-system)
482d9591
HG
3665 (propagated-inputs
3666 `(("python-six" ,python-six)))
c9b1b4f9 3667 (inputs
482d9591 3668 `(("readline" ,readline)
c9b1b4f9
RW
3669 ("icu4c" ,icu4c)
3670 ("pcre" ,pcre)
3671 ("r" ,r)))
3672 (native-inputs
f3b98f4f 3673 `(("zlib" ,zlib)))
c9b1b4f9
RW
3674 (home-page "http://rpy.sourceforge.net/")
3675 (synopsis "Python interface to the R language")
3676 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
3677low-level interface to R from Python, a proposed high-level interface,
3678including wrappers to graphical libraries, as well as R-like structures and
3679functions.")
3f641af0 3680 (license license:gpl3+)))
c9b1b4f9
RW
3681
3682(define-public python2-rpy2
3683 (let ((rpy2 (package-with-python2 python-rpy2)))
3684 (package (inherit rpy2)
3685 (native-inputs
3686 `(("python2-singledispatch" ,python2-singledispatch)
3687 ,@(package-native-inputs rpy2))))))
3688
bb986599
FB
3689(define-public python-scipy
3690 (package
3691 (name "python-scipy")
ba8a0824 3692 (version "0.16.0")
bb986599
FB
3693 (source
3694 (origin
3695 (method url-fetch)
de67e922
LF
3696; http://downloads.sourceforge.net/project/scipy/scipy/0.16.1/scipy-0.16.1.tar.gz
3697 (uri (string-append "mirror://sourceforge/scipy/scipy/" version
da6ce3f1 3698 "/scipy-" version ".tar.xz"))
bb986599
FB
3699 (sha256
3700 (base32
ba8a0824 3701 "0wa0a4skpda3gx7lb12yn19nhbairlyxrvda2lz2bcawk3x5qzz2"))))
bb986599 3702 (build-system python-build-system)
dd86c0d1 3703 (propagated-inputs
bb986599
FB
3704 `(("python-numpy" ,python-numpy)
3705 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
3706 ("python-pyparsing" ,python-pyparsing)))
3707 (inputs
3708 `(("lapack" ,lapack)
719b01c1 3709 ("openblas" ,openblas)))
bb986599 3710 (native-inputs
dd86c0d1
RW
3711 `(("python-nose" ,python-nose)
3712 ("python-sphinx" ,python-sphinx)
5248d49e 3713 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 3714 ("gfortran" ,gfortran)
bb986599
FB
3715 ("texlive" ,texlive)
3716 ("perl" ,perl)))
3717 (outputs '("out" "doc"))
3718 (arguments
3719 `(#:phases
3720 (alist-cons-before
719b01c1 3721 'build 'configure-openblas
bb986599 3722 (lambda* (#:key inputs #:allow-other-keys)
719b01c1
RW
3723 (call-with-output-file "site.cfg"
3724 (lambda (port)
3725 (format port
3726 "[blas]
3727libraries = openblas
3728library_dirs = ~a/lib
3729include_dirs = ~a/include
d548e6aa
HG
3730
3731# backslash-n to make emacs happy
3732\n[atlas]
719b01c1
RW
3733library_dirs = ~a/lib
3734atlas_libs = openblas
3735"
3736 (assoc-ref inputs "openblas")
3737 (assoc-ref inputs "openblas")
3738 (assoc-ref inputs "openblas"))))
3739 #t)
bb986599
FB
3740 (alist-cons-after
3741 'install 'install-doc
d548e6aa 3742 (lambda* (#:key inputs outputs #:allow-other-keys)
bb986599
FB
3743 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3744 (doc (string-append data "/doc/" ,name "-" ,version))
3745 (html (string-append doc "/html"))
3746 (pyver ,(string-append "PYVER=")))
d548e6aa
HG
3747 ;; Make installed package available for building the
3748 ;; documentation
3749 (add-installed-pythonpath inputs outputs)
bb986599 3750 (with-directory-excursion "doc"
bb986599
FB
3751 ;; Fix generation of images for mathematical expressions.
3752 (substitute* (find-files "source" "conf\\.py")
3753 (("pngmath_use_preview = True")
3754 "pngmath_use_preview = False"))
3755 (mkdir-p html)
3756 (system* "make" "html" pyver)
3757 (system* "make" "latex" "PAPER=a4" pyver)
3758 (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
3759 (copy-file "build/latex/scipy-ref.pdf"
3760 (string-append doc "/scipy-ref.pdf"))
3761 (with-directory-excursion "build/html"
3762 (for-each (lambda (file)
3763 (let* ((dir (dirname file))
3764 (tgt-dir (string-append html "/" dir)))
96c46210 3765 (install-file file html)))
bb986599
FB
3766 (find-files "." ".*"))))))
3767 ;; Tests can only be run after the library has been installed and not
3768 ;; within the source directory.
3769 (alist-cons-after
3770 'install 'check
89b5c60e 3771 (lambda _
bb986599
FB
3772 (with-directory-excursion "/tmp"
3773 (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
89b5c60e
AE
3774 (alist-delete
3775 'check
4f9ff21e
RW
3776 (alist-cons-after
3777 'unpack 'fix-tests
3778 (lambda _
3779 (substitute* "scipy/integrate/tests/test_quadpack.py"
3780 (("libm.so") "libm.so.6"))
3781 #t)
3782 %standard-phases)))))))
bb986599
FB
3783 (home-page "http://www.scipy.org/")
3784 (synopsis "The Scipy library provides efficient numerical routines")
3785 (description "The SciPy library is one of the core packages that make up
3786the SciPy stack. It provides many user-friendly and efficient numerical
3787routines such as routines for numerical integration and optimization.")
3f641af0 3788 (license license:bsd-3)))
bb986599 3789
764c077b 3790(define-public python2-scipy
57b7b8cd 3791 (package-with-python2 python-scipy))
bb986599 3792
73acc193 3793(define-public python-socksipy-branch
3794 (package
3795 (name "python-socksipy-branch")
3796 (version "1.01")
3797 (source
3798 (origin
3799 (method url-fetch)
3800 (uri (pypi-uri "SocksiPy-branch" version))
3801 (sha256
3802 (base32
3803 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
3804 (build-system python-build-system)
3805 (arguments
3806 `(#:tests? #f)) ; There are no tests
3807 (home-page "https://code.google.com/archive/p/socksipy-branch/")
3808 (synopsis "Python SOCKS module")
3809 (description
3810 "SocksiPy - A Python SOCKS client module. It provides a
3811socket-like interface that supports connections to any TCP
3812service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
3813The original version was developed by Dan Haim, this is a
3814branch created by Mario Vilas to address some open issues,
3815as the original project seems to have been abandoned circa 2007.")
3816 (license license:bsd-3)))
3817
3818(define-public python2-socksipy-branch
3819 (package-with-python2 python-socksipy-branch))
3820
94914805
EB
3821(define-public python-sqlalchemy
3822 (package
3823 (name "python-sqlalchemy")
a4ba286b 3824 (version "1.0.12")
94914805
EB
3825 (source
3826 (origin
3827 (method url-fetch)
3828 (uri (string-append "https://pypi.python.org/packages/source/S/"
3829 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
3830 (sha256
3831 (base32
a4ba286b 3832 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
3833 (build-system python-build-system)
3834 (native-inputs
3835 `(("python-cython" ,python-cython) ;for c extensions
3836 ("python-pytest" ,python-pytest)
3837 ("python-mock" ,python-mock))) ;for tests
3838 (arguments
3839 `(#:phases (alist-replace
3840 'check
3841 (lambda _ (zero? (system* "py.test")))
3842 %standard-phases)))
3843 (home-page "http://www.sqlalchemy.org")
3844 (synopsis "Database abstraction library")
3845 (description
3846 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
3847gives application developers the full power and flexibility of SQL. It
3848provides a full suite of well known enterprise-level persistence patterns,
3849designed for efficient and high-performing database access, adapted into a
3850simple and Pythonic domain language.")
3f641af0 3851 (license license:x11)))
94914805
EB
3852
3853(define-public python2-sqlalchemy
3854 (package-with-python2 python-sqlalchemy))
c937562e 3855
4a093330
DM
3856(define-public python-pycodestyle
3857 (package
3858 (name "python-pycodestyle")
3859 (version "2.0.0")
3860 (source
3861 (origin
3862 (method url-fetch)
3863 (uri (pypi-uri "pycodestyle" version))
3864 (sha256
3865 (base32
3866 "1rz2v8506mdjdyxcnv9ygiw6v0d4dqx8z5sjyjm0w2v32h5l5w1p"))))
3867 (build-system python-build-system)
3868 (home-page "https://pycodestyle.readthedocs.io/")
3869 (synopsis "Python style guide checker")
3870 (description "@code{pycodestyle} (formerly pep8) is a tool to check
3871Python code against some of the style conventions in
3872@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
f210e944 3873 (license license:expat)))
4a093330
DM
3874
3875(define-public python2-pycodestyle
f210e944 3876 (package-with-python2 python-pycodestyle))
b91912c4
DM
3877
3878(define-public python-orderedmultidict
3879 (package
3880 (name "python-orderedmultidict")
3881 (version "0.7.10")
3882 (source
3883 (origin
3884 (method url-fetch)
3885 (uri (pypi-uri "orderedmultidict" version))
3886 (sha256
3887 (base32
3888 "1gvqk0jd432wsn88kq4svad68xz3r012jfpnhh9in7bqrkyxidky"))))
3889 (build-system python-build-system)
3890 (arguments
3891 `(#:phases
3892 (modify-phases %standard-phases
3893 (add-after 'unpack 'fix-tests
3894 (lambda _
3895 ;; The package uses nosetest for running the tests.
3896 ;; Adding this initfile allows to run the test suite
3897 ;; without requiring nosetest.
3898 (zero? (system* "touch" "tests/__init__.py")))))))
3899 (propagated-inputs
3900 `(("python-six" ,python-six)))
3901 (native-inputs
3902 `(("python-pycodestyle" ,python-pycodestyle)))
3903 (home-page "https://github.com/gruns/orderedmultidict")
3904 (synopsis "Python Ordered Multivalue Dictionary - omdict")
3905 (description "This package contains a library for ordered multivalue
3906dictionaries. A multivalue dictionary is a dictionary that can store
3907multiple values for the same key. An ordered multivalue dictionary is a
3908multivalue dictionary that retains the order of insertions and deletions.")
f210e944 3909 (license license:unlicense)))
b91912c4
DM
3910
3911(define-public python2-orderedmultidict
f210e944 3912 (package-with-python2 python-orderedmultidict))
9dede065
DM
3913
3914(define-public python-furl
3915 (package
3916 (name "python-furl")
3917 (version "0.5.6")
3918 (source
3919 (origin
3920 (method url-fetch)
3921 (uri (pypi-uri "furl" version))
3922 (sha256
3923 (base32
3924 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
3925 (build-system python-build-system)
3926 (propagated-inputs
3927 `(("python-six" ,python-six)
3928 ("python-orderedmultidict" ,python-orderedmultidict)))
3929 (native-inputs
3930 `(("python-pycodestyle" ,python-pycodestyle)))
3931 (home-page "https://github.com/gruns/furl")
3932 (synopsis "URL manipulation in Python")
3933 (description "Furl provides an easy-to-use alternative to the
3934@code{urllib} and @code{urlparse} modules for manipulating URLs.")
f210e944 3935 (license license:unlicense)))
9dede065
DM
3936
3937(define-public python2-furl
f210e944 3938 (package-with-python2 python-furl))
462bf271
DM
3939
3940(define-public python-flask-babel
3941 (package
3942 (name "python-flask-babel")
3943 (version "0.11.1")
3944 (source
3945 (origin
3946 (method url-fetch)
3947 (uri (pypi-uri "Flask-Babel" version))
3948 (sha256
3949 (base32
3950 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
3951 (build-system python-build-system)
3952 (propagated-inputs
3953 `(("python-flask" ,python-flask)
3954 ("python-babel" ,python-babel)
3955 ("python-jinja2" ,python-jinja2)
3956 ("python-pytz" ,python-pytz)))
3957 (home-page "https://github.com/python-babel/flask-babel")
3958 (synopsis "Add i18n/l10n support to Flask applications")
3959 (description "This package implements internationalization and localization
3960support for Flask. This is based on the Python babel module as well as pytz -
3961both of which are installed automatically if you install this library.")
f210e944 3962 (license license:bsd-3)))
462bf271
DM
3963
3964(define-public python2-flask-babel
f210e944 3965 (package-with-python2 python-flask-babel))
4a093330 3966
de2966cf
EF
3967(define-public python-sqlalchemy-utils
3968 (package
3969 (name "python-sqlalchemy-utils")
bb4b1706 3970 (version "0.32.11")
de2966cf
EF
3971 (source
3972 (origin
3973 (method url-fetch)
3974 (uri (pypi-uri "SQLAlchemy-Utils" version))
3975 (sha256
3976 (base32
bb4b1706 3977 "1wghyvk73cmq3iqyg3fczw128fv2pan2v76m0xg1bw05h8fhvnk3"))))
de2966cf 3978 (build-system python-build-system)
c22b4f87 3979 (propagated-inputs
de2966cf
EF
3980 `(("python-six" ,python-six)
3981 ("python-sqlalchemy" ,python-sqlalchemy)))
26d07efb
DM
3982 (native-inputs
3983 `(("python-pytest" ,python-pytest)))
de2966cf
EF
3984 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
3985 (synopsis "Various utility functions for SQLAlchemy")
3986 (description
3987 "SQLAlchemy-utils provides various utility functions and custom data types
6a686b18
DM
3988for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
3989
3990You might also want to install the following optional dependencies:
3991@enumerate
3992@item @code{python-passlib}
3993@item @code{python-babel}
3994@item @code{python-cryptography}
3995@item @code{python-pytz}
3996@item @code{python-psycopg2}
3997@item @code{python-furl}
3998@item @code{python-flask-babel}
3999@end enumerate
4000")
de2966cf
EF
4001 (license license:bsd-3)))
4002
4003(define-public python2-sqlalchemy-utils
f210e944 4004 (package-with-python2 python-sqlalchemy-utils))
de2966cf 4005
af5a4602
CAW
4006(define-public python-alembic
4007 (package
4008 (name "python-alembic")
bb484529 4009 (version "0.8.7")
af5a4602
CAW
4010 (source
4011 (origin
4012 (method url-fetch)
4013 (uri (pypi-uri "alembic" version))
4014 (sha256
4015 (base32
bb484529 4016 "0ias6fdzwr2s220fnjspkdgm9510bd0cnap0hx5y4zy4srba9f3z"))))
af5a4602
CAW
4017 (build-system python-build-system)
4018 (native-inputs
4019 `(("python-mock" ,python-mock)
4020 ("python-pytest-cov" ,python-pytest-cov)))
4021 (propagated-inputs
4022 `(("python-sqlalchemy" ,python-sqlalchemy)
4023 ("python-mako" ,python-mako)
4024 ("python-editor" ,python-editor)))
4025 (home-page "http://bitbucket.org/zzzeek/alembic")
4026 (synopsis
4027 "Database migration tool for SQLAlchemy")
4028 (description
4029 "Alembic is a lightweight database migration tool for usage with the
4030SQLAlchemy Database Toolkit for Python.")
f210e944 4031 (license license:expat)))
af5a4602
CAW
4032
4033(define-public python2-alembic
f210e944 4034 (package-with-python2 python-alembic))
af5a4602 4035
1671c07c
EB
4036(define-public python-distutils-extra
4037 (package
4038 (name "python-distutils-extra")
4039 (version "2.38")
4040 (source
4041 (origin
4042 (method url-fetch)
4043 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4044 version "/+download/python-distutils-extra-"
4045 version ".tar.gz"))
4046 (sha256
4047 (base32
4048 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4049 (build-system python-build-system)
1671c07c
EB
4050 (home-page "https://launchpad.net/python-distutils-extra/")
4051 (synopsis "Enhancements to Python's distutils")
4052 (description
4053 "The python-distutils-extra module enables you to easily integrate
4054gettext support, themed icons, and scrollkeeper-based documentation into
4055Python's distutils.")
3f641af0 4056 (license license:gpl2)))
1671c07c
EB
4057
4058(define-public python2-distutils-extra
4059 (package-with-python2 python-distutils-extra))
ea5456c8
EB
4060
4061(define-public python2-elib.intl
4062 (package
4063 (name "python2-elib.intl")
4064 (version "0.0.3")
4065 (source
4066 (origin
4067 ;; This project doesn't tag releases or publish tarballs, so we take
4068 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4069 (method git-fetch)
4070 (uri (git-reference
4071 (url "https://github.com/dieterv/elib.intl.git")
4072 (commit "d09997cfef")))
4073 (sha256
4074 (base32
4075 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4076 (build-system python-build-system)
ea5456c8
EB
4077 (arguments
4078 ;; incompatible with Python 3 (exception syntax)
4079 `(#:python ,python-2
b41a05ce 4080 #:tests? #f))
ea5456c8
EB
4081 (home-page "https://github.com/dieterv/elib.intl")
4082 (synopsis "Enhanced internationalization for Python")
4083 (description
4084 "The elib.intl module provides enhanced internationalization (I18N)
4085services for your Python modules and applications.")
3f641af0 4086 (license license:lgpl3+)))
ea5456c8 4087
c937562e
EB
4088(define-public python-pillow
4089 (package
4090 (name "python-pillow")
aba5182c 4091 (version "3.3.3")
c937562e
EB
4092 (source
4093 (origin
4094 (method url-fetch)
f1d9231d 4095 (uri (pypi-uri "Pillow" version))
c937562e
EB
4096 (sha256
4097 (base32
aba5182c 4098 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
c937562e
EB
4099 (build-system python-build-system)
4100 (native-inputs
f3b98f4f 4101 `(("python-nose" ,python-nose)))
c937562e 4102 (inputs
5ff408d9
SB
4103 `(("freetype" ,freetype)
4104 ("lcms" ,lcms)
c937562e
EB
4105 ("zlib" ,zlib)
4106 ("libjpeg" ,libjpeg)
4107 ("openjpeg" ,openjpeg)
5ff408d9
SB
4108 ("libtiff" ,libtiff)
4109 ("libwebp" ,libwebp)))
c937562e 4110 (arguments
e5358a6b 4111 `(#:phases (modify-phases %standard-phases
e5358a6b
LC
4112 (add-after
4113 'install 'check-installed
6151120a 4114 (lambda* (#:key outputs inputs #:allow-other-keys)
e5358a6b
LC
4115 (begin
4116 (setenv "HOME" (getcwd))
6151120a
HG
4117 ;; Make installed package available for running the
4118 ;; tests
4119 (add-installed-pythonpath inputs outputs)
e5358a6b
LC
4120 (and (zero? (system* "python" "selftest.py"
4121 "--installed"))
4122 (zero? (system* "python" "test-installed.py"))))))
4123 (delete 'check))))
c937562e
EB
4124 (home-page "https://pypi.python.org/pypi/Pillow")
4125 (synopsis "Fork of the Python Imaging Library")
4126 (description
4127 "The Python Imaging Library adds image processing capabilities to your
4128Python interpreter. This library provides extensive file format support, an
4129efficient internal representation, and fairly powerful image processing
4130capabilities. The core image library is designed for fast access to data
4131stored in a few basic pixel formats. It should provide a solid foundation for
4132a general image processing tool.")
3f641af0 4133 (license (license:x11-style
c937562e
EB
4134 "http://www.pythonware.com/products/pil/license.htm"
4135 "The PIL Software License"))))
4136
4137(define-public python2-pillow
4138 (package-with-python2 python-pillow))
bb986599 4139
a415f036
FB
4140(define-public python-pycparser
4141 (package
4142 (name "python-pycparser")
38eb6919 4143 (version "2.14")
a415f036
FB
4144 (source
4145 (origin
4146 (method url-fetch)
38eb6919 4147 (uri (pypi-uri "pycparser" version))
a415f036
FB
4148 (sha256
4149 (base32
38eb6919 4150 "0wvzyb6rxsfj3xcnpa4ynbh9qc7rrbk2277d5wqpphmx9akv8nbr"))))
a415f036
FB
4151 (outputs '("out" "doc"))
4152 (build-system python-build-system)
4153 (native-inputs
f3b98f4f 4154 `(("pkg-config" ,pkg-config)))
a415f036 4155 (arguments
89b5c60e 4156 `(#:phases
a415f036
FB
4157 (alist-replace
4158 'check
4159 (lambda _
4160 (with-directory-excursion "tests"
4161 (zero? (system* "python" "all_tests.py"))))
4162 (alist-cons-after
4163 'install 'install-doc
4164 (lambda* (#:key outputs #:allow-other-keys)
4165 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4166 (doc (string-append data "/doc/" ,name "-" ,version))
4167 (examples (string-append doc "/examples")))
4168 (mkdir-p examples)
4169 (for-each (lambda (file)
4170 (copy-file (string-append "." file)
4171 (string-append doc file)))
4172 '("/README.rst" "/CHANGES" "/LICENSE"))
4173 (copy-recursively "examples" examples)))
4174 %standard-phases))))
4175 (home-page "https://github.com/eliben/pycparser")
4176 (synopsis "C parser in Python")
4177 (description
4178 "Pycparser is a complete parser of the C language, written in pure Python
4179using the PLY parsing library. It parses C code into an AST and can serve as
4180a front-end for C compilers or analysis tools.")
3f641af0 4181 (license license:bsd-3)))
a415f036
FB
4182
4183(define-public python2-pycparser
4184 (package-with-python2 python-pycparser))
57c3f716
FB
4185
4186(define-public python-cffi
4187 (package
4188 (name "python-cffi")
2d3a437c 4189 (version "1.4.2")
57c3f716
FB
4190 (source
4191 (origin
4192 (method url-fetch)
2d3a437c 4193 (uri (pypi-uri "cffi" version))
89b5c60e 4194 (sha256
2d3a437c 4195 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
4196 (build-system python-build-system)
4197 (outputs '("out" "doc"))
4198 (inputs
4199 `(("libffi" ,libffi)))
4200 (propagated-inputs ; required at run-time
4201 `(("python-pycparser" ,python-pycparser)))
4202 (native-inputs
4203 `(("pkg-config" ,pkg-config)
4204 ("python-sphinx" ,python-sphinx)
f3b98f4f 4205 ("python-pytest" ,python-pytest)))
57c3f716 4206 (arguments
4179f952 4207 `(#:phases
57c3f716
FB
4208 (alist-cons-after
4209 'install 'install-doc
4210 (lambda* (#:key outputs #:allow-other-keys)
4211 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4212 (doc (string-append data "/doc/" ,name "-" ,version))
4213 (html (string-append doc "/html")))
4214 (with-directory-excursion "doc"
4215 (system* "make" "html")
4216 (mkdir-p html)
4217 (copy-recursively "build/html" html))
4218 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
4219 %standard-phases)))
4220 (home-page "http://cffi.readthedocs.org")
4221 (synopsis "Foreign function interface for Python")
4222 (description
4223 "Foreign Function Interface for Python calling C code.")
bd3fa666 4224 (license license:expat)))
57c3f716
FB
4225
4226(define-public python2-cffi
4227 (package-with-python2 python-cffi))
6fa14469
FB
4228
4229(define-public python-xcffib
4230 (package
4231 (name "python-xcffib")
4232 (version "0.1.9")
4233 (source
4234 (origin
4235 (method url-fetch)
4236 (uri (string-append "https://pypi.python.org/packages/source/x/"
4237 "xcffib/xcffib-" version ".tar.gz"))
4238 (sha256
4239 (base32
4240 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
4241 (build-system python-build-system)
4242 (inputs
482d9591 4243 `(("libxcb" ,libxcb)))
6fa14469 4244 (propagated-inputs
482d9591
HG
4245 `(("python-cffi" ,python-cffi) ; used at run time
4246 ("python-six" ,python-six)))
6fa14469 4247 (arguments
e2816ac7
MB
4248 `(;; FIXME: Tests cannot load libxcb.so.1
4249 #:tests? #f
4250 #:phases
c8cd850c
MB
4251 (modify-phases %standard-phases
4252 (add-after 'install 'install-doc
4253 (lambda* (#:key outputs #:allow-other-keys)
4254 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4255 "/doc/" ,name "-" ,version)))
4256 (mkdir-p doc)
4257 (copy-file "README.md"
4258 (string-append doc "/README.md"))
4259 #t))))))
6fa14469
FB
4260 (home-page "https://github.com/tych0/xcffib")
4261 (synopsis "XCB Python bindings")
4262 (description
4263 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4264support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 4265 (license license:expat)))
6fa14469
FB
4266
4267(define-public python2-xcffib
4268 (package-with-python2 python-xcffib))
4269
9e099723
FB
4270(define-public python-cairocffi
4271 (package
4272 (name "python-cairocffi")
4273 (version "0.6")
4274 (source
4275 (origin
4276 (method url-fetch)
4277 ;; The archive on pypi is missing the 'utils' directory!
4278 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
4279 version ".tar.gz"))
f586c877 4280 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
4281 (sha256
4282 (base32
4283 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
4284 (build-system python-build-system)
4285 (outputs '("out" "doc"))
4286 (inputs
4287 `(("gdk-pixbuf" ,gdk-pixbuf)
4288 ("cairo" ,cairo)))
4289 (native-inputs
4290 `(("pkg-config" ,pkg-config)
4291 ("python-sphinx" ,python-sphinx)
f3b98f4f 4292 ("python-docutils" ,python-docutils)))
9e099723
FB
4293 (propagated-inputs
4294 `(("python-xcffib" ,python-xcffib))) ; used at run time
4295 (arguments
a792e1aa
MB
4296 `(;; FIXME: Tests cannot find 'libcairo.so.2'.
4297 #:tests? #f
4298 #:phases
6734c7ba
MB
4299 (modify-phases %standard-phases
4300 (add-after 'install 'install-doc
4301 (lambda* (#:key inputs outputs #:allow-other-keys)
4302 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4303 (doc (string-append data "/doc/" ,name "-" ,version))
4304 (html (string-append doc "/html")))
4305 (setenv "LD_LIBRARY_PATH"
4306 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4307 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4308 (setenv "LANG" "en_US.UTF-8")
4309 (mkdir-p html)
4310 (for-each (lambda (file)
4311 (copy-file (string-append "." file)
4312 (string-append doc file)))
4313 '("/README.rst" "/CHANGES" "/LICENSE"))
4314 (system* "python" "setup.py" "build_sphinx")
4315 (copy-recursively "docs/_build/html" html)
4316 #t))))))
9e099723
FB
4317 (home-page "https://github.com/SimonSapin/cairocffi")
4318 (synopsis "Python bindings and object-oriented API for Cairo")
4319 (description
4320 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4321Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4322graphics library with support for multiple backends including image buffers,
4323PNG, PostScript, PDF, and SVG file output.")
3f641af0 4324 (license license:bsd-3)))
9e099723
FB
4325
4326(define-public python2-cairocffi
4327 (package-with-python2 python-cairocffi))
4328
3cff95cb
RW
4329(define-public python-decorator
4330 (package
4331 (name "python-decorator")
eb6e2e81 4332 (version "4.0.9")
3cff95cb
RW
4333 (source
4334 (origin
4335 (method url-fetch)
e21338be 4336 (uri (pypi-uri "decorator" version))
3cff95cb 4337 (sha256
eb6e2e81 4338 (base32 "1a5vwhflfd9sh3rfb40xlyipldgdzfff6brman57hqv3661jw0lh"))))
3cff95cb
RW
4339 (build-system python-build-system)
4340 (arguments '(#:tests? #f)) ; no test target
eb6e2e81 4341 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
4342 (synopsis "Python module to simplify usage of decorators")
4343 (description
4344 "The aim of the decorator module is to simplify the usage of decorators
4345for the average programmer, and to popularize decorators usage giving examples
4346of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4347etc. The core of this module is a decorator factory.")
4348 (license license:expat)))
4349
4350(define-public python2-decorator
4351 (package-with-python2 python-decorator))
4352
2c0499ad
RW
4353(define-public python-drmaa
4354 (package
4355 (name "python-drmaa")
4356 (version "0.7.6")
4357 (source
4358 (origin
4359 (method url-fetch)
4360 (uri (string-append
4361 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4362 version ".tar.gz"))
4363 (sha256
4364 (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
4365 (build-system python-build-system)
4366 ;; The test suite requires libdrmaa which is provided by the cluster
4367 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4368 ;; should be set to the path of the libdrmaa library.
4369 (arguments '(#:tests? #f))
4370 (native-inputs
f3b98f4f 4371 `(("python-nose" ,python-nose)))
2c0499ad
RW
4372 (home-page "https://pypi.python.org/pypi/drmaa")
4373 (synopsis "Python bindings for the DRMAA library")
4374 (description
4375 "A Python package for Distributed Resource Management (DRM) job
4376submission and control. This package is an implementation of the DRMAA 1.0
4377Python language binding specification.")
3f641af0 4378 (license license:bsd-3)))
2c0499ad
RW
4379
4380(define-public python2-drmaa
4381 (package-with-python2 python-drmaa))
4382
d05c6da0
RW
4383(define-public python-gridmap
4384 (package
4385 (name "python-gridmap")
4386 (version "0.13.0")
4387 (source
4388 (origin
4389 (method url-fetch)
4390 (uri (string-append
4391 "https://github.com/pygridtools/gridmap/archive/v"
4392 version ".tar.gz"))
4393 (file-name (string-append name "-" version ".tar.gz"))
4394 (sha256
4395 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4396 (build-system python-build-system)
f22efa01 4397 (propagated-inputs
d05c6da0
RW
4398 `(("python-psutil" ,python-psutil)
4399 ("python-drmaa" ,python-drmaa)
4400 ("python-pyzmq" ,python-pyzmq)))
d05c6da0
RW
4401 (home-page "https://github.com/pygridtools/gridmap")
4402 (synopsis "Create jobs on a cluster directly from Python")
4403 (description
4404 "Gridmap is a Python package to allow you to easily create jobs on the
4405cluster directly from Python. You can directly map Python functions onto the
4406cluster without needing to write any wrapper code yourself.")
3f641af0 4407 (license license:gpl3+)))
d05c6da0
RW
4408
4409(define-public python2-gridmap
4410 (package-with-python2 python-gridmap))
4411
cb6d5c54
RW
4412(define-public python-pexpect
4413 (package
4414 (name "python-pexpect")
4415 (version "3.3")
4416 (source
4417 (origin
4418 (method url-fetch)
4419 (uri (string-append "https://pypi.python.org/packages/source/p/"
4420 "pexpect/pexpect-" version ".tar.gz"))
4421 (sha256
4422 (base32 "1fp5gm976z7ghm8jw57463rj19cv06c8zw842prgyg788f6n3snz"))))
4423 (build-system python-build-system)
4424 (arguments
4425 `(#:phases
4426 (modify-phases %standard-phases
4427 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4428 (native-inputs
4429 `(("python-nose" ,python-nose)))
4430 (home-page "http://pexpect.readthedocs.org/")
4431 (synopsis "Controlling interactive console applications")
4432 (description
4433 "Pexpect is a pure Python module for spawning child applications;
4434controlling them; and responding to expected patterns in their output.
4435Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4436child application and control it as if a human were typing commands.")
3f641af0 4437 (license license:isc)))
cb6d5c54
RW
4438
4439(define-public python2-pexpect
4440 (package-with-python2 python-pexpect))
4441
229ad120
RW
4442(define-public python-setuptools-scm
4443 (package
4444 (name "python-setuptools-scm")
42d6d0d0 4445 (version "1.11.1")
229ad120
RW
4446 (source (origin
4447 (method url-fetch)
383af6b0 4448 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4449 (sha256
4450 (base32
42d6d0d0 4451 "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc"))))
229ad120
RW
4452 (build-system python-build-system)
4453 (home-page "https://github.com/pypa/setuptools_scm/")
4454 (synopsis "Manage Python package versions in SCM metadata")
4455 (description
383af6b0 4456 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4457@dfn{software configuration management} (SCM) metadata instead of declaring
4458them as the version argument or in a SCM managed file.")
4459 (license license:expat)))
4460
4461(define-public python2-setuptools-scm
4462 (package-with-python2 python-setuptools-scm))
4463
b74270ee
RW
4464(define-public python-pathpy
4465 (package
4466 (name "python-pathpy")
4467 (version "8.1.1")
4468 (source
4469 (origin
4470 (method url-fetch)
4471 (uri (string-append "https://pypi.python.org/packages/source/p/"
4472 "path.py/path.py-" version ".tar.gz"))
4473 (sha256
4474 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
2887700e 4475 (outputs '("out" "doc"))
b74270ee
RW
4476 (build-system python-build-system)
4477 (propagated-inputs
4478 `(("python-appdirs" ,python-appdirs)))
4479 (native-inputs
f3b98f4f 4480 `(("python-setuptools-scm" ,python-setuptools-scm)
2887700e
HG
4481 ("python-sphinx" ,python-sphinx)
4482 ("python-rst.linker" ,python-rst.linker)
b74270ee
RW
4483 ("python-pytest" ,python-pytest)
4484 ("python-pytest-runner" ,python-pytest-runner)))
2887700e
HG
4485 (arguments
4486 `(#:phases
4487 (modify-phases %standard-phases
4488 (add-after 'build 'build-doc
4489 (lambda _
4490 (setenv "LANG" "en_US.UTF-8")
4491 (zero? (system* "python" "setup.py" "build_sphinx"))))
4492 (add-after 'install 'install-doc
4493 (lambda* (#:key outputs #:allow-other-keys)
4494 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4495 (doc (string-append data "/doc/" ,name "-" ,version))
4496 (html (string-append doc "/html")))
4497 (mkdir-p html)
4498 (for-each (lambda (file)
4499 (copy-file file (string-append doc "/" file)))
4500 '("README.rst" "CHANGES.rst"))
4501 (copy-recursively "build/sphinx/html" html)))))))
b74270ee
RW
4502 (home-page "http://github.com/jaraco/path.py")
4503 (synopsis "Python module wrapper for built-in os.path")
4504 (description
4505 "@code{path.py} implements path objects as first-class entities, allowing
4506common operations on files to be invoked on those path objects directly.")
4507 (license license:expat)))
4508
4509(define-public python2-pathpy
4510 (package-with-python2 python-pathpy))
4511
0d34e01b
RW
4512(define-public python-pickleshare
4513 (package
4514 (name "python-pickleshare")
4515 (version "0.5")
4516 (source
4517 (origin
4518 (method url-fetch)
4519 (uri (string-append "https://pypi.python.org/packages/source/p/"
4520 "pickleshare/pickleshare-" version ".tar.gz"))
4521 (sha256
4522 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
4523 (build-system python-build-system)
4524 (propagated-inputs
4525 `(("python-pathpy" ,python-pathpy)))
4526 (home-page "https://github.com/vivainio/pickleshare")
4527 (synopsis "Tiny key value database with concurrency support")
4528 (description
4529 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
4530Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
4531shelve, many processes can access the database simultaneously. Changing a
4532value in database is immediately visible to other processes accessing the same
4533database. Concurrency is possible because the values are stored in separate
4534files. Hence the “database” is a directory where all files are governed by
4535PickleShare.")
4536 (license license:expat)))
4537
4538(define-public python2-pickleshare
4539 (package-with-python2 python-pickleshare))
4540
cd6e5189
RW
4541(define-public python-simplegeneric
4542 (package
4543 (name "python-simplegeneric")
4544 (version "0.8.1")
4545 (source
4546 (origin
4547 (method url-fetch)
4548 (uri (string-append "https://pypi.python.org/packages/source/s/"
4549 "simplegeneric/simplegeneric-" version ".zip"))
4550 (sha256
4551 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
4552 (build-system python-build-system)
4553 (native-inputs
f3b98f4f 4554 `(("unzip" ,unzip)))
cd6e5189
RW
4555 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
4556 (synopsis "Python module for simple generic functions")
4557 (description
4558 "The simplegeneric module lets you define simple single-dispatch generic
4559functions, akin to Python’s built-in generic functions like @code{len()},
4560@code{iter()} and so on. However, instead of using specially-named methods,
4561these generic functions use simple lookup tables, akin to those used by
4562e.g. @code{pickle.dump()} and other generic functions found in the Python
4563standard library.")
3f641af0 4564 (license license:zpl2.1)))
cd6e5189
RW
4565
4566(define-public python2-simplegeneric
4567 (package-with-python2 python-simplegeneric))
4568
ddc7d8ed 4569(define-public python-ipython-genutils
c4abbac3 4570 ;; TODO: This package is retired, check if can be removed, see description.
ddc7d8ed
RW
4571 (package
4572 (name "python-ipython-genutils")
4573 (version "0.1.0")
4574 (source
4575 (origin
4576 (method url-fetch)
4577 (uri (string-append "https://pypi.python.org/packages/source/i/"
4578 "ipython_genutils/ipython_genutils-"
4579 version ".tar.gz"))
4580 (sha256
4581 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
4582 (build-system python-build-system)
4583 (arguments `(#:tests? #f)) ; no tests
4584 (home-page "http://ipython.org")
4585 (synopsis "Vestigial utilities from IPython")
4586 (description
c4abbac3
HG
4587 "This package provides retired utilities from IPython. No packages
4588outside IPython/Jupyter should depend on it.
4589
4590This package shouldn't exist. It contains some common utilities shared by
4591Jupyter and IPython projects during The Big Split. As soon as possible, those
4592packages will remove their dependency on this, and this package will go
4593away.")
3f641af0 4594 (license license:bsd-3)))
ddc7d8ed
RW
4595
4596(define-public python2-ipython-genutils
4597 (package-with-python2 python-ipython-genutils))
4598
2b10eb48
RW
4599(define-public python-traitlets
4600 (package
4601 (name "python-traitlets")
a5ba1481 4602 (version "4.2.0")
2b10eb48
RW
4603 (source
4604 (origin
4605 (method url-fetch)
cc0c4fde 4606 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
4607 (sha256
4608 (base32
a5ba1481 4609 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
2b10eb48
RW
4610 (build-system python-build-system)
4611 (arguments
4612 `(#:phases
4613 (modify-phases %standard-phases
4614 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4615 (propagated-inputs
4616 `(("python-ipython-genutils" ,python-ipython-genutils)
4617 ("python-decorator" ,python-decorator)))
4618 (native-inputs
cc0c4fde
EF
4619 `(("python-mock" ,python-mock)
4620 ("python-nose" ,python-nose)))
2b10eb48
RW
4621 (home-page "http://ipython.org")
4622 (synopsis "Configuration system for Python applications")
4623 (description
4624 "Traitlets is a framework that lets Python classes have attributes with
4625type checking, dynamically calculated default values, and ‘on change’
4626callbacks. The package also includes a mechanism to use traitlets for
4627configuration, loading values from files or from command line arguments. This
4628is a distinct layer on top of traitlets, so you can use traitlets in your code
4629without using the configuration machinery.")
3f641af0 4630 (license license:bsd-3)))
2b10eb48
RW
4631
4632(define-public python2-traitlets
4633 (package-with-python2 python-traitlets))
4634
4263b06f
RW
4635(define-public python-jupyter-core
4636 (package
4637 (name "python-jupyter-core")
4638 (version "4.2.0")
4639 (source
4640 (origin
4641 (method url-fetch)
4642 (uri (string-append (pypi-uri "jupyter_core" version)))
4643 (sha256
4644 (base32
4645 "177d9csqldzhsh6xs1p4nf6lzvhzyg6gklqjf69lxgxyadx87v24"))))
4646 (build-system python-build-system)
4647 ;; FIXME: not sure how to run the tests
4648 (arguments `(#:tests? #f))
4649 (propagated-inputs
4650 `(("python-traitlets" ,python-traitlets)))
4651 (home-page "http://jupyter.org/")
4652 (synopsis "Jupyter base package")
4653 (description
4654 "Jupyter core is the base package on which Jupyter projects rely.")
4655 (license license:bsd-3)))
4656
4657(define-public python2-jupyter-core
4658 (package-with-python2 python-jupyter-core))
4659
9ff01f2d
RW
4660(define-public python-jupyter-client
4661 (package
4662 (name "python-jupyter-client")
4663 (version "4.4.0")
4664 (source
4665 (origin
4666 (method url-fetch)
4667 (uri (pypi-uri "jupyter_client" version))
4668 (sha256
4669 (base32
4670 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
4671 (build-system python-build-system)
4672 ;; Tests fail because of missing native python kernel which I assume is
4673 ;; provided by the ipython package, which we cannot use because it would
4674 ;; cause a dependency cycle.
4675 (arguments `(#:tests? #f))
4676 (propagated-inputs
4677 `(("python-pyzmq" ,python-pyzmq)
4678 ("python-traitlets" ,python-traitlets)
4679 ("python-jupyter-core" ,python-jupyter-core)))
4680 (home-page "http://jupyter.org/")
4681 (synopsis "Jupyter protocol implementation and client libraries")
4682 (description
4683 "The @code{jupyter_client} package contains the reference implementation
4684of the Jupyter protocol. It also provides client and kernel management APIs
4685for working with kernels, and the @code{jupyter kernelspec} entrypoint for
4686installing @code{kernelspec}s for use with Jupyter frontends.")
4687 (license license:bsd-3)))
4688
4689(define-public python2-jupyter-client
4690 (package-with-python2 python-jupyter-client))
4691
ab526102
RW
4692(define-public python-ipykernel
4693 (package
4694 (name "python-ipykernel")
4695 (version "4.5.0")
4696 (source
4697 (origin
4698 (method url-fetch)
4699 (uri (pypi-uri "ipykernel" version))
4700 (sha256
4701 (base32 "15c2bp1x3i6s4xb7vz7742h3kmvdfdfn9n2haywm3mwgvf77jni4"))))
4702 (build-system python-build-system)
4703 ;; The tests load a submodule of IPython. However, IPython itself depends
4704 ;; on ipykernel.
4705 (arguments `(#:tests? #f))
4706 (propagated-inputs
4707 ;; imported at runtime during connect
4708 `(("python-jupyter-client" ,python-jupyter-client)))
4709 (home-page "http://ipython.org")
4710 (synopsis "IPython Kernel for Jupyter")
4711 (description
4712 "This package provides the IPython kernel for Jupyter.")
4713 (license license:bsd-3)))
4714
4715(define-public python2-ipykernel
4716 (package-with-python2 python-ipykernel))
4717
5ff6effc
RW
4718(define-public python-testpath
4719 (package
4720 (name "python-testpath")
4721 (version "0.2")
4722 (source
4723 (origin
4724 (method url-fetch)
4725 (uri (string-append "https://github.com/jupyter/testpath/archive/"
4726 version ".tar.gz"))
4727 (file-name (string-append name "-" version ".tar.gz"))
4728 (sha256
4729 (base32
4730 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
4731 (build-system python-build-system)
4732 (arguments
4733 `(#:tests? #f ; this package does not even have a setup.py
4734 #:phases
4735 (modify-phases %standard-phases
4736 (delete 'install)
4737 (replace 'build
4738 (lambda* (#:key inputs outputs #:allow-other-keys)
4739 (let ((dir (string-append
4740 (assoc-ref outputs "out")
4741 "/lib/python"
4742 (string-take (string-take-right
4743 (assoc-ref inputs "python") 5) 3)
4744 "/site-packages/testpath")))
4745 (mkdir-p dir)
4746 (copy-recursively "testpath" dir))
4747 #t)))))
4748 (home-page "https://github.com/takluyver/testpath")
4749 (synopsis "Test utilities for code working with files and commands")
4750 (description
4751 "Testpath is a collection of utilities for Python code working with files
4752and commands. It contains functions to check things on the filesystem, and
4753tools for mocking system commands and recording calls to those.")
4754 (license license:expat)))
4755
4756(define-public python2-testpath
4757 (package-with-python2 python-testpath))
4758
ae1ab9fe
FB
4759(define-public python-ipython
4760 (package
4761 (name "python-ipython")
4dbc8ec4 4762 (version "4.0.3")
ae1ab9fe
FB
4763 (source
4764 (origin
fceac880 4765 (method url-fetch)
accd5f99 4766 (uri (pypi-uri "ipython" version ".tar.gz"))
fceac880 4767 (sha256
4dbc8ec4 4768 (base32 "1h2gp1p06sww9rzfkfzqy489bh47gj3910y2b1wdk3dcx1cqz4is"))))
ae1ab9fe
FB
4769 (build-system python-build-system)
4770 (outputs '("out" "doc"))
3a0b1b9a
FB
4771 (propagated-inputs
4772 `(("python-pyzmq" ,python-pyzmq)
accd5f99 4773 ("python-terminado" ,python-terminado)
ae1ab9fe 4774 ("python-matplotlib" ,python-matplotlib)
5d26e542 4775 ("python-numpy" ,python-numpy)
ae1ab9fe 4776 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
4777 ("python-jinja2" ,python-jinja2)
4778 ("python-mistune" ,python-mistune)
accd5f99
RW
4779 ("python-pexpect" ,python-pexpect)
4780 ("python-pickleshare" ,python-pickleshare)
4781 ("python-simplegeneric" ,python-simplegeneric)
3a0b1b9a 4782 ("python-jsonschema" ,python-jsonschema)
accd5f99
RW
4783 ("python-traitlets" ,python-traitlets)
4784 ("python-ipykernel" ,python-ipykernel)
4785 ("python-pygments" ,python-pygments)))
4786 (inputs
4787 `(("readline" ,readline)
4788 ("which" ,which)))
ae1ab9fe
FB
4789 (native-inputs
4790 `(("pkg-config" ,pkg-config)
accd5f99
RW
4791 ("python-requests" ,python-requests) ;; for tests
4792 ("python-testpath" ,python-testpath)
4793 ("python-nose" ,python-nose)
ae1ab9fe
FB
4794 ("python-sphinx" ,python-sphinx)
4795 ("texlive" ,texlive)
f3b98f4f 4796 ("texinfo" ,texinfo)))
ae1ab9fe 4797 (arguments
89b5c60e 4798 `(#:phases
3a0b1b9a
FB
4799 (modify-phases %standard-phases
4800 (add-after
4801 'install 'install-doc
4802 (lambda* (#:key inputs outputs #:allow-other-keys)
4803 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4804 (doc (string-append data "/doc/" ,name "-" ,version))
4805 (html (string-append doc "/html"))
4806 (man1 (string-append data "/man/man1"))
4807 (info (string-append data "/info"))
4808 (examples (string-append doc "/examples")))
afd3d931 4809 (setenv "LANG" "en_US.utf8")
eee5cd04
HG
4810 ;; Make installed package available for running the tests
4811 (add-installed-pythonpath inputs outputs)
3a0b1b9a 4812 (with-directory-excursion "docs"
accd5f99
RW
4813 ;; FIXME: pdf fails to build
4814 ;;(system* "make" "pdf" "PAPER=a4")
4815 (system* "make" "html")
3a0b1b9a
FB
4816 (system* "make" "info"))
4817 (copy-recursively "docs/man" man1)
4818 (copy-recursively "examples" examples)
accd5f99 4819 (copy-recursively "docs/build/html" html)
3a0b1b9a
FB
4820 ;; (copy-file "docs/build/latex/ipython.pdf"
4821 ;; (string-append doc "/ipython.pdf"))
4822 (mkdir-p info)
4823 (copy-file "docs/build/texinfo/ipython.info"
4824 (string-append info "/ipython.info"))
4825 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
4826 ;; Tests can only be run after the library has been installed and not
4827 ;; within the source directory.
4828 (delete 'check)
4829 (add-after
4830 'install 'check
eee5cd04 4831 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3a0b1b9a
FB
4832 (if tests?
4833 (with-directory-excursion "/tmp"
eee5cd04
HG
4834 ;; Make installed package available for running the tests
4835 (add-installed-pythonpath inputs outputs)
3a0b1b9a
FB
4836 (setenv "HOME" "/tmp/") ;; required by a test
4837 (zero? (system* (string-append (assoc-ref outputs "out")
4838 "/bin/iptest"))))
4839 #t)))
4840 (add-before
4841 'install 'fix-tests
4842 (lambda* (#:key inputs #:allow-other-keys)
4843 (substitute* "./IPython/utils/_process_posix.py"
4844 (("/usr/bin/env', 'which") (which "which")))
4845 (substitute* "./IPython/core/tests/test_inputtransformer.py"
4846 (("#!/usr/bin/env python")
4847 (string-append "#!" (which "python"))))
4848 ;; Disable 1 failing test
4849 (substitute* "./IPython/core/tests/test_magic.py"
4850 (("def test_dirops\\(\\):" all)
4851 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
4852 (home-page "http://ipython.org")
4853 (synopsis "IPython is a tool for interactive computing in Python")
4854 (description
4855 "IPython provides a rich architecture for interactive computing with:
4856Powerful interactive shells, a browser-based notebook, support for interactive
4857data visualization, embeddable interpreters and tools for parallel
4858computing.")
135ba811
EF
4859 (license license:bsd-3)
4860 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
4861
4862(define-public python2-ipython
135ba811 4863 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
4864 (package
4865 (inherit ipython)
4866 ;; FIXME: some tests are failing
4867 (arguments
4868 `(#:tests? #f ,@(package-arguments ipython)))
3a0b1b9a 4869 ;; FIXME: add pyreadline once available.
e62600fe 4870 (native-inputs
135ba811 4871 `(("python2-mock" ,python2-mock)
77a6932a 4872 ,@(package-native-inputs ipython))))))
03411993
AE
4873
4874(define-public python-isodate
4875 (package
4876 (name "python-isodate")
b6785c2e 4877 (version "0.5.4")
03411993
AE
4878 (source
4879 (origin
4880 (method url-fetch)
b6785c2e 4881 (uri (pypi-uri "isodate" version))
03411993
AE
4882 (sha256
4883 (base32
b6785c2e 4884 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993 4885 (build-system python-build-system)
03411993
AE
4886 (home-page
4887 "http://cheeseshop.python.org/pypi/isodate")
4888 (synopsis
4889 "Python date parser and formatter")
4890 (description
4891 "Python-isodate is a python module for parsing and formatting
4892ISO 8601 dates, time and duration.")
3f641af0 4893 (license license:bsd-3)))
03411993
AE
4894
4895(define-public python2-isodate
4896 (package-with-python2 python-isodate))
673ab897
AE
4897
4898(define-public python-html5lib
4899 (package
4900 (name "python-html5lib")
a14061aa 4901 (version "1.0b10")
673ab897
AE
4902 (source
4903 (origin
4904 (method url-fetch)
fee04c19 4905 (uri (pypi-uri "html5lib" version))
673ab897
AE
4906 (sha256
4907 (base32
a14061aa 4908 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
673ab897 4909 (build-system python-build-system)
3dd75476 4910 (propagated-inputs
4eb6ed28
MB
4911 `(("python-six" ,python-six)
4912 ("python-webencodings" ,python-webencodings)))
673ab897
AE
4913 (arguments
4914 `(#:test-target "check"))
4915 (home-page
4916 "https://github.com/html5lib/html5lib-python")
4917 (synopsis
4918 "Python HTML parser based on the WHATWG HTML specifcation")
4919 (description
4920 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
4921and written in Python.")
bd3fa666 4922 (license license:expat)))
673ab897
AE
4923
4924(define-public python2-html5lib
4925 (package-with-python2 python-html5lib))
e99f4211 4926
8ee62c97
RW
4927;; Needed for python-bleach, a dependency of python-notebook
4928(define-public python-html5lib-0.9
4929 (package
4930 (inherit python-html5lib)
4931 (version "0.999")
4932 (source
4933 (origin
4934 (method url-fetch)
4935 (uri (pypi-uri "html5lib" version))
4936 (sha256
4937 (base32
4938 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
4939
4940(define-public python2-html5lib-0.9
4941 (package-with-python2 python-html5lib-0.9))
4942
adbca19e
MB
4943(define-public python-webencodings
4944 (package
4945 (name "python-webencodings")
4946 (version "0.5")
4947 (source (origin
4948 (method url-fetch)
4949 (uri (pypi-uri "webencodings" version))
4950 (sha256
4951 (base32
4952 "015rw7662lkpb9aqiqah2hbizk6w531badqwjpz41rr47glmxid5"))))
4953 (build-system python-build-system)
4954 (arguments
4955 '(#:phases
4956 (modify-phases %standard-phases
4957 (replace 'check
4958 (lambda _
4959 (zero? (system* "py.test" "-v" "webencodings/tests.py")))))))
4960 (native-inputs
4961 `(("python-pytest" ,python-pytest)))
4962 (home-page "https://github.com/SimonSapin/python-webencodings")
4963 (synopsis "Character encoding aliases for legacy web content")
4964 (description
4965 "In order to be compatible with legacy web content when interpreting
4966something like @code{Content-Type: text/html; charset=latin1}, tools need
4967to use a particular set of aliases for encoding labels as well as some
4968overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
4969the web are actually aliases for @code{windows-1252}, and an @code{UTF-8}
4970or @code{UTF-16} BOM takes precedence over any other encoding declaration.
4971The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
4972defines all such details so that implementations do not have to
4973reverse-engineer each other.
4974
4975This module implements the Encoding standard and has encoding labels and
4976BOM detection, but the actual implementation for encoders and decoders
4977is Python’s.")
4978 (license license:bsd-3)))
4979
4980(define-public python2-webencodings
4981 (package-with-python2 python-webencodings))
4982
e99f4211
MW
4983(define-public python-urwid
4984 (package
4985 (name "python-urwid")
51ff41f6 4986 (version "1.3.1")
e99f4211
MW
4987 (source
4988 (origin
4989 (method url-fetch)
b97c1bfd 4990 (uri (pypi-uri "urwid" version))
e99f4211
MW
4991 (sha256
4992 (base32
51ff41f6 4993 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 4994 (build-system python-build-system)
b97c1bfd
LF
4995 (arguments
4996 `(#:phases
4997 (modify-phases %standard-phases
4998 ;; Disable failing test. Bug filed upstream:
4999 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 5000 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
5001 (add-after 'unpack 'disable-failing-test
5002 (lambda _
5003 (substitute* "urwid/tests/test_event_loops.py"
5004 (("test_remove_watch_file")
5005 "disable_remove_watch_file")))))))
e99f4211
MW
5006 (home-page "http://urwid.org")
5007 (synopsis "Console user interface library for Python")
5008 (description
5009 "Urwid is a curses-based UI/widget library for Python. It includes many
5010features useful for text console applications.")
3f641af0 5011 (license license:lgpl2.1+)))
e99f4211
MW
5012
5013(define-public python2-urwid
5014 (package-with-python2 python-urwid))
d95a56c6 5015
47d0b292
TS
5016(define-public python-urwidtrees
5017 (package
5018 (name "python-urwidtrees")
37ec4623 5019 (version "1.0.2")
47d0b292
TS
5020 (source
5021 (origin
5022 (method url-fetch)
37ec4623
TS
5023 ;; package author intends on distributing via github rather than pypi:
5024 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
5025 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
5026 version ".tar.gz"))
5027 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
5028 (sha256
5029 (base32
37ec4623 5030 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
5031 (build-system python-build-system)
5032 (arguments
5033 '(#:tests? #f)) ; no tests
f22efa01 5034 (propagated-inputs `(("python-urwid" ,python-urwid)))
47d0b292
TS
5035 (home-page "https://github.com/pazz/urwidtrees")
5036 (synopsis "Tree widgets for urwid")
5037 (description "Urwidtrees is a Widget Container API for the @code{urwid}
5038toolkit. Use it to build trees of widgets.")
3f641af0 5039 (license license:gpl3+)))
47d0b292
TS
5040
5041(define-public python2-urwidtrees
5042 (package-with-python2 python-urwidtrees))
5043
d95a56c6
PAR
5044(define-public python-dbus
5045 (package
5046 (name "python-dbus")
5047 (version "1.2.0")
5048 (source
5049 (origin
5050 (method url-fetch)
5051 (uri (string-append
5cc3096c 5052 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
5053 version ".tar.gz"))
5054 (sha256
5055 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
5056 (build-system gnu-build-system)
6717c879
SB
5057 (arguments
5058 '(#:phases
5059 (modify-phases %standard-phases
5060 (add-before
5061 'check 'pre-check
5062 (lambda _
5063 ;; XXX: For the missing '/etc/machine-id'.
5064 (substitute* "test/run-test.sh"
5065 (("DBUS_FATAL_WARNINGS=1")
5066 "DBUS_FATAL_WARNINGS=0"))
5067 #t)))))
d95a56c6
PAR
5068 (native-inputs
5069 `(("pkg-config" ,pkg-config)))
5070 (inputs
5071 `(("python" ,python)
2e88d113 5072 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
5073 (synopsis "Python bindings for D-bus")
5074 (description "python-dbus provides bindings for libdbus, the reference
5075implementation of D-Bus.")
5076 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 5077 (license license:expat)))
b52af02b
MW
5078
5079(define-public python2-dbus
5080 (package (inherit python-dbus)
5081 (name "python2-dbus")
5082 (inputs `(("python" ,python-2)
5083 ,@(alist-delete "python"
5084 (package-inputs python-dbus)
5085 equal?)))
5086 ;; FIXME: on Python 2, the test_utf8 fails with:
5087 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
5088 (arguments `(#:tests? #f))))
a6ac8332
AE
5089
5090(define-public python-apsw
5091 (package
5092 (name "python-apsw")
917708c2 5093 (version "3.9.2-r1")
a6ac8332
AE
5094 (source
5095 (origin
5096 (method url-fetch)
917708c2 5097 (uri (pypi-uri "apsw" version))
a6ac8332
AE
5098 (sha256
5099 (base32
917708c2 5100 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
5101 (build-system python-build-system)
5102 (inputs
f3b98f4f 5103 `(("sqlite" ,sqlite)))
a6ac8332
AE
5104 (arguments
5105 `(#:phases
5106 ;; swap check and install phases
5107 (alist-cons-after
5108 'install 'check
5109 (assoc-ref %standard-phases 'check)
5110 (alist-delete
5111 'check
5112 %standard-phases))))
5113 (home-page "https://github.com/rogerbinns/apsw/")
5114 (synopsis "Another Python SQLite Wrapper")
5115 (description "APSW is a Python wrapper for the SQLite
5116embedded relational database engine. In contrast to other wrappers such as
5117pysqlite it focuses on being a minimal layer over SQLite attempting just to
5118translate the complete SQLite API into Python.")
abde5f37 5119 (license license:zlib)))
a6ac8332
AE
5120
5121(define-public python2-apsw
5122 (package-with-python2 python-apsw))
26b307e2
AE
5123
5124(define-public python-lxml
5125 (package
5126 (name "python-lxml")
d58a3203 5127 (version "3.6.0")
26b307e2
AE
5128 (source
5129 (origin
5130 (method url-fetch)
97bbc480 5131 (uri (pypi-uri "lxml" version))
26b307e2 5132 (sha256
d58a3203
EF
5133 (base32
5134 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
5135 (build-system python-build-system)
5136 (inputs
5137 `(("libxml2" ,libxml2)
f3b98f4f 5138 ("libxslt" ,libxslt)))
26b307e2
AE
5139 (home-page "http://lxml.de/")
5140 (synopsis
5141 "Python XML processing library")
5142 (description
5143 "The lxml XML toolkit is a Pythonic binding for the C libraries
5144libxml2 and libxslt.")
3f641af0 5145 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
5146
5147(define-public python2-lxml
5148 (package-with-python2 python-lxml))
4ed20663 5149
b32a1e47
CAW
5150;; beautifulsoup4 has a totally different namespace than 3.x,
5151;; and pypi seems to put it under its own name, so I guess we should too
5152(define-public python-beautifulsoup4
5153 (package
5154 (name "python-beautifulsoup4")
67fd4a12 5155 (version "4.5.1")
b32a1e47
CAW
5156 (source
5157 (origin
5158 (method url-fetch)
5159 (uri (pypi-uri "beautifulsoup4" version))
5160 (sha256
5161 (base32
67fd4a12 5162 "1qgmhw65ncsgccjhslgkkszif47q6gvxwqv4mim17agxd81p951w"))))
b32a1e47 5163 (build-system python-build-system)
5f37f0b6
LF
5164 (arguments
5165 `(#:phases
5166 (modify-phases %standard-phases
5167 ;; The Python 2 source is the definitive source of beautifulsoup4. We
5168 ;; must use this conversion script when building with Python 3. The
5169 ;; conversion script also runs the tests.
5170 ;; For more information, see the file 'convert-py3k' in the source
5171 ;; distribution.
5172 (replace 'check
5173 (lambda _ (zero? (system* "./convert-py3k")))))))
b32a1e47
CAW
5174 (home-page
5175 "http://www.crummy.com/software/BeautifulSoup/bs4/")
5176 (synopsis
5177 "Python screen-scraping library")
5178 (description
5179 "Beautiful Soup is a Python library designed for rapidly setting up
5180screen-scraping projects. It offers Pythonic idioms for navigating,
5181searching, and modifying a parse tree, providing a toolkit for
5182dissecting a document and extracting what you need. It automatically
5183converts incoming documents to Unicode and outgoing documents to UTF-8.")
f210e944 5184 (license license:expat)))
b32a1e47
CAW
5185
5186(define-public python2-beautifulsoup4
5187 (package
5188 (inherit (package-with-python2
5189 (strip-python2-variant python-beautifulsoup4)))
5f37f0b6 5190 (arguments `(#:python ,python-2))))
b32a1e47 5191
092e86f5
AE
5192(define-public python2-cssutils
5193 (package
5194 (name "python2-cssutils")
58d1d816 5195 (version "1.0.1")
092e86f5
AE
5196 (source
5197 (origin
5198 (method url-fetch)
58d1d816 5199 (uri (pypi-uri "cssutils" version))
092e86f5 5200 (sha256
58d1d816
EF
5201 (base32
5202 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
5203 (build-system python-build-system)
5204 (native-inputs
5205 `(("python2-mock" ,python2-mock) ; for the tests
5206 ("unzip" ,unzip))) ; for unpacking the source
092e86f5
AE
5207 (arguments
5208 `(#:python ,python-2 ; Otherwise tests fail with a syntax error.
5209 #:tests? #f ; The tests apparently download an external URL.
da6dd842 5210 ))
092e86f5
AE
5211 (home-page "http://cthedot.de/cssutils/")
5212 (synopsis
5213 "CSS Cascading Style Sheets library for Python")
5214 (description
5215 "Cssutils is a Python package for parsing and building CSS
5216Cascading Style Sheets. Currently it provides a DOM only and no rendering
5217options.")
3f641af0 5218 (license license:lgpl3+)))
880ff77c
AE
5219
5220(define-public python-cssselect
5221 (package
5222 (name "python-cssselect")
d5ccd9ab 5223 (version "0.9.2")
880ff77c
AE
5224 (source
5225 (origin
5226 (method url-fetch)
d5ccd9ab 5227 (uri (pypi-uri "cssselect" version))
880ff77c 5228 (sha256
d5ccd9ab
EF
5229 (base32
5230 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c 5231 (build-system python-build-system)
880ff77c
AE
5232 (arguments
5233 ;; tests fail with message
5234 ;; AttributeError: 'module' object has no attribute 'tests'
5235 `(#:tests? #f))
5236 (home-page
5237 "https://pythonhosted.org/cssselect/")
5238 (synopsis
5239 "CSS3 selector parser and translator to XPath 1.0")
5240 (description
5241 "Cssselect ia a Python module that parses CSS3 Selectors and translates
5242them to XPath 1.0 expressions. Such expressions can be used in lxml or
5243another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 5244 (license license:bsd-3)))
880ff77c
AE
5245
5246(define-public python2-cssselect
5247 (package-with-python2 python-cssselect))
60357f99
AE
5248
5249(define-public python-netifaces
5250 (package
5251 (name "python-netifaces")
5252 (version "0.10.4")
5253 (source
5254 (origin
5255 (method url-fetch)
5256 (uri (string-append
5257 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
5258 version
5259 ".tar.gz"))
5260 (sha256
5261 (base32
5262 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
5263 (build-system python-build-system)
60357f99
AE
5264 (home-page
5265 "https://bitbucket.org/al45tair/netifaces")
5266 (synopsis
5267 "Python module for portable network interface information")
5268 (description
5269 "Netifaces is a Python module providing information on network
5270interfaces in an easy and portable manner.")
5271 (license license:expat)))
5272
5273(define-public python2-netifaces
5274 (package-with-python2 python-netifaces))
92cb152b 5275
32f77c04
RW
5276(define-public python-networkx
5277 (package
5278 (name "python-networkx")
a4d9609c 5279 (version "1.11")
32f77c04
RW
5280 (source
5281 (origin
5282 (method url-fetch)
a4d9609c 5283 (uri (pypi-uri "networkx" version))
32f77c04 5284 (sha256
a4d9609c 5285 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
5286 (build-system python-build-system)
5287 ;; python-decorator is needed at runtime
5288 (propagated-inputs
5289 `(("python-decorator" ,python-decorator)))
5290 (native-inputs
f3b98f4f 5291 `(("python-nose" ,python-nose)))
32f77c04
RW
5292 (home-page "http://networkx.github.io/")
5293 (synopsis "Python module for creating and manipulating graphs and networks")
5294 (description
5295 "NetworkX is a Python package for the creation, manipulation, and study
5296of the structure, dynamics, and functions of complex networks.")
3f641af0 5297 (license license:bsd-3)))
32f77c04
RW
5298
5299(define-public python2-networkx
5300 (package-with-python2 python-networkx))
5301
92cb152b
RW
5302(define-public snakemake
5303 (package
5304 (name "snakemake")
5305 (version "3.2.1")
5306 (source
5307 (origin
5308 (method url-fetch)
5309 (uri (string-append
5310 "https://pypi.python.org/packages/source/s/snakemake/snakemake-"
5311 version ".tar.gz"))
5312 (sha256
5313 (base32 "0fi4b63sj60hvi7rfydvmz2icl4wj74djw5sn2gl8hxd02qw4b91"))))
5314 (build-system python-build-system)
92cb152b
RW
5315 (home-page "https://bitbucket.org/johanneskoester/snakemake")
5316 (synopsis "Python-based execution environment for make-like workflows")
5317 (description
5318 "Snakemake aims to reduce the complexity of creating workflows by
5319providing a clean and modern domain specific specification language (DSL) in
5320Python style, together with a fast and comfortable execution environment.")
5321 (license license:expat)))
a1920bc9 5322
35de1fbd
RW
5323(define-public python-seaborn
5324 (package
5325 (name "python-seaborn")
fc899d4f 5326 (version "0.7.0")
35de1fbd
RW
5327 (source
5328 (origin
5329 (method url-fetch)
fc899d4f 5330 (uri (pypi-uri "seaborn" version))
35de1fbd 5331 (sha256
fc899d4f 5332 (base32 "0ibi3xsfm2kysph61mnfy0pf8d5rkgxgrdb0z9nbizgcgdsb5a0m"))))
35de1fbd
RW
5333 (build-system python-build-system)
5334 (propagated-inputs
5335 `(("python-pandas" ,python-pandas)
5336 ("python-matplotlib" ,python-matplotlib)
5337 ("python-scipy" ,python-scipy)))
35de1fbd
RW
5338 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
5339 (synopsis "Statistical data visualization")
5340 (description
5341 "Seaborn is a library for making attractive and informative statistical
5342graphics in Python. It is built on top of matplotlib and tightly integrated
5343with the PyData stack, including support for numpy and pandas data structures
5344and statistical routines from scipy and statsmodels.")
3f641af0 5345 (license license:bsd-3)
fc899d4f 5346 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
5347
5348(define-public python2-seaborn
fc899d4f
EF
5349 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
5350 (package
5351 (inherit base)
5352 (propagated-inputs `(("python2-pytz" ,python2-pytz)
00e10c6e 5353 ,@(package-propagated-inputs base))))))
35de1fbd 5354
90fc547f
RW
5355(define-public python-sympy
5356 (package
5357 (name "python-sympy")
5358 (version "0.7.6")
5359 (source
5360 (origin
5361 (method url-fetch)
5362 (uri (string-append
5363 "https://github.com/sympy/sympy/releases/download/sympy-"
5364 version "/sympy-" version ".tar.gz"))
5365 (sha256
5366 (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
5367 (build-system python-build-system)
90fc547f
RW
5368 (home-page "http://www.sympy.org/")
5369 (synopsis "Python library for symbolic mathematics")
5370 (description
5371 "SymPy is a Python library for symbolic mathematics. It aims to become a
5372full-featured computer algebra system (CAS) while keeping the code as simple
5373as possible in order to be comprehensible and easily extensible.")
3f641af0 5374 (license license:bsd-3)))
90fc547f
RW
5375
5376(define-public python2-sympy
5377 (package-with-python2 python-sympy))
5378
e8c9b010
SR
5379(define-public python-q
5380 (package
5381 (name "python-q")
5382 (version "2.6")
5383 (source
5384 (origin
5385 (method url-fetch)
5386 (uri (pypi-uri "q" version))
5387 (sha256
5388 (base32
5389 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
5390 (build-system python-build-system)
5391 (home-page "https://github.com/zestyping/q")
5392 (synopsis "Quick-and-dirty debugging output for tired programmers")
5393 (description
5394 "q is a Python module for \"print\" style of debugging Python code. It
5395provides convenient short API for print out of values, tracebacks, and
5396falling into the Python interpreter.")
f210e944 5397 (license license:asl2.0)))
e8c9b010
SR
5398
5399(define-public python2-q
f210e944 5400 (package-with-python2 python-q))
e8c9b010 5401
a1920bc9
FB
5402(define-public python-testlib
5403 (package
5404 (name "python-testlib")
5405 (version "0.6.5")
5406 (source
5407 (origin
5408 (method url-fetch)
5409 (uri (string-append
5410 "https://pypi.python.org/packages/source/t/testlib/testlib-"
5411 version ".zip"))
5412 (sha256
5413 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
5414 (build-system python-build-system)
a1920bc9 5415 (native-inputs
632735f2 5416 `(("unzip" ,unzip))) ; for unpacking the source
a1920bc9
FB
5417 (synopsis "Python micro test suite harness")
5418 (description "A micro unittest suite harness for Python.")
5419 (home-page "https://github.com/trentm/testlib")
1cb9c006 5420 (license license:expat)))
a1920bc9
FB
5421
5422(define-public python2-testlib
5423 (package-with-python2 python-testlib))
db62afa5
LC
5424
5425(define-public python2-xlib
5426 (package
5427 (name "python2-xlib")
5428 (version "0.14")
5429 (source (origin
5430 (method url-fetch)
de67e922
LF
5431 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
5432 "/" version "/"
db62afa5
LC
5433 "python-xlib-" version ".tar.gz"))
5434 (sha256
5435 (base32
5436 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
5437 (build-system python-build-system)
5438 (arguments
5439 `(#:python ,python-2 ;Python 2 only
5440 #:tests? #f)) ;no tests
db62afa5
LC
5441 (home-page "http://python-xlib.sourceforge.net/")
5442 (synopsis "Python X11 client library")
5443 (description
5444 "The Python X Library is intended to be a fully functional X client
5445library for Python programs. It is useful to implement low-level X clients.
5446It is written entirely in Python.")
3f641af0 5447 (license license:gpl2+)))
0234ca06
DT
5448
5449(define-public python-singledispatch
5450 (package
5451 (name "python-singledispatch")
5452 (version "3.4.0.3")
5453 (source
5454 (origin
5455 (method url-fetch)
bdb67d84 5456 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
5457 (sha256
5458 (base32
5459 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
5460 (build-system python-build-system)
5e1c9d24
HG
5461 (native-inputs
5462 `(("python-six" ,python-six))) ; required for conversion, not at run-time
0234ca06
DT
5463 (home-page
5464 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
5465 (synopsis "Backport of singledispatch feature from Python 3.4")
5466 (description
5467 "This library brings functools.singledispatch from Python 3.4 to Python
54682.6-3.3.")
5469 (license license:expat)))
5470
5471(define-public python2-singledispatch
5472 (package-with-python2 python-singledispatch))
feaae484 5473
310d218f
RW
5474(define-public python-tornado
5475 (package
5476 (name "python-tornado")
a724924b 5477 (version "4.3")
310d218f
RW
5478 (source
5479 (origin
5480 (method url-fetch)
a724924b 5481 (uri (pypi-uri "tornado" version))
310d218f 5482 (sha256
a724924b 5483 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f 5484 (build-system python-build-system)
3fe2c209
MB
5485 (arguments
5486 '(;; FIXME: Two tests error out with:
5487 ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
5488 ;; #:phases
5489 ;; (modify-phases %standard-phases
5490 ;; (replace 'check
5491 ;; (lambda _
5492 ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
5493 ;; ;; "tornado/platform/kqueue.py". This is the supported method:
5494 ;; (zero? (system* "python" "-m" "tornado.test")))))
5495 #:tests? #f))
310d218f 5496 (native-inputs
b455439b 5497 `(("python-certifi" ,python-certifi)))
f22efa01 5498 (propagated-inputs
b455439b 5499 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 5500 (home-page "http://www.tornadoweb.org/")
310d218f
RW
5501 (synopsis "Python web framework and asynchronous networking library")
5502 (description
5503 "Tornado is a Python web framework and asynchronous networking library,
5504originally developed at FriendFeed. By using non-blocking network I/O,
5505Tornado can scale to tens of thousands of open connections, making it ideal
5506for long polling, WebSockets, and other applications that require a long-lived
5507connection to each user.")
3f641af0 5508 (license license:asl2.0)
b455439b 5509 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
5510
5511(define-public python2-tornado
b455439b 5512 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f 5513 (package (inherit tornado)
f22efa01 5514 (propagated-inputs
310d218f
RW
5515 `(("python2-backport-ssl-match-hostname"
5516 ,python2-backport-ssl-match-hostname)
b455439b 5517 ("python2-singledispatch" ,python2-singledispatch)
f22efa01 5518 ,@(package-propagated-inputs tornado))))))
310d218f 5519
6b59fc10
EF
5520;; the python- version can be removed with python-3.5
5521(define-public python-backports-abc
5522 (package
5523 (name "python-backports-abc")
5524 (version "0.4")
5525 (source
5526 (origin
5527 (method url-fetch)
5528 (uri (pypi-uri "backports_abc" version))
5529 (sha256
5530 (base32
5531 "19fh75lni9pb673n2fn505m1rckm0af0szcv5xx1qm1xpa940glb"))))
5532 (build-system python-build-system)
6b59fc10 5533 (home-page "https://github.com/cython/backports_abc")
66e07664 5534 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
5535 (description
5536 "Python-backports-abc provides a backport of additions to the
5537'collections.abc' module in Python-3.5.")
3f641af0 5538 (license license:psfl)))
6b59fc10
EF
5539
5540(define-public python2-backports-abc
5541 (package-with-python2 python-backports-abc))
5542
feaae484
SB
5543(define-public python-waf
5544 (package
5545 (name "python-waf")
7dd55dfe 5546 (version "1.9.5")
feaae484
SB
5547 (source (origin
5548 (method url-fetch)
bae67829 5549 (uri (string-append "https://waf.io/"
feaae484
SB
5550 "waf-" version ".tar.bz2"))
5551 (sha256
5552 (base32
7dd55dfe 5553 "1sl3ipi2czds57rlzjnpdzqa0skx8asfvmh3qmibpvdwf15rpppg"))))
feaae484
SB
5554 (build-system python-build-system)
5555 (arguments
5556 '(#:phases
5557 (modify-phases %standard-phases
5558 (replace 'build
7dd55dfe
EF
5559 (lambda _
5560 (zero? (system* "python" "waf-light" "configure" "build"))))
feaae484 5561 (replace 'check
7dd55dfe
EF
5562 (lambda _
5563 (zero? (system* "python" "waf" "--version"))))
feaae484 5564 (replace 'install
7dd55dfe
EF
5565 (lambda _
5566 (copy-file "waf" %output))))))
5567 (home-page "http://waf.io/")
feaae484
SB
5568 (synopsis "Python-based build system")
5569 (description
5570 "Waf is a Python-based framework for configuring, compiling and installing
5571applications.")
3f641af0 5572 (license license:bsd-3)))
feaae484
SB
5573
5574(define-public python2-waf
5575 (package-with-python2 python-waf))
45203542
RW
5576
5577(define-public python-pyzmq
5578 (package
5579 (name "python-pyzmq")
3655ee76 5580 (version "15.1.0")
45203542
RW
5581 (source
5582 (origin
5583 (method url-fetch)
3655ee76 5584 (uri (pypi-uri "pyzmq" version))
45203542 5585 (sha256
3655ee76 5586 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
5587 (build-system python-build-system)
5588 (arguments
5589 `(#:configure-flags
5590 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
5591 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
5592 ;; --inplace' for 'python setup.py test' to work.
5593 #:tests? #f))
5594 (inputs
5595 `(("zeromq" ,zeromq)))
5596 (native-inputs
5597 `(("pkg-config" ,pkg-config)
f3b98f4f 5598 ("python-nose" ,python-nose)))
45203542
RW
5599 (home-page "http://github.com/zeromq/pyzmq")
5600 (synopsis "Python bindings for 0MQ")
5601 (description
5602 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 5603 (license license:bsd-4)))
45203542
RW
5604
5605(define-public python2-pyzmq
5606 (package-with-python2 python-pyzmq))
d889e6c4
CR
5607
5608(define-public python-pep8
5609 (package
5610 (name "python-pep8")
db251311 5611 (version "1.7.0")
d889e6c4
CR
5612 (source
5613 (origin
5614 (method url-fetch)
db251311 5615 (uri (pypi-uri "pep8" version))
d889e6c4
CR
5616 (sha256
5617 (base32
db251311 5618 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4 5619 (build-system python-build-system)
d889e6c4
CR
5620 (home-page "http://pep8.readthedocs.org/")
5621 (synopsis "Python style guide checker")
5622 (description
5623 "This tools checks Python code against some of the style conventions in
5624PEP 8.")
5625 (license license:expat)))
5626
5627(define-public python2-pep8
5628 (package-with-python2 python-pep8))
e31d7f44
CR
5629
5630(define-public python-pyflakes
5631 (package
5632 (name "python-pyflakes")
2abc3972 5633 (version "1.0.0")
e31d7f44
CR
5634 (source
5635 (origin
5636 (method url-fetch)
2abc3972 5637 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
5638 (sha256
5639 (base32
2abc3972 5640 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44 5641 (build-system python-build-system)
e31d7f44
CR
5642 (home-page
5643 "https://github.com/pyflakes/pyflakes")
5644 (synopsis "Passive checker of Python programs")
5645 (description
5646 "Pyflakes statically checks Python source code for common errors.")
5647 (license license:expat)))
a59e017c 5648
7261d9eb
CR
5649(define-public python2-pyflakes
5650 (package-with-python2 python-pyflakes))
5651
a59e017c
CR
5652(define-public python-mccabe
5653 (package
5654 (name "python-mccabe")
c6ebd40d 5655 (version "0.4.0")
a59e017c
CR
5656 (source
5657 (origin
5658 (method url-fetch)
c6ebd40d 5659 (uri (pypi-uri "mccabe" version))
a59e017c
CR
5660 (sha256
5661 (base32
c6ebd40d 5662 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c 5663 (build-system python-build-system)
328bb95d 5664 (native-inputs
c6ebd40d 5665 `(("python-pytest" ,python-pytest)
f3b98f4f 5666 ("python-pytest-runner" ,python-pytest-runner)))
a59e017c
CR
5667 (home-page "https://github.com/flintwork/mccabe")
5668 (synopsis "McCabe checker, plugin for flake8")
5669 (description
5670 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
5671complexity of Python source code.")
7362371d 5672 (license license:expat)))
a59e017c
CR
5673
5674(define-public python2-mccabe
5675 (package-with-python2 python-mccabe))
e8df8f47 5676
7477fbb1
CR
5677(define-public python-mccabe-0.2.1
5678 (package (inherit python-mccabe)
5679 (version "0.2.1")
5680 (source
5681 (origin
5682 (method url-fetch)
5683 (uri (pypi-uri "mccabe" version))
5684 (sha256
5685 (base32
f3b98f4f 5686 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
7477fbb1
CR
5687
5688(define-public python2-mccabe-0.2.1
5689 (package-with-python2 python-mccabe-0.2.1))
5690
e8df8f47
CR
5691;; Flake8 2.4.1 requires an older version of pep8.
5692;; This should be removed ASAP.
5693(define-public python-pep8-1.5.7
5694 (package (inherit python-pep8)
5695 (version "1.5.7")
5696 (source
5697 (origin
5698 (method url-fetch)
5699 (uri (string-append
5700 "https://pypi.python.org/packages/source/p/pep8/pep8-"
5701 version
5702 ".tar.gz"))
5703 (sha256
5704 (base32
73e3060d
MB
5705 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
5706 (arguments
5707 ;; XXX Tests not compatible with Python 3.5.
5708 '(#:tests? #f))))
e8df8f47
CR
5709
5710(define-public python2-pep8-1.5.7
5711 (package-with-python2 python-pep8-1.5.7))
5712
5713;; Flake8 2.4.1 requires an older version of pyflakes.
5714;; This should be removed ASAP.
5715(define-public python-pyflakes-0.8.1
5716 (package (inherit python-pyflakes)
5717 (version "0.8.1")
5718 (source
5719 (origin
5720 (method url-fetch)
5721 (uri (string-append
5722 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
5723 version
5724 ".tar.gz"))
5725 (sha256
5726 (base32
0d84e1ef
MB
5727 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
5728 (arguments
5729 ;; XXX Tests not compatible with Python 3.5.
5730 '(#:tests? #f))))
e8df8f47
CR
5731
5732(define-public python2-pyflakes-0.8.1
7261d9eb 5733 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
5734
5735(define-public python-flake8
5736 (package
5737 (name "python-flake8")
43789136 5738 (version "2.5.4")
e8df8f47
CR
5739 (source
5740 (origin
5741 (method url-fetch)
1b995533 5742 (uri (pypi-uri "flake8" version))
e8df8f47
CR
5743 (sha256
5744 (base32
011271c7
HG
5745 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
5746 (modules '((guix build utils)))
5747 (snippet
5748 '(begin
5749 ;; Remove pre-compiled .pyc files from source.
5750 (for-each delete-file-recursively
5751 (find-files "." "__pycache__" #:directories? #t))
5752 (for-each delete-file (find-files "." "\\.pyc$"))
5753 #t))))
e8df8f47 5754 (build-system python-build-system)
482d9591 5755 (propagated-inputs
f3b98f4f 5756 `(("python-pep8" ,python-pep8)
43789136 5757 ("python-pyflakes" ,python-pyflakes)
482d9591 5758 ("python-mccabe" ,python-mccabe)))
328bb95d
HG
5759 (native-inputs
5760 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
e8df8f47
CR
5761 ("python-nose" ,python-nose)))
5762 (home-page "https://gitlab.com/pycqa/flake8")
5763 (synopsis
5764 "The modular source code checker: pep8, pyflakes and co")
5765 (description
5766 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
5767 (license license:expat)))
5768
5769(define-public python2-flake8
5770 (package-with-python2 python-flake8))
61b9ac53 5771
abf21efc
CR
5772;; This will only be needed by the python-hacking package and will not be
5773;; necessary once python-hacking > 0.10.2 is released.
5774(define-public python-flake8-2.2.4
5775 (package (inherit python-flake8)
482d9591 5776 (propagated-inputs
f3b98f4f 5777 `(("python-pep8" ,python-pep8-1.5.7)
abf21efc 5778 ("python-pyflakes" ,python-pyflakes-0.8.1)
482d9591 5779 ("python-mccabe" ,python-mccabe-0.2.1)))
328bb95d 5780 (native-inputs
482d9591 5781 `(("python-mock" ,python-mock)
abf21efc
CR
5782 ("python-nose" ,python-nose)))
5783 (version "2.2.4")
5784 (source
5785 (origin
5786 (method url-fetch)
5787 (uri (pypi-uri "flake8" version))
5788 (sha256
5789 (base32
b9c8ccce
HG
5790 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))
5791 (modules '((guix build utils)))
5792 (snippet
5793 '(begin
5794 ;; Remove pre-compiled .pyc files from source.
5795 (for-each delete-file-recursively
5796 (find-files "." "__pycache__" #:directories? #t))
5797 (for-each delete-file (find-files "." "\\.pyc$"))
a717e8a6
MB
5798 #t))))
5799 (arguments
5800 ;; XXX Fails with Python 3.5.
5801 '(#:tests? #f))))
abf21efc
CR
5802
5803(define-public python2-flake8-2.2.4
5804 (package-with-python2 python-flake8-2.2.4))
5805
61b9ac53
FB
5806(define-public python-mistune
5807 (package
5808 (name "python-mistune")
5809 (version "0.7")
5810 (source
5811 (origin
5812 (method url-fetch)
5813 (uri (string-append
5814 "https://pypi.python.org/packages/source/m/mistune/mistune-"
5815 version
5816 ".tar.gz"))
5817 (sha256
5818 (base32
5819 "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
5820 (build-system python-build-system)
328bb95d 5821 (native-inputs
f3b98f4f 5822 `(("python-nose" ,python-nose)
61b9ac53
FB
5823 ("python-cython" ,python-cython)))
5824 (home-page "https://github.com/lepture/mistune")
5825 (synopsis "Markdown parser in pure Python")
5826 (description "This package provides a fast markdown parser in pure
5827Python.")
3f641af0 5828 (license license:bsd-3)))
61b9ac53
FB
5829
5830(define-public python2-mistune
5831 (package-with-python2 python-mistune))
6d992d07 5832
b9893908
EE
5833(define-public python-markdown
5834 (package
5835 (name "python-markdown")
5836 (version "2.6.5")
5837 (source
5838 (origin
5839 (method url-fetch)
5840 (uri (pypi-uri "Markdown" version))
5841 (sha256
5842 (base32
5843 "0q758a3fiiawr20b3hhjfs677cwj6xi284yb7xspcvv0fdicz54d"))))
5844 (build-system python-build-system)
5845 (arguments
5846 `(#:phases
5847 (modify-phases %standard-phases
5848 (replace 'check
5849 (lambda _
5850 (zero? (system* "python" "run-tests.py")))))))
5851 (native-inputs
5852 `(("python-nose" ,python-nose)
5853 ("python-pyyaml" ,python-pyyaml)))
5854 (home-page "https://pythonhosted.org/Markdown/")
5855 (synopsis "Python implementation of Markdown")
5856 (description
5857 "This package provides a Python implementation of John Gruber's
5858Markdown. The library features international input, various Markdown
5859extensions, and several HTML output formats. A command line wrapper
5860markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 5861 (license license:bsd-3)))
b9893908
EE
5862
5863(define-public python2-markdown
5864 (package-with-python2 python-markdown))
5865
6d992d07
FB
5866(define-public python-ptyprocess
5867 (package
5868 (name "python-ptyprocess")
5869 (version "0.5")
5870 (source
5871 (origin
5872 (method url-fetch)
5873 (uri (string-append
5874 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
5875 version ".tar.gz"))
5876 (sha256
5877 (base32
5878 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
5879 (build-system python-build-system)
328bb95d 5880 (native-inputs
f3b98f4f 5881 `(("python-nose" ,python-nose)))
6d992d07
FB
5882 (arguments
5883 `(#:phases
5884 (modify-phases %standard-phases
5885 (replace 'check
5886 (lambda _
5887 (zero? (system* "nosetests")))))))
5888 (home-page "https://github.com/pexpect/ptyprocess")
5889 (synopsis "Run a subprocess in a pseudo terminal")
5890 (description
5891 "This package provides a Python library used to launch a subprocess in a
5892pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 5893 (license license:isc)))
6d992d07
FB
5894
5895(define-public python2-ptyprocess
5896 (package-with-python2 python-ptyprocess))
4aadb1df
FB
5897
5898(define-public python-terminado
5899 (package
5900 (name "python-terminado")
783fb0a3 5901 (version "0.6")
4aadb1df
FB
5902 (source
5903 (origin
5904 (method url-fetch)
783fb0a3 5905 (uri (pypi-uri "terminado" version))
4aadb1df
FB
5906 (sha256
5907 (base32
783fb0a3 5908 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
5909 (build-system python-build-system)
5910 (propagated-inputs
5911 `(("python-tornado" ,python-tornado)
5912 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
5913 (native-inputs
5914 `(("python-nose" ,python-nose)))
4aadb1df
FB
5915 (arguments
5916 `(#:phases
5917 (modify-phases %standard-phases
5918 (replace 'check
5919 (lambda _
5920 (zero? (system* "nosetests")))))))
5921 (home-page "https://github.com/takluyver/terminado")
5922 (synopsis "Terminals served to term.js using Tornado websockets")
5923 (description "This package provides a Tornado websocket backend for the
5924term.js Javascript terminal emulator library.")
3f641af0 5925 (license license:bsd-2)
783fb0a3 5926 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
5927
5928(define-public python2-terminado
783fb0a3 5929 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 5930 (package (inherit terminado)
783fb0a3
EF
5931 (propagated-inputs
5932 `(("python2-backport-ssl-match-hostname"
5933 ,python2-backport-ssl-match-hostname)
00e10c6e 5934 ,@(package-propagated-inputs terminado))))))
5faa5ce4 5935
d582eaac
SB
5936(define-public python-fonttools
5937 (package
5938 (name "python-fonttools")
5939 (version "2.5")
5940 (source (origin
5941 (method url-fetch)
5942 (uri (string-append
5943 "https://pypi.python.org/packages/source/F/FontTools/"
5944 "fonttools-" version ".tar.gz"))
5945 (sha256
5946 (base32
5947 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
5948 (build-system python-build-system)
9e8c6a37
HG
5949 (arguments
5950 '(#:test-target "check"
5951 #:phases
5952 (modify-phases %standard-phases
5953 (add-after 'unpack 'patch-setuppy
5954 ;; Remove the undocumented "extra_path" argument, which adds an
5955 ;; intervening directories between site-packages and the package
5956 ;; directory.
5957 (lambda _
5958 (substitute* "setup.py"
5959 (("^[ \t]*extra_path *= *'FontTools',") ""))
5960 #t)))))
d582eaac
SB
5961 (home-page "http://github.com/behdad/fonttools")
5962 (synopsis "Tools to manipulate font files")
5963 (description
5964 "FontTools/TTX is a library to manipulate font files from Python. It
9e8c6a37 5965supports reading and writing of TrueType/OpenType fonts, reading and writing
d582eaac
SB
5966of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
5967also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
5968from an XML-based format.")
3f641af0
DC
5969 (license (license:non-copyleft
5970 "file://LICENSE.txt"
5971 "See LICENSE.txt in the distribution."))))
d582eaac
SB
5972
5973(define-public python2-fonttools
5974 (package-with-python2 python-fonttools))
75710da6 5975
5faa5ce4
RW
5976(define-public python-ly
5977 (package
5978 (name "python-ly")
5135354f 5979 (version "0.9.4")
5faa5ce4
RW
5980 (source
5981 (origin
5982 (method url-fetch)
5135354f
RW
5983 (uri (string-append "https://pypi.python.org/packages/57/4f/"
5984 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
5985 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
5986 (sha256
5987 (base32
5135354f 5988 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4 5989 (build-system python-build-system)
5faa5ce4
RW
5990 (synopsis "Tool and library for manipulating LilyPond files")
5991 (description "This package provides a Python library to parse, manipulate
5992or create documents in LilyPond format. A command line program ly is also
5993provided that can be used to do various manipulations with LilyPond files.")
5994 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 5995 (license license:gpl2+)))
7e7b27d9
CR
5996
5997(define-public python-appdirs
5998 (package
5999 (name "python-appdirs")
6000 (version "1.4.0")
6001 (source
6002 (origin
6003 (method url-fetch)
6004 (uri (string-append
6005 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
6006 version
6007 ".tar.gz"))
6008 (sha256
6009 (base32
6010 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
6011 (build-system python-build-system)
7e7b27d9
CR
6012 (home-page "http://github.com/ActiveState/appdirs")
6013 (synopsis
6014 "Determine platform-specific dirs, e.g. a \"user data dir\"")
6015 (description
6016 "This module provides a portable way of finding out where user data
6017should be stored on various operating systems.")
6018 (license license:expat)))
6019
6020(define-public python2-appdirs
6021 (package-with-python2 python-appdirs))
89b2e0b0
LF
6022
6023(define-public python-llfuse
6024 (package
6025 (name "python-llfuse")
e36ace36 6026 (version "1.1.1")
89b2e0b0
LF
6027 (source (origin
6028 (method url-fetch)
6029 (uri (string-append
6030 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6031 "llfuse-" version ".tar.bz2"))
6032 (sha256
6033 (base32
e36ace36 6034 "0v6vj9mb286njgd1szg9hz2qdh5f3vkhsvajripfcqg458av310v"))))
89b2e0b0
LF
6035 (build-system python-build-system)
6036 (inputs
6037 `(("fuse" ,fuse)
6038 ("attr" ,attr)))
6039 (native-inputs
f3b98f4f 6040 `(("pkg-config" ,pkg-config)))
89b2e0b0
LF
6041 (synopsis "Python bindings for FUSE")
6042 (description
6043 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
6044 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 6045 (license license:lgpl2.0+)
cd0569c4 6046 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
6047
6048(define-public python2-llfuse
cd0569c4
LF
6049 (package (inherit (package-with-python2
6050 (strip-python2-variant python-llfuse)))
6051 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
6052
6053;; For attic-0.16
6054(define-public python-llfuse-0.41
6055 (package (inherit python-llfuse)
229b3661 6056 (version "0.41.1")
cd0569c4
LF
6057 (source (origin
6058 (method url-fetch)
6059 (uri (string-append
6060 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6061 "llfuse-" version ".tar.bz2"))
6062 (sha256
6063 (base32
229b3661 6064 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
6065 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
6066 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 6067 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
6068
6069(define-public python-msgpack
6070 (package
6071 (name "python-msgpack")
aed625bd 6072 (version "0.4.8")
641c9871
LF
6073 (source (origin
6074 (method url-fetch)
ae831df4 6075 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
6076 (sha256
6077 (base32
aed625bd 6078 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 6079 (build-system python-build-system)
641c9871
LF
6080 (synopsis "MessagePack (de)serializer")
6081 (description "MessagePack is a fast, compact binary serialization format,
6082suitable for similar data to JSON. This package provides CPython bindings for
6083reading and writing MessagePack data.")
6084 (home-page "https://pypi.python.org/pypi/msgpack-python/")
f210e944 6085 (license license:asl2.0)))
bd74be7b
LF
6086
6087(define-public python2-msgpack
f210e944 6088 (package-with-python2 python-msgpack))
641c9871 6089
6e5e39f4
CR
6090(define-public python-netaddr
6091 (package
6092 (name "python-netaddr")
6093 (version "0.7.18")
6094 (source
6095 (origin
6096 (method url-fetch)
6097 (uri (string-append
6098 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
6099 version
6100 ".tar.gz"))
6101 (sha256
6102 (base32
6103 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
6104 (build-system python-build-system)
6105 (arguments `(#:tests? #f)) ;; No tests.
6e5e39f4
CR
6106 (home-page "https://github.com/drkjam/netaddr/")
6107 (synopsis "Pythonic manipulation of network addresses")
6108 (description
6109 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
6110and MAC network addresses.")
3f641af0 6111 (license license:bsd-3)))
6e5e39f4
CR
6112
6113(define-public python2-netaddr
6114 (package-with-python2 python-netaddr))
8c692a52
CR
6115
6116(define-public python-wrapt
6117 (package
6118 (name "python-wrapt")
6119 (version "1.10.5")
6120 (source
6121 (origin
6122 (method url-fetch)
6123 (uri (string-append
6124 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
6125 version
6126 ".tar.gz"))
6127 (sha256
6128 (base32
6129 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
6130 (build-system python-build-system)
6131 (arguments
6132 ;; Tests are not included in the tarball, they are only available in the
6133 ;; git repository.
6134 `(#:tests? #f))
8c692a52
CR
6135 (home-page "https://github.com/GrahamDumpleton/wrapt")
6136 (synopsis "Module for decorators, wrappers and monkey patching")
6137 (description
6138 "The aim of the wrapt module is to provide a transparent object proxy for
6139 Python, which can be used as the basis for the construction of function
6140 wrappers and decorator functions.")
3f641af0 6141 (license license:bsd-2)))
8c692a52
CR
6142
6143(define-public python2-wrapt
6144 (package-with-python2 python-wrapt))
b85c85be
CR
6145
6146(define-public python-iso8601
6147 (package
6148 (name "python-iso8601")
fe84bc9a 6149 (version "0.1.11")
b85c85be
CR
6150 (source
6151 (origin
6152 (method url-fetch)
fe84bc9a 6153 (uri (pypi-uri "iso8601" version))
b85c85be 6154 (sha256
fe84bc9a
EF
6155 (base32
6156 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be 6157 (build-system python-build-system)
63b02364
MB
6158 (native-inputs
6159 `(("python-pytest" ,python-pytest)))
b85c85be
CR
6160 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
6161 (synopsis "Module to parse ISO 8601 dates")
6162 (description
6163 "This module parses the most common forms of ISO 8601 date strings (e.g.
6164@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
6165 (license license:expat)))
6166
6167(define-public python2-iso8601
6168 (package-with-python2 python-iso8601))
5e412b63
CR
6169
6170(define-public python-monotonic
6171 (package
6172 (name "python-monotonic")
6173 (version "0.3")
6174 (source
6175 (origin
6176 (method url-fetch)
6177 (uri (string-append
6178 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
6179 version
6180 ".tar.gz"))
6181 (sha256
6182 (base32
6183 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
6184 (build-system python-build-system)
5e412b63
CR
6185 (home-page "https://github.com/atdt/monotonic")
6186 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
6187 (description
6188 "This module provides a monotonic() function which returns the value (in
6189fractional seconds) of a clock which never goes backwards.")
3f641af0 6190 (license license:asl2.0)))
5e412b63
CR
6191
6192(define-public python2-monotonic
6193 (package-with-python2 python-monotonic))
de34afac
CR
6194
6195(define-public python-webob
6196 (package
6197 (name "python-webob")
b8834c21 6198 (version "1.5.1")
de34afac
CR
6199 (source
6200 (origin
6201 (method url-fetch)
b8834c21 6202 (uri (pypi-uri "WebOb" version))
de34afac
CR
6203 (sha256
6204 (base32
b8834c21 6205 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac 6206 (build-system python-build-system)
328bb95d 6207 (native-inputs
f3b98f4f 6208 `(("python-nose" ,python-nose)))
de34afac
CR
6209 (home-page "http://webob.org/")
6210 (synopsis "WSGI request and response object")
6211 (description
6212 "WebOb provides wrappers around the WSGI request environment, and an
6213object to help create WSGI responses.")
6214 (license license:expat)))
6215
6216(define-public python2-webob
6217 (package-with-python2 python-webob))
350ba0a3 6218
02a8a187
BW
6219(define-public python-xlrd
6220 (package
6221 (name "python-xlrd")
c2ad4d70 6222 (version "1.0.0")
02a8a187
BW
6223 (source (origin
6224 (method url-fetch)
e775f48e 6225 (uri (pypi-uri "xlrd" version))
02a8a187
BW
6226 (sha256
6227 (base32
c2ad4d70 6228 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
02a8a187
BW
6229 (build-system python-build-system)
6230 (arguments
6231 `(#:phases
6232 (modify-phases %standard-phases
c2ad4d70 6233 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
02a8a187
BW
6234 ;; run tests instead for now.
6235 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
f3b98f4f 6236 (native-inputs `(("python-nose" ,python-nose)))
02a8a187
BW
6237 (home-page "http://www.python-excel.org/")
6238 (synopsis "Library for extracting data from Excel files")
6239 (description "This packages provides a library to extract data from
c598e35c 6240spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
6241@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
6242Unicode-aware. It is not intended as an end-user tool.")
3f641af0 6243 (license license:bsd-3)))
02a8a187
BW
6244
6245(define-public python2-xlrd
6246 (package-with-python2 python-xlrd))
6247
350ba0a3
CR
6248(define-public python-prettytable
6249 (package
6250 (name "python-prettytable")
6251 (version "0.7.2")
6252 (source
6253 (origin
6254 (method url-fetch)
6255 (uri (string-append
6256 "https://pypi.python.org/packages/source/P/PrettyTable/"
6257 "prettytable-" version ".tar.bz2"))
6258 (sha256
6259 (base32
6260 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
6261 (build-system python-build-system)
350ba0a3
CR
6262 (home-page "http://code.google.com/p/prettytable/")
6263 (synopsis "Display tabular data in an ASCII table format")
6264 (description
6265 "A library designed to represent tabular data in visually appealing ASCII
6266tables. PrettyTable allows for selection of which columns are to be printed,
6267independent alignment of columns (left or right justified or centred) and
6268printing of sub-tables by specifying a row range.")
3f641af0 6269 (license license:bsd-3)))
350ba0a3
CR
6270
6271(define-public python2-prettytable
6272 (package-with-python2 python-prettytable))
7a8ac75a 6273
9f8ee3fe
RW
6274(define-public python-tables
6275 (package
6276 (name "python-tables")
6277 (version "3.2.2")
6278 (source
6279 (origin
6280 (method url-fetch)
6281 (uri (pypi-uri "tables" version))
6282 (sha256
6283 (base32
bac23672
HG
6284 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
6285 (modules '((guix build utils)))
6286 (snippet
6287 '(begin
6288 ;; Remove pre-compiled .pyc files from source.
6289 (for-each delete-file-recursively
6290 (find-files "." "__pycache__" #:directories? #t))
6291 (for-each delete-file (find-files "." "\\.pyc$"))
6292 #t))))
9f8ee3fe
RW
6293 (build-system python-build-system)
6294 (arguments
6295 `(;; FIXME: python-build-system does not pass configure-flags to "build"
6296 ;; or "check", so we must override the build and check phases.
6297 #:phases
6298 (modify-phases %standard-phases
6299 (add-after 'unpack 'use-gcc
6300 (lambda _
6301 (substitute* "setup.py"
6302 (("compiler = new_compiler\\(\\)" line)
6303 (string-append line
6304 "\ncompiler.set_executables(compiler='gcc',"
6305 "compiler_so='gcc',"
6306 "linker_exe='gcc',"
6307 "linker_so='gcc -shared')")))
6308 #t))
6309 (replace 'build
6310 (lambda* (#:key inputs #:allow-other-keys)
6311 (zero? (system* "python" "setup.py" "build"
6312 (string-append "--hdf5="
6313 (assoc-ref inputs "hdf5"))))))
6314 (replace 'check
6315 (lambda* (#:key inputs #:allow-other-keys)
6316 (zero? (system* "python" "setup.py" "check"
6317 (string-append "--hdf5="
6318 (assoc-ref inputs "hdf5")))))))))
6319 (propagated-inputs
6320 `(("python-numexpr" ,python-numexpr)
6321 ("python-numpy" ,python-numpy)))
6322 (native-inputs
f3b98f4f 6323 `(("python-cython" ,python-cython)
9f8ee3fe
RW
6324 ("pkg-config" ,pkg-config)))
6325 (inputs
6326 `(("hdf5" ,hdf5)
6327 ("bzip2" ,bzip2)
6328 ("zlib" ,zlib)))
6329 (home-page "http://www.pytables.org/")
6330 (synopsis "Hierarchical datasets for Python")
6331 (description "PyTables is a package for managing hierarchical datasets and
6332designed to efficently cope with extremely large amounts of data.")
3f641af0 6333 (license license:bsd-3)))
9f8ee3fe
RW
6334
6335(define-public python2-tables
6336 (package-with-python2 python-tables))
6337
7a8ac75a
RW
6338(define-public python-pyasn1
6339 (package
6340 (name "python-pyasn1")
caa0edb3 6341 (version "0.1.9")
7a8ac75a
RW
6342 (source
6343 (origin
6344 (method url-fetch)
caa0edb3 6345 (uri (pypi-uri "pyasn1" version))
7a8ac75a
RW
6346 (sha256
6347 (base32
caa0edb3 6348 "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"))))
7a8ac75a
RW
6349 (build-system python-build-system)
6350 (home-page "http://pyasn1.sourceforge.net/")
6351 (synopsis "ASN.1 types and codecs")
6352 (description
6353 "This is an implementation of ASN.1 types and codecs in Python. It is
6354suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 6355 (license license:bsd-2)))
7a8ac75a
RW
6356
6357(define-public python2-pyasn1
6358 (package-with-python2 python-pyasn1))
9a49a535 6359
5988c299
EF
6360(define-public python-pyasn1-modules
6361 (package
6362 (name "python-pyasn1-modules")
6363 (version "0.0.8")
6364 (source
6365 (origin
6366 (method url-fetch)
6367 (uri (pypi-uri "pyasn1-modules" version))
6368 (sha256
6369 (base32
6370 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
6371 (build-system python-build-system)
5988c299
EF
6372 (propagated-inputs
6373 `(("python-pyasn1" ,python-pyasn1)))
6374 (home-page "http://sourceforge.net/projects/pyasn1/")
6375 (synopsis "ASN.1 codec implementations")
6376 (description
6377 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
6378implementations of ASN.1-based codecs and protocols.")
3f641af0 6379 (license license:bsd-3)))
5988c299
EF
6380
6381(define-public python2-pyasn1-modules
6382 (package-with-python2 python-pyasn1-modules))
6383
520af157 6384(define-public python-ipaddress
9a49a535 6385 (package
520af157
DC
6386 (name "python-ipaddress")
6387 (version "1.0.16")
6388 (source (origin
6389 (method url-fetch)
6390 (uri (pypi-uri "ipaddress" version))
6391 (sha256
6392 (base32
6393 "1c3imabdrw8nfksgjjflzg7h4ynjckqacb188rf541m74arq4cas"))))
9a49a535 6394 (build-system python-build-system)
9a49a535
RW
6395 (home-page "https://github.com/phihag/ipaddress")
6396 (synopsis "IP address manipulation library")
6397 (description
520af157
DC
6398 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
6399 in Python. This library is used to create, poke at, and manipulate IPv4 and
6400 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
6401 module to older versions of Python.")
f210e944 6402 (license license:psfl)))
520af157
DC
6403
6404(define-public python2-ipaddress
f210e944 6405 (package-with-python2 python-ipaddress))
3f00e078 6406
4a238186
HG
6407(define-public python2-ipaddr
6408 (package
6409 (name "python2-ipaddr")
6410 (version "2.1.11")
6411 (source
6412 (origin
6413 (method url-fetch)
6414 (uri (pypi-uri "ipaddr" version))
6415 (sha256
6416 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
6417 (build-system python-build-system)
6418 (arguments
6419 `(#:python ,python-2 ;version 2 only
6420 #:phases
6421 (modify-phases %standard-phases
6422 (replace 'check
6423 (lambda* _
6424 (zero? (system* "python" "ipaddr_test.py")))))))
6425 (home-page "https://github.com/google/ipaddr-py")
6426 (synopsis "IP address manipulation library")
6427 (description
6428 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
6429IPv6 addresses and networks.
6430
6431For new implementations you may prefer to use the standard module
6432@code{ipaddress}, which was introduced in Python 3.3 and backported to older
6433versions of Python.")
3f641af0 6434 (license license:asl2.0)))
4a238186 6435
3f00e078
RW
6436(define-public python-idna
6437 (package
6438 (name "python-idna")
6439 (version "2.0")
6440 (source
6441 (origin
6442 (method url-fetch)
6443 (uri (string-append "https://pypi.python.org/packages/source/i/"
6444 "idna/idna-" version ".tar.gz"))
6445 (sha256
6446 (base32
6447 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
6448 (build-system python-build-system)
3f00e078
RW
6449 (home-page "https://github.com/kjd/idna")
6450 (synopsis "Internationalized domain names in applications")
6451 (description
6452 "This is a library to support the Internationalised Domain Names in
6453Applications (IDNA) protocol as specified in RFC 5891. This version of the
6454protocol is often referred to as “IDNA2008” and can produce different results
6455from the earlier standard from 2003. The library is also intended to act as a
6456suitable drop-in replacement for the “encodings.idna” module that comes with
6457the Python standard library but currently only supports the older 2003
6458specification.")
3f641af0 6459 (license license:bsd-4)))
3f00e078
RW
6460
6461(define-public python2-idna
6462 (package-with-python2 python-idna))
36ebf972
RW
6463
6464(define-public python-pretend
6465 (package
6466 (name "python-pretend")
6467 (version "1.0.8")
6468 (source
6469 (origin
6470 (method url-fetch)
6471 (uri (string-append "https://pypi.python.org/packages/source/p/"
6472 "pretend/pretend-" version ".tar.gz"))
6473 (sha256
6474 (base32
6475 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
6476 (build-system python-build-system)
36ebf972
RW
6477 (home-page "https://github.com/alex/pretend")
6478 (synopsis "Library for stubbing in Python")
6479 (description
6480 "Pretend is a library to make stubbing with Python easier. Stubbing is a
6481technique for writing tests. You may hear the term mixed up with mocks,
6482fakes, or doubles. Basically, a stub is an object that returns pre-canned
6483responses, rather than doing any computation.")
3f641af0 6484 (license license:bsd-3)))
36ebf972
RW
6485
6486(define-public python2-pretend
6487 (package-with-python2 python-pretend))
aa759a51
RW
6488
6489(define-public python-cryptography-vectors
6490 (package
6491 (name "python-cryptography-vectors")
a6c47905 6492 (version "1.6")
aa759a51
RW
6493 (source
6494 (origin
6495 (method url-fetch)
9c509ca9 6496 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
6497 (sha256
6498 (base32
a6c47905 6499 "0xgn3yvlmv5rs92wgjj39qscr6s7mwbbsx7j683sfa6ijmyb1k01"))))
aa759a51 6500 (build-system python-build-system)
aa759a51 6501 (home-page "https://github.com/pyca/cryptography")
66e07664 6502 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
6503 (description
6504 "This package contains test vectors for the cryptography package.")
6505 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6506 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
6507
6508(define-public python2-cryptography-vectors
6509 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
6510
6511(define-public python-cryptography
6512 (package
6513 (name "python-cryptography")
a6c47905 6514 (version "1.6")
88b47cb0
RW
6515 (source
6516 (origin
6517 (method url-fetch)
9c509ca9 6518 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
6519 (sha256
6520 (base32
a6c47905 6521 "0gwvmz6w5ml0bjbgmdiscsv5i948lrjd381z7h9qkz6kr398c3ad"))))
88b47cb0 6522 (build-system python-build-system)
470613f9
LF
6523 (arguments
6524 `(#:phases
6525 (modify-phases %standard-phases
6526 (add-before 'check 'disable-failing-test
6527 (lambda _
6528 ;; This test is known to fail with OpenSSL >= 1.0.2i and older
6529 ;; versions of python-cryptography:
6530 ;; https://github.com/pyca/cryptography/issues/3196
6531 ;; TODO: Try re-enabling the test when upgrading
6532 ;; python-cryptography.
6533 (substitute* "tests/hazmat/backends/test_openssl.py"
6534 (("def test_numeric_string_x509_name_entry")
6535 "@pytest.mark.xfail\n def test_numeric_string_x509_name_entry"))
6536 #t)))))
88b47cb0
RW
6537 (inputs
6538 `(("openssl" ,openssl)))
6539 (propagated-inputs
6540 `(("python-cffi" ,python-cffi)
6541 ("python-six" ,python-six)
6542 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
6543 ("python-idna" ,python-idna)
6544 ("python-iso8601" ,python-iso8601)))
6545 (native-inputs
6546 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 6547 ("python-hypothesis" ,python-hypothesis)
88b47cb0 6548 ("python-pretend" ,python-pretend)
ce6c13ee
EF
6549 ("python-pyasn1" ,python-pyasn1)
6550 ("python-pyasn1-modules" ,python-pyasn1-modules)
912dcbad
MB
6551 ("python-pytz" ,python-pytz)
6552 ("python-pytest" ,python-pytest-2.9.2)))
88b47cb0
RW
6553 (home-page "https://github.com/pyca/cryptography")
6554 (synopsis "Cryptographic recipes and primitives for Python")
6555 (description
6556 "cryptography is a package which provides cryptographic recipes and
6557primitives to Python developers. It aims to be the “cryptographic standard
6558library” for Python. The package includes both high level recipes, and low
6559level interfaces to common cryptographic algorithms such as symmetric ciphers,
6560message digests and key derivation functions.")
6561 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6562 (license (list license:bsd-3 license:asl2.0))
519e2f4f 6563 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
6564
6565(define-public python2-cryptography
519e2f4f
LF
6566 (let ((crypto (package-with-python2
6567 (strip-python2-variant python-cryptography))))
88b47cb0
RW
6568 (package (inherit crypto)
6569 (propagated-inputs
6570 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
6571 ("python2-backport-ssl-match-hostname"
6572 ,python2-backport-ssl-match-hostname)
68f1cdec 6573 ("python2-enum34" ,python2-enum34)
88b47cb0 6574 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
6575
6576(define-public python-pyopenssl
6577 (package
6578 (name "python-pyopenssl")
61684de2 6579 (version "16.2.0")
5af999b8
RW
6580 (source
6581 (origin
6582 (method url-fetch)
eb68d268 6583 (uri (pypi-uri "pyOpenSSL" version))
5af999b8
RW
6584 (sha256
6585 (base32
61684de2 6586 "0vji4yrfshs15xpczbhzhasnjrwcarsqg87n98ixnyafnyxs6ybp"))))
5af999b8 6587 (build-system python-build-system)
5af999b8
RW
6588 (propagated-inputs
6589 `(("python-cryptography" ,python-cryptography)
6590 ("python-six" ,python-six)))
6591 (inputs
6592 `(("openssl" ,openssl)))
5af999b8
RW
6593 (home-page "https://github.com/pyca/pyopenssl")
6594 (synopsis "Python wrapper module around the OpenSSL library")
6595 (description
6596 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
6597library.")
3f641af0 6598 (license license:asl2.0)))
5af999b8
RW
6599
6600(define-public python2-pyopenssl
519e2f4f 6601 (package-with-python2 python-pyopenssl))
643725a1
CR
6602
6603(define-public python-pip
6604 (package
6605 (name "python-pip")
6fb54e3b 6606 (version "8.0.2")
643725a1
CR
6607 (source
6608 (origin
6609 (method url-fetch)
6fb54e3b 6610 (uri (pypi-uri "pip" version))
643725a1
CR
6611 (sha256
6612 (base32
6fb54e3b 6613 "08cm8d4228fj0qnrysy3qv1a6022zr3dcs25amd14lgxil6vvx26"))))
643725a1 6614 (build-system python-build-system)
05e2e4cf
HG
6615 (native-inputs
6616 `(;; Tests
6617 ("python-virtualenv" ,python-virtualenv)
643725a1
CR
6618 ("python-mock" ,python-mock)
6619 ("python-pytest" ,python-pytest)
6620 ("python-scripttest" ,python-scripttest)))
6621 (home-page "https://pip.pypa.io/")
6622 (synopsis
6623 "Package manager for Python software")
6624 (description
6625 "Pip is a package manager for Python software, that finds packages on the
6626Python Package Index (PyPI).")
6627 (license license:expat)))
6628
6629(define-public python2-pip
6630 (package-with-python2 python-pip))
d8c4998f
LC
6631
6632(define-public python-tlsh
6633 (package
6634 (name "python-tlsh")
99b00dc7 6635 (version "3.4.4")
d8c4998f
LC
6636 (home-page "https://github.com/trendmicro/tlsh")
6637 (source (origin
99b00dc7
EF
6638 (method url-fetch)
6639 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
6640 version ".tar.gz"))
d8c4998f
LC
6641 (sha256
6642 (base32
99b00dc7
EF
6643 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
6644 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
6645 (build-system cmake-build-system)
6646 (arguments
6647 '(#:out-of-source? #f
6648 #:phases (modify-phases %standard-phases
6649 (replace
6650 'install
6651 (lambda* (#:key outputs #:allow-other-keys)
6652 ;; Build and install the Python bindings. The underlying
6653 ;; C++ library is apparently not meant to be installed.
6654 (let ((out (assoc-ref outputs "out")))
6655 (with-directory-excursion "py_ext"
6656 (and (system* "python" "setup.py" "build")
6657 (system* "python" "setup.py" "install"
6658 (string-append "--prefix=" out))))))))))
6659 (inputs `(("python" ,python-wrapper))) ;for the bindings
6660 (synopsis "Fuzzy matching library for Python")
6661 (description
6662 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
6663Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
6664value which can be used for similarity comparisons. Similar objects have
6665similar hash values, which allows for the detection of similar objects by
6666comparing their hash values. The byte stream should have a sufficient amount
6667of complexity; for example, a byte stream of identical bytes will not generate
6668a hash value.")
3f641af0 6669 (license license:asl2.0)))
d8c4998f
LC
6670
6671(define-public python2-tlsh
6672 (package
6673 (inherit python-tlsh)
6674 (name "python2-tlsh")
6675 (inputs `(("python" ,python-2)))))
d96034ed 6676
67f66812
BW
6677(define-public python-termcolor
6678 (package
6679 (name "python-termcolor")
6680 (version "1.1.0")
6681 (source
6682 (origin
6683 (method url-fetch)
6684 (uri (pypi-uri "python-termcolor" version))
6685 (sha256
6686 (base32
6687 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
6688 (build-system python-build-system)
6689 (arguments
6690 ;; There are no tests.
6691 `(#:tests? #f))
6692 (home-page "http://pypi.python.org/pypi/termcolor")
6693 (synopsis "ANSII Color formatting for terminal output")
6694 (description
6695 "This package provides ANSII Color formatting for output in terminals.")
6696 (license license:expat)))
6697
6698(define-public python2-termcolor
6699 (package-with-python2 python-termcolor))
6700
d96034ed
LC
6701(define-public python-libarchive-c
6702 (package
6703 (name "python-libarchive-c")
03fd001c 6704 (version "2.2")
d96034ed
LC
6705 (source (origin
6706 (method url-fetch)
03fd001c 6707 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
6708 (sha256
6709 (base32
03fd001c 6710 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
6711 (build-system python-build-system)
6712 (arguments
6713 '(#:phases (modify-phases %standard-phases
6714 (add-before
6715 'build 'reference-libarchive
6716 (lambda* (#:key inputs #:allow-other-keys)
6717 ;; Retain the absolute file name of libarchive.so.
6718 (let ((libarchive (assoc-ref inputs "libarchive")))
6719 (substitute* "libarchive/ffi.py"
6720 (("find_library\\('archive'\\)")
6721 (string-append "'" libarchive
b41a05ce 6722 "/lib/libarchive.so'")))))))))
d96034ed 6723 (inputs
f3b98f4f 6724 `(("libarchive" ,libarchive)))
d96034ed
LC
6725 (home-page "https://github.com/Changaco/python-libarchive-c")
6726 (synopsis "Python interface to libarchive")
6727 (description
6728 "This package provides Python bindings to libarchive, a C library to
6729access possibly compressed archives in many different formats. It uses
6730Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 6731 (license license:lgpl2.0+)))
d96034ed
LC
6732
6733(define-public python2-libarchive-c
6734 (package-with-python2 python-libarchive-c))
5e1c9367
LC
6735
6736(define-public python-file
6737 (package
6738 (inherit file)
6739 (name "python-file")
7ffa5d4a
LF
6740 (source (origin
6741 (inherit (package-source file))
6742 ;; This patch should not be applied to python2-file.
6743 (patches (search-patches "python-file-double-encoding-bug.patch"))))
5e1c9367
LC
6744 (build-system python-build-system)
6745 (arguments
6746 '(#:tests? #f ;no tests
00bf74be 6747 #:configure-flags '("--single-version-externally-managed" "--root=/")
5e1c9367
LC
6748 #:phases (modify-phases %standard-phases
6749 (add-before 'build 'change-directory
6750 (lambda _
6751 (chdir "python")
6752 #t))
6753 (add-before 'build 'set-library-file-name
6754 (lambda* (#:key inputs #:allow-other-keys)
6755 (let ((file (assoc-ref inputs "file")))
6756 (substitute* "magic.py"
6757 (("find_library\\('magic'\\)")
6758 (string-append "'" file "/lib/libmagic.so'")))
6759 #t))))))
6760 (inputs `(("file" ,file)))
6761 (self-native-input? #f)
daeeea71
CM
6762 (synopsis "Python bindings to the libmagic file type guesser. Note that
6763this module and the python-magic module both provide a \"magic.py\" file;
6764these two modules, which are different and were developed separately, both
f210e944 6765serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
6766
6767(define-public python2-file
f210e944 6768 (package-with-python2 python-file))
85d4aeac
LC
6769
6770(define-public python-debian
6771 (package
6772 (name "python-debian")
6773 (version "0.1.23")
6774 (source
6775 (origin
6776 (method url-fetch)
6777 (uri (string-append
6778 "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
6779 version ".tar.gz"))
6780 (sha256
6781 (base32
6782 "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
6783 (build-system python-build-system)
f22efa01 6784 (propagated-inputs
85d4aeac 6785 `(("python-six" ,python-six)))
85d4aeac
LC
6786 (home-page "http://packages.debian.org/sid/python-debian")
6787 (synopsis "Debian package related modules")
6788 (description
5c7bdc9a
LC
6789 ;; XXX: Use @enumerate instead of @itemize to work around
6790 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
6791 "This package provides Python modules that abstract many formats of
6792Debian-related files, such as:
6793
5c7bdc9a 6794@enumerate
85d4aeac
LC
6795@item Debtags information;
6796@item @file{debian/changelog} files;
6797@item packages files, pdiffs;
6798@item control files of single or multiple RFC822-style paragraphs---e.g.
6799 @file{debian/control}, @file{.changes}, @file{.dsc};
6800@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
6801 contained files and meta-information.
5c7bdc9a 6802@end enumerate\n")
85d4aeac
LC
6803
6804 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 6805 (license license:gpl3+)))
85d4aeac
LC
6806
6807(define-public python2-debian
6808 (package-with-python2 python-debian))
816a6538 6809
2d321bb2
RW
6810(define-public python-nbformat
6811 (package
6812 (name "python-nbformat")
6813 (version "4.1.0")
6814 (source
6815 (origin
6816 (method url-fetch)
6817 (uri (pypi-uri "nbformat" version))
6818 (sha256
6819 (base32
6820 "0mq8iki3d4mnx7wy05phss7x98mds4fqydin8lcagidp1knw1xnv"))))
6821 (build-system python-build-system)
6822 (arguments `(#:tests? #f)) ; no test target
6823 (propagated-inputs
6824 `(("python-ipython-genutils" ,python-ipython-genutils)
6825 ("python-jsonschema" ,python-jsonschema)
6826 ("python-jupyter-core" ,python-jupyter-core)
6827 ("python-traitlets" ,python-traitlets)))
2d321bb2
RW
6828 (home-page "http://jupyter.org")
6829 (synopsis "Jupyter Notebook format")
6830 (description "This package provides the reference implementation of the
6831Jupyter Notebook format and Python APIs for working with notebooks.")
6832 (license license:bsd-3)))
6833
6834(define-public python2-nbformat
6835 (package-with-python2 python-nbformat))
6836
55436048
RW
6837(define-public python-bleach
6838 (package
6839 (name "python-bleach")
6840 (version "1.4.3")
6841 (source
6842 (origin
6843 (method url-fetch)
6844 (uri (pypi-uri "bleach" version))
6845 (sha256
6846 (base32
6847 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
6848 (build-system python-build-system)
6849 (propagated-inputs
6850 `(("python-html5lib" ,python-html5lib-0.9)
55436048
RW
6851 ("python-six" ,python-six)))
6852 (native-inputs
6853 `(("python-nose" ,python-nose)))
6854 (home-page "http://github.com/jsocol/bleach")
6855 (synopsis "Whitelist-based HTML-sanitizing tool")
6856 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
6857 (license license:asl2.0)))
6858
6859(define-public python2-bleach
6860 (package-with-python2 python-bleach))
6861
60590a3a
RW
6862(define-public python-entrypoints
6863 (package
6864 (name "python-entrypoints")
6865 (version "0.2.2")
6866 (source
6867 (origin
6868 (method url-fetch)
6869 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
6870 version ".tar.gz"))
6871 (file-name (string-append name "-" version ".tar.gz"))
6872 (sha256
6873 (base32
6874 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
6875 (build-system python-build-system)
6876 ;; The package does not come with a setup.py file, so we have to generate
6877 ;; one ourselves.
6878 (arguments
6879 `(#:tests? #f
6880 #:phases
6881 (modify-phases %standard-phases
6882 (add-after 'unpack 'create-setup.py
6883 (lambda _
6884 (call-with-output-file "setup.py"
6885 (lambda (port)
6886 (format port "\
6887from setuptools import setup
6888setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
6889" ,version))))))))
6890 (home-page "https://github.com/takluyver/entrypoints")
6891 (synopsis "Discover and load entry points from installed Python packages")
6892 (description "Entry points are a way for Python packages to advertise
6893objects with some common interface. The most common examples are
6894@code{console_scripts} entry points, which define shell commands by
6895identifying a Python function to run. The @code{entrypoints} module contains
6896functions to find and load entry points.")
6897 (license license:expat)))
6898
6899(define-public python2-entrypoints
6900 (package-with-python2 python-entrypoints))
6901
c60898a8
RW
6902(define-public python-nbconvert
6903 (package
6904 (name "python-nbconvert")
6905 (version "5.0.0b1")
6906 (source
6907 (origin
6908 (method url-fetch)
6909 (uri (pypi-uri "nbconvert" version))
6910 (sha256
6911 (base32
6912 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
6913 (build-system python-build-system)
6914 ;; The "bdist_egg" target is disabled by default, causing the installation
6915 ;; to fail.
6916 (arguments `(#:configure-flags (list "bdist_egg")))
6917 (propagated-inputs
6918 `(("python-bleach" ,python-bleach)
6919 ("python-entrypoints" ,python-entrypoints)
6920 ("python-jinja2" ,python-jinja2)
6921 ("python-jupyter-core" ,python-jupyter-core)
6922 ("python-mistune" ,python-mistune)
6923 ("python-nbformat" ,python-nbformat)
6924 ("python-pygments" ,python-pygments)
c60898a8
RW
6925 ("python-traitlets" ,python-traitlets)))
6926 (home-page "http://jupyter.org")
6927 (synopsis "Converting Jupyter Notebooks")
6928 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
6929notebooks to various other formats via Jinja templates. It allows you to
6930convert an @code{.ipynb} notebook file into various static formats including:
6931
6932@enumerate
6933@item HTML
6934@item LaTeX
6935@item PDF
6936@item Reveal JS
6937@item Markdown (md)
6938@item ReStructured Text (rst)
6939@item executable script
6940@end enumerate\n")
6941 (license license:bsd-3)))
6942
6943(define-public python2-nbconvert
6944 (package-with-python2 python-nbconvert))
6945
a0d62280
RW
6946(define-public python-notebook
6947 (package
6948 (name "python-notebook")
6949 (version "4.2.3")
6950 (source (origin
6951 (method url-fetch)
6952 (uri (pypi-uri "notebook" version))
6953 (sha256
6954 (base32
6955 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
6956 (build-system python-build-system)
6957 (arguments
6958 `(#:phases
6959 (modify-phases %standard-phases
6960 (replace 'check
6961 (lambda _
6962 ;; HOME must be set for tests
6963 (setenv "HOME" "/tmp")
6964 (zero? (system* "nosetests")))))))
6965 (propagated-inputs
6966 `(("python-jupyter-core" ,python-jupyter-core)
6967 ("python-nbformat" ,python-nbformat)
6968 ("python-nbconvert" ,python-nbconvert)
6969 ("python-ipython" ,python-ipython)))
6970 (native-inputs
6971 `(("python-nose" ,python-nose)
6972 ("python-sphinx" ,python-sphinx)
6973 ("python-requests" ,python-requests)))
6974 (home-page "http://jupyter.org/")
6975 (synopsis "Web-based notebook environment for interactive computing")
6976 (description
6977 "The Jupyter HTML notebook is a web-based notebook environment for
6978interactive computing.")
3a735ecf 6979 (properties `((python2-variant . ,(delay python2-notebook))))
a0d62280
RW
6980 (license license:bsd-3)))
6981
6982(define-public python2-notebook
3a735ecf
HG
6983 (let ((base (package-with-python2
6984 (strip-python2-variant python-notebook))))
6985 (package (inherit base)
6986 (native-inputs
6987 `(("python2-mock" ,python2-mock)
6988 ,@(package-native-inputs base)))
6989 (arguments
6990 (substitute-keyword-arguments (package-arguments base)
6991 ((#:phases phases)
6992 `(modify-phases ,phases
6993 (add-before 'check 'disable-test-case
6994 ;; The test requires network access to localhost. Curiously it
6995 ;; fails with Python 2 only. Simply make the test-case return
6996 ;; immediately.
6997 (lambda _
6998 (substitute*
6999 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
7000 (("formats = self.nbconvert_api") "return #")))))))))))
a0d62280 7001
d55724ed
RW
7002(define-public python-widgetsnbextension
7003 (package
7004 (name "python-widgetsnbextension")
7005 (version "1.2.6")
7006 (source
7007 (origin
7008 (method url-fetch)
7009 (uri (pypi-uri "widgetsnbextension" version))
7010 (sha256
7011 (base32
7012 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
7013 (build-system python-build-system)
7014 (propagated-inputs
7015 `(("python-notebook" ,python-notebook)))
7016 (native-inputs
f3b98f4f 7017 `(("python-nose" ,python-nose)))
d55724ed
RW
7018 (home-page "http://ipython.org")
7019 (synopsis "IPython HTML widgets for Jupyter")
7020 (description "This package provides interactive HTML widgets for Jupyter
7021notebooks.")
7022 (license license:bsd-3)))
7023
7024(define-public python2-widgetsnbextension
7025 (package-with-python2 python-widgetsnbextension))
7026
4fe2e344
RW
7027(define-public python-ipywidgets
7028 (package
7029 (name "python-ipywidgets")
7030 (version "5.2.2")
7031 (source
7032 (origin
7033 (method url-fetch)
7034 (uri (pypi-uri "ipywidgets" version))
7035 (sha256
7036 (base32
7037 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
7038 (build-system python-build-system)
7039 ;; FIXME: it's not clear how to run the tests.
7040 (arguments `(#:tests? #f))
7041 (propagated-inputs
7042 `(("python-ipykernel" ,python-ipykernel)
7043 ("python-ipython" ,python-ipython)
4fe2e344
RW
7044 ("python-traitlets" ,python-traitlets)
7045 ("python-widgetsnbextension" ,python-widgetsnbextension)))
7046 (home-page "http://ipython.org")
7047 (synopsis "IPython HTML widgets for Jupyter")
7048 (description "Ipywidgets are interactive HTML widgets for Jupyter
7049notebooks and the IPython kernel. Notebooks come alive when interactive
7050widgets are used. Users gain control of their data and can visualize changes
7051in the data.")
7052 (license license:bsd-3)))
7053
7054(define-public python2-ipywidgets
7055 (package-with-python2 python-ipywidgets))
7056
8ceebf8f
RW
7057(define-public python-jupyter-console
7058 (package
7059 (name "python-jupyter-console")
7060 (version "5.0.0")
7061 (source
7062 (origin
7063 (method url-fetch)
7064 (uri (pypi-uri "jupyter_console" version))
7065 (sha256
7066 (base32
7067 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
7068 (build-system python-build-system)
7069 ;; FIXME: it's not clear how to run the tests.
7070 (arguments `(#:tests? #f))
7071 (propagated-inputs
7072 `(("python-ipykernel" ,python-ipykernel)
7073 ("python-ipython" ,python-ipython)
7074 ("python-jupyter-client" ,python-jupyter-client)
7075 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 7076 ("python-pygments" ,python-pygments)))
8ceebf8f
RW
7077 (home-page "https://jupyter.org")
7078 (synopsis "Jupyter terminal console")
7079 (description "This package provides a terminal-based console frontend for
7080Jupyter kernels. It also allows for console-based interaction with non-Python
7081Jupyter kernels such as IJulia and IRKernel.")
7082 (license license:bsd-3)))
7083
7084(define-public python2-jupyter-console
7085 (package-with-python2 python-jupyter-console))
7086
c27ae827
RW
7087(define-public jupyter
7088 (package
7089 (name "jupyter")
7090 (version "1.0.0")
7091 (source
7092 (origin
7093 (method url-fetch)
7094 (uri (pypi-uri "jupyter" version))
7095 (sha256
7096 (base32
7097 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
7098 (build-system python-build-system)
7099 ;; FIXME: it's not clear how to run the tests.
7100 (arguments `(#:tests? #f))
7101 (propagated-inputs
7102 `(("python-ipykernel" ,python-ipykernel)
7103 ("python-ipywidgets" ,python-ipywidgets)
7104 ("python-jupyter-console" ,python-jupyter-console)
7105 ("python-nbconvert" ,python-nbconvert)
f3b98f4f 7106 ("python-notebook" ,python-notebook)))
c27ae827
RW
7107 (home-page "http://jupyter.org")
7108 (synopsis "Web application for interactive documents")
7109 (description
7110 "The Jupyter Notebook is a web application that allows you to create and
7111share documents that contain live code, equations, visualizations and
7112explanatory text. Uses include: data cleaning and transformation, numerical
7113simulation, statistical modeling, machine learning and much more.")
7114 (license license:bsd-3)))
7115
816a6538
LC
7116(define-public python-chardet
7117 (package
7118 (name "python-chardet")
7119 (version "2.3.0")
7120 (source
7121 (origin
7122 (method url-fetch)
7123 (uri (string-append
7124 "https://pypi.python.org/packages/source/c/chardet/chardet-"
7125 version
7126 ".tar.gz"))
7127 (sha256
7128 (base32
7129 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
7130 (build-system python-build-system)
816a6538
LC
7131 (home-page "https://github.com/chardet/chardet")
7132 (synopsis "Universal encoding detector for Python 2 and 3")
7133 (description
7134 "This package provides @code{chardet}, a Python module that can
7135automatically detect a wide range of file encodings.")
3f641af0 7136 (license license:lgpl2.1+)))
816a6538
LC
7137
7138(define-public python2-chardet
7139 (package-with-python2 python-chardet))
2fc5f186 7140
1872f1bb
KM
7141(define-public python-docopt
7142 (package
7143 (name "python-docopt")
7144 (version "0.6.2")
7145 (source
7146 (origin
7147 (method url-fetch)
7148 ;; The release on PyPI does not include tests.
7149 (uri (string-append
7150 "https://github.com/docopt/docopt/archive/"
7151 version ".tar.gz"))
7152 (file-name (string-append name "-" version ".tar.gz"))
7153 (sha256
7154 (base32
7155 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
7156 (build-system python-build-system)
7157 (native-inputs
f3b98f4f 7158 `(("python-pytest" ,python-pytest)))
1872f1bb
KM
7159 (arguments
7160 `(#:phases (alist-replace
7161 'check
7162 (lambda _ (zero? (system* "py.test")))
7163 %standard-phases)))
7164 (home-page "http://docopt.org")
7165 (synopsis "Command-line interface description language for Python")
7166 (description "This library allows the user to define a command-line
7167interface from a program's help message rather than specifying it
7168programatically with command-line parsers like @code{getopt} and
7169@code{argparse}.")
7170 (license license:expat)))
7171
7172(define-public python2-docopt
7173 (package-with-python2 python-docopt))
7174
2fc5f186
LF
7175(define-public python-zope-event
7176 (package
7177 (name "python-zope-event")
7178 (version "4.1.0")
7179 (source
7180 (origin
7181 (method url-fetch)
7182 (uri (string-append "https://pypi.python.org/packages/source/z"
7183 "/zope.event/zope.event-" version ".tar.gz"))
7184 (sha256
7185 (base32
7186 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
7187 (build-system python-build-system)
2fc5f186
LF
7188 (home-page "http://pypi.python.org/pypi/zope.event")
7189 (synopsis "Event publishing system for Python")
7190 (description "Zope.event provides an event publishing API, intended for
7191use by applications which are unaware of any subscribers to their events. It
7192is a simple event-dispatching system on which more sophisticated event
7193dispatching systems can be built.")
3f641af0 7194 (license license:zpl2.1)))
2fc5f186
LF
7195
7196(define-public python2-zope-event
7197 (package-with-python2 python-zope-event))
97abe268
LF
7198
7199(define-public python-zope-interface
7200 (package
7201 (name "python-zope-interface")
7202 (version "4.1.3")
7203 (source
7204 (origin
7205 (method url-fetch)
7206 (uri (string-append "https://pypi.python.org/packages/source/z"
7207 "/zope.interface/zope.interface-" version ".tar.gz"))
7208 (sha256
7209 (base32
7210 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
7211 (build-system python-build-system)
38d480a8 7212 (native-inputs
97abe268
LF
7213 `(("python-zope-event" ,python-zope-event)))
7214 (home-page "https://github.com/zopefoundation/zope.interface")
7215 (synopsis "Python implementation of the \"design by contract\"
7216methodology")
7217 (description "Zope.interface provides an implementation of \"object
7218interfaces\" for Python. Interfaces are a mechanism for labeling objects as
7219conforming to a given API or contract.")
3f641af0 7220 (license license:zpl2.1)))
97abe268
LF
7221
7222(define-public python2-zope-interface
7223 (package-with-python2 python-zope-interface))
81f2373c
LF
7224
7225(define-public python-zope-exceptions
7226 (package
7227 (name "python-zope-exceptions")
7228 (version "4.0.8")
7229 (source
7230 (origin
7231 (method url-fetch)
7232 (uri (string-append "https://pypi.python.org/packages/source/z"
7233 "/zope.exceptions/zope.exceptions-"
7234 version ".tar.gz"))
7235 (sha256
7236 (base32
7237 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
7238 (build-system python-build-system)
7239 (arguments
7240 '(#:tests? #f)) ; circular dependency with zope.testrunner
7241 (propagated-inputs
7242 `(("python-zope-interface" ,python-zope-interface)))
7243 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
7244 (synopsis "Zope exceptions")
7245 (description "Zope.exceptions provides general-purpose exception types
7246that have uses outside of the Zope framework.")
3f641af0 7247 (license license:zpl2.1)))
81f2373c
LF
7248
7249(define-public python2-zope-exceptions
7250 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
7251
7252(define-public python-zope-testing
7253 (package
7254 (name "python-zope-testing")
7255 (version "4.5.0")
7256 (source
7257 (origin
7258 (method url-fetch)
7259 (uri (string-append "https://pypi.python.org/packages/source/z"
7260 "/zope.testing/zope.testing-" version ".tar.gz"))
7261 (sha256
7262 (base32
b02f7a21
HG
7263 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
7264 (modules '((guix build utils)))
7265 (snippet
7266 '(begin
7267 ;; Remove pre-compiled .pyc files backup files from source.
7268 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
7269 #t))))
900e3c0e
LF
7270 (build-system python-build-system)
7271 (native-inputs
7272 `(("python-zope-exceptions" ,python-zope-exceptions)))
7273 (propagated-inputs
7274 `(("python-zope-interface" ,python-zope-interface)))
7275 (home-page "http://pypi.python.org/pypi/zope.testing")
7276 (synopsis "Zope testing helpers")
7277 (description "Zope.testing provides a number of testing utilities for HTML
7278forms, HTTP servers, regular expressions, and more.")
3f641af0 7279 (license license:zpl2.1)))
900e3c0e
LF
7280
7281(define-public python2-zope-testing
7282 (package-with-python2 python-zope-testing))
01614c4f
LF
7283
7284(define-public python-zope-testrunner
7285 (package
7286 (name "python-zope-testrunner")
7287 (version "4.4.9")
7288 (source
7289 (origin
7290 (method url-fetch)
7291 (uri (string-append "https://pypi.python.org/packages/source/z"
7292 "/zope.testrunner/zope.testrunner-"
7293 version ".zip"))
7294 (sha256
7295 (base32
7296 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
7297 (build-system python-build-system)
7298 (native-inputs
7299 `(("python-six" ,python-six)
e408ffc3 7300 ;("python-zope-interface" ,python-zope-interface)
01614c4f
LF
7301 ("python-zope-exceptions" ,python-zope-exceptions)
7302 ("python-zope-testing" ,python-zope-testing)
7303 ("unzip" ,unzip)))
7304 (propagated-inputs
7305 `(("python-zope-interface" ,python-zope-interface)))
7306 (home-page "http://pypi.python.org/pypi/zope.testrunner")
7307 (synopsis "Zope testrunner script")
7308 (description "Zope.testrunner provides a script for running Python
7309tests.")
3f641af0 7310 (license license:zpl2.1)))
01614c4f
LF
7311
7312(define-public python2-zope-testrunner
7313 (let ((base (package-with-python2 python-zope-testrunner)))
7314 (package
7315 (inherit base)
7316 (native-inputs
7317 (append (package-native-inputs base)
7318 `(("python2-subunit" ,python2-subunit)
7319 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
7320
7321(define-public python-zope-i18nmessageid
7322 (package
7323 (name "python-zope-i18nmessageid")
7324 (version "4.0.3")
7325 (source
7326 (origin
7327 (method url-fetch)
7328 (uri (string-append
7329 "https://pypi.python.org/packages/source/z"
7330 "/zope.i18nmessageid/zope.i18nmessageid-"
7331 version ".tar.gz"))
7332 (sha256
7333 (base32
7334 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
7335 (build-system python-build-system)
6a5c710c
LF
7336 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
7337 (synopsis "Message identifiers for internationalization")
7338 (description "Zope.i18nmessageid provides facilities for declaring
7339internationalized messages within program source text.")
3f641af0 7340 (license license:zpl2.1)))
6a5c710c
LF
7341
7342(define-public python2-zope-i18nmessageid
7343 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
7344
7345(define-public python-zope-schema
7346 (package
7347 (name "python-zope-schema")
7348 (version "4.4.2")
7349 (source
7350 (origin
7351 (method url-fetch)
7352 (uri (string-append "https://pypi.python.org/packages/source/z"
7353 "/zope.schema/zope.schema-" version ".tar.gz"))
7354 (sha256
7355 (base32
7356 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
7357 (build-system python-build-system)
7358 (propagated-inputs
7359 `(("python-zope-event" ,python-zope-event)
2b9e4bea 7360 ("python-zope-exceptions", python-zope-exceptions)
71fb09f3
LF
7361 ("python-zope-interface" ,python-zope-interface)))
7362 (native-inputs
47f77210
HG
7363 `(("python-zope-testing" ,python-zope-testing)
7364 ("python-coverage" ,python-coverage)
7365 ("python-nose" ,python-nose)))
71fb09f3
LF
7366 (home-page "http://pypi.python.org/pypi/zope.schema")
7367 (synopsis "Zope data schemas")
7368 (description "Zope.scheme provides extensions to zope.interface for
7369defining data schemas.")
3f641af0 7370 (license license:zpl2.1)))
71fb09f3
LF
7371
7372(define-public python2-zope-schema
7373 (package-with-python2 python-zope-schema))
fbac9b17
LF
7374
7375(define-public python-zope-configuration
7376 (package
7377 (name "python-zope-configuration")
7378 (version "4.0.3")
7379 (source (origin
7380 (method url-fetch)
7381 (uri (string-append "https://pypi.python.org/packages/source/z"
7382 "/zope.configuration/zope.configuration-"
7383 version ".tar.gz"))
7384 (sha256
7385 (base32
7386 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
7387 (build-system python-build-system)
7388 (propagated-inputs
7389 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7390 ("python-zope-schema" ,python-zope-schema)))
7391 (home-page "http://pypi.python.org/pypi/zope.configuration")
7392 (synopsis "Zope Configuration Markup Language")
7393 (description "Zope.configuration implements ZCML, the Zope Configuration
7394Markup Language.")
3f641af0 7395 (license license:zpl2.1)))
fbac9b17
LF
7396
7397(define-public python2-zope-configuration
7398 (package-with-python2 python-zope-configuration))
2ad52086
LF
7399
7400(define-public python-zope-proxy
7401 (package
7402 (name "python-zope-proxy")
7403 (version "4.1.6")
7404 (source
7405 (origin
7406 (method url-fetch)
7407 (uri (string-append "https://pypi.python.org/packages/source/z"
7408 "/zope.proxy/zope.proxy-" version ".tar.gz"))
7409 (sha256
7410 (base32
7411 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
7412 (build-system python-build-system)
7413 (propagated-inputs
7414 `(("python-zope-interface" ,python-zope-interface)))
7415 (home-page "http://pypi.python.org/pypi/zope.proxy")
7416 (synopsis "Generic, transparent proxies")
7417 (description "Zope.proxy provides generic, transparent proxies for Python.
7418Proxies are special objects which serve as mostly-transparent wrappers around
7419another object, intervening in the apparent behavior of the wrapped object
7420only when necessary to apply the policy (e.g., access checking, location
7421brokering, etc.) for which the proxy is responsible.")
3f641af0 7422 (license license:zpl2.1)))
2ad52086
LF
7423
7424(define-public python2-zope-proxy
7425 (package-with-python2 python-zope-proxy))
f404b5ea
LF
7426
7427(define-public python-zope-location
7428 (package
7429 (name "python-zope-location")
7430 (version "4.0.3")
7431 (source
7432 (origin
7433 (method url-fetch)
7434 (uri (string-append "https://pypi.python.org/packages/source/z"
7435 "/zope.location/zope.location-" version ".tar.gz"))
7436 (sha256
7437 (base32
7438 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
7439 (build-system python-build-system)
d27f176a 7440 (propagated-inputs
f404b5ea
LF
7441 `(("python-zope-proxy" ,python-zope-proxy)
7442 ("python-zope-schema" ,python-zope-schema)))
7443 (home-page "http://pypi.python.org/pypi/zope.location/")
7444 (synopsis "Zope location library")
7445 (description "Zope.location implements the concept of \"locations\" in
7446Zope3, which are are special objects that have a structural location.")
3f641af0 7447 (license license:zpl2.1)))
f404b5ea
LF
7448
7449(define-public python2-zope-location
7450 (package-with-python2 python-zope-location))
d4b77f36
LF
7451
7452(define-public python-zope-security
7453 (package
7454 (name "python-zope-security")
7455 (version "4.0.3")
7456 (source
7457 (origin
7458 (method url-fetch)
7459 (uri (string-append "https://pypi.python.org/packages/source/z"
7460 "/zope.security/zope.security-" version ".tar.gz"))
7461 (sha256
7462 (base32
7463 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
7464 (build-system python-build-system)
7465 (propagated-inputs
7466 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
d4b77f36 7467 ("python-zope-proxy" ,python-zope-proxy)
fd8e23b7
HG
7468 ("python-zope-schema" ,python-zope-schema)))
7469 (native-inputs
7470 `(("python-zope-component" ,python-zope-component)
7471 ("python-zope-configuration" ,python-zope-configuration)
7472 ("python-zope-location" ,python-zope-location)
d4b77f36
LF
7473 ("python-zope-testrunner" ,python-zope-testrunner)
7474 ("python-zope-testing" ,python-zope-testing)))
7475 (home-page "http://pypi.python.org/pypi/zope.security")
7476 (synopsis "Zope security framework")
7477 (description "Zope.security provides a generic mechanism to implement
7478security policies on Python objects.")
3f641af0 7479 (license license:zpl2.1)))
d4b77f36
LF
7480
7481(define-public python2-zope-security
04417662
EF
7482 (let ((zope-security (package-with-python2 python-zope-security)))
7483 (package (inherit zope-security)
7484 (propagated-inputs
7485 `(("python2-zope-testrunner" ,python2-zope-testrunner)
7486 ,@(alist-delete
7487 "python-zope-testrunner"
7488 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
7489
7490(define-public python-zope-component
7491 (package
7492 (name "python-zope-component")
7493 (version "4.2.2")
7494 (source
7495 (origin
7496 (method url-fetch)
7497 (uri (string-append "https://pypi.python.org/packages/source/z"
7498 "/zope.component/zope.component-" version ".tar.gz"))
7499 (sha256
7500 (base32
7501 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
7502 (build-system python-build-system)
7503 (arguments
7504 ;; Skip tests due to circular dependency with python-zope-security.
7505 '(#:tests? #f))
7506 (native-inputs
7507 `(("python-zope-testing" ,python-zope-testing)))
7508 (propagated-inputs
7509 `(("python-zope-event" ,python-zope-event)
7510 ("python-zope-interface" ,python-zope-interface)
7511 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7512 ("python-zope-configuration" ,python-zope-configuration)))
7513 (home-page "https://github.com/zopefoundation/zope.component")
7514 (synopsis "Zope Component Architecture")
7515 (description "Zope.component represents the core of the Zope Component
7516Architecture. Together with the zope.interface package, it provides
7517facilities for defining, registering and looking up components.")
3f641af0 7518 (license license:zpl2.1)))
a6b61b27
LF
7519
7520(define-public python2-zope-component
7521 (package-with-python2 python-zope-component))
3859ac12 7522
1ae44b80 7523(define-public python-pythondialog
b5f218be 7524 (package
1ae44b80 7525 (name "python-pythondialog")
42c4b246 7526 (version "3.4.0")
b5f218be
LF
7527 (source
7528 (origin
7529 (method url-fetch)
1ae44b80 7530 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
7531 (sha256
7532 (base32
1ae44b80 7533 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
7534 (build-system python-build-system)
7535 (arguments
7536 `(#:phases
7537 (modify-phases %standard-phases
7538 (add-after 'unpack 'patch-path
7539 (lambda* (#:key inputs #:allow-other-keys)
7540 (let* ((dialog (assoc-ref inputs "dialog")))
7541 ;; Since this library really wants to grovel the search path, we
7542 ;; must hardcode dialog's store path into it.
7543 (substitute* "dialog.py"
7544 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
7545 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
7546 #t))))
b5f218be
LF
7547 #:tests? #f)) ; no test suite
7548 (propagated-inputs
7549 `(("dialog" ,dialog)))
7550 (home-page "http://pythondialog.sourceforge.net/")
7551 (synopsis "Python interface to the UNIX dialog utility")
7552 (description "A Python wrapper for the dialog utility. Its purpose is to
7553provide an easy to use, pythonic and comprehensive Python interface to dialog.
7554This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 7555 (license license:lgpl2.1)
1ae44b80
LF
7556 (properties `((python2-variant . ,(delay python2-pythondialog))))))
7557
7558(define-public python2-pythondialog
7559 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
7560 (package
7561 (inherit base)
7562 (version (package-version python-pythondialog))
7563 (source (origin
7564 (method url-fetch)
7565 (uri (pypi-uri "python2-pythondialog" version))
7566 (sha256
7567 (base32
7568 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 7569
3859ac12
LF
7570(define-public python-pyrfc3339
7571 (package
7572 (name "python-pyrfc3339")
d9aa097b 7573 (version "1.0")
3859ac12
LF
7574 (source
7575 (origin
7576 (method url-fetch)
d9aa097b 7577 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
7578 (sha256
7579 (base32
d9aa097b 7580 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
7581 (build-system python-build-system)
7582 (propagated-inputs
7583 `(("python-pytz" ,python-pytz)))
7584 (native-inputs
f3b98f4f 7585 `(("python-nose" ,python-nose)))
3859ac12
LF
7586 (home-page "https://github.com/kurtraschke/pyRFC3339")
7587 (synopsis "Python timestamp library")
7588 (description "Python library for generating and parsing RFC 3339-compliant
7589timestamps.")
7590 (license license:expat)))
7591
7592(define-public python2-pyrfc3339
7593 (package-with-python2 python-pyrfc3339))
5eea2005
LF
7594
7595(define-public python-werkzeug
7596 (package
7597 (name "python-werkzeug")
0580e383 7598 (version "0.11.11")
5eea2005
LF
7599 (source
7600 (origin
7601 (method url-fetch)
4b47cbfa 7602 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
7603 (sha256
7604 (base32
0580e383 7605 "1rgpq8a2qv26d75v9j3b074inirlyy6y4b5x4rxblp202jy4cb77"))))
5eea2005
LF
7606 (build-system python-build-system)
7607 (native-inputs
7608 `(("python-pytest" ,python-pytest)))
7609 (home-page "http://werkzeug.pocoo.org/")
7610 (synopsis "Utilities for WSGI applications")
7611 (description "One of the most advanced WSGI utility modules. It includes a
7612powerful debugger, full-featured request and response objects, HTTP utilities to
7613handle entity tags, cache control headers, HTTP dates, cookie handling, file
7614uploads, a powerful URL routing system and a bunch of community-contributed
7615addon modules.")
3f641af0 7616 (license license:x11)))
5eea2005
LF
7617
7618(define-public python2-werkzeug
7619 (package-with-python2 python-werkzeug))
99fffa8a
LF
7620
7621(define-public python-configobj
7622 (package
7623 (name "python-configobj")
7624 (version "5.0.6")
7625 (source (origin
7626 (method url-fetch)
7627 (uri (string-append
7628 "https://pypi.python.org/packages/source/c/configobj/"
7629 "configobj-" version ".tar.gz"))
7630 (sha256
7631 (base32
7632 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
7633 ;; Patch setup.py so it looks for python-setuptools, which is
7634 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 7635 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a 7636 (build-system python-build-system)
861f70c9 7637 (propagated-inputs
f3b98f4f 7638 `(("python-six" ,python-six)))
99fffa8a
LF
7639 (synopsis "Config file reading, writing and validation")
7640 (description "ConfigObj is a simple but powerful config file reader and
7641writer: an ini file round tripper. Its main feature is that it is very easy to
7642use, with a straightforward programmer’s interface and a simple syntax for
7643config files.")
7644 (home-page "https://github.com/DiffSK/configobj")
3f641af0 7645 (license license:bsd-3)))
99fffa8a
LF
7646
7647(define-public python2-configobj
7648 (package-with-python2 python-configobj))
79e8a291
LF
7649
7650(define-public python-configargparse
7651 (package
7652 (name "python-configargparse")
7653 (version "0.10.0")
7654 (source (origin
7655 (method url-fetch)
7656 (uri (string-append
7657 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
7658 "ConfigArgParse-" version ".tar.gz"))
7659 (sha256
7660 (base32
7661 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
7662 (build-system python-build-system)
7663 (arguments
7664 ;; FIXME: Bug in test suite filed upstream:
7665 ;; https://github.com/bw2/ConfigArgParse/issues/32
7666 '(#:tests? #f))
7667 (synopsis "Replacement for argparse")
7668 (description "A drop-in replacement for argparse that allows options to also
7669be set via config files and/or environment variables.")
7670 (home-page "https://github.com/bw2/ConfigArgParse")
7671 (license license:expat)))
7672
7673(define-public python2-configargparse
7674 (package-with-python2 python-configargparse))
ab41f979
LF
7675
7676(define-public python-ndg-httpsclient
7677 (package
7678 (name "python-ndg-httpsclient")
7679 (version "0.4.0")
7680 (source (origin
7681 (method url-fetch)
7682 (uri (string-append
7683 "https://pypi.python.org/packages/source/n/ndg-httpsclient/"
7684 "ndg_httpsclient-" version ".tar.gz"))
7685 (sha256
7686 (base32
7687 "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8"))))
7688 (build-system python-build-system)
a39cc016
LF
7689 (arguments
7690 '(;; The tests appear to require networking.
7691 #:tests? #f))
ab41f979
LF
7692 (propagated-inputs
7693 `(("python-pyopenssl" ,python-pyopenssl)))
7694 (synopsis "HTTPS support for Python's httplib and urllib2")
7695 (description "This is a HTTPS client implementation for httplib and urllib2
7696based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
7697over the default provided with Python and importantly enables full verification
7698of the SSL peer.")
7699 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 7700 (license license:bsd-3)))
ab41f979
LF
7701
7702;; python2-openssl requires special care, so package-with-python2 is
7703;; insufficient.
7704(define-public python2-ndg-httpsclient
7705 (package (inherit python-ndg-httpsclient)
7706 (name "python2-ndg-httpsclient")
7707 (arguments `(#:python ,python-2))
7708 (propagated-inputs
7709 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
7710
7711(define-public python-contextlib2
7712 (package
7713 (name "python-contextlib2")
7714 (version "0.4.0")
7715 (source
7716 (origin
7717 (method url-fetch)
7718 (uri (pypi-uri "contextlib2" version))
7719 (sha256
7720 (base32
7721 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
7722 (build-system python-build-system)
7723 (arguments
7724 `(#:phases
7725 (modify-phases %standard-phases
7726 (replace 'check
7727 (lambda _ (zero?
7728 (system*
b3546174 7729 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
7730 (home-page "http://contextlib2.readthedocs.org/")
7731 (synopsis "Tools for decorators and context managers")
7732 (description "This module is primarily a backport of the Python
77333.2 contextlib to earlier Python versions. Like contextlib, it
7734provides utilities for common tasks involving decorators and context
7735managers. It also contains additional features that are not part of
7736the standard library.")
3f641af0 7737 (license license:psfl)))
03f964a5
CM
7738
7739(define-public python2-contextlib2
7740 (package-with-python2 python-contextlib2))
210bf497
DT
7741
7742(define-public python-texttable
7743 (package
7744 (name "python-texttable")
7745 (version "0.8.4")
7746 (source
7747 (origin
7748 (method url-fetch)
7749 (uri (pypi-uri "texttable" version))
7750 (sha256
7751 (base32
7752 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
7753 (build-system python-build-system)
7754 (arguments '(#:tests? #f)) ; no tests
7755 (home-page "https://github.com/foutaise/texttable/")
7756 (synopsis "Python module for creating simple ASCII tables")
7757 (description "Texttable is a Python module for creating simple ASCII
7758tables.")
3f641af0 7759 (license license:lgpl2.1+)))
210bf497
DT
7760
7761(define-public python2-texttable
7762 (package-with-python2 python-texttable))
67c52bb3
DT
7763
7764(define-public python-websocket-client
7765 (package
7766 (name "python-websocket-client")
6b810897 7767 (version "0.37.0")
67c52bb3
DT
7768 (source
7769 (origin
7770 (method url-fetch)
6b810897 7771 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
7772 (sha256
7773 (base32
6b810897 7774 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3 7775 (build-system python-build-system)
a5333f7c
HG
7776 (propagated-inputs
7777 `(("python-six" ,python-six)))
67c52bb3
DT
7778 (home-page "https://github.com/liris/websocket-client")
7779 (synopsis "WebSocket client for Python")
7780 (description "The Websocket-client module provides the low level APIs for
7781WebSocket usage in Python programs.")
3f641af0 7782 (license license:lgpl2.1+)))
67c52bb3
DT
7783
7784(define-public python2-websocket-client
7785 (package-with-python2 python-websocket-client))
5c6eea2a
LF
7786
7787(define-public python-atomicwrites
7788 (package
7789 (name "python-atomicwrites")
4e92d76a 7790 (version "1.1.0")
5c6eea2a
LF
7791 (source (origin
7792 (method url-fetch)
7793 (uri (pypi-uri "atomicwrites" version))
7794 (sha256
7795 (base32
4e92d76a 7796 "1s01dci8arsl9d9vr5nz1fk9znldp1z3l4yl43f0c27z12b8yxl0"))))
5c6eea2a
LF
7797 (build-system python-build-system)
7798 (synopsis "Atomic file writes in Python")
7799 (description "Library for atomic file writes using platform dependent tools
8f65585b 7800for atomic file system operations.")
5c6eea2a 7801 (home-page "https://github.com/untitaker/python-atomicwrites")
f210e944 7802 (license license:expat)))
9bb6d184
LF
7803
7804(define-public python2-atomicwrites
f210e944 7805 (package-with-python2 python-atomicwrites))
561bb3cb
LF
7806
7807(define-public python-requests-toolbelt
7808 (package
7809 (name "python-requests-toolbelt")
c02af1c8 7810 (version "0.6.2")
561bb3cb
LF
7811 (source (origin
7812 (method url-fetch)
c02af1c8
LF
7813 (uri (string-append
7814 "https://pypi.python.org/packages/"
7815 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
7816 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
7817 (sha256
7818 (base32
c02af1c8 7819 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb 7820 (build-system python-build-system)
759aadd4
LF
7821 (native-inputs
7822 `(("python-betamax" ,python-betamax)
7823 ("python-mock" ,python-mock)
7824 ("python-pytest" ,python-pytest)))
561bb3cb
LF
7825 (propagated-inputs
7826 `(("python-requests" ,python-requests)))
7827 (synopsis "Extensions to python-requests")
7828 (description "This is a toolbelt of useful classes and functions to be used
7829with python-requests.")
7830 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 7831 (license license:asl2.0)))
d1deb90b
LF
7832
7833(define-public python-click-threading
7834 (package
7835 (name "python-click-threading")
3d2e0dbc 7836 (version "0.2.0")
d1deb90b
LF
7837 (source (origin
7838 (method url-fetch)
3d2e0dbc
LF
7839 (uri (string-append
7840 "https://pypi.python.org/packages/"
7841 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
7842 "click-threading-" version ".tar.gz"))
d1deb90b
LF
7843 (sha256
7844 (base32
3d2e0dbc 7845 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
7846 (build-system python-build-system)
7847 (propagated-inputs
7848 `(("python-click" ,python-click)))
7849 (synopsis "Utilities for multithreading in Click")
7850 (description "This package provides utilities for multithreading in Click
7851applications.")
7852 (home-page "https://github.com/click-contrib/click-threading")
7853 (license license:expat)))
7b17cab9
LF
7854
7855(define-public python-click-log
7856 (package
7857 (name "python-click-log")
a9da8fec 7858 (version "0.1.3")
7b17cab9
LF
7859 (source (origin
7860 (method url-fetch)
7861 (uri (pypi-uri "click-log" version))
7862 (sha256
7863 (base32
a9da8fec 7864 "0kdd1vminxpcfczxl2kkf285n0dr1gxh2cdbx1p6vkj7b7bci3gx"))))
7b17cab9
LF
7865 (build-system python-build-system)
7866 (propagated-inputs
7867 `(("python-click" ,python-click)))
7868 (synopsis "Logging for click applications")
7869 (description "This package provides a Python library for logging Click
7870applications.")
7871 (home-page "https://github.com/click-contrib/click-log")
7872 (license license:expat)))
7b3a4ee4
LF
7873
7874(define-public python-apipkg
7875 (package
7876 (name "python-apipkg")
7877 (version "1.4")
7878 (source (origin
7879 (method url-fetch)
7880 (uri (pypi-uri "apipkg" version))
7881 (sha256
7882 (base32
7883 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
7884 (build-system python-build-system)
328bb95d 7885 (native-inputs
7b3a4ee4
LF
7886 `(("python-pytest" ,python-pytest)))
7887 (synopsis "Namespace control and lazy-import mechanism")
7888 (description "With apipkg you can control the exported namespace of a Python
7889package and greatly reduce the number of imports for your users. It is a small
7890pure Python module that works on virtually all Python versions.")
7891 (home-page "https://bitbucket.org/hpk42/apipkg")
f210e944 7892 (license license:expat)))
e08739c3
CAW
7893
7894(define-public python2-apipkg
f210e944 7895 (package-with-python2 python-apipkg))
848964fe
LF
7896
7897(define-public python-execnet
7898 (package
7899 (name "python-execnet")
7900 (version "1.4.1")
7901 (source (origin
7902 (method url-fetch)
7903 (uri (pypi-uri "execnet" version))
7904 (sha256
7905 (base32
7906 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
7907 (build-system python-build-system)
ca0eee9d
LF
7908 (arguments
7909 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
7910 ;; The two test failures are caused by the lack of an `ssh` executable.
7911 ;; The test suite can be run with pytest after the 'install' phase.
7912 #:tests? #f))
848964fe 7913 (native-inputs
ca0eee9d
LF
7914 `(("python-pytest" ,python-pytest)
7915 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 7916 (propagated-inputs
848964fe
LF
7917 `(("python-apipkg" ,python-apipkg)))
7918 (synopsis "Rapid multi-Python deployment")
7919 (description "Execnet provides a share-nothing model with
7920channel-send/receive communication for distributing execution across many
7921Python interpreters across version, platform and network barriers. It has a
7922minimal and fast API targetting the following uses:
7923@enumerate
7924@item distribute tasks to (many) local or remote CPUs
7925@item write and deploy hybrid multi-process applications
7926@item write scripts to administer multiple environments
7927@end enumerate")
7928 (home-page "http://codespeak.net/execnet/")
f210e944 7929 (license license:expat)))
16c84f90
CAW
7930
7931(define-public python2-execnet
f210e944 7932 (package-with-python2 python-execnet))
6720dbb4
LF
7933
7934;;; The software provided by this package was integrated into pytest 2.8.
7935(define-public python-pytest-cache
7936 (package
7937 (name "python-pytest-cache")
7938 (version "1.0")
7939 (source (origin
7940 (method url-fetch)
7941 (uri (pypi-uri "pytest-cache" version))
7942 (sha256
7943 (base32
7944 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
7945 (build-system python-build-system)
f22efa01 7946 (propagated-inputs
630d938f
EF
7947 `(("python-apipkg" ,python-apipkg)
7948 ("python-execnet" ,python-execnet)
7949 ("python-py" ,python-py)
7950 ("python-pytest" ,python-pytest)))
6720dbb4
LF
7951 (synopsis "Py.test plugin with mechanisms for caching across test runs")
7952 (description "The pytest-cache plugin provides tools to rerun failures from
7953the last py.test invocation.")
7954 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
f210e944 7955 (license license:expat)))
0adc21c2
EF
7956
7957(define-public python2-pytest-cache
f210e944 7958 (package-with-python2 python-pytest-cache))
d7e729fe
LF
7959
7960(define-public python-pytest-localserver
7961 (package
7962 (name "python-pytest-localserver")
29f20168 7963 (version "0.3.5")
d7e729fe
LF
7964 (source (origin
7965 (method url-fetch)
29f20168 7966 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
7967 (sha256
7968 (base32
29f20168 7969 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
7970 (build-system python-build-system)
7971 (arguments
7972 `(#:phases (modify-phases %standard-phases
7973 (replace 'check
7974 (lambda _
7975 (zero? (system* "py.test" "--genscript=runtests.py"))
7976 (zero? (system* "py.test")))))))
7977 (native-inputs
d7e729fe
LF
7978 `(("python-pytest" ,python-pytest)
7979 ("python-requests" ,python-requests)
9ba40f05 7980 ("python-six" ,python-six)))
f22efa01 7981 (propagated-inputs
9ba40f05 7982 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
7983 (synopsis "Py.test plugin to test server connections locally")
7984 (description "Pytest-localserver is a plugin for the pytest testing
7985framework which enables you to test server connections locally.")
7986 (home-page "https://pypi.python.org/pypi/pytest-localserver")
7987 (license license:expat)))
28cecbb7
LF
7988
7989(define-public python-wsgi-intercept
7990 (package
7991 (name "python-wsgi-intercept")
909fbd2b 7992 (version "1.2.2")
28cecbb7
LF
7993 (source (origin
7994 (method url-fetch)
909fbd2b
LF
7995 (uri (string-append
7996 "https://pypi.python.org/packages/"
7997 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
7998 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
7999 (sha256
8000 (base32
909fbd2b 8001 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7 8002 (build-system python-build-system)
b9fc496f
HG
8003 (propagated-inputs
8004 `(("python-six" ,python-six)))
28cecbb7 8005 (native-inputs
9d813ec1 8006 `(("python-pytest" ,python-pytest)
b9fc496f
HG
8007 ("python-httplib2" ,python-httplib2)
8008 ("python-requests" ,python-requests)
8757f050 8009 ("python-urllib3" ,python-urllib3)))
28cecbb7
LF
8010 (synopsis "Puts a WSGI application in place of a real URI for testing")
8011 (description "Wsgi_intercept installs a WSGI application in place of a real
8012URI for testing. Testing a WSGI application normally involves starting a
8013server at a local host and port, then pointing your test code to that address.
8014Instead, this library lets you intercept calls to any specific host/port
8015combination and redirect them into a WSGI application importable by your test
8016program. Thus, you can avoid spawning multiple processes or threads to test
8017your Web app.")
8018 (home-page "https://github.com/cdent/wsgi-intercept")
8019 (license license:expat)))
89b8a551
LF
8020
8021(define-public python-pytest-xprocess
8022 (package
8023 (name "python-pytest-xprocess")
8024 (version "0.9.1")
8025 (source (origin
8026 (method url-fetch)
8027 (uri (pypi-uri "pytest-xprocess" version))
8028 (sha256
8029 (base32
8030 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
8031 (build-system python-build-system)
8032 (propagated-inputs
8033 `(("python-pytest" ,python-pytest)
8034 ("python-pytest-cache" ,python-pytest-cache)
8035 ("python-psutil" ,python-psutil)))
8036 (synopsis "Pytest plugin to manage external processes across test runs")
8037 (description "Pytest-xprocess is an experimental py.test plugin for managing
8038processes across test runs.")
8039 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
8040 (license license:expat)))
5c299bf0
LF
8041
8042(define-public python-icalendar
8043 (package
8044 (name "python-icalendar")
25291aca 8045 (version "3.11")
5c299bf0
LF
8046 (source (origin
8047 (method url-fetch)
8048 (uri (pypi-uri "icalendar" version))
8049 (sha256
8050 (base32
25291aca 8051 "01v2f3swd5s72x65cdihw83dx1z799b4i49a6ncg7vqmcm20wapd"))))
5c299bf0
LF
8052 (build-system python-build-system)
8053 (propagated-inputs
8054 `(("python-dateutil-2" ,python-dateutil-2)
8055 ("python-pytz" ,python-pytz)))
8056 (synopsis "Python library for parsing iCalendar files")
8057 (description "The icalendar package is a parser/generator of iCalendar
8058files for use with Python.")
8059 (home-page "https://github.com/collective/icalendar")
3f641af0 8060 (license license:bsd-2)))
6bbbb53e
LF
8061
8062(define-public python-sphinxcontrib-newsfeed
8063 (package
8064 (name "python-sphinxcontrib-newsfeed")
8065 (version "0.1.4")
8066 (source (origin
8067 (method url-fetch)
8068 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
8069 (sha256
8070 (base32
8071 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
8072 (build-system python-build-system)
8073 (propagated-inputs
251ed7f2 8074 `(("python-sphinx" ,python-sphinx)))
6bbbb53e
LF
8075 (synopsis "News Feed extension for Sphinx")
8076 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
8077Blog, News or Announcements section to a Sphinx website.")
8078 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 8079 (license license:bsd-2)))
2216e15c
SB
8080
8081(define-public python-args
8082 (package
8083 (name "python-args")
8084 (version "0.1.0")
8085 (source (origin
8086 (method url-fetch)
8087 (uri (pypi-uri "args" version))
8088 (sha256
8089 (base32
8090 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
8091 (build-system python-build-system)
2216e15c
SB
8092 (home-page "https://github.com/kennethreitz/args")
8093 (synopsis "Command-line argument parser")
8094 (description
8095 "This library provides a Python module to parse command-line arguments.")
3f641af0 8096 (license license:bsd-3)))
2216e15c
SB
8097
8098(define-public python2-args
8099 (package-with-python2 python-args))
c06a3de9
SB
8100
8101(define-public python-clint
8102 (package
8103 (name "python-clint")
8104 (version "0.5.1")
8105 (source (origin
8106 (method url-fetch)
8107 (uri (pypi-uri "clint" version))
8108 (sha256
8109 (base32
8110 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
8111 (build-system python-build-system)
f22efa01 8112 (propagated-inputs
f3b98f4f 8113 `(("python-args" ,python-args)))
c06a3de9
SB
8114 (home-page "https://github.com/kennethreitz/clint")
8115 (synopsis "Command-line interface tools")
8116 (description
8117 "Clint is a Python module filled with a set of tools for developing
8118command-line applications, including tools for colored and indented
8119output, progress bar display, and pipes.")
3f641af0 8120 (license license:isc)))
c06a3de9
SB
8121
8122(define-public python2-clint
8123 (package-with-python2 python-clint))
4ecdeef8
SB
8124
8125(define-public python-astor
8126 (package
8127 (name "python-astor")
8128 (version "0.5")
8129 (source (origin
8130 (method url-fetch)
8131 (uri (pypi-uri "astor" version))
8132 (sha256
8133 (base32
8134 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
8135 (build-system python-build-system)
4ecdeef8
SB
8136 (home-page "https://github.com/berkerpeksag/astor")
8137 (synopsis "Read and write Python ASTs")
8138 (description
8139 "Astor is designed to allow easy manipulation of Python source via the
8140Abstract Syntax Tree.")
3f641af0 8141 (license license:bsd-3)))
4ecdeef8
SB
8142
8143(define-public python2-astor
8144 (package-with-python2 python-astor))
e224b7d0
SB
8145
8146(define-public python-rply
8147 (package
8148 (name "python-rply")
8149 (version "0.7.4")
8150 (source (origin
8151 (method url-fetch)
8152 (uri (pypi-uri "rply" version))
8153 (sha256
8154 (base32
8155 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
8156 (build-system python-build-system)
f22efa01 8157 (propagated-inputs
f3b98f4f 8158 `(("python-appdirs" ,python-appdirs)))
e224b7d0
SB
8159 (home-page "https://github.com/alex/rply")
8160 (synopsis "Parser generator for Python")
8161 (description
8162 "This package provides a pure Python based parser generator, that also
8163works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
8164with a new public API, and RPython support.")
3f641af0 8165 (license license:bsd-3)))
e224b7d0
SB
8166
8167(define-public python2-rply
8168 (package-with-python2 python-rply))
c3e919d7
SB
8169
8170(define-public python-hy
8171 (package
8172 (name "python-hy")
8173 (version "0.11.1")
8174 (source (origin
8175 (method url-fetch)
8176 (uri (pypi-uri "hy" version))
8177 (sha256
8178 (base32
8179 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
8180 (build-system python-build-system)
f22efa01 8181 (propagated-inputs
c3e919d7
SB
8182 `(("python-astor" ,python-astor)
8183 ("python-clint" ,python-clint)
f3b98f4f 8184 ("python-rply" ,python-rply)))
c3e919d7
SB
8185 (home-page "http://hylang.org/")
8186 (synopsis "Lisp frontend to Python")
8187 (description
8188 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
8189its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
8190Python at your fingertips, in Lisp form.")
8191 (license license:expat)))
8192
8193(define-public python2-hy
8194 (package-with-python2 python-hy))
7a5b944e 8195
81f7f297
EF
8196(define-public python-rauth
8197 (package
8198 (name "python-rauth")
8199 (version "0.7.2")
8200 (source
8201 (origin
8202 (method url-fetch)
8203 (uri (pypi-uri "rauth" version))
8204 (sha256
8205 (base32
8206 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
8207 (build-system python-build-system)
8208 (arguments
8209 `(#:test-target "check"))
f22efa01 8210 (propagated-inputs
81f7f297
EF
8211 `(("python-requests" ,python-requests)))
8212 (home-page "https://github.com/litl/rauth")
8213 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
8214 (description
8215 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
8216provides service wrappers for convenient connection initialization and
8217authenticated session objects providing things like keep-alive.")
0848d8d3
EF
8218 (license license:expat)
8219 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
8220
8221(define-public python2-rauth
0848d8d3
EF
8222 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
8223 (package
8224 (inherit base)
00e10c6e 8225 (native-inputs `(("python2-unittest2" ,python2-unittest2)
0848d8d3 8226 ,@(package-native-inputs base))))))
81f7f297 8227
1abe448d
EF
8228(define-public python2-functools32
8229 (package
8230 (name "python2-functools32")
8231 (version "3.2.3-2")
8232 (source
8233 (origin
8234 (method url-fetch)
8235 (uri (pypi-uri "functools32" version))
8236 (sha256
8237 (base32
8238 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
8239 (build-system python-build-system)
8240 (arguments
8241 `(#:python ,python-2
8242 #:tests? #f)) ; no test target
1abe448d
EF
8243 (home-page "https://github.com/MiCHiLU/python-functools32")
8244 (synopsis
8245 "Backport of the functools module from Python 3.2.3")
8246 (description
8247 "This package is a backport of the @code{functools} module from Python
82483.2.3 for use with older versions of Python and PyPy.")
8249 (license license:expat)))
8250
877889f3 8251(define-public python2-futures
7a5b944e 8252 (package
877889f3 8253 (name "python2-futures")
7a5b944e
EF
8254 (version "3.0.3")
8255 (source
8256 (origin
8257 (method url-fetch)
8258 (uri (pypi-uri "futures" version))
8259 (sha256
8260 (base32
8261 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
8262 (build-system python-build-system)
877889f3 8263 (arguments `(#:python ,python-2))
7a5b944e
EF
8264 (home-page "https://github.com/agronholm/pythonfutures")
8265 (synopsis
8266 "Backport of the concurrent.futures package from Python 3.2")
8267 (description
8268 "The concurrent.futures module provides a high-level interface for
8269asynchronously executing callables. This package backports the
8270concurrent.futures package from Python 3.2")
3f641af0 8271 (license license:bsd-3)))
7a5b944e 8272
5cb2fe44
EF
8273(define-public python-promise
8274 (package
8275 (name "python-promise")
8276 (version "0.4.2")
8277 (source
8278 (origin
8279 (method url-fetch)
8280 (uri (pypi-uri "promise" version))
8281 (sha256
8282 (base32
8283 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
8284 (build-system python-build-system)
8285 ;; Tests wants python-futures, which is a python2 only program, and
8286 ;; can't be found by python-promise at test time.
8287 (arguments `(#:tests? #f))
8288 (home-page "https://github.com/syrusakbary/promise")
8289 (synopsis "Promises/A+ implementation for Python")
8290 (description
8291 "Promises/A+ implementation for Python")
8292 (properties `((python2-variant . ,(delay python2-promise))))
8293 (license license:expat)))
8294
8295(define-public python2-promise
8296 (let ((promise (package-with-python2
8297 (strip-python2-variant python-promise))))
8298 (package (inherit promise)
8299 (arguments (substitute-keyword-arguments (package-arguments promise)
8300 ((#:tests? _) #t)))
8301 (native-inputs
8302 `(("python2-futures" ,python2-futures)
8303 ("python2-pytest" ,python2-pytest)
5cb2fe44
EF
8304 ,@(package-native-inputs promise))))))
8305
c18f6368
EF
8306(define-public python-urllib3
8307 (package
8308 (name "python-urllib3")
6178274d 8309 (version "1.18.1")
c18f6368
EF
8310 (source
8311 (origin
8312 (method url-fetch)
8313 (uri (pypi-uri "urllib3" version))
8314 (sha256
8315 (base32
6178274d 8316 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
c18f6368
EF
8317 (build-system python-build-system)
8318 (arguments `(#:tests? #f))
8319 (native-inputs
f3b98f4f 8320 `(;; some packages for tests
c18f6368
EF
8321 ("python-nose" ,python-nose)
8322 ("python-mock" ,python-mock)
8323 ("python-tornado" ,python-tornado)))
8324 (propagated-inputs
8322749a 8325 `(;; extra packages for https security
c18f6368
EF
8326 ("python-certifi" ,python-certifi)
8327 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
8328 ("python-pyasn1" ,python-pyasn1)
8329 ("python-pyopenssl" ,python-pyopenssl)))
6178274d 8330 (home-page "https://urllib3.readthedocs.org/")
c18f6368
EF
8331 (synopsis "HTTP library with thread-safe connection pooling")
8332 (description
8333 "Urllib3 supports features left out of urllib and urllib2 libraries. It
8334can reuse the same socket connection for multiple requests, it can POST files,
8335supports url redirection and retries, and also gzip and deflate decoding.")
8336 (license license:expat)))
8337
8338(define-public python2-urllib3
8339 (package-with-python2 python-urllib3))
2b2f2fc1
DT
8340
8341(define-public python-colorama
8342 (package
8343 (name "python-colorama")
8344 (version "0.3.3")
8345 (source
8346 (origin
8347 (method url-fetch)
8348 (uri (pypi-uri "colorama" version))
8349 (sha256
8350 (base32
8351 "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
8352 (build-system python-build-system)
2b2f2fc1
DT
8353 (synopsis "colored terminal text rendering for Python")
8354 (description "Colorama is a Python library for rendering colored terminal
8355text.")
8356 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 8357 (license license:bsd-3)))
2b2f2fc1
DT
8358
8359(define-public python2-colorama
8360 (package-with-python2 python-colorama))
f5bcec6e
DT
8361
8362(define-public python-rsa
8363 (package
8364 (name "python-rsa")
ecd68c53 8365 (version "3.4.2")
f5bcec6e
DT
8366 (source
8367 (origin
8368 (method url-fetch)
8369 (uri (pypi-uri "rsa" version))
8370 (sha256
8371 (base32
ecd68c53 8372 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
f5bcec6e 8373 (build-system python-build-system)
f22efa01 8374 (propagated-inputs
f3b98f4f 8375 `(("python-pyasn1" ,python-pyasn1)))
f5bcec6e
DT
8376 (synopsis "Pure-Python RSA implementation")
8377 (description "Python-RSA is a pure-Python RSA implementation. It supports
8378encryption and decryption, signing and verifying signatures, and key
8379generation according to PKCS#1 version 1.5. It can be used as a Python
8380library as well as on the command line.")
8381 (home-page "http://stuvel.eu/rsa")
3f641af0 8382 (license license:asl2.0)))
f5bcec6e
DT
8383
8384(define-public python2-rsa
8385 (package-with-python2 python-rsa))
c0aacfa5
DT
8386
8387(define-public python-pluggy
8388 (package
8389 (name "python-pluggy")
8390 (version "0.3.1")
8391 (source
8392 (origin
8393 (method url-fetch)
8394 (uri (pypi-uri "pluggy" version))
8395 (sha256
8396 (base32
8397 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
8398 (build-system python-build-system)
c0aacfa5
DT
8399 (synopsis "Plugin and hook calling mechanism for Python")
8400 (description "Pluggy is an extraction of the plugin manager as used by
8401Pytest but stripped of Pytest specific details.")
8402 (home-page "https://pypi.python.org/pypi/pluggy")
8403 (license license:expat)))
8404
8405(define-public python2-pluggy
8406 (package-with-python2 python-pluggy))
a4af21ca
DT
8407
8408(define-public python-tox
8409 (package
8410 (name "python-tox")
8411 (version "2.3.1")
8412 (source
8413 (origin
8414 (method url-fetch)
8415 (uri (pypi-uri "tox" version))
8416 (sha256
8417 (base32
8418 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
8419 (build-system python-build-system)
8420 (arguments
7ba07edf
HG
8421 ;; FIXME: Tests require pytest-timeout, which itself requires
8422 ;; pytest>=2.8.0 for installation.
a4af21ca 8423 '(#:tests? #f))
482d9591
HG
8424 (propagated-inputs
8425 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
a4af21ca 8426 ("python-py" ,python-py)
482d9591 8427 ("python-virtualenv" ,python-virtualenv)))
328bb95d 8428 (native-inputs
7ba07edf
HG
8429 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
8430 ("python-pytest" ,python-pytest))) ; >= 2.3.5
a4af21ca
DT
8431 (home-page "http://tox.testrun.org/")
8432 (synopsis "Virtualenv-based automation of test activities")
8433 (description "Tox is a generic virtualenv management and test command line
8434tool. It can be used to check that a package installs correctly with
8435different Python versions and interpreters, or run tests in each type of
8436supported environment, or act as a frontend to continuous integration
8437servers.")
8438 (license license:expat)))
8439
8440(define-public python2-tox
8441 (package-with-python2 python-tox))
ba9da248
DT
8442
8443(define-public python-jmespath
8444 (package
8445 (name "python-jmespath")
8446 (version "0.9.0")
8447 (source
8448 (origin
8449 (method url-fetch)
8450 (uri (pypi-uri "jmespath" version))
8451 (sha256
8452 (base32
8453 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
8454 (build-system python-build-system)
ba9da248
DT
8455 (synopsis "JSON Matching Expressions")
8456 (description "JMESPath (pronounced “james path”) is a Python library that
8457allows one to declaratively specify how to extract elements from a JSON
8458document.")
8459 (home-page "https://github.com/jmespath/jmespath.py")
8460 (license license:expat)))
8461
8462(define-public python2-jmespath
8463 (package-with-python2 python-jmespath))
935fcd5c
DT
8464
8465(define-public python-botocore
8466 (package
8467 (name "python-botocore")
e09f952d 8468 (version "1.4.62")
935fcd5c
DT
8469 (source
8470 (origin
8471 (method url-fetch)
8472 (uri (pypi-uri "botocore" version))
8473 (sha256
8474 (base32
e09f952d 8475 "1zxczlwqy9bl27d9bc5x99mb5mcsxm350240lp5nx7014xb311lj"))))
935fcd5c 8476 (build-system python-build-system)
482d9591 8477 (propagated-inputs
935fcd5c
DT
8478 `(("python-dateutil" ,python-dateutil-2)
8479 ("python-docutils" ,python-docutils)
482d9591 8480 ("python-jmespath" ,python-jmespath)))
8fa6890b 8481 (native-inputs
482d9591 8482 `(("python-mock" ,python-mock)
935fcd5c 8483 ("python-nose" ,python-nose)
482d9591 8484 ("behave" ,behave)
935fcd5c 8485 ("python-tox" ,python-tox)
482d9591 8486 ("python-wheel" ,python-wheel)))
935fcd5c
DT
8487 (home-page "https://github.com/boto/botocore")
8488 (synopsis "Low-level interface to AWS")
8489 (description "Botocore is a Python library that provides a low-level
8490interface to the Amazon Web Services (AWS) API.")
3f641af0 8491 (license license:asl2.0)))
935fcd5c
DT
8492
8493(define-public python2-botocore
8494 (package-with-python2 python-botocore))
f861b8b8
DT
8495
8496(define-public awscli
8497 (package
8498 (name "awscli")
d5ccf71e 8499 (version "1.11.5")
f861b8b8
DT
8500 (source
8501 (origin
8502 (method url-fetch)
d5ccf71e 8503 (uri (pypi-uri name version))
f861b8b8
DT
8504 (sha256
8505 (base32
d5ccf71e 8506 "0lclasm0wnayd3b8zl9l91i32nbgrhh0ncf9lksss4cv0myfwmfg"))))
f861b8b8 8507 (build-system python-build-system)
482d9591 8508 (propagated-inputs
f861b8b8 8509 `(("python-colorama" ,python-colorama)
482d9591
HG
8510 ("python-botocore" ,python-botocore)
8511 ("python-s3transfer" ,python-s3transfer)
f861b8b8 8512 ("python-docutils" ,python-docutils)
482d9591 8513 ("python-rsa" ,python-rsa)))
d4649177 8514 (native-inputs
482d9591 8515 `(("python-mock" ,python-mock)
f861b8b8 8516 ("python-nose" ,python-nose)
f861b8b8
DT
8517 ("python-sphinx" ,python-sphinx)
8518 ("python-tox" ,python-tox)
482d9591 8519 ("python-wheel" ,python-wheel)))
f861b8b8
DT
8520 (home-page "http://aws.amazon.com/cli/")
8521 (synopsis "Command line client for AWS")
8522 (description "AWS CLI provides a unified command line interface to the
8523Amazon Web Services (AWS) API.")
3f641af0 8524 (license license:asl2.0)))
6a44697d
LF
8525
8526(define-public python-hypothesis
8527 (package
8528 (name "python-hypothesis")
bea6d94d 8529 (version "3.1.0")
6a44697d
LF
8530 (source (origin
8531 (method url-fetch)
8532 (uri (pypi-uri "hypothesis" version))
8533 (sha256
8534 (base32
bea6d94d 8535 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 8536 (build-system python-build-system)
6a44697d
LF
8537 (propagated-inputs
8538 `(("python-flake8" ,python-flake8)
8539 ("python-pytest" ,python-pytest)))
8540 (synopsis "Library for property based testing")
8541 (description "Hypothesis is a library for testing your Python code against a
8542much larger range of examples than you would ever want to write by hand. It’s
8543based on the Haskell library, Quickcheck, and is designed to integrate
8544seamlessly into your existing Python unit testing work flow.")
8545 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 8546 (license license:mpl2.0)
6f068e08 8547 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
8548
8549(define-public python2-hypothesis
6f068e08
EF
8550 (let ((hypothesis (package-with-python2
8551 (strip-python2-variant python-hypothesis))))
8552 (package (inherit hypothesis)
8553 (native-inputs
f3b98f4f 8554 `(("python2-enum34" ,python2-enum34))))))
7517e73c
LF
8555
8556(define-public python-pytest-subtesthack
8557 (package
8558 (name "python-pytest-subtesthack")
8559 (version "0.1.1")
8560 (source (origin
8561 (method url-fetch)
8562 (uri (pypi-uri "pytest-subtesthack" version))
8563 (sha256
8564 (base32
8565 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
8566 (build-system python-build-system)
7517e73c
LF
8567 (propagated-inputs
8568 `(("python-pytest" ,python-pytest)))
8569 (synopsis "Set-up and tear-down fixtures for unit tests")
8570 (description "This plugin allows you to set up and tear down fixtures within
8571unit test functions that use @code{py.test}. This is useful for using
8572@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
8573function multiple times, without setting up or tearing down fixture state as is
8574normally the case.")
8575 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 8576 (license license:unlicense)))
7517e73c
LF
8577
8578(define-public python2-pytest-subtesthack
8579 (package-with-python2 python-pytest-subtesthack))
0bdc1671
CAW
8580
8581(define-public python2-xdo
8582 (package
8583 (name "python2-xdo")
8584 (version "0.2")
8585 (source (origin
8586 (method url-fetch)
8587 (uri (string-append
8588 "http://http.debian.net/debian/pool/main/p/python-xdo/"
8589 "python-xdo_" version ".orig.tar.gz"))
8590 (sha256
8591 (base32
8592 "1kl5c1p0dyxf62plnk6fl77ycfb4whwjms16r14dxx8kn90hlqz4"))))
8593 (build-system python-build-system)
8594 (arguments
8595 `(#:python ,python-2
8596 #:tests? #f)) ; no tests provided
8597 (inputs
8598 `(("xdotool" ,xdotool)
8599 ("libX11" ,libx11)))
8600 (home-page "https://tracker.debian.org/pkg/python-xdo")
8601 (synopsis "Python library for simulating X11 keyboard/mouse input")
8602 (description "Provides bindings to libxdo for manipulating X11 via simulated
8603input. (Note that this is mostly a legacy library; you may wish to look at
8604python-xdo for newer bindings.)")
3f641af0 8605 (license license:bsd-3)))
0bdc1671 8606
cb34dc6c
CAW
8607(define-public python-wtforms
8608 (package
8609 (name "python-wtforms")
8610 (version "2.1")
8611 (source
8612 (origin
8613 (method url-fetch)
8614 (uri (pypi-uri "WTForms" version ".zip"))
8615 (sha256
8616 (base32
8617 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
8618 (build-system python-build-system)
13c4d874
EF
8619 (arguments
8620 '(#:phases
8621 (modify-phases %standard-phases
8622 (add-after 'unpack 'remove-django-test
8623 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
8624 (lambda _
8625 (substitute*
8626 "tests/runtests.py"
8627 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
8628 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
8629 #t)))))
cb34dc6c
CAW
8630 (native-inputs
8631 `(("unzip" ,unzip)))
8632 (home-page "http://wtforms.simplecodes.com/")
8633 (synopsis
8634 "Form validation and rendering library for Python web development")
8635 (description
8636 "WTForms is a flexible forms validation and rendering library
8637for Python web development. It is very similar to the web form API
8638available in Django, but is a standalone package.")
f210e944 8639 (license license:bsd-3)))
cb34dc6c
CAW
8640
8641(define-public python2-wtforms
f210e944 8642 (package-with-python2 python-wtforms))
50aaec25
DT
8643
8644(define-public python-mako
8645 (package
8646 (name "python-mako")
8647 (version "1.0.3")
8648 (source
8649 (origin
8650 (method url-fetch)
8651 (uri (pypi-uri "Mako" version))
8652 (sha256
8653 (base32
8654 "136kcjbs0s98qkx8a418b05dfblqp0kiiqyx8vhx4rarwc7bqi3n"))))
8655 (build-system python-build-system)
482d9591
HG
8656 (propagated-inputs
8657 `(("python-markupsafe" ,python-markupsafe)))
50aaec25 8658 (native-inputs
482d9591 8659 `(("python-mock" ,python-mock)
50aaec25
DT
8660 ("python-nose" ,python-nose)))
8661 (home-page "http://www.makotemplates.org/")
8662 (synopsis "Templating language for Python")
8663 (description "Mako is a templating language for Python that compiles
8664templates into Python modules.")
f210e944 8665 (license license:expat)))
50aaec25
DT
8666
8667(define-public python2-mako
f210e944 8668 (package-with-python2 python-mako))
ae00a41f
CAW
8669
8670(define-public python-waitress
8671 (package
8672 (name "python-waitress")
8673 (version "0.8.10")
8674 (source
8675 (origin
8676 (method url-fetch)
8677 (uri (pypi-uri "waitress" version))
8678 (sha256
8679 (base32
8680 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
8681 (build-system python-build-system)
8682 (home-page "https://github.com/Pylons/waitress")
8683 (synopsis "Waitress WSGI server")
8684 (description "Waitress is meant to be a production-quality pure-Python WSGI
8685server with very acceptable performance.")
f210e944 8686 (license license:zpl2.1)))
ae00a41f
CAW
8687
8688(define-public python2-waitress
f210e944 8689 (package-with-python2 python-waitress))
778a284b
CAW
8690
8691(define-public python-wsgiproxy2
8692 (package
8693 (name "python-wsgiproxy2")
8694 (version "0.4.2")
8695 (source
8696 (origin
8697 (method url-fetch)
8698 (uri (pypi-uri "WSGIProxy2" version ".zip"))
8699 (sha256
8700 (base32
8701 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
8702 (build-system python-build-system)
e359b31a
LF
8703 (arguments
8704 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
8705 ;; support Python 3:
8706 ;; https://github.com/benoitc/restkit/issues/140
8707 #:tests? #f))
778a284b
CAW
8708 (native-inputs
8709 `(("unzip" ,unzip)
8710 ("python-nose" ,python-nose)
8711 ("python-coverage" ,python-coverage)))
8712 (propagated-inputs
8713 `(("python-six" ,python-six)
8714 ("python-webob" ,python-webob)))
8715 (home-page
8716 "https://github.com/gawel/WSGIProxy2/")
8717 (synopsis "WSGI Proxy with various http client backends")
8718 (description "WSGI turns HTTP requests into WSGI function calls.
8719WSGIProxy turns WSGI function calls into HTTP requests.
8720It also includes code to sign requests and pass private data,
8721and to spawn subprocesses to handle requests.")
f210e944 8722 (license license:expat)))
778a284b
CAW
8723
8724(define-public python2-wsgiproxy2
f210e944 8725 (package-with-python2 python-wsgiproxy2))
bb7518b1
CAW
8726
8727(define-public python-pastedeploy
8728 (package
8729 (name "python-pastedeploy")
8730 (version "1.5.2")
8731 (source
8732 (origin
8733 (method url-fetch)
8734 (uri (pypi-uri "PasteDeploy" version))
8735 (sha256
8736 (base32
8737 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
8738 (build-system python-build-system)
8739 (native-inputs
8740 `(("python-nose" ,python-nose)))
bb7518b1
CAW
8741 (home-page "http://pythonpaste.org/deploy/")
8742 (synopsis
8743 "Load, configure, and compose WSGI applications and servers")
8744 (description
8745 "This tool provides code to load WSGI applications and servers from URIs;
8746these URIs can refer to Python Eggs for INI-style configuration files. Paste
8747Script provides commands to serve applications based on this configuration
8748file.")
8749 (license license:expat)))
8750
8751(define-public python2-pastedeploy
8752 (package-with-python2 python-pastedeploy))
1cf53652 8753
c4a7904c
CAW
8754(define-public python-paste
8755 (package
8756 (name "python-paste")
8757 (version "2.0.2")
8758 (source
8759 (origin
8760 (method url-fetch)
8761 (uri (pypi-uri "Paste" version))
8762 (sha256
8763 (base32
8764 "16dsv9qi0r4qsrsb6dilpq2rx0fnglvh36flzywcdnm2jg43mb5d"))
fc1adab1
AK
8765 (patches (search-patches "python-paste-remove-website-test.patch"
8766 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
8767 (build-system python-build-system)
8768 (native-inputs
8769 `(("python-nose" ,python-nose)))
8770 (propagated-inputs
f3b98f4f 8771 `(("python-six" ,python-six)))
c4a7904c
CAW
8772 (arguments
8773 '(;; Tests don't pass on Python 3, but work fine on Python 2.
8774 ;; (As of 2.0.2, Python 3 support in Paste is presently a bit broken,
8775 ;; but is usable enough for the minimal amount it's used in MediaGoblin
8776 ;; still... things should be better by the next Paste release.)
8777 #:tests? #f))
8778 (home-page "http://pythonpaste.org")
8779 (synopsis
8780 "Python web development tools, focusing on WSGI")
8781 (description
8782 "Paste provides a variety of web development tools and middleware which
8783can be nested together to build web applications. Paste's design closely
8784follows ideas flowing from WSGI (Web Standard Gateway Interface).")
8785 (license license:expat)
8786 (properties `((python2-variant . ,(delay python2-paste))))))
8787
8788(define-public python2-paste
8789 (let ((paste (package-with-python2
8790 (strip-python2-variant python-paste))))
8791 (package
8792 (inherit paste)
8793 (arguments
8794 ;; Tests are back for Python 2!
8795 `(#:tests? #t
8796 ,@(package-arguments paste))))))
8797
a8f20f63
CAW
8798(define-public python-pastescript
8799 (package
8800 (name "python-pastescript")
8801 (version "2.0.2")
8802 (source
8803 (origin
8804 (method url-fetch)
8805 (uri (pypi-uri "PasteScript" version))
8806 (sha256
8807 (base32
8808 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
8809 (build-system python-build-system)
8810 (native-inputs
8811 `(("python-nose" ,python-nose)))
8812 (propagated-inputs
f3b98f4f 8813 `(("python-paste" ,python-paste)
a8f20f63
CAW
8814 ("python-pastedeploy" ,python-pastedeploy)))
8815 (home-page "http://pythonpaste.org/script/")
8816 (arguments
8817 '(;; Unfortunately, this requires the latest unittest2,
8818 ;; but that requires traceback2 which requires linecache2 which requires
8819 ;; unittest2. So we're skipping tests for now.
8820 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
8821 ;; so in theory we could get around this situation somehow.)
8822 #:tests? #f))
8823 (synopsis
8824 "Pluggable command line tool for serving web applications and more")
8825 (description
8826 "PasteScript is a plugin-friendly command line tool which provides a
8827variety of features, from launching web applications to bootstrapping project
8828layouts.")
8829 (license license:expat)))
8830
8831(define-public python2-pastescript
8832 (package-with-python2 python-pastescript))
8833
1cf53652
CAW
8834(define-public python-pyquery
8835 (package
8836 (name "python-pyquery")
aab76e80 8837 (version "1.2.13")
1cf53652
CAW
8838 (source
8839 (origin
8840 (method url-fetch)
8841 (uri (pypi-uri "pyquery" version))
8842 (sha256
8843 (base32
aab76e80 8844 "0j9fsisip21qv4xljsg5dmni1pgpvwrjyyhhql0glydc4bs5rjgv"))))
1cf53652 8845 (build-system python-build-system)
2ddbfa8c
LF
8846 (native-inputs
8847 `(("python-webob" ,python-webob)
8848 ("python-webtest" ,python-webtest)))
1cf53652
CAW
8849 (propagated-inputs
8850 `(("python-lxml" ,python-lxml)
8851 ("python-cssselect" ,python-cssselect)))
8852 (home-page "https://github.com/gawel/pyquery")
8853 (synopsis "Make jQuery-like queries on xml documents")
8854 (description "pyquery allows you to make jQuery queries on xml documents.
8855The API is as much as possible the similar to jQuery. pyquery uses lxml for
8856fast xml and html manipulation.")
f210e944 8857 (license license:bsd-3)))
1cf53652
CAW
8858
8859(define-public python2-pyquery
f210e944 8860 (package-with-python2 python-pyquery))
aa6313d6
CAW
8861
8862(define-public python-webtest
8863 (package
8864 (name "python-webtest")
8865 (version "2.0.20")
8866 (source
8867 (origin
8868 (method url-fetch)
8869 (uri (pypi-uri "WebTest" version))
8870 (sha256
8871 (base32
8872 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
8873 (build-system python-build-system)
8874 (arguments
8875 `(;; Unfortunately we have to disable tests!
8876 ;; This release of WebTest is pinned to python-nose < 1.3,
8877 ;; but older versions of python-nose are plagued with the following
8878 ;; bug(s), which rears its ugly head during test execution:
8879 ;; https://github.com/nose-devs/nose/issues/759
8880 ;; https://github.com/nose-devs/nose/pull/811
8881 #:tests? #f))
8882 ;; Commented out code is no good, but in this case, once tests
8883 ;; are ready to be enabled again, we should put the following
8884 ;; in place:
8885 ;; (native-inputs
8886 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
8887 ;; ; but see above comment
8888 ;; ("python-coverage" ,python-coverage)
8889 ;; ("python-mock" ,python-mock)
8890 ;; ("python-pastedeploy" ,python-pastedeploy)
8891 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
8892 ;; ("python-pyquery" ,python-pyquery)))
8893 (propagated-inputs
8894 `(("python-waitress" ,python-waitress)
8895 ("python-webob" ,python-webob)
8896 ("python-six" ,python-six)
8897 ("python-beautifulsoup4" ,python-beautifulsoup4)))
8898 (home-page "http://webtest.pythonpaste.org/")
8899 (synopsis "Helper to test WSGI applications")
8900 (description "Webtest allows you to test your Python web applications
8901without starting an HTTP server. It supports anything that supports the
8902minimum of WSGI.")
f210e944 8903 (license license:expat)))
aa6313d6
CAW
8904
8905(define-public python2-webtest
f210e944 8906 (package-with-python2 python-webtest))
4cb122cd
CAW
8907
8908(define-public python-anyjson
8909 (package
8910 (name "python-anyjson")
8911 (version "0.3.3")
8912 (source
8913 (origin
8914 (method url-fetch)
8915 (uri (pypi-uri "anyjson" version))
8916 (sha256
8917 (base32
8918 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
8919 (build-system python-build-system)
8920 (arguments
8921 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
8922 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
8923 ;; whatever) so this transformation needs to be done before the tests
8924 ;; can be run. Maybe we could add a build step to transform beforehand
8925 ;; but it could be annoying/difficult.
8926 ;; We can enable tests for the Python 2 version, though, and do below.
8927 #:tests? #f))
8928 (home-page "http://bitbucket.org/runeh/anyjson/")
8929 (synopsis
8930 "Wraps best available JSON implementation in a common interface")
8931 (description
8932 "Anyjson loads whichever is the fastest JSON module installed
8933and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 8934 (license license:bsd-3)
4cb122cd
CAW
8935 (properties `((python2-variant . ,(delay python2-anyjson))))))
8936
8937(define-public python2-anyjson
8938 (let ((anyjson (package-with-python2
8939 (strip-python2-variant python-anyjson))))
8940 (package
8941 (inherit anyjson)
8942 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
8943 #:tests? #t
8944 ,@(package-arguments anyjson)))
00e10c6e 8945 (native-inputs `(("python2-nose" ,python2-nose))))))
8dfceab7
CAW
8946
8947(define-public python-amqp
8948 (package
8949 (name "python-amqp")
8950 (version "1.4.9")
8951 (source
8952 (origin
8953 (method url-fetch)
8954 (uri (pypi-uri "amqp" version))
8955 (sha256
8956 (base32
8957 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
8958 (build-system python-build-system)
8959 (native-inputs
8960 `(("python-nose" ,python-nose)
8961 ("python-mock" ,python-mock)))
8962 (home-page "http://github.com/celery/py-amqp")
8963 (synopsis
8964 "Low-level AMQP client for Python (fork of amqplib)")
8965 (description
8966 "This is a fork of amqplib which was originally written by Barry Pederson.
8967It is maintained by the Celery project, and used by kombu as a pure python
8968alternative when librabbitmq is not available.")
3f641af0 8969 (license license:lgpl2.1+)
8dfceab7
CAW
8970 (properties `((python2-variant . ,(delay python2-amqp))))))
8971
8972(define-public python2-amqp
8973 (let ((amqp (package-with-python2
8974 (strip-python2-variant python-amqp))))
8975 (package
8976 (inherit amqp)
8977 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
8978 ;; unmaintained. Weirdly, does not do this on the python 3
8979 ;; version?
8980 #:tests? #f
00e10c6e 8981 ,@(package-arguments amqp))))))
7d387305
CAW
8982
8983(define-public python-kombu
8984 (package
8985 (name "python-kombu")
0cb59822 8986 (version "3.0.37")
7d387305
CAW
8987 (source
8988 (origin
8989 (method url-fetch)
8990 (uri (pypi-uri "kombu" version))
8991 (sha256
8992 (base32
0cb59822 8993 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
7d387305
CAW
8994 (build-system python-build-system)
8995 (native-inputs
8996 `(("python-mock" ,python-mock)
8997 ("python-nose" ,python-nose)))
8998 (propagated-inputs
8999 `(("python-anyjson" ,python-anyjson)
0cb59822
LF
9000 ("python-amqp" ,python-amqp)
9001 ("python-redis" ,python-redis)))
7d387305
CAW
9002 (home-page "http://kombu.readthedocs.org")
9003 (synopsis "Message passing library for Python")
9004 (description "The aim of Kombu is to make messaging in Python as easy as
9005possible by providing an idiomatic high-level interface for the AMQ protocol,
9006and also provide proven and tested solutions to common messaging problems.
9007AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
9008message orientation, queuing, routing, reliability and security, for which the
9009RabbitMQ messaging server is the most popular implementation.")
3f641af0 9010 (license license:bsd-3)
7d387305
CAW
9011 (properties `((python2-variant . ,(delay python2-kombu))))))
9012
9013(define-public python2-kombu
9014 (let ((kombu (package-with-python2
9015 (strip-python2-variant python-kombu))))
9016 (package
9017 (inherit kombu)
328bb95d
HG
9018 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9019 ,@(package-native-inputs kombu))))))
b6f0b9fb
CAW
9020
9021(define-public python-billiard
9022 (package
9023 (name "python-billiard")
a6bb9e44 9024 (version "3.3.0.23")
b6f0b9fb
CAW
9025 (source
9026 (origin
9027 (method url-fetch)
9028 (uri (pypi-uri "billiard" version))
9029 (sha256
9030 (base32
a6bb9e44 9031 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
b6f0b9fb
CAW
9032 (build-system python-build-system)
9033 (native-inputs
9034 `(("python-nose" ,python-nose)))
9035 (home-page "http://github.com/celery/billiard")
9036 (synopsis
9037 "Python multiprocessing fork with improvements and bugfixes")
9038 (description
9039 "Billiard is a fork of the Python 2.7 multiprocessing package. The
9040multiprocessing package itself is a renamed and updated version of R Oudkerk's
9041pyprocessing package. This standalone variant is intended to be compatible with
9042Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 9043 (license license:bsd-3)
b6f0b9fb
CAW
9044 (properties `((python2-variant . ,(delay python2-billiard))))))
9045
9046(define-public python2-billiard
9047 (let ((billiard (package-with-python2
9048 (strip-python2-variant python-billiard))))
9049 (package
9050 (inherit billiard)
00e10c6e 9051 (native-inputs `(("python2-unittest2" ,python2-unittest2)
b6f0b9fb
CAW
9052 ("python2-mock" ,python2-mock)
9053 ,@(package-native-inputs billiard))))))
22df6419
CAW
9054
9055(define-public python-celery
9056 (package
9057 (name "python-celery")
9ebe87fe 9058 (version "3.1.24")
22df6419
CAW
9059 (source
9060 (origin
9061 (method url-fetch)
9062 (uri (pypi-uri "celery" version))
9063 (sha256
9064 (base32
9ebe87fe 9065 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
22df6419 9066 (build-system python-build-system)
9ebe87fe
LF
9067 (arguments
9068 `(#:phases
9069 (modify-phases %standard-phases
9070 ;; These tests break with Python 3.5:
9071 ;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
9072 (replace 'check
9073 (lambda _
9074 (zero?
9075 (system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
22df6419
CAW
9076 (native-inputs
9077 `(("python-nose" ,python-nose)))
f22efa01 9078 (propagated-inputs
22df6419
CAW
9079 `(("python-pytz" ,python-pytz)
9080 ("python-billiard" ,python-billiard)
9081 ("python-kombu" ,python-kombu)))
9082 (home-page "http://celeryproject.org")
9083 (synopsis "Distributed Task Queue")
9084 (description "Celery is an asynchronous task queue/job queue based on
9085distributed message passing. It is focused on real-time operation, but
9086supports scheduling as well. The execution units, called tasks, are executed
9087concurrently on a single or more worker servers using multiprocessing,
9088Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
9089synchronously (wait until ready).")
3f641af0 9090 (license license:bsd-3)
22df6419
CAW
9091 (properties `((python2-variant . ,(delay python2-celery))))))
9092
9093(define-public python2-celery
9094 (let ((celery (package-with-python2
9095 (strip-python2-variant python-celery))))
9096 (package
9097 (inherit celery)
00e10c6e 9098 (native-inputs `(("python2-unittest2" ,python2-unittest2)
22df6419
CAW
9099 ("python2-mock" ,python2-mock)
9100 ,@(package-native-inputs celery))))))
97e32948
CAW
9101
9102(define-public python-translitcodec
9103 (package
9104 (name "python-translitcodec")
9105 (version "0.4.0")
9106 (source
9107 (origin
9108 (method url-fetch)
9109 (uri (pypi-uri "translitcodec" version))
9110 (sha256
9111 (base32
9112 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
9113 (build-system python-build-system)
9114 (arguments
9115 `(#:tests? #f)) ; no tests provided
9116 (home-page
9117 "https://github.com/claudep/translitcodec")
9118 (synopsis
9119 "Unicode to 8-bit charset transliteration codec")
9120 (description
9121 "This package contains codecs for transliterating ISO 10646 texts into
9122best-effort representations using smaller coded character sets (ASCII,
9123ISO 8859, etc.).")
f210e944 9124 (license license:expat)))
97e32948
CAW
9125
9126(define-public python2-translitcodec
f210e944 9127 (package-with-python2 python-translitcodec))
0c3b90d4
CAW
9128
9129(define-public python-editor
9130 (package
9131 (name "python-editor")
9132 (version "0.5")
9133 (source
9134 (origin
9135 (method url-fetch)
9136 (uri (pypi-uri "python-editor" version))
9137 (sha256
9138 (base32
9139 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
9140 (build-system python-build-system)
9141 (home-page
9142 "https://github.com/fmoo/python-editor")
9143 (synopsis
9144 "Programmatically open an editor, capture the result")
9145 (description
9146 "python-editor is a library that provides the editor module for
9147programmatically interfacing with your system's $EDITOR.")
f210e944 9148 (license license:asl2.0)))
0c3b90d4
CAW
9149
9150(define-public python2-editor
f210e944 9151 (package-with-python2 python-editor))
3276517c
LF
9152
9153(define-public python-sphinxcontrib-programoutput
9154 (package
9155 (name "python-sphinxcontrib-programoutput")
9156 (version "0.8")
9157 (source (origin
9158 (method url-fetch)
9159 (uri (pypi-uri "sphinxcontrib-programoutput" version))
9160 (sha256
9161 (base32
9162 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
9163 (build-system python-build-system)
9164 (propagated-inputs
a0a09859 9165 `(("python-sphinx" ,python-sphinx)))
3276517c
LF
9166 (synopsis "Sphinx extension to include program output")
9167 (description "A Sphinx extension to literally insert the output of arbitrary
9168commands into documents, helping you to keep your command examples up to date.")
9169 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
f210e944 9170 (license license:bsd-2)))
3276517c
LF
9171
9172(define-public python2-sphinxcontrib-programoutput
f210e944 9173 (package-with-python2 python-sphinxcontrib-programoutput))
548d7165
LF
9174
9175(define-public python-sphinx-repoze-autointerface
9176 (package
9177 (name "python-sphinx-repoze-autointerface")
328ae341 9178 (version "0.8")
548d7165
LF
9179 (source (origin
9180 (method url-fetch)
9181 (uri (pypi-uri "repoze.sphinx.autointerface" version))
9182 (sha256
9183 (base32
328ae341 9184 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165
LF
9185 (build-system python-build-system)
9186 (propagated-inputs
47c7dc4a 9187 `(("python-sphinx" ,python-sphinx)
548d7165
LF
9188 ("python-zope-interface" ,python-zope-interface)))
9189 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
9190 (description "This package defines an extension for the Sphinx documentation
9191system. The extension allows generation of API documentation by
9192introspection of @code{zope.interface} instances in code.")
9193 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 9194 (license license:repoze)))
548d7165
LF
9195
9196(define-public python2-sphinx-repoze-autointerface
9197 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
9198
9199(define-public python-psycopg2
9200 (package
9201 (name "python-psycopg2")
9202 (version "2.6.1")
9203 (source
9204 (origin
9205 (method url-fetch)
9206 (uri (pypi-uri "psycopg2" version))
9207 (sha256
9208 (base32
9209 "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva"))))
9210 (build-system python-build-system)
9211 (arguments
9212 ;; Tests would require a postgresql database "psycopg2_test"
9213 ;; and a running postgresql database management service.
9214 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
9215 (inputs
9216 `(("postgresql" ,postgresql))) ; libpq
9217 (home-page "http://initd.org/psycopg/")
9218 (synopsis "Python PostgreSQL adapter")
9219 (description
9220 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
f210e944 9221 (license license:lgpl3+)))
b31fbea5
DM
9222
9223(define-public python2-psycopg2
f210e944 9224 (package-with-python2 python-psycopg2))
eed1a61f
LF
9225
9226(define-public python-vobject
9227 (package
9228 (name "python-vobject")
9bed9b15 9229 (version "0.9.2")
eed1a61f
LF
9230 (source (origin
9231 (method url-fetch)
9232 (uri (pypi-uri "vobject" version))
9233 (sha256
9234 (base32
9bed9b15 9235 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
eed1a61f 9236 (build-system python-build-system)
a9871b7b
LF
9237 (arguments
9238 '(;; The test suite relies on some non-portable Windows interfaces.
9239 #:tests? #f))
f22efa01 9240 (propagated-inputs
eed1a61f
LF
9241 `(("python-dateutil-2" ,python-dateutil-2)
9242 ("python-pyicu" ,python-pyicu)))
9243 (synopsis "Parse and generate vCard and vCalendar files")
9244 (description "Vobject is intended to be a full featured Python package for
9245parsing and generating vCard and vCalendar files. Currently, iCalendar files
9246are supported and well tested. vCard 3.0 files are supported, and all data
9247should be imported, but only a few components are understood in a sophisticated
9248way.")
9249 (home-page "http://eventable.github.io/vobject/")
f210e944 9250 (license license:asl2.0)))
eed1a61f
LF
9251
9252(define-public python2-vobject
f210e944 9253 (package-with-python2 python-vobject))
cedac813
LF
9254
9255(define-public python-munkres
9256 (package
9257 (name "python-munkres")
38e81a2c 9258 (version "1.0.8")
cedac813
LF
9259 (source (origin
9260 (method url-fetch)
9261 (uri (pypi-uri "munkres" version))
9262 (sha256
9263 (base32
38e81a2c 9264 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
cedac813
LF
9265 (build-system python-build-system)
9266 (arguments
9267 '(#:tests? #f)) ; no test suite
9268 (home-page "http://software.clapper.org/munkres/")
9269 (synopsis "Implementation of the Munkres algorithm")
9270 (description "The Munkres module provides an implementation of the Munkres
9271algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
9272useful for solving the Assignment Problem.")
3f641af0 9273 (license license:bsd-3)))
cedac813
LF
9274
9275(define-public python2-munkres
9276 (package-with-python2 python-munkres))
f3b3d78f
LF
9277
9278(define-public python-flask
9279 (package
9280 (name "python-flask")
c6c80104 9281 (version "0.11.1")
f3b3d78f
LF
9282 (source (origin
9283 (method url-fetch)
9284 (uri (pypi-uri "Flask" version))
9285 (sha256
9286 (base32
c6c80104 9287 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
f3b3d78f
LF
9288 (build-system python-build-system)
9289 (propagated-inputs
9290 `(("python-itsdangerous" ,python-itsdangerous)
9291 ("python-jinja2" ,python-jinja2)
8f35c030 9292 ("python-click" ,python-click)
f3b3d78f
LF
9293 ("python-werkzeug" ,python-werkzeug)))
9294 (home-page "https://github.com/mitsuhiko/flask/")
9295 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
9296 (description "Flask is a micro web framework based on the Werkzeug toolkit
9297and Jinja2 template engine. It is called a micro framework because it does not
9298presume or force a developer to use a particular tool or library.")
f210e944 9299 (license license:bsd-3)))
f3b3d78f
LF
9300
9301(define-public python2-flask
f210e944 9302 (package-with-python2 python-flask))
603d665b
LF
9303
9304(define-public python-cookies
9305 (package
9306 (name "python-cookies")
9307 (version "2.2.1")
9308 (source (origin
9309 (method url-fetch)
9310 (uri (pypi-uri "cookies" version))
9311 (sha256
9312 (base32
9313 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
9314 (build-system python-build-system)
9315 (arguments
9316 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
9317 #:tests? #f))
9318 (native-inputs
9319 `(("python-pytest" ,python2-pytest)))
9320 (synopsis "HTTP cookie parser and renderer")
9321 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
9322Python.")
9323 (home-page "https://gitlab.com/sashahart/cookies")
f210e944 9324 (license license:expat)))
603d665b
LF
9325
9326(define-public python2-cookies
f210e944 9327 (package-with-python2 python-cookies))
0efde7d6
LF
9328
9329(define-public python-responses
9330 (package
9331 (name "python-responses")
9332 (version "0.5.1")
9333 (source (origin
9334 (method url-fetch)
9335 (uri (pypi-uri "responses" version))
9336 (sha256
9337 (base32
9338 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
9339 (build-system python-build-system)
9340 (arguments
9341 `(;; Test suite is not distributed:
9342 ;; https://github.com/getsentry/responses/issues/38
9343 #:tests? #f))
9344 (native-inputs
d8ea5f2f 9345 `(("python-mock" ,python-mock)))
0efde7d6
LF
9346 (propagated-inputs
9347 `(("python-requests" ,python-requests)
d8ea5f2f 9348 ("python-cookies" ,python-cookies)
0efde7d6
LF
9349 ("python-six" ,python-six)))
9350 (home-page "https://github.com/getsentry/responses")
9351 (synopsis "Utility for mocking out the `requests` Python library")
9352 (description "A utility library for mocking out the `requests` Python
9353library.")
f210e944 9354 (license license:asl2.0)))
0efde7d6
LF
9355
9356(define-public python2-responses
f210e944 9357 (package-with-python2 python-responses))
76b94885 9358
b7afd018
RW
9359(define-public python-whoosh
9360 (package
9361 (name "python-whoosh")
9362 (version "2.7.4")
9363 (source
9364 (origin
9365 (method url-fetch)
9366 (uri (pypi-uri "Whoosh" version))
9367 (sha256
9368 (base32
9369 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
9370 (build-system python-build-system)
9371 (native-inputs
f3b98f4f 9372 `(("python-pytest" ,python-pytest)))
b7afd018
RW
9373 (home-page "http://bitbucket.org/mchaput/whoosh")
9374 (synopsis "Full text indexing, search, and spell checking library")
9375 (description
9376 "Whoosh is a fast, pure-Python full text indexing, search, and spell
9377checking library.")
9378 (license license:bsd-2)))
9379
9380(define-public python2-whoosh
9381 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
9382 (package (inherit whoosh)
9383 (propagated-inputs
9384 `(("python2-backport-ssl-match-hostname"
9385 ,python2-backport-ssl-match-hostname)
9386 ,@(package-propagated-inputs whoosh))))))
9387
76b94885
LF
9388(define-public python-pathlib
9389 (package
9390 (name "python-pathlib")
9391 (version "1.0.1")
9392 (source (origin
9393 (method url-fetch)
9394 (uri (pypi-uri "pathlib" version))
9395 (sha256
9396 (base32
9397 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
9398 (build-system python-build-system)
92a312dc
RW
9399 ;; The tests depend on the internal "test" module, which does not provide
9400 ;; a stable interface.
9401 (arguments `(#:tests? #f))
76b94885 9402 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
9403 (synopsis "Object-oriented file system paths")
9404 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
9405It offers the following advantages over using string objects:
9406
9407@enumerate
9408@item No more cumbersome use of os and os.path functions. Everything can
9409be done easily through operators, attribute accesses, and method calls.
9410@item Embodies the semantics of different path types. For example,
9411comparing Windows paths ignores casing.
9412@item Well-defined semantics, eliminating any inconsistencies or
9413ambiguities (forward vs. backward slashes, etc.).
7a8894e8
HG
9414@end enumerate
9415
9416Note: In Python 3.4, pathlib is now part of the standard library. For other
9417Python versions please consider python-pathlib2 instead, which tracks the
9418standard library module. This module (python-pathlib) isn't maintained
9419anymore.")
76b94885
LF
9420 (license license:expat)))
9421
9422(define-public python2-pathlib
9423 (package-with-python2 python-pathlib))
25a7db0a 9424
b7703c81
HG
9425(define-public python2-pathlib2
9426 (package
9427 (name "python2-pathlib2")
9428 (version "2.1.0")
9429 (source (origin
9430 (method url-fetch)
9431 (uri (pypi-uri "pathlib2" version))
9432 (sha256
9433 (base32
9434 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
9435 (build-system python-build-system)
49a531f5
HG
9436 ;; We only need the the Python 2 variant, since for Python 3 our minimum
9437 ;; version is 3.4 which already includes this package as part of the
9438 ;; standard library.
b7703c81
HG
9439 (arguments
9440 `(#:python ,python-2))
9441 (native-inputs
f3b98f4f 9442 `(("python2-six" ,python2-six)))
b7703c81
HG
9443 (home-page "http://pypi.python.org/pypi/pathlib2/")
9444 (synopsis "Object-oriented file system paths - backport of standard
9445pathlib module")
9446 (description "The goal of pathlib2 is to provide a backport of standard
9447pathlib module which tracks the standard library module, so all the newest
9448features of the standard pathlib can be used also on older Python versions.
9449
9450Pathlib offers a set of classes to handle file system paths. It offers the
9451following advantages over using string objects:
9452
9453@enumerate
9454@item No more cumbersome use of os and os.path functions. Everything can
9455be done easily through operators, attribute accesses, and method calls.
9456@item Embodies the semantics of different path types. For example,
9457comparing Windows paths ignores casing.
9458@item Well-defined semantics, eliminating any inconsistencies or
9459ambiguities (forward vs. backward slashes, etc.).
9460@end enumerate")
9461 (license license:expat)))
9462
25a7db0a
LF
9463(define-public python-jellyfish
9464 (package
9465 (name "python-jellyfish")
8c4964dd 9466 (version "0.5.6")
25a7db0a
LF
9467 (source (origin
9468 (method url-fetch)
9469 (uri (pypi-uri "jellyfish" version))
9470 (sha256
9471 (base32
8c4964dd 9472 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
25a7db0a
LF
9473 (build-system python-build-system)
9474 (native-inputs
9475 `(("python-pytest" ,python-pytest)))
9476 (home-page "https://github.com/jamesturk/jellyfish")
9477 (synopsis "Approximate and phonetic matching of strings")
9478 (description "Jellyfish uses a variety of string comparison and phonetic
9479encoding algorithms to do fuzzy string matching.")
3f641af0 9480 (license license:bsd-2)
25a7db0a
LF
9481 (properties `((python2-variant . ,(delay python2-jellyfish))))))
9482
9483(define-public python2-jellyfish
9484 (let ((jellyfish (package-with-python2
9485 (strip-python2-variant python-jellyfish))))
9486 (package (inherit jellyfish)
00e10c6e 9487 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
25a7db0a 9488 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
9489
9490(define-public python2-unicodecsv
9491 (package
9492 (name "python2-unicodecsv")
9493 (version "0.14.1")
9494 (source (origin
9495 (method url-fetch)
9496 ;; The test suite is not included in the PyPi release.
9497 ;; https://github.com/jdunck/python-unicodecsv/issues/19
9498 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
9499 "archive/" version ".tar.gz"))
9500 (file-name (string-append name "-" version ".tar.gz"))
9501 (sha256
9502 (base32
9503 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
9504 (build-system python-build-system)
9505 (arguments
9506 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
9507 #:python ,python-2))
9508 (native-inputs
f3b98f4f 9509 `(("python2-unittest2" ,python2-unittest2)))
13edb0e5
LF
9510 (home-page "https://github.com/jdunck/python-unicodecsv")
9511 (synopsis "Unicode CSV module for Python 2")
9512 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
9513module, adding support for Unicode strings.")
3f641af0 9514 (license license:bsd-2)))
064503aa
LF
9515
9516(define-public python-rarfile
9517 (package
9518 (name "python-rarfile")
67824447 9519 (version "2.8")
064503aa
LF
9520 (source (origin
9521 (method url-fetch)
9522 (uri (pypi-uri "rarfile" version))
9523 (sha256
9524 (base32
67824447 9525 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
064503aa
LF
9526 (build-system python-build-system)
9527 (arguments
9528 '(#:phases
9529 (modify-phases %standard-phases
9530 (replace 'check
9531 ;; Many tests fail, but the installation proceeds.
9532 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
9533 (native-inputs
9534 `(("which" ,which))) ; required for tests
9535 (propagated-inputs
9536 `(("libarchive" ,libarchive)))
9537 (home-page "https://github.com/markokr/rarfile")
9538 (synopsis "RAR archive reader for Python")
9539 (description "This is Python module for RAR archive reading. The interface
9540is made as zipfile like as possible.")
3f641af0 9541 (license license:isc)))
064503aa
LF
9542
9543(define-public python2-rarfile
9544 (package-with-python2 python-rarfile))
daeeea71
CM
9545
9546(define-public python-magic
9547 (package
9548 (name "python-magic")
9549 (version "0.4.3")
9550 (source
9551 (origin
9552 (method url-fetch)
9553 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
9554 version ".tar.gz"))
9555 (sha256
9556 (base32
9557 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
9558 (file-name (string-append name "-" version "-checkout"))))
9559 (build-system python-build-system)
9560 (arguments
9561 ;; The tests are unreliable, so don't run them. The tests fail
9562 ;; under Python3 because they were written for Python2 and
9563 ;; contain import statements that do not work in Python3. One of
9564 ;; the tests fails under Python2 because its assertions are
9565 ;; overly stringent; it relies on comparing output strings which
9566 ;; are brittle and can change depending on the version of
9567 ;; libmagic being used and the system on which the test is
9568 ;; running. In my case, under GuixSD 0.10.0, only one test
9569 ;; failed, and it seems to have failed only because the version
9570 ;; of libmagic that is packaged in Guix outputs a slightly
9571 ;; different (but not wrong) string than the one that the test
9572 ;; expected.
9573 '(#:tests? #f
9574 #:phases (modify-phases %standard-phases
9575 ;; Replace a specific method call with a hard-coded
9576 ;; path to the necessary libmagic.so file in the
9577 ;; store. If we don't do this, then the method call
9578 ;; will fail to find the libmagic.so file, which in
9579 ;; turn will cause any application using
9580 ;; python-magic to fail.
9581 (add-before 'build 'hard-code-path-to-libmagic
9582 (lambda* (#:key inputs #:allow-other-keys)
9583 (let ((file (assoc-ref inputs "file")))
9584 (substitute* "magic.py"
9585 (("ctypes.util.find_library\\('magic'\\)")
9586 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
9587 #t)))
9588 (add-before 'install 'disable-egg-compression
9589 (lambda _
9590 (let ((port (open-file "setup.cfg" "a")))
9591 (display "\n[easy_install]\nzip_ok = 0\n"
9592 port)
9593 (close-port port)
9594 #t))))))
daeeea71
CM
9595 (inputs
9596 ;; python-magic needs to be able to find libmagic.so.
9597 `(("file" ,file)))
9598 (home-page "https://github.com/ahupp/python-magic")
9599 (synopsis "File type identification using libmagic")
9600 (description
9601 "This module uses ctypes to access the libmagic file type
9602identification library. It makes use of the local magic database and
9603supports both textual and MIME-type output. Note that this module and
9604the python-file module both provide a \"magic.py\" file; these two
9605modules, which are different and were developed separately, both serve
9606the same purpose: to provide Python bindings for libmagic.")
9607 (license license:expat)))
9608
9609(define-public python2-magic
9610 (package-with-python2 python-magic))
12af303f
CM
9611
9612(define-public python2-s3cmd
9613 (package
9614 (name "python2-s3cmd")
9615 (version "1.6.1")
9616 (source
9617 (origin
9618 (method url-fetch)
de67e922 9619 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
9620 "s3cmd-" version ".tar.gz"))
9621 (sha256
9622 (base32
9623 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
9624 (build-system python-build-system)
9625 (arguments
9626 ;; s3cmd is written for python2 only and contains no tests.
9627 `(#:python ,python-2
9628 #:tests? #f))
f22efa01 9629 (propagated-inputs
12af303f
CM
9630 `(("python2-dateutil" ,python2-dateutil)
9631 ;; The python-file package also provides a magic.py module.
9632 ;; This is an unfortunate state of affairs; however, s3cmd
9633 ;; fails to install if it cannot find specifically the
9634 ;; python-magic package. Thus we include it, instead of using
9635 ;; python-file. Ironically, s3cmd sometimes works better
9636 ;; without libmagic bindings at all:
9637 ;; https://github.com/s3tools/s3cmd/issues/198
9638 ("python2-magic" ,python2-magic)))
9639 (home-page "http://s3tools.org/s3cmd")
9640 (synopsis "Command line tool for S3-compatible storage services")
9641 (description
9642 "S3cmd is a command line tool for uploading, retrieving and managing data
9643in storage services that are compatible with the Amazon Simple Storage
9644Service (S3) protocol, including S3 itself. It supports rsync-like backup,
9645GnuPG encryption, and more. It also supports management of Amazon's
9646CloudFront content delivery network.")
3f641af0 9647 (license license:gpl2+)))
4323a5f0
AE
9648
9649(define-public python-pkgconfig
9650 (package
9651 (name "python-pkgconfig")
9652 (version "1.1.0")
9653 (source
9654 (origin
9655 (method url-fetch)
9656 (uri (pypi-uri "pkgconfig" version))
9657 (sha256
9658 (base32
9659 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
9660 (build-system python-build-system)
9661 (native-inputs
f3b98f4f 9662 `(("python-nose" ,python-nose)))
4323a5f0
AE
9663 (inputs
9664 `(("pkg-config" ,pkg-config)))
9665 (arguments
9666 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
9667 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
9668 #:tests? #f
4323a5f0
AE
9669 ;; Hard-code the path to pkg-config.
9670 #:phases
9671 (modify-phases %standard-phases
9672 (add-before
9673 'build 'patch
9674 (lambda _
9675 (substitute* "pkgconfig/pkgconfig.py"
9676 (("cmd = 'pkg-config")
9677 (string-append "cmd = '" (which "pkg-config"))))
9678 #t)))))
9679 (home-page "http://github.com/matze/pkgconfig")
9680 (synopsis "Python interface for pkg-config")
9681 (description "This module provides a Python interface to pkg-config. It
9682can be used to find all pkg-config packages, check if a package exists,
9683check if a package meets certain version requirements, query CFLAGS and
9684LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 9685 (license license:expat)))
4323a5f0
AE
9686
9687(define-public python2-pkgconfig
9688 (package-with-python2 python-pkgconfig))
9689
2e697322
BW
9690(define-public python-bz2file
9691 (package
9692 (name "python-bz2file")
9693 (version "0.98")
9694 (source
9695 (origin
9696 (method url-fetch)
9697 (uri (pypi-uri "bz2file" version))
9698 (sha256
9699 (base32
9700 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
9701 (build-system python-build-system)
9702 (arguments
124df723 9703 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
9704 (home-page "https://github.com/nvawda/bz2file")
9705 (synopsis "Read and write bzip2-compressed files")
9706 (description
9707 "Bz2file is a Python library for reading and writing bzip2-compressed
9708files. It contains a drop-in replacement for the I/O interface in the
9709standard library's @code{bz2} module, including features from the latest
9710development version of CPython that are not available in older releases.")
3f641af0 9711 (license license:asl2.0)
2e697322
BW
9712 (properties `((python2-variant . ,(delay python2-bz2file))))))
9713
9714(define-public python2-bz2file
9715 (let ((base (package-with-python2
9716 (strip-python2-variant python-bz2file))))
9717 (package
9718 (inherit base)
124df723 9719 (arguments
752bb447
BW
9720 `(#:python ,python-2
9721 #:phases
124df723
BW
9722 (modify-phases %standard-phases
9723 ;; 'python setup.py test' does not work as of 0.98.
9724 ;; There is only the one test file, so we run it directly.
9725 (replace 'check
9726 (lambda _ (zero? (system* "python"
9727 "test_bz2file.py"))))))))))
2e697322 9728
da4ac1aa
BW
9729(define-public python-future
9730 (package
9731 (name "python-future")
9732 (version "0.15.2")
9733 (source
9734 (origin
9735 (method url-fetch)
9736 (uri (pypi-uri "future" version))
9737 (sha256
9738 (base32
9739 "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx"))))
9740 (build-system python-build-system)
9741 ;; Many tests connect to the network or are otherwise flawed.
9742 ;; https://github.com/PythonCharmers/python-future/issues/210
9743 (arguments
9744 `(#:tests? #f))
9745 (home-page "http://python-future.org")
9746 (synopsis "Single-source support for Python 3 and 2")
9747 (description
9748 "@code{python-future} is the missing compatibility layer between Python 2 and
9749Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
9750to support both Python 2 and Python 3 with minimal overhead.")
f210e944 9751 (license license:expat)))
da4ac1aa
BW
9752
9753(define-public python2-future
f210e944 9754 (package-with-python2 python-future))
da4ac1aa 9755
8e451885
AE
9756(define-public python-cysignals
9757 (package
9758 (name "python-cysignals")
9759 (version "1.1.0")
9760 (source
9761 (origin
9762 (method url-fetch)
9763 (uri (pypi-uri "cysignals" version ".tar.bz2"))
9764 (sha256
9765 (base32
9766 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
9767 (build-system python-build-system)
9768 (native-inputs
9769 `(("python-cython" ,python-cython)
8e451885
AE
9770 ("python-sphinx" ,python-sphinx)))
9771 (inputs
9772 `(("pari-gp" ,pari-gp)))
9773 (arguments
9774 `(#:modules ((guix build python-build-system)
9775 ((guix build gnu-build-system) #:prefix gnu:)
9776 (guix build utils))
9777 ;; FIXME: Tests are executed after installation and currently fail
9778 ;; when not installing into standard locations; the author is working
9779 ;; on a fix.
9780 #:tests? #f
9781 #:phases
9782 (modify-phases %standard-phases
9783 (add-before
9784 'build 'configure
9785 (assoc-ref gnu:%standard-phases 'configure)))))
9786 (home-page
9787 "https://github.com/sagemath/cysignals")
9788 (synopsis
9789 "Handling of interrupts and signals for Cython")
9790 (description
9791 "The cysignals package provides mechanisms to handle interrupts (and
9792other signals and errors) in Cython code, using two related approaches,
9793for mixed Cython/Python code or external C libraries and pure Cython code,
9794respectively.")
3f641af0 9795 (license license:lgpl3+)))
8e451885
AE
9796
9797(define-public python2-cysignals
9798 (package-with-python2 python-cysignals))
9799
63bcec71
DM
9800(define-public python2-shedskin
9801 (package
9802 (name "python2-shedskin")
9803 (version "0.9.4")
9804 (source
9805 (origin
9806 (method url-fetch)
9807 (uri (string-append "https://github.com/shedskin/shedskin/"
9808 "releases/download/v" version
9809 "/shedskin-" version ".tgz"))
9810 (sha256
9811 (base32
9812 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
9813 (build-system python-build-system)
9814 (arguments
9815 `(#:python ,python-2
9816 #:phases (modify-phases %standard-phases
9817 (add-after 'unpack 'fix-resulting-include-libs
9818 (lambda* (#:key inputs #:allow-other-keys)
9819 (let ((libgc (assoc-ref inputs "libgc"))
9820 (pcre (assoc-ref inputs "pcre")))
9821 (substitute* "shedskin/makefile.py"
9822 (("variable == 'CCFLAGS':[ ]*")
9823 (string-append "variable == 'CCFLAGS':\n"
9824 " line += ' -I " pcre "/include"
9825 " -I " libgc "/include'"))
9826 (("variable == 'LFLAGS':[ ]*")
9827 (string-append "variable == 'LFLAGS':\n"
9828 " line += ' -L" pcre "/lib"
9829 " -L " libgc "/lib'")))
9830 #t))))))
63bcec71
DM
9831 (inputs `(("pcre" ,pcre)
9832 ("libgc" ,libgc)))
9833 (home-page "https://shedskin.github.io/")
9834 (synopsis "Experimental Python-2 to C++ Compiler")
9835 (description (string-append "This is an experimental compiler for a subset of
9836Python. It generates C++ code and a Makefile."))
3f641af0 9837 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
9838
9839(define-public python2-rope
9840 (package
9841 (name "python2-rope")
9842 (version "0.10.3")
9843 (source
9844 (origin
9845 (method url-fetch)
9846 (uri (pypi-uri "rope" version))
9847 (sha256
9848 (base32
9849 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
9850 (arguments
9851 ;; Rope is currently python-2 only.
9852 ;; https://github.com/python-rope/rope/issues/57
9853 `(#:python ,python-2))
9854 (build-system python-build-system)
9855 (native-inputs
f3b98f4f 9856 `(("python2-unittest2" ,python2-unittest2)))
88bb4197
LG
9857 (home-page "https://github.com/python-rope/rope")
9858 (synopsis "Refactoring library for Python")
9859 (description "Rope is a refactoring library for Python. It facilitates
9860the renaming, moving and extracting of attributes, functions, modules, fields
9861and parameters in Python 2 source code. These refactorings can also be applied
9862to occurences in strings and comments.")
3f641af0 9863 (license license:gpl2)))
6ba8ca17
9864
9865(define-public python-py3status
9866 (package
9867 (name "python-py3status")
d2262d70 9868 (version "3.1")
6ba8ca17
9869 (source
9870 (origin
9871 (method url-fetch)
9872 (uri (pypi-uri "py3status" version))
9873 (sha256
9874 (base32
d2262d70 9875 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17 9876 (build-system python-build-system)
6ba8ca17
9877 (home-page "https://github.com/ultrabug/py3status")
9878 (synopsis "Extensible i3status wrapper written in Python")
9879 (description "py3status is an i3status wrapper which extends i3status
9880functionality in a modular way, allowing you to extend your panel with your
9881own code, responding to click events and updating clock every second.")
3f641af0 9882 (license license:bsd-3)))
b8fdbca3
HG
9883
9884(define-public python-tblib
9885 (package
9886 (name "python-tblib")
9887 (version "1.3.0")
9888 (source (origin
9889 (method url-fetch)
9890 (uri (pypi-uri "tblib" version))
9891 (sha256 (base32
9892 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
9893 (build-system python-build-system)
9894 (arguments
9895 `(#:phases
9896 (modify-phases %standard-phases
9897 (replace 'check
9898 (lambda _
9899 ;; Upstream runs tests after installation and the package itself
9900 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
9901 ;; found.
9902 (setenv "PYTHONPATH"
9903 (string-append (getcwd) "/build/lib:"
9904 (getenv "PYTHONPATH")))
9905 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
9906 (native-inputs
9907 `(("python-pytest" ,python-pytest)
b8fdbca3
HG
9908 ("python-six" ,python-six)))
9909 (home-page "https://github.com/ionelmc/python-tblib")
9910 (synopsis "Traceback serialization library")
9911 (description
9912 "Traceback serialization allows you to:
9913
9914@enumerate
9915@item Pickle tracebacks and raise exceptions with pickled tracebacks in
9916different processes. This allows better error handling when running code over
9917multiple processes (imagine multiprocessing, billiard, futures, celery etc).
9918
9919@item Parse traceback strings and raise with the parsed tracebacks.
9920@end itemize")
3f641af0 9921 (license license:bsd-3)))
b8fdbca3
HG
9922
9923(define-public python2-tblib
9924 (package-with-python2 python-tblib))
1a024de4
HG
9925
9926(define-public python-sqlparse
9927 (package
9928 (name "python-sqlparse")
9929 (version "0.1.19")
9930 (source (origin
9931 (method url-fetch)
9932 (uri (pypi-uri "sqlparse" version))
9933 (sha256
9934 (base32
9935 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
9936 (build-system python-build-system)
9937 (arguments
9938 `(#:phases
9939 (modify-phases %standard-phases
9940 (replace 'check
9941 (lambda* _
9942 ;; setup.py-integrated 2to3 only affects the build files, but
9943 ;; py.test is using the source files. So we need to convert them
9944 ;; manually.
9945 (when (zero? (system* "python3"))
9946 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
9947 (zero? (system* "py.test")))))))
9948 (native-inputs
f3b98f4f 9949 `(("python-pytest" ,python-pytest)))
1a024de4
HG
9950 (home-page "https://github.com/andialbrecht/sqlparse")
9951 (synopsis "Non-validating SQL parser")
9952 (description "Sqlparse is a non-validating SQL parser for Python. It
9953provides support for parsing, splitting and formatting SQL statements.")
3f641af0 9954 (license license:bsd-3)))
1a024de4
HG
9955
9956(define-public python2-sqlparse
9957 (package-with-python2 python-sqlparse))
68b9d242
SB
9958
9959(define-public python-greenlet
9960 (package
9961 (name "python-greenlet")
9962 (version "0.4.9")
9963 (source (origin
9964 (method url-fetch)
9965 (uri (pypi-uri "greenlet" version))
9966 (sha256
9967 (base32
9968 "04h0m54dyqg49vyarq26mry6kbivnpl47rnmmrk9qn8wpfxviybr"))))
9969 (build-system python-build-system)
68b9d242
SB
9970 (home-page "https://greenlet.readthedocs.io/")
9971 (synopsis "Lightweight in-process concurrent programming")
9972 (description
9973 "Greenlet package is a spin-off of Stackless, a version of CPython
9974that supports micro-threads called \"tasklets\". Tasklets run
9975pseudo-concurrently (typically in a single or a few OS-level threads) and
9976are synchronized with data exchanges on \"channels\".")
3f641af0 9977 (license (list license:psfl license:expat))))
68b9d242
SB
9978
9979(define-public python2-greenlet
9980 (package-with-python2 python-greenlet))
d79a343b
SB
9981
9982(define-public python-gevent
9983 (package
9984 (name "python-gevent")
9985 (version "1.1.1")
9986 (source (origin
9987 (method url-fetch)
9988 (uri (pypi-uri "gevent" version))
9989 (sha256
9990 (base32
9991 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
9992 (modules '((guix build utils)))
9993 (snippet
9994 '(begin
9995 ;; unbunding libev and c-ares
9996 (for-each delete-file-recursively '("libev" "c-ares"))
9997 ;; fixing testsuite
9998 (call-with-output-file "greentest/__init__.py" noop)
9999 (substitute* "greentest/testrunner.py"
10000 (("import util") "from . import util")
10001 (("from util import log") "from .util import log"))))))
10002 (build-system python-build-system)
10003 (propagated-inputs
10004 `(("python-greenlet" ,python-greenlet)))
10005 (native-inputs
f3b98f4f 10006 `(("python-six" ,python-six)))
d79a343b
SB
10007 (inputs
10008 `(("c-ares" ,c-ares)
10009 ("libev" ,libev)))
10010 (home-page "http://www.gevent.org/")
10011 (synopsis "Coroutine-based network library")
10012 (description
10013 "gevent is a coroutine-based Python networking library that uses greenlet
10014to provide a high-level synchronous API on top of the libev event loop.")
10015 (license license:expat)))
10016
10017(define-public python2-gevent
10018 (package-with-python2 python-gevent))
da3aeeb6
SB
10019
10020(define-public python-twisted
10021 (package
10022 (name "python-twisted")
10023 (version "16.2.0")
10024 (source (origin
10025 (method url-fetch)
8ea8e8d3 10026 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
10027 (sha256
10028 (base32
10029 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
10030 (build-system python-build-system)
45912170
SB
10031 (propagated-inputs
10032 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
10033 (home-page "https://twistedmatrix.com/")
10034 (synopsis "Asynchronous networking framework written in Python")
10035 (description
10036 "Twisted is an extensible framework for Python programming, with special
10037focus on event-based network programming and multiprotocol integration.")
10038 (license license:expat)))
10039
10040(define-public python2-twisted
10041 (package-with-python2 python-twisted))
d0b6fed6 10042
4d3fa5a4
EF
10043(define-public python-pika
10044 (package
10045 (name "python-pika")
10046 (version "0.10.0")
10047 (source
10048 (origin
10049 (method url-fetch)
10050 (uri (pypi-uri "pika" version))
10051 (sha256
10052 (base32
10053 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
10054 (build-system python-build-system)
10055 (native-inputs
269d9172
LF
10056 `(("python-pyev" ,python-pyev)
10057 ("python-tornado" ,python-tornado)
10058 ("python-twisted" ,python-twisted)))
4d3fa5a4
EF
10059 (home-page "https://pika.readthedocs.org")
10060 (synopsis "Pure Python AMQP Client Library")
10061 (description
10062 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
10063Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
10064network support library.")
10065 (license license:bsd-3)))
10066
10067(define-public python2-pika
10068 (package-with-python2 python-pika))
10069
d0b6fed6
DM
10070(define-public python-ply
10071 (package
10072 (name "python-ply")
10073 (version "3.8")
10074 (source
10075 (origin
10076 (method url-fetch)
10077 (uri (string-append
10078 "https://pypi.python.org/packages/"
10079 "96/e0/430fcdb6b3ef1ae534d231397bee7e9304be14a47a267e82ebcb3323d0b5"
10080 "/ply-" version ".tar.gz"))
10081 (sha256
10082 (base32
10083 "1f70ipynmiy09k6px2j7v4w5cdrc21za3xs2k6f1bsvb0bzvvlg7"))))
10084 (build-system python-build-system)
10085 (home-page "http://www.dabeaz.com/ply/")
10086 (synopsis "Python Lex & Yacc")
10087 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
10088It uses LR parsing and does extensive error checking.")
f210e944 10089 (license license:bsd-3)))
d0b6fed6
DM
10090
10091(define-public python2-ply
f210e944 10092 (package-with-python2 python-ply))
d951bd54
SB
10093
10094(define-public python-tabulate
10095 (package
10096 (name "python-tabulate")
10097 (version "0.7.5")
10098 (source (origin
10099 (method url-fetch)
10100 (uri (pypi-uri "tabulate" version))
10101 (sha256
10102 (base32
10103 "03l1r7ddd1a0j2snv1yd0hlnghjad3fg1an1jr8936ksv75slwch"))
10104 ;; Fix tests
10105 (modules '((guix build utils)))
10106 (snippet '(substitute* '("test/test_cli.py"
10107 "test/test_input.py"
10108 "test/test_output.py"
10109 "test/test_regression.py")
10110 (("from common") "from nose.tools")))))
10111 (build-system python-build-system)
10112 (native-inputs
f3b98f4f 10113 `(;; For testing
d951bd54
SB
10114 ("python-nose" ,python-nose)))
10115 (home-page "https://bitbucket.org/astanin/python-tabulate")
10116 (synopsis "Pretty-print tabular data")
10117 (description
10118 "Tabulate is a library and command-line utility to pretty-print tabular
10119data in Python.")
10120 (license license:expat)))
10121
10122(define-public python2-tabulate
10123 (package-with-python2 python-tabulate))
1c4c8a33
SB
10124
10125(define-public python-kazoo
10126 (package
10127 (name "python-kazoo")
10128 (version "2.2.1")
10129 (source
10130 (origin
10131 (method url-fetch)
10132 (uri (pypi-uri "kazoo" version))
10133 (sha256
10134 (base32
10135 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
10136 (build-system python-build-system)
10137 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
c18899e8
SB
10138 (propagated-inputs
10139 `(("python-six" ,python-six)))
1c4c8a33
SB
10140 (home-page "https://kazoo.readthedocs.org")
10141 (synopsis "High-level Zookeeper client library")
10142 (description
10143 "Kazoo is a Python client library for the Apache Zookeeper distributed
10144application service. It is designed to be easy to use and to avoid common
10145programming errors.")
3f641af0 10146 (license license:asl2.0)))
1c4c8a33
SB
10147
10148(define-public python2-kazoo
10149 (package-with-python2 python-kazoo))
45dda35e
SB
10150
10151(define-public python-pykafka
10152 (package
10153 (name "python-pykafka")
10154 (version "2.4.0")
10155 (source (origin
10156 (method url-fetch)
c6bccf71
EF
10157 (uri (string-append
10158 "https://pypi.python.org/packages/8b/3e/"
10159 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
10160 "pykafka-" version ".tar.gz"))
45dda35e
SB
10161 (sha256
10162 (base32
10163 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
10164 (build-system python-build-system)
10165 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
c8fa3d9b 10166 (propagated-inputs
45dda35e
SB
10167 `(("python-gevent" ,python-gevent)
10168 ("python-kazoo" ,python-kazoo)
45dda35e
SB
10169 ("python-tabulate" ,python-tabulate)))
10170 (inputs
10171 `(("librdkafka" ,librdkafka)))
10172 (home-page "https://pykafka.readthedocs.io/")
10173 (synopsis "Apache Kafka client for Python")
10174 (description
10175 "PyKafka is a client for the Apache Kafka distributed messaging system.
10176It includes Python implementations of Kafka producers and consumers, which
10177are optionally backed by a C extension built on librdkafka.")
3f641af0 10178 (license license:asl2.0)))
45dda35e
SB
10179
10180(define-public python2-pykafka
10181 (package-with-python2 python-pykafka))
a44fd439
DM
10182
10183(define-public python-wcwidth
10184 (package
10185 (name "python-wcwidth")
10186 (version "0.1.6")
10187 (source
10188 (origin
10189 (method url-fetch)
10190 (uri (string-append
10191 "https://pypi.python.org/packages/"
10192 "c2/d1/7689293086a8d5320025080cde0e3155b94ae0a7496fb89a3fbaa92c354a/"
10193 "wcwidth-" version ".tar.gz"))
10194 (sha256
10195 (base32
10196 "02wjrpf001gjdjsaxxbzcwfg19crlk2dbddayrfc2v06f53yrcyw"))))
10197 (build-system python-build-system)
10198 (home-page "https://github.com/jquast/wcwidth")
66e07664 10199 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
10200 (description "Wcwidth measures the number of terminal column cells of
10201wide-character codes. It is useful for those implementing a terminal emulator,
10202or programs that carefully produce output to be interpreted by one. It is a
10203Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
10204specified in POSIX.1-2001 and POSIX.1-2008.")
f210e944 10205 (license license:expat)))
a44fd439
DM
10206
10207(define-public python2-wcwidth
f210e944 10208 (package-with-python2 python-wcwidth))
0de78c95
DP
10209
10210(define-public python2-jsonrpclib
10211 (package
10212 (name "python2-jsonrpclib")
10213 (version "0.1.7")
10214 (source (origin
10215 (method url-fetch)
10216 (uri (string-append
10217 "https://pypi.python.org/packages/source/j/jsonrpclib/"
10218 "jsonrpclib-" version ".tar.gz"))
10219 (sha256
10220 (base32
10221 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
10222 (build-system python-build-system)
0de78c95
DP
10223 (arguments
10224 `(#:tests? #f
10225 #:python ,python-2))
10226 (home-page "https://github.com/joshmarshall/jsonrpclib/")
10227 (synopsis "Implementation of JSON-RPC specification for Python")
10228 (description
10229 "This library is an implementation of the JSON-RPC specification.
10230It supports both the original 1.0 specification, as well as the
10231new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
10232etc.")
3f641af0 10233 (license license:asl2.0)))
9250b0f3
SB
10234
10235(define-public python-chai
10236 (package
10237 (name "python-chai")
10238 (version "1.1.1")
10239 (source (origin
10240 (method url-fetch)
10241 (uri (pypi-uri "chai" version))
10242 (sha256
10243 (base32
10244 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
10245 (build-system python-build-system)
9250b0f3
SB
10246 (home-page "https://github.com/agoragames/chai")
10247 (synopsis "Mocking framework for Python")
10248 (description
10249 "Chai provides an api for mocking, stubbing and spying your python
10250objects, patterned after the Mocha library for Ruby.")
3f641af0 10251 (license license:bsd-3)))
9250b0f3
SB
10252
10253(define-public python2-chai
10254 (package-with-python2 python-chai))
10255
ae43baa8
SB
10256(define-public python-arrow
10257 (package
10258 (name "python-arrow")
10259 (version "0.8.0")
10260 (source (origin
10261 (method url-fetch)
10262 (uri (pypi-uri "arrow" version))
10263 (sha256
10264 (base32
10265 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
10266 (build-system python-build-system)
10267 (native-inputs
f3b98f4f 10268 `(;; For testing
ae43baa8
SB
10269 ("python-chai" ,python-chai)
10270 ("python-simplejson" ,python-simplejson)))
36aed736
SB
10271 (propagated-inputs
10272 `(("python-dateutil" ,python-dateutil-2)))
ae43baa8
SB
10273 (home-page "https://github.com/crsmithdev/arrow/")
10274 (synopsis "Dates and times for Python")
10275 (description
10276 "Arrow is a Python library to creating, manipulating, formatting and
10277converting dates, times, and timestamps. It implements and updates the
10278datetime type.")
3f641af0 10279 (license license:asl2.0)))
ae43baa8
SB
10280
10281(define-public python2-arrow
10282 (package-with-python2 python-arrow))
10283
1f2b62a4
SB
10284(define-public python-inflection
10285 (package
10286 (name "python-inflection")
10287 (version "0.3.1")
10288 (source
10289 (origin (method url-fetch)
10290 (uri (pypi-uri "inflection" version))
10291 (sha256
10292 (base32
10293 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
10294 (build-system python-build-system)
1f2b62a4
SB
10295 (home-page "http://github.com/jpvanhal/inflection")
10296 (synopsis "Python string transformation library")
10297 (description
10298 "Inflection is a string transformation library. It singularizes
10299and pluralizes English words, and transforms strings from CamelCase to
10300underscored string.")
10301 (license license:expat)))
10302
10303(define-public python2-inflection
10304 (package-with-python2 python-inflection))
10305
18995566
SB
10306(define-public python-pylev
10307 (package
10308 (name "python-pylev")
10309 (version "1.3.0")
10310 (source (origin
10311 (method url-fetch)
10312 (uri (pypi-uri "pylev" version))
10313 (sha256
10314 (base32
10315 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
10316 (build-system python-build-system)
18995566
SB
10317 (home-page "http://github.com/toastdriven/pylev")
10318 (synopsis "Levenshtein distance implementation in Python")
10319 (description "Pure Python Levenshtein implementation, based off the
10320Wikipedia code samples at
10321@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 10322 (license license:bsd-3)))
18995566
SB
10323
10324(define-public python2-pylev
10325 (package-with-python2 python-pylev))
10326
f5deff7a
SB
10327(define-public python-cleo
10328 (package
10329 (name "python-cleo")
10330 (version "0.4.1")
10331 (source (origin
10332 (method url-fetch)
10333 (uri (pypi-uri "cleo" version))
10334 (sha256
10335 (base32
10336 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
10337 (build-system python-build-system)
10338 (native-inputs
f3b98f4f 10339 `(;; For testing
f5deff7a
SB
10340 ("python-mock" ,python-mock)
10341 ("python-pytest" ,python-pytest)))
9403150a
SB
10342 (propagated-inputs
10343 `(("python-psutil" ,python-psutil)
10344 ("python-pylev" ,python-pylev)))
f5deff7a
SB
10345 (home-page "https://github.com/sdispater/cleo")
10346 (synopsis "Command-line arguments library for Python")
10347 (description
10348 "Cleo allows you to create command-line commands with signature in
10349docstring and colored output.")
10350 (license license:expat)))
10351
10352(define-public python2-cleo
10353 (package-with-python2 python-cleo))
10354
77cadb43
SB
10355(define-public python-lazy-object-proxy
10356 (package
10357 (name "python-lazy-object-proxy")
10358 (version "1.2.2")
10359 (source (origin
10360 (method url-fetch)
10361 (uri (pypi-uri "lazy-object-proxy" version))
10362 (sha256
10363 (base32
10364 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
10365 (build-system python-build-system)
77cadb43
SB
10366 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
10367 (synopsis "Lazy object proxy for python")
10368 (description
10369 "Lazy object proxy is an object that wraps a callable but defers the call
10370until the object is actually required, and caches the result of said call.")
3f641af0 10371 (license license:bsd-2)))
77cadb43
SB
10372
10373(define-public python2-lazy-object-proxy
10374 (package-with-python2 python-lazy-object-proxy))
10375
5477e05f
SB
10376(define-public python-dnspython
10377 (package
10378 (name "python-dnspython")
6c514128 10379 (version "1.15.0")
5477e05f
SB
10380 (source (origin
10381 (method url-fetch)
10382 (uri (string-append "http://www.dnspython.org/kits/"
10383 version "/dnspython-" version ".tar.gz"))
10384 (sha256
10385 (base32
6c514128 10386 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
5477e05f
SB
10387 (build-system python-build-system)
10388 (arguments '(#:tests? #f)) ; XXX: requires internet access
5477e05f
SB
10389 (home-page "http://www.dnspython.org")
10390 (synopsis "DNS toolkit for Python")
10391 (description
10392 "dnspython is a DNS toolkit for Python. It supports almost all record
10393types. It can be used for queries, zone transfers, and dynamic updates.
10394It supports TSIG authenticated messages and EDNS0.")
10395 (license license:expat)))
10396
10397(define-public python2-dnspython
10398 (package-with-python2 python-dnspython))
10399
22711e25
SB
10400(define-public python-email-validator
10401 (package
10402 (name "python-email-validator")
10403 (version "1.0.1")
10404 (source
10405 (origin (method url-fetch)
10406 (uri (pypi-uri "email_validator" version))
10407 (sha256
10408 (base32
10409 "0mn8jg5h8ifl8w6a6m0hq8kbk0mzw9vm054qfamkn89b3npz52qw"))))
10410 (build-system python-build-system)
10411 (arguments
10412 '(#:phases
10413 (modify-phases %standard-phases
10414 (add-before 'build 'use-dnspython
10415 (lambda _
10416 (substitute* "setup.py"
10417 (("dnspython3") "dnspython"))
10418 #t)))))
d42560bd 10419 (propagated-inputs
22711e25 10420 `(("python-dnspython" ,python-dnspython)
d42560bd 10421 ("python-idna" ,python-idna)))
22711e25
SB
10422 (home-page "https://github.com/JoshData/python-email-validator")
10423 (synopsis "Email address validation library for Python")
10424 (description
10425 "This library validates email address syntax and deliverability.")
3f641af0 10426 (license license:cc0)))
22711e25
SB
10427
10428(define-public python2-email-validator
10429 (package-with-python2 python-email-validator))
10430
8987d91e
SB
10431(define-public python-ukpostcodeparser
10432 (package
10433 (name "python-ukpostcodeparser")
10434 (version "1.0.3")
10435 (source (origin
10436 (method url-fetch)
10437 (uri (pypi-uri "UkPostcodeParser" version))
10438 (sha256
10439 (base32
10440 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
10441 (build-system python-build-system)
8987d91e
SB
10442 (home-page "https://github.com/hamstah/ukpostcodeparser")
10443 (synopsis "UK Postcode parser for Python")
10444 (description
10445 "This library provides the @code{parse_uk_postcode} function for
10446parsing UK postcodes.")
10447 (license license:expat)))
10448
10449(define-public python2-ukpostcodeparser
10450 (package-with-python2 python-ukpostcodeparser))
ea92ae01
SB
10451
10452(define-public python-fake-factory
10453 (package
10454 (name "python-fake-factory")
7adc698f 10455 (version "0.7.2")
ea92ae01
SB
10456 (source (origin
10457 (method url-fetch)
10458 (uri (pypi-uri "fake-factory" version))
10459 (sha256
10460 (base32
7adc698f 10461 "0vs0dkmg0dlaxf8w6q2i3k0i03gmp56ablldv7ci9x3nbadkn71g"))))
ea92ae01 10462 (build-system python-build-system)
ea92ae01 10463 (native-inputs
f3b98f4f 10464 `(;; For testing
ea92ae01
SB
10465 ("python-email-validator" ,python-email-validator)
10466 ("python-mock" ,python-mock)
10467 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
bbcd7297
SB
10468 (propagated-inputs
10469 `(("python-dateutil" ,python-dateutil-2)
10470 ("python-six" ,python-six)))
7adc698f 10471 (home-page "https://github.com/joke2k/faker")
ea92ae01
SB
10472 (synopsis "Python package that generates fake data")
10473 (description
10474 "Faker is a Python package that generates fake data such as names,
10475addresses, and phone numbers.")
10476 (license license:expat)
10477 (properties `((python2-variant . ,(delay python2-fake-factory))))))
10478
10479(define-public python2-fake-factory
10480 (let ((base (package-with-python2 (strip-python2-variant
10481 python-fake-factory))))
10482 (package
10483 (inherit base)
24c9aa18 10484 (propagated-inputs
ea92ae01 10485 `(("python2-ipaddress" ,python2-ipaddress)
24c9aa18 10486 ,@(package-propagated-inputs base))))))
ea92ae01 10487
b49504fd
SB
10488(define-public python-pyaml
10489 (package
10490 (name "python-pyaml")
10491 (version "15.8.2")
10492 (source (origin
10493 (method url-fetch)
10494 (uri (pypi-uri "pyaml" version))
10495 (sha256
10496 (base32
10497 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
10498 (build-system python-build-system)
b49504fd
SB
10499 (propagated-inputs
10500 `(("python-pyyaml" ,python-pyyaml)))
10501 (home-page "https://github.com/mk-fg/pretty-yaml")
10502 (synopsis "YAML pretty-print library for Python")
10503 (description
10504 "pyaml is a PyYAML based python module to produce pretty and readable
10505YAML-serialized data.")
3f641af0 10506 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
10507
10508(define-public python2-pyaml
10509 (package-with-python2 python-pyaml))
10510
347175a2
SB
10511(define-public python-flexmock
10512 (package
10513 (name "python-flexmock")
10514 (version "0.10.2")
10515 (source (origin
10516 (method url-fetch)
10517 (uri (pypi-uri "flexmock" version))
10518 (sha256
10519 (base32
10520 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
10521 (build-system python-build-system)
347175a2
SB
10522 (home-page "https://flexmock.readthedocs.org")
10523 (synopsis "Testing library for Python")
10524 (description
10525 "flexmock is a testing library for Python that makes it easy to create
10526mocks, stubs and fakes.")
3f641af0 10527 (license license:bsd-3)))
347175a2
SB
10528
10529(define-public python2-flexmock
10530 (package-with-python2 python-flexmock))
10531
5a744191
SB
10532(define-public python-orator
10533 (package
10534 (name "python-orator")
10535 (version "0.8.2")
10536 (source (origin
10537 (method url-fetch)
10538 (uri (pypi-uri "orator" version))
10539 (sha256
10540 (base32
10541 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
10542 (build-system python-build-system)
10543 (arguments '(#:tests? #f)) ; no tests
b2676030 10544 (propagated-inputs
5a744191
SB
10545 `(("python-arrow" ,python-arrow)
10546 ("python-blinker" ,python-blinker)
10547 ("python-cleo" ,python-cleo)
10548 ("python-fake-factory" ,python-fake-factory)
10549 ("python-inflection" ,python-inflection)
10550 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
10551 ("python-pyaml" ,python-pyaml)
5a744191
SB
10552 ("python-simplejson" ,python-simplejson)
10553 ("python-wrapt" ,python-wrapt)))
10554 (home-page "https://orator-orm.com/")
10555 (synopsis "ActiveRecord ORM for Python")
10556 (description
10557 "Orator provides a simple ActiveRecord-like Object Relational Mapping
10558implementation for Python.")
10559 (license license:expat)
10560 (properties `((python2-variant . ,(delay python2-orator))))))
10561
10562(define-public python2-orator
10563 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
10564 (package
10565 (inherit base)
06961617 10566 (propagated-inputs
5a744191 10567 `(("python2-ipaddress" ,python2-ipaddress)
06961617 10568 ,@(package-propagated-inputs base))))))
f4155188
DM
10569
10570(define-public python-prompt-toolkit
10571 (package
10572 (name "python-prompt-toolkit")
d15e2ef0 10573 (version "1.0.7")
f4155188
DM
10574 (source
10575 (origin
10576 (method url-fetch)
d15e2ef0 10577 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
10578 (sha256
10579 (base32
d15e2ef0 10580 "1vyjd0b7wciv55i19l44zy0adx8q7ss79lhy2r9d1rwz2y4822zg"))))
f4155188 10581 (build-system python-build-system)
bae18710
LF
10582 (arguments
10583 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
f22efa01
HG
10584 (propagated-inputs
10585 `(("python-wcwidth" ,python-wcwidth)
2c199b55 10586 ("python-six" ,python-six)
f22efa01 10587 ("python-pygments" ,python-pygments)))
f4155188
DM
10588 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
10589 (synopsis "Library for building command line interfaces in Python")
10590 (description
10591 "Prompt-Toolkit is a library for building interactive command line
10592interfaces in Python. It's like GNU Readline but it also features syntax
10593highlighting while typing, out-of-the-box multi-line input editing, advanced
10594code completion, incremental search, support for Chinese double-width
10595characters, mouse support, and auto suggestions.")
f210e944 10596 (license license:bsd-3)))
f4155188
DM
10597
10598(define-public python2-prompt-toolkit
f210e944 10599 (package-with-python2 python-prompt-toolkit))
a502dfbf
DM
10600
10601(define-public python-jedi
10602 (package
10603 (name "python-jedi")
10604 (version "0.9.0")
10605 (source
10606 (origin
10607 (method url-fetch)
10608 (uri (pypi-uri "jedi" version))
10609 (sha256
10610 (base32
10611 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
10612 (build-system python-build-system)
10613 (home-page "https://github.com/davidhalter/jedi")
10614 (synopsis
10615 "Autocompletion for Python that can be used for text editors")
10616 (description
10617 "Jedi is an autocompletion tool for Python that can be used for text editors.")
f210e944 10618 (license license:expat)))
a502dfbf
DM
10619
10620(define-public python2-jedi
f210e944 10621 (package-with-python2 python-jedi))
c2f0dc6e
DM
10622
10623(define-public ptpython
10624 (package
10625 (name "ptpython")
10626 (version "0.34")
10627 (source (origin
10628 (method url-fetch)
10629 (uri (pypi-uri "ptpython" version))
10630 (sha256
10631 (base32
10632 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
10633 (build-system python-build-system)
f22efa01 10634 (propagated-inputs
c2f0dc6e
DM
10635 `(("python-docopt" ,python-docopt)
10636 ("python-jedi" ,python-jedi)
10637 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 10638 ("python-pygments" ,python-pygments)))
c2f0dc6e
DM
10639 (home-page "https://github.com/jonathanslenders/ptpython")
10640 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
10641 (description
10642 "ptpython is a Python read-eval-print loop with IDE-like features.
10643It supports syntax highlighting, multiline editing, autocompletion, mouse,
10644color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
10645etc.")
3f641af0 10646 (license license:bsd-3)
c2f0dc6e
DM
10647 (properties `((python2-variant . ,(delay ptpython-2))))))
10648
10649(define-public ptpython-2
10650 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
10651 (package
10652 (inherit base)
10653 (name "ptpython2"))))
b227f0be 10654
b04a52a6
DJ
10655(define-public python-requests-oauthlib
10656 (package
10657 (name "python-requests-oauthlib")
10658 (version "0.6.2")
10659 (source
10660 (origin
10661 (method url-fetch)
10662 (uri (pypi-uri "requests-oauthlib" version))
10663 (sha256
10664 (base32
10665 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
10666 (build-system python-build-system)
10667 (arguments
10668 `(#:phases
10669 (modify-phases %standard-phases
10670 ;; removes tests that require network access
10671 (add-before 'check 'pre-check
10672 (lambda _
10673 (delete-file "tests/test_core.py")
10674 #t)))))
10675 (native-inputs
10676 `(("python-requests-mock" ,python-requests-mock)
10677 ("python-mock" ,python-mock)))
f22efa01 10678 (propagated-inputs
b04a52a6
DJ
10679 `(("python-oauthlib" ,python-oauthlib)
10680 ("python-requests" ,python-requests)))
10681 (home-page
10682 "https://github.com/requests/requests-oauthlib")
10683 (synopsis
10684 "OAuthlib authentication support for Requests")
10685 (description
10686 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
10687provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
f210e944 10688 (license license:isc)))
b04a52a6
DJ
10689
10690(define-public python2-requests-oauthlib
f210e944 10691 (package-with-python2 python-requests-oauthlib))
b04a52a6 10692
b227f0be 10693(define-public python-stem
10694 (package
10695 (name "python-stem")
10696 (version "1.4.1b")
10697 (source
10698 (origin
10699 (method url-fetch)
10700 (uri (pypi-uri "stem" version ".tar.bz2"))
10701 (sha256
10702 (base32
10703 "09a3amp1y351nwz088ckiibbp666qi2lxwkyknavswfm400s0ns7"))))
10704 (build-system python-build-system)
10705 (arguments
10706 `(#:phases
10707 (modify-phases %standard-phases
10708 (replace 'check
10709 (lambda _
10710 (zero? (system* "./run_tests.py" "--unit")))))))
10711 (native-inputs
10712 `(("python-mock" ,python-mock)
10713 ("python-pep8" ,python-pep8)
10714 ("python-pyflakes" ,python-pyflakes)))
f22efa01 10715 (propagated-inputs
b227f0be 10716 `(("python-pycrypto" ,python-pycrypto)))
10717 (home-page "https://stem.torproject.org/")
10718 (synopsis
10719 "Python controller library that allows applications to interact with Tor")
10720 (description
10721 "Stem is a Python controller library for Tor. With it you can use Tor's
10722control protocol to script against the Tor process and read descriptor data
10723relays publish about themselves.")
3f641af0 10724 (license license:lgpl3)))
b227f0be 10725
10726(define-public python2-stem
10727 (package-with-python2 python-stem))
517a6c0c
DM
10728
10729(define-public python-pyserial
10730 (package
10731 (name "python-pyserial")
10732 (version "3.1.1")
10733 (source
10734 (origin
10735 (method url-fetch)
10736 (uri (pypi-uri "pyserial" version))
10737 (sha256
10738 (base32
10739 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
10740 (build-system python-build-system)
10741 (home-page
10742 "https://github.com/pyserial/pyserial")
10743 (synopsis "Python Serial Port Bindings")
10744 (description "@code{pyserial} provide serial port bindings for Python. It
10745supports different byte sizes, stop bits, parity and flow control with RTS/CTS
10746and/or Xon/Xoff. The port is accessed in RAW mode.")
f210e944 10747 (license license:bsd-3)))
517a6c0c
DM
10748
10749(define-public python2-pyserial
f210e944 10750 (package-with-python2 python-pyserial))
6eb7af2a
DJ
10751
10752(define-public python-kivy
10753 (package
10754 (name "python-kivy")
10755 (version "1.9.1")
10756 (source
10757 (origin
10758 (method url-fetch)
10759 (uri (pypi-uri "kivy" version))
10760 (file-name (string-append name "-" version ".tar.gz"))
10761 (sha256
10762 (base32
10763 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
10764 (build-system python-build-system)
10765 (arguments
10766 `(#:tests? #f ; Tests require many optional packages
10767 #:phases
10768 (modify-phases %standard-phases
10769 (replace 'build (lambda _ (zero? (system* "make" "force"))))
10770 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
10771 (lambda* (#:key inputs #:allow-other-keys)
10772 (setenv "KIVY_SDL2_PATH"
10773 (string-append (assoc-ref inputs "sdl-union")
10774 "/include/SDL2"))
10775 #t)))))
10776 (native-inputs
f2516de2
HG
10777 `(("pkg-config" ,pkg-config)
10778 ("python-cython" ,python-cython)))
6eb7af2a 10779 (inputs
f2516de2 10780 `(("gstreamer" ,gstreamer)
6eb7af2a
DJ
10781 ("mesa" ,mesa)
10782 ("sdl-union"
10783 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
10784 (home-page "http://kivy.org")
10785 (synopsis
10786 "Multitouch application framework")
10787 (description
10788 "A software library for rapid development of
10789hardware-accelerated multitouch applications.")
10790 (license license:expat)))
10791
10792(define-public python2-kivy
10793 (package-with-python2 python-kivy))
10794
10795(define-public python-kivy-next
10796 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
10797 (revision "1"))
10798 (package (inherit python-kivy)
10799 (name "python-kivy-next")
d80a71eb 10800 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
10801 (string-take commit 7)))
10802 (source
10803 (origin
10804 (method git-fetch)
10805 (uri (git-reference
10806 (url "https://github.com/kivy/kivy")
10807 (commit commit)))
10808 (file-name (string-append name "-" version "-checkout"))
10809 (sha256
10810 (base32
10811 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
10812
10813(define-public python2-kivy-next
10814 (package-with-python2 python-kivy-next))
8794bd8b
DC
10815
10816(define-public python-binaryornot
10817 (package
10818 (name "python-binaryornot")
10819 (version "0.4.0")
10820 (source (origin
10821 (method url-fetch)
10822 (uri (pypi-uri "binaryornot" version))
10823 (sha256
10824 (base32
10825 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
10826 (build-system python-build-system)
f22efa01 10827 (propagated-inputs
8794bd8b
DC
10828 `(("python-chardet" ,python-chardet)
10829 ("python-hypothesis" ,python-hypothesis)))
10830 (home-page "https://github.com/audreyr/binaryornot")
10831 (synopsis "Package to check if a file is binary or text")
10832 (description "Ultra-lightweight pure Python package to check if a file is
10833binary or text.")
10834 (license license:bsd-3)
10835 (properties `((python2-variant . ,(delay python2-binaryornot))))))
10836
10837(define-public python2-binaryornot
10838 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
10839 (package (inherit base)
f22efa01 10840 (propagated-inputs
8794bd8b 10841 `(("python2-enum34" ,python2-enum34)
f22efa01 10842 ,@(package-propagated-inputs base))))))
a9ac982a
DC
10843
10844(define-public python-nltk
10845 (package
10846 (name "python-nltk")
10847 (version "3.2.1")
10848 (source (origin
10849 (method url-fetch)
10850 (uri (pypi-uri "nltk" version))
10851 (sha256
10852 (base32
10853 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
10854 (build-system python-build-system)
59f12985
LF
10855 (arguments
10856 '(;; The tests require some extra resources to be downloaded.
10857 ;; TODO Try packaging these resources.
10858 #:tests? #f))
a9ac982a
DC
10859 (home-page "http://nltk.org/")
10860 (synopsis "Natural Language Toolkit")
10861 (description "It provides interfaces to over 50 corpora and lexical
10862resources such as WordNet, along with a suite of text processing libraries
10863for classification, tokenization, stemming, tagging, parsing, and semantic
10864reasoning, wrappers for natural language processing libraries.")
f210e944 10865 (license license:asl2.0)))
a9ac982a
DC
10866
10867(define-public python2-nltk
f210e944 10868 (package-with-python2 python-nltk))
691cd90d
DC
10869
10870(define-public python-pymongo
10871 (package
10872 (name "python-pymongo")
10873 (version "3.3.0")
10874 (source (origin
10875 (method url-fetch)
10876 (uri (pypi-uri "pymongo" version))
10877 (sha256
10878 (base32
10879 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
10880 (build-system python-build-system)
f22efa01 10881 (propagated-inputs
691cd90d
DC
10882 `(("python-certifi" ,python-certifi)))
10883 (home-page "http://github.com/mongodb/mongo-python-driver")
10884 (synopsis "Python driver for MongoDB")
10885 (description "Python driver for MongoDB.")
f210e944 10886 (license license:asl2.0)))
691cd90d
DC
10887
10888(define-public python2-pymongo
f210e944 10889 (package-with-python2 python-pymongo))
6a6c9d43
DC
10890
10891(define-public python-sh
10892 (package
10893 (name "python-sh")
10894 (version "1.11")
10895 (source (origin
10896 (method url-fetch)
10897 (uri (pypi-uri "sh" version))
10898 (sha256
10899 (base32
10900 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
10901 (build-system python-build-system)
10902 (arguments
10903 `(#:tests? #f)) ; no tests
10904 (home-page "https://github.com/amoffat/sh")
10905 (synopsis "Python subprocess interface")
10906 (description "Abstracts process invocation by providing a function
10907interface for programs.")
f210e944 10908 (license license:expat)))
6a6c9d43
DC
10909
10910(define-public python2-sh
f210e944 10911 (package-with-python2 python-sh))
05b59190 10912
25702397
EF
10913(define-public python-consul
10914 (package
10915 (name "python-consul")
10916 (version "0.6.1")
10917 (source
10918 (origin
10919 (method url-fetch)
10920 (uri (pypi-uri "python-consul" version))
10921 (sha256
10922 (base32
10923 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
10924 (build-system python-build-system)
10925 (native-inputs
fd1d6de7
HG
10926 `(("python-pytest" ,python-pytest)))
10927 (propagated-inputs
10928 `(("python-requests" ,python-requests)
25702397
EF
10929 ("python-six" ,python-six)))
10930 (home-page "https://github.com/cablehead/python-consul")
10931 (synopsis "Python client for Consul")
10932 (description
10933 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
10934discovery, monitoring and configuration.")
10935 (license license:expat)))
10936
10937(define-public python2-consul
f210e944 10938 (package-with-python2 python-consul))
25702397 10939
05b59190
DC
10940(define-public python-schematics
10941 (package
10942 (name "python-schematics")
10943 (version "1.1.1")
10944 (source
10945 (origin
10946 (method url-fetch)
10947 (uri (string-append
10948 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
10949 (file-name (string-append name "-" version ".tar.gz"))
10950 (sha256
10951 (base32
10952 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
10953 (build-system python-build-system)
f22efa01 10954 (propagated-inputs
05b59190
DC
10955 `(("python-six" ,python-six)))
10956 (arguments
10957 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
10958 ; version requirements (eg python-coveralls)
10959 (home-page "https://github.com/schematics/schematics")
10960 (synopsis "Python Data Structures for Humans")
10961 (description "Python Data Structures for Humans.")
f210e944 10962 (license license:bsd-3)))
05b59190
DC
10963
10964(define-public python2-schematics
f210e944 10965 (package-with-python2 python-schematics))
d6907ff7
DC
10966
10967(define-public python-publicsuffix
10968 (package
10969 (name "python-publicsuffix")
10970 (version "1.1.0")
10971 (source (origin
10972 (method url-fetch)
10973 (uri (pypi-uri "publicsuffix" version))
10974 (sha256
10975 (base32
10976 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
10977 (build-system python-build-system)
10978 (arguments
10979 `(#:tests? #f)) ; tests use the internet
10980 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
10981 (synopsis "Get suffix for a domain name")
10982 (description "Get a public suffix for a domain name using the Public Suffix
10983List.")
f210e944 10984 (license license:expat)))
d6907ff7
DC
10985
10986(define-public python2-publicsuffix
f210e944 10987 (package-with-python2 python-publicsuffix))
b2319996
DC
10988
10989(define-public python-publicsuffix2
10990 (package
10991 (name "python-publicsuffix2")
10992 (version "2.20160621")
10993 (source
10994 (origin
10995 (method url-fetch)
10996 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
10997 (sha256
10998 (base32
10999 "06lx603gdwad5hc3hmn763ngq0rq9bzz1ni3ga72nzk5n872arkd"))))
11000 (build-system python-build-system)
10797a0a
LF
11001 (arguments
11002 '(#:tests? #f)) ; The test suite requires network access.
b2319996
DC
11003 (home-page "https://github.com/pombredanne/python-publicsuffix2")
11004 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
11005 (description "Get a public suffix for a domain name using the Public Suffix
11006List. Forked from and using the same API as the publicsuffix package.")
f210e944 11007 (license (list license:expat license:mpl2.0))))
b2319996
DC
11008
11009(define-public python2-publicsuffix2
f210e944 11010 (package-with-python2 python-publicsuffix2))
81f1515d
DC
11011
11012(define-public python-url
11013 (package
11014 (name "python-url")
11015 (version "0.2.0")
11016 (source (origin
11017 (method url-fetch)
11018 (uri (pypi-uri "url" version))
11019 (sha256
11020 (base32
11021 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
11022 (build-system python-build-system)
f22efa01 11023 (propagated-inputs
81f1515d
DC
11024 `(("python-publicsuffix" ,python-publicsuffix)))
11025 (native-inputs
11026 `(("python-coverage" ,python-coverage)
11027 ("python-nose" ,python-nose)))
11028 (arguments
11029 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
11030 (home-page "http://github.com/seomoz/url-py")
11031 (synopsis "URL Parsing")
11032 (description "Library for parsing urls.")
11033 (license license:expat)
11034 (properties `((python2-variant . ,(delay python2-url))))))
11035
11036(define-public python2-url
11037 (let ((base (package-with-python2 (strip-python2-variant python-url))))
11038 (package (inherit base)
f22efa01 11039 (propagated-inputs
f210e944 11040 `(("python2-publicsuffix" ,python2-publicsuffix))))))
974ee2c1
TS
11041
11042(define-public python-freezegun
11043 (package
11044 (name "python-freezegun")
11045 (version "0.3.7")
11046 (source
11047 (origin
11048 (method url-fetch)
11049 (uri (pypi-uri "freezegun" version))
11050 (sha256
11051 (base32
11052 "14l19x06v5jkq4rdwbmfyw4x9lrjb2300afrk21r1ash7y1y9a0w"))))
11053 (build-system python-build-system)
11054 (native-inputs
11055 `(("python-mock" ,python-mock)
11056 ("python-nose" ,python-nose)
4e096968 11057 ("python-coverage" ,python-coverage)))
f22efa01 11058 (propagated-inputs
4e096968
HG
11059 `(("python-six" ,python-six)
11060 ("python-dateutil-2" ,python-dateutil-2)))
974ee2c1
TS
11061 (arguments
11062 `(#:phases (modify-phases %standard-phases
11063 ;; The tests are normally executed via `make test`, but the PyPi
11064 ;; package does not include the Makefile.
11065 (replace 'check
11066 (lambda _
11067 (zero? (system* "nosetests" "./tests/")))))))
11068 (home-page "https://github.com/spulec/freezegun")
11069 (synopsis "Test utility for mocking the datetime module")
11070 (description
11071 "FreezeGun is a library that allows your python tests to travel through
11072time by mocking the datetime module.")
11073 (license license:asl2.0)))
11074
11075(define-public python2-freezegun
f210e944
HG
11076 (package-with-python2 python-freezegun))
11077
dddcb25c
MB
11078
11079(define-public python-odfpy
11080 (package
11081 (name "python-odfpy")
11082 (version "1.3.3")
11083 (source (origin
11084 (method url-fetch)
11085 (uri (pypi-uri "odfpy" version))
11086 (sha256
11087 (base32
11088 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
11089 (arguments
11090 `(#:modules ((srfi srfi-1)
11091 (guix build python-build-system)
11092 (guix build utils))
11093 #:phases
11094 (modify-phases %standard-phases
11095 (replace 'check
11096 ;; The test runner invokes python2 and python3 for test*.py.
11097 ;; To avoid having both in inputs, we replicate it here.
11098 (lambda _
11099 (every (lambda (test-file)
11100 (zero? (system* "python" test-file)))
11101 (find-files "tests" "^test.*\\.py$")))))))
11102 (build-system python-build-system)
11103 (home-page "https://github.com/eea/odfpy")
11104 (synopsis "Python API and tools to manipulate OpenDocument files")
11105 (description "Collection of libraries and utility programs written in
11106Python to manipulate OpenDocument 1.2 files.")
11107 (license
11108 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
11109 ;; number of files with other licenses.
11110 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
11111
11112(define-public python2-odfpy
11113 (package-with-python2 python-odfpy))
b30565bd
MB
11114
11115(define-public python-cachecontrol
11116 (package
11117 (name "python-cachecontrol")
11118 (version "0.11.6")
11119 (source
11120 (origin
11121 (method url-fetch)
11122 ;; Pypi does not have tests.
11123 (uri (string-append
11124 "https://github.com/ionrock/cachecontrol/archive/v"
11125 version ".tar.gz"))
11126 (file-name (string-append name "-" version ".tar.gz"))
11127 (sha256
11128 (base32
11129 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
11130 (build-system python-build-system)
11131 (arguments
11132 `(#:phases
11133 (modify-phases %standard-phases
11134 (replace 'check
11135 (lambda _
11136 ;; Drop test that requires internet access.
11137 (delete-file "tests/test_regressions.py")
11138 (setenv "PYTHONPATH"
11139 (string-append (getcwd) "/build/lib:"
11140 (getenv "PYTHONPATH")))
11141 (zero? (system* "py.test" "-vv")))))))
11142 (native-inputs
11143 `(("python-pytest" ,python-pytest)
11144 ("python-redis" ,python-redis)
11145 ("python-webtest" ,python-webtest)
11146 ("python-mock" ,python-mock)))
11147 (propagated-inputs
11148 `(("python-requests" ,python-requests)
11149 ("python-lockfile" ,python-lockfile)))
11150 (home-page "https://github.com/ionrock/cachecontrol")
11151 (synopsis "The httplib2 caching algorithms for use with requests")
11152 (description "CacheControl is a port of the caching algorithms in
11153@code{httplib2} for use with @code{requests} session objects.")
f210e944 11154 (license license:asl2.0)))
b30565bd
MB
11155
11156(define-public python2-cachecontrol
f210e944 11157 (package-with-python2 python-cachecontrol))
243db824
DM
11158
11159(define-public python-lit
11160 (package
11161 (name "python-lit")
11162 (version "0.5.0")
11163 (source
11164 (origin
11165 (method url-fetch)
11166 (uri (pypi-uri "lit" version))
11167 (sha256
11168 (base32
11169 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
11170 (build-system python-build-system)
11171 (home-page "http://llvm.org/")
11172 (synopsis "LLVM Software Testing Tool")
11173 (description "@code{lit} is a portable tool for executing LLVM and Clang
11174style test suites, summarizing their results, and providing indication of
11175failures.")
f210e944 11176 (license license:ncsa)))
243db824
DM
11177
11178(define-public python2-lit
f210e944 11179 (package-with-python2 python-lit))
66f95b20
MB
11180
11181(define-public python-pytest-pep8
11182 (package
11183 (name "python-pytest-pep8")
11184 (version "1.0.6")
11185 (source (origin
11186 (method url-fetch)
11187 (uri (pypi-uri "pytest-pep8" version))
11188 (sha256
11189 (base32
11190 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
11191 (build-system python-build-system)
11192 (arguments
b41a05ce 11193 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
66f95b20
MB
11194 (native-inputs
11195 `(("python-pytest" ,python-pytest)))
11196 (propagated-inputs
11197 `(("python-pep8" ,python-pep8)))
11198 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
11199 (synopsis "Py.test plugin to check PEP8 requirements")
11200 (description "Pytest plugin for checking PEP8 compliance.")
f210e944 11201 (license license:expat)))
66f95b20
MB
11202
11203(define-public python2-pytest-pep8
f210e944 11204 (package-with-python2 python-pytest-pep8))
df94a6b5
MB
11205
11206(define-public python-pytest-flakes
11207 (package
11208 (name "python-pytest-flakes")
11209 (version "1.0.1")
11210 (source (origin
11211 (method url-fetch)
11212 (uri (pypi-uri "pytest-flakes" version))
11213 (sha256
11214 (base32
11215 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
11216 (build-system python-build-system)
11217 (arguments
b41a05ce 11218 `(#:phases
df94a6b5
MB
11219 (modify-phases %standard-phases
11220 (delete 'check)
11221 (add-after 'install 'check
05c2fd36
HG
11222 (lambda* (#:key outputs inputs #:allow-other-keys)
11223 ;; It's easier to run tests after install.
11224 ;; Make installed package available for running the tests
11225 (add-installed-pythonpath inputs outputs)
df94a6b5
MB
11226 (zero? (system* "py.test" "-vv")))))))
11227 (native-inputs
11228 `(("python-coverage" ,python-coverage)
11229 ("python-pytest" ,python-pytest)
11230 ("python-pytest-cache" ,python-pytest-cache)
11231 ("python-pytest-pep8" ,python-pytest-pep8)))
11232 (propagated-inputs
11233 `(("python-pyflakes" ,python-pyflakes)))
11234 (home-page "https://github.com/fschulze/pytest-flakes")
11235 (synopsis "Py.test plugin to check source code with pyflakes")
11236 (description "Pytest plugin for checking Python source code with pyflakes.")
f210e944 11237 (license license:expat)))
df94a6b5
MB
11238
11239(define-public python2-pytest-flakes
f210e944 11240 (package-with-python2 python-pytest-flakes))
5467ea62
MB
11241
11242(define-public python-natsort
11243 (package
11244 (name "python-natsort")
11245 (version "5.0.1")
11246 (source (origin
11247 (method url-fetch)
11248 (uri (pypi-uri "natsort" version))
11249 (sha256
11250 (base32
11251 "1abld5p4a6n5zjnyw5mi2pv37gqalcybv2brjr2y6l9l2p8v9mja"))))
11252 (build-system python-build-system)
11253 (arguments
11254 `(#:phases
11255 (modify-phases %standard-phases
11256 (add-before 'check 'set-cachedir
11257 ;; Tests require write access to $HOME by default
11258 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
11259 (native-inputs
11260 `(("python-hypothesis" ,python-hypothesis)
11261 ("python-pytest-cache" ,python-pytest-cache)
11262 ("python-pytest-cov" ,python-pytest-cov)
11263 ("python-pytest-flakes" ,python-pytest-flakes)
11264 ("python-pytest-pep8" ,python-pytest-pep8)))
11265 (propagated-inputs ; TODO: Add python-fastnumbers.
11266 `(("python-pyicu" ,python-pyicu)))
11267 (home-page "https://github.com/SethMMorton/natsort")
11268 (synopsis "Natural sorting for python and shell")
11269 (description
11270 "Natsort lets you apply natural sorting on lists instead of
11271lexicographical. If you use the built-in @code{sorted} method in python
11272on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
11273returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
11274function @code{natsorted} that identifies numbers and sorts them separately
11275from strings. It can also sort version numbers, real numbers, mixed types
11276and more, and comes with a shell command @command{natsort} that exposes this
11277functionality in the command line.")
11278 (license license:expat)
11279 (properties `((python2-variant . ,(delay python2-natsort))))))
11280
11281(define-public python2-natsort
11282 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
11283 (package (inherit base)
11284 (native-inputs
00e10c6e 11285 `(("python2-pathlib" ,python2-pathlib)
5467ea62
MB
11286 ("python2-mock" ,python2-mock)
11287 ("python2-enum34" ,python2-enum34)
11288 ,@(package-native-inputs base))))))
4efb9c54
SR
11289
11290(define-public python-glances
11291 (package
11292 (name "python-glances")
11293 (version "2.7.1")
11294 (source
11295 (origin
11296 (method url-fetch)
11297 (uri (pypi-uri "Glances" version))
11298 (sha256
11299 (base32
11300 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
11301 (build-system python-build-system)
f22efa01 11302 (propagated-inputs
4efb9c54
SR
11303 `(("python-psutil" ,python-psutil)))
11304 (home-page
11305 "https://github.com/nicolargo/glances")
11306 (synopsis
11307 "A cross-platform curses-based monitoring tool")
11308 (description
11309 "Glances is a curses-based monitoring tool for a wide variety of platforms.
11310Glances uses the PsUtil library to get information from your system. It monitors
11311CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
f210e944 11312 (license license:lgpl3+)))
4efb9c54
SR
11313
11314(define-public python2-glances
f210e944 11315 (package-with-python2 python-glances))
05b7a593
EF
11316
11317(define-public python-graphql-core
11318 (package
11319 (name "python-graphql-core")
11320 (version "0.5.3")
11321 (source
11322 (origin
11323 (method url-fetch)
11324 (uri (pypi-uri "graphql-core" version))
11325 (sha256
11326 (base32
11327 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
11328 (build-system python-build-system)
11329 (arguments
326f8285
LF
11330 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
11331 #:phases
05b7a593
EF
11332 (modify-phases %standard-phases
11333 (add-after 'unpack 'patch-hardcoded-version
11334 (lambda _ (substitute*
11335 "setup.py"
11336 (("'gevent==1.1rc1'") "'gevent'"))
11337 #t)))))
11338 (native-inputs
11339 `(("python-gevent" ,python-gevent)
11340 ("python-mock" ,python-mock)
11341 ("python-pytest-mock" ,python-pytest-mock)))
f22efa01 11342 (propagated-inputs
05b7a593
EF
11343 `(("python-promise" ,python-promise)
11344 ("python-six" ,python-six)))
11345 (home-page "https://github.com/graphql-python/graphql-core")
11346 (synopsis "GraphQL implementation for Python")
11347 (description
11348 "GraphQL implementation for Python. GraphQL is a data query language and
11349runtime designed and used to request and deliver data to mobile and web apps.
11350This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
11351to Python.")
05b7a593
EF
11352 (license license:expat)))
11353
11354(define-public python2-graphql-core
f210e944 11355 (package-with-python2 python-graphql-core))
7ee51575
EF
11356
11357(define-public python-graphql-relay
11358 (package
11359 (name "python-graphql-relay")
11360 (version "0.4.4")
11361 (source
11362 (origin
11363 (method url-fetch)
11364 (uri (pypi-uri "graphql-relay" version))
11365 (sha256
11366 (base32
11367 "04wr9ayshxjjdcg2v21c7ffbz36kif1wjl3604fqd3qignb3fbxi"))))
11368 (build-system python-build-system)
11369 (native-inputs
11370 `(("python-pytest" ,python-pytest)))
f22efa01 11371 (propagated-inputs
7ee51575
EF
11372 `(("python-graphql-core" ,python-graphql-core)
11373 ("python-promise" ,python-promise)
11374 ("python-six" ,python-six)))
11375 (home-page "https://github.com/graphql-python/graphql-relay-py")
11376 (synopsis "Relay implementation for Python")
11377 (description
11378 "This is a library to allow the easy creation of Relay-compliant servers
11379using the GraphQL Python reference implementation of a GraphQL server. It
11380should be noted that the code is a exact port of the original
11381@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
11382from Facebook.")
7ee51575
EF
11383 (license license:expat)))
11384
11385(define-public python2-graphql-relay
f210e944 11386 (package-with-python2 python-graphql-relay))
ddc63a56
EF
11387
11388(define-public python-graphene
11389 (package
11390 (name "python-graphene")
11391 (version "0.10.2")
11392 (source
11393 (origin
11394 (method url-fetch)
11395 (uri (pypi-uri "graphene" version))
11396 (sha256
11397 (base32
11398 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
11399 (build-system python-build-system)
11400 (native-inputs
11401 `(("python-django-filter" ,python-django-filter)
11402 ("python-mock" ,python-mock)
11403 ("python-psycopg2" ,python-psycopg2)
11404 ("python-pytest-django" ,python-pytest-django)
11405 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
f22efa01 11406 (propagated-inputs
ddc63a56
EF
11407 `(("python-graphql-core" ,python-graphql-core)
11408 ("python-graphql-relay" ,python-graphql-relay)
11409 ("python-iso8601" ,python-iso8601)
11410 ("python-promise" ,python-promise)
11411 ("python-six" ,python-six)))
11412 (home-page "http://graphene-python.org/")
11413 (synopsis "GraphQL Framework for Python")
11414 (description
11415 "Graphene is a Python library for building GraphQL schemas/types.
11416A GraphQL schema describes your data model, and provides a GraphQL server
11417with an associated set of resolve methods that know how to fetch data.")
11418 (properties `((python2-variant . ,(delay python2-graphene))))
11419 (license license:expat)))
11420
11421(define-public python2-graphene
11422 (let ((base (package-with-python2
11423 (strip-python2-variant python-graphene))))
11424 (package (inherit base)
11425 (native-inputs
00e10c6e 11426 `(("python2-sqlalchemy" ,python2-sqlalchemy)
ddc63a56 11427 ,@(package-native-inputs base))))))
d488d5d6
EF
11428
11429(define-public python-nautilus
11430 (package
11431 (name "python-nautilus")
11432 (version "0.4.9")
11433 (source
11434 (origin
11435 (method url-fetch)
11436 (uri (pypi-uri "nautilus" version))
11437 (sha256
11438 (base32
11439 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
11440 (build-system python-build-system)
11441 (arguments `(#:tests? #f)) ; fails to import test modules
f22efa01 11442 (propagated-inputs
d488d5d6
EF
11443 `(("python-bcrypt" ,python-bcrypt)
11444 ("python-click" ,python-click)
11445 ("python-consul" ,python-consul)
d488d5d6
EF
11446 ("python-graphene" ,python-graphene)
11447 ("python-jinja2" ,python-jinja2)
d488d5d6
EF
11448 ("python-peewee" ,python-peewee)
11449 ("python-pika" ,python-pika)
d488d5d6
EF
11450 ("python-tornado" ,python-tornado)
11451 ("python-wtforms" ,python-wtforms)))
38ceb106
HG
11452 (native-inputs
11453 `(("python-nose2" ,python-nose2)))
d488d5d6
EF
11454 (home-page "https://github.com/AlecAivazis/nautilus")
11455 (synopsis "Library for creating microservice applications")
11456 (description
11457 "Nautilus is a framework for flux based microservices that looks to
11458provide extendible implementations of common aspects of a cloud so that you can
11459focus on building massively scalable web applications.")
11460 (license license:expat)))
94cffc63 11461
66d3f50a
LF
11462(define-public python-betamax
11463 (package
11464 (name "python-betamax")
11465 (version "0.8.0")
11466 (source
11467 (origin
11468 (method url-fetch)
11469 (uri (pypi-uri "betamax" version))
11470 (sha256
11471 (base32
11472 "18f8v5gng3j773jlbbzx4rg1i4y2zw3m2l1zpmbvp8bh5a2q1i42"))))
11473 (build-system python-build-system)
11474 (arguments
11475 '(;; Many tests fail because they require networking.
11476 #:tests? #f))
c415f763 11477 (propagated-inputs
66d3f50a
LF
11478 `(("python-requests" ,python-requests)))
11479 (home-page "https://github.com/sigmavirus24/betamax")
11480 (synopsis "Record HTTP interactions with python-requests")
11481 (description "Betamax will record your test suite's HTTP interactions and
11482replay them during future tests. It is designed to work with python-requests.")
f210e944 11483 (license license:expat)))
66d3f50a
LF
11484
11485(define-public python2-betamax
f210e944 11486 (package-with-python2 python-betamax))
ca0635b4 11487
94cffc63
LF
11488(define-public python-s3transfer
11489 (package
11490 (name "python-s3transfer")
11491 (version "0.1.8")
11492 (source (origin
11493 (method url-fetch)
11494 (uri (pypi-uri "s3transfer" version))
11495 (sha256
11496 (base32
11497 "1jivjkp3xqif9gzr5fiq28jsskmh50vzzd7ldsb4rbyiw1iyv3hy"))))
11498 (build-system python-build-system)
fad8bf97
LF
11499 (arguments
11500 `(#:phases
11501 (modify-phases %standard-phases
11502 (replace 'check
11503 (lambda _
11504 ;; 7 of the 'integration' tests require network access or login
11505 ;; credentials.
11506 (zero? (system* "nosetests" "--exclude=integration")))))))
94cffc63 11507 (native-inputs
fad8bf97
LF
11508 `(("python-docutils" ,python-docutils)
11509 ("python-mock" ,python-mock)
11510 ("python-nose" ,python-nose)))
f22efa01 11511 (propagated-inputs
94cffc63
LF
11512 `(("python-botocore" ,python-botocore)))
11513 (synopsis "Amazon S3 Transfer Manager")
11514 (description "S3transfer is a Python library for managing Amazon S3
11515transfers.")
11516 (home-page "https://github.com/boto/s3transfer")
11517 (license license:asl2.0)
11518 (properties `((python2-variant . ,(delay python2-s3transfer))))))
11519
11520(define-public python2-s3transfer
11521 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
11522 (package
11523 (inherit base)
11524 (native-inputs
11525 `(("python2-futures" ,python2-futures)
94cffc63 11526 ,@(package-native-inputs base))))))
8ab59181
HG
11527
11528(define-public python-setproctitle
11529(package
11530 (name "python-setproctitle")
11531 (version "1.1.10")
11532 (source
11533 (origin
11534 (method url-fetch)
11535 (uri (pypi-uri "setproctitle" version))
11536 (sha256
11537 (base32
11538 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
11539 (build-system python-build-system)
11540 (arguments
11541 '(#:phases
11542 (modify-phases %standard-phases
11543 (add-before 'check 'patch-Makefile
11544 ;; Stricly this is only required for the python2 variant.
11545 ;; But adding a phase in an inherited package seems to be
11546 ;; cumbersum. So we patch even for python3.
11547 (lambda _
11548 (let ((nose (assoc-ref %build-inputs "python2-nose")))
11549 (when nose
11550 (substitute* "Makefile"
11551 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
11552 (string-append nose "/bin/nosetests "))))
11553 #t)))
11554 (replace 'check
11555 (lambda _
11556 (setenv "PYTHON" (or (which "python3") (which "python")))
11557 (setenv "PYCONFIG" (or (which "python3-config")
11558 (which "python-config")))
11559 (setenv "CC" "gcc")
11560 ;; No need to extend PYTHONPATH to find the built package, since
11561 ;; the Makefile will build anyway
11562 (zero? (system* "make" "check")))))))
11563 (native-inputs
11564 `(("procps" ,procps))) ; required for tests
11565 (home-page
11566 "https://github.com/dvarrazzo/py-setproctitle")
11567 (synopsis
11568 "Setproctitle implementation for Python to customize the process title")
11569 (description "The library allows a process to change its title (as displayed
11570by system tools such as ps and top).
11571
11572Changing the title is mostly useful in multi-process systems, for
11573example when a master process is forked: changing the children's title
11574allows to identify the task each process is busy with. The technique
11575is used by PostgreSQL and the OpenSSH Server for example.")
11576 (license license:bsd-3)
11577 (properties `((python2-variant . ,(delay python2-setproctitle))))))
11578
11579(define-public python2-setproctitle
11580 (let ((base (package-with-python2
11581 (strip-python2-variant python-setproctitle))))
11582 (package
11583 (inherit base)
11584 (native-inputs `(("python2-nose" ,python2-nose)
11585 ,@(package-native-inputs base))))))
162e42d8
HG
11586
11587(define-public python-validictory
11588 (package
11589 (name "python-validictory")
11590 (version "1.0.1")
11591 (source
11592 (origin
11593 (method url-fetch)
11594 (uri (pypi-uri "validictory" version))
11595 (sha256
11596 (base32
11597 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
11598 (build-system python-build-system)
11599 (arguments
11600 '(#:phases
11601 (modify-phases %standard-phases
11602 (add-after 'unpack 'bootstrap
11603 ;; Move the tests out of the package directory to avoid
11604 ;; packaging them.
11605 (lambda* _
11606 (rename-file "validictory/tests" "tests")
11607 (delete-file "tests/__init__.py")))
11608 (replace 'check
11609 (lambda _
11610 ;; Extend PYTHONPATH so the built package will be found.
11611 (setenv "PYTHONPATH"
11612 (string-append (getcwd) "/build/lib:"
11613 (getenv "PYTHONPATH")))
11614 (zero? (system* "py.test" "-vv" )))))))
11615 (native-inputs
11616 `(("python-pytest" ,python-pytest)))
11617 (home-page
11618 "https://github.com/jamesturk/validictory")
11619 (synopsis "General purpose Python data validator")
11620 (description "It allows validation of arbitrary Python data structures.
11621
11622The schema format is based on the JSON Schema
11623proposal (http://json-schema.org), so combined with json the library is also
11624useful as a validator for JSON data.")
f210e944 11625 (license license:expat)))
162e42d8
HG
11626
11627(define-public python2-validictory
f210e944 11628 (package-with-python2 python-validictory))
0990edfe
DM
11629
11630(define-public python-aniso8601
11631 (package
11632 (name "python-aniso8601")
11633 (version "1.1.0")
11634 (source
11635 (origin
11636 (method url-fetch)
11637 (uri (pypi-uri "aniso8601" version))
11638 (sha256
11639 (base32
11640 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
11641 (build-system python-build-system)
11642 (propagated-inputs
11643 `(("python-dateutil-2" ,python-dateutil-2)))
11644 (home-page
11645 "https://bitbucket.org/nielsenb/aniso8601")
11646 (synopsis
11647 "Python library for parsing ISO 8601 strings")
11648 (description
11649 "This package contains a library for parsing ISO 8601 datetime strings.")
11650 (license license:bsd-3)))
999d964d
DM
11651
11652(define-public python-flask-restful
11653 (package
11654 (name "python-flask-restful")
11655 (version "0.3.5")
11656 (source
11657 (origin
11658 (method url-fetch)
11659 (uri (pypi-uri "Flask-RESTful" version))
11660 (sha256
11661 (base32
11662 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
11663 (build-system python-build-system)
11664 (propagated-inputs
11665 `(("python-aniso8601" ,python-aniso8601)
11666 ("python-flask" ,python-flask)
11667 ("python-pycrypto" ,python-pycrypto)
11668 ("python-pytz" ,python-pytz)))
11669 (native-inputs
11670 `(;; Optional dependency of Flask. Tests need it.
11671 ("python-blinker" ,python-blinker)
11672 ("python-mock" ,python-mock) ; For tests
11673 ("python-nose" ,python-nose) ; For tests
11674 ("python-sphinx" ,python-sphinx)))
11675 (home-page
11676 "https://www.github.com/flask-restful/flask-restful/")
11677 (synopsis
11678 "Flask module for creating REST APIs")
11679 (description
11680 "This package contains a Flask module for creating REST APIs.")
11681 (license license:bsd-3)))
31288222
DM
11682
11683(define-public python-flask-basicauth
11684 (package
11685 (name "python-flask-basicauth")
11686 (version "0.2.0")
11687 (source
11688 (origin
11689 (method url-fetch)
11690 (uri (pypi-uri "Flask-BasicAuth" version))
11691 (sha256
11692 (base32
11693 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
11694 (build-system python-build-system)
11695 (propagated-inputs
11696 `(("python-flask" ,python-flask)))
11697 (home-page
11698 "https://github.com/jpvanhal/flask-basicauth")
11699 (synopsis
11700 "HTTP basic access authentication for Flask")
11701 (description
11702 "This package provides HTTP basic access authentication for Flask.")
11703 (license license:bsd-3)))
903276d0
DM
11704
11705(define-public python-flask-sqlalchemy
11706 (package
11707 (name "python-flask-sqlalchemy")
11708 (version "2.1")
11709 (source
11710 (origin
11711 (method url-fetch)
11712 (uri (pypi-uri "Flask-SQLAlchemy" version))
11713 (sha256
11714 (base32
11715 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
11716 (build-system python-build-system)
11717 (propagated-inputs
11718 `(("python-flask" ,python-flask)
11719 ("python-sqlalchemy" ,python-sqlalchemy)))
11720 (home-page
11721 "http://github.com/mitsuhiko/flask-sqlalchemy")
11722 (synopsis
11723 "Module adding SQLAlchemy support to your Flask application")
11724 (description
11725 "This package adds SQLAlchemy support to your Flask application.")
11726 (license license:bsd-3)))
329b4b3b
LF
11727
11728(define-public python-pyev
11729 (package
11730 (name "python-pyev")
11731 (version "0.9.0")
11732 (source
11733 (origin
11734 (method url-fetch)
11735 (uri (pypi-uri "pyev" version))
11736 (sha256
11737 (base32
11738 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
11739 (build-system python-build-system)
11740 (arguments
11741 `(#:tests? #f ; no test suite
11742 #:phases
11743 (modify-phases %standard-phases
11744 (add-after 'unpack 'patch
11745 (lambda* (#:key inputs #:allow-other-keys)
11746 (let ((libev (string-append (assoc-ref inputs "libev")
11747 "/lib/libev.so.4")))
11748 (substitute* "setup.py"
11749 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
11750 (string-append "libev_dll_name = \"" libev "\"")))))))))
11751 (inputs
11752 `(("libev" ,libev)))
11753 (home-page "http://pythonhosted.org/pyev/")
11754 (synopsis "Python libev interface")
11755 (description "Pyev provides a Python interface to libev.")
11756 (license license:gpl3)))
11757
11758(define-public python2-pyev
11759 (package-with-python2 python-pyev))
45b4f127
DM
11760
11761(define-public python-imagesize
11762 (package
11763 (name "python-imagesize")
11764 (version "0.7.1")
11765 (source
11766 (origin
11767 (method url-fetch)
11768 (uri (pypi-uri "imagesize" version))
11769 (sha256
11770 (base32
11771 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
11772 (build-system python-build-system)
9422c98a
LF
11773 (arguments
11774 '(;; Test files are not distributed on PyPi:
11775 ;; https://github.com/shibukawa/imagesize_py/issues/7
11776 #:tests? #f))
45b4f127
DM
11777 (home-page "https://github.com/shibukawa/imagesize_py")
11778 (synopsis "Gets image size of files in variaous formats in Python")
11779 (description
11780 "This package allows determination of image size from
11781PNG, JPEG, JPEG2000 and GIF files in pure Python.")
f210e944 11782 (license license:expat)))
45b4f127
DM
11783
11784(define-public python2-imagesize
f210e944 11785 (package-with-python2 python-imagesize))
2f6dd9cd
AI
11786
11787(define-public python-axolotl-curve25519
11788 (package
11789 (name "python-axolotl-curve25519")
11790 (version "0.1")
11791 (source
11792 (origin
11793 (method git-fetch)
11794 (uri (git-reference
11795 (url "git://github.com/tgalal/python-axolotl-curve25519")
11796 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
11797 (file-name (string-append name "-" version "-checkout"))
11798 (sha256
11799 (base32
11800 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
11801 (build-system python-build-system)
11802 (arguments
11803 `(;; Prevent creation of the egg. This works around
11804 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
11805 #:configure-flags '("--root=/")))
2f6dd9cd
AI
11806 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
11807 (synopsis "Python wrapper for curve25519 library")
11808 (description "This is a python wrapper for the curve25519 library
11809with ed25519 signatures. The C code was pulled from
11810libaxolotl-android. At the moment this wrapper is meant for use by
11811python-axolotl.")
11812 (license (list license:gpl3 ; Most files
683cdbf5 11813 license:bsd-3)))) ; curve/curve25519-donna.c
2f6dd9cd
AI
11814
11815(define-public python2-axolotl-curve25519
11816 (package-with-python2 python-axolotl-curve25519))
06ff0837
AI
11817
11818(define-public python-axolotl
11819 (package
11820 (name "python-axolotl")
11821 (version "0.1.35")
11822 (source
11823 (origin
11824 (method url-fetch)
11825 (uri (string-append
11826 "https://github.com/tgalal/python-axolotl/archive/"
11827 version ".tar.gz"))
11828 (file-name (string-append name "-" version ".tar.gz"))
11829 (sha256
11830 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
11831 (build-system python-build-system)
11832 (arguments
11833 `(#:phases
11834 (modify-phases %standard-phases
11835 ;; Don't install tests
11836 (add-before 'install 'remove-tests
11837 (lambda _
11838 (for-each delete-file-recursively
11839 '("axolotl/tests" "build/lib/axolotl/tests"))
11840 #t)))
11841 ;; Prevent creation of the egg. This works around
11842 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
11843 #:configure-flags '("--root=/")))
06ff0837
AI
11844 (propagated-inputs
11845 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
11846 ("python-dateutil" ,python-dateutil)
11847 ("python-protobuf" ,python-protobuf)
11848 ("python-pycrypto" ,python-pycrypto)))
11849 (home-page "https://github.com/tgalal/python-axolotl")
11850 (synopsis "Python port of libaxolotl-android")
11851 (description "This is a python port of libaxolotl-android. This
11852is a ratcheting forward secrecy protocol that works in synchronous and
11853asynchronous messaging environments.")
11854 (license license:gpl3)))
11855
11856(define-public python2-axolotl
11857 (package-with-python2 python-axolotl))
e2fca490
DM
11858
11859(define-public python-termstyle
11860 (package
11861 (name "python-termstyle")
11862 (version "0.1.11")
11863 (source
11864 (origin
11865 (method url-fetch)
11866 (uri (pypi-uri "termstyle" version))
11867 (sha256
11868 (base32
11869 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
11870 (build-system python-build-system)
11871 (home-page "http://github.com/gfxmonk/termstyle")
11872 (synopsis "Console text coloring for Python")
11873 (description "This package provides console text coloring for Python.")
11874 (license license:bsd-3)))
1e6112d8
DM
11875
11876(define-public python-rednose
11877 (package
11878 (name "python-rednose")
11879 (version "1.2.1")
11880 (source
11881 (origin
11882 (method url-fetch)
11883 (uri (pypi-uri "rednose" version))
11884 (sha256
11885 (base32
11886 "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
11887 (build-system python-build-system)
11888 (arguments
11889 `(#:phases
11890 (modify-phases %standard-phases
11891 (add-after 'unpack 'fix-deps
11892 (lambda _
11893 ;; See <https://github.com/JBKahn/rednose/issues/12>
11894 (substitute* "setup.py"
11895 (("python-termstyle") "termstyle"))
11896 #t)))))
11897 (propagated-inputs
11898 `(("python-colorama" ,python-colorama)
11899 ("python-termstyle" ,python-termstyle)))
11900 (native-inputs
11901 `(("python-six" ,python-six)
11902 ("python-nose" ,python-nose)))
11903 (home-page "https://github.com/JBKahn/rednose")
11904 (synopsis "Colored output for Python nosetests")
11905 (description "This package provides colored output for the
11906@command{nosetests} command of the Python Nose unit test framework.")
11907 (license license:bsd-3)))
0a7f17f0
DM
11908
11909(define-public python-flask-restplus
11910 (package
11911 (name "python-flask-restplus")
11912 (version "0.9.2")
11913 (source
11914 (origin
11915 (method url-fetch)
11916 (uri (pypi-uri "flask-restplus" version))
11917 (sha256
11918 (base32
11919 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
11920 (build-system python-build-system)
11921 (propagated-inputs
11922 `(("python-aniso8601" ,python-aniso8601)
11923 ("python-flask" ,python-flask)
11924 ("python-jsonschema" ,python-jsonschema)
11925 ("python-pytz" ,python-pytz)
11926 ("python-six" ,python-six)))
11927 (native-inputs
11928 `(("python-tzlocal" ,python-tzlocal)
11929 ("python-blinker" ,python-blinker)
11930 ("python-nose" ,python-nose)
11931 ("python-rednose" ,python-rednose)))
11932 (home-page "https://github.com/noirbizarre/flask-restplus")
11933 (synopsis "Framework for documented API development with Flask")
11934 (description "This package provides a framework for API development with
11935the Flask web framework in Python. It is similar to package
11936@code{python-flask-restful} but supports the @code{python-swagger}
11937documentation builder.")
11938 (license license:expat)))
1ed21519
DM
11939
11940(define-public python-sadisplay
11941 (package
11942 (name "python-sadisplay")
11943 (version "0.4.6")
11944 (source
11945 (origin
11946 (method url-fetch)
11947 (uri (pypi-uri "sadisplay" version))
11948 (sha256
11949 (base32
11950 "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
11951 (build-system python-build-system)
11952 (propagated-inputs
11953 `(("python-sqlalchemy" ,python-sqlalchemy)))
11954 (native-inputs
11955 `(("python-nose" ,python-nose)))
11956 (home-page "https://bitbucket.org/estin/sadisplay")
11957 (synopsis "SQLAlchemy schema displayer")
11958 (description "This package provides a program to build Entity
11959Relationship diagrams from a SQLAlchemy model (or directly from the
11960database).")
11961 (license license:bsd-3)))
11962
11963(define-public python2-sadisplay
11964 (package-with-python2 python-sadisplay))
444a79b6
DM
11965
11966(define-public python-flask-restful-swagger
11967 (package
11968 (name "python-flask-restful-swagger")
11969 (version "0.19")
11970 (source
11971 (origin
11972 (method url-fetch)
11973 (uri (pypi-uri "flask-restful-swagger" version))
11974 (sha256
11975 (base32
11976 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
11977 (build-system python-build-system)
11978 (propagated-inputs
11979 `(("python-flask-restful" ,python-flask-restful)))
11980 (home-page "https://github.com/rantav/flask-restful-swagger")
11981 (synopsis "Extract Swagger specs from Flask-Restful projects")
11982 (description "This package lets you extract Swagger API documentation
11983specs from your Flask-Restful projects.")
11984 (license license:expat)))
11985
11986(define-public python2-flask-restful-swagger
11987 (package-with-python2 python-flask-restful-swagger))
6c2e82bc
TGR
11988
11989(define-public python-argcomplete
11990 (package
11991 (name "python-argcomplete")
11992 (version "1.7.0")
11993 (source
11994 (origin
11995 (method url-fetch)
11996 (uri (pypi-uri "argcomplete" version))
11997 (sha256
11998 (base32
11999 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
12000 (build-system python-build-system)
12001 (home-page "https://github.com/kislyuk/argcomplete")
12002 (synopsis "Shell tab completion for Python argparse")
12003 (description "argcomplete provides extensible command line tab completion
12004of arguments and options for Python scripts using @code{argparse}. It's
12005particularly useful for programs with many options or sub-parsers that can
12006dynamically suggest completions; for example, when browsing resources over the
12007network.")
12008 (license license:asl2.0)))
12009
12010(define-public python2-argcomplete
12011 (package-with-python2 python-argcomplete))