gnu: tiled: Update to 0.18.0.
[jackhill/guix/guix.git] / gnu / packages / python.scm
CommitLineData
a01b6da7
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
48b311b1 3;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
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>
d205f895 36;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
a01b6da7
NK
37;;;
38;;; This file is part of GNU Guix.
39;;;
40;;; GNU Guix is free software; you can redistribute it and/or modify it
41;;; under the terms of the GNU General Public License as published by
42;;; the Free Software Foundation; either version 3 of the License, or (at
43;;; your option) any later version.
44;;;
45;;; GNU Guix is distributed in the hope that it will be useful, but
46;;; WITHOUT ANY WARRANTY; without even the implied warranty of
47;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
48;;; GNU General Public License for more details.
49;;;
50;;; You should have received a copy of the GNU General Public License
51;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
52
1ffa7090 53(define-module (gnu packages python)
3f641af0 54 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 55 #:use-module (gnu packages)
8e451885 56 #:use-module (gnu packages algebra)
d79a343b 57 #:use-module (gnu packages adns)
89b2e0b0 58 #:use-module (gnu packages attr)
d96034ed 59 #:use-module (gnu packages backup)
3969ca54 60 #:use-module (gnu packages bash)
1ffa7090 61 #:use-module (gnu packages compression)
4ed20663 62 #:use-module (gnu packages databases)
ddc63a56 63 #:use-module (gnu packages django)
5e1c9367 64 #:use-module (gnu packages file)
4ed20663 65 #:use-module (gnu packages fontutils)
4ed20663
AE
66 #:use-module (gnu packages gcc)
67 #:use-module (gnu packages ghostscript)
6eb7af2a 68 #:use-module (gnu packages gl)
4ed20663 69 #:use-module (gnu packages glib)
6eb7af2a 70 #:use-module (gnu packages gstreamer)
4ed20663 71 #:use-module (gnu packages gtk)
421a80a2 72 #:use-module (gnu packages icu4c)
c937562e 73 #:use-module (gnu packages image)
4ed20663 74 #:use-module (gnu packages imagemagick)
d79a343b 75 #:use-module (gnu packages libevent)
b10ab723 76 #:use-module (gnu packages libffi)
89b2e0b0 77 #:use-module (gnu packages linux)
0da98533 78 #:use-module (gnu packages maths)
4ed20663 79 #:use-module (gnu packages multiprecision)
45203542 80 #:use-module (gnu packages networking)
be7134bf 81 #:use-module (gnu packages ncurses)
b04a52a6 82 #:use-module (gnu packages openstack)
d488d5d6 83 #:use-module (gnu packages password-utils)
c9b1b4f9 84 #:use-module (gnu packages pcre)
4ed20663 85 #:use-module (gnu packages perl)
b10ab723 86 #:use-module (gnu packages pkg-config)
06ff0837 87 #:use-module (gnu packages protobuf)
4ed20663 88 #:use-module (gnu packages readline)
6eb7af2a 89 #:use-module (gnu packages sdl)
c9b1b4f9 90 #:use-module (gnu packages statistics)
8f9ac901 91 #:use-module (gnu packages tex)
1c65314c 92 #:use-module (gnu packages texinfo)
cc2b77df 93 #:use-module (gnu packages tls)
e25f0174 94 #:use-module (gnu packages version-control)
02f8f804 95 #:use-module (gnu packages video)
8d12be1e 96 #:use-module (gnu packages web)
ce0614dd 97 #:use-module (gnu packages base)
26b307e2 98 #:use-module (gnu packages xml)
6fa14469 99 #:use-module (gnu packages xorg)
0bdc1671 100 #:use-module (gnu packages xdisorg)
4ed20663 101 #:use-module (gnu packages zip)
afa181ff 102 #:use-module (gnu packages tcl)
63bcec71 103 #:use-module (gnu packages bdw-gc)
a01b6da7
NK
104 #:use-module (guix packages)
105 #:use-module (guix download)
ea5456c8 106 #:use-module (guix git-download)
11bb85a1 107 #:use-module (guix utils)
acc26ff1 108 #:use-module (guix build-system gnu)
d8c4998f 109 #:use-module (guix build-system cmake)
898238b9 110 #:use-module (guix build-system python)
1c65314c
FB
111 #:use-module (guix build-system trivial)
112 #:use-module (srfi srfi-1))
a01b6da7 113
45848023 114(define-public python-2.7
a01b6da7
NK
115 (package
116 (name "python")
f0499100 117 (version "2.7.12")
a01b6da7
NK
118 (source
119 (origin
120 (method url-fetch)
9b43a0ff 121 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
122 version "/Python-" version ".tar.xz"))
123 (sha256
124 (base32
f0499100 125 "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp"))
c3052d6b
ML
126 (patches (search-patches "python-2.7-search-paths.patch"
127 "python-2-deterministic-build-info.patch"
15e57f57 128 "python-2.7-site-prefixes.patch"
c3052d6b 129 "python-2.7-source-date-epoch.patch"))
10a42aa2
EF
130 (modules '((guix build utils)))
131 ;; suboptimal to delete failing tests here, but if we delete them in the
132 ;; arguments then we need to make sure to strip out that phase when it
133 ;; gets inherited by python and python-minimal.
134 (snippet
135 '(begin
136 (for-each delete-file
137 '("Lib/test/test_compileall.py"
f0499100 138 "Lib/test/test_ctypes.py" ; fails on mips64el
10a42aa2
EF
139 "Lib/test/test_distutils.py"
140 "Lib/test/test_import.py"
141 "Lib/test/test_shutil.py"
142 "Lib/test/test_socket.py"
1bb163b0 143 "Lib/test/test_subprocess.py"))
10a42aa2 144 #t))))
02f0c3b2
LC
145 (outputs '("out"
146 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 147 (build-system gnu-build-system)
3fdc99da 148 (arguments
10a42aa2 149 `(;; 356 tests OK.
e7e7a1eb
EF
150 ;; 6 tests failed:
151 ;; test_compileall test_distutils test_import test_shutil test_socket
152 ;; test_subprocess
153 ;; 39 tests skipped:
ff6f33cf
ED
154 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
155 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
156 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
157 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
158 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
159 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
160 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
161 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
162 ;; test_winreg test_winsound test_zipfile64
163 ;; 4 skips unexpected on linux2:
164 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 165 #:test-target "test"
3fdc99da 166 #:configure-flags
6a20289d
LC
167 (list "--enable-shared" ;allow embedding
168 "--with-system-ffi" ;build ctypes
aaf75c89 169 "--with-ensurepip=install" ;install pip and setuptools
6a20289d
LC
170 (string-append "LDFLAGS=-Wl,-rpath="
171 (assoc-ref %outputs "out") "/lib"))
fd982732 172
d2cc9c7c
LC
173 #:modules ((ice-9 ftw) (ice-9 match)
174 (guix build utils) (guix build gnu-build-system))
fd982732 175 #:phases
46472ecd
MW
176 (modify-phases %standard-phases
177 (add-before
178 'configure 'patch-lib-shells
179 (lambda _
180 ;; Filter for existing files, since some may not exist in all
181 ;; versions of python that are built with this recipe.
182 (substitute* (filter file-exists?
183 '("Lib/subprocess.py"
184 "Lib/popen2.py"
185 "Lib/distutils/tests/test_spawn.py"
186 "Lib/test/test_subprocess.py"))
187 (("/bin/sh") (which "sh")))
dedc8320
LC
188
189 ;; Use zero as the timestamp in .pyc files so that builds are
190 ;; deterministic. TODO: Remove it when this variable is set in
191 ;; gnu-build-system.scm.
a665996f 192 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 193 #t))
5b4e2791
LC
194 (add-before 'configure 'do-not-record-configure-flags
195 (lambda* (#:key configure-flags #:allow-other-keys)
196 ;; Remove configure flags from the installed '_sysconfigdata.py'
197 ;; and 'Makefile' so we don't end up keeping references to the
198 ;; build tools.
199 ;;
200 ;; Preserve at least '--with-system-ffi' since otherwise the
201 ;; thing tries to build libffi, fails, and we end up with a
202 ;; Python that lacks ctypes.
203 (substitute* "configure"
204 (("^CONFIG_ARGS=.*$")
205 (format #f "CONFIG_ARGS='~a'\n"
206 (if (member "--with-system-ffi" configure-flags)
207 "--with-system-ffi"
208 ""))))
209 #t))
46472ecd
MW
210 (add-before
211 'check 'pre-check
212 (lambda _
213 ;; 'Lib/test/test_site.py' needs a valid $HOME
214 (setenv "HOME" (getcwd))
215 #t))
216 (add-after
217 'unpack 'set-source-file-times-to-1980
218 ;; XXX One of the tests uses a ZIP library to pack up some of the
219 ;; source tree, and fails with "ZIP does not support timestamps
220 ;; before 1980". Work around this by setting the file times in the
221 ;; source tree to sometime in early 1980.
222 (lambda _
223 (let ((circa-1980 (* 10 366 24 60 60)))
224 (ftw "." (lambda (file stat flag)
225 (utime file circa-1980 circa-1980)
226 #t))
02f0c3b2 227 #t)))
9ffe61b0
LC
228 (add-after 'install 'remove-tests
229 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
230 ;; because these files are used by some libraries out there.
231 (lambda* (#:key outputs #:allow-other-keys)
232 (let ((out (assoc-ref outputs "out")))
233 (match (scandir (string-append out "/lib")
234 (lambda (name)
235 (string-prefix? "python" name)))
236 ((pythonX.Y)
237 (let ((testdir (string-append out "/lib/" pythonX.Y
238 "/test")))
239 (with-directory-excursion testdir
240 (for-each delete-file-recursively
241 (scandir testdir
242 (match-lambda
243 ((or "." "..") #f)
244 (file
245 (not
246 (string-prefix? "test_support."
247 file))))))
248 (call-with-output-file "__init__.py" (const #t))
249 #t)))))))
216c283b
LC
250 (add-before 'strip 'make-libraries-writable
251 (lambda* (#:key outputs #:allow-other-keys)
252 ;; Make .so files writable so they can be stripped.
253 (let ((out (assoc-ref outputs "out")))
254 (for-each (lambda (file)
255 (chmod file #o755))
256 (find-files (string-append out "/lib")
257 "\\.so"))
258 #t)))
02f0c3b2
LC
259 (add-after 'install 'move-tk-inter
260 (lambda* (#:key outputs #:allow-other-keys)
261 ;; When Tkinter support is built move it to a separate output so
262 ;; that the main output doesn't contain a reference to Tcl/Tk.
263 (let ((out (assoc-ref outputs "out"))
264 (tk (assoc-ref outputs "tk")))
265 (when tk
266 (match (find-files out "tkinter.*\\.so")
267 ((tkinter.so)
268 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
269 ;; want it under TK/lib/pythonX.Y/site-packages.
270 (let* ((len (string-length out))
271 (target (string-append
272 tk "/"
273 (string-drop
274 (dirname (dirname tkinter.so))
275 len)
276 "/site-packages")))
277 (install-file tkinter.so target)
278 (delete-file tkinter.so)))))
279 #t))))))
a01b6da7 280 (inputs
3fdc99da
CR
281 `(("bzip2" ,bzip2)
282 ("gdbm" ,gdbm)
b10ab723 283 ("libffi" ,libffi) ; for ctypes
b88e1b0a 284 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 285 ("openssl" ,openssl)
3fdc99da 286 ("readline" ,readline)
afa181ff
LC
287 ("zlib" ,zlib)
288 ("tcl" ,tcl)
289 ("tk" ,tk))) ; for tkinter
b10ab723
CR
290 (native-inputs
291 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
292 (native-search-paths
293 (list (search-path-specification
294 (variable "PYTHONPATH")
af070955 295 (files '("lib/python2.7/site-packages")))))
f0499100 296 (home-page "https://www.python.org")
afa181ff 297 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
298 (description
299 "Python is a remarkably powerful dynamic programming language that
300is used in a wide variety of application domains. Some of its key
301distinguishing features include: clear, readable syntax; strong
302introspection capabilities; intuitive object orientation; natural
303expression of procedural code; full modularity, supporting hierarchical
304packages; exception-based error handling; and very high level dynamic
305data types.")
3f641af0 306 (license license:psfl)))
acc26ff1 307
45848023
HG
308;; Current 2.x version.
309(define-public python-2 python-2.7)
310
72df6680 311(define-public python-3.5
b24d1cfc 312 (package (inherit python-2)
72df6680 313 (version "3.5.2")
717003e3
LC
314 (source (origin
315 (method url-fetch)
316 (uri (string-append "https://www.python.org/ftp/python/"
317 version "/Python-" version ".tar.xz"))
fc1adab1
AK
318 (patches (search-patches
319 "python-fix-tests.patch"
72df6680 320 "python-3.5-fix-tests.patch"
fc1adab1
AK
321 "python-3-deterministic-build-info.patch"
322 "python-3-search-paths.patch"))
717003e3
LC
323 (patch-flags '("-p0"))
324 (sha256
325 (base32
72df6680 326 "0h6a5fr7ram2s483lh0pnmc4ncijb8llnpfdxdcl5dxr01hza400"))))
1f434457
MW
327 (arguments (substitute-keyword-arguments (package-arguments python-2)
328 ((#:tests? _) #t)))
1aebc0cb
AE
329 (native-search-paths
330 (list (search-path-specification
331 (variable "PYTHONPATH")
0e05d01e
SB
332 (files (list (string-append "lib/python"
333 (version-major+minor version)
334 "/site-packages"))))))))
f26a77ff 335
72df6680
LF
336(define-public python-3.4
337 (package (inherit python-3.5)
338 (version "3.4.5")
339 (source (origin
340 (method url-fetch)
341 (uri (string-append "https://www.python.org/ftp/python/"
342 version "/Python-" version ".tar.xz"))
343 (patches (search-patches
344 "python-fix-tests.patch"
345 "python-3.4-fix-tests.patch"
346 "python-3-deterministic-build-info.patch"
347 "python-3-search-paths.patch"))
348 (patch-flags '("-p0"))
349 (sha256
350 (base32
351 "12l9klp778wklxmckhghniy5hklss8r26995pyd00qbllk4b2r7f"))))))
352
45848023 353;; Current 3.x version.
72df6680 354(define-public python-3 python-3.5)
45848023
HG
355
356;; Current major version.
357(define-public python python-3)
358
95288fcc
LC
359;; Minimal variants of Python, mostly used to break the cycle between Tk and
360;; Python (Tk -> libxcb -> Python.)
361
362(define-public python2-minimal
363 (package (inherit python-2)
364 (name "python-minimal")
02f0c3b2 365 (outputs '("out"))
95288fcc
LC
366 (arguments
367 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
368 ((#:configure-flags cf)
369 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
370 (inputs '()))) ;none of the optional dependencies
371
372(define-public python-minimal
898238b9 373 (package (inherit python)
95288fcc 374 (name "python-minimal")
02f0c3b2 375 (outputs '("out"))
95288fcc 376
d0b73960 377 ;; Build fails due to missing ctypes without libffi.
95288fcc
LC
378 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
379 ;; zlib is required by 'zipimport', used by pip.
d0b73960
CAW
380 (inputs `(("libffi" ,libffi)
381 ("openssl" ,openssl)
95288fcc
LC
382 ("zlib" ,zlib)))))
383
64cb064c
LC
384(define* (wrap-python3 python
385 #:optional
386 (name (string-append (package-name python) "-wrapper")))
898238b9 387 (package (inherit python)
95288fcc 388 (name name)
898238b9
AE
389 (source #f)
390 (build-system trivial-build-system)
02f0c3b2 391 (outputs '("out"))
3969ca54 392 (inputs `(("bash" ,bash)))
3c0f2329 393 (propagated-inputs `(("python" ,python)))
898238b9
AE
394 (arguments
395 `(#:modules ((guix build utils))
396 #:builder
397 (begin
398 (use-modules (guix build utils))
399 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
400 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
401 (mkdir-p bin)
402 (for-each
403 (lambda (old new)
404 (symlink (string-append python old)
405 (string-append bin "/" new)))
3969ca54
SB
406 `("python3" ,"pydoc3" ,"idle3" ,"pip3")
407 `("python" ,"pydoc" ,"idle" ,"pip"))
408 ;; python-config outputs search paths based upon its location,
409 ;; use a bash wrapper to avoid changing its outputs.
410 (let ((bash (string-append (assoc-ref %build-inputs "bash")
411 "/bin/bash"))
412 (old (string-append python "python3-config"))
413 (new (string-append bin "/python-config")))
414 (with-output-to-file new
415 (lambda ()
416 (format #t "#!~a~%" bash)
417 (format #t "exec \"~a\" \"$@\"~%" old)
418 (chmod new #o755)
419 #t)))))))
0d56e3e1
LC
420 (synopsis "Wrapper for the Python 3 commands")
421 (description
422 "This package provides wrappers for the commands of Python@tie{}3.x such
423that they can be invoked under their usual name---e.g., @command{python}
424instead of @command{python3}.")))
425
95288fcc
LC
426(define-public python-wrapper (wrap-python3 python))
427(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 428
aaf625b8
RW
429(define-public python-psutil
430 (package
431 (name "python-psutil")
88535a44 432 (version "4.3.0")
aaf625b8
RW
433 (source
434 (origin
435 (method url-fetch)
f56777be 436 (uri (pypi-uri "psutil" version))
aaf625b8
RW
437 (sha256
438 (base32
88535a44 439 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8 440 (build-system python-build-system)
88535a44 441 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
442 (synopsis "Library for retrieving information on running processes")
443 (description
444 "psutil (Python system and process utilities) is a library for retrieving
445information on running processes and system utilization (CPU, memory, disks,
446network) in Python. It is useful mainly for system monitoring, profiling and
447limiting process resources and management of running processes. It implements
448many functionalities offered by command line tools such as: ps, top, lsof,
449netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
450pidof, tty, taskset, pmap.")
3f641af0 451 (license license:bsd-3)))
aaf625b8
RW
452
453(define-public python2-psutil
454 (package-with-python2 python-psutil))
898238b9 455
f9da1d8a
ED
456(define-public python-passlib
457 (package
458 (name "python-passlib")
1c9f78ec 459 (version "1.7.0")
f9da1d8a
ED
460 (source
461 (origin
462 (method url-fetch)
690e8c66 463 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
464 (sha256
465 (base32
1c9f78ec 466 "1vdbqsa1a31s98fxkinl052q8nnpvbxnb83qanxfpi2p6c2zdr0b"))))
f9da1d8a
ED
467 (build-system python-build-system)
468 (native-inputs
f3b98f4f 469 `(("python-nose" ,python-nose)))
f22efa01 470 (propagated-inputs
f9da1d8a
ED
471 `(("python-py-bcrypt" ,python-py-bcrypt)))
472 (arguments
473 `(#:phases
474 (alist-cons-before
475 'check 'set-PYTHON_EGG_CACHE
476 ;; some tests require access to "$HOME/.cython"
477 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
478 %standard-phases)))
479 (home-page "https://bitbucket.org/ecollins/passlib")
480 (synopsis
481 "Comprehensive password hashing framework")
482 (description
483 "Passlib is a password hashing library for Python 2 & 3, which provides
484cross-platform implementations of over 30 password hashing algorithms, as well
485as a framework for managing existing password hashes. It's designed to be
486useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
487to providing full-strength password hashing for multi-user application.")
3f641af0 488 (license license:bsd-3)))
f9da1d8a
ED
489
490(define-public python2-passlib
491 (package-with-python2 python-passlib))
492
feb0d9c3
ED
493(define-public python-py-bcrypt
494 (package
495 (name "python-py-bcrypt")
496 (version "0.4")
497 (source
498 (origin
499 (method url-fetch)
500 (uri (string-append
501 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
502 version
503 ".tar.gz"))
504 (sha256
505 (base32
506 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
507 (build-system python-build-system)
feb0d9c3
ED
508 (home-page "https://code.google.com/p/py-bcrypt")
509 (synopsis
510 "Bcrypt password hashing and key derivation")
511 (description
512 "A python wrapper of OpenBSD's Blowfish password hashing code. This
513system hashes passwords using a version of Bruce Schneier's Blowfish block
514cipher with modifications designed to raise the cost of off-line password
515cracking and frustrate fast hardware implementation. The computation cost of
516the algorithm is parametised, so it can be increased as computers get faster.
517The intent is to make a compromise of a password database less likely to
518result in an attacker gaining knowledge of the plaintext passwords (e.g. using
519John the Ripper).")
520 ;; "sha2.c" is under BSD-3;
521 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
522 ;; the rest is under ISC.
3f641af0 523 (license (list license:isc license:bsd-3 license:bsd-4))))
feb0d9c3
ED
524
525(define-public python2-py-bcrypt
526 (package-with-python2 python-py-bcrypt))
527
528
429fdea1
ED
529(define-public python-paramiko
530 (package
531 (name "python-paramiko")
81b9bbbd 532 (version "1.16.0")
429fdea1
ED
533 (source
534 (origin
535 (method url-fetch)
81b9bbbd 536 (uri (pypi-uri "paramiko" version))
429fdea1
ED
537 (sha256
538 (base32
81b9bbbd 539 "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
429fdea1 540 (build-system python-build-system)
a3fc12da 541 (propagated-inputs
f22efa01
HG
542 `(("python-pycrypto" ,python-pycrypto)
543 ("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
544 (home-page "http://www.paramiko.org/")
545 (synopsis "SSHv2 protocol library")
546 (description "Paramiko is a python implementation of the SSHv2 protocol,
547providing both client and server functionality. While it leverages a Python C
548extension for low level cryptography (PyCrypto), Paramiko itself is a pure
549Python interface around SSH networking concepts.")
3f641af0 550 (license license:lgpl2.1+)))
429fdea1
ED
551
552(define-public python2-paramiko
553 (package-with-python2 python-paramiko))
554
555
de73dbf6
ED
556(define-public python-httplib2
557 (package
558 (name "python-httplib2")
286f1bac 559 (version "0.9.2")
de73dbf6
ED
560 (source
561 (origin
562 (method url-fetch)
286f1bac 563 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
564 (sha256
565 (base32
286f1bac 566 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6 567 (build-system python-build-system)
286f1bac 568 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
569 (synopsis "Comprehensive HTTP client library")
570 (description
571 "A comprehensive HTTP client library supporting many features left out of
572other HTTP libraries.")
573 (license license:expat)))
574
575(define-public python2-httplib2
576 (package-with-python2 python-httplib2))
577
67039875
ED
578(define-public python-ecdsa
579 (package
580 (name "python-ecdsa")
581 (version "0.13")
582 (source
583 (origin
584 (method url-fetch)
585 (uri (string-append
586 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
587 version
588 ".tar.gz"))
589 (sha256
590 (base32
591 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
592 (build-system python-build-system)
67039875
ED
593 (inputs
594 `(("openssl" ,openssl)))
595 (home-page
596 "http://github.com/warner/python-ecdsa")
597 (synopsis
598 "ECDSA cryptographic signature library (pure python)")
599 (description
600 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
601Curve Digital Signature Algorithm), implemented purely in Python. With this
602library, you can quickly create keypairs (signing key and verifying key), sign
603messages, and verify the signatures. The keys and signatures are very short,
604making them easy to handle and incorporate into other protocols.")
605 (license license:expat)))
606
607(define-public python2-ecdsa
608 (package-with-python2 python-ecdsa))
609
52323f32
ED
610(define-public python-ccm
611 (package
612 (name "python-ccm")
db5567f7 613 (version "2.1.6")
52323f32
ED
614 (source
615 (origin
616 (method url-fetch)
db5567f7 617 (uri (pypi-uri "ccm" version))
52323f32
ED
618 (sha256
619 (base32
db5567f7 620 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32 621 (build-system python-build-system)
f22efa01 622 (propagated-inputs
52323f32 623 `(("python-pyyaml" ,python-pyyaml)
e165f137
HG
624 ;; Not listed in setup.py, but used in ccmlib/node.py for full
625 ;; functionality
626 ("python-psutil" ,python-psutil)
52323f32
ED
627 ("python-six" ,python-six)))
628 (home-page "https://github.com/pcmanus/ccm")
d9a6e221
HG
629 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
630localhost")
631 (description "Cassandra Cluster Manager is a development tool for testing
632local Cassandra clusters. It creates, launches and removes Cassandra clusters
633on localhost.")
3f641af0 634 (license license:asl2.0)))
52323f32
ED
635
636(define-public python2-ccm
637 (package-with-python2 python-ccm))
638
89114f39 639(define-public python-pytz
acc26ff1 640 (package
89114f39 641 (name "python-pytz")
61c9babb 642 (version "2016.3")
acc26ff1
CR
643 (source
644 (origin
645 (method url-fetch)
61c9babb 646 (uri (pypi-uri "pytz" version ".tar.bz2"))
acc26ff1
CR
647 (sha256
648 (base32
61c9babb 649 "1mjmrkk4vc5xzppw7fm0pli1nnbj57cvqv7jjv5whcmccyhxz4y1"))))
acc26ff1 650 (build-system python-build-system)
8498b8cf 651 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 652 (home-page "http://pythonhosted.org/pytz")
9e771e3b 653 (synopsis "Python timezone library")
acc26ff1
CR
654 (description
655 "This library allows accurate and cross platform timezone calculations
656using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 657 (license license:expat)))
5ace6e2f 658
89114f39 659(define-public python2-pytz
11bb85a1 660 (package-with-python2 python-pytz))
89114f39 661
fc50e9c6 662
89114f39 663(define-public python-babel
5ace6e2f 664 (package
89114f39 665 (name "python-babel")
ffb1e98d 666 (version "2.3.4")
5ace6e2f
CR
667 (source
668 (origin
669 (method url-fetch)
b850a6d8 670 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
671 (sha256
672 (base32
ffb1e98d 673 "0x98qqqw35xllpcama013a9788ly84z8dm1w2wwfpxh2710c8df5"))))
5ace6e2f 674 (build-system python-build-system)
f22efa01 675 (propagated-inputs
f3b98f4f 676 `(("python-pytz" ,python-pytz)))
8498b8cf 677 (arguments `(#:tests? #f)) ; no test target
e1804763 678 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
679 (synopsis
680 "Tools for internationalizing Python applications")
681 (description
682 "Babel is composed of two major parts:
683- tools to build and work with gettext message catalogs
684- a Python interface to the CLDR (Common Locale Data Repository), providing
685access to various locale display names, localized number and date formatting,
686etc. ")
3f641af0 687 (license license:bsd-3)))
89114f39
AE
688
689(define-public python2-babel
11bb85a1 690 (package-with-python2 python-babel))
73adf220 691
ed377cc6
RW
692(define-public python2-backport-ssl-match-hostname
693 (package
694 (name "python2-backport-ssl-match-hostname")
f2d06d46 695 (version "3.5.0.1")
ed377cc6
RW
696 (source
697 (origin
698 (method url-fetch)
699 (uri (string-append
700 "https://pypi.python.org/packages/source/b/"
701 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
702 version ".tar.gz"))
703 (sha256
704 (base32
f2d06d46 705 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 706 (build-system python-build-system)
f2d06d46
EF
707 (arguments
708 `(#:python ,python-2
709 #:tests? #f)) ; no test target
f2d06d46
EF
710 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
711 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
712 (description
713 "This backport brings the ssl.match_hostname() function to users of
714earlier versions of Python. The function checks the hostname in the
715certificate returned by the server to which a connection has been established,
716and verifies that it matches the intended target hostname.")
3f641af0 717 (license license:psfl)))
ed377cc6 718
d205f895
TD
719(define-public python-hdf4
720 (package
721 (name "python-hdf4")
722 (version "0.9")
723 (source
724 (origin
725 (method url-fetch)
726 (uri (pypi-uri name version))
727 (sha256
728 (base32
729 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
730 (build-system python-build-system)
731 (native-inputs `(("nose" ,python-nose)))
732 (propagated-inputs `(("numpy" ,python-numpy)))
733 (inputs
734 `(("hdf4" ,hdf4)
735 ("libjpeg" ,libjpeg)
736 ("zlib" ,zlib)))
737 (arguments
738 `(#:phases
739 (modify-phases %standard-phases
740 (replace 'check
741 (lambda _
742 ;; The 'runexamples' script sets PYTHONPATH to CWD, then goes
743 ;; on to import numpy. Somehow this works on their CI system.
744 ;; Let's just manage PYTHONPATH here instead.
745 (substitute* "runexamples.sh"
746 (("export PYTHONPATH=.*") ""))
747 (setenv "PYTHONPATH"
748 (string-append (getcwd) ":"
749 (getenv "PYTHONPATH")))
750 (and (zero? (system* "./runexamples.sh"))
751 (zero? (system* "nosetests" "-v"))))))))
752 (home-page "https://github.com/fhs/python-hdf4")
753 (synopsis "Python interface to the NCSA HDF4 library")
754 (description
755 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
756which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
757NetCDF files can also be read and modified. Python-HDF4 is a fork of
758@url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
759 (license license:expat)))
760
761(define-public python2-hdf4
762 (package-with-python2 python-hdf4))
763
ef5cbf9b
RW
764(define-public python-h5py
765 (package
766 (name "python-h5py")
fe147c41 767 (version "2.6.0")
ef5cbf9b
RW
768 (source
769 (origin
770 (method url-fetch)
fe147c41 771 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
772 (sha256
773 (base32
fe147c41 774 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
ef5cbf9b 775 (build-system python-build-system)
797e1401
RW
776 (arguments
777 `(#:tests? #f ; no test target
778 #:phases
779 (modify-phases %standard-phases
780 (add-after 'unpack 'fix-hdf5-paths
781 (lambda* (#:key inputs #:allow-other-keys)
782 (let ((prefix (assoc-ref inputs "hdf5")))
783 (substitute* "setup_build.py"
784 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
785 (string-append "['" prefix "/lib" "']"))
786 (("'/opt/local/include', '/usr/local/include'")
787 (string-append "'" prefix "/include" "'")))
788 (substitute* "setup_configure.py"
789 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
790 (string-append "['" prefix "/lib" "']")))
791 #t))))))
3c4010b1 792 (propagated-inputs
69866690
HG
793 `(("python-six" ,python-six)
794 ("python-numpy" ,python-numpy)))
ef5cbf9b 795 (inputs
69866690 796 `(("hdf5" ,hdf5)))
ef5cbf9b 797 (native-inputs
fe147c41
EF
798 `(("python-cython" ,python-cython)
799 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
800 (home-page "http://www.h5py.org/")
801 (synopsis "Read and write HDF5 files from Python")
802 (description
803 "The h5py package provides both a high- and low-level interface to the
804HDF5 library from Python. The low-level interface is intended to be a
805complete wrapping of the HDF5 API, while the high-level component supports
806access to HDF5 files, datasets and groups using established Python and NumPy
807concepts.")
9820a028 808 (license license:bsd-3)))
ef5cbf9b
RW
809
810(define-public python2-h5py
9820a028 811 (package-with-python2 python-h5py))
ef5cbf9b 812
ea8450c8
TD
813(define-public python-netcdf4
814 (package
815 (name "python-netcdf4")
816 (version "1.2.6")
817 (source
818 (origin
819 (method url-fetch)
820 (uri (pypi-uri "netCDF4" version))
821 (sha256
822 (base32
823 "1qcymsfxsdfr4sx0vl7ih5d14z66k6c9sjy4gb6rjaksk5387zvg"))))
824 (build-system python-build-system)
825 (native-inputs
826 `(("python-cython" ,python-cython)))
827 (propagated-inputs
828 `(("python-numpy" ,python-numpy)))
829 (inputs
830 `(("netcdf" ,netcdf)
831 ("hdf4" ,hdf4)
832 ("hdf5" ,hdf5)))
833 (arguments
834 '(#:phases
835 (modify-phases %standard-phases
836 (replace 'check
837 (lambda _
838 (setenv "NO_NET" "1") ; disable opendap tests
839 (with-directory-excursion "test"
840 (setenv "PYTHONPATH" ; find and add the library we just built
841 (string-append
842 (car (find-files "../build" "lib.*"
843 #:directories? #:t
844 #:fail-on-error? #:t))
845 ":" (getenv "PYTHONPATH")))
846 (zero? (system* "python" "run_all.py"))))))))
847 (home-page
848 "https://github.com/Unidata/netcdf4-python")
849 (synopsis "Python/numpy interface to the netCDF library")
850 (description "Netcdf4-python is a Python interface to the netCDF C
851library. netCDF version 4 has many features not found in earlier
852versions of the library and is implemented on top of HDF5. This module
853can read and write files in both the new netCDF 4 and the old netCDF 3
854format, and can create files that are readable by HDF5 clients. The
855API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
856to users of that module.")
857 ;; The software is mainly ISC, but includes some files covered
858 ;; by the Expat license.
859 (license (list license:isc license:expat))))
860
861(define-public python2-netcdf4
862 (package-with-python2 python-netcdf4))
863
c1448c69
EB
864(define-public python-lockfile
865 (package
866 (name "python-lockfile")
692add53 867 (version "0.12.2")
c1448c69
EB
868 (source
869 (origin
870 (method url-fetch)
871 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
872 "lockfile-" version ".tar.gz"))
873 (sha256
874 (base32
692add53 875 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
876 (build-system python-build-system)
877 (arguments '(#:test-target "check"))
692add53
BW
878 (native-inputs
879 `(("python-pbr" ,python-pbr)))
6a8f26a4 880 (home-page "https://launchpad.net/pylockfile")
c1448c69
EB
881 (synopsis "Platform-independent file locking module")
882 (description
883 "The lockfile package exports a LockFile class which provides a simple
884API for locking files.")
f210e944 885 (license license:expat)))
c1448c69
EB
886
887(define-public python2-lockfile
f210e944 888 (package-with-python2 python-lockfile))
c1448c69 889
5a1a4bf6
EB
890(define-public python-mock
891 (package
892 (name "python-mock")
893 (version "1.0.1")
894 (source
895 (origin
896 (method url-fetch)
6b7877e1 897 (uri (pypi-uri "mock" version))
5a1a4bf6
EB
898 (sha256
899 (base32
900 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
901 (build-system python-build-system)
902 (arguments '(#:test-target "check"))
6b7877e1 903 (home-page "https://github.com/testing-cabal/mock")
9e771e3b 904 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
905 (description
906 "Mock is a library for testing in Python. It allows you to replace parts
907of your system under test with mock objects and make assertions about how they
908have been used.")
bd3fa666 909 (license license:expat)))
5a1a4bf6
EB
910
911(define-public python2-mock
912 (package-with-python2 python-mock))
913
fc50e9c6 914
73adf220
AE
915(define-public python-setuptools
916 (package
917 (name "python-setuptools")
d660f7be 918 (version "31.0.0")
73adf220
AE
919 (source
920 (origin
921 (method url-fetch)
d660f7be 922 (uri (pypi-uri "setuptools" version))
73adf220
AE
923 (sha256
924 (base32
d660f7be 925 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
e0ed4579
HG
926 (modules '((guix build utils)))
927 (snippet
928 '(begin
929 ;; Remove included binaries which are used to build self-extracting
930 ;; installers for Windows.
931 ;; TODO: Find some way to build them ourself so we can include them.
932 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
933 #t))))
73adf220 934 (build-system python-build-system)
d3d656c5
AE
935 ;; FIXME: Tests require pytest, which itself relies on setuptools.
936 ;; One could bootstrap with an internal untested setuptools.
73adf220 937 (arguments
824af8ca 938 `(#:tests? #f))
73adf220
AE
939 (home-page "https://pypi.python.org/pypi/setuptools")
940 (synopsis
941 "Library designed to facilitate packaging Python projects")
942 (description
943 "Setuptools is a fully-featured, stable library designed to facilitate
944packaging Python projects, where packaging includes:
945Python package and module definitions,
946distribution package metadata,
947test hooks,
948project installation,
949platform-specific details,
950Python 3 support.")
d660f7be
MB
951 ;; TODO: setuptools now bundles the following libraries:
952 ;; packaging, pyparsing, six and appdirs. How to unbundle?
953 (license (list license:psfl ; setuptools itself
954 license:expat ; six, appdirs, pyparsing
955 license:asl2.0 ; packaging is dual ASL2/BSD-2
956 license:bsd-2))))
73adf220
AE
957
958(define-public python2-setuptools
959 (package-with-python2 python-setuptools))
fc50e9c6 960
1194575b
LF
961;;; Pycrypto is abandoned upstream [0] and contains at least one bug that can be
962;;; exploited to achieve arbitrary code execution [1].
963;;;
964;;; TODO Remove this package from GNU Guix.
965;;;
966;;; [0] https://github.com/dlitz/pycrypto/issues/173
967;;; [1] https://github.com/dlitz/pycrypto/issues/176
cafc3f5a
EB
968(define-public python-pycrypto
969 (package
970 (name "python-pycrypto")
971 (version "2.6.1")
972 (source
973 (origin
974 (method url-fetch)
975 (uri (string-append "https://pypi.python.org/packages/source/p/"
976 "pycrypto/pycrypto-" version ".tar.gz"))
977 (sha256
978 (base32
979 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
980 (build-system python-build-system)
cafc3f5a
EB
981 (inputs
982 `(("python" ,python)
983 ("gmp" ,gmp)))
984 (arguments
985 `(#:phases
986 (alist-cons-before
987 'build 'set-build-env
988 ;; pycrypto runs an autoconf configure script behind the scenes
989 (lambda _
990 (setenv "CONFIG_SHELL" (which "bash")))
991 %standard-phases)))
992 (home-page "http://www.pycrypto.org/")
993 (synopsis "Cryptographic modules for Python")
994 (description
995 "Pycrypto is a collection of both secure hash functions (such as SHA256
996and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 997etc.). The package is structured to make adding new modules easy.")
3f641af0 998 (license license:public-domain)))
cafc3f5a 999
345f0611 1000(define-public python2-pycrypto
1c0059da
EF
1001 (let ((pycrypto (package-with-python2 python-pycrypto)))
1002 (package (inherit pycrypto)
1003 (inputs
1004 `(("python" ,python-2)
1005 ,@(alist-delete
1006 "python"
1007 (package-inputs pycrypto)))))))
345f0611 1008
cafc3f5a
EB
1009(define-public python-keyring
1010 (package
1011 (name "python-keyring")
13f3ff35 1012 (version "8.7")
cafc3f5a
EB
1013 (source
1014 (origin
1015 (method url-fetch)
664e6c3a 1016 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
1017 (sha256
1018 (base32
13f3ff35 1019 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
1020 (build-system python-build-system)
1021 (native-inputs
13f3ff35 1022 `(("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1023 (propagated-inputs
cafc3f5a
EB
1024 `(("python-pycrypto" ,python-pycrypto)))
1025 (arguments
664e6c3a 1026 `(#:tests? #f)) ;TODO: tests require pytest
190ba6c2 1027 (home-page "https://github.com/jaraco/keyring")
cafc3f5a
EB
1028 (synopsis "Store and access your passwords safely")
1029 (description
1030 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 1031service from python. It can be used in any application that needs safe
cafc3f5a
EB
1032password storage.")
1033 ;; "MIT" and PSF dual license
f210e944 1034 (license license:x11)))
cafc3f5a 1035
d7af1069 1036(define-public python2-keyring
f210e944 1037 (package-with-python2 python-keyring))
d7af1069 1038
a480bc41
EB
1039(define-public python-six
1040 (package
1041 (name "python-six")
b6ab89ef 1042 (version "1.10.0")
a480bc41
EB
1043 (source
1044 (origin
1045 (method url-fetch)
b6ab89ef 1046 (uri (pypi-uri "six" version))
a480bc41
EB
1047 (sha256
1048 (base32
b6ab89ef 1049 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41 1050 (build-system python-build-system)
a480bc41
EB
1051 (home-page "http://pypi.python.org/pypi/six/")
1052 (synopsis "Python 2 and 3 compatibility utilities")
1053 (description
35b9e423 1054 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
1055functions for smoothing over the differences between the Python versions with
1056the goal of writing Python code that is compatible on both Python versions.
35b9e423 1057Six supports every Python version since 2.5. It is contained in only one
a480bc41 1058Python file, so it can be easily copied into your project.")
3f641af0 1059 (license license:x11)))
a480bc41 1060
0c20025c
AE
1061(define-public python2-six
1062 (package-with-python2 python-six))
1063
cafc3f5a
EB
1064(define-public python-dateutil-2
1065 (package
1066 (name "python-dateutil")
394b8060 1067 (version "2.5.2")
cafc3f5a
EB
1068 (source
1069 (origin
1070 (method url-fetch)
394b8060 1071 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
1072 (sha256
1073 (base32
394b8060 1074 "0jrfpcgvgya6hs45dhrd9yiqgdgz9qp9aa07zsw8gqgn8zphff86"))))
cafc3f5a 1075 (build-system python-build-system)
f22efa01 1076 (propagated-inputs
394b8060 1077 `(("python-six" ,python-six)))
b5a5fb19 1078 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a
EB
1079 (synopsis "Extensions to the standard datetime module")
1080 (description
1081 "The dateutil module provides powerful extensions to the standard
1082datetime module, available in Python 2.3+.")
f210e944 1083 (license license:bsd-3)))
cafc3f5a
EB
1084
1085(define-public python2-dateutil-2
f210e944 1086 (package-with-python2 python-dateutil-2))
cafc3f5a 1087
fc50e9c6
AE
1088(define-public python-dateutil
1089 (package
1090 (name "python-dateutil")
1091 (version "1.5") ; last version for python < 3
1092 (source
1093 (origin
1094 (method url-fetch)
cafc3f5a
EB
1095 (uri (string-append "http://labix.org/download/python-dateutil/"
1096 "python-dateutil-" version ".tar.gz"))
fc50e9c6
AE
1097 (sha256
1098 (base32
1099 "0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
1100 (build-system python-build-system)
b5a5fb19 1101 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a 1102 (synopsis "Extensions to the standard datetime module")
fc50e9c6
AE
1103 (description
1104 "The dateutil module provides powerful extensions to the standard
1105datetime module, available in Python 2.3+.")
3f641af0 1106 (license license:psfl)))
fc50e9c6
AE
1107
1108(define-public python2-dateutil
1109 (package-with-python2 python-dateutil))
1d08c01f 1110
cafc3f5a
EB
1111(define-public python-parsedatetime
1112 (package
1113 (name "python-parsedatetime")
eebf6f01 1114 (version "2.1")
cafc3f5a
EB
1115 (source
1116 (origin
1117 (method url-fetch)
eebf6f01 1118 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1119 (sha256
1120 (base32
eebf6f01 1121 "0bdgyw6y3v7bcxlx0p50s8drxsh5bb5cy2afccqr3j90amvpii8p"))))
cafc3f5a
EB
1122 (build-system python-build-system)
1123 (native-inputs
eebf6f01
EF
1124 `(("python-nose" ,python-nose)
1125 ("python-pyicu" ,python-pyicu)))
cafc3f5a
EB
1126 (home-page "http://github.com/bear/parsedatetime/")
1127 (synopsis
1128 "Parse human-readable date/time text")
1129 (description
e881752c 1130 "Parse human-readable date/time text.")
f210e944 1131 (license license:asl2.0)))
cafc3f5a 1132
38b8f9b2 1133(define-public python2-parsedatetime
f210e944 1134 (package-with-python2 python-parsedatetime))
38b8f9b2 1135
d072efcb
RW
1136(define-public python-pandas
1137 (package
1138 (name "python-pandas")
7d0c3c8d 1139 (version "0.18.1")
d072efcb
RW
1140 (source
1141 (origin
1b96f069 1142 (method url-fetch)
7d0c3c8d
EF
1143 (uri (string-append
1144 "https://pypi.python.org/packages/11/09/"
1145 "e66eb844daba8680ddff26335d5b4fead77f60f957678243549a8dd4830d/"
1146 "pandas-" version ".tar.gz"))
1b96f069 1147 (sha256
7d0c3c8d 1148 (base32 "1ckpxrvvjj6zxmn68icd9hib8qcpx9b35f6izxnr25br5ilq7r6j"))))
d072efcb 1149 (build-system python-build-system)
d072efcb 1150 (propagated-inputs
f22efa01
HG
1151 `(("python-numpy" ,python-numpy)
1152 ("python-pytz" ,python-pytz)
d072efcb
RW
1153 ("python-dateutil" ,python-dateutil-2)))
1154 (native-inputs
abcc7a0e
HG
1155 `(("python-nose" ,python-nose)
1156 ("python-cython" ,python-cython)))
d072efcb
RW
1157 (home-page "http://pandas.pydata.org")
1158 (synopsis "Data structures for data analysis, time series, and statistics")
1159 (description
1160 "Pandas is a Python package providing fast, flexible, and expressive data
1161structures designed to make working with structured (tabular,
1162multidimensional, potentially heterogeneous) and time series data both easy
1163and intuitive. It aims to be the fundamental high-level building block for
1164doing practical, real world data analysis in Python.")
f210e944 1165 (license license:bsd-3)))
d072efcb
RW
1166
1167(define-public python2-pandas
f210e944 1168 (package-with-python2 python-pandas))
d072efcb 1169
cafc3f5a
EB
1170(define-public python-tzlocal
1171 (package
1172 (name "python-tzlocal")
ed80839b 1173 (version "1.2.2")
cafc3f5a
EB
1174 (source
1175 (origin
1176 (method url-fetch)
226d3331 1177 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1178 (sha256
1179 (base32
ed80839b 1180 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1181 (build-system python-build-system)
f22efa01
HG
1182 (propagated-inputs
1183 `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1184 (home-page "https://github.com/regebro/tzlocal")
1185 (synopsis
35b9e423 1186 "Local timezone information for Python")
cafc3f5a
EB
1187 (description
1188 "Tzlocal returns a tzinfo object with the local timezone information.
1189This module attempts to fix a glaring hole in pytz, that there is no way to
1190get the local timezone information, unless you know the zoneinfo name, and
1191under several distributions that's hard or impossible to figure out.")
3f641af0 1192 (license license:cc0)))
cafc3f5a 1193
1d08c01f
AE
1194(define-public python2-pysqlite
1195 (package
1196 (name "python2-pysqlite")
fe476868 1197 (version "2.8.1")
1d08c01f
AE
1198 (source
1199 (origin
1200 (method url-fetch)
fe476868 1201 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1202 (sha256
1203 (base32
fe476868 1204 "0rm0zqyb363y6wljhfmbxs16jjv7p8nk1d8zgq9sdwj6js7y3jkm"))))
1d08c01f
AE
1205 (build-system python-build-system)
1206 (inputs
1207 `(("sqlite" ,sqlite)))
1208 (arguments
1209 `(#:python ,python-2 ; incompatible with Python 3
1210 #:tests? #f)) ; no test target
fe476868 1211 (home-page "http://github.com/ghaering/pysqlite")
7a03af70 1212 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1213 (description
1214 "Pysqlite provides SQLite bindings for Python that comply to the
1215Database API 2.0T.")
ed0cdf83 1216 (license license:zlib)))
1d08c01f 1217
2875caf5
AE
1218
1219(define-public python2-mechanize
1220 (package
1221 (name "python2-mechanize")
1222 (version "0.2.5")
1223 (source
1224 (origin
1225 (method url-fetch)
1226 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1227 version ".tar.gz"))
1228 (sha256
1229 (base32
1230 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1231 (build-system python-build-system)
2875caf5
AE
1232 (arguments
1233 `(#:python ,python-2 ; apparently incompatible with Python 3
1234 #:tests? #f))
1235 ;; test fails with message
1236 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1237 ;; (python-3.3.2) or
1238 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1239 ;; (python-2.7.5).
1240 ;; The source code is from March 2011 and probably not up-to-date
1241 ;; with respect to python unit tests.
1242 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1243 (synopsis
1244 "Stateful programmatic web browsing in Python")
1245 (description
1246 "Mechanize implements stateful programmatic web browsing in Python,
1247after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1248 (license (license:non-copyleft
1249 "file://COPYING"
1250 "See COPYING in the distribution."))))
2875caf5 1251
0352532e
AE
1252
1253(define-public python-simplejson
1254 (package
1255 (name "python-simplejson")
b2e6e150 1256 (version "3.10.0")
0352532e
AE
1257 (source
1258 (origin
1259 (method url-fetch)
988d1bad 1260 (uri (pypi-uri "simplejson" version))
0352532e
AE
1261 (sha256
1262 (base32
b2e6e150 1263 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
0352532e
AE
1264 (build-system python-build-system)
1265 (home-page "http://simplejson.readthedocs.org/en/latest/")
1266 (synopsis
1267 "Json library for Python")
1268 (description
e881752c
AK
1269 "JSON (JavaScript Object Notation) is a subset of JavaScript
1270syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1271format.
0352532e
AE
1272
1273Simplejson exposes an API familiar to users of the standard library marshal
1274and pickle modules. It is the externally maintained version of the json
1275library contained in Python 2.6, but maintains compatibility with Python 2.5
1276and (currently) has significant performance advantages, even without using
1277the optional C extension for speedups. Simplejson is also supported on
1278Python 3.3+.")
3f641af0 1279 (license license:x11)))
0352532e
AE
1280
1281(define-public python2-simplejson
1282 (package-with-python2 python-simplejson))
421a80a2
AE
1283
1284
ed07b08d 1285(define-public python-pyicu
421a80a2 1286 (package
ed07b08d 1287 (name "python-pyicu")
d3b29319 1288 (version "1.9.2")
421a80a2
AE
1289 (source
1290 (origin
1291 (method url-fetch)
1292 (uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
1293 version ".tar.gz"))
1294 (sha256
1295 (base32
d3b29319 1296 "1diba0g8md614fvm9yf50paiwdkhj6rd7xwf1rg9mc0pxc0hhn4v"))))
421a80a2
AE
1297 (build-system python-build-system)
1298 (inputs
1299 `(("icu4c" ,icu4c)))
421a80a2 1300 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1301 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1302 (description
1303 "PyICU is a python extension wrapping the ICU C++ API.")
f210e944 1304 (license license:x11)))
ed07b08d
LF
1305
1306(define-public python2-pyicu
f210e944 1307 (package-with-python2 python-pyicu))
cc20a22a
LC
1308
1309(define-public python2-dogtail
1310 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1311 ;; spaces in indentation" with Python 3.
1312 (package
1313 (name "python2-dogtail")
1314 (version "0.8.2")
1315 (source (origin
1316 (method url-fetch)
1317 (uri (string-append
1318 "https://fedorahosted.org/released/dogtail/dogtail-"
1319 version ".tar.gz"))
1320 (sha256
1321 (base32
1322 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1323 (build-system python-build-system)
1324 (arguments `(#:python ,python-2
1325 #:tests? #f)) ; invalid command "test"
1326 (home-page "https://fedorahosted.org/dogtail/")
1327 (synopsis "GUI test tool and automation framework written in ​Python")
1328 (description
35b9e423 1329 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1330It uses Accessibility (a11y) technologies to communicate with desktop
1331applications. dogtail scripts are written in Python and executed like any
1332other Python program.")
3f641af0 1333 (license license:gpl2+)))
515e6878 1334
011b18c3
LC
1335(define-public python2-empy
1336 (package
1337 (name "python2-empy")
1338 (version "3.3")
1339 (source (origin
1340 (method url-fetch)
1341 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1342 version ".tar.gz"))
1343 (sha256
1344 (base32
1345 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1346 (build-system python-build-system)
1347 (arguments
1348 `(#:python ,python-2
1349 #:phases (alist-replace
1350 'check
1351 (lambda _
1352 (zero? (system* "./test.sh")))
1353 %standard-phases)))
1354 (home-page "http://www.alcyone.com/software/empy/")
1355 (synopsis "Templating system for Python")
1356 (description
1357 "EmPy is a system for embedding Python expressions and statements in
1358template text; it takes an EmPy source file, processes it, and produces
1359output. This is accomplished via expansions, which are special signals to the
1cd4027c 1360EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1361EmPy can expand arbitrary Python expressions and statements in this way, as
1362well as a variety of special forms. Textual data not explicitly delimited in
1363this way is sent unaffected to the output, allowing Python to be used in
1364effect as a markup language. Also supported are callbacks via hooks,
1365recording and playback via diversions, and dynamic, chainable filters. The
1366system is highly configurable via command line options and embedded
1367commands.")
3f641af0 1368 (license license:lgpl2.1+)))
011b18c3 1369
8deeda0c
LC
1370(define-public python2-element-tree
1371 (package
1372 (name "python2-element-tree")
1373 (version "1.2.6")
1374 (source (origin
1375 (method url-fetch)
1376 (uri (string-append
1377 "http://effbot.org/media/downloads/elementtree-"
1378 version "-20050316.tar.gz"))
1379 (sha256
1380 (base32
1381 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1382 (build-system python-build-system)
1383 (arguments
1384 `(#:python ,python-2 ; seems to be part of Python 3
1385 #:tests? #f)) ; no 'test' sub-command
1386 (synopsis "Toolkit for XML processing in Python")
1387 (description
1388 "ElementTree is a Python library supporting lightweight XML processing.")
1389 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1390 (license (license:x11-style
1391 "http://docs.python.org/2/license.html"
1392 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1393
1394(define-public python2-pybugz
1395 (package
1396 (name "python2-pybugz")
1397 (version "0.6.11")
1398 (source (origin
1399 (method url-fetch)
1400 (uri (string-append
1401 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1402 version ".tar.gz"))
1403 (sha256
1404 (base32
6f194a1e 1405 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1406 (patches (search-patches "pybugz-stty.patch"
1407 "pybugz-encode-error.patch"))))
8deeda0c
LC
1408 (build-system python-build-system)
1409 (arguments
1410 `(#:python ,python-2 ; SyntaxError with Python 3
1411 #:tests? #f)) ; no 'test' sub-command
f22efa01
HG
1412 (propagated-inputs
1413 `(("element-tree" ,python2-element-tree)))
8deeda0c
LC
1414 (synopsis "Python and command-line interface to Bugzilla")
1415 (description
1416 "PyBugz is a Python library and command-line tool to query the Bugzilla
1417bug tracking system. It is meant as an aid to speed up interaction with the
1418bug tracker.")
1419 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1420 (license license:gpl2)))
8deeda0c 1421
a480bc41
EB
1422(define-public python-enum34
1423 (package
1424 (name "python-enum34")
d39ae1e5 1425 (version "1.1.0")
a480bc41
EB
1426 (source
1427 (origin
1428 (method url-fetch)
d39ae1e5 1429 (uri (pypi-uri "enum34" version))
a480bc41
EB
1430 (sha256
1431 (base32
d39ae1e5 1432 "0yx1m4564wxgbm4glb3457hi16xihd9w63rv13y2przkdir9dfgp"))))
a480bc41 1433 (build-system python-build-system)
a480bc41
EB
1434 (arguments
1435 `(#:phases
1436 (alist-replace
1437 'check
1438 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1439 %standard-phases)))
1440 (home-page "https://pypi.python.org/pypi/enum34")
1441 (synopsis "Backported Python 3.4 Enum")
1442 (description
1443 "Enum34 is the new Python stdlib enum module available in Python 3.4
1444backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1445 (license license:bsd-3)))
a480bc41 1446
820acd1b
LF
1447(define-public python2-enum34
1448 (package-with-python2 python-enum34))
1449
a480bc41
EB
1450(define-public python-parse-type
1451 (package
1452 (name "python-parse-type")
1453 (version "0.3.4")
1454 (source
1455 (origin
1456 (method url-fetch)
1457 (uri (string-append "https://pypi.python.org/packages/source/p/"
1458 "parse_type/parse_type-" version ".tar.gz"))
1459 (sha256
1460 (base32
1461 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1462 (build-system python-build-system)
f22efa01 1463 (propagated-inputs
f3b98f4f 1464 `(("python-six" ,python-six)
68f1cdec 1465 ("python-parse" ,python-parse)))
a480bc41
EB
1466 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1467 (home-page "https://github.com/jenisys/parse_type")
1468 (synopsis "Extended parse module")
1469 (description
1470 "Parse_type extends the python parse module.")
3f641af0 1471 (license license:bsd-3)))
a480bc41
EB
1472
1473(define-public python-parse
1474 (package
1475 (name "python-parse")
eb3d3503 1476 (version "1.6.6")
a480bc41
EB
1477 (source
1478 (origin
1479 (method url-fetch)
eb3d3503 1480 (uri (pypi-uri "parse" version))
a480bc41
EB
1481 (sha256
1482 (base32
aa6c09ed
EF
1483 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1484 (patches (search-patches "python-parse-too-many-fields.patch"))))
a480bc41
EB
1485 (build-system python-build-system)
1486 (arguments
1487 `(#:phases
f9a65318
EF
1488 (modify-phases %standard-phases
1489 (replace 'check
1490 (lambda _ (zero? (system* "python" "test_parse.py")))))))
a480bc41
EB
1491 (home-page "https://github.com/r1chardj0n3s/parse")
1492 (synopsis "Parse strings")
1493 (description
1494 "Parse strings using a specification based on the Python format()
1495syntax.")
3f641af0 1496 (license license:x11)))
a480bc41 1497
d3eff97a
JL
1498(define-public python-polib
1499 (package
1500 (name "python-polib")
1501 (version "1.0.8")
1502 (source (origin
1503 (method url-fetch)
1504 (uri (pypi-uri "polib" version))
1505 (sha256
1506 (base32
1507 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1508 (build-system python-build-system)
1509 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1510 (synopsis "Manipulate, create and modify gettext files")
1511 (description "Polib can manipulate any gettext format (po, pot and mo)
1512files. It can be used to create po files from scratch or to modify
1513existing ones.")
1514 (license license:expat)))
1515
1516(define-public python2-polib
1517 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1518 (package
1519 (inherit base)
1520 (arguments `(,@(package-arguments base)
1521 ;; Tests don't work with python2.
1522 #:tests? #f)))))
a480bc41 1523
515e6878
LC
1524(define-public scons
1525 (package
1526 (name "scons")
a3f61425 1527 (version "2.3.4")
515e6878
LC
1528 (source (origin
1529 (method url-fetch)
de67e922
LF
1530 (uri (string-append "mirror://sourceforge/scons/scons/" version
1531 "/scons-" version ".tar.gz"))
515e6878
LC
1532 (sha256
1533 (base32
a3f61425 1534 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1535 (build-system python-build-system)
1536 (arguments
1537 ;; With Python 3.x, fails to build with a syntax error.
1538 `(#:python ,python-2
b3e8b4bd 1539 #:use-setuptools? #f ; still relies on distutils
515e6878
LC
1540 #:tests? #f)) ; no 'python setup.py test' command
1541 (home-page "http://scons.org/")
1542 (synopsis "Software construction tool written in Python")
1543 (description
1544 "SCons is a software construction tool. Think of SCons as an improved,
1545cross-platform substitute for the classic Make utility with integrated
1546functionality similar to autoconf/automake and compiler caches such as ccache.
1547In short, SCons is an easier, more reliable and faster way to build
1548software.")
3f641af0 1549 (license license:x11)))
011b18c3 1550
c15a5c0e
DT
1551(define-public python-extras
1552 (package
1553 (name "python-extras")
1554 (version "0.0.3")
1555 (source
1556 (origin
1557 (method url-fetch)
1558 (uri (string-append
1559 "https://pypi.python.org/packages/source/e/extras/extras-"
1560 version ".tar.gz"))
1561 (sha256
1562 (base32
1563 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1564 (build-system python-build-system)
c15a5c0e
DT
1565 (arguments
1566 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1567 '(#:tests? #f))
1568 (home-page "https://github.com/testing-cabal/extras")
1569 (synopsis "Useful extensions to the Python standard library")
1570 (description
1571 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1572 (license license:expat)))
c15a5c0e
DT
1573
1574(define-public python2-extras
1575 (package-with-python2 python-extras))
1576
56ea0efd
DT
1577(define-public python-mimeparse
1578 (package
1579 (name "python-mimeparse")
1580 (version "0.1.4")
1581 (source
1582 (origin
1583 (method url-fetch)
1584 (uri (string-append
1585 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1586 version ".tar.gz"))
1587 (sha256
1588 (base32
1589 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1590 (build-system python-build-system)
56ea0efd
DT
1591 (arguments
1592 '(#:tests? #f)) ; no setup.py test command
1593 (home-page
1594 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1595 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1596 (description
1597 "Mimeparse provides basic functions for parsing MIME type names and
1598matching them against a list of media-ranges.")
bd3fa666 1599 (license license:expat)))
56ea0efd
DT
1600
1601(define-public python2-mimeparse
1602 (package-with-python2 python-mimeparse))
1603
4435427e
DT
1604(define-public python-nose
1605 (package
1606 (name "python-nose")
f7cb9841 1607 (version "1.3.7")
4435427e
DT
1608 (source
1609 (origin
1610 (method url-fetch)
f7cb9841 1611 (uri (pypi-uri "nose" version))
4435427e
DT
1612 (sha256
1613 (base32
f7cb9841 1614 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e 1615 (build-system python-build-system)
4435427e
DT
1616 (arguments
1617 '(#:tests? #f)) ; FIXME: test suite fails
1618 (home-page "http://readthedocs.org/docs/nose/")
1619 (synopsis "Python testing library")
1620 (description
1621 "Nose extends the unittest library to make testing easier.")
3f641af0 1622 (license license:lgpl2.0+)))
4435427e
DT
1623
1624(define-public python2-nose
1625 (package-with-python2 python-nose))
1626
0aea283a
EF
1627(define-public python-nose2
1628 (package
1629 (name "python-nose2")
1630 (version "0.6.5")
1631 (source
1632 (origin
1633 (method url-fetch)
1634 (uri (pypi-uri "nose2" version))
1635 (sha256
1636 (base32
1637 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1638 (build-system python-build-system)
1639 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
f22efa01 1640 (propagated-inputs
0aea283a
EF
1641 `(("python-cov-core" ,python-cov-core)
1642 ("python-pytest-cov" ,python-pytest-cov)
1643 ("python-six" ,python-six)))
1644 (home-page "https://github.com/nose-devs/nose2")
1645 (synopsis "Next generation of nicer testing for Python")
1646 (description
1647 "Nose2 is the next generation of nicer testing for Python, based on the
1648plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1649better plugin api, being easier for users to configure, and simplifying internal
1650interfaces and processes.")
1651 (license license:bsd-2)))
1652
1653(define-public python2-nose2
1654 (package-with-python2 python-nose2))
1655
6cd9c356
DT
1656(define-public python-unittest2
1657 (package
1658 (name "python-unittest2")
1659 (version "0.5.1")
1660 (source
1661 (origin
1662 (method url-fetch)
1663 (uri (string-append
1664 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1665 version ".tar.gz"))
1666 (sha256
1667 (base32
1668 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1669 (build-system python-build-system)
6cd9c356
DT
1670 (home-page "http://pypi.python.org/pypi/unittest2")
1671 (synopsis "Python unit testing library")
1672 (description
1673 "Unittest2 is a replacement for the unittest module in the Python
1674standard library.")
3f641af0 1675 (license license:psfl)))
6cd9c356
DT
1676
1677(define-public python2-unittest2
1678 (package (inherit python-unittest2)
1679 (name "python2-unittest2")
1680 (version "0.5.1")
1681 (source
1682 (origin
1683 (method url-fetch)
1684 (uri (string-append
1685 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1686 version ".tar.gz"))
1687 (sha256
1688 (base32
1689 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
6cd9c356
DT
1690 (arguments
1691 `(#:python ,python-2
1692 #:tests? #f)))) ; no setup.py test command
1693
02f8f804 1694(define-public python-pafy
1695 (package
1696 (name "python-pafy")
1697 (version "0.5.2")
1698 (source
1699 (origin
1700 (method url-fetch)
1701 (uri (pypi-uri "pafy" version))
1702 (sha256
1703 (base32
1704 "1ckvrypyvb7jbqlgwdz0y337ajagjv7dgxyns326nqwypn1wpq0i"))))
1705 (build-system python-build-system)
ed3fee5f 1706 (arguments
1707 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
02f8f804 1708 (propagated-inputs
1709 ;; Youtube-dl is a python package which is imported in the file
1710 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1711 `(("youtube-dl" ,youtube-dl)))
1712 (home-page "https://np1.github.io/pafy/")
1713 (synopsis "Retrieve YouTube content and metadata")
1714 (description
1715 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1716 (license license:lgpl3+)))
1717
542ad60f
DT
1718(define-public python-py
1719 (package
1720 (name "python-py")
71c8a804 1721 (version "1.4.31")
542ad60f
DT
1722 (source
1723 (origin
1724 (method url-fetch)
71c8a804 1725 (uri (pypi-uri "py" version))
542ad60f
DT
1726 (sha256
1727 (base32
71c8a804 1728 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f 1729 (build-system python-build-system)
542ad60f
DT
1730 (home-page "http://pylib.readthedocs.org/")
1731 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1732 (description
1733 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1734code introspection, and logging.")
bd3fa666 1735 (license license:expat)))
542ad60f
DT
1736
1737(define-public python2-py
1738 (package-with-python2 python-py))
1739
855d4761
DT
1740(define-public python-pytest
1741 (package
1742 (name "python-pytest")
61a4332d 1743 (version "2.7.3")
855d4761
DT
1744 (source
1745 (origin
1746 (method url-fetch)
1747 (uri (string-append
1748 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1749 version ".tar.gz"))
1750 (sha256
1751 (base32
61a4332d 1752 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1753 (modules '((guix build utils)))
1754 (snippet
1755 ;; One of the tests involves the /usr directory, so it fails.
1756 '(substitute* "testing/test_argcomplete.py"
1757 (("def test_remove_dir_prefix\\(self\\):")
1758 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1759 (build-system python-build-system)
482d9591
HG
1760 (propagated-inputs
1761 `(("python-py" ,python-py)))
e7881f3d 1762 (native-inputs
482d9591 1763 `(("python-nose" ,python-nose)
855d4761
DT
1764 ("python-mock" ,python-mock)))
1765 (home-page "http://pytest.org")
1766 (synopsis "Python testing library")
1767 (description
1768 "Pytest is a testing tool that provides auto-discovery of test modules
1769and functions, detailed info on failing assert statements, modular fixtures,
1770and many external plugins.")
bd3fa666 1771 (license license:expat)))
855d4761
DT
1772
1773(define-public python2-pytest
1774 (package-with-python2 python-pytest))
1775
fca4ff35
LF
1776;; This package is used by Borg until we can upgrade all our Python packages to
1777;; use a more recent pytest.
1778(define-public python-pytest-2.9.2
1779 (package
1780 (inherit python-pytest)
1781 (name "python-pytest")
1782 (version "2.9.2")
1783 (source (origin
1784 (method url-fetch)
1785 (uri (pypi-uri "pytest" version))
1786 (sha256
1787 (base32
1788 "1n6igbc1b138wx1q5gca4pqw1j6nsyicfxds5n0b5989kaxqmh8j"))))
1789 (arguments
1790 `(#:phases
1791 (modify-phases %standard-phases
1792 (add-before 'check 'disable-invalid-test
1793 (lambda _
1794 (substitute* "testing/test_argcomplete.py"
1795 (("def test_remove_dir_prefix" line)
1796 (string-append "@pytest.mark.skip"
1797 "(reason=\"Assumes that /usr exists.\")\n "
1798 line)))
1799 #t)))))))
1800
358c3d61
EF
1801(define-public python-pytest-cov
1802 (package
1803 (name "python-pytest-cov")
545f4a1c 1804 (version "2.2.1")
358c3d61
EF
1805 (source
1806 (origin
1807 (method url-fetch)
1808 (uri (pypi-uri "pytest-cov" version))
1809 (sha256
545f4a1c
EF
1810 (base32
1811 "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
10468636 1812 (build-system python-build-system)
ce40b383
HG
1813 (arguments
1814 `(#:phases
1815 (modify-phases %standard-phases
1816 (replace 'check
1817 (lambda _
1818 ;; options taken from tox.ini
1819 ;; TODO: make "--restructuredtext" tests pass. They currently fail
1820 ;; with "Duplicate implicit target name"
1821 (zero? (system* "python" "./setup.py" "check"
1822 "--strict" "--metadata")))))))
f22efa01 1823 (propagated-inputs
10468636
EF
1824 `(("python-coverage" ,python-coverage)
1825 ("python-pytest" ,python-pytest)))
10468636
EF
1826 (home-page "https://github.com/pytest-dev/pytest-cov")
1827 (synopsis "Pytest plugin for measuring coverage")
1828 (description
1829 "Pytest-cov produces coverage reports. It supports centralised testing and
1830distributed testing in both @code{load} and @code{each} modes. It also
1831supports coverage of subprocesses.")
f210e944 1832 (license license:expat)))
358c3d61
EF
1833
1834(define-public python2-pytest-cov
f210e944 1835 (package-with-python2 python-pytest-cov))
358c3d61 1836
6784f2e3
RW
1837(define-public python-pytest-runner
1838 (package
1839 (name "python-pytest-runner")
1840 (version "2.6.2")
1841 (source
1842 (origin
1843 (method url-fetch)
54cd239b 1844 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
1845 (sha256
1846 (base32
1847 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1848 (build-system python-build-system)
1849 (arguments
1850 `(#:phases
1851 (modify-phases %standard-phases
1852 ;; The fancy way of setting the version with setuptools_scm does not
1853 ;; seem to work here.
1854 (add-after 'unpack 'set-version
1855 (lambda _
1856 (substitute* "docs/conf.py"
1857 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1858 (string-append "version = \"" ,version "\"")))
1859 #t)))))
1860 (native-inputs
1861 `(("python-pytest" ,python-pytest)
1862 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 1863 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
1864 (synopsis "Invoke py.test as a distutils command")
1865 (description
1866 "This package provides a @command{pytest-runner} command that
1867@file{setup.py} files can use to run tests.")
f210e944 1868 (license license:expat)))
54cd239b
EF
1869
1870(define-public python2-pytest-runner
f210e944 1871 (package-with-python2 python-pytest-runner))
6784f2e3 1872
44547e51
EF
1873(define-public python-pytest-mock
1874 (package
1875 (name "python-pytest-mock")
1876 (version "1.2")
1877 (source
1878 (origin
1879 (method url-fetch)
1880 (uri (pypi-uri "pytest-mock" version ".zip"))
1881 (sha256
1882 (base32
1883 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
1884 (build-system python-build-system)
1885 (native-inputs
1886 `(("unzip" ,unzip)))
f22efa01 1887 (propagated-inputs
d5e41cf2 1888 `(("python-pytest" ,python-pytest)))
44547e51
EF
1889 (home-page "https://github.com/pytest-dev/pytest-mock/")
1890 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
1891 (description
1892 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
1893around the patching API provided by the @code{mock} package, but with the
1894benefit of not having to worry about undoing patches at the end of a test.
1895The mocker fixture has the same API as @code{mock.patch}, supporting the
1896same arguments.")
1897 (properties `((python2-variant . ,(delay python2-pytest-mock))))
1898 (license license:expat)))
1899
1900(define-public python2-pytest-mock
1901 (let ((base (package-with-python2
1902 (strip-python2-variant python-pytest-mock))))
1903 (package (inherit base)
f22efa01 1904 (propagated-inputs
44547e51 1905 `(("python2-mock" ,python2-mock)
f22efa01 1906 ,@(package-propagated-inputs base))))))
44547e51 1907
8fa58fc9
CAW
1908(define-public python-pytest-xdist
1909 (package
1910 (name "python-pytest-xdist")
1911 (version "1.14")
1912 (source
1913 (origin
1914 (method url-fetch)
1915 (uri (pypi-uri "pytest-xdist" version ".zip"))
1916 (sha256
1917 (base32
de585a7e
HG
1918 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
1919 (modules '((guix build utils)))
1920 (snippet
1921 '(begin
1922 ;; Remove pre-compiled .pyc files from source.
1923 (for-each delete-file-recursively
1924 (find-files "." "__pycache__" #:directories? #t))
1925 (for-each delete-file (find-files "." "\\.pyc$"))
1926 #t))))
8fa58fc9
CAW
1927 (build-system python-build-system)
1928 (native-inputs
1929 `(("unzip" ,unzip)
8fa58fc9 1930 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1931 (propagated-inputs
c4516ad2 1932 `(("python-execnet" ,python-execnet)
8fa58fc9
CAW
1933 ("python-pytest" ,python-pytest)
1934 ("python-py" ,python-py)))
1935 (home-page
1936 "https://github.com/pytest-dev/pytest-xdist")
1937 (synopsis
1938 "Plugin for py.test with distributed testing and loop-on-failing modes")
1939 (description
1940 "The pytest-xdist plugin extends py.test with some unique test execution
1941modes: parallelization, running tests in boxed subprocesses, the ability
1942to run tests repeatedly when failed, and the ability to run tests on multiple
1943Python interpreters or platforms. It uses rsync to copy the existing
1944program code to a remote location, executes there, and then syncs the
1945result back.")
f210e944 1946 (license license:expat)))
8fa58fc9
CAW
1947
1948(define-public python2-pytest-xdist
f210e944 1949 (package-with-python2 python-pytest-xdist))
8fa58fc9 1950
84d24017
DT
1951(define-public python-scripttest
1952 (package
1953 (name "python-scripttest")
1954 (version "1.3")
1955 (source
1956 (origin
1957 (method url-fetch)
1958 (uri (string-append
1959 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
1960 version ".tar.gz"))
1961 (sha256
1962 (base32
1963 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
1964 (build-system python-build-system)
521b7772 1965 (native-inputs
f3b98f4f 1966 `(("python-pytest" ,python-pytest)))
84d24017
DT
1967 (home-page "http://pythonpaste.org/scripttest/")
1968 (synopsis "Python library to test command-line scripts")
1969 (description "Scripttest is a Python helper library for testing
1970interactive command-line applications. With it you can run a script in a
1971subprocess and see the output as well as any file modifications.")
bd3fa666 1972 (license license:expat)))
84d24017
DT
1973
1974(define-public python2-scripttest
1975 (package-with-python2 python-scripttest))
1976
d8fa80e1
DT
1977(define-public python-testtools
1978 (package
1979 (name "python-testtools")
1980 (version "1.0.0")
1981 (source
1982 (origin
1983 (method url-fetch)
1984 (uri (string-append
1985 "https://pypi.python.org/packages/source/t/testtools/testtools-"
1986 version ".tar.gz"))
1987 (sha256
1988 (base32
1989 "1dyml28ykpl5jb9khdmcdvhy1cxqingys6qvj2k04fzlaj6z3bbx"))))
1990 (build-system python-build-system)
0e88cbf8 1991 (propagated-inputs
f22efa01
HG
1992 `(("python-mimeparse" ,python-mimeparse)
1993 ("python-extras" ,python-extras)))
d8fa80e1
DT
1994 (home-page "https://github.com/testing-cabal/testtools")
1995 (synopsis
1996 "Extensions to the Python standard library unit testing framework")
1997 (description
1998 "Testtools extends the Python standard library unit testing framework to
1999provide matchers, more debugging information, and cross-Python
2000compatibility.")
3f641af0 2001 (license license:psfl)))
d8fa80e1
DT
2002
2003(define-public python2-testtools
2004 (package-with-python2 python-testtools))
2005
5bf3afea
DT
2006(define-public python-testscenarios
2007 (package
2008 (name "python-testscenarios")
2009 (version "0.4")
2010 (source
2011 (origin
2012 (method url-fetch)
2013 (uri (string-append
2014 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
2015 version ".tar.gz"))
2016 (sha256
2017 (base32
2018 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
2019 (build-system python-build-system)
f22efa01 2020 (propagated-inputs
8e73d3ba 2021 `(("python-testtools" ,python-testtools)))
5bf3afea
DT
2022 (home-page "https://launchpad.net/testscenarios")
2023 (synopsis "Pyunit extension for dependency injection")
2024 (description
2025 "Testscenarios provides clean dependency injection for Python unittest
2026style tests.")
3f641af0 2027 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
2028
2029(define-public python2-testscenarios
2030 (package-with-python2 python-testscenarios))
2031
dac79ecc
DT
2032(define-public python-testresources
2033 (package
2034 (name "python-testresources")
2035 (version "0.2.7")
2036 (source
2037 (origin
2038 (method url-fetch)
2039 (uri (string-append
2040 "https://pypi.python.org/packages/source/t/testresources/testresources-"
2041 version ".tar.gz"))
2042 (sha256
2043 (base32
2044 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
2045 (build-system python-build-system)
dac79ecc
DT
2046 (home-page "https://launchpad.net/testresources")
2047 (synopsis
2048 "Pyunit extension for managing test resources")
2049 (description
2050 "Testresources is an extension to Python's unittest to allow declarative
2051use of resources by test cases.")
3f641af0 2052 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
2053
2054(define-public python2-testresources
2055 (package-with-python2 python-testresources))
2056
070ab058
DT
2057(define-public python-subunit
2058 (package
2059 (name "python-subunit")
2060 (version "0.0.21")
2061 (source
2062 (origin
2063 (method url-fetch)
2064 (uri (string-append
2065 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
2066 version ".tar.gz"))
2067 (sha256
2068 (base32
2069 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
2070 (build-system python-build-system)
f22efa01 2071 (propagated-inputs
b52ad371
HG
2072 `(("python-extras" ,python-extras)
2073 ("python-mimeparse" ,python-mimeparse)))
2074 (native-inputs
2075 `(("python-testscenarios" ,python-testscenarios)))
070ab058
DT
2076 (home-page "http://launchpad.net/subunit")
2077 (synopsis "Python implementation of the subunit protocol")
2078 (description
2079 "Python-subunit is a Python implementation of the subunit test streaming
2080protocol.")
3f641af0 2081 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
2082
2083(define-public python2-subunit
2084 (package-with-python2 python-subunit))
2085
d2a8db92
HG
2086;; Recent versions of python-fixtures and python-testrepository need
2087;; python-pbr for packaging, which itself needs these two packages for
2088;; testing.
2089;; To fix this circular dependency, we use a build of python-pbr, based on the
2090;; same source, just without any test dependencies and with tests disabled.
2091;; python-pbr-minmal is then used to package python-fixtures and
2092;; python-testrepository.
2093;; Strictly speaking we currently could remove the test-requirements from the
2094;; normal python-pbr package (and save this package) since test are disabled
2095;; there anyway. But this may change in future.
2096(define python-pbr-minimal
cd49454b 2097 (package
d2a8db92
HG
2098 (name "python-pbr-minimal")
2099 (version "1.8.1")
7787ef76
CR
2100 (source
2101 (origin
2102 (method url-fetch)
d2a8db92 2103 (uri (pypi-uri "pbr" version))
7787ef76
CR
2104 (sha256
2105 (base32
d2a8db92 2106 "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2"))))
7787ef76
CR
2107 (build-system python-build-system)
2108 (arguments
d2a8db92
HG
2109 `(#:tests? #f))
2110 (home-page "http://docs.openstack.org/developer/pbr/")
2111 (synopsis "Minimal build of python-pbr used for bootstrapping")
7787ef76 2112 (description
d2a8db92 2113 "Used only for bootstrapping python2-pbr, you should not need this.")
3f641af0 2114 (license license:asl2.0)))
7787ef76 2115
d2a8db92
HG
2116(define python2-pbr-minimal
2117 (package-with-python2 python-pbr-minimal))
7787ef76 2118
1ef09c0c 2119(define-public python-pbr
e25f0174 2120 (package
d2a8db92 2121 (inherit python-pbr-minimal)
e25f0174 2122 (name "python-pbr")
e25f0174
BW
2123 (arguments
2124 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2125 (propagated-inputs
d2a8db92
HG
2126 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2127 (native-inputs
e25f0174 2128 `(("python-fixtures" ,python-fixtures)
d2a8db92 2129 ;; discover, coverage, hacking, subunit
e25f0174 2130 ("python-mock" ,python-mock)
d2a8db92 2131 ("python-six" ,python-six)
e25f0174
BW
2132 ("python-sphinx" ,python-sphinx)
2133 ("python-testrepository" ,python-testrepository)
2134 ("python-testresources" ,python-testresources)
2135 ("python-testscenarios" ,python-testscenarios)
2136 ("python-testtools" ,python-testtools)
2137 ("python-virtualenv" ,python-virtualenv)))
d2a8db92 2138 (synopsis "Enhance the default behavior of Python’s setuptools")
e25f0174
BW
2139 (description
2140 "Python Build Reasonableness (PBR) is a library that injects some useful
d2a8db92
HG
2141and sensible default behaviors into your setuptools run. It will set
2142versions, process requirements files and generate AUTHORS and ChangeLog file
2143from git information.
2144")))
1ef09c0c
BW
2145
2146(define-public python2-pbr
e25f0174 2147 (package-with-python2 python-pbr))
1ef09c0c 2148
7787ef76
CR
2149(define-public python-fixtures
2150 (package
2151 (name "python-fixtures")
13fcc6df 2152 (version "1.4.0")
7787ef76
CR
2153 (source
2154 (origin
2155 (method url-fetch)
13fcc6df 2156 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2157 (sha256
2158 (base32
13fcc6df 2159 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76
CR
2160 (build-system python-build-system)
2161 (propagated-inputs
ae92cadd 2162 `(("python-six" ,python-six)))
e7881f3d 2163 (native-inputs
d2a8db92 2164 `(("python-pbr-minimal" ,python-pbr-minimal)
7787ef76 2165 ("python-testtools" ,python-testtools)))
7787ef76
CR
2166 (home-page "https://launchpad.net/python-fixtures")
2167 (synopsis "Python test fixture library")
2168 (description
2169 "Fixtures provides a way to create reusable state, useful when writing
2170Python tests.")
3f641af0 2171 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2172
cd49454b
DT
2173(define-public python2-fixtures
2174 (package-with-python2 python-fixtures))
2175
b24a0c00
DT
2176(define-public python-testrepository
2177 (package
2178 (name "python-testrepository")
2179 (version "0.0.20")
2180 (source
2181 (origin
2182 (method url-fetch)
2183 (uri (string-append
2184 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2185 version ".tar.gz"))
2186 (sha256
2187 (base32
2188 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2189 (build-system python-build-system)
05de40c5 2190 (propagated-inputs
b2e66edf
HG
2191 `(("python-fixtures" ,python-fixtures)
2192 ("python-subunit" ,python-subunit)
b52ad371
HG
2193 ("python-testtools" ,python-testtools)))
2194 (native-inputs
2195 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
b24a0c00
DT
2196 ("python-mimeparse" ,python-mimeparse)))
2197 (home-page "https://launchpad.net/testrepository")
2198 (synopsis "Database for Python test results")
2199 (description "Testrepository provides a database of test results which can
2200be used as part of a developer's workflow to check things such as what tests
2201have failed since the last commit or what tests are currently failing.")
3f641af0 2202 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2203
2204(define-public python2-testrepository
2205 (package-with-python2 python-testrepository))
2206
243a009a
DT
2207(define-public python-coverage
2208 (package
2209 (name "python-coverage")
4d4cf3dd 2210 (version "4.1")
243a009a
DT
2211 (source
2212 (origin
2213 (method url-fetch)
82a3c582 2214 (uri (pypi-uri "coverage" version))
243a009a
DT
2215 (sha256
2216 (base32
4d4cf3dd 2217 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a 2218 (build-system python-build-system)
243a009a
DT
2219 (home-page "http://nedbatchelder.com/code/coverage")
2220 (synopsis "Code coverage measurement for Python")
2221 (description
2222 "Coverage measures code coverage, typically during test execution. It
2223uses the code analysis tools and tracing hooks provided in the Python standard
2224library to determine which lines are executable, and which have been
2225executed.")
3f641af0 2226 (license license:bsd-3)))
243a009a
DT
2227
2228(define-public python2-coverage
2229 (package-with-python2 python-coverage))
2230
12f839fd
EF
2231(define-public python-cov-core
2232 (package
2233 (name "python-cov-core")
2234 (version "1.15.0")
2235 (source
2236 (origin
2237 (method url-fetch)
2238 (uri (pypi-uri "cov-core" version))
2239 (sha256
2240 (base32
2241 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2242 (build-system python-build-system)
f78e1c27 2243 (propagated-inputs
12f839fd
EF
2244 `(("python-coverage" ,python-coverage)))
2245 (home-page "https://github.com/schlamar/cov-core")
2246 (synopsis "plugin core for use by pytest-cov, nose-cov and nose2-cov")
2247 (description
2248 "This is a library package for use by pytest-cov, nose-cov and nose2-cov.
2249It is useful for developing coverage plugins for these testing frameworks.")
f210e944 2250 (license license:expat)))
12f839fd
EF
2251
2252(define-public python2-cov-core
f210e944 2253 (package-with-python2 python-cov-core))
12f839fd 2254
041358fb
DT
2255(define-public python-discover
2256 (package
2257 (name "python-discover")
2258 (version "0.4.0")
2259 (source
2260 (origin
2261 (method url-fetch)
2262 (uri (string-append
2263 "https://pypi.python.org/packages/source/d/discover/discover-"
2264 version ".tar.gz"))
2265 (sha256
2266 (base32
2267 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2268 (build-system python-build-system)
041358fb
DT
2269 (home-page "http://pypi.python.org/pypi/discover/")
2270 (synopsis
2271 "Python test discovery for unittest")
2272 (description
2273 "Discover provides test discovery for unittest, a feature that has been
e881752c 2274backported from Python 2.7 for Python 2.4+.")
3f641af0 2275 (license license:bsd-3)))
041358fb
DT
2276
2277(define-public python2-discover
2278 (package-with-python2 python-discover))
2279
a480bc41
EB
2280(define-public behave
2281 (package
2282 (name "behave")
287cfd1a 2283 (version "1.2.5")
a480bc41
EB
2284 (source (origin
2285 (method url-fetch)
287cfd1a 2286 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2287 (sha256
2288 (base32
287cfd1a 2289 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41 2290 (build-system python-build-system)
f22efa01 2291 (propagated-inputs
f3b98f4f 2292 `(("python-six" ,python-six)
a480bc41
EB
2293 ("python-parse" ,python-parse)
2294 ("python-parse-type" ,python-parse-type)))
2295 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2296 ;PyHamcrest>=1.8
2297 (home-page "http://github.com/behave/behave")
2298 (synopsis "Python behavior-driven development")
2299 (description
2300 "Behave is a tool for behavior-driven development in python.
2301Behavior-driven development (or BDD) is an agile software development
2302technique that encourages collaboration between developers, QA and
2303non-technical or business participants in a software project. Behave uses
2304tests written in a natural language style, backed up by Python code.")
3f641af0 2305 (license license:x11)))
c7303d3c
DT
2306
2307(define-public python-exif-read
2308 (package
2309 (name "python-exif-read")
2a2d0981 2310 (version "2.1.2")
c7303d3c
DT
2311 (source (origin
2312 (method url-fetch)
2a2d0981 2313 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2314 (sha256
2315 (base32
2a2d0981 2316 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c 2317 (build-system python-build-system)
c7303d3c
DT
2318 (arguments `(#:tests? #f)) ; no tests
2319 (home-page "https://github.com/ianare/exif-py")
2320 (synopsis "Python library to extract EXIF data from image files")
2321 (description
2322 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2323files.")
3f641af0 2324 (license license:bsd-3)))
c7303d3c
DT
2325
2326(define-public python2-exif-read
2327 (package-with-python2 python-exif-read))
d5f89b22
DT
2328
2329(define-public python-pyld
2330 (package
2331 (name "python-pyld")
8957af32 2332 (version "0.7.1")
d5f89b22
DT
2333 (source (origin
2334 (method url-fetch)
af1ab773 2335 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2336 (sha256
2337 (base32
8957af32 2338 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
d5f89b22 2339 (build-system python-build-system)
d5f89b22
DT
2340 (arguments `(#:tests? #f)) ; no tests
2341 (home-page "http://github.com/digitalbazaar/pyld")
2342 (synopsis "Python implementation of the JSON-LD specification")
2343 (description
2344 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2345 (license license:bsd-3)))
d5f89b22
DT
2346
2347(define-public python2-pyld
2348 (package-with-python2 python-pyld))
3a1f9a68
DT
2349
2350(define-public python-certifi
2351 (package
2352 (name "python-certifi")
b2a2232c 2353 (version "2016.8.31")
3a1f9a68
DT
2354 (source (origin
2355 (method url-fetch)
9a41f443 2356 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2357 (sha256
2358 (base32
b2a2232c 2359 "06c9dcyv8ss050gkv5xjivbxhm6qm0s9vzy4r33wqabgv118lw7p"))))
3a1f9a68 2360 (build-system python-build-system)
3a1f9a68
DT
2361 (arguments `(#:tests? #f)) ; no tests
2362 (home-page "http://python-requests.org/")
2363 (synopsis "Python CA certificate bundle")
2364 (description
2365 "Certifi is a Python library that contains a CA certificate bundle, which
2366is used by the Requests library to verify HTTPS requests.")
3f641af0 2367 (license license:asl2.0)))
3a1f9a68
DT
2368
2369(define-public python2-certifi
2370 (package-with-python2 python-certifi))
e6cfbd36 2371
12c270dd
RW
2372(define-public python-click
2373 (package
2374 (name "python-click")
43accb58 2375 (version "6.6")
12c270dd
RW
2376 (source
2377 (origin
2378 (method url-fetch)
375f224b 2379 (uri (pypi-uri "click" version))
12c270dd 2380 (sha256
43accb58
LF
2381 (base32
2382 "1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc"))))
12c270dd 2383 (build-system python-build-system)
e2ab5a09
BW
2384 (arguments
2385 `(#:phases
2386 (modify-phases %standard-phases
2387 (add-after 'unpack 'fix-paths
2388 (lambda* (#:key inputs #:allow-other-keys)
2389 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2390 "cross-libc" "libc"))))
2391 (substitute* "click/_unicodefun.py"
2392 (("'locale'")
2393 (string-append "'" glibc "/bin/locale'"))))
2394 #t)))))
12c270dd
RW
2395 (home-page "http://click.pocoo.org")
2396 (synopsis "Command line library for Python")
2397 (description
2398 "Click is a Python package for creating command line interfaces in a
2399composable way with as little code as necessary. Its name stands for
2400\"Command Line Interface Creation Kit\". It's highly configurable but comes
2401with sensible defaults out of the box.")
3f641af0 2402 (license license:bsd-3)))
12c270dd
RW
2403
2404(define-public python2-click
2405 (package-with-python2 python-click))
2406
addc808d
EF
2407(define-public python-wheel
2408 (package
2409 (name "python-wheel")
40981b5c 2410 (version "0.29.0")
e1ba0749
EF
2411 (source
2412 (origin
2413 (method url-fetch)
2414 (uri (pypi-uri "wheel" version))
2415 (sha256
2416 (base32
40981b5c 2417 "0j0n38hg1jvrmyy68f9ikvzq1gs9g0sx4ws7maf8wi3bwbbqmfqy"))))
e1ba0749
EF
2418 (build-system python-build-system)
2419 (native-inputs
f3b98f4f 2420 `(("python-jsonschema" ,python-jsonschema)
e1ba0749
EF
2421 ("python-pytest-cov" ,python-pytest-cov)))
2422 (home-page "https://bitbucket.org/pypa/wheel/")
2423 (synopsis "Format for built Python packages")
2424 (description
2425 "A wheel is a ZIP-format archive with a specially formatted filename and
2426the @code{.whl} extension. It is designed to contain all the files for a PEP
2427376 compatible install in a way that is very close to the on-disk format. Many
2428packages will be properly installed with only the @code{Unpack} step and the
2429unpacked archive preserves enough information to @code{Spread} (copy data and
2430scripts to their final locations) at any later time. Wheel files can be
2431installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2432 (license license:expat)
2433 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2434
2435(define-public python2-wheel
8ad4ae20
LF
2436 (let ((wheel (package-with-python2
2437 (strip-python2-variant python-wheel))))
264ae686 2438 (package (inherit wheel)
8ad4ae20
LF
2439 (native-inputs `(("python2-functools32" ,python2-functools32)
2440 ,@(package-native-inputs wheel))))))
2441
addc808d 2442
ae641128 2443(define-public python-requests
e6cfbd36 2444 (package
ae641128 2445 (name "python-requests")
74a066f9 2446 (version "2.9.1")
e6cfbd36
DT
2447 (source (origin
2448 (method url-fetch)
5d691657 2449 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2450 (sha256
2451 (base32
74a066f9 2452 "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5"))))
e6cfbd36 2453 (build-system python-build-system)
5d691657 2454 (native-inputs
f3b98f4f 2455 `(("python-py" ,python-py)
5d691657
EF
2456 ("python-pytest" ,python-pytest)
2457 ("python-pytest-cov" ,python-pytest-cov)
2458 ("python-wheel" ,python-wheel)))
e6cfbd36
DT
2459 (home-page "http://python-requests.org/")
2460 (synopsis "Python HTTP library")
2461 (description
2462 "Requests is a Python HTTP client library. It aims to be easier to use
2463than Python’s urllib2 library.")
3f641af0 2464 (license license:asl2.0)))
864b5211 2465
e9005180
DT
2466;; Some software requires an older version of Requests, notably Docker
2467;; Compose.
2468(define-public python-requests-2.7
2469 (package (inherit python-requests)
2470 (version "2.7.0")
2471 (source (origin
2472 (method url-fetch)
2473 (uri (pypi-uri "requests" version))
2474 (sha256
2475 (base32
2476 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2477
ae641128 2478(define-public python2-requests
8ad4ae20 2479 (package-with-python2 python-requests))
ae641128 2480
ea521b42
DT
2481(define-public python-vcversioner
2482 (package
2483 (name "python-vcversioner")
538fe019 2484 (version "2.16.0.0")
ea521b42
DT
2485 (source
2486 (origin
2487 (method url-fetch)
2488 (uri (pypi-uri "vcversioner" version))
2489 (sha256
2490 (base32
538fe019 2491 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
ea521b42 2492 (build-system python-build-system)
ea521b42
DT
2493 (synopsis "Python library for version number discovery")
2494 (description "Vcversioner is a Python library that inspects tagging
2495information in a variety of version control systems in order to discover
2496version numbers.")
2497 (home-page "https://github.com/habnabit/vcversioner")
f210e944 2498 (license license:isc)))
ea521b42
DT
2499
2500(define-public python2-vcversioner
f210e944 2501 (package-with-python2 python-vcversioner))
ae641128 2502
864b5211
DT
2503(define-public python-jsonschema
2504 (package
2505 (name "python-jsonschema")
b3667afb 2506 (version "2.5.1")
864b5211
DT
2507 (source (origin
2508 (method url-fetch)
2509 (uri
2510 (string-append
2511 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2512 version ".tar.gz"))
2513 (sha256
2514 (base32
b3667afb 2515 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211 2516 (build-system python-build-system)
8bcd6b91
EF
2517 (arguments
2518 '(#:phases
2519 (modify-phases %standard-phases
2520 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
eaba9d66 2521 (native-inputs
8bcd6b91
EF
2522 `(("python-nose" ,python-nose)
2523 ("python-vcversioner" ,python-vcversioner)))
2524 (home-page "https://github.com/Julian/jsonschema")
864b5211
DT
2525 (synopsis "Implementation of JSON Schema for Python")
2526 (description
2527 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2528 (license license:expat)
2529 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2530
2531(define-public python2-jsonschema
a14600ec
LF
2532 (let ((jsonschema (package-with-python2
2533 (strip-python2-variant python-jsonschema))))
264ae686 2534 (package (inherit jsonschema)
eaba9d66 2535 (native-inputs
8bcd6b91 2536 `(("python2-mock" ,python2-mock)
eaba9d66
MB
2537 ,@(package-native-inputs jsonschema)))
2538 (propagated-inputs
2539 `(("python2-functools32" ,python2-functools32))))))
850189b8 2540
9f21414d 2541(define-public python-kitchen
2542 (package
2543 (name "python-kitchen")
2544 (version "1.2.4")
2545 (source
2546 (origin
2547 (method url-fetch)
2548 (uri (pypi-uri "kitchen" version))
2549 (sha256
2550 (base32
2551 "0ggv3p4x8jvmmzhp0xm00h6pvh1g0gmycw71rjwagnrj8n23vxrq"))))
2552 (build-system python-build-system)
2553 (propagated-inputs
2554 `(("python-chardet" ,python-chardet)))
2555 (home-page "https://fedorahosted.org/kitchen")
2556 (synopsis "Python API for snippets")
2557 (description "@code{kitchen} module provides a python API for all sorts of
2558little useful snippets of code that everybody ends up writing for their projects
2559but never seem big enough to build an independent release. Use kitchen and stop
2560cutting and pasting that code over and over.")
2561 (license (list license:lgpl2.1+
2562 ;; subprocess.py, test_subprocess.py,
2563 ;; kitchen/pycompat25/defaultdict.py:
2564 license:psfl))))
2565
2566(define-public python2-kitchen
2567 (package-with-python2 python-kitchen))
2568
850189b8
DT
2569(define-public python-unidecode
2570 (package
2571 (name "python-unidecode")
8925d4f3 2572 (version "0.04.18")
850189b8
DT
2573 (source (origin
2574 (method url-fetch)
8925d4f3 2575 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2576 (sha256
2577 (base32
8925d4f3 2578 "12hhblqy1ajvidm38im4171x4arg83pfmziyn53nizp29p3m14gi"))))
850189b8 2579 (build-system python-build-system)
850189b8
DT
2580 (home-page "https://pypi.python.org/pypi/Unidecode")
2581 (synopsis "ASCII transliterations of Unicode text")
2582 (description
2583 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2584useful when integrating with legacy code that doesn't support Unicode, or for
2585ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2586machine identifiers from human-readable Unicode strings that should still be
2587somewhat intelligeble.")
3f641af0 2588 (license license:gpl2+)))
850189b8
DT
2589
2590(define-public python2-unidecode
2591 (package-with-python2 python-unidecode))
6d45fef4
DT
2592
2593(define-public python-pyjwt
2594 (package
2595 (name "python-pyjwt")
eb31d4b4 2596 (version "1.4.0")
6d45fef4
DT
2597 (source
2598 (origin
2599 (method url-fetch)
eb31d4b4 2600 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2601 (sha256
2602 (base32
eb31d4b4 2603 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2604 (build-system python-build-system)
eb31d4b4 2605 (native-inputs
130fe994
HG
2606 `(("python-pytest" ,python-pytest)
2607 ("python-pytest-cov" ,python-pytest-cov)
2608 ("python-pytest-runner" ,python-pytest-runner)))
6d45fef4
DT
2609 (home-page "http://github.com/progrium/pyjwt")
2610 (synopsis "JSON Web Token implementation in Python")
2611 (description
2612 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2613 (license license:expat)))
6d45fef4
DT
2614
2615(define-public python2-pyjwt
2616 (package-with-python2 python-pyjwt))
2617
2cec1f6f
DT
2618(define-public python-oauthlib
2619 (package
2620 (name "python-oauthlib")
bde2171d 2621 (version "1.0.3")
2cec1f6f
DT
2622 (source (origin
2623 (method url-fetch)
bde2171d 2624 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2625 (sha256
2626 (base32
bde2171d 2627 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2628 (build-system python-build-system)
bde2171d 2629 (native-inputs
bb06aa34 2630 `(("python-nose" ,python-nose)
bde2171d 2631 ("python-cryptography" ,python-cryptography)
bb06aa34
HG
2632 ("python-pyjwt" ,python-pyjwt)
2633 ("python-blinker" ,python-blinker)))
2cec1f6f
DT
2634 (home-page "https://github.com/idan/oauthlib")
2635 (synopsis "OAuth implementation for Python")
2636 (description
2637 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2638OAuth request-signing logic.")
3f641af0 2639 (license license:bsd-3)
59f151ec 2640 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2641
2642(define-public python2-oauthlib
59f151ec 2643 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2644 (package
2645 (inherit base)
00e10c6e 2646 (native-inputs `(("python2-unittest2" ,python2-unittest2)
bb06aa34 2647 ("python2-mock" ,python2-mock)
59f151ec 2648 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2649
2650(define-public python-itsdangerous
2651 (package
2652 (name "python-itsdangerous")
2653 (version "0.24")
2654 (source
2655 (origin
2656 (method url-fetch)
2657 (uri (string-append
2658 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2659 version ".tar.gz"))
2660 (sha256
2661 (base32
2662 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2663 (build-system python-build-system)
ec5dbb5c
DT
2664 (home-page "http://github.com/mitsuhiko/itsdangerous")
2665 (synopsis "Python library for passing data to/from untrusted environments")
2666 (description
2667 "Itsdangerous provides various helpers to pass trusted data to untrusted
2668environments and back.")
f210e944 2669 (license license:bsd-3)))
ec5dbb5c
DT
2670
2671(define-public python2-itsdangerous
f210e944 2672 (package-with-python2 python-itsdangerous))
5731cae3 2673
8d12be1e
RW
2674(define-public python-pyyaml
2675 (package
2676 (name "python-pyyaml")
2677 (version "3.11")
2678 (source
2679 (origin
2680 (method url-fetch)
2681 (uri (string-append
2682 "https://pypi.python.org/packages/source/P/PyYAML/PyYAML-"
2683 version ".tar.gz"))
2684 (sha256
2685 (base32
2686 "1s26125vfnskng58ym37xhwv8v0mm95b2cwbjfag8prfhy596v63"))))
2687 (build-system python-build-system)
2688 (inputs
2689 `(("libyaml" ,libyaml)))
8d12be1e
RW
2690 (home-page "http://pyyaml.org/wiki/PyYAML")
2691 (synopsis "YAML parser and emitter for Python")
2692 (description
2693 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2694complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2695API, and sensible error messages. PyYAML supports standard YAML tags and
2696provides Python-specific tags that allow to represent an arbitrary Python
2697object.")
2698 (license license:expat)))
2699
2700(define-public python2-pyyaml
2701 (package-with-python2 python-pyyaml))
2702
5731cae3
DT
2703(define-public python-virtualenv
2704 (package
2705 (name "python-virtualenv")
58d04dba 2706 (version "15.0.3")
5731cae3
DT
2707 (source
2708 (origin
2709 (method url-fetch)
17804240 2710 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2711 (sha256
2712 (base32
58d04dba 2713 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
5731cae3 2714 (build-system python-build-system)
17804240
EF
2715 (arguments
2716 `(#:phases
2717 (modify-phases %standard-phases
58d04dba
RW
2718 (replace 'check
2719 (lambda _
2720 ;; Disable failing test. See upstream bug report
2721 ;; https://github.com/pypa/virtualenv/issues/957
2722 (substitute* "tests/test_virtualenv.py"
2723 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2724 (zero? (system* "py.test")))))))
e7881f3d 2725 (native-inputs
f3b98f4f 2726 `(("python-mock" ,python-mock)
17804240 2727 ("python-pytest" ,python-pytest)))
5731cae3
DT
2728 (home-page "https://virtualenv.pypa.io/")
2729 (synopsis "Virtual Python environment builder")
2730 (description
2731 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2732 (license license:expat)))
5731cae3
DT
2733
2734(define-public python2-virtualenv
2735 (package-with-python2 python-virtualenv))
8176d4d5
DT
2736
2737(define-public python-markupsafe
2738 (package
2739 (name "python-markupsafe")
2740 (version "0.23")
2741 (source
2742 (origin
2743 (method url-fetch)
2744 (uri (string-append
2745 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2746 version ".tar.gz"))
2747 (sha256
2748 (base32
2749 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2750 (build-system python-build-system)
8176d4d5
DT
2751 (home-page "http://github.com/mitsuhiko/markupsafe")
2752 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2753 (description
2754 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2755for Python.")
3f641af0 2756 (license license:bsd-3)))
8176d4d5
DT
2757
2758(define-public python2-markupsafe
2759 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2760
2761(define-public python-jinja2
2762 (package
2763 (name "python-jinja2")
e98149b3 2764 (version "2.8")
fe34f0d1
DT
2765 (source
2766 (origin
2767 (method url-fetch)
e98149b3 2768 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2769 (sha256
2770 (base32
e98149b3 2771 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1 2772 (build-system python-build-system)
f22efa01 2773 (propagated-inputs
f3b98f4f 2774 `(("python-markupsafe" ,python-markupsafe)))
fe34f0d1
DT
2775 (home-page "http://jinja.pocoo.org/")
2776 (synopsis "Python template engine")
2777 (description
2778 "Jinja2 is a small but fast and easy to use stand-alone template engine
2779written in pure Python.")
3f641af0 2780 (license license:bsd-3)))
fe34f0d1
DT
2781
2782(define-public python2-jinja2
2783 (package-with-python2 python-jinja2))
3580ab8b 2784
f7d17ac7
EE
2785(define-public python-pystache
2786 (package
2787 (name "python-pystache")
2788 (version "0.5.4")
2789 (source (origin
2790 (method url-fetch)
2791 (uri (pypi-uri "pystache" version))
2792 (sha256
2793 (base32
2794 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2795 (build-system python-build-system)
f7d17ac7
EE
2796 (home-page "http://defunkt.io/pystache/")
2797 (synopsis "Python logic-less template engine")
2798 (description
2799 "Pystache is a Python implementation of the framework agnostic,
2800logic-free templating system Mustache.")
2801 (license license:expat)))
2802
2803(define-public python2-pystache
2804 (package-with-python2 python-pystache))
2805
1285119b
RW
2806(define-public python-joblib
2807 (package
2808 (name "python-joblib")
f34ef331 2809 (version "0.10.3")
1285119b
RW
2810 (source (origin
2811 (method url-fetch)
f34ef331 2812 (uri (pypi-uri "joblib" version))
1285119b
RW
2813 (sha256
2814 (base32
6aa5f1ca
HG
2815 "0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
2816 (modules '((guix build utils)))
2817 (snippet
2818 '(begin
2819 ;; Remove pre-compiled .pyc files from source.
2820 (for-each delete-file-recursively
2821 (find-files "." "__pycache__" #:directories? #t))
2822 (for-each delete-file (find-files "." "\\.pyc$"))
2823 #t))))
1285119b 2824 (build-system python-build-system)
a8dd960a
RW
2825 (arguments
2826 `(#:phases
2827 (modify-phases %standard-phases
2828 (add-before 'check 'disable-failing-tests
2829 (lambda _
2830 ;; This numpydoc tests fails for unknown reasons
2831 (delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
2832 ;; This numpydoc test depends on matplotlib, which is not a
2833 ;; required input.
2834 (delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
2835 ;; These tests fail to execute sys.executable
2836 (substitute* "joblib/test/test_parallel.py"
2837 (("import nose" line)
2838 (string-append "from nose.plugins.skip import SkipTest\n" line))
2839 (("def test_nested_parallel_warnings" line)
2840 (string-append "@SkipTest\n" line))
2841 (("def test_parallel_with_interactively_defined_functions" line)
2842 (string-append "@SkipTest\n" line)))
2843 #t)))))
f052ec9a 2844 ;; Provide nose to enable tests command
1285119b 2845 (native-inputs
f3b98f4f 2846 `(("python-nose" ,python-nose)
f34ef331
RW
2847 ("python-sphinx" ,python-sphinx)
2848 ("python-docutils" ,python-docutils)
2849 ("python-numpydoc" ,python-numpydoc)))
1285119b
RW
2850 (home-page "http://pythonhosted.org/joblib/")
2851 (synopsis "Using Python functions as pipeline jobs")
2852 (description
2853 "Joblib is a set of tools to provide lightweight pipelining in Python.
2854In particular, joblib offers: transparent disk-caching of the output values
2855and lazy re-evaluation (memoize pattern), easy simple parallel computing
2856logging and tracing of the execution.")
3f641af0 2857 (license license:bsd-3)))
1285119b
RW
2858
2859(define-public python2-joblib
2860 (package-with-python2 python-joblib))
2861
3580ab8b
DT
2862(define-public python-docutils
2863 (package
2864 (name "python-docutils")
00e0ca7c 2865 (version "0.13.1")
3580ab8b
DT
2866 (source
2867 (origin
2868 (method url-fetch)
00e0ca7c 2869 (uri (pypi-uri "docutils" version))
3580ab8b
DT
2870 (sha256
2871 (base32
00e0ca7c 2872 "1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
3580ab8b 2873 (build-system python-build-system)
3580ab8b
DT
2874 (arguments
2875 '(#:tests? #f)) ; no setup.py test command
2876 (home-page "http://docutils.sourceforge.net/")
2877 (synopsis "Python Documentation Utilities")
2878 (description
2879 "Docutils is a modular system for processing documentation into useful
2880formats, such as HTML, XML, and LaTeX. For input Docutils supports
2881reStructuredText.")
2882 ;; Most of the source code is public domain, but some source files are
2883 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 2884 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
2885
2886(define-public python2-docutils
2887 (package-with-python2 python-docutils))
fb35b7c0
DT
2888
2889(define-public python-pygments
2890 (package
2891 (name "python-pygments")
9f442285 2892 (version "2.0.2")
fb35b7c0
DT
2893 (source
2894 (origin
2895 (method url-fetch)
9f442285 2896 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
2897 (sha256
2898 (base32
9f442285 2899 "0lagrwifsgn0s8bzqahpr87p7gd38xja8f06akscinp6hj89283k"))))
fb35b7c0 2900 (build-system python-build-system)
fb35b7c0
DT
2901 (home-page "http://pygments.org/")
2902 (synopsis "Syntax highlighting")
2903 (description
2904 "Pygments is a syntax highlighting package written in Python.")
3f641af0 2905 (license license:bsd-2)))
fb35b7c0
DT
2906
2907(define-public python2-pygments
2908 (package-with-python2 python-pygments))
9dd6078d
DT
2909
2910(define-public python-sphinx
2911 (package
2912 (name "python-sphinx")
2913 (version "1.2.3")
2914 (source
2915 (origin
2916 (method url-fetch)
2917 (uri (string-append
2918 "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-"
2919 version ".tar.gz"))
2920 (sha256
2921 (base32
2922 "011xizm3jnmf4cvs5i6kgf6c5nn046h79i8j0vd0f27yw9j3p4wl"))))
2923 (build-system python-build-system)
f22efa01 2924 (propagated-inputs
f3b98f4f 2925 `(("python-jinja2" ,python-jinja2)
9dd6078d
DT
2926 ("python-docutils" ,python-docutils)
2927 ("python-pygments" ,python-pygments)))
2928 (home-page "http://sphinx-doc.org/")
2929 (synopsis "Python documentation generator")
2930 (description "Sphinx is a tool that makes it easy to create documentation
2931for Python projects or other documents consisting of multiple reStructuredText
2932sources.")
3f641af0 2933 (license license:bsd-3)))
9dd6078d
DT
2934
2935(define-public python2-sphinx
2936 (package-with-python2 python-sphinx))
6888830b 2937
ad320b20
RW
2938(define-public python-sphinx-rtd-theme
2939 (package
2940 (name "python-sphinx-rtd-theme")
2941 (version "0.1.6")
2942 (source
2943 (origin
2944 (method url-fetch)
2945 (uri (string-append "https://pypi.python.org/packages/source/s/"
2946 "sphinx_rtd_theme/sphinx_rtd_theme-"
2947 version ".tar.gz"))
2948 (sha256
2949 (base32
2950 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
2951 (build-system python-build-system)
ad320b20
RW
2952 (home-page "https://github.com/snide/sphinx_rtd_theme/")
2953 (synopsis "ReadTheDocs.org theme for Sphinx")
2954 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 2955 (license license:expat)))
ad320b20
RW
2956
2957(define-public python2-sphinx-rtd-theme
2958 (package-with-python2 python-sphinx-rtd-theme))
2959
fe94cf0c
HG
2960(define-public python-rst.linker
2961 (package
2962 (name "python-rst.linker")
2963 (version "1.7")
2964 (source
2965 (origin
2966 (method url-fetch)
2967 (uri (pypi-uri "rst.linker" version))
2968 (sha256
2969 (base32
2970 "0bh4lnj2p1nh0wf5pgxgfbrp27xhb1rinahkb5j7s3qprq6qn0sr"))))
2971 (build-system python-build-system)
2972 (propagated-inputs
2973 `(("python-dateutil" ,python-dateutil-2)
2974 ("python-six" ,python-six)))
2975 (native-inputs
2976 `(("python-setuptools-scm" ,python-setuptools-scm)))
2977 ;; Test would require path.py, which would introduce a cyclic dependence.
2978 (arguments `(#:tests? #f))
2979 ;; Note: As of version 1.7 the documentation is not worth building.
2980 (home-page "https://github.com/jaraco/rst.linker")
2981 (synopsis "Sphinx plugin to add links and timestamps")
2982 (description "rst.linker allows to automatically replace text by a
2983reStructuredText external reference or timestamps. It's primary purpose is to
2984augment the changelog, but it can be used for other documents, too.")
2985 (license license:expat)))
2986
2987(define-public python2-rst.linker
2988 (package-with-python2 python-rst.linker))
2989
f4de5b3b
CAW
2990(define-public python-feedgenerator
2991 (package
2992 (name "python-feedgenerator")
f0412aa2 2993 (version "1.8")
f4de5b3b 2994 (source
f4de5b3b 2995 (origin
f0412aa2
EF
2996 (method url-fetch)
2997 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
2998 (sha256
2999 (base32
7c88bcf4
HG
3000 "0mkimp1fpdan4p3882vzcws4l594k71ich4g0wq97jbra7p602n0"))
3001 (modules '((guix build utils)))
3002 (snippet
3003 '(begin
3004 ;; Remove pre-compiled .pyc files from source.
3005 (for-each delete-file-recursively
3006 (find-files "." "__pycache__" #:directories? #t))
3007 (for-each delete-file (find-files "." "\\.pyc$"))
3008 #t))))
f4de5b3b 3009 (build-system python-build-system)
dae73d9b 3010 (propagated-inputs
f3b98f4f 3011 `(("python-pytz" ,python-pytz)
f4de5b3b 3012 ("python-six" ,python-six)))
f0412aa2 3013 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
3014 (synopsis
3015 "Standalone version of Django's Atom/RSS feed generator")
3016 (description
3017 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
3018which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 3019 (license license:bsd-3)))
f4de5b3b
CAW
3020
3021(define-public python2-feedgenerator
3022 (package-with-python2 python-feedgenerator))
3023
59ad30e3
CAW
3024(define-public python-blinker
3025 (package
3026 (name "python-blinker")
7fb9ff4d 3027 (version "1.4")
59ad30e3
CAW
3028 (source
3029 (origin
3030 (method url-fetch)
7fb9ff4d 3031 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
3032 (sha256
3033 (base32
7fb9ff4d 3034 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3 3035 (build-system python-build-system)
59ad30e3
CAW
3036 (home-page "http://pythonhosted.org/blinker/")
3037 (synopsis "Fast, simple object-to-object and broadcast signaling")
3038 (description
3039 "Blinker provides a fast dispatching system that allows any number of
3040interested parties to subscribe to events, or \"signals\".")
3041 (license license:expat)))
3042
3043(define-public python2-blinker
3044 (package-with-python2 python-blinker))
3045
b8050e71
CAW
3046(define-public pelican
3047 (package
3048 (name "pelican")
11f97c27 3049 (version "3.6.3")
b8050e71
CAW
3050 (source
3051 (origin
3052 (method url-fetch)
11f97c27 3053 (uri (pypi-uri "pelican" version))
b8050e71
CAW
3054 (sha256
3055 (base32
11f97c27 3056 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 3057 (build-system python-build-system)
f22efa01 3058 (propagated-inputs
b8050e71
CAW
3059 `(("python-feedgenerator" ,python-feedgenerator)
3060 ("python-jinja2" ,python-jinja2)
3061 ("python-pygments" ,python-pygments)
3062 ("python-docutils" ,python-docutils)
3063 ("python-pytz" ,python-pytz)
3064 ("python-blinker" ,python-blinker)
3065 ("python-unidecode" ,python-unidecode)
3066 ("python-six" ,python-six)
3067 ("python-dateutil-2" ,python-dateutil-2)))
3068 (home-page "http://getpelican.com/")
3069 (arguments
3070 `(;; XXX Requires a lot more packages to do unit tests :P
3071 #:tests? #f
3072 #:phases (modify-phases %standard-phases
3073 (add-before
3074 'install 'adjust-requires
3075 ;; Since feedgenerator is installed from git, it doesn't
3076 ;; conform to the version requirements.
3077 ;;
3078 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3079 ;; version requirement so setuptools doesn't get confused.
3080 (lambda _
3081 (substitute* "setup.py"
3082 (("['\"]feedgenerator.*?['\"]")
3083 "'feedgenerator'")))))))
3084 (synopsis "Python-based static site publishing system")
3085 (description
3086 "Pelican is a tool to generate a static blog from reStructuredText,
3087Markdown input files, and more. Pelican uses Jinja2 for templating
3088and is very extensible.")
3f641af0 3089 (license license:agpl3+)))
b8050e71 3090
240ca4aa
RW
3091(define-public python-scikit-learn
3092 (package
3093 (name "python-scikit-learn")
8e401ab6 3094 (version "0.18.1")
240ca4aa
RW
3095 (source
3096 (origin
3097 (method url-fetch)
3098 (uri (string-append
3099 "https://github.com/scikit-learn/scikit-learn/archive/"
3100 version ".tar.gz"))
7e21b9fb 3101 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
3102 (sha256
3103 (base32
8e401ab6 3104 "1hwswckdmd27f7k1jvwdc0m4mqrgxl2s245yq1scq34v124bjqgq"))))
240ca4aa
RW
3105 (build-system python-build-system)
3106 (arguments
3107 `(#:phases
3108 (alist-cons-before
2f6b3d2e
RW
3109 'check 'set-HOME
3110 ;; some tests require access to "$HOME"
3111 (lambda _ (setenv "HOME" "/tmp"))
8e401ab6 3112 %standard-phases)))
240ca4aa 3113 (inputs
328bb95d
HG
3114 `(("openblas" ,openblas)))
3115 (native-inputs
8e401ab6
RW
3116 `(("python-nose" ,python-nose)
3117 ("python-cython" ,python-cython)))
240ca4aa
RW
3118 (propagated-inputs
3119 `(("python-numpy" ,python-numpy)
3120 ("python-scipy" ,python-scipy)))
3121 (home-page "http://scikit-learn.org/")
3122 (synopsis "Machine Learning in Python")
3123 (description
3124 "Scikit-learn provides simple and efficient tools for data
3125mining and data analysis.")
1b5241c5 3126 (license license:bsd-3)))
240ca4aa
RW
3127
3128(define-public python2-scikit-learn
1b5241c5 3129 (package-with-python2 python-scikit-learn))
240ca4aa 3130
12f8f9bb
RW
3131(define-public python-scikit-image
3132 (package
3133 (name "python-scikit-image")
3134 (version "0.11.3")
3135 (source
3136 (origin
3137 (method url-fetch)
3138 (uri (string-append
3139 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3140 version ".tar.gz"))
3141 (sha256
3142 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3143 (build-system python-build-system)
b83e2333 3144 ;; See DEPENDS.txt for the list of build and run time requiremnts
12f8f9bb
RW
3145 (propagated-inputs
3146 `(("python-matplotlib" ,python-matplotlib)
3147 ("python-networkx" ,python-networkx)
12f8f9bb 3148 ("python-scipy" ,python-scipy)
12f8f9bb
RW
3149 ("python-pillow" ,python-pillow)))
3150 (native-inputs
b83e2333
HG
3151 `(("python-numpy" ,python-numpy)
3152 ("python-cython" ,python-cython)
3153 ("python-six" ,python-six)))
12f8f9bb
RW
3154 (home-page "http://scikit-image.org/")
3155 (synopsis "Image processing in Python")
3156 (description
e881752c 3157 "Scikit-image is a collection of algorithms for image processing.")
12733594 3158 (license license:bsd-3)))
12f8f9bb
RW
3159
3160(define-public python2-scikit-image
12733594 3161 (package-with-python2 python-scikit-image))
12f8f9bb 3162
5394a6a6
RW
3163(define-public python-redis
3164 (package
3165 (name "python-redis")
3166 (version "2.10.3")
3167 (source
3168 (origin
3169 (method url-fetch)
3170 (uri (string-append
3171 "https://pypi.python.org/packages/source/r/redis/redis-"
3172 version ".tar.gz"))
3173 (sha256
3174 (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4"))))
3175 (build-system python-build-system)
3176 ;; Tests require a running Redis server
3177 (arguments '(#:tests? #f))
cf8124b0
HG
3178 ;; As long as we are not running test, we do not need this input :-)
3179 ;;(native-inputs
3180 ;; `(("python-pytest" ,python-pytest)))
5394a6a6
RW
3181 (home-page "https://github.com/andymccurdy/redis-py")
3182 (synopsis "Redis Python client")
3183 (description
3184 "This package provides a Python interface to the Redis key-value store.")
3185 (license license:expat)))
3186
3187(define-public python2-redis
3188 (package-with-python2 python-redis))
3189
748cef5b
RW
3190(define-public python-rq
3191 (package
3192 (name "python-rq")
3193 (version "0.5.2")
3194 (source
3195 (origin
3196 (method url-fetch)
3197 (uri (string-append
3198 "https://pypi.python.org/packages/source/r/rq/rq-"
3199 version ".tar.gz"))
3200 (sha256
3201 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
3202 (build-system python-build-system)
3203 (propagated-inputs
3204 `(("python-click" ,python-click)
3205 ("python-redis" ,python-redis)))
748cef5b
RW
3206 (home-page "http://python-rq.org/")
3207 (synopsis "Simple job queues for Python")
3208 (description
3209 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3210processing them in the background with workers. It is backed by Redis and it
3211is designed to have a low barrier to entry.")
3f641af0 3212 (license license:bsd-2)))
748cef5b
RW
3213
3214(define-public python2-rq
3215 (package-with-python2 python-rq))
3216
6888830b
FB
3217(define-public python-cython
3218 (package
3219 (name "python-cython")
dd22efef 3220 (version "0.24.1")
6888830b
FB
3221 (source
3222 (origin
3223 (method url-fetch)
56918e26 3224 (uri (pypi-uri "Cython" version))
6888830b
FB
3225 (sha256
3226 (base32
dd22efef 3227 "1fg7fmpvfcq9md4ncyqnnylyjy4z3ksdrshzis95g1sh03d8z044"))))
6888830b
FB
3228 (build-system python-build-system)
3229 ;; we need the full python package and not just the python-wrapper
3230 ;; because we need libpython3.3m.so
3231 (inputs
3232 `(("python" ,python)))
3233 (arguments
3234 `(#:phases
b92f651b
EF
3235 (modify-phases %standard-phases
3236 (add-before 'check 'set-HOME
3237 ;; some tests require access to "$HOME/.cython"
3238 (lambda _ (setenv "HOME" "/tmp")))
3239 (replace 'check
3240 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3241 (home-page "http://cython.org/")
3242 (synopsis "C extensions for Python")
3243 (description "Cython is an optimising static compiler for both the Python
3244programming language and the extended Cython programming language. It makes
3245writing C extensions for Python as easy as Python itself.")
3f641af0 3246 (license license:asl2.0)
48b311b1 3247 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3248
3249(define-public python2-cython
48b311b1
LC
3250 (package (inherit (package-with-python2
3251 (strip-python2-variant python-cython)))
6888830b
FB
3252 (name "python2-cython")
3253 (inputs
3254 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533 3255
ee5fb7ee
AV
3256;; The RPython toolchain currently does not support Python 3.
3257(define-public python2-rpython
3258 (package
3259 (name "python2-rpython")
3260 (version "0.1.4")
3261 (source
3262 (origin
3263 (method url-fetch)
3264 (uri (pypi-uri "rpython" version))
3265 (sha256
3266 (base32
3267 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3268 (build-system python-build-system)
3269 (arguments `(#:python ,python-2))
3270 (native-inputs
f3b98f4f 3271 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
ee5fb7ee
AV
3272 (home-page "https://rpython.readthedocs.org")
3273 (synopsis "Framework for implementing interpreters and virtual machines")
3274 (description "RPython is a translation and support framework for
3275producing implementations of dynamic languages, emphasizing a clean separation
3276between language specification and implementation aspects.")
3277 (license license:expat)))
3278
0da98533
FB
3279;; This version of numpy is missing the documentation and is only used to
3280;; build matplotlib which is required to build numpy's documentation.
3281(define python-numpy-bootstrap
3282 (package
3283 (name "python-numpy-bootstrap")
ef9b4c04 3284 (version "1.10.4")
0da98533
FB
3285 (source
3286 (origin
3287 (method url-fetch)
de67e922 3288 (uri (string-append "mirror://sourceforge/numpy/NumPy/" version
0da98533
FB
3289 "/numpy-" version ".tar.gz"))
3290 (sha256
3291 (base32
ef9b4c04 3292 "1bjjhvncraka5s6i4lg644jrxij6bvycxy7an20gcz3a0m11iygp"))))
0da98533
FB
3293 (build-system python-build-system)
3294 (inputs
328bb95d 3295 `(("openblas" ,openblas)
cba256f8 3296 ("lapack" ,lapack)))
0da98533 3297 (native-inputs
2efabc55
HG
3298 `(("python-nose" ,python-nose)
3299 ("gfortran" ,gfortran)))
0da98533
FB
3300 (arguments
3301 `(#:phases
2efabc55
HG
3302 (modify-phases %standard-phases
3303 (add-before 'build 'set-environment-variables
3304 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3305 (call-with-output-file "site.cfg"
3306 (lambda (port)
cba256f8
RW
3307 (format port
3308 "[openblas]
dbdfe515
RW
3309libraries = openblas
3310library_dirs = ~a/lib
3311include_dirs = ~a/include
cba256f8 3312
2efabc55
HG
3313# backslash-n to make emacs happy
3314\n[lapack]
cba256f8
RW
3315lapack_libs = lapack
3316library_dirs = ~a/lib
3317include_dirs = ~a/include
3318"
3319 (assoc-ref inputs "openblas")
3320 (assoc-ref inputs "openblas")
3321 (assoc-ref inputs "lapack")
3322 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3323 ;; Use "gcc" executable, not "cc".
3324 (substitute* "numpy/distutils/system_info.py"
3325 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3326 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
2efabc55 3327 #t))
6a843168
FB
3328 ;; Tests can only be run after the library has been installed and not
3329 ;; within the source directory.
2efabc55
HG
3330 (delete 'check)
3331 (add-after 'install 'check
3332 (lambda* (#:key outputs inputs #:allow-other-keys)
3333 ;; Make installed package available for running the tests
3334 (add-installed-pythonpath inputs outputs)
6a843168 3335 (with-directory-excursion "/tmp"
89b5c60e 3336 (zero? (system* "python" "-c"
2efabc55 3337 "import numpy; numpy.test(verbose=2)"))))))))
0da98533
FB
3338 (home-page "http://www.numpy.org/")
3339 (synopsis "Fundamental package for scientific computing with Python")
3340 (description "NumPy is the fundamental package for scientific computing
e881752c 3341with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3342object, sophisticated (broadcasting) functions, tools for integrating C/C++
3343and Fortran code, useful linear algebra, Fourier transform, and random number
3344capabilities.")
3f641af0 3345 (license license:bsd-3)))
0da98533
FB
3346
3347(define python2-numpy-bootstrap
3348 (package-with-python2 python-numpy-bootstrap))
15bfe6d6 3349
460fccd4 3350(define-public python-munch
3351 (package
3352 (name "python-munch")
3353 (version "2.0.4")
3354 (source
3355 (origin
3356 (method url-fetch)
3357 (uri (pypi-uri "munch" version))
3358 (sha256
3359 (base32
3360 "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
3361 (build-system python-build-system)
3362 (home-page "https://github.com/Infinidat/munch")
3363 (synopsis "Dot-accessible dictionary")
3364 (description "Munch is a dot-accessible dictionary similar to JavaScript
3365objects.")
3366 (license license:expat)))
3367
3368(define-public python2-munch
3369 (package-with-python2 python-munch))
3370
3a1bfe18
RW
3371(define-public python2-fastlmm
3372 (package
3373 (name "python2-fastlmm")
b074e7d4 3374 (version "0.2.21")
3a1bfe18
RW
3375 (source
3376 (origin
3377 (method url-fetch)
b074e7d4 3378 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3379 (sha256
3380 (base32
b074e7d4 3381 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3382 (build-system python-build-system)
3383 (arguments
3384 `(#:python ,python-2)) ; only Python 2.7 is supported
3385 (propagated-inputs
3386 `(("python2-numpy" ,python2-numpy)
3387 ("python2-scipy" ,python2-scipy)
3388 ("python2-matplotlib" ,python2-matplotlib)
3389 ("python2-pandas" ,python2-pandas)
3390 ("python2-scikit-learn" ,python2-scikit-learn)
3a1bfe18
RW
3391 ("python2-pysnptools" ,python2-pysnptools)))
3392 (native-inputs
3393 `(("unzip" ,unzip)
2efabc55 3394 ("python2-cython" ,python2-cython)
f3b98f4f 3395 ("python2-mock" ,python2-mock)))
3a1bfe18
RW
3396 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3397 (synopsis "Perform genome-wide association studies on large data sets")
3398 (description
3399 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3400Models, is a program for performing both single-SNP and SNP-set genome-wide
3401association studies (GWAS) on extremely large data sets.")
3f641af0 3402 (license license:asl2.0)))
3a1bfe18 3403
2ee8869a
FB
3404(define-public python-numpy
3405 (package (inherit python-numpy-bootstrap)
3406 (name "python-numpy")
3407 (outputs '("out" "doc"))
89b5c60e 3408 (inputs
b0aa6ede
HG
3409 `(("which" ,which)
3410 ,@(package-inputs python-numpy-bootstrap)))
2efabc55
HG
3411 (propagated-inputs
3412 `(("python-matplotlib" ,python-matplotlib)
2ee8869a 3413 ("python-pyparsing" ,python-pyparsing)
b0aa6ede 3414 ,@(package-propagated-inputs python-numpy-bootstrap)))
2ee8869a
FB
3415 (native-inputs
3416 `(("pkg-config" ,pkg-config)
2efabc55
HG
3417 ("python-sphinx" ,python-sphinx)
3418 ("python-numpydoc" ,python-numpydoc)
2ee8869a
FB
3419 ("texlive" ,texlive)
3420 ("texinfo" ,texinfo)
3421 ("perl" ,perl)
3422 ,@(package-native-inputs python-numpy-bootstrap)))
3423 (arguments
89b5c60e 3424 `(,@(substitute-keyword-arguments
2ee8869a
FB
3425 (package-arguments python-numpy-bootstrap)
3426 ((#:phases phases)
3427 `(alist-cons-after
3428 'install 'install-doc
2efabc55
HG
3429 (lambda* (#:key inputs outputs #:allow-other-keys)
3430 ;; Make installed package available for building the
3431 ;; documentation
3432 (add-installed-pythonpath inputs outputs)
2ee8869a 3433 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
89b5c60e
AE
3434 (doc (string-append
3435 data "/doc/" ,name "-"
2ee8869a
FB
3436 ,(package-version python-numpy-bootstrap)))
3437 (info (string-append data "/info"))
3438 (html (string-append doc "/html"))
3439 (pyver ,(string-append "PYVER=")))
3440 (with-directory-excursion "doc"
3441 (mkdir-p html)
3442 (system* "make" "html" pyver)
3443 (system* "make" "latex" "PAPER=a4" pyver)
89b5c60e 3444 (system* "make" "-C" "build/latex"
2ee8869a
FB
3445 "all-pdf" "PAPER=a4" pyver)
3446 ;; FIXME: Generation of the info file fails.
3447 ;; (system* "make" "info" pyver)
3448 ;; (mkdir-p info)
3449 ;; (copy-file "build/texinfo/numpy.info"
3450 ;; (string-append info "/numpy.info"))
3451 (for-each (lambda (file)
3452 (copy-file (string-append "build/latex" file)
3453 (string-append doc file)))
3454 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3455 (with-directory-excursion "build/html"
3456 (for-each (lambda (file)
3457 (let* ((dir (dirname file))
3458 (tgt-dir (string-append html "/" dir)))
3459 (unless (equal? "." dir)
3460 (mkdir-p tgt-dir))
96c46210 3461 (install-file file html)))
2ee8869a
FB
3462 (find-files "." ".*"))))))
3463 ,phases)))))))
3464
764c077b 3465(define-public python2-numpy
57b7b8cd 3466 (package-with-python2 python-numpy))
2ee8869a 3467
0151a8df 3468(define-public python-pygit2
3469 (package
3470 (name "python-pygit2")
3471 (version "0.24.2")
3472 (source
3473 (origin
3474 (method url-fetch)
3475 (uri (pypi-uri "pygit2" version))
3476 (sha256
3477 (base32
3478 "0shnafv9zc483wmcr4fzgvirg1qzz42xpdqd4a3ad39sdj1qbbia"))))
3479 (build-system python-build-system)
3480 (propagated-inputs
3481 `(("python-six" ,python-six)
3482 ("python-cffi" ,python-cffi)
3483 ("libgit2" ,libgit2)
3484 ("python-tox" ,python-tox)))
3485 (home-page "https://github.com/libgit2/pygit2")
3486 (synopsis "Python bindings for libgit2")
3487 (description "Pygit2 is a set of Python bindings to the libgit2 shared
3488library, libgit2 implements Git plumbing.")
3489 ;; GPL2.0 only, with linking exception.
3490 (license license:gpl2)))
3491
3492(define-public python2-pygit2
3493 (package-with-python2 python-pygit2))
3494
15bfe6d6
FB
3495(define-public python-pyparsing
3496 (package
3497 (name "python-pyparsing")
e0669289 3498 (version "2.0.3")
15bfe6d6
FB
3499 (source
3500 (origin
3501 (method url-fetch)
de67e922
LF
3502 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
3503 "/pyparsing-" version
15bfe6d6
FB
3504 "/pyparsing-" version ".tar.gz"))
3505 (sha256
3506 (base32
e0669289 3507 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3508 (build-system python-build-system)
3509 (outputs '("out" "doc"))
3510 (arguments
3511 `(#:tests? #f ; no test target
3512 #:modules ((guix build python-build-system)
3513 (guix build utils))
3514 #:phases
3515 (alist-cons-after
3516 'install 'install-doc
3517 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3518 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3519 "/share/doc/" ,name "-" ,version))
3520 (html-doc (string-append doc "/html"))
3521 (examples (string-append doc "/examples")))
3522 (mkdir-p html-doc)
3523 (mkdir-p examples)
89b5c60e 3524 (for-each
15bfe6d6 3525 (lambda (dir tgt)
89b5c60e 3526 (map (lambda (file)
96c46210 3527 (install-file file tgt))
15bfe6d6
FB
3528 (find-files dir ".*")))
3529 (list "docs" "htmldoc" "examples")
3530 (list doc html-doc examples))))
3531 %standard-phases)))
3532 (home-page "http://pyparsing.wikispaces.com")
3533 (synopsis "Python parsing class library")
3534 (description
3535 "The pyparsing module is an alternative approach to creating and
3536executing simple grammars, vs. the traditional lex/yacc approach, or the use
3537of regular expressions. The pyparsing module provides a library of classes
3538that client code uses to construct the grammar directly in Python code.")
bd3fa666 3539 (license license:expat)))
15bfe6d6
FB
3540
3541(define-public python2-pyparsing
3542 (package-with-python2 python-pyparsing))
3543
ec00de35
FB
3544(define-public python-numpydoc
3545 (package
3546 (name "python-numpydoc")
3547 (version "0.5")
3548 (source
3549 (origin
3550 (method url-fetch)
89b5c60e 3551 (uri (string-append
ec00de35
FB
3552 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3553 version ".tar.gz"))
3554 (sha256
3555 (base32
5e4d8f67
AE
3556 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3557 (modules '((guix build utils)))
3558 (snippet
3559 '(begin
3560 ;; Drop a test requiring matplotlib, which we cannot add as an
3561 ;; input since it would create a circular dependency: Extend the
3562 ;; test for Python 3, where it is already dropped, to Python 2.
3563 (substitute* "numpydoc/tests/test_plot_directive.py"
3564 (("3") "2"))))))
ec00de35 3565 (build-system python-build-system)
fe4a8da4 3566 (propagated-inputs
213d1745
HG
3567 `(("python-sphinx" ,python-sphinx)))
3568 (native-inputs
3569 `(("python-nose" ,python-nose)))
ec00de35
FB
3570 (home-page "https://pypi.python.org/pypi/numpydoc")
3571 (synopsis
3572 "Numpy's Sphinx extensions")
3573 (description
3574 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 3575 (license license:bsd-2)))
ec00de35
FB
3576
3577(define-public python2-numpydoc
5e4d8f67 3578 (package-with-python2 python-numpydoc))
1c65314c 3579
1e656049
RW
3580(define-public python-numexpr
3581 (package
3582 (name "python-numexpr")
2ee57340 3583 (version "2.6.1")
1e656049
RW
3584 (source
3585 (origin
3586 (method url-fetch)
26112c0a 3587 (uri (pypi-uri "numexpr" version))
1e656049
RW
3588 (sha256
3589 (base32
2ee57340 3590 "01lsja72m32z0i5p8rwxbfyzk4mplh72k2a140nwh8vv4wpyfbnv"))))
1e656049
RW
3591 (build-system python-build-system)
3592 (arguments `(#:tests? #f)) ; no tests included
3593 (propagated-inputs
3594 `(("python-numpy" ,python-numpy)))
3595 (home-page "https://github.com/pydata/numexpr")
3596 (synopsis "Fast numerical expression evaluator for NumPy")
3597 (description
3598 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3599expressions that operate on arrays are accelerated and use less memory than
3600doing the same calculation in Python. In addition, its multi-threaded
3601capabilities can make use of all your cores, which may accelerate
3602computations, most specially if they are not memory-bounded (e.g. those using
3603transcendental functions).")
f210e944 3604 (license license:expat)))
1e656049
RW
3605
3606(define-public python2-numexpr
f210e944 3607 (package-with-python2 python-numexpr))
1e656049 3608
1c65314c
FB
3609(define-public python-matplotlib
3610 (package
3611 (name "python-matplotlib")
1bbc659f 3612 (version "1.4.3")
1c65314c
FB
3613 (source
3614 (origin
3615 (method url-fetch)
de67e922
LF
3616 (uri (string-append "mirror://sourceforge/matplotlib/matplotlib"
3617 "/matplotlib-" version
1c65314c
FB
3618 "/matplotlib-" version ".tar.gz"))
3619 (sha256
3620 (base32
1bbc659f 3621 "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
fc1adab1 3622 (patches (search-patches "matplotlib-setupext-tk.patch"))))
1c65314c
FB
3623 (build-system python-build-system)
3624 (outputs '("out" "doc"))
25f9a068
FB
3625 (propagated-inputs ; the following packages are all needed at run time
3626 `(("python-pyparsing" ,python-pyparsing)
3627 ("python-pygobject" ,python-pygobject)
3628 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3629 ("python-tkinter" ,python "tk")
ca33a3ad
HG
3630 ("python-dateutil" ,python-dateutil-2)
3631 ("python-numpy" ,python-numpy-bootstrap)
3632 ("python-pillow" ,python-pillow)
3633 ("python-pytz" ,python-pytz)
3634 ("python-six" ,python-six)
25f9a068
FB
3635 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3636 ;; from 'gtk+') provides the required 'typelib' files used by
3637 ;; 'gobject-introspection'. The location of these files is set with the
3638 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3639 ;; is done automatically by a 'native-search-path' procedure. However,
3640 ;; at run-time the user must set this variable as follows:
3641 ;;
3642 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3643 ("gtk+" ,gtk+)
3644 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3645 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3646 ;; object. For this reason we need to import both libraries.
3647 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3648 ("python-pycairo" ,python-pycairo)
3649 ("python-cairocffi" ,python-cairocffi)))
1c65314c 3650 (inputs
ca33a3ad 3651 `(("libpng" ,libpng)
1c65314c
FB
3652 ("imagemagick" ,imagemagick)
3653 ("freetype" ,freetype)
25f9a068
FB
3654 ("cairo" ,cairo)
3655 ("glib" ,glib)
1c65314c 3656 ;; FIXME: Add backends when available.
1c65314c
FB
3657 ;("python-wxpython" ,python-wxpython)
3658 ;("python-pyqt" ,python-pyqt)
1bbc659f
FB
3659 ("tcl" ,tcl)
3660 ("tk" ,tk)))
1c65314c
FB
3661 (native-inputs
3662 `(("pkg-config" ,pkg-config)
ca33a3ad
HG
3663 ("python-sphinx" ,python-sphinx)
3664 ("python-numpydoc" ,python-numpydoc)
3665 ("python-nose" ,python-nose)
3666 ("python-mock" ,python-mock)
1c65314c
FB
3667 ("texlive" ,texlive)
3668 ("texinfo" ,texinfo)))
3669 (arguments
3670 `(#:phases
25f9a068
FB
3671 (alist-cons-before
3672 'build 'configure-environment
3673 (lambda* (#:key outputs inputs #:allow-other-keys)
3674 (let ((cairo (assoc-ref inputs "cairo"))
3675 (gtk+ (assoc-ref inputs "gtk+")))
3676 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3677 ;; has not effect.
25f9a068
FB
3678 (setenv "LD_LIBRARY_PATH"
3679 (string-append cairo "/lib:" gtk+ "/lib"))
3680 (setenv "HOME" (getcwd))
3681 (call-with-output-file "setup.cfg"
3682 (lambda (port)
1bbc659f
FB
3683 (format port "[directories]~%
3684basedirlist = ~a,~a~%
57b7b8cd 3685 [rc_options]~%
1bbc659f
FB
3686backend = TkAgg~%"
3687 (assoc-ref inputs "tcl")
3688 (assoc-ref inputs "tk"))))))
25f9a068
FB
3689 (alist-cons-after
3690 'install 'install-doc
ca33a3ad 3691 (lambda* (#:key inputs outputs #:allow-other-keys)
25f9a068
FB
3692 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3693 (doc (string-append data "/doc/" ,name "-" ,version))
3694 (info (string-append data "/info"))
3695 (html (string-append doc "/html")))
ca33a3ad
HG
3696 ;; Make installed package available for building the
3697 ;; documentation
3698 (add-installed-pythonpath inputs outputs)
25f9a068 3699 (with-directory-excursion "doc"
25f9a068
FB
3700 ;; Produce pdf in 'A4' format.
3701 (substitute* (find-files "." "conf\\.py")
3702 (("latex_paper_size = 'letter'")
3703 "latex_paper_size = 'a4'"))
3704 (mkdir-p html)
3705 (mkdir-p info)
3706 ;; The doc recommends to run the 'html' target twice.
3707 (system* "python" "make.py" "html")
3708 (system* "python" "make.py" "html")
18b31516 3709 (copy-recursively "build/html" html)
25f9a068
FB
3710 (system* "python" "make.py" "latex")
3711 (system* "python" "make.py" "texinfo")
18b31516
FB
3712 (symlink (string-append html "/_images")
3713 (string-append info "/matplotlib-figures"))
3714 (with-directory-excursion "build/texinfo"
3715 (substitute* "matplotlib.texi"
3716 (("@image\\{([^,]*)" all file)
3717 (string-append "@image{matplotlib-figures/" file)))
3718 (symlink (string-append html "/_images")
3719 "./matplotlib-figures")
3720 (system* "makeinfo" "--no-split"
3721 "-o" "matplotlib.info" "matplotlib.texi"))
25f9a068
FB
3722 (copy-file "build/texinfo/matplotlib.info"
3723 (string-append info "/matplotlib.info"))
3724 (copy-file "build/latex/Matplotlib.pdf"
18b31516 3725 (string-append doc "/Matplotlib.pdf")))))
25f9a068 3726 %standard-phases))))
1c65314c
FB
3727 (home-page "http://matplotlib.org")
3728 (synopsis "2D plotting library for Python")
3729 (description
3730 "Matplotlib is a Python 2D plotting library which produces publication
3731quality figures in a variety of hardcopy formats and interactive environments
3732across platforms. Matplotlib can be used in Python scripts, the python and
3733ipython shell, web application servers, and six graphical user interface
3734toolkits.")
3f641af0 3735 (license license:psfl)
57b7b8cd 3736 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 3737
764c077b 3738(define-public python2-matplotlib
57b7b8cd
LC
3739 (let ((matplotlib (package-with-python2
3740 (strip-python2-variant python-matplotlib))))
764c077b 3741 (package (inherit matplotlib)
88c26834
AE
3742 ;; Make sure to use special packages for Python 2 instead
3743 ;; of those automatically rewritten by package-with-python2.
89b5c60e 3744 (propagated-inputs
7ca0dbc3 3745 `(("python2-pycairo" ,python2-pycairo)
764c077b 3746 ("python2-pygobject-2" ,python2-pygobject-2)
1bbc659f
FB
3747 ("python2-tkinter" ,python-2 "tk")
3748 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3749 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 3750
0dde6232
RW
3751(define-public python2-pysnptools
3752 (package
3753 (name "python2-pysnptools")
a800018e 3754 (version "0.3.9")
0dde6232
RW
3755 (source
3756 (origin
3757 (method url-fetch)
3f2e9675 3758 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
3759 (sha256
3760 (base32
a800018e 3761 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
3762 (build-system python-build-system)
3763 (arguments
3764 `(#:python ,python-2)) ; only Python 2.7 is supported
3765 (propagated-inputs
3766 `(("python2-numpy" ,python2-numpy)
3767 ("python2-scipy" ,python2-scipy)
b72ac1b5
HG
3768 ("python2-pandas" ,python2-pandas)))
3769 (native-inputs
3770 `(("python2-cython" ,python2-cython)))
0dde6232 3771 (native-inputs
f3b98f4f 3772 `(("unzip" ,unzip)))
0dde6232
RW
3773 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
3774 (synopsis "Library for reading and manipulating genetic data")
3775 (description
3776 "PySnpTools is a library for reading and manipulating genetic data. It
3777can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
3778those files. It can also efficiently manipulate ranges of integers using set
3779operators such as union, intersection, and difference.")
3f641af0 3780 (license license:asl2.0)))
0dde6232 3781
c9b1b4f9
RW
3782(define-public python-rpy2
3783 (package
3784 (name "python-rpy2")
ec3bcbc7 3785 (version "2.7.6")
c9b1b4f9
RW
3786 (source
3787 (origin
3788 (method url-fetch)
ec3bcbc7 3789 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
3790 (sha256
3791 (base32
ec3bcbc7 3792 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9 3793 (build-system python-build-system)
482d9591
HG
3794 (propagated-inputs
3795 `(("python-six" ,python-six)))
c9b1b4f9 3796 (inputs
482d9591 3797 `(("readline" ,readline)
c9b1b4f9
RW
3798 ("icu4c" ,icu4c)
3799 ("pcre" ,pcre)
3800 ("r" ,r)))
3801 (native-inputs
f3b98f4f 3802 `(("zlib" ,zlib)))
c9b1b4f9
RW
3803 (home-page "http://rpy.sourceforge.net/")
3804 (synopsis "Python interface to the R language")
3805 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
3806low-level interface to R from Python, a proposed high-level interface,
3807including wrappers to graphical libraries, as well as R-like structures and
3808functions.")
3f641af0 3809 (license license:gpl3+)))
c9b1b4f9
RW
3810
3811(define-public python2-rpy2
3812 (let ((rpy2 (package-with-python2 python-rpy2)))
3813 (package (inherit rpy2)
3814 (native-inputs
3815 `(("python2-singledispatch" ,python2-singledispatch)
3816 ,@(package-native-inputs rpy2))))))
3817
bb986599
FB
3818(define-public python-scipy
3819 (package
3820 (name "python-scipy")
ba8a0824 3821 (version "0.16.0")
bb986599
FB
3822 (source
3823 (origin
3824 (method url-fetch)
de67e922
LF
3825; http://downloads.sourceforge.net/project/scipy/scipy/0.16.1/scipy-0.16.1.tar.gz
3826 (uri (string-append "mirror://sourceforge/scipy/scipy/" version
da6ce3f1 3827 "/scipy-" version ".tar.xz"))
bb986599
FB
3828 (sha256
3829 (base32
ba8a0824 3830 "0wa0a4skpda3gx7lb12yn19nhbairlyxrvda2lz2bcawk3x5qzz2"))))
bb986599 3831 (build-system python-build-system)
dd86c0d1 3832 (propagated-inputs
bb986599
FB
3833 `(("python-numpy" ,python-numpy)
3834 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
3835 ("python-pyparsing" ,python-pyparsing)))
3836 (inputs
3837 `(("lapack" ,lapack)
719b01c1 3838 ("openblas" ,openblas)))
bb986599 3839 (native-inputs
dd86c0d1
RW
3840 `(("python-nose" ,python-nose)
3841 ("python-sphinx" ,python-sphinx)
5248d49e 3842 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 3843 ("gfortran" ,gfortran)
bb986599
FB
3844 ("texlive" ,texlive)
3845 ("perl" ,perl)))
3846 (outputs '("out" "doc"))
3847 (arguments
3848 `(#:phases
3849 (alist-cons-before
719b01c1 3850 'build 'configure-openblas
bb986599 3851 (lambda* (#:key inputs #:allow-other-keys)
719b01c1
RW
3852 (call-with-output-file "site.cfg"
3853 (lambda (port)
3854 (format port
3855 "[blas]
3856libraries = openblas
3857library_dirs = ~a/lib
3858include_dirs = ~a/include
d548e6aa
HG
3859
3860# backslash-n to make emacs happy
3861\n[atlas]
719b01c1
RW
3862library_dirs = ~a/lib
3863atlas_libs = openblas
3864"
3865 (assoc-ref inputs "openblas")
3866 (assoc-ref inputs "openblas")
3867 (assoc-ref inputs "openblas"))))
3868 #t)
bb986599
FB
3869 (alist-cons-after
3870 'install 'install-doc
d548e6aa 3871 (lambda* (#:key inputs outputs #:allow-other-keys)
bb986599
FB
3872 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3873 (doc (string-append data "/doc/" ,name "-" ,version))
3874 (html (string-append doc "/html"))
3875 (pyver ,(string-append "PYVER=")))
d548e6aa
HG
3876 ;; Make installed package available for building the
3877 ;; documentation
3878 (add-installed-pythonpath inputs outputs)
bb986599 3879 (with-directory-excursion "doc"
bb986599
FB
3880 ;; Fix generation of images for mathematical expressions.
3881 (substitute* (find-files "source" "conf\\.py")
3882 (("pngmath_use_preview = True")
3883 "pngmath_use_preview = False"))
3884 (mkdir-p html)
3885 (system* "make" "html" pyver)
3886 (system* "make" "latex" "PAPER=a4" pyver)
3887 (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
3888 (copy-file "build/latex/scipy-ref.pdf"
3889 (string-append doc "/scipy-ref.pdf"))
3890 (with-directory-excursion "build/html"
3891 (for-each (lambda (file)
3892 (let* ((dir (dirname file))
3893 (tgt-dir (string-append html "/" dir)))
96c46210 3894 (install-file file html)))
bb986599
FB
3895 (find-files "." ".*"))))))
3896 ;; Tests can only be run after the library has been installed and not
3897 ;; within the source directory.
3898 (alist-cons-after
3899 'install 'check
89b5c60e 3900 (lambda _
bb986599
FB
3901 (with-directory-excursion "/tmp"
3902 (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
89b5c60e
AE
3903 (alist-delete
3904 'check
4f9ff21e
RW
3905 (alist-cons-after
3906 'unpack 'fix-tests
3907 (lambda _
3908 (substitute* "scipy/integrate/tests/test_quadpack.py"
3909 (("libm.so") "libm.so.6"))
3910 #t)
3911 %standard-phases)))))))
bb986599
FB
3912 (home-page "http://www.scipy.org/")
3913 (synopsis "The Scipy library provides efficient numerical routines")
3914 (description "The SciPy library is one of the core packages that make up
3915the SciPy stack. It provides many user-friendly and efficient numerical
3916routines such as routines for numerical integration and optimization.")
3f641af0 3917 (license license:bsd-3)))
bb986599 3918
764c077b 3919(define-public python2-scipy
57b7b8cd 3920 (package-with-python2 python-scipy))
bb986599 3921
73acc193 3922(define-public python-socksipy-branch
3923 (package
3924 (name "python-socksipy-branch")
3925 (version "1.01")
3926 (source
3927 (origin
3928 (method url-fetch)
3929 (uri (pypi-uri "SocksiPy-branch" version))
3930 (sha256
3931 (base32
3932 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
3933 (build-system python-build-system)
3934 (arguments
3935 `(#:tests? #f)) ; There are no tests
3936 (home-page "https://code.google.com/archive/p/socksipy-branch/")
3937 (synopsis "Python SOCKS module")
3938 (description
3939 "SocksiPy - A Python SOCKS client module. It provides a
3940socket-like interface that supports connections to any TCP
3941service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
3942The original version was developed by Dan Haim, this is a
3943branch created by Mario Vilas to address some open issues,
3944as the original project seems to have been abandoned circa 2007.")
3945 (license license:bsd-3)))
3946
3947(define-public python2-socksipy-branch
3948 (package-with-python2 python-socksipy-branch))
3949
94914805
EB
3950(define-public python-sqlalchemy
3951 (package
3952 (name "python-sqlalchemy")
a4ba286b 3953 (version "1.0.12")
94914805
EB
3954 (source
3955 (origin
3956 (method url-fetch)
3957 (uri (string-append "https://pypi.python.org/packages/source/S/"
3958 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
3959 (sha256
3960 (base32
a4ba286b 3961 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
3962 (build-system python-build-system)
3963 (native-inputs
3964 `(("python-cython" ,python-cython) ;for c extensions
3965 ("python-pytest" ,python-pytest)
3966 ("python-mock" ,python-mock))) ;for tests
3967 (arguments
3968 `(#:phases (alist-replace
3969 'check
3970 (lambda _ (zero? (system* "py.test")))
3971 %standard-phases)))
3972 (home-page "http://www.sqlalchemy.org")
3973 (synopsis "Database abstraction library")
3974 (description
3975 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
3976gives application developers the full power and flexibility of SQL. It
3977provides a full suite of well known enterprise-level persistence patterns,
3978designed for efficient and high-performing database access, adapted into a
3979simple and Pythonic domain language.")
3f641af0 3980 (license license:x11)))
94914805
EB
3981
3982(define-public python2-sqlalchemy
3983 (package-with-python2 python-sqlalchemy))
c937562e 3984
4a093330
DM
3985(define-public python-pycodestyle
3986 (package
3987 (name "python-pycodestyle")
3988 (version "2.0.0")
3989 (source
3990 (origin
3991 (method url-fetch)
3992 (uri (pypi-uri "pycodestyle" version))
3993 (sha256
3994 (base32
3995 "1rz2v8506mdjdyxcnv9ygiw6v0d4dqx8z5sjyjm0w2v32h5l5w1p"))))
3996 (build-system python-build-system)
3997 (home-page "https://pycodestyle.readthedocs.io/")
3998 (synopsis "Python style guide checker")
3999 (description "@code{pycodestyle} (formerly pep8) is a tool to check
4000Python code against some of the style conventions in
4001@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
f210e944 4002 (license license:expat)))
4a093330
DM
4003
4004(define-public python2-pycodestyle
f210e944 4005 (package-with-python2 python-pycodestyle))
b91912c4
DM
4006
4007(define-public python-orderedmultidict
4008 (package
4009 (name "python-orderedmultidict")
4010 (version "0.7.10")
4011 (source
4012 (origin
4013 (method url-fetch)
4014 (uri (pypi-uri "orderedmultidict" version))
4015 (sha256
4016 (base32
4017 "1gvqk0jd432wsn88kq4svad68xz3r012jfpnhh9in7bqrkyxidky"))))
4018 (build-system python-build-system)
4019 (arguments
4020 `(#:phases
4021 (modify-phases %standard-phases
4022 (add-after 'unpack 'fix-tests
4023 (lambda _
4024 ;; The package uses nosetest for running the tests.
4025 ;; Adding this initfile allows to run the test suite
4026 ;; without requiring nosetest.
4027 (zero? (system* "touch" "tests/__init__.py")))))))
4028 (propagated-inputs
4029 `(("python-six" ,python-six)))
4030 (native-inputs
4031 `(("python-pycodestyle" ,python-pycodestyle)))
4032 (home-page "https://github.com/gruns/orderedmultidict")
4033 (synopsis "Python Ordered Multivalue Dictionary - omdict")
4034 (description "This package contains a library for ordered multivalue
4035dictionaries. A multivalue dictionary is a dictionary that can store
4036multiple values for the same key. An ordered multivalue dictionary is a
4037multivalue dictionary that retains the order of insertions and deletions.")
f210e944 4038 (license license:unlicense)))
b91912c4
DM
4039
4040(define-public python2-orderedmultidict
f210e944 4041 (package-with-python2 python-orderedmultidict))
9dede065
DM
4042
4043(define-public python-furl
4044 (package
4045 (name "python-furl")
4046 (version "0.5.6")
4047 (source
4048 (origin
4049 (method url-fetch)
4050 (uri (pypi-uri "furl" version))
4051 (sha256
4052 (base32
4053 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
4054 (build-system python-build-system)
4055 (propagated-inputs
4056 `(("python-six" ,python-six)
4057 ("python-orderedmultidict" ,python-orderedmultidict)))
4058 (native-inputs
4059 `(("python-pycodestyle" ,python-pycodestyle)))
4060 (home-page "https://github.com/gruns/furl")
4061 (synopsis "URL manipulation in Python")
4062 (description "Furl provides an easy-to-use alternative to the
4063@code{urllib} and @code{urlparse} modules for manipulating URLs.")
f210e944 4064 (license license:unlicense)))
9dede065
DM
4065
4066(define-public python2-furl
f210e944 4067 (package-with-python2 python-furl))
462bf271
DM
4068
4069(define-public python-flask-babel
4070 (package
4071 (name "python-flask-babel")
4072 (version "0.11.1")
4073 (source
4074 (origin
4075 (method url-fetch)
4076 (uri (pypi-uri "Flask-Babel" version))
4077 (sha256
4078 (base32
4079 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
4080 (build-system python-build-system)
4081 (propagated-inputs
4082 `(("python-flask" ,python-flask)
4083 ("python-babel" ,python-babel)
4084 ("python-jinja2" ,python-jinja2)
4085 ("python-pytz" ,python-pytz)))
4086 (home-page "https://github.com/python-babel/flask-babel")
4087 (synopsis "Add i18n/l10n support to Flask applications")
4088 (description "This package implements internationalization and localization
4089support for Flask. This is based on the Python babel module as well as pytz -
4090both of which are installed automatically if you install this library.")
f210e944 4091 (license license:bsd-3)))
462bf271
DM
4092
4093(define-public python2-flask-babel
f210e944 4094 (package-with-python2 python-flask-babel))
4a093330 4095
de2966cf
EF
4096(define-public python-sqlalchemy-utils
4097 (package
4098 (name "python-sqlalchemy-utils")
bb4b1706 4099 (version "0.32.11")
de2966cf
EF
4100 (source
4101 (origin
4102 (method url-fetch)
4103 (uri (pypi-uri "SQLAlchemy-Utils" version))
4104 (sha256
4105 (base32
bb4b1706 4106 "1wghyvk73cmq3iqyg3fczw128fv2pan2v76m0xg1bw05h8fhvnk3"))))
de2966cf 4107 (build-system python-build-system)
c22b4f87 4108 (propagated-inputs
de2966cf
EF
4109 `(("python-six" ,python-six)
4110 ("python-sqlalchemy" ,python-sqlalchemy)))
26d07efb
DM
4111 (native-inputs
4112 `(("python-pytest" ,python-pytest)))
de2966cf
EF
4113 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
4114 (synopsis "Various utility functions for SQLAlchemy")
4115 (description
4116 "SQLAlchemy-utils provides various utility functions and custom data types
6a686b18
DM
4117for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
4118
4119You might also want to install the following optional dependencies:
4120@enumerate
4121@item @code{python-passlib}
4122@item @code{python-babel}
4123@item @code{python-cryptography}
4124@item @code{python-pytz}
4125@item @code{python-psycopg2}
4126@item @code{python-furl}
4127@item @code{python-flask-babel}
4128@end enumerate
4129")
de2966cf
EF
4130 (license license:bsd-3)))
4131
4132(define-public python2-sqlalchemy-utils
f210e944 4133 (package-with-python2 python-sqlalchemy-utils))
de2966cf 4134
af5a4602
CAW
4135(define-public python-alembic
4136 (package
4137 (name "python-alembic")
bb484529 4138 (version "0.8.7")
af5a4602
CAW
4139 (source
4140 (origin
4141 (method url-fetch)
4142 (uri (pypi-uri "alembic" version))
4143 (sha256
4144 (base32
bb484529 4145 "0ias6fdzwr2s220fnjspkdgm9510bd0cnap0hx5y4zy4srba9f3z"))))
af5a4602
CAW
4146 (build-system python-build-system)
4147 (native-inputs
4148 `(("python-mock" ,python-mock)
4149 ("python-pytest-cov" ,python-pytest-cov)))
4150 (propagated-inputs
4151 `(("python-sqlalchemy" ,python-sqlalchemy)
4152 ("python-mako" ,python-mako)
4153 ("python-editor" ,python-editor)))
4154 (home-page "http://bitbucket.org/zzzeek/alembic")
4155 (synopsis
4156 "Database migration tool for SQLAlchemy")
4157 (description
4158 "Alembic is a lightweight database migration tool for usage with the
4159SQLAlchemy Database Toolkit for Python.")
f210e944 4160 (license license:expat)))
af5a4602
CAW
4161
4162(define-public python2-alembic
f210e944 4163 (package-with-python2 python-alembic))
af5a4602 4164
1671c07c
EB
4165(define-public python-distutils-extra
4166 (package
4167 (name "python-distutils-extra")
4168 (version "2.38")
4169 (source
4170 (origin
4171 (method url-fetch)
4172 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4173 version "/+download/python-distutils-extra-"
4174 version ".tar.gz"))
4175 (sha256
4176 (base32
4177 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4178 (build-system python-build-system)
1671c07c
EB
4179 (home-page "https://launchpad.net/python-distutils-extra/")
4180 (synopsis "Enhancements to Python's distutils")
4181 (description
4182 "The python-distutils-extra module enables you to easily integrate
4183gettext support, themed icons, and scrollkeeper-based documentation into
4184Python's distutils.")
3f641af0 4185 (license license:gpl2)))
1671c07c
EB
4186
4187(define-public python2-distutils-extra
4188 (package-with-python2 python-distutils-extra))
ea5456c8
EB
4189
4190(define-public python2-elib.intl
4191 (package
4192 (name "python2-elib.intl")
4193 (version "0.0.3")
4194 (source
4195 (origin
4196 ;; This project doesn't tag releases or publish tarballs, so we take
4197 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4198 (method git-fetch)
4199 (uri (git-reference
4200 (url "https://github.com/dieterv/elib.intl.git")
4201 (commit "d09997cfef")))
4202 (sha256
4203 (base32
4204 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4205 (build-system python-build-system)
ea5456c8
EB
4206 (arguments
4207 ;; incompatible with Python 3 (exception syntax)
4208 `(#:python ,python-2
b41a05ce 4209 #:tests? #f))
ea5456c8
EB
4210 (home-page "https://github.com/dieterv/elib.intl")
4211 (synopsis "Enhanced internationalization for Python")
4212 (description
4213 "The elib.intl module provides enhanced internationalization (I18N)
4214services for your Python modules and applications.")
3f641af0 4215 (license license:lgpl3+)))
ea5456c8 4216
c937562e
EB
4217(define-public python-pillow
4218 (package
4219 (name "python-pillow")
aba5182c 4220 (version "3.3.3")
c937562e
EB
4221 (source
4222 (origin
4223 (method url-fetch)
f1d9231d 4224 (uri (pypi-uri "Pillow" version))
c937562e
EB
4225 (sha256
4226 (base32
aba5182c 4227 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
c937562e
EB
4228 (build-system python-build-system)
4229 (native-inputs
f3b98f4f 4230 `(("python-nose" ,python-nose)))
c937562e 4231 (inputs
5ff408d9
SB
4232 `(("freetype" ,freetype)
4233 ("lcms" ,lcms)
c937562e
EB
4234 ("zlib" ,zlib)
4235 ("libjpeg" ,libjpeg)
4236 ("openjpeg" ,openjpeg)
5ff408d9
SB
4237 ("libtiff" ,libtiff)
4238 ("libwebp" ,libwebp)))
c937562e 4239 (arguments
e5358a6b 4240 `(#:phases (modify-phases %standard-phases
e5358a6b
LC
4241 (add-after
4242 'install 'check-installed
6151120a 4243 (lambda* (#:key outputs inputs #:allow-other-keys)
e5358a6b
LC
4244 (begin
4245 (setenv "HOME" (getcwd))
6151120a
HG
4246 ;; Make installed package available for running the
4247 ;; tests
4248 (add-installed-pythonpath inputs outputs)
e5358a6b
LC
4249 (and (zero? (system* "python" "selftest.py"
4250 "--installed"))
4251 (zero? (system* "python" "test-installed.py"))))))
4252 (delete 'check))))
c937562e
EB
4253 (home-page "https://pypi.python.org/pypi/Pillow")
4254 (synopsis "Fork of the Python Imaging Library")
4255 (description
4256 "The Python Imaging Library adds image processing capabilities to your
4257Python interpreter. This library provides extensive file format support, an
4258efficient internal representation, and fairly powerful image processing
4259capabilities. The core image library is designed for fast access to data
4260stored in a few basic pixel formats. It should provide a solid foundation for
4261a general image processing tool.")
3f641af0 4262 (license (license:x11-style
c937562e
EB
4263 "http://www.pythonware.com/products/pil/license.htm"
4264 "The PIL Software License"))))
4265
4266(define-public python2-pillow
4267 (package-with-python2 python-pillow))
bb986599 4268
a415f036
FB
4269(define-public python-pycparser
4270 (package
4271 (name "python-pycparser")
38eb6919 4272 (version "2.14")
a415f036
FB
4273 (source
4274 (origin
4275 (method url-fetch)
38eb6919 4276 (uri (pypi-uri "pycparser" version))
a415f036
FB
4277 (sha256
4278 (base32
38eb6919 4279 "0wvzyb6rxsfj3xcnpa4ynbh9qc7rrbk2277d5wqpphmx9akv8nbr"))))
a415f036
FB
4280 (outputs '("out" "doc"))
4281 (build-system python-build-system)
4282 (native-inputs
f3b98f4f 4283 `(("pkg-config" ,pkg-config)))
a415f036 4284 (arguments
89b5c60e 4285 `(#:phases
a415f036
FB
4286 (alist-replace
4287 'check
4288 (lambda _
4289 (with-directory-excursion "tests"
4290 (zero? (system* "python" "all_tests.py"))))
4291 (alist-cons-after
4292 'install 'install-doc
4293 (lambda* (#:key outputs #:allow-other-keys)
4294 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4295 (doc (string-append data "/doc/" ,name "-" ,version))
4296 (examples (string-append doc "/examples")))
4297 (mkdir-p examples)
4298 (for-each (lambda (file)
4299 (copy-file (string-append "." file)
4300 (string-append doc file)))
4301 '("/README.rst" "/CHANGES" "/LICENSE"))
4302 (copy-recursively "examples" examples)))
4303 %standard-phases))))
4304 (home-page "https://github.com/eliben/pycparser")
4305 (synopsis "C parser in Python")
4306 (description
4307 "Pycparser is a complete parser of the C language, written in pure Python
4308using the PLY parsing library. It parses C code into an AST and can serve as
4309a front-end for C compilers or analysis tools.")
3f641af0 4310 (license license:bsd-3)))
a415f036
FB
4311
4312(define-public python2-pycparser
4313 (package-with-python2 python-pycparser))
57c3f716
FB
4314
4315(define-public python-cffi
4316 (package
4317 (name "python-cffi")
2d3a437c 4318 (version "1.4.2")
57c3f716
FB
4319 (source
4320 (origin
4321 (method url-fetch)
2d3a437c 4322 (uri (pypi-uri "cffi" version))
89b5c60e 4323 (sha256
2d3a437c 4324 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
4325 (build-system python-build-system)
4326 (outputs '("out" "doc"))
4327 (inputs
4328 `(("libffi" ,libffi)))
4329 (propagated-inputs ; required at run-time
4330 `(("python-pycparser" ,python-pycparser)))
4331 (native-inputs
4332 `(("pkg-config" ,pkg-config)
4333 ("python-sphinx" ,python-sphinx)
f3b98f4f 4334 ("python-pytest" ,python-pytest)))
57c3f716 4335 (arguments
4179f952 4336 `(#:phases
57c3f716
FB
4337 (alist-cons-after
4338 'install 'install-doc
4339 (lambda* (#:key outputs #:allow-other-keys)
4340 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4341 (doc (string-append data "/doc/" ,name "-" ,version))
4342 (html (string-append doc "/html")))
4343 (with-directory-excursion "doc"
4344 (system* "make" "html")
4345 (mkdir-p html)
4346 (copy-recursively "build/html" html))
4347 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
4348 %standard-phases)))
4349 (home-page "http://cffi.readthedocs.org")
4350 (synopsis "Foreign function interface for Python")
4351 (description
4352 "Foreign Function Interface for Python calling C code.")
bd3fa666 4353 (license license:expat)))
57c3f716
FB
4354
4355(define-public python2-cffi
4356 (package-with-python2 python-cffi))
6fa14469
FB
4357
4358(define-public python-xcffib
4359 (package
4360 (name "python-xcffib")
4361 (version "0.1.9")
4362 (source
4363 (origin
4364 (method url-fetch)
4365 (uri (string-append "https://pypi.python.org/packages/source/x/"
4366 "xcffib/xcffib-" version ".tar.gz"))
4367 (sha256
4368 (base32
4369 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
4370 (build-system python-build-system)
4371 (inputs
482d9591 4372 `(("libxcb" ,libxcb)))
6fa14469 4373 (propagated-inputs
482d9591
HG
4374 `(("python-cffi" ,python-cffi) ; used at run time
4375 ("python-six" ,python-six)))
6fa14469 4376 (arguments
89b5c60e 4377 `(#:phases
6fa14469
FB
4378 (alist-cons-after
4379 'install 'install-doc
4380 (lambda* (#:key outputs #:allow-other-keys)
4381 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4382 "/doc/" ,name "-" ,version)))
4383 (mkdir-p doc)
4384 (copy-file "README.md"
4385 (string-append doc "/README.md"))))
4386 %standard-phases)))
4387 (home-page "https://github.com/tych0/xcffib")
4388 (synopsis "XCB Python bindings")
4389 (description
4390 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4391support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 4392 (license license:expat)))
6fa14469
FB
4393
4394(define-public python2-xcffib
4395 (package-with-python2 python-xcffib))
4396
9e099723
FB
4397(define-public python-cairocffi
4398 (package
4399 (name "python-cairocffi")
4400 (version "0.6")
4401 (source
4402 (origin
4403 (method url-fetch)
4404 ;; The archive on pypi is missing the 'utils' directory!
4405 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
4406 version ".tar.gz"))
f586c877 4407 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
4408 (sha256
4409 (base32
4410 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
4411 (build-system python-build-system)
4412 (outputs '("out" "doc"))
4413 (inputs
4414 `(("gdk-pixbuf" ,gdk-pixbuf)
4415 ("cairo" ,cairo)))
4416 (native-inputs
4417 `(("pkg-config" ,pkg-config)
4418 ("python-sphinx" ,python-sphinx)
f3b98f4f 4419 ("python-docutils" ,python-docutils)))
9e099723
FB
4420 (propagated-inputs
4421 `(("python-xcffib" ,python-xcffib))) ; used at run time
4422 (arguments
89b5c60e 4423 `(#:phases
9e099723
FB
4424 (alist-cons-after
4425 'install 'install-doc
4426 (lambda* (#:key inputs outputs #:allow-other-keys)
4427 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4428 (doc (string-append data "/doc/" ,name "-" ,version))
4429 (html (string-append doc "/html")))
89b5c60e 4430 (setenv "LD_LIBRARY_PATH"
9e099723
FB
4431 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4432 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4433 (setenv "LANG" "en_US.UTF-8")
4434 (mkdir-p html)
4435 (for-each (lambda (file)
4436 (copy-file (string-append "." file)
4437 (string-append doc file)))
4438 '("/README.rst" "/CHANGES" "/LICENSE"))
4439 (system* "python" "setup.py" "build_sphinx")
4440 (copy-recursively "docs/_build/html" html)))
4441 %standard-phases)))
4442 (home-page "https://github.com/SimonSapin/cairocffi")
4443 (synopsis "Python bindings and object-oriented API for Cairo")
4444 (description
4445 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4446Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4447graphics library with support for multiple backends including image buffers,
4448PNG, PostScript, PDF, and SVG file output.")
3f641af0 4449 (license license:bsd-3)))
9e099723
FB
4450
4451(define-public python2-cairocffi
4452 (package-with-python2 python-cairocffi))
4453
3cff95cb
RW
4454(define-public python-decorator
4455 (package
4456 (name "python-decorator")
eb6e2e81 4457 (version "4.0.9")
3cff95cb
RW
4458 (source
4459 (origin
4460 (method url-fetch)
e21338be 4461 (uri (pypi-uri "decorator" version))
3cff95cb 4462 (sha256
eb6e2e81 4463 (base32 "1a5vwhflfd9sh3rfb40xlyipldgdzfff6brman57hqv3661jw0lh"))))
3cff95cb
RW
4464 (build-system python-build-system)
4465 (arguments '(#:tests? #f)) ; no test target
eb6e2e81 4466 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
4467 (synopsis "Python module to simplify usage of decorators")
4468 (description
4469 "The aim of the decorator module is to simplify the usage of decorators
4470for the average programmer, and to popularize decorators usage giving examples
4471of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4472etc. The core of this module is a decorator factory.")
4473 (license license:expat)))
4474
4475(define-public python2-decorator
4476 (package-with-python2 python-decorator))
4477
2c0499ad
RW
4478(define-public python-drmaa
4479 (package
4480 (name "python-drmaa")
4481 (version "0.7.6")
4482 (source
4483 (origin
4484 (method url-fetch)
4485 (uri (string-append
4486 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4487 version ".tar.gz"))
4488 (sha256
4489 (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
4490 (build-system python-build-system)
4491 ;; The test suite requires libdrmaa which is provided by the cluster
4492 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4493 ;; should be set to the path of the libdrmaa library.
4494 (arguments '(#:tests? #f))
4495 (native-inputs
f3b98f4f 4496 `(("python-nose" ,python-nose)))
2c0499ad
RW
4497 (home-page "https://pypi.python.org/pypi/drmaa")
4498 (synopsis "Python bindings for the DRMAA library")
4499 (description
4500 "A Python package for Distributed Resource Management (DRM) job
4501submission and control. This package is an implementation of the DRMAA 1.0
4502Python language binding specification.")
3f641af0 4503 (license license:bsd-3)))
2c0499ad
RW
4504
4505(define-public python2-drmaa
4506 (package-with-python2 python-drmaa))
4507
d05c6da0
RW
4508(define-public python-gridmap
4509 (package
4510 (name "python-gridmap")
4511 (version "0.13.0")
4512 (source
4513 (origin
4514 (method url-fetch)
4515 (uri (string-append
4516 "https://github.com/pygridtools/gridmap/archive/v"
4517 version ".tar.gz"))
4518 (file-name (string-append name "-" version ".tar.gz"))
4519 (sha256
4520 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4521 (build-system python-build-system)
f22efa01 4522 (propagated-inputs
d05c6da0
RW
4523 `(("python-psutil" ,python-psutil)
4524 ("python-drmaa" ,python-drmaa)
4525 ("python-pyzmq" ,python-pyzmq)))
d05c6da0
RW
4526 (home-page "https://github.com/pygridtools/gridmap")
4527 (synopsis "Create jobs on a cluster directly from Python")
4528 (description
4529 "Gridmap is a Python package to allow you to easily create jobs on the
4530cluster directly from Python. You can directly map Python functions onto the
4531cluster without needing to write any wrapper code yourself.")
3f641af0 4532 (license license:gpl3+)))
d05c6da0
RW
4533
4534(define-public python2-gridmap
4535 (package-with-python2 python-gridmap))
4536
cb6d5c54
RW
4537(define-public python-pexpect
4538 (package
4539 (name "python-pexpect")
4540 (version "3.3")
4541 (source
4542 (origin
4543 (method url-fetch)
4544 (uri (string-append "https://pypi.python.org/packages/source/p/"
4545 "pexpect/pexpect-" version ".tar.gz"))
4546 (sha256
4547 (base32 "1fp5gm976z7ghm8jw57463rj19cv06c8zw842prgyg788f6n3snz"))))
4548 (build-system python-build-system)
4549 (arguments
4550 `(#:phases
4551 (modify-phases %standard-phases
4552 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4553 (native-inputs
4554 `(("python-nose" ,python-nose)))
4555 (home-page "http://pexpect.readthedocs.org/")
4556 (synopsis "Controlling interactive console applications")
4557 (description
4558 "Pexpect is a pure Python module for spawning child applications;
4559controlling them; and responding to expected patterns in their output.
4560Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4561child application and control it as if a human were typing commands.")
3f641af0 4562 (license license:isc)))
cb6d5c54
RW
4563
4564(define-public python2-pexpect
4565 (package-with-python2 python-pexpect))
4566
229ad120
RW
4567(define-public python-setuptools-scm
4568 (package
4569 (name "python-setuptools-scm")
42d6d0d0 4570 (version "1.11.1")
229ad120
RW
4571 (source (origin
4572 (method url-fetch)
383af6b0 4573 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4574 (sha256
4575 (base32
42d6d0d0 4576 "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc"))))
229ad120
RW
4577 (build-system python-build-system)
4578 (home-page "https://github.com/pypa/setuptools_scm/")
4579 (synopsis "Manage Python package versions in SCM metadata")
4580 (description
383af6b0 4581 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4582@dfn{software configuration management} (SCM) metadata instead of declaring
4583them as the version argument or in a SCM managed file.")
4584 (license license:expat)))
4585
4586(define-public python2-setuptools-scm
4587 (package-with-python2 python-setuptools-scm))
4588
b74270ee
RW
4589(define-public python-pathpy
4590 (package
4591 (name "python-pathpy")
4592 (version "8.1.1")
4593 (source
4594 (origin
4595 (method url-fetch)
4596 (uri (string-append "https://pypi.python.org/packages/source/p/"
4597 "path.py/path.py-" version ".tar.gz"))
4598 (sha256
4599 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
2887700e 4600 (outputs '("out" "doc"))
b74270ee
RW
4601 (build-system python-build-system)
4602 (propagated-inputs
4603 `(("python-appdirs" ,python-appdirs)))
4604 (native-inputs
f3b98f4f 4605 `(("python-setuptools-scm" ,python-setuptools-scm)
2887700e
HG
4606 ("python-sphinx" ,python-sphinx)
4607 ("python-rst.linker" ,python-rst.linker)
b74270ee
RW
4608 ("python-pytest" ,python-pytest)
4609 ("python-pytest-runner" ,python-pytest-runner)))
2887700e
HG
4610 (arguments
4611 `(#:phases
4612 (modify-phases %standard-phases
4613 (add-after 'build 'build-doc
4614 (lambda _
4615 (setenv "LANG" "en_US.UTF-8")
4616 (zero? (system* "python" "setup.py" "build_sphinx"))))
4617 (add-after 'install 'install-doc
4618 (lambda* (#:key outputs #:allow-other-keys)
4619 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4620 (doc (string-append data "/doc/" ,name "-" ,version))
4621 (html (string-append doc "/html")))
4622 (mkdir-p html)
4623 (for-each (lambda (file)
4624 (copy-file file (string-append doc "/" file)))
4625 '("README.rst" "CHANGES.rst"))
4626 (copy-recursively "build/sphinx/html" html)))))))
b74270ee
RW
4627 (home-page "http://github.com/jaraco/path.py")
4628 (synopsis "Python module wrapper for built-in os.path")
4629 (description
4630 "@code{path.py} implements path objects as first-class entities, allowing
4631common operations on files to be invoked on those path objects directly.")
4632 (license license:expat)))
4633
4634(define-public python2-pathpy
4635 (package-with-python2 python-pathpy))
4636
0d34e01b
RW
4637(define-public python-pickleshare
4638 (package
4639 (name "python-pickleshare")
4640 (version "0.5")
4641 (source
4642 (origin
4643 (method url-fetch)
4644 (uri (string-append "https://pypi.python.org/packages/source/p/"
4645 "pickleshare/pickleshare-" version ".tar.gz"))
4646 (sha256
4647 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
4648 (build-system python-build-system)
4649 (propagated-inputs
4650 `(("python-pathpy" ,python-pathpy)))
4651 (home-page "https://github.com/vivainio/pickleshare")
4652 (synopsis "Tiny key value database with concurrency support")
4653 (description
4654 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
4655Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
4656shelve, many processes can access the database simultaneously. Changing a
4657value in database is immediately visible to other processes accessing the same
4658database. Concurrency is possible because the values are stored in separate
4659files. Hence the “database” is a directory where all files are governed by
4660PickleShare.")
4661 (license license:expat)))
4662
4663(define-public python2-pickleshare
4664 (package-with-python2 python-pickleshare))
4665
cd6e5189
RW
4666(define-public python-simplegeneric
4667 (package
4668 (name "python-simplegeneric")
4669 (version "0.8.1")
4670 (source
4671 (origin
4672 (method url-fetch)
4673 (uri (string-append "https://pypi.python.org/packages/source/s/"
4674 "simplegeneric/simplegeneric-" version ".zip"))
4675 (sha256
4676 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
4677 (build-system python-build-system)
4678 (native-inputs
f3b98f4f 4679 `(("unzip" ,unzip)))
cd6e5189
RW
4680 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
4681 (synopsis "Python module for simple generic functions")
4682 (description
4683 "The simplegeneric module lets you define simple single-dispatch generic
4684functions, akin to Python’s built-in generic functions like @code{len()},
4685@code{iter()} and so on. However, instead of using specially-named methods,
4686these generic functions use simple lookup tables, akin to those used by
4687e.g. @code{pickle.dump()} and other generic functions found in the Python
4688standard library.")
3f641af0 4689 (license license:zpl2.1)))
cd6e5189
RW
4690
4691(define-public python2-simplegeneric
4692 (package-with-python2 python-simplegeneric))
4693
ddc7d8ed 4694(define-public python-ipython-genutils
c4abbac3 4695 ;; TODO: This package is retired, check if can be removed, see description.
ddc7d8ed
RW
4696 (package
4697 (name "python-ipython-genutils")
4698 (version "0.1.0")
4699 (source
4700 (origin
4701 (method url-fetch)
4702 (uri (string-append "https://pypi.python.org/packages/source/i/"
4703 "ipython_genutils/ipython_genutils-"
4704 version ".tar.gz"))
4705 (sha256
4706 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
4707 (build-system python-build-system)
4708 (arguments `(#:tests? #f)) ; no tests
4709 (home-page "http://ipython.org")
4710 (synopsis "Vestigial utilities from IPython")
4711 (description
c4abbac3
HG
4712 "This package provides retired utilities from IPython. No packages
4713outside IPython/Jupyter should depend on it.
4714
4715This package shouldn't exist. It contains some common utilities shared by
4716Jupyter and IPython projects during The Big Split. As soon as possible, those
4717packages will remove their dependency on this, and this package will go
4718away.")
3f641af0 4719 (license license:bsd-3)))
ddc7d8ed
RW
4720
4721(define-public python2-ipython-genutils
4722 (package-with-python2 python-ipython-genutils))
4723
2b10eb48
RW
4724(define-public python-traitlets
4725 (package
4726 (name "python-traitlets")
a5ba1481 4727 (version "4.2.0")
2b10eb48
RW
4728 (source
4729 (origin
4730 (method url-fetch)
cc0c4fde 4731 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
4732 (sha256
4733 (base32
a5ba1481 4734 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
2b10eb48
RW
4735 (build-system python-build-system)
4736 (arguments
4737 `(#:phases
4738 (modify-phases %standard-phases
4739 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4740 (propagated-inputs
4741 `(("python-ipython-genutils" ,python-ipython-genutils)
4742 ("python-decorator" ,python-decorator)))
4743 (native-inputs
cc0c4fde
EF
4744 `(("python-mock" ,python-mock)
4745 ("python-nose" ,python-nose)))
2b10eb48
RW
4746 (home-page "http://ipython.org")
4747 (synopsis "Configuration system for Python applications")
4748 (description
4749 "Traitlets is a framework that lets Python classes have attributes with
4750type checking, dynamically calculated default values, and ‘on change’
4751callbacks. The package also includes a mechanism to use traitlets for
4752configuration, loading values from files or from command line arguments. This
4753is a distinct layer on top of traitlets, so you can use traitlets in your code
4754without using the configuration machinery.")
3f641af0 4755 (license license:bsd-3)))
2b10eb48
RW
4756
4757(define-public python2-traitlets
4758 (package-with-python2 python-traitlets))
4759
4263b06f
RW
4760(define-public python-jupyter-core
4761 (package
4762 (name "python-jupyter-core")
4763 (version "4.2.0")
4764 (source
4765 (origin
4766 (method url-fetch)
4767 (uri (string-append (pypi-uri "jupyter_core" version)))
4768 (sha256
4769 (base32
4770 "177d9csqldzhsh6xs1p4nf6lzvhzyg6gklqjf69lxgxyadx87v24"))))
4771 (build-system python-build-system)
4772 ;; FIXME: not sure how to run the tests
4773 (arguments `(#:tests? #f))
4774 (propagated-inputs
4775 `(("python-traitlets" ,python-traitlets)))
4776 (home-page "http://jupyter.org/")
4777 (synopsis "Jupyter base package")
4778 (description
4779 "Jupyter core is the base package on which Jupyter projects rely.")
4780 (license license:bsd-3)))
4781
4782(define-public python2-jupyter-core
4783 (package-with-python2 python-jupyter-core))
4784
9ff01f2d
RW
4785(define-public python-jupyter-client
4786 (package
4787 (name "python-jupyter-client")
4788 (version "4.4.0")
4789 (source
4790 (origin
4791 (method url-fetch)
4792 (uri (pypi-uri "jupyter_client" version))
4793 (sha256
4794 (base32
4795 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
4796 (build-system python-build-system)
4797 ;; Tests fail because of missing native python kernel which I assume is
4798 ;; provided by the ipython package, which we cannot use because it would
4799 ;; cause a dependency cycle.
4800 (arguments `(#:tests? #f))
4801 (propagated-inputs
4802 `(("python-pyzmq" ,python-pyzmq)
4803 ("python-traitlets" ,python-traitlets)
4804 ("python-jupyter-core" ,python-jupyter-core)))
4805 (home-page "http://jupyter.org/")
4806 (synopsis "Jupyter protocol implementation and client libraries")
4807 (description
4808 "The @code{jupyter_client} package contains the reference implementation
4809of the Jupyter protocol. It also provides client and kernel management APIs
4810for working with kernels, and the @code{jupyter kernelspec} entrypoint for
4811installing @code{kernelspec}s for use with Jupyter frontends.")
4812 (license license:bsd-3)))
4813
4814(define-public python2-jupyter-client
4815 (package-with-python2 python-jupyter-client))
4816
ab526102
RW
4817(define-public python-ipykernel
4818 (package
4819 (name "python-ipykernel")
4820 (version "4.5.0")
4821 (source
4822 (origin
4823 (method url-fetch)
4824 (uri (pypi-uri "ipykernel" version))
4825 (sha256
4826 (base32 "15c2bp1x3i6s4xb7vz7742h3kmvdfdfn9n2haywm3mwgvf77jni4"))))
4827 (build-system python-build-system)
4828 ;; The tests load a submodule of IPython. However, IPython itself depends
4829 ;; on ipykernel.
4830 (arguments `(#:tests? #f))
4831 (propagated-inputs
4832 ;; imported at runtime during connect
4833 `(("python-jupyter-client" ,python-jupyter-client)))
4834 (home-page "http://ipython.org")
4835 (synopsis "IPython Kernel for Jupyter")
4836 (description
4837 "This package provides the IPython kernel for Jupyter.")
4838 (license license:bsd-3)))
4839
4840(define-public python2-ipykernel
4841 (package-with-python2 python-ipykernel))
4842
5ff6effc
RW
4843(define-public python-testpath
4844 (package
4845 (name "python-testpath")
4846 (version "0.2")
4847 (source
4848 (origin
4849 (method url-fetch)
4850 (uri (string-append "https://github.com/jupyter/testpath/archive/"
4851 version ".tar.gz"))
4852 (file-name (string-append name "-" version ".tar.gz"))
4853 (sha256
4854 (base32
4855 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
4856 (build-system python-build-system)
4857 (arguments
4858 `(#:tests? #f ; this package does not even have a setup.py
4859 #:phases
4860 (modify-phases %standard-phases
4861 (delete 'install)
4862 (replace 'build
4863 (lambda* (#:key inputs outputs #:allow-other-keys)
4864 (let ((dir (string-append
4865 (assoc-ref outputs "out")
4866 "/lib/python"
4867 (string-take (string-take-right
4868 (assoc-ref inputs "python") 5) 3)
4869 "/site-packages/testpath")))
4870 (mkdir-p dir)
4871 (copy-recursively "testpath" dir))
4872 #t)))))
4873 (home-page "https://github.com/takluyver/testpath")
4874 (synopsis "Test utilities for code working with files and commands")
4875 (description
4876 "Testpath is a collection of utilities for Python code working with files
4877and commands. It contains functions to check things on the filesystem, and
4878tools for mocking system commands and recording calls to those.")
4879 (license license:expat)))
4880
4881(define-public python2-testpath
4882 (package-with-python2 python-testpath))
4883
ae1ab9fe
FB
4884(define-public python-ipython
4885 (package
4886 (name "python-ipython")
4dbc8ec4 4887 (version "4.0.3")
ae1ab9fe
FB
4888 (source
4889 (origin
fceac880 4890 (method url-fetch)
accd5f99 4891 (uri (pypi-uri "ipython" version ".tar.gz"))
fceac880 4892 (sha256
4dbc8ec4 4893 (base32 "1h2gp1p06sww9rzfkfzqy489bh47gj3910y2b1wdk3dcx1cqz4is"))))
ae1ab9fe
FB
4894 (build-system python-build-system)
4895 (outputs '("out" "doc"))
3a0b1b9a
FB
4896 (propagated-inputs
4897 `(("python-pyzmq" ,python-pyzmq)
accd5f99 4898 ("python-terminado" ,python-terminado)
ae1ab9fe 4899 ("python-matplotlib" ,python-matplotlib)
5d26e542 4900 ("python-numpy" ,python-numpy)
ae1ab9fe 4901 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
4902 ("python-jinja2" ,python-jinja2)
4903 ("python-mistune" ,python-mistune)
accd5f99
RW
4904 ("python-pexpect" ,python-pexpect)
4905 ("python-pickleshare" ,python-pickleshare)
4906 ("python-simplegeneric" ,python-simplegeneric)
3a0b1b9a 4907 ("python-jsonschema" ,python-jsonschema)
accd5f99
RW
4908 ("python-traitlets" ,python-traitlets)
4909 ("python-ipykernel" ,python-ipykernel)
4910 ("python-pygments" ,python-pygments)))
4911 (inputs
4912 `(("readline" ,readline)
4913 ("which" ,which)))
ae1ab9fe
FB
4914 (native-inputs
4915 `(("pkg-config" ,pkg-config)
accd5f99
RW
4916 ("python-requests" ,python-requests) ;; for tests
4917 ("python-testpath" ,python-testpath)
4918 ("python-nose" ,python-nose)
ae1ab9fe
FB
4919 ("python-sphinx" ,python-sphinx)
4920 ("texlive" ,texlive)
f3b98f4f 4921 ("texinfo" ,texinfo)))
ae1ab9fe 4922 (arguments
89b5c60e 4923 `(#:phases
3a0b1b9a
FB
4924 (modify-phases %standard-phases
4925 (add-after
4926 'install 'install-doc
4927 (lambda* (#:key inputs outputs #:allow-other-keys)
4928 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4929 (doc (string-append data "/doc/" ,name "-" ,version))
4930 (html (string-append doc "/html"))
4931 (man1 (string-append data "/man/man1"))
4932 (info (string-append data "/info"))
4933 (examples (string-append doc "/examples")))
afd3d931 4934 (setenv "LANG" "en_US.utf8")
eee5cd04
HG
4935 ;; Make installed package available for running the tests
4936 (add-installed-pythonpath inputs outputs)
3a0b1b9a 4937 (with-directory-excursion "docs"
accd5f99
RW
4938 ;; FIXME: pdf fails to build
4939 ;;(system* "make" "pdf" "PAPER=a4")
4940 (system* "make" "html")
3a0b1b9a
FB
4941 (system* "make" "info"))
4942 (copy-recursively "docs/man" man1)
4943 (copy-recursively "examples" examples)
accd5f99 4944 (copy-recursively "docs/build/html" html)
3a0b1b9a
FB
4945 ;; (copy-file "docs/build/latex/ipython.pdf"
4946 ;; (string-append doc "/ipython.pdf"))
4947 (mkdir-p info)
4948 (copy-file "docs/build/texinfo/ipython.info"
4949 (string-append info "/ipython.info"))
4950 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
4951 ;; Tests can only be run after the library has been installed and not
4952 ;; within the source directory.
4953 (delete 'check)
4954 (add-after
4955 'install 'check
eee5cd04 4956 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3a0b1b9a
FB
4957 (if tests?
4958 (with-directory-excursion "/tmp"
eee5cd04
HG
4959 ;; Make installed package available for running the tests
4960 (add-installed-pythonpath inputs outputs)
3a0b1b9a
FB
4961 (setenv "HOME" "/tmp/") ;; required by a test
4962 (zero? (system* (string-append (assoc-ref outputs "out")
4963 "/bin/iptest"))))
4964 #t)))
4965 (add-before
4966 'install 'fix-tests
4967 (lambda* (#:key inputs #:allow-other-keys)
4968 (substitute* "./IPython/utils/_process_posix.py"
4969 (("/usr/bin/env', 'which") (which "which")))
4970 (substitute* "./IPython/core/tests/test_inputtransformer.py"
4971 (("#!/usr/bin/env python")
4972 (string-append "#!" (which "python"))))
4973 ;; Disable 1 failing test
4974 (substitute* "./IPython/core/tests/test_magic.py"
4975 (("def test_dirops\\(\\):" all)
4976 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
4977 (home-page "http://ipython.org")
4978 (synopsis "IPython is a tool for interactive computing in Python")
4979 (description
4980 "IPython provides a rich architecture for interactive computing with:
4981Powerful interactive shells, a browser-based notebook, support for interactive
4982data visualization, embeddable interpreters and tools for parallel
4983computing.")
135ba811
EF
4984 (license license:bsd-3)
4985 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
4986
4987(define-public python2-ipython
135ba811 4988 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
4989 (package
4990 (inherit ipython)
4991 ;; FIXME: some tests are failing
4992 (arguments
4993 `(#:tests? #f ,@(package-arguments ipython)))
3a0b1b9a 4994 ;; FIXME: add pyreadline once available.
e62600fe 4995 (native-inputs
135ba811 4996 `(("python2-mock" ,python2-mock)
77a6932a 4997 ,@(package-native-inputs ipython))))))
03411993
AE
4998
4999(define-public python-isodate
5000 (package
5001 (name "python-isodate")
b6785c2e 5002 (version "0.5.4")
03411993
AE
5003 (source
5004 (origin
5005 (method url-fetch)
b6785c2e 5006 (uri (pypi-uri "isodate" version))
03411993
AE
5007 (sha256
5008 (base32
b6785c2e 5009 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993 5010 (build-system python-build-system)
03411993
AE
5011 (home-page
5012 "http://cheeseshop.python.org/pypi/isodate")
5013 (synopsis
5014 "Python date parser and formatter")
5015 (description
5016 "Python-isodate is a python module for parsing and formatting
5017ISO 8601 dates, time and duration.")
3f641af0 5018 (license license:bsd-3)))
03411993
AE
5019
5020(define-public python2-isodate
5021 (package-with-python2 python-isodate))
673ab897
AE
5022
5023(define-public python-html5lib
5024 (package
5025 (name "python-html5lib")
a14061aa 5026 (version "1.0b10")
673ab897
AE
5027 (source
5028 (origin
5029 (method url-fetch)
fee04c19 5030 (uri (pypi-uri "html5lib" version))
673ab897
AE
5031 (sha256
5032 (base32
a14061aa 5033 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
673ab897 5034 (build-system python-build-system)
3dd75476 5035 (propagated-inputs
4eb6ed28
MB
5036 `(("python-six" ,python-six)
5037 ("python-webencodings" ,python-webencodings)))
673ab897
AE
5038 (arguments
5039 `(#:test-target "check"))
5040 (home-page
5041 "https://github.com/html5lib/html5lib-python")
5042 (synopsis
5043 "Python HTML parser based on the WHATWG HTML specifcation")
5044 (description
5045 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
5046and written in Python.")
bd3fa666 5047 (license license:expat)))
673ab897
AE
5048
5049(define-public python2-html5lib
5050 (package-with-python2 python-html5lib))
e99f4211 5051
8ee62c97
RW
5052;; Needed for python-bleach, a dependency of python-notebook
5053(define-public python-html5lib-0.9
5054 (package
5055 (inherit python-html5lib)
5056 (version "0.999")
5057 (source
5058 (origin
5059 (method url-fetch)
5060 (uri (pypi-uri "html5lib" version))
5061 (sha256
5062 (base32
5063 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
5064
5065(define-public python2-html5lib-0.9
5066 (package-with-python2 python-html5lib-0.9))
5067
adbca19e
MB
5068(define-public python-webencodings
5069 (package
5070 (name "python-webencodings")
5071 (version "0.5")
5072 (source (origin
5073 (method url-fetch)
5074 (uri (pypi-uri "webencodings" version))
5075 (sha256
5076 (base32
5077 "015rw7662lkpb9aqiqah2hbizk6w531badqwjpz41rr47glmxid5"))))
5078 (build-system python-build-system)
5079 (arguments
5080 '(#:phases
5081 (modify-phases %standard-phases
5082 (replace 'check
5083 (lambda _
5084 (zero? (system* "py.test" "-v" "webencodings/tests.py")))))))
5085 (native-inputs
5086 `(("python-pytest" ,python-pytest)))
5087 (home-page "https://github.com/SimonSapin/python-webencodings")
5088 (synopsis "Character encoding aliases for legacy web content")
5089 (description
5090 "In order to be compatible with legacy web content when interpreting
5091something like @code{Content-Type: text/html; charset=latin1}, tools need
5092to use a particular set of aliases for encoding labels as well as some
5093overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
5094the web are actually aliases for @code{windows-1252}, and an @code{UTF-8}
5095or @code{UTF-16} BOM takes precedence over any other encoding declaration.
5096The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
5097defines all such details so that implementations do not have to
5098reverse-engineer each other.
5099
5100This module implements the Encoding standard and has encoding labels and
5101BOM detection, but the actual implementation for encoders and decoders
5102is Python’s.")
5103 (license license:bsd-3)))
5104
5105(define-public python2-webencodings
5106 (package-with-python2 python-webencodings))
5107
e99f4211
MW
5108(define-public python-urwid
5109 (package
5110 (name "python-urwid")
51ff41f6 5111 (version "1.3.1")
e99f4211
MW
5112 (source
5113 (origin
5114 (method url-fetch)
b97c1bfd 5115 (uri (pypi-uri "urwid" version))
e99f4211
MW
5116 (sha256
5117 (base32
51ff41f6 5118 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 5119 (build-system python-build-system)
b97c1bfd
LF
5120 (arguments
5121 `(#:phases
5122 (modify-phases %standard-phases
5123 ;; Disable failing test. Bug filed upstream:
5124 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 5125 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
5126 (add-after 'unpack 'disable-failing-test
5127 (lambda _
5128 (substitute* "urwid/tests/test_event_loops.py"
5129 (("test_remove_watch_file")
5130 "disable_remove_watch_file")))))))
e99f4211
MW
5131 (home-page "http://urwid.org")
5132 (synopsis "Console user interface library for Python")
5133 (description
5134 "Urwid is a curses-based UI/widget library for Python. It includes many
5135features useful for text console applications.")
3f641af0 5136 (license license:lgpl2.1+)))
e99f4211
MW
5137
5138(define-public python2-urwid
5139 (package-with-python2 python-urwid))
d95a56c6 5140
3ef00f56 5141(define-public python2-openid
5142 (package
5143 (name "python2-openid")
5144 (version "2.2.5")
5145 (source
5146 (origin
5147 (method url-fetch)
5148 (uri (pypi-uri "python-openid" version))
5149 (sha256
5150 (base32
5151 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
5152 (build-system python-build-system)
5153 (arguments
5154 ;; Python 3 support is in `python3-openid`, a separate package.
5155 `(#:python ,python-2))
5156 (home-page "https://github.com/openid/python-openid")
5157 (synopsis "OpenID support for servers and consumers")
5158 (description "This library provides OpenID authentication for Python, both
5159for clients and servers.")
5160 (license license:asl2.0)))
5161
47d0b292
TS
5162(define-public python-urwidtrees
5163 (package
5164 (name "python-urwidtrees")
37ec4623 5165 (version "1.0.2")
47d0b292
TS
5166 (source
5167 (origin
5168 (method url-fetch)
37ec4623
TS
5169 ;; package author intends on distributing via github rather than pypi:
5170 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
5171 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
5172 version ".tar.gz"))
5173 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
5174 (sha256
5175 (base32
37ec4623 5176 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
5177 (build-system python-build-system)
5178 (arguments
5179 '(#:tests? #f)) ; no tests
f22efa01 5180 (propagated-inputs `(("python-urwid" ,python-urwid)))
47d0b292
TS
5181 (home-page "https://github.com/pazz/urwidtrees")
5182 (synopsis "Tree widgets for urwid")
5183 (description "Urwidtrees is a Widget Container API for the @code{urwid}
5184toolkit. Use it to build trees of widgets.")
3f641af0 5185 (license license:gpl3+)))
47d0b292
TS
5186
5187(define-public python2-urwidtrees
5188 (package-with-python2 python-urwidtrees))
5189
d95a56c6
PAR
5190(define-public python-dbus
5191 (package
5192 (name "python-dbus")
5193 (version "1.2.0")
5194 (source
5195 (origin
5196 (method url-fetch)
5197 (uri (string-append
5cc3096c 5198 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
5199 version ".tar.gz"))
5200 (sha256
5201 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
5202 (build-system gnu-build-system)
6717c879
SB
5203 (arguments
5204 '(#:phases
5205 (modify-phases %standard-phases
5206 (add-before
5207 'check 'pre-check
5208 (lambda _
5209 ;; XXX: For the missing '/etc/machine-id'.
5210 (substitute* "test/run-test.sh"
5211 (("DBUS_FATAL_WARNINGS=1")
5212 "DBUS_FATAL_WARNINGS=0"))
5213 #t)))))
d95a56c6
PAR
5214 (native-inputs
5215 `(("pkg-config" ,pkg-config)))
5216 (inputs
5217 `(("python" ,python)
2e88d113 5218 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
5219 (synopsis "Python bindings for D-bus")
5220 (description "python-dbus provides bindings for libdbus, the reference
5221implementation of D-Bus.")
5222 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 5223 (license license:expat)))
b52af02b
MW
5224
5225(define-public python2-dbus
5226 (package (inherit python-dbus)
5227 (name "python2-dbus")
5228 (inputs `(("python" ,python-2)
5229 ,@(alist-delete "python"
5230 (package-inputs python-dbus)
5231 equal?)))
5232 ;; FIXME: on Python 2, the test_utf8 fails with:
5233 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
5234 (arguments `(#:tests? #f))))
a6ac8332
AE
5235
5236(define-public python-apsw
5237 (package
5238 (name "python-apsw")
917708c2 5239 (version "3.9.2-r1")
a6ac8332
AE
5240 (source
5241 (origin
5242 (method url-fetch)
917708c2 5243 (uri (pypi-uri "apsw" version))
a6ac8332
AE
5244 (sha256
5245 (base32
917708c2 5246 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
5247 (build-system python-build-system)
5248 (inputs
f3b98f4f 5249 `(("sqlite" ,sqlite)))
a6ac8332
AE
5250 (arguments
5251 `(#:phases
5252 ;; swap check and install phases
5253 (alist-cons-after
5254 'install 'check
5255 (assoc-ref %standard-phases 'check)
5256 (alist-delete
5257 'check
5258 %standard-phases))))
5259 (home-page "https://github.com/rogerbinns/apsw/")
5260 (synopsis "Another Python SQLite Wrapper")
5261 (description "APSW is a Python wrapper for the SQLite
5262embedded relational database engine. In contrast to other wrappers such as
5263pysqlite it focuses on being a minimal layer over SQLite attempting just to
5264translate the complete SQLite API into Python.")
abde5f37 5265 (license license:zlib)))
a6ac8332
AE
5266
5267(define-public python2-apsw
5268 (package-with-python2 python-apsw))
26b307e2
AE
5269
5270(define-public python-lxml
5271 (package
5272 (name "python-lxml")
d58a3203 5273 (version "3.6.0")
26b307e2
AE
5274 (source
5275 (origin
5276 (method url-fetch)
97bbc480 5277 (uri (pypi-uri "lxml" version))
26b307e2 5278 (sha256
d58a3203
EF
5279 (base32
5280 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
5281 (build-system python-build-system)
5282 (inputs
5283 `(("libxml2" ,libxml2)
f3b98f4f 5284 ("libxslt" ,libxslt)))
26b307e2
AE
5285 (home-page "http://lxml.de/")
5286 (synopsis
5287 "Python XML processing library")
5288 (description
5289 "The lxml XML toolkit is a Pythonic binding for the C libraries
5290libxml2 and libxslt.")
3f641af0 5291 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
5292
5293(define-public python2-lxml
5294 (package-with-python2 python-lxml))
4ed20663 5295
b32a1e47
CAW
5296;; beautifulsoup4 has a totally different namespace than 3.x,
5297;; and pypi seems to put it under its own name, so I guess we should too
5298(define-public python-beautifulsoup4
5299 (package
5300 (name "python-beautifulsoup4")
67fd4a12 5301 (version "4.5.1")
b32a1e47
CAW
5302 (source
5303 (origin
5304 (method url-fetch)
5305 (uri (pypi-uri "beautifulsoup4" version))
5306 (sha256
5307 (base32
67fd4a12 5308 "1qgmhw65ncsgccjhslgkkszif47q6gvxwqv4mim17agxd81p951w"))))
b32a1e47 5309 (build-system python-build-system)
5f37f0b6
LF
5310 (arguments
5311 `(#:phases
5312 (modify-phases %standard-phases
5313 ;; The Python 2 source is the definitive source of beautifulsoup4. We
5314 ;; must use this conversion script when building with Python 3. The
5315 ;; conversion script also runs the tests.
5316 ;; For more information, see the file 'convert-py3k' in the source
5317 ;; distribution.
5318 (replace 'check
5319 (lambda _ (zero? (system* "./convert-py3k")))))))
b32a1e47
CAW
5320 (home-page
5321 "http://www.crummy.com/software/BeautifulSoup/bs4/")
5322 (synopsis
5323 "Python screen-scraping library")
5324 (description
5325 "Beautiful Soup is a Python library designed for rapidly setting up
5326screen-scraping projects. It offers Pythonic idioms for navigating,
5327searching, and modifying a parse tree, providing a toolkit for
5328dissecting a document and extracting what you need. It automatically
5329converts incoming documents to Unicode and outgoing documents to UTF-8.")
f210e944 5330 (license license:expat)))
b32a1e47
CAW
5331
5332(define-public python2-beautifulsoup4
5333 (package
5334 (inherit (package-with-python2
5335 (strip-python2-variant python-beautifulsoup4)))
5f37f0b6 5336 (arguments `(#:python ,python-2))))
b32a1e47 5337
092e86f5
AE
5338(define-public python2-cssutils
5339 (package
5340 (name "python2-cssutils")
58d1d816 5341 (version "1.0.1")
092e86f5
AE
5342 (source
5343 (origin
5344 (method url-fetch)
58d1d816 5345 (uri (pypi-uri "cssutils" version))
092e86f5 5346 (sha256
58d1d816
EF
5347 (base32
5348 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
5349 (build-system python-build-system)
5350 (native-inputs
5351 `(("python2-mock" ,python2-mock) ; for the tests
5352 ("unzip" ,unzip))) ; for unpacking the source
092e86f5
AE
5353 (arguments
5354 `(#:python ,python-2 ; Otherwise tests fail with a syntax error.
5355 #:tests? #f ; The tests apparently download an external URL.
da6dd842 5356 ))
092e86f5
AE
5357 (home-page "http://cthedot.de/cssutils/")
5358 (synopsis
5359 "CSS Cascading Style Sheets library for Python")
5360 (description
5361 "Cssutils is a Python package for parsing and building CSS
5362Cascading Style Sheets. Currently it provides a DOM only and no rendering
5363options.")
3f641af0 5364 (license license:lgpl3+)))
880ff77c
AE
5365
5366(define-public python-cssselect
5367 (package
5368 (name "python-cssselect")
d5ccd9ab 5369 (version "0.9.2")
880ff77c
AE
5370 (source
5371 (origin
5372 (method url-fetch)
d5ccd9ab 5373 (uri (pypi-uri "cssselect" version))
880ff77c 5374 (sha256
d5ccd9ab
EF
5375 (base32
5376 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c 5377 (build-system python-build-system)
880ff77c
AE
5378 (arguments
5379 ;; tests fail with message
5380 ;; AttributeError: 'module' object has no attribute 'tests'
5381 `(#:tests? #f))
5382 (home-page
5383 "https://pythonhosted.org/cssselect/")
5384 (synopsis
5385 "CSS3 selector parser and translator to XPath 1.0")
5386 (description
5387 "Cssselect ia a Python module that parses CSS3 Selectors and translates
5388them to XPath 1.0 expressions. Such expressions can be used in lxml or
5389another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 5390 (license license:bsd-3)))
880ff77c
AE
5391
5392(define-public python2-cssselect
5393 (package-with-python2 python-cssselect))
60357f99 5394
03702173 5395(define-public python-openid-cla
5396 (package
5397 (name "python-openid-cla")
5398 (version "1.2")
5399 (source
5400 (origin
5401 (method url-fetch)
5402 (uri (pypi-uri "python-openid-cla" version))
5403 (sha256
5404 (base32
5405 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
5406 (build-system python-build-system)
5407 (home-page "https://github.com/puiterwijk/python-openid-cla/")
5408 (synopsis "Implementation of the OpenID CLA extension for python-openid")
5409 (description "@code{openid-cla} is an implementation of the OpenID
5410contributor license agreement extension for python-openid.")
5411 (license license:bsd-3)))
5412
5413(define-public python2-openid-cla
5414 (package-with-python2 python-openid-cla))
5415
a0e41de4 5416(define-public python-openid-teams
5417 (package
5418 (name "python-openid-teams")
5419 (version "1.1")
5420 (source
5421 (origin
5422 (method url-fetch)
5423 (uri (pypi-uri "python-openid-teams" version))
5424 (sha256
5425 (base32
5426 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
5427 (build-system python-build-system)
5428 (home-page "https://github.com/puiterwijk/python-openid-teams/")
5429 (synopsis "Implementation of the OpenID teams extension for python-openid")
5430 (description
5431 "@code{openid-teams} is an implementation of the OpenID
5432teams extension for python-openid.")
5433 (license license:bsd-3)))
5434
5435(define-public python2-openid-teams
5436 (package-with-python2 python-openid-teams))
5437
60357f99
AE
5438(define-public python-netifaces
5439 (package
5440 (name "python-netifaces")
5441 (version "0.10.4")
5442 (source
5443 (origin
5444 (method url-fetch)
5445 (uri (string-append
5446 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
5447 version
5448 ".tar.gz"))
5449 (sha256
5450 (base32
5451 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
5452 (build-system python-build-system)
60357f99
AE
5453 (home-page
5454 "https://bitbucket.org/al45tair/netifaces")
5455 (synopsis
5456 "Python module for portable network interface information")
5457 (description
5458 "Netifaces is a Python module providing information on network
5459interfaces in an easy and portable manner.")
5460 (license license:expat)))
5461
5462(define-public python2-netifaces
5463 (package-with-python2 python-netifaces))
92cb152b 5464
32f77c04
RW
5465(define-public python-networkx
5466 (package
5467 (name "python-networkx")
a4d9609c 5468 (version "1.11")
32f77c04
RW
5469 (source
5470 (origin
5471 (method url-fetch)
a4d9609c 5472 (uri (pypi-uri "networkx" version))
32f77c04 5473 (sha256
a4d9609c 5474 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
5475 (build-system python-build-system)
5476 ;; python-decorator is needed at runtime
5477 (propagated-inputs
5478 `(("python-decorator" ,python-decorator)))
5479 (native-inputs
f3b98f4f 5480 `(("python-nose" ,python-nose)))
32f77c04
RW
5481 (home-page "http://networkx.github.io/")
5482 (synopsis "Python module for creating and manipulating graphs and networks")
5483 (description
5484 "NetworkX is a Python package for the creation, manipulation, and study
5485of the structure, dynamics, and functions of complex networks.")
3f641af0 5486 (license license:bsd-3)))
32f77c04
RW
5487
5488(define-public python2-networkx
5489 (package-with-python2 python-networkx))
5490
92cb152b
RW
5491(define-public snakemake
5492 (package
5493 (name "snakemake")
5494 (version "3.2.1")
5495 (source
5496 (origin
5497 (method url-fetch)
5498 (uri (string-append
5499 "https://pypi.python.org/packages/source/s/snakemake/snakemake-"
5500 version ".tar.gz"))
5501 (sha256
5502 (base32 "0fi4b63sj60hvi7rfydvmz2icl4wj74djw5sn2gl8hxd02qw4b91"))))
5503 (build-system python-build-system)
92cb152b
RW
5504 (home-page "https://bitbucket.org/johanneskoester/snakemake")
5505 (synopsis "Python-based execution environment for make-like workflows")
5506 (description
5507 "Snakemake aims to reduce the complexity of creating workflows by
5508providing a clean and modern domain specific specification language (DSL) in
5509Python style, together with a fast and comfortable execution environment.")
5510 (license license:expat)))
a1920bc9 5511
35de1fbd
RW
5512(define-public python-seaborn
5513 (package
5514 (name "python-seaborn")
fc899d4f 5515 (version "0.7.0")
35de1fbd
RW
5516 (source
5517 (origin
5518 (method url-fetch)
fc899d4f 5519 (uri (pypi-uri "seaborn" version))
35de1fbd 5520 (sha256
fc899d4f 5521 (base32 "0ibi3xsfm2kysph61mnfy0pf8d5rkgxgrdb0z9nbizgcgdsb5a0m"))))
35de1fbd
RW
5522 (build-system python-build-system)
5523 (propagated-inputs
5524 `(("python-pandas" ,python-pandas)
5525 ("python-matplotlib" ,python-matplotlib)
5526 ("python-scipy" ,python-scipy)))
35de1fbd
RW
5527 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
5528 (synopsis "Statistical data visualization")
5529 (description
5530 "Seaborn is a library for making attractive and informative statistical
5531graphics in Python. It is built on top of matplotlib and tightly integrated
5532with the PyData stack, including support for numpy and pandas data structures
5533and statistical routines from scipy and statsmodels.")
3f641af0 5534 (license license:bsd-3)
fc899d4f 5535 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
5536
5537(define-public python2-seaborn
fc899d4f
EF
5538 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
5539 (package
5540 (inherit base)
5541 (propagated-inputs `(("python2-pytz" ,python2-pytz)
00e10c6e 5542 ,@(package-propagated-inputs base))))))
35de1fbd 5543
90fc547f
RW
5544(define-public python-sympy
5545 (package
5546 (name "python-sympy")
5547 (version "0.7.6")
5548 (source
5549 (origin
5550 (method url-fetch)
5551 (uri (string-append
5552 "https://github.com/sympy/sympy/releases/download/sympy-"
5553 version "/sympy-" version ".tar.gz"))
5554 (sha256
5555 (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
5556 (build-system python-build-system)
90fc547f
RW
5557 (home-page "http://www.sympy.org/")
5558 (synopsis "Python library for symbolic mathematics")
5559 (description
5560 "SymPy is a Python library for symbolic mathematics. It aims to become a
5561full-featured computer algebra system (CAS) while keeping the code as simple
5562as possible in order to be comprehensible and easily extensible.")
3f641af0 5563 (license license:bsd-3)))
90fc547f
RW
5564
5565(define-public python2-sympy
5566 (package-with-python2 python-sympy))
5567
e8c9b010
SR
5568(define-public python-q
5569 (package
5570 (name "python-q")
5571 (version "2.6")
5572 (source
5573 (origin
5574 (method url-fetch)
5575 (uri (pypi-uri "q" version))
5576 (sha256
5577 (base32
5578 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
5579 (build-system python-build-system)
5580 (home-page "https://github.com/zestyping/q")
5581 (synopsis "Quick-and-dirty debugging output for tired programmers")
5582 (description
5583 "q is a Python module for \"print\" style of debugging Python code. It
5584provides convenient short API for print out of values, tracebacks, and
5585falling into the Python interpreter.")
f210e944 5586 (license license:asl2.0)))
e8c9b010
SR
5587
5588(define-public python2-q
f210e944 5589 (package-with-python2 python-q))
e8c9b010 5590
a1920bc9
FB
5591(define-public python-testlib
5592 (package
5593 (name "python-testlib")
5594 (version "0.6.5")
5595 (source
5596 (origin
5597 (method url-fetch)
5598 (uri (string-append
5599 "https://pypi.python.org/packages/source/t/testlib/testlib-"
5600 version ".zip"))
5601 (sha256
5602 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
5603 (build-system python-build-system)
a1920bc9 5604 (native-inputs
632735f2 5605 `(("unzip" ,unzip))) ; for unpacking the source
a1920bc9
FB
5606 (synopsis "Python micro test suite harness")
5607 (description "A micro unittest suite harness for Python.")
5608 (home-page "https://github.com/trentm/testlib")
1cb9c006 5609 (license license:expat)))
a1920bc9
FB
5610
5611(define-public python2-testlib
5612 (package-with-python2 python-testlib))
db62afa5
LC
5613
5614(define-public python2-xlib
5615 (package
5616 (name "python2-xlib")
5617 (version "0.14")
5618 (source (origin
5619 (method url-fetch)
de67e922
LF
5620 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
5621 "/" version "/"
db62afa5
LC
5622 "python-xlib-" version ".tar.gz"))
5623 (sha256
5624 (base32
5625 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
5626 (build-system python-build-system)
5627 (arguments
5628 `(#:python ,python-2 ;Python 2 only
5629 #:tests? #f)) ;no tests
db62afa5
LC
5630 (home-page "http://python-xlib.sourceforge.net/")
5631 (synopsis "Python X11 client library")
5632 (description
5633 "The Python X Library is intended to be a fully functional X client
5634library for Python programs. It is useful to implement low-level X clients.
5635It is written entirely in Python.")
3f641af0 5636 (license license:gpl2+)))
0234ca06
DT
5637
5638(define-public python-singledispatch
5639 (package
5640 (name "python-singledispatch")
5641 (version "3.4.0.3")
5642 (source
5643 (origin
5644 (method url-fetch)
bdb67d84 5645 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
5646 (sha256
5647 (base32
5648 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
5649 (build-system python-build-system)
5e1c9d24
HG
5650 (native-inputs
5651 `(("python-six" ,python-six))) ; required for conversion, not at run-time
0234ca06
DT
5652 (home-page
5653 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
5654 (synopsis "Backport of singledispatch feature from Python 3.4")
5655 (description
5656 "This library brings functools.singledispatch from Python 3.4 to Python
56572.6-3.3.")
5658 (license license:expat)))
5659
5660(define-public python2-singledispatch
5661 (package-with-python2 python-singledispatch))
feaae484 5662
310d218f
RW
5663(define-public python-tornado
5664 (package
5665 (name "python-tornado")
a724924b 5666 (version "4.3")
310d218f
RW
5667 (source
5668 (origin
5669 (method url-fetch)
a724924b 5670 (uri (pypi-uri "tornado" version))
310d218f 5671 (sha256
a724924b 5672 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f 5673 (build-system python-build-system)
310d218f 5674 (native-inputs
b455439b 5675 `(("python-certifi" ,python-certifi)))
f22efa01 5676 (propagated-inputs
b455439b 5677 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 5678 (home-page "http://www.tornadoweb.org/")
310d218f
RW
5679 (synopsis "Python web framework and asynchronous networking library")
5680 (description
5681 "Tornado is a Python web framework and asynchronous networking library,
5682originally developed at FriendFeed. By using non-blocking network I/O,
5683Tornado can scale to tens of thousands of open connections, making it ideal
5684for long polling, WebSockets, and other applications that require a long-lived
5685connection to each user.")
3f641af0 5686 (license license:asl2.0)
b455439b 5687 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
5688
5689(define-public python2-tornado
b455439b 5690 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f 5691 (package (inherit tornado)
f22efa01 5692 (propagated-inputs
310d218f
RW
5693 `(("python2-backport-ssl-match-hostname"
5694 ,python2-backport-ssl-match-hostname)
b455439b 5695 ("python2-singledispatch" ,python2-singledispatch)
f22efa01 5696 ,@(package-propagated-inputs tornado))))))
310d218f 5697
6b59fc10
EF
5698;; the python- version can be removed with python-3.5
5699(define-public python-backports-abc
5700 (package
5701 (name "python-backports-abc")
5702 (version "0.4")
5703 (source
5704 (origin
5705 (method url-fetch)
5706 (uri (pypi-uri "backports_abc" version))
5707 (sha256
5708 (base32
5709 "19fh75lni9pb673n2fn505m1rckm0af0szcv5xx1qm1xpa940glb"))))
5710 (build-system python-build-system)
6b59fc10 5711 (home-page "https://github.com/cython/backports_abc")
66e07664 5712 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
5713 (description
5714 "Python-backports-abc provides a backport of additions to the
5715'collections.abc' module in Python-3.5.")
3f641af0 5716 (license license:psfl)))
6b59fc10
EF
5717
5718(define-public python2-backports-abc
5719 (package-with-python2 python-backports-abc))
5720
feaae484
SB
5721(define-public python-waf
5722 (package
5723 (name "python-waf")
7dd55dfe 5724 (version "1.9.5")
feaae484
SB
5725 (source (origin
5726 (method url-fetch)
bae67829 5727 (uri (string-append "https://waf.io/"
feaae484
SB
5728 "waf-" version ".tar.bz2"))
5729 (sha256
5730 (base32
7dd55dfe 5731 "1sl3ipi2czds57rlzjnpdzqa0skx8asfvmh3qmibpvdwf15rpppg"))))
feaae484
SB
5732 (build-system python-build-system)
5733 (arguments
5734 '(#:phases
5735 (modify-phases %standard-phases
5736 (replace 'build
7dd55dfe
EF
5737 (lambda _
5738 (zero? (system* "python" "waf-light" "configure" "build"))))
feaae484 5739 (replace 'check
7dd55dfe
EF
5740 (lambda _
5741 (zero? (system* "python" "waf" "--version"))))
feaae484 5742 (replace 'install
7dd55dfe
EF
5743 (lambda _
5744 (copy-file "waf" %output))))))
5745 (home-page "http://waf.io/")
feaae484
SB
5746 (synopsis "Python-based build system")
5747 (description
5748 "Waf is a Python-based framework for configuring, compiling and installing
5749applications.")
3f641af0 5750 (license license:bsd-3)))
feaae484
SB
5751
5752(define-public python2-waf
5753 (package-with-python2 python-waf))
45203542
RW
5754
5755(define-public python-pyzmq
5756 (package
5757 (name "python-pyzmq")
3655ee76 5758 (version "15.1.0")
45203542
RW
5759 (source
5760 (origin
5761 (method url-fetch)
3655ee76 5762 (uri (pypi-uri "pyzmq" version))
45203542 5763 (sha256
3655ee76 5764 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
5765 (build-system python-build-system)
5766 (arguments
5767 `(#:configure-flags
5768 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
5769 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
5770 ;; --inplace' for 'python setup.py test' to work.
5771 #:tests? #f))
5772 (inputs
5773 `(("zeromq" ,zeromq)))
5774 (native-inputs
5775 `(("pkg-config" ,pkg-config)
f3b98f4f 5776 ("python-nose" ,python-nose)))
45203542
RW
5777 (home-page "http://github.com/zeromq/pyzmq")
5778 (synopsis "Python bindings for 0MQ")
5779 (description
5780 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 5781 (license license:bsd-4)))
45203542
RW
5782
5783(define-public python2-pyzmq
5784 (package-with-python2 python-pyzmq))
d889e6c4
CR
5785
5786(define-public python-pep8
5787 (package
5788 (name "python-pep8")
db251311 5789 (version "1.7.0")
d889e6c4
CR
5790 (source
5791 (origin
5792 (method url-fetch)
db251311 5793 (uri (pypi-uri "pep8" version))
d889e6c4
CR
5794 (sha256
5795 (base32
db251311 5796 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4 5797 (build-system python-build-system)
d889e6c4
CR
5798 (home-page "http://pep8.readthedocs.org/")
5799 (synopsis "Python style guide checker")
5800 (description
5801 "This tools checks Python code against some of the style conventions in
5802PEP 8.")
5803 (license license:expat)))
5804
5805(define-public python2-pep8
5806 (package-with-python2 python-pep8))
e31d7f44
CR
5807
5808(define-public python-pyflakes
5809 (package
5810 (name "python-pyflakes")
2abc3972 5811 (version "1.0.0")
e31d7f44
CR
5812 (source
5813 (origin
5814 (method url-fetch)
2abc3972 5815 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
5816 (sha256
5817 (base32
2abc3972 5818 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44 5819 (build-system python-build-system)
e31d7f44
CR
5820 (home-page
5821 "https://github.com/pyflakes/pyflakes")
5822 (synopsis "Passive checker of Python programs")
5823 (description
5824 "Pyflakes statically checks Python source code for common errors.")
5825 (license license:expat)))
a59e017c 5826
7261d9eb
CR
5827(define-public python2-pyflakes
5828 (package-with-python2 python-pyflakes))
5829
a59e017c
CR
5830(define-public python-mccabe
5831 (package
5832 (name "python-mccabe")
c6ebd40d 5833 (version "0.4.0")
a59e017c
CR
5834 (source
5835 (origin
5836 (method url-fetch)
c6ebd40d 5837 (uri (pypi-uri "mccabe" version))
a59e017c
CR
5838 (sha256
5839 (base32
c6ebd40d 5840 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c 5841 (build-system python-build-system)
328bb95d 5842 (native-inputs
c6ebd40d 5843 `(("python-pytest" ,python-pytest)
f3b98f4f 5844 ("python-pytest-runner" ,python-pytest-runner)))
a59e017c
CR
5845 (home-page "https://github.com/flintwork/mccabe")
5846 (synopsis "McCabe checker, plugin for flake8")
5847 (description
5848 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
5849complexity of Python source code.")
7362371d 5850 (license license:expat)))
a59e017c
CR
5851
5852(define-public python2-mccabe
5853 (package-with-python2 python-mccabe))
e8df8f47 5854
7477fbb1
CR
5855(define-public python-mccabe-0.2.1
5856 (package (inherit python-mccabe)
5857 (version "0.2.1")
5858 (source
5859 (origin
5860 (method url-fetch)
5861 (uri (pypi-uri "mccabe" version))
5862 (sha256
5863 (base32
f3b98f4f 5864 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
7477fbb1
CR
5865
5866(define-public python2-mccabe-0.2.1
5867 (package-with-python2 python-mccabe-0.2.1))
5868
e8df8f47
CR
5869;; Flake8 2.4.1 requires an older version of pep8.
5870;; This should be removed ASAP.
5871(define-public python-pep8-1.5.7
5872 (package (inherit python-pep8)
5873 (version "1.5.7")
5874 (source
5875 (origin
5876 (method url-fetch)
5877 (uri (string-append
5878 "https://pypi.python.org/packages/source/p/pep8/pep8-"
5879 version
5880 ".tar.gz"))
5881 (sha256
5882 (base32
5883 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))))
5884
5885(define-public python2-pep8-1.5.7
5886 (package-with-python2 python-pep8-1.5.7))
5887
5888;; Flake8 2.4.1 requires an older version of pyflakes.
5889;; This should be removed ASAP.
5890(define-public python-pyflakes-0.8.1
5891 (package (inherit python-pyflakes)
5892 (version "0.8.1")
5893 (source
5894 (origin
5895 (method url-fetch)
5896 (uri (string-append
5897 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
5898 version
5899 ".tar.gz"))
5900 (sha256
5901 (base32
5902 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))))
5903
5904(define-public python2-pyflakes-0.8.1
7261d9eb 5905 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
5906
5907(define-public python-flake8
5908 (package
5909 (name "python-flake8")
43789136 5910 (version "2.5.4")
e8df8f47
CR
5911 (source
5912 (origin
5913 (method url-fetch)
1b995533 5914 (uri (pypi-uri "flake8" version))
e8df8f47
CR
5915 (sha256
5916 (base32
011271c7
HG
5917 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
5918 (modules '((guix build utils)))
5919 (snippet
5920 '(begin
5921 ;; Remove pre-compiled .pyc files from source.
5922 (for-each delete-file-recursively
5923 (find-files "." "__pycache__" #:directories? #t))
5924 (for-each delete-file (find-files "." "\\.pyc$"))
5925 #t))))
e8df8f47 5926 (build-system python-build-system)
482d9591 5927 (propagated-inputs
f3b98f4f 5928 `(("python-pep8" ,python-pep8)
43789136 5929 ("python-pyflakes" ,python-pyflakes)
482d9591 5930 ("python-mccabe" ,python-mccabe)))
328bb95d
HG
5931 (native-inputs
5932 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
e8df8f47
CR
5933 ("python-nose" ,python-nose)))
5934 (home-page "https://gitlab.com/pycqa/flake8")
5935 (synopsis
5936 "The modular source code checker: pep8, pyflakes and co")
5937 (description
5938 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
5939 (license license:expat)))
5940
5941(define-public python2-flake8
5942 (package-with-python2 python-flake8))
61b9ac53 5943
abf21efc
CR
5944;; This will only be needed by the python-hacking package and will not be
5945;; necessary once python-hacking > 0.10.2 is released.
5946(define-public python-flake8-2.2.4
5947 (package (inherit python-flake8)
482d9591 5948 (propagated-inputs
f3b98f4f 5949 `(("python-pep8" ,python-pep8-1.5.7)
abf21efc 5950 ("python-pyflakes" ,python-pyflakes-0.8.1)
482d9591 5951 ("python-mccabe" ,python-mccabe-0.2.1)))
328bb95d 5952 (native-inputs
482d9591 5953 `(("python-mock" ,python-mock)
abf21efc
CR
5954 ("python-nose" ,python-nose)))
5955 (version "2.2.4")
5956 (source
5957 (origin
5958 (method url-fetch)
5959 (uri (pypi-uri "flake8" version))
5960 (sha256
5961 (base32
b9c8ccce
HG
5962 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))
5963 (modules '((guix build utils)))
5964 (snippet
5965 '(begin
5966 ;; Remove pre-compiled .pyc files from source.
5967 (for-each delete-file-recursively
5968 (find-files "." "__pycache__" #:directories? #t))
5969 (for-each delete-file (find-files "." "\\.pyc$"))
5970 #t))))))
abf21efc
CR
5971
5972(define-public python2-flake8-2.2.4
5973 (package-with-python2 python-flake8-2.2.4))
5974
61b9ac53
FB
5975(define-public python-mistune
5976 (package
5977 (name "python-mistune")
5978 (version "0.7")
5979 (source
5980 (origin
5981 (method url-fetch)
5982 (uri (string-append
5983 "https://pypi.python.org/packages/source/m/mistune/mistune-"
5984 version
5985 ".tar.gz"))
5986 (sha256
5987 (base32
5988 "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
5989 (build-system python-build-system)
328bb95d 5990 (native-inputs
f3b98f4f 5991 `(("python-nose" ,python-nose)
61b9ac53
FB
5992 ("python-cython" ,python-cython)))
5993 (home-page "https://github.com/lepture/mistune")
5994 (synopsis "Markdown parser in pure Python")
5995 (description "This package provides a fast markdown parser in pure
5996Python.")
3f641af0 5997 (license license:bsd-3)))
61b9ac53
FB
5998
5999(define-public python2-mistune
6000 (package-with-python2 python-mistune))
6d992d07 6001
b9893908
EE
6002(define-public python-markdown
6003 (package
6004 (name "python-markdown")
791ac6a6 6005 (version "2.6.7")
b9893908
EE
6006 (source
6007 (origin
6008 (method url-fetch)
6009 (uri (pypi-uri "Markdown" version))
6010 (sha256
6011 (base32
791ac6a6 6012 "1h055llfd0ps0ig7qb3v1j9068xv90dc9s7xkhkgz9zg8r4g5sys"))))
b9893908
EE
6013 (build-system python-build-system)
6014 (arguments
6015 `(#:phases
6016 (modify-phases %standard-phases
6017 (replace 'check
6018 (lambda _
6019 (zero? (system* "python" "run-tests.py")))))))
6020 (native-inputs
6021 `(("python-nose" ,python-nose)
6022 ("python-pyyaml" ,python-pyyaml)))
6023 (home-page "https://pythonhosted.org/Markdown/")
6024 (synopsis "Python implementation of Markdown")
6025 (description
6026 "This package provides a Python implementation of John Gruber's
6027Markdown. The library features international input, various Markdown
6028extensions, and several HTML output formats. A command line wrapper
6029markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 6030 (license license:bsd-3)))
b9893908
EE
6031
6032(define-public python2-markdown
6033 (package-with-python2 python-markdown))
6034
6d992d07
FB
6035(define-public python-ptyprocess
6036 (package
6037 (name "python-ptyprocess")
6038 (version "0.5")
6039 (source
6040 (origin
6041 (method url-fetch)
6042 (uri (string-append
6043 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
6044 version ".tar.gz"))
6045 (sha256
6046 (base32
6047 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
6048 (build-system python-build-system)
328bb95d 6049 (native-inputs
f3b98f4f 6050 `(("python-nose" ,python-nose)))
6d992d07
FB
6051 (arguments
6052 `(#:phases
6053 (modify-phases %standard-phases
6054 (replace 'check
6055 (lambda _
6056 (zero? (system* "nosetests")))))))
6057 (home-page "https://github.com/pexpect/ptyprocess")
6058 (synopsis "Run a subprocess in a pseudo terminal")
6059 (description
6060 "This package provides a Python library used to launch a subprocess in a
6061pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 6062 (license license:isc)))
6d992d07
FB
6063
6064(define-public python2-ptyprocess
6065 (package-with-python2 python-ptyprocess))
4aadb1df
FB
6066
6067(define-public python-terminado
6068 (package
6069 (name "python-terminado")
783fb0a3 6070 (version "0.6")
4aadb1df
FB
6071 (source
6072 (origin
6073 (method url-fetch)
783fb0a3 6074 (uri (pypi-uri "terminado" version))
4aadb1df
FB
6075 (sha256
6076 (base32
783fb0a3 6077 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
6078 (build-system python-build-system)
6079 (propagated-inputs
6080 `(("python-tornado" ,python-tornado)
6081 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
6082 (native-inputs
6083 `(("python-nose" ,python-nose)))
4aadb1df
FB
6084 (arguments
6085 `(#:phases
6086 (modify-phases %standard-phases
6087 (replace 'check
6088 (lambda _
6089 (zero? (system* "nosetests")))))))
6090 (home-page "https://github.com/takluyver/terminado")
6091 (synopsis "Terminals served to term.js using Tornado websockets")
6092 (description "This package provides a Tornado websocket backend for the
6093term.js Javascript terminal emulator library.")
3f641af0 6094 (license license:bsd-2)
783fb0a3 6095 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
6096
6097(define-public python2-terminado
783fb0a3 6098 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 6099 (package (inherit terminado)
783fb0a3
EF
6100 (propagated-inputs
6101 `(("python2-backport-ssl-match-hostname"
6102 ,python2-backport-ssl-match-hostname)
00e10c6e 6103 ,@(package-propagated-inputs terminado))))))
5faa5ce4 6104
789de5e2 6105(define-public python-straight-plugin
6106 (package
6107 (name "python-straight-plugin")
6108 (version "1.4.1")
6109 (source
6110 (origin
6111 (method url-fetch)
6112 (uri (pypi-uri "straight.plugin" version))
6113 (sha256
6114 (base32
6115 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
6116 (build-system python-build-system)
6117 (home-page "https://github.com/ironfroggy/straight.plugin")
6118 (synopsis "Simple namespaced plugin facility")
6119 (description "Straight Plugin provides a type of plugin you can create from
6120almost any existing Python modules, and an easy way for outside developers to
6121add functionality and customization to your projects with their own plugins.")
6122 (license license:expat)))
6123
6124(define-public python2-straight-plugin
6125 (package-with-python2 python-straight-plugin))
6126
d582eaac
SB
6127(define-public python-fonttools
6128 (package
6129 (name "python-fonttools")
6130 (version "2.5")
6131 (source (origin
6132 (method url-fetch)
6133 (uri (string-append
6134 "https://pypi.python.org/packages/source/F/FontTools/"
6135 "fonttools-" version ".tar.gz"))
6136 (sha256
6137 (base32
6138 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
6139 (build-system python-build-system)
9e8c6a37
HG
6140 (arguments
6141 '(#:test-target "check"
6142 #:phases
6143 (modify-phases %standard-phases
6144 (add-after 'unpack 'patch-setuppy
6145 ;; Remove the undocumented "extra_path" argument, which adds an
6146 ;; intervening directories between site-packages and the package
6147 ;; directory.
6148 (lambda _
6149 (substitute* "setup.py"
6150 (("^[ \t]*extra_path *= *'FontTools',") ""))
6151 #t)))))
d582eaac
SB
6152 (home-page "http://github.com/behdad/fonttools")
6153 (synopsis "Tools to manipulate font files")
6154 (description
6155 "FontTools/TTX is a library to manipulate font files from Python. It
9e8c6a37 6156supports reading and writing of TrueType/OpenType fonts, reading and writing
d582eaac
SB
6157of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
6158also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
6159from an XML-based format.")
3f641af0
DC
6160 (license (license:non-copyleft
6161 "file://LICENSE.txt"
6162 "See LICENSE.txt in the distribution."))))
d582eaac
SB
6163
6164(define-public python2-fonttools
6165 (package-with-python2 python-fonttools))
75710da6 6166
5faa5ce4
RW
6167(define-public python-ly
6168 (package
6169 (name "python-ly")
5135354f 6170 (version "0.9.4")
5faa5ce4
RW
6171 (source
6172 (origin
6173 (method url-fetch)
5135354f
RW
6174 (uri (string-append "https://pypi.python.org/packages/57/4f/"
6175 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
6176 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
6177 (sha256
6178 (base32
5135354f 6179 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4 6180 (build-system python-build-system)
5faa5ce4
RW
6181 (synopsis "Tool and library for manipulating LilyPond files")
6182 (description "This package provides a Python library to parse, manipulate
6183or create documents in LilyPond format. A command line program ly is also
6184provided that can be used to do various manipulations with LilyPond files.")
6185 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 6186 (license license:gpl2+)))
7e7b27d9
CR
6187
6188(define-public python-appdirs
6189 (package
6190 (name "python-appdirs")
6191 (version "1.4.0")
6192 (source
6193 (origin
6194 (method url-fetch)
6195 (uri (string-append
6196 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
6197 version
6198 ".tar.gz"))
6199 (sha256
6200 (base32
6201 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
6202 (build-system python-build-system)
7e7b27d9
CR
6203 (home-page "http://github.com/ActiveState/appdirs")
6204 (synopsis
6205 "Determine platform-specific dirs, e.g. a \"user data dir\"")
6206 (description
6207 "This module provides a portable way of finding out where user data
6208should be stored on various operating systems.")
6209 (license license:expat)))
6210
6211(define-public python2-appdirs
6212 (package-with-python2 python-appdirs))
89b2e0b0
LF
6213
6214(define-public python-llfuse
6215 (package
6216 (name "python-llfuse")
e36ace36 6217 (version "1.1.1")
89b2e0b0
LF
6218 (source (origin
6219 (method url-fetch)
6220 (uri (string-append
6221 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6222 "llfuse-" version ".tar.bz2"))
6223 (sha256
6224 (base32
e36ace36 6225 "0v6vj9mb286njgd1szg9hz2qdh5f3vkhsvajripfcqg458av310v"))))
89b2e0b0
LF
6226 (build-system python-build-system)
6227 (inputs
6228 `(("fuse" ,fuse)
6229 ("attr" ,attr)))
6230 (native-inputs
f3b98f4f 6231 `(("pkg-config" ,pkg-config)))
89b2e0b0
LF
6232 (synopsis "Python bindings for FUSE")
6233 (description
6234 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
6235 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 6236 (license license:lgpl2.0+)
cd0569c4 6237 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
6238
6239(define-public python2-llfuse
cd0569c4
LF
6240 (package (inherit (package-with-python2
6241 (strip-python2-variant python-llfuse)))
6242 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
6243
6244;; For attic-0.16
6245(define-public python-llfuse-0.41
6246 (package (inherit python-llfuse)
229b3661 6247 (version "0.41.1")
cd0569c4
LF
6248 (source (origin
6249 (method url-fetch)
6250 (uri (string-append
6251 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6252 "llfuse-" version ".tar.bz2"))
6253 (sha256
6254 (base32
229b3661 6255 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
6256 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
6257 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 6258 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
6259
6260(define-public python-msgpack
6261 (package
6262 (name "python-msgpack")
aed625bd 6263 (version "0.4.8")
641c9871
LF
6264 (source (origin
6265 (method url-fetch)
ae831df4 6266 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
6267 (sha256
6268 (base32
aed625bd 6269 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 6270 (build-system python-build-system)
641c9871
LF
6271 (synopsis "MessagePack (de)serializer")
6272 (description "MessagePack is a fast, compact binary serialization format,
6273suitable for similar data to JSON. This package provides CPython bindings for
6274reading and writing MessagePack data.")
6275 (home-page "https://pypi.python.org/pypi/msgpack-python/")
f210e944 6276 (license license:asl2.0)))
bd74be7b
LF
6277
6278(define-public python2-msgpack
f210e944 6279 (package-with-python2 python-msgpack))
641c9871 6280
6e5e39f4
CR
6281(define-public python-netaddr
6282 (package
6283 (name "python-netaddr")
6284 (version "0.7.18")
6285 (source
6286 (origin
6287 (method url-fetch)
6288 (uri (string-append
6289 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
6290 version
6291 ".tar.gz"))
6292 (sha256
6293 (base32
6294 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
6295 (build-system python-build-system)
6296 (arguments `(#:tests? #f)) ;; No tests.
6e5e39f4
CR
6297 (home-page "https://github.com/drkjam/netaddr/")
6298 (synopsis "Pythonic manipulation of network addresses")
6299 (description
6300 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
6301and MAC network addresses.")
3f641af0 6302 (license license:bsd-3)))
6e5e39f4
CR
6303
6304(define-public python2-netaddr
6305 (package-with-python2 python-netaddr))
8c692a52
CR
6306
6307(define-public python-wrapt
6308 (package
6309 (name "python-wrapt")
6310 (version "1.10.5")
6311 (source
6312 (origin
6313 (method url-fetch)
6314 (uri (string-append
6315 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
6316 version
6317 ".tar.gz"))
6318 (sha256
6319 (base32
6320 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
6321 (build-system python-build-system)
6322 (arguments
6323 ;; Tests are not included in the tarball, they are only available in the
6324 ;; git repository.
6325 `(#:tests? #f))
8c692a52
CR
6326 (home-page "https://github.com/GrahamDumpleton/wrapt")
6327 (synopsis "Module for decorators, wrappers and monkey patching")
6328 (description
6329 "The aim of the wrapt module is to provide a transparent object proxy for
6330 Python, which can be used as the basis for the construction of function
6331 wrappers and decorator functions.")
3f641af0 6332 (license license:bsd-2)))
8c692a52
CR
6333
6334(define-public python2-wrapt
6335 (package-with-python2 python-wrapt))
b85c85be
CR
6336
6337(define-public python-iso8601
6338 (package
6339 (name "python-iso8601")
fe84bc9a 6340 (version "0.1.11")
b85c85be
CR
6341 (source
6342 (origin
6343 (method url-fetch)
fe84bc9a 6344 (uri (pypi-uri "iso8601" version))
b85c85be 6345 (sha256
fe84bc9a
EF
6346 (base32
6347 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be 6348 (build-system python-build-system)
b85c85be
CR
6349 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
6350 (synopsis "Module to parse ISO 8601 dates")
6351 (description
6352 "This module parses the most common forms of ISO 8601 date strings (e.g.
6353@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
6354 (license license:expat)))
6355
6356(define-public python2-iso8601
6357 (package-with-python2 python-iso8601))
5e412b63
CR
6358
6359(define-public python-monotonic
6360 (package
6361 (name "python-monotonic")
6362 (version "0.3")
6363 (source
6364 (origin
6365 (method url-fetch)
6366 (uri (string-append
6367 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
6368 version
6369 ".tar.gz"))
6370 (sha256
6371 (base32
6372 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
6373 (build-system python-build-system)
5e412b63
CR
6374 (home-page "https://github.com/atdt/monotonic")
6375 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
6376 (description
6377 "This module provides a monotonic() function which returns the value (in
6378fractional seconds) of a clock which never goes backwards.")
3f641af0 6379 (license license:asl2.0)))
5e412b63
CR
6380
6381(define-public python2-monotonic
6382 (package-with-python2 python-monotonic))
de34afac
CR
6383
6384(define-public python-webob
6385 (package
6386 (name "python-webob")
b8834c21 6387 (version "1.5.1")
de34afac
CR
6388 (source
6389 (origin
6390 (method url-fetch)
b8834c21 6391 (uri (pypi-uri "WebOb" version))
de34afac
CR
6392 (sha256
6393 (base32
b8834c21 6394 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac 6395 (build-system python-build-system)
328bb95d 6396 (native-inputs
f3b98f4f 6397 `(("python-nose" ,python-nose)))
de34afac
CR
6398 (home-page "http://webob.org/")
6399 (synopsis "WSGI request and response object")
6400 (description
6401 "WebOb provides wrappers around the WSGI request environment, and an
6402object to help create WSGI responses.")
6403 (license license:expat)))
6404
6405(define-public python2-webob
6406 (package-with-python2 python-webob))
350ba0a3 6407
02a8a187
BW
6408(define-public python-xlrd
6409 (package
6410 (name "python-xlrd")
c2ad4d70 6411 (version "1.0.0")
02a8a187
BW
6412 (source (origin
6413 (method url-fetch)
e775f48e 6414 (uri (pypi-uri "xlrd" version))
02a8a187
BW
6415 (sha256
6416 (base32
c2ad4d70 6417 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
02a8a187
BW
6418 (build-system python-build-system)
6419 (arguments
6420 `(#:phases
6421 (modify-phases %standard-phases
c2ad4d70 6422 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
02a8a187
BW
6423 ;; run tests instead for now.
6424 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
f3b98f4f 6425 (native-inputs `(("python-nose" ,python-nose)))
02a8a187
BW
6426 (home-page "http://www.python-excel.org/")
6427 (synopsis "Library for extracting data from Excel files")
6428 (description "This packages provides a library to extract data from
c598e35c 6429spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
6430@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
6431Unicode-aware. It is not intended as an end-user tool.")
3f641af0 6432 (license license:bsd-3)))
02a8a187
BW
6433
6434(define-public python2-xlrd
6435 (package-with-python2 python-xlrd))
6436
350ba0a3
CR
6437(define-public python-prettytable
6438 (package
6439 (name "python-prettytable")
6440 (version "0.7.2")
6441 (source
6442 (origin
6443 (method url-fetch)
6444 (uri (string-append
6445 "https://pypi.python.org/packages/source/P/PrettyTable/"
6446 "prettytable-" version ".tar.bz2"))
6447 (sha256
6448 (base32
6449 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
6450 (build-system python-build-system)
350ba0a3
CR
6451 (home-page "http://code.google.com/p/prettytable/")
6452 (synopsis "Display tabular data in an ASCII table format")
6453 (description
6454 "A library designed to represent tabular data in visually appealing ASCII
6455tables. PrettyTable allows for selection of which columns are to be printed,
6456independent alignment of columns (left or right justified or centred) and
6457printing of sub-tables by specifying a row range.")
3f641af0 6458 (license license:bsd-3)))
350ba0a3
CR
6459
6460(define-public python2-prettytable
6461 (package-with-python2 python-prettytable))
7a8ac75a 6462
9f8ee3fe
RW
6463(define-public python-tables
6464 (package
6465 (name "python-tables")
6466 (version "3.2.2")
6467 (source
6468 (origin
6469 (method url-fetch)
6470 (uri (pypi-uri "tables" version))
6471 (sha256
6472 (base32
bac23672
HG
6473 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
6474 (modules '((guix build utils)))
6475 (snippet
6476 '(begin
6477 ;; Remove pre-compiled .pyc files from source.
6478 (for-each delete-file-recursively
6479 (find-files "." "__pycache__" #:directories? #t))
6480 (for-each delete-file (find-files "." "\\.pyc$"))
6481 #t))))
9f8ee3fe
RW
6482 (build-system python-build-system)
6483 (arguments
6484 `(;; FIXME: python-build-system does not pass configure-flags to "build"
6485 ;; or "check", so we must override the build and check phases.
6486 #:phases
6487 (modify-phases %standard-phases
6488 (add-after 'unpack 'use-gcc
6489 (lambda _
6490 (substitute* "setup.py"
6491 (("compiler = new_compiler\\(\\)" line)
6492 (string-append line
6493 "\ncompiler.set_executables(compiler='gcc',"
6494 "compiler_so='gcc',"
6495 "linker_exe='gcc',"
6496 "linker_so='gcc -shared')")))
6497 #t))
6498 (replace 'build
6499 (lambda* (#:key inputs #:allow-other-keys)
6500 (zero? (system* "python" "setup.py" "build"
6501 (string-append "--hdf5="
6502 (assoc-ref inputs "hdf5"))))))
6503 (replace 'check
6504 (lambda* (#:key inputs #:allow-other-keys)
6505 (zero? (system* "python" "setup.py" "check"
6506 (string-append "--hdf5="
6507 (assoc-ref inputs "hdf5")))))))))
6508 (propagated-inputs
6509 `(("python-numexpr" ,python-numexpr)
6510 ("python-numpy" ,python-numpy)))
6511 (native-inputs
f3b98f4f 6512 `(("python-cython" ,python-cython)
9f8ee3fe
RW
6513 ("pkg-config" ,pkg-config)))
6514 (inputs
6515 `(("hdf5" ,hdf5)
6516 ("bzip2" ,bzip2)
6517 ("zlib" ,zlib)))
6518 (home-page "http://www.pytables.org/")
6519 (synopsis "Hierarchical datasets for Python")
6520 (description "PyTables is a package for managing hierarchical datasets and
6521designed to efficently cope with extremely large amounts of data.")
3f641af0 6522 (license license:bsd-3)))
9f8ee3fe
RW
6523
6524(define-public python2-tables
6525 (package-with-python2 python-tables))
6526
7a8ac75a
RW
6527(define-public python-pyasn1
6528 (package
6529 (name "python-pyasn1")
caa0edb3 6530 (version "0.1.9")
7a8ac75a
RW
6531 (source
6532 (origin
6533 (method url-fetch)
caa0edb3 6534 (uri (pypi-uri "pyasn1" version))
7a8ac75a
RW
6535 (sha256
6536 (base32
caa0edb3 6537 "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"))))
7a8ac75a
RW
6538 (build-system python-build-system)
6539 (home-page "http://pyasn1.sourceforge.net/")
6540 (synopsis "ASN.1 types and codecs")
6541 (description
6542 "This is an implementation of ASN.1 types and codecs in Python. It is
6543suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 6544 (license license:bsd-2)))
7a8ac75a
RW
6545
6546(define-public python2-pyasn1
6547 (package-with-python2 python-pyasn1))
9a49a535 6548
5988c299
EF
6549(define-public python-pyasn1-modules
6550 (package
6551 (name "python-pyasn1-modules")
6552 (version "0.0.8")
6553 (source
6554 (origin
6555 (method url-fetch)
6556 (uri (pypi-uri "pyasn1-modules" version))
6557 (sha256
6558 (base32
6559 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
6560 (build-system python-build-system)
5988c299
EF
6561 (propagated-inputs
6562 `(("python-pyasn1" ,python-pyasn1)))
6563 (home-page "http://sourceforge.net/projects/pyasn1/")
6564 (synopsis "ASN.1 codec implementations")
6565 (description
6566 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
6567implementations of ASN.1-based codecs and protocols.")
3f641af0 6568 (license license:bsd-3)))
5988c299
EF
6569
6570(define-public python2-pyasn1-modules
6571 (package-with-python2 python-pyasn1-modules))
6572
520af157 6573(define-public python-ipaddress
9a49a535 6574 (package
520af157
DC
6575 (name "python-ipaddress")
6576 (version "1.0.16")
6577 (source (origin
6578 (method url-fetch)
6579 (uri (pypi-uri "ipaddress" version))
6580 (sha256
6581 (base32
6582 "1c3imabdrw8nfksgjjflzg7h4ynjckqacb188rf541m74arq4cas"))))
9a49a535 6583 (build-system python-build-system)
9a49a535
RW
6584 (home-page "https://github.com/phihag/ipaddress")
6585 (synopsis "IP address manipulation library")
6586 (description
520af157
DC
6587 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
6588 in Python. This library is used to create, poke at, and manipulate IPv4 and
6589 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
6590 module to older versions of Python.")
f210e944 6591 (license license:psfl)))
520af157
DC
6592
6593(define-public python2-ipaddress
f210e944 6594 (package-with-python2 python-ipaddress))
3f00e078 6595
4a238186
HG
6596(define-public python2-ipaddr
6597 (package
6598 (name "python2-ipaddr")
6599 (version "2.1.11")
6600 (source
6601 (origin
6602 (method url-fetch)
6603 (uri (pypi-uri "ipaddr" version))
6604 (sha256
6605 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
6606 (build-system python-build-system)
6607 (arguments
6608 `(#:python ,python-2 ;version 2 only
6609 #:phases
6610 (modify-phases %standard-phases
6611 (replace 'check
6612 (lambda* _
6613 (zero? (system* "python" "ipaddr_test.py")))))))
6614 (home-page "https://github.com/google/ipaddr-py")
6615 (synopsis "IP address manipulation library")
6616 (description
6617 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
6618IPv6 addresses and networks.
6619
6620For new implementations you may prefer to use the standard module
6621@code{ipaddress}, which was introduced in Python 3.3 and backported to older
6622versions of Python.")
3f641af0 6623 (license license:asl2.0)))
4a238186 6624
3f00e078
RW
6625(define-public python-idna
6626 (package
6627 (name "python-idna")
6628 (version "2.0")
6629 (source
6630 (origin
6631 (method url-fetch)
6632 (uri (string-append "https://pypi.python.org/packages/source/i/"
6633 "idna/idna-" version ".tar.gz"))
6634 (sha256
6635 (base32
6636 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
6637 (build-system python-build-system)
3f00e078
RW
6638 (home-page "https://github.com/kjd/idna")
6639 (synopsis "Internationalized domain names in applications")
6640 (description
6641 "This is a library to support the Internationalised Domain Names in
6642Applications (IDNA) protocol as specified in RFC 5891. This version of the
6643protocol is often referred to as “IDNA2008” and can produce different results
6644from the earlier standard from 2003. The library is also intended to act as a
6645suitable drop-in replacement for the “encodings.idna” module that comes with
6646the Python standard library but currently only supports the older 2003
6647specification.")
3f641af0 6648 (license license:bsd-4)))
3f00e078
RW
6649
6650(define-public python2-idna
6651 (package-with-python2 python-idna))
36ebf972
RW
6652
6653(define-public python-pretend
6654 (package
6655 (name "python-pretend")
6656 (version "1.0.8")
6657 (source
6658 (origin
6659 (method url-fetch)
6660 (uri (string-append "https://pypi.python.org/packages/source/p/"
6661 "pretend/pretend-" version ".tar.gz"))
6662 (sha256
6663 (base32
6664 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
6665 (build-system python-build-system)
36ebf972
RW
6666 (home-page "https://github.com/alex/pretend")
6667 (synopsis "Library for stubbing in Python")
6668 (description
6669 "Pretend is a library to make stubbing with Python easier. Stubbing is a
6670technique for writing tests. You may hear the term mixed up with mocks,
6671fakes, or doubles. Basically, a stub is an object that returns pre-canned
6672responses, rather than doing any computation.")
3f641af0 6673 (license license:bsd-3)))
36ebf972
RW
6674
6675(define-public python2-pretend
6676 (package-with-python2 python-pretend))
aa759a51
RW
6677
6678(define-public python-cryptography-vectors
6679 (package
6680 (name "python-cryptography-vectors")
27fab2bf 6681 (version "1.7.1")
aa759a51
RW
6682 (source
6683 (origin
6684 (method url-fetch)
9c509ca9 6685 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
6686 (sha256
6687 (base32
27fab2bf 6688 "1x2mz4wggja5ih45c6cw0kzyad4jr8avg327dawjr1gnpdq1psa7"))))
aa759a51 6689 (build-system python-build-system)
aa759a51 6690 (home-page "https://github.com/pyca/cryptography")
66e07664 6691 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
6692 (description
6693 "This package contains test vectors for the cryptography package.")
6694 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6695 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
6696
6697(define-public python2-cryptography-vectors
6698 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
6699
6700(define-public python-cryptography
6701 (package
6702 (name "python-cryptography")
27fab2bf 6703 (version "1.7.1")
88b47cb0
RW
6704 (source
6705 (origin
6706 (method url-fetch)
9c509ca9 6707 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
6708 (sha256
6709 (base32
27fab2bf 6710 "0k6v7wq4h0yk9r0x0bl2x9fyrg4a6gj5qp4m9mgpk6m481yyygwm"))))
88b47cb0
RW
6711 (build-system python-build-system)
6712 (inputs
6713 `(("openssl" ,openssl)))
6714 (propagated-inputs
6715 `(("python-cffi" ,python-cffi)
6716 ("python-six" ,python-six)
6717 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
6718 ("python-idna" ,python-idna)
6719 ("python-iso8601" ,python-iso8601)))
6720 (native-inputs
6721 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 6722 ("python-hypothesis" ,python-hypothesis)
88b47cb0 6723 ("python-pretend" ,python-pretend)
ce6c13ee
EF
6724 ("python-pyasn1" ,python-pyasn1)
6725 ("python-pyasn1-modules" ,python-pyasn1-modules)
912dcbad
MB
6726 ("python-pytz" ,python-pytz)
6727 ("python-pytest" ,python-pytest-2.9.2)))
88b47cb0
RW
6728 (home-page "https://github.com/pyca/cryptography")
6729 (synopsis "Cryptographic recipes and primitives for Python")
6730 (description
6731 "cryptography is a package which provides cryptographic recipes and
6732primitives to Python developers. It aims to be the “cryptographic standard
6733library” for Python. The package includes both high level recipes, and low
6734level interfaces to common cryptographic algorithms such as symmetric ciphers,
6735message digests and key derivation functions.")
6736 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6737 (license (list license:bsd-3 license:asl2.0))
519e2f4f 6738 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
6739
6740(define-public python2-cryptography
519e2f4f
LF
6741 (let ((crypto (package-with-python2
6742 (strip-python2-variant python-cryptography))))
88b47cb0
RW
6743 (package (inherit crypto)
6744 (propagated-inputs
6745 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
6746 ("python2-backport-ssl-match-hostname"
6747 ,python2-backport-ssl-match-hostname)
68f1cdec 6748 ("python2-enum34" ,python2-enum34)
88b47cb0 6749 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
6750
6751(define-public python-pyopenssl
6752 (package
6753 (name "python-pyopenssl")
61684de2 6754 (version "16.2.0")
5af999b8
RW
6755 (source
6756 (origin
6757 (method url-fetch)
eb68d268 6758 (uri (pypi-uri "pyOpenSSL" version))
5af999b8
RW
6759 (sha256
6760 (base32
61684de2 6761 "0vji4yrfshs15xpczbhzhasnjrwcarsqg87n98ixnyafnyxs6ybp"))))
5af999b8 6762 (build-system python-build-system)
5af999b8
RW
6763 (propagated-inputs
6764 `(("python-cryptography" ,python-cryptography)
6765 ("python-six" ,python-six)))
6766 (inputs
6767 `(("openssl" ,openssl)))
5af999b8
RW
6768 (home-page "https://github.com/pyca/pyopenssl")
6769 (synopsis "Python wrapper module around the OpenSSL library")
6770 (description
6771 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
6772library.")
3f641af0 6773 (license license:asl2.0)))
5af999b8
RW
6774
6775(define-public python2-pyopenssl
519e2f4f 6776 (package-with-python2 python-pyopenssl))
643725a1
CR
6777
6778(define-public python-pip
6779 (package
6780 (name "python-pip")
6fb54e3b 6781 (version "8.0.2")
643725a1
CR
6782 (source
6783 (origin
6784 (method url-fetch)
6fb54e3b 6785 (uri (pypi-uri "pip" version))
643725a1
CR
6786 (sha256
6787 (base32
6fb54e3b 6788 "08cm8d4228fj0qnrysy3qv1a6022zr3dcs25amd14lgxil6vvx26"))))
643725a1 6789 (build-system python-build-system)
05e2e4cf
HG
6790 (native-inputs
6791 `(;; Tests
6792 ("python-virtualenv" ,python-virtualenv)
643725a1
CR
6793 ("python-mock" ,python-mock)
6794 ("python-pytest" ,python-pytest)
6795 ("python-scripttest" ,python-scripttest)))
6796 (home-page "https://pip.pypa.io/")
6797 (synopsis
6798 "Package manager for Python software")
6799 (description
6800 "Pip is a package manager for Python software, that finds packages on the
6801Python Package Index (PyPI).")
6802 (license license:expat)))
6803
6804(define-public python2-pip
6805 (package-with-python2 python-pip))
d8c4998f
LC
6806
6807(define-public python-tlsh
6808 (package
6809 (name "python-tlsh")
99b00dc7 6810 (version "3.4.4")
d8c4998f
LC
6811 (home-page "https://github.com/trendmicro/tlsh")
6812 (source (origin
99b00dc7
EF
6813 (method url-fetch)
6814 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
6815 version ".tar.gz"))
d8c4998f
LC
6816 (sha256
6817 (base32
99b00dc7
EF
6818 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
6819 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
6820 (build-system cmake-build-system)
6821 (arguments
6822 '(#:out-of-source? #f
6823 #:phases (modify-phases %standard-phases
6824 (replace
6825 'install
6826 (lambda* (#:key outputs #:allow-other-keys)
6827 ;; Build and install the Python bindings. The underlying
6828 ;; C++ library is apparently not meant to be installed.
6829 (let ((out (assoc-ref outputs "out")))
6830 (with-directory-excursion "py_ext"
6831 (and (system* "python" "setup.py" "build")
6832 (system* "python" "setup.py" "install"
6833 (string-append "--prefix=" out))))))))))
6834 (inputs `(("python" ,python-wrapper))) ;for the bindings
6835 (synopsis "Fuzzy matching library for Python")
6836 (description
6837 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
6838Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
6839value which can be used for similarity comparisons. Similar objects have
6840similar hash values, which allows for the detection of similar objects by
6841comparing their hash values. The byte stream should have a sufficient amount
6842of complexity; for example, a byte stream of identical bytes will not generate
6843a hash value.")
3f641af0 6844 (license license:asl2.0)))
d8c4998f
LC
6845
6846(define-public python2-tlsh
6847 (package
6848 (inherit python-tlsh)
6849 (name "python2-tlsh")
6850 (inputs `(("python" ,python-2)))))
d96034ed 6851
67f66812
BW
6852(define-public python-termcolor
6853 (package
6854 (name "python-termcolor")
6855 (version "1.1.0")
6856 (source
6857 (origin
6858 (method url-fetch)
6859 (uri (pypi-uri "python-termcolor" version))
6860 (sha256
6861 (base32
6862 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
6863 (build-system python-build-system)
6864 (arguments
6865 ;; There are no tests.
6866 `(#:tests? #f))
6867 (home-page "http://pypi.python.org/pypi/termcolor")
6868 (synopsis "ANSII Color formatting for terminal output")
6869 (description
6870 "This package provides ANSII Color formatting for output in terminals.")
6871 (license license:expat)))
6872
6873(define-public python2-termcolor
6874 (package-with-python2 python-termcolor))
6875
d96034ed
LC
6876(define-public python-libarchive-c
6877 (package
6878 (name "python-libarchive-c")
03fd001c 6879 (version "2.2")
d96034ed
LC
6880 (source (origin
6881 (method url-fetch)
03fd001c 6882 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
6883 (sha256
6884 (base32
03fd001c 6885 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
6886 (build-system python-build-system)
6887 (arguments
6888 '(#:phases (modify-phases %standard-phases
6889 (add-before
6890 'build 'reference-libarchive
6891 (lambda* (#:key inputs #:allow-other-keys)
6892 ;; Retain the absolute file name of libarchive.so.
6893 (let ((libarchive (assoc-ref inputs "libarchive")))
6894 (substitute* "libarchive/ffi.py"
6895 (("find_library\\('archive'\\)")
6896 (string-append "'" libarchive
b41a05ce 6897 "/lib/libarchive.so'")))))))))
d96034ed 6898 (inputs
f3b98f4f 6899 `(("libarchive" ,libarchive)))
d96034ed
LC
6900 (home-page "https://github.com/Changaco/python-libarchive-c")
6901 (synopsis "Python interface to libarchive")
6902 (description
6903 "This package provides Python bindings to libarchive, a C library to
6904access possibly compressed archives in many different formats. It uses
6905Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 6906 (license license:lgpl2.0+)))
d96034ed
LC
6907
6908(define-public python2-libarchive-c
6909 (package-with-python2 python-libarchive-c))
5e1c9367
LC
6910
6911(define-public python-file
6912 (package
6913 (inherit file)
6914 (name "python-file")
7ffa5d4a
LF
6915 (source (origin
6916 (inherit (package-source file))
6917 ;; This patch should not be applied to python2-file.
6918 (patches (search-patches "python-file-double-encoding-bug.patch"))))
5e1c9367
LC
6919 (build-system python-build-system)
6920 (arguments
6921 '(#:tests? #f ;no tests
00bf74be 6922 #:configure-flags '("--single-version-externally-managed" "--root=/")
5e1c9367
LC
6923 #:phases (modify-phases %standard-phases
6924 (add-before 'build 'change-directory
6925 (lambda _
6926 (chdir "python")
6927 #t))
6928 (add-before 'build 'set-library-file-name
6929 (lambda* (#:key inputs #:allow-other-keys)
6930 (let ((file (assoc-ref inputs "file")))
6931 (substitute* "magic.py"
6932 (("find_library\\('magic'\\)")
6933 (string-append "'" file "/lib/libmagic.so'")))
6934 #t))))))
6935 (inputs `(("file" ,file)))
6936 (self-native-input? #f)
daeeea71
CM
6937 (synopsis "Python bindings to the libmagic file type guesser. Note that
6938this module and the python-magic module both provide a \"magic.py\" file;
6939these two modules, which are different and were developed separately, both
f210e944 6940serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
6941
6942(define-public python2-file
f210e944 6943 (package-with-python2 python-file))
85d4aeac
LC
6944
6945(define-public python-debian
6946 (package
6947 (name "python-debian")
6948 (version "0.1.23")
6949 (source
6950 (origin
6951 (method url-fetch)
6952 (uri (string-append
6953 "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
6954 version ".tar.gz"))
6955 (sha256
6956 (base32
6957 "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
6958 (build-system python-build-system)
f22efa01 6959 (propagated-inputs
85d4aeac 6960 `(("python-six" ,python-six)))
85d4aeac
LC
6961 (home-page "http://packages.debian.org/sid/python-debian")
6962 (synopsis "Debian package related modules")
6963 (description
5c7bdc9a
LC
6964 ;; XXX: Use @enumerate instead of @itemize to work around
6965 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
6966 "This package provides Python modules that abstract many formats of
6967Debian-related files, such as:
6968
5c7bdc9a 6969@enumerate
85d4aeac
LC
6970@item Debtags information;
6971@item @file{debian/changelog} files;
6972@item packages files, pdiffs;
6973@item control files of single or multiple RFC822-style paragraphs---e.g.
6974 @file{debian/control}, @file{.changes}, @file{.dsc};
6975@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
6976 contained files and meta-information.
5c7bdc9a 6977@end enumerate\n")
85d4aeac
LC
6978
6979 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 6980 (license license:gpl3+)))
85d4aeac
LC
6981
6982(define-public python2-debian
6983 (package-with-python2 python-debian))
816a6538 6984
2d321bb2
RW
6985(define-public python-nbformat
6986 (package
6987 (name "python-nbformat")
6988 (version "4.1.0")
6989 (source
6990 (origin
6991 (method url-fetch)
6992 (uri (pypi-uri "nbformat" version))
6993 (sha256
6994 (base32
6995 "0mq8iki3d4mnx7wy05phss7x98mds4fqydin8lcagidp1knw1xnv"))))
6996 (build-system python-build-system)
6997 (arguments `(#:tests? #f)) ; no test target
6998 (propagated-inputs
6999 `(("python-ipython-genutils" ,python-ipython-genutils)
7000 ("python-jsonschema" ,python-jsonschema)
7001 ("python-jupyter-core" ,python-jupyter-core)
7002 ("python-traitlets" ,python-traitlets)))
2d321bb2
RW
7003 (home-page "http://jupyter.org")
7004 (synopsis "Jupyter Notebook format")
7005 (description "This package provides the reference implementation of the
7006Jupyter Notebook format and Python APIs for working with notebooks.")
7007 (license license:bsd-3)))
7008
7009(define-public python2-nbformat
7010 (package-with-python2 python-nbformat))
7011
55436048
RW
7012(define-public python-bleach
7013 (package
7014 (name "python-bleach")
7015 (version "1.4.3")
7016 (source
7017 (origin
7018 (method url-fetch)
7019 (uri (pypi-uri "bleach" version))
7020 (sha256
7021 (base32
7022 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
7023 (build-system python-build-system)
7024 (propagated-inputs
7025 `(("python-html5lib" ,python-html5lib-0.9)
55436048
RW
7026 ("python-six" ,python-six)))
7027 (native-inputs
7028 `(("python-nose" ,python-nose)))
7029 (home-page "http://github.com/jsocol/bleach")
7030 (synopsis "Whitelist-based HTML-sanitizing tool")
7031 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
7032 (license license:asl2.0)))
7033
7034(define-public python2-bleach
7035 (package-with-python2 python-bleach))
7036
60590a3a
RW
7037(define-public python-entrypoints
7038 (package
7039 (name "python-entrypoints")
7040 (version "0.2.2")
7041 (source
7042 (origin
7043 (method url-fetch)
7044 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
7045 version ".tar.gz"))
7046 (file-name (string-append name "-" version ".tar.gz"))
7047 (sha256
7048 (base32
7049 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
7050 (build-system python-build-system)
7051 ;; The package does not come with a setup.py file, so we have to generate
7052 ;; one ourselves.
7053 (arguments
7054 `(#:tests? #f
7055 #:phases
7056 (modify-phases %standard-phases
7057 (add-after 'unpack 'create-setup.py
7058 (lambda _
7059 (call-with-output-file "setup.py"
7060 (lambda (port)
7061 (format port "\
7062from setuptools import setup
7063setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
7064" ,version))))))))
7065 (home-page "https://github.com/takluyver/entrypoints")
7066 (synopsis "Discover and load entry points from installed Python packages")
7067 (description "Entry points are a way for Python packages to advertise
7068objects with some common interface. The most common examples are
7069@code{console_scripts} entry points, which define shell commands by
7070identifying a Python function to run. The @code{entrypoints} module contains
7071functions to find and load entry points.")
7072 (license license:expat)))
7073
7074(define-public python2-entrypoints
7075 (package-with-python2 python-entrypoints))
7076
c60898a8
RW
7077(define-public python-nbconvert
7078 (package
7079 (name "python-nbconvert")
7080 (version "5.0.0b1")
7081 (source
7082 (origin
7083 (method url-fetch)
7084 (uri (pypi-uri "nbconvert" version))
7085 (sha256
7086 (base32
7087 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
7088 (build-system python-build-system)
7089 ;; The "bdist_egg" target is disabled by default, causing the installation
7090 ;; to fail.
7091 (arguments `(#:configure-flags (list "bdist_egg")))
7092 (propagated-inputs
7093 `(("python-bleach" ,python-bleach)
7094 ("python-entrypoints" ,python-entrypoints)
7095 ("python-jinja2" ,python-jinja2)
7096 ("python-jupyter-core" ,python-jupyter-core)
7097 ("python-mistune" ,python-mistune)
7098 ("python-nbformat" ,python-nbformat)
7099 ("python-pygments" ,python-pygments)
c60898a8
RW
7100 ("python-traitlets" ,python-traitlets)))
7101 (home-page "http://jupyter.org")
7102 (synopsis "Converting Jupyter Notebooks")
7103 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
7104notebooks to various other formats via Jinja templates. It allows you to
7105convert an @code{.ipynb} notebook file into various static formats including:
7106
7107@enumerate
7108@item HTML
7109@item LaTeX
7110@item PDF
7111@item Reveal JS
7112@item Markdown (md)
7113@item ReStructured Text (rst)
7114@item executable script
7115@end enumerate\n")
7116 (license license:bsd-3)))
7117
7118(define-public python2-nbconvert
7119 (package-with-python2 python-nbconvert))
7120
a0d62280
RW
7121(define-public python-notebook
7122 (package
7123 (name "python-notebook")
7124 (version "4.2.3")
7125 (source (origin
7126 (method url-fetch)
7127 (uri (pypi-uri "notebook" version))
7128 (sha256
7129 (base32
7130 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
7131 (build-system python-build-system)
7132 (arguments
7133 `(#:phases
7134 (modify-phases %standard-phases
7135 (replace 'check
7136 (lambda _
7137 ;; HOME must be set for tests
7138 (setenv "HOME" "/tmp")
7139 (zero? (system* "nosetests")))))))
7140 (propagated-inputs
7141 `(("python-jupyter-core" ,python-jupyter-core)
7142 ("python-nbformat" ,python-nbformat)
7143 ("python-nbconvert" ,python-nbconvert)
7144 ("python-ipython" ,python-ipython)))
7145 (native-inputs
7146 `(("python-nose" ,python-nose)
7147 ("python-sphinx" ,python-sphinx)
7148 ("python-requests" ,python-requests)))
7149 (home-page "http://jupyter.org/")
7150 (synopsis "Web-based notebook environment for interactive computing")
7151 (description
7152 "The Jupyter HTML notebook is a web-based notebook environment for
7153interactive computing.")
3a735ecf 7154 (properties `((python2-variant . ,(delay python2-notebook))))
a0d62280
RW
7155 (license license:bsd-3)))
7156
7157(define-public python2-notebook
3a735ecf
HG
7158 (let ((base (package-with-python2
7159 (strip-python2-variant python-notebook))))
7160 (package (inherit base)
7161 (native-inputs
7162 `(("python2-mock" ,python2-mock)
7163 ,@(package-native-inputs base)))
7164 (arguments
7165 (substitute-keyword-arguments (package-arguments base)
7166 ((#:phases phases)
7167 `(modify-phases ,phases
7168 (add-before 'check 'disable-test-case
7169 ;; The test requires network access to localhost. Curiously it
7170 ;; fails with Python 2 only. Simply make the test-case return
7171 ;; immediately.
7172 (lambda _
7173 (substitute*
7174 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
7175 (("formats = self.nbconvert_api") "return #")))))))))))
a0d62280 7176
d55724ed
RW
7177(define-public python-widgetsnbextension
7178 (package
7179 (name "python-widgetsnbextension")
7180 (version "1.2.6")
7181 (source
7182 (origin
7183 (method url-fetch)
7184 (uri (pypi-uri "widgetsnbextension" version))
7185 (sha256
7186 (base32
7187 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
7188 (build-system python-build-system)
7189 (propagated-inputs
7190 `(("python-notebook" ,python-notebook)))
7191 (native-inputs
f3b98f4f 7192 `(("python-nose" ,python-nose)))
d55724ed
RW
7193 (home-page "http://ipython.org")
7194 (synopsis "IPython HTML widgets for Jupyter")
7195 (description "This package provides interactive HTML widgets for Jupyter
7196notebooks.")
7197 (license license:bsd-3)))
7198
7199(define-public python2-widgetsnbextension
7200 (package-with-python2 python-widgetsnbextension))
7201
4fe2e344
RW
7202(define-public python-ipywidgets
7203 (package
7204 (name "python-ipywidgets")
7205 (version "5.2.2")
7206 (source
7207 (origin
7208 (method url-fetch)
7209 (uri (pypi-uri "ipywidgets" version))
7210 (sha256
7211 (base32
7212 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
7213 (build-system python-build-system)
7214 ;; FIXME: it's not clear how to run the tests.
7215 (arguments `(#:tests? #f))
7216 (propagated-inputs
7217 `(("python-ipykernel" ,python-ipykernel)
7218 ("python-ipython" ,python-ipython)
4fe2e344
RW
7219 ("python-traitlets" ,python-traitlets)
7220 ("python-widgetsnbextension" ,python-widgetsnbextension)))
7221 (home-page "http://ipython.org")
7222 (synopsis "IPython HTML widgets for Jupyter")
7223 (description "Ipywidgets are interactive HTML widgets for Jupyter
7224notebooks and the IPython kernel. Notebooks come alive when interactive
7225widgets are used. Users gain control of their data and can visualize changes
7226in the data.")
7227 (license license:bsd-3)))
7228
7229(define-public python2-ipywidgets
7230 (package-with-python2 python-ipywidgets))
7231
8ceebf8f
RW
7232(define-public python-jupyter-console
7233 (package
7234 (name "python-jupyter-console")
7235 (version "5.0.0")
7236 (source
7237 (origin
7238 (method url-fetch)
7239 (uri (pypi-uri "jupyter_console" version))
7240 (sha256
7241 (base32
7242 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
7243 (build-system python-build-system)
7244 ;; FIXME: it's not clear how to run the tests.
7245 (arguments `(#:tests? #f))
7246 (propagated-inputs
7247 `(("python-ipykernel" ,python-ipykernel)
7248 ("python-ipython" ,python-ipython)
7249 ("python-jupyter-client" ,python-jupyter-client)
7250 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 7251 ("python-pygments" ,python-pygments)))
8ceebf8f
RW
7252 (home-page "https://jupyter.org")
7253 (synopsis "Jupyter terminal console")
7254 (description "This package provides a terminal-based console frontend for
7255Jupyter kernels. It also allows for console-based interaction with non-Python
7256Jupyter kernels such as IJulia and IRKernel.")
7257 (license license:bsd-3)))
7258
7259(define-public python2-jupyter-console
7260 (package-with-python2 python-jupyter-console))
7261
c27ae827
RW
7262(define-public jupyter
7263 (package
7264 (name "jupyter")
7265 (version "1.0.0")
7266 (source
7267 (origin
7268 (method url-fetch)
7269 (uri (pypi-uri "jupyter" version))
7270 (sha256
7271 (base32
7272 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
7273 (build-system python-build-system)
7274 ;; FIXME: it's not clear how to run the tests.
7275 (arguments `(#:tests? #f))
7276 (propagated-inputs
7277 `(("python-ipykernel" ,python-ipykernel)
7278 ("python-ipywidgets" ,python-ipywidgets)
7279 ("python-jupyter-console" ,python-jupyter-console)
7280 ("python-nbconvert" ,python-nbconvert)
f3b98f4f 7281 ("python-notebook" ,python-notebook)))
c27ae827
RW
7282 (home-page "http://jupyter.org")
7283 (synopsis "Web application for interactive documents")
7284 (description
7285 "The Jupyter Notebook is a web application that allows you to create and
7286share documents that contain live code, equations, visualizations and
7287explanatory text. Uses include: data cleaning and transformation, numerical
7288simulation, statistical modeling, machine learning and much more.")
7289 (license license:bsd-3)))
7290
816a6538
LC
7291(define-public python-chardet
7292 (package
7293 (name "python-chardet")
7294 (version "2.3.0")
7295 (source
7296 (origin
7297 (method url-fetch)
7298 (uri (string-append
7299 "https://pypi.python.org/packages/source/c/chardet/chardet-"
7300 version
7301 ".tar.gz"))
7302 (sha256
7303 (base32
7304 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
7305 (build-system python-build-system)
816a6538
LC
7306 (home-page "https://github.com/chardet/chardet")
7307 (synopsis "Universal encoding detector for Python 2 and 3")
7308 (description
7309 "This package provides @code{chardet}, a Python module that can
7310automatically detect a wide range of file encodings.")
3f641af0 7311 (license license:lgpl2.1+)))
816a6538
LC
7312
7313(define-public python2-chardet
7314 (package-with-python2 python-chardet))
2fc5f186 7315
1872f1bb
KM
7316(define-public python-docopt
7317 (package
7318 (name "python-docopt")
7319 (version "0.6.2")
7320 (source
7321 (origin
7322 (method url-fetch)
7323 ;; The release on PyPI does not include tests.
7324 (uri (string-append
7325 "https://github.com/docopt/docopt/archive/"
7326 version ".tar.gz"))
7327 (file-name (string-append name "-" version ".tar.gz"))
7328 (sha256
7329 (base32
7330 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
7331 (build-system python-build-system)
7332 (native-inputs
f3b98f4f 7333 `(("python-pytest" ,python-pytest)))
1872f1bb
KM
7334 (arguments
7335 `(#:phases (alist-replace
7336 'check
7337 (lambda _ (zero? (system* "py.test")))
7338 %standard-phases)))
7339 (home-page "http://docopt.org")
7340 (synopsis "Command-line interface description language for Python")
7341 (description "This library allows the user to define a command-line
7342interface from a program's help message rather than specifying it
7343programatically with command-line parsers like @code{getopt} and
7344@code{argparse}.")
7345 (license license:expat)))
7346
7347(define-public python2-docopt
7348 (package-with-python2 python-docopt))
7349
2fc5f186
LF
7350(define-public python-zope-event
7351 (package
7352 (name "python-zope-event")
7353 (version "4.1.0")
7354 (source
7355 (origin
7356 (method url-fetch)
7357 (uri (string-append "https://pypi.python.org/packages/source/z"
7358 "/zope.event/zope.event-" version ".tar.gz"))
7359 (sha256
7360 (base32
7361 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
7362 (build-system python-build-system)
2fc5f186
LF
7363 (home-page "http://pypi.python.org/pypi/zope.event")
7364 (synopsis "Event publishing system for Python")
7365 (description "Zope.event provides an event publishing API, intended for
7366use by applications which are unaware of any subscribers to their events. It
7367is a simple event-dispatching system on which more sophisticated event
7368dispatching systems can be built.")
3f641af0 7369 (license license:zpl2.1)))
2fc5f186
LF
7370
7371(define-public python2-zope-event
7372 (package-with-python2 python-zope-event))
97abe268
LF
7373
7374(define-public python-zope-interface
7375 (package
7376 (name "python-zope-interface")
7377 (version "4.1.3")
7378 (source
7379 (origin
7380 (method url-fetch)
7381 (uri (string-append "https://pypi.python.org/packages/source/z"
7382 "/zope.interface/zope.interface-" version ".tar.gz"))
7383 (sha256
7384 (base32
7385 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
7386 (build-system python-build-system)
38d480a8 7387 (native-inputs
97abe268
LF
7388 `(("python-zope-event" ,python-zope-event)))
7389 (home-page "https://github.com/zopefoundation/zope.interface")
7390 (synopsis "Python implementation of the \"design by contract\"
7391methodology")
7392 (description "Zope.interface provides an implementation of \"object
7393interfaces\" for Python. Interfaces are a mechanism for labeling objects as
7394conforming to a given API or contract.")
3f641af0 7395 (license license:zpl2.1)))
97abe268
LF
7396
7397(define-public python2-zope-interface
7398 (package-with-python2 python-zope-interface))
81f2373c
LF
7399
7400(define-public python-zope-exceptions
7401 (package
7402 (name "python-zope-exceptions")
7403 (version "4.0.8")
7404 (source
7405 (origin
7406 (method url-fetch)
7407 (uri (string-append "https://pypi.python.org/packages/source/z"
7408 "/zope.exceptions/zope.exceptions-"
7409 version ".tar.gz"))
7410 (sha256
7411 (base32
7412 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
7413 (build-system python-build-system)
7414 (arguments
7415 '(#:tests? #f)) ; circular dependency with zope.testrunner
7416 (propagated-inputs
7417 `(("python-zope-interface" ,python-zope-interface)))
7418 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
7419 (synopsis "Zope exceptions")
7420 (description "Zope.exceptions provides general-purpose exception types
7421that have uses outside of the Zope framework.")
3f641af0 7422 (license license:zpl2.1)))
81f2373c
LF
7423
7424(define-public python2-zope-exceptions
7425 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
7426
7427(define-public python-zope-testing
7428 (package
7429 (name "python-zope-testing")
7430 (version "4.5.0")
7431 (source
7432 (origin
7433 (method url-fetch)
7434 (uri (string-append "https://pypi.python.org/packages/source/z"
7435 "/zope.testing/zope.testing-" version ".tar.gz"))
7436 (sha256
7437 (base32
b02f7a21
HG
7438 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
7439 (modules '((guix build utils)))
7440 (snippet
7441 '(begin
7442 ;; Remove pre-compiled .pyc files backup files from source.
7443 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
7444 #t))))
900e3c0e
LF
7445 (build-system python-build-system)
7446 (native-inputs
7447 `(("python-zope-exceptions" ,python-zope-exceptions)))
7448 (propagated-inputs
7449 `(("python-zope-interface" ,python-zope-interface)))
7450 (home-page "http://pypi.python.org/pypi/zope.testing")
7451 (synopsis "Zope testing helpers")
7452 (description "Zope.testing provides a number of testing utilities for HTML
7453forms, HTTP servers, regular expressions, and more.")
3f641af0 7454 (license license:zpl2.1)))
900e3c0e
LF
7455
7456(define-public python2-zope-testing
7457 (package-with-python2 python-zope-testing))
01614c4f
LF
7458
7459(define-public python-zope-testrunner
7460 (package
7461 (name "python-zope-testrunner")
7462 (version "4.4.9")
7463 (source
7464 (origin
7465 (method url-fetch)
7466 (uri (string-append "https://pypi.python.org/packages/source/z"
7467 "/zope.testrunner/zope.testrunner-"
7468 version ".zip"))
7469 (sha256
7470 (base32
7471 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
7472 (build-system python-build-system)
7473 (native-inputs
7474 `(("python-six" ,python-six)
e408ffc3 7475 ;("python-zope-interface" ,python-zope-interface)
01614c4f
LF
7476 ("python-zope-exceptions" ,python-zope-exceptions)
7477 ("python-zope-testing" ,python-zope-testing)
7478 ("unzip" ,unzip)))
7479 (propagated-inputs
7480 `(("python-zope-interface" ,python-zope-interface)))
7481 (home-page "http://pypi.python.org/pypi/zope.testrunner")
7482 (synopsis "Zope testrunner script")
7483 (description "Zope.testrunner provides a script for running Python
7484tests.")
3f641af0 7485 (license license:zpl2.1)))
01614c4f
LF
7486
7487(define-public python2-zope-testrunner
7488 (let ((base (package-with-python2 python-zope-testrunner)))
7489 (package
7490 (inherit base)
7491 (native-inputs
7492 (append (package-native-inputs base)
7493 `(("python2-subunit" ,python2-subunit)
7494 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
7495
7496(define-public python-zope-i18nmessageid
7497 (package
7498 (name "python-zope-i18nmessageid")
7499 (version "4.0.3")
7500 (source
7501 (origin
7502 (method url-fetch)
7503 (uri (string-append
7504 "https://pypi.python.org/packages/source/z"
7505 "/zope.i18nmessageid/zope.i18nmessageid-"
7506 version ".tar.gz"))
7507 (sha256
7508 (base32
7509 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
7510 (build-system python-build-system)
6a5c710c
LF
7511 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
7512 (synopsis "Message identifiers for internationalization")
7513 (description "Zope.i18nmessageid provides facilities for declaring
7514internationalized messages within program source text.")
3f641af0 7515 (license license:zpl2.1)))
6a5c710c
LF
7516
7517(define-public python2-zope-i18nmessageid
7518 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
7519
7520(define-public python-zope-schema
7521 (package
7522 (name "python-zope-schema")
7523 (version "4.4.2")
7524 (source
7525 (origin
7526 (method url-fetch)
7527 (uri (string-append "https://pypi.python.org/packages/source/z"
7528 "/zope.schema/zope.schema-" version ".tar.gz"))
7529 (sha256
7530 (base32
7531 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
7532 (build-system python-build-system)
7533 (propagated-inputs
7534 `(("python-zope-event" ,python-zope-event)
7535 ("python-zope-interface" ,python-zope-interface)))
7536 (native-inputs
47f77210
HG
7537 `(("python-zope-testing" ,python-zope-testing)
7538 ("python-coverage" ,python-coverage)
7539 ("python-nose" ,python-nose)))
71fb09f3
LF
7540 (home-page "http://pypi.python.org/pypi/zope.schema")
7541 (synopsis "Zope data schemas")
7542 (description "Zope.scheme provides extensions to zope.interface for
7543defining data schemas.")
3f641af0 7544 (license license:zpl2.1)))
71fb09f3
LF
7545
7546(define-public python2-zope-schema
7547 (package-with-python2 python-zope-schema))
fbac9b17
LF
7548
7549(define-public python-zope-configuration
7550 (package
7551 (name "python-zope-configuration")
7552 (version "4.0.3")
7553 (source (origin
7554 (method url-fetch)
7555 (uri (string-append "https://pypi.python.org/packages/source/z"
7556 "/zope.configuration/zope.configuration-"
7557 version ".tar.gz"))
7558 (sha256
7559 (base32
7560 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
7561 (build-system python-build-system)
7562 (propagated-inputs
7563 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7564 ("python-zope-schema" ,python-zope-schema)))
7565 (home-page "http://pypi.python.org/pypi/zope.configuration")
7566 (synopsis "Zope Configuration Markup Language")
7567 (description "Zope.configuration implements ZCML, the Zope Configuration
7568Markup Language.")
3f641af0 7569 (license license:zpl2.1)))
fbac9b17
LF
7570
7571(define-public python2-zope-configuration
7572 (package-with-python2 python-zope-configuration))
2ad52086
LF
7573
7574(define-public python-zope-proxy
7575 (package
7576 (name "python-zope-proxy")
7577 (version "4.1.6")
7578 (source
7579 (origin
7580 (method url-fetch)
7581 (uri (string-append "https://pypi.python.org/packages/source/z"
7582 "/zope.proxy/zope.proxy-" version ".tar.gz"))
7583 (sha256
7584 (base32
7585 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
7586 (build-system python-build-system)
7587 (propagated-inputs
7588 `(("python-zope-interface" ,python-zope-interface)))
7589 (home-page "http://pypi.python.org/pypi/zope.proxy")
7590 (synopsis "Generic, transparent proxies")
7591 (description "Zope.proxy provides generic, transparent proxies for Python.
7592Proxies are special objects which serve as mostly-transparent wrappers around
7593another object, intervening in the apparent behavior of the wrapped object
7594only when necessary to apply the policy (e.g., access checking, location
7595brokering, etc.) for which the proxy is responsible.")
3f641af0 7596 (license license:zpl2.1)))
2ad52086
LF
7597
7598(define-public python2-zope-proxy
7599 (package-with-python2 python-zope-proxy))
f404b5ea
LF
7600
7601(define-public python-zope-location
7602 (package
7603 (name "python-zope-location")
7604 (version "4.0.3")
7605 (source
7606 (origin
7607 (method url-fetch)
7608 (uri (string-append "https://pypi.python.org/packages/source/z"
7609 "/zope.location/zope.location-" version ".tar.gz"))
7610 (sha256
7611 (base32
7612 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
7613 (build-system python-build-system)
d27f176a 7614 (propagated-inputs
f404b5ea
LF
7615 `(("python-zope-proxy" ,python-zope-proxy)
7616 ("python-zope-schema" ,python-zope-schema)))
7617 (home-page "http://pypi.python.org/pypi/zope.location/")
7618 (synopsis "Zope location library")
7619 (description "Zope.location implements the concept of \"locations\" in
7620Zope3, which are are special objects that have a structural location.")
3f641af0 7621 (license license:zpl2.1)))
f404b5ea
LF
7622
7623(define-public python2-zope-location
7624 (package-with-python2 python-zope-location))
d4b77f36
LF
7625
7626(define-public python-zope-security
7627 (package
7628 (name "python-zope-security")
7629 (version "4.0.3")
7630 (source
7631 (origin
7632 (method url-fetch)
7633 (uri (string-append "https://pypi.python.org/packages/source/z"
7634 "/zope.security/zope.security-" version ".tar.gz"))
7635 (sha256
7636 (base32
7637 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
7638 (build-system python-build-system)
7639 (propagated-inputs
7640 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
d4b77f36 7641 ("python-zope-proxy" ,python-zope-proxy)
fd8e23b7
HG
7642 ("python-zope-schema" ,python-zope-schema)))
7643 (native-inputs
7644 `(("python-zope-component" ,python-zope-component)
7645 ("python-zope-configuration" ,python-zope-configuration)
7646 ("python-zope-location" ,python-zope-location)
d4b77f36
LF
7647 ("python-zope-testrunner" ,python-zope-testrunner)
7648 ("python-zope-testing" ,python-zope-testing)))
7649 (home-page "http://pypi.python.org/pypi/zope.security")
7650 (synopsis "Zope security framework")
7651 (description "Zope.security provides a generic mechanism to implement
7652security policies on Python objects.")
3f641af0 7653 (license license:zpl2.1)))
d4b77f36
LF
7654
7655(define-public python2-zope-security
04417662
EF
7656 (let ((zope-security (package-with-python2 python-zope-security)))
7657 (package (inherit zope-security)
7658 (propagated-inputs
7659 `(("python2-zope-testrunner" ,python2-zope-testrunner)
7660 ,@(alist-delete
7661 "python-zope-testrunner"
7662 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
7663
7664(define-public python-zope-component
7665 (package
7666 (name "python-zope-component")
7667 (version "4.2.2")
7668 (source
7669 (origin
7670 (method url-fetch)
7671 (uri (string-append "https://pypi.python.org/packages/source/z"
7672 "/zope.component/zope.component-" version ".tar.gz"))
7673 (sha256
7674 (base32
7675 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
7676 (build-system python-build-system)
7677 (arguments
7678 ;; Skip tests due to circular dependency with python-zope-security.
7679 '(#:tests? #f))
7680 (native-inputs
7681 `(("python-zope-testing" ,python-zope-testing)))
7682 (propagated-inputs
7683 `(("python-zope-event" ,python-zope-event)
7684 ("python-zope-interface" ,python-zope-interface)
7685 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7686 ("python-zope-configuration" ,python-zope-configuration)))
7687 (home-page "https://github.com/zopefoundation/zope.component")
7688 (synopsis "Zope Component Architecture")
7689 (description "Zope.component represents the core of the Zope Component
7690Architecture. Together with the zope.interface package, it provides
7691facilities for defining, registering and looking up components.")
3f641af0 7692 (license license:zpl2.1)))
a6b61b27
LF
7693
7694(define-public python2-zope-component
7695 (package-with-python2 python-zope-component))
3859ac12 7696
1ae44b80 7697(define-public python-pythondialog
b5f218be 7698 (package
1ae44b80 7699 (name "python-pythondialog")
42c4b246 7700 (version "3.4.0")
b5f218be
LF
7701 (source
7702 (origin
7703 (method url-fetch)
1ae44b80 7704 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
7705 (sha256
7706 (base32
1ae44b80 7707 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
7708 (build-system python-build-system)
7709 (arguments
7710 `(#:phases
7711 (modify-phases %standard-phases
7712 (add-after 'unpack 'patch-path
7713 (lambda* (#:key inputs #:allow-other-keys)
7714 (let* ((dialog (assoc-ref inputs "dialog")))
7715 ;; Since this library really wants to grovel the search path, we
7716 ;; must hardcode dialog's store path into it.
7717 (substitute* "dialog.py"
7718 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
7719 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
7720 #t))))
b5f218be
LF
7721 #:tests? #f)) ; no test suite
7722 (propagated-inputs
7723 `(("dialog" ,dialog)))
7724 (home-page "http://pythondialog.sourceforge.net/")
7725 (synopsis "Python interface to the UNIX dialog utility")
7726 (description "A Python wrapper for the dialog utility. Its purpose is to
7727provide an easy to use, pythonic and comprehensive Python interface to dialog.
7728This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 7729 (license license:lgpl2.1)
1ae44b80
LF
7730 (properties `((python2-variant . ,(delay python2-pythondialog))))))
7731
7732(define-public python2-pythondialog
7733 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
7734 (package
7735 (inherit base)
7736 (version (package-version python-pythondialog))
7737 (source (origin
7738 (method url-fetch)
7739 (uri (pypi-uri "python2-pythondialog" version))
7740 (sha256
7741 (base32
7742 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 7743
3859ac12
LF
7744(define-public python-pyrfc3339
7745 (package
7746 (name "python-pyrfc3339")
d9aa097b 7747 (version "1.0")
3859ac12
LF
7748 (source
7749 (origin
7750 (method url-fetch)
d9aa097b 7751 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
7752 (sha256
7753 (base32
d9aa097b 7754 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
7755 (build-system python-build-system)
7756 (propagated-inputs
7757 `(("python-pytz" ,python-pytz)))
7758 (native-inputs
f3b98f4f 7759 `(("python-nose" ,python-nose)))
3859ac12
LF
7760 (home-page "https://github.com/kurtraschke/pyRFC3339")
7761 (synopsis "Python timestamp library")
7762 (description "Python library for generating and parsing RFC 3339-compliant
7763timestamps.")
7764 (license license:expat)))
7765
7766(define-public python2-pyrfc3339
7767 (package-with-python2 python-pyrfc3339))
5eea2005
LF
7768
7769(define-public python-werkzeug
7770 (package
7771 (name "python-werkzeug")
0580e383 7772 (version "0.11.11")
5eea2005
LF
7773 (source
7774 (origin
7775 (method url-fetch)
4b47cbfa 7776 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
7777 (sha256
7778 (base32
0580e383 7779 "1rgpq8a2qv26d75v9j3b074inirlyy6y4b5x4rxblp202jy4cb77"))))
5eea2005
LF
7780 (build-system python-build-system)
7781 (native-inputs
7782 `(("python-pytest" ,python-pytest)))
7783 (home-page "http://werkzeug.pocoo.org/")
7784 (synopsis "Utilities for WSGI applications")
7785 (description "One of the most advanced WSGI utility modules. It includes a
7786powerful debugger, full-featured request and response objects, HTTP utilities to
7787handle entity tags, cache control headers, HTTP dates, cookie handling, file
7788uploads, a powerful URL routing system and a bunch of community-contributed
7789addon modules.")
3f641af0 7790 (license license:x11)))
5eea2005
LF
7791
7792(define-public python2-werkzeug
7793 (package-with-python2 python-werkzeug))
99fffa8a
LF
7794
7795(define-public python-configobj
7796 (package
7797 (name "python-configobj")
7798 (version "5.0.6")
7799 (source (origin
7800 (method url-fetch)
7801 (uri (string-append
7802 "https://pypi.python.org/packages/source/c/configobj/"
7803 "configobj-" version ".tar.gz"))
7804 (sha256
7805 (base32
7806 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
7807 ;; Patch setup.py so it looks for python-setuptools, which is
7808 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 7809 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a 7810 (build-system python-build-system)
861f70c9 7811 (propagated-inputs
f3b98f4f 7812 `(("python-six" ,python-six)))
99fffa8a
LF
7813 (synopsis "Config file reading, writing and validation")
7814 (description "ConfigObj is a simple but powerful config file reader and
7815writer: an ini file round tripper. Its main feature is that it is very easy to
7816use, with a straightforward programmer’s interface and a simple syntax for
7817config files.")
7818 (home-page "https://github.com/DiffSK/configobj")
3f641af0 7819 (license license:bsd-3)))
99fffa8a
LF
7820
7821(define-public python2-configobj
7822 (package-with-python2 python-configobj))
79e8a291
LF
7823
7824(define-public python-configargparse
7825 (package
7826 (name "python-configargparse")
7827 (version "0.10.0")
7828 (source (origin
7829 (method url-fetch)
7830 (uri (string-append
7831 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
7832 "ConfigArgParse-" version ".tar.gz"))
7833 (sha256
7834 (base32
7835 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
7836 (build-system python-build-system)
7837 (arguments
7838 ;; FIXME: Bug in test suite filed upstream:
7839 ;; https://github.com/bw2/ConfigArgParse/issues/32
7840 '(#:tests? #f))
7841 (synopsis "Replacement for argparse")
7842 (description "A drop-in replacement for argparse that allows options to also
7843be set via config files and/or environment variables.")
7844 (home-page "https://github.com/bw2/ConfigArgParse")
7845 (license license:expat)))
7846
7847(define-public python2-configargparse
7848 (package-with-python2 python-configargparse))
ab41f979
LF
7849
7850(define-public python-ndg-httpsclient
7851 (package
7852 (name "python-ndg-httpsclient")
7853 (version "0.4.0")
7854 (source (origin
7855 (method url-fetch)
7856 (uri (string-append
7857 "https://pypi.python.org/packages/source/n/ndg-httpsclient/"
7858 "ndg_httpsclient-" version ".tar.gz"))
7859 (sha256
7860 (base32
7861 "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8"))))
7862 (build-system python-build-system)
a39cc016
LF
7863 (arguments
7864 '(;; The tests appear to require networking.
7865 #:tests? #f))
ab41f979
LF
7866 (propagated-inputs
7867 `(("python-pyopenssl" ,python-pyopenssl)))
7868 (synopsis "HTTPS support for Python's httplib and urllib2")
7869 (description "This is a HTTPS client implementation for httplib and urllib2
7870based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
7871over the default provided with Python and importantly enables full verification
7872of the SSL peer.")
7873 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 7874 (license license:bsd-3)))
ab41f979
LF
7875
7876;; python2-openssl requires special care, so package-with-python2 is
7877;; insufficient.
7878(define-public python2-ndg-httpsclient
7879 (package (inherit python-ndg-httpsclient)
7880 (name "python2-ndg-httpsclient")
7881 (arguments `(#:python ,python-2))
7882 (propagated-inputs
7883 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
7884
7885(define-public python-contextlib2
7886 (package
7887 (name "python-contextlib2")
7888 (version "0.4.0")
7889 (source
7890 (origin
7891 (method url-fetch)
7892 (uri (pypi-uri "contextlib2" version))
7893 (sha256
7894 (base32
7895 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
7896 (build-system python-build-system)
7897 (arguments
7898 `(#:phases
7899 (modify-phases %standard-phases
7900 (replace 'check
7901 (lambda _ (zero?
7902 (system*
b3546174 7903 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
7904 (home-page "http://contextlib2.readthedocs.org/")
7905 (synopsis "Tools for decorators and context managers")
7906 (description "This module is primarily a backport of the Python
79073.2 contextlib to earlier Python versions. Like contextlib, it
7908provides utilities for common tasks involving decorators and context
7909managers. It also contains additional features that are not part of
7910the standard library.")
3f641af0 7911 (license license:psfl)))
03f964a5
CM
7912
7913(define-public python2-contextlib2
7914 (package-with-python2 python-contextlib2))
210bf497
DT
7915
7916(define-public python-texttable
7917 (package
7918 (name "python-texttable")
7919 (version "0.8.4")
7920 (source
7921 (origin
7922 (method url-fetch)
7923 (uri (pypi-uri "texttable" version))
7924 (sha256
7925 (base32
7926 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
7927 (build-system python-build-system)
7928 (arguments '(#:tests? #f)) ; no tests
7929 (home-page "https://github.com/foutaise/texttable/")
7930 (synopsis "Python module for creating simple ASCII tables")
7931 (description "Texttable is a Python module for creating simple ASCII
7932tables.")
3f641af0 7933 (license license:lgpl2.1+)))
210bf497
DT
7934
7935(define-public python2-texttable
7936 (package-with-python2 python-texttable))
67c52bb3
DT
7937
7938(define-public python-websocket-client
7939 (package
7940 (name "python-websocket-client")
6b810897 7941 (version "0.37.0")
67c52bb3
DT
7942 (source
7943 (origin
7944 (method url-fetch)
6b810897 7945 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
7946 (sha256
7947 (base32
6b810897 7948 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3 7949 (build-system python-build-system)
a5333f7c
HG
7950 (propagated-inputs
7951 `(("python-six" ,python-six)))
67c52bb3
DT
7952 (home-page "https://github.com/liris/websocket-client")
7953 (synopsis "WebSocket client for Python")
7954 (description "The Websocket-client module provides the low level APIs for
7955WebSocket usage in Python programs.")
3f641af0 7956 (license license:lgpl2.1+)))
67c52bb3
DT
7957
7958(define-public python2-websocket-client
7959 (package-with-python2 python-websocket-client))
5c6eea2a
LF
7960
7961(define-public python-atomicwrites
7962 (package
7963 (name "python-atomicwrites")
4e92d76a 7964 (version "1.1.0")
5c6eea2a
LF
7965 (source (origin
7966 (method url-fetch)
7967 (uri (pypi-uri "atomicwrites" version))
7968 (sha256
7969 (base32
4e92d76a 7970 "1s01dci8arsl9d9vr5nz1fk9znldp1z3l4yl43f0c27z12b8yxl0"))))
5c6eea2a
LF
7971 (build-system python-build-system)
7972 (synopsis "Atomic file writes in Python")
7973 (description "Library for atomic file writes using platform dependent tools
8f65585b 7974for atomic file system operations.")
5c6eea2a 7975 (home-page "https://github.com/untitaker/python-atomicwrites")
f210e944 7976 (license license:expat)))
9bb6d184
LF
7977
7978(define-public python2-atomicwrites
f210e944 7979 (package-with-python2 python-atomicwrites))
561bb3cb
LF
7980
7981(define-public python-requests-toolbelt
7982 (package
7983 (name "python-requests-toolbelt")
c02af1c8 7984 (version "0.6.2")
561bb3cb
LF
7985 (source (origin
7986 (method url-fetch)
c02af1c8
LF
7987 (uri (string-append
7988 "https://pypi.python.org/packages/"
7989 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
7990 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
7991 (sha256
7992 (base32
c02af1c8 7993 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb 7994 (build-system python-build-system)
759aadd4
LF
7995 (native-inputs
7996 `(("python-betamax" ,python-betamax)
7997 ("python-mock" ,python-mock)
7998 ("python-pytest" ,python-pytest)))
561bb3cb
LF
7999 (propagated-inputs
8000 `(("python-requests" ,python-requests)))
8001 (synopsis "Extensions to python-requests")
8002 (description "This is a toolbelt of useful classes and functions to be used
8003with python-requests.")
8004 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 8005 (license license:asl2.0)))
d1deb90b
LF
8006
8007(define-public python-click-threading
8008 (package
8009 (name "python-click-threading")
3d2e0dbc 8010 (version "0.2.0")
d1deb90b
LF
8011 (source (origin
8012 (method url-fetch)
3d2e0dbc
LF
8013 (uri (string-append
8014 "https://pypi.python.org/packages/"
8015 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
8016 "click-threading-" version ".tar.gz"))
d1deb90b
LF
8017 (sha256
8018 (base32
3d2e0dbc 8019 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
8020 (build-system python-build-system)
8021 (propagated-inputs
8022 `(("python-click" ,python-click)))
8023 (synopsis "Utilities for multithreading in Click")
8024 (description "This package provides utilities for multithreading in Click
8025applications.")
8026 (home-page "https://github.com/click-contrib/click-threading")
8027 (license license:expat)))
7b17cab9
LF
8028
8029(define-public python-click-log
8030 (package
8031 (name "python-click-log")
a9da8fec 8032 (version "0.1.3")
7b17cab9
LF
8033 (source (origin
8034 (method url-fetch)
8035 (uri (pypi-uri "click-log" version))
8036 (sha256
8037 (base32
a9da8fec 8038 "0kdd1vminxpcfczxl2kkf285n0dr1gxh2cdbx1p6vkj7b7bci3gx"))))
7b17cab9
LF
8039 (build-system python-build-system)
8040 (propagated-inputs
8041 `(("python-click" ,python-click)))
8042 (synopsis "Logging for click applications")
8043 (description "This package provides a Python library for logging Click
8044applications.")
8045 (home-page "https://github.com/click-contrib/click-log")
8046 (license license:expat)))
7b3a4ee4
LF
8047
8048(define-public python-apipkg
8049 (package
8050 (name "python-apipkg")
8051 (version "1.4")
8052 (source (origin
8053 (method url-fetch)
8054 (uri (pypi-uri "apipkg" version))
8055 (sha256
8056 (base32
8057 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
8058 (build-system python-build-system)
328bb95d 8059 (native-inputs
7b3a4ee4
LF
8060 `(("python-pytest" ,python-pytest)))
8061 (synopsis "Namespace control and lazy-import mechanism")
8062 (description "With apipkg you can control the exported namespace of a Python
8063package and greatly reduce the number of imports for your users. It is a small
8064pure Python module that works on virtually all Python versions.")
8065 (home-page "https://bitbucket.org/hpk42/apipkg")
f210e944 8066 (license license:expat)))
e08739c3
CAW
8067
8068(define-public python2-apipkg
f210e944 8069 (package-with-python2 python-apipkg))
848964fe
LF
8070
8071(define-public python-execnet
8072 (package
8073 (name "python-execnet")
8074 (version "1.4.1")
8075 (source (origin
8076 (method url-fetch)
8077 (uri (pypi-uri "execnet" version))
8078 (sha256
8079 (base32
8080 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
8081 (build-system python-build-system)
ca0eee9d
LF
8082 (arguments
8083 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
8084 ;; The two test failures are caused by the lack of an `ssh` executable.
8085 ;; The test suite can be run with pytest after the 'install' phase.
8086 #:tests? #f))
848964fe 8087 (native-inputs
ca0eee9d
LF
8088 `(("python-pytest" ,python-pytest)
8089 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 8090 (propagated-inputs
848964fe
LF
8091 `(("python-apipkg" ,python-apipkg)))
8092 (synopsis "Rapid multi-Python deployment")
8093 (description "Execnet provides a share-nothing model with
8094channel-send/receive communication for distributing execution across many
8095Python interpreters across version, platform and network barriers. It has a
8096minimal and fast API targetting the following uses:
8097@enumerate
8098@item distribute tasks to (many) local or remote CPUs
8099@item write and deploy hybrid multi-process applications
8100@item write scripts to administer multiple environments
8101@end enumerate")
8102 (home-page "http://codespeak.net/execnet/")
f210e944 8103 (license license:expat)))
16c84f90
CAW
8104
8105(define-public python2-execnet
f210e944 8106 (package-with-python2 python-execnet))
6720dbb4 8107
d5bbf806 8108(define-public python-trollius-redis
8109 (package
8110 (name "python-trollius-redis")
8111 (version "0.1.4")
8112 (source
8113 (origin
8114 (method url-fetch)
8115 (uri (pypi-uri "trollius_redis" version))
8116 (sha256
8117 (base32
8118 "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
8119 (build-system python-build-system)
8120 (home-page "https://github.com/benjolitz/trollius-redis")
8121 (synopsis "Port of asyncio-redis to trollius")
8122 (description "@code{trollius-redis} is a Redis client for Python
8123 trollius. It is an asynchronious IO (PEP 3156) implementation of the
8124 Redis protocol.")
8125 (license license:bsd-2)))
8126
8127(define-public python2-trollius-redis
8128 (package-with-python2 python-trollius-redis))
8129
6720dbb4
LF
8130;;; The software provided by this package was integrated into pytest 2.8.
8131(define-public python-pytest-cache
8132 (package
8133 (name "python-pytest-cache")
8134 (version "1.0")
8135 (source (origin
8136 (method url-fetch)
8137 (uri (pypi-uri "pytest-cache" version))
8138 (sha256
8139 (base32
8140 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
8141 (build-system python-build-system)
f22efa01 8142 (propagated-inputs
630d938f
EF
8143 `(("python-apipkg" ,python-apipkg)
8144 ("python-execnet" ,python-execnet)
8145 ("python-py" ,python-py)
8146 ("python-pytest" ,python-pytest)))
6720dbb4
LF
8147 (synopsis "Py.test plugin with mechanisms for caching across test runs")
8148 (description "The pytest-cache plugin provides tools to rerun failures from
8149the last py.test invocation.")
8150 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
f210e944 8151 (license license:expat)))
0adc21c2
EF
8152
8153(define-public python2-pytest-cache
f210e944 8154 (package-with-python2 python-pytest-cache))
d7e729fe
LF
8155
8156(define-public python-pytest-localserver
8157 (package
8158 (name "python-pytest-localserver")
29f20168 8159 (version "0.3.5")
d7e729fe
LF
8160 (source (origin
8161 (method url-fetch)
29f20168 8162 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
8163 (sha256
8164 (base32
29f20168 8165 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
8166 (build-system python-build-system)
8167 (arguments
8168 `(#:phases (modify-phases %standard-phases
8169 (replace 'check
8170 (lambda _
8171 (zero? (system* "py.test" "--genscript=runtests.py"))
8172 (zero? (system* "py.test")))))))
8173 (native-inputs
d7e729fe
LF
8174 `(("python-pytest" ,python-pytest)
8175 ("python-requests" ,python-requests)
9ba40f05 8176 ("python-six" ,python-six)))
f22efa01 8177 (propagated-inputs
9ba40f05 8178 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
8179 (synopsis "Py.test plugin to test server connections locally")
8180 (description "Pytest-localserver is a plugin for the pytest testing
8181framework which enables you to test server connections locally.")
8182 (home-page "https://pypi.python.org/pypi/pytest-localserver")
8183 (license license:expat)))
28cecbb7
LF
8184
8185(define-public python-wsgi-intercept
8186 (package
8187 (name "python-wsgi-intercept")
909fbd2b 8188 (version "1.2.2")
28cecbb7
LF
8189 (source (origin
8190 (method url-fetch)
909fbd2b
LF
8191 (uri (string-append
8192 "https://pypi.python.org/packages/"
8193 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
8194 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
8195 (sha256
8196 (base32
909fbd2b 8197 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7 8198 (build-system python-build-system)
b9fc496f
HG
8199 (propagated-inputs
8200 `(("python-six" ,python-six)))
28cecbb7 8201 (native-inputs
9d813ec1 8202 `(("python-pytest" ,python-pytest)
b9fc496f
HG
8203 ("python-httplib2" ,python-httplib2)
8204 ("python-requests" ,python-requests)
8757f050 8205 ("python-urllib3" ,python-urllib3)))
28cecbb7
LF
8206 (synopsis "Puts a WSGI application in place of a real URI for testing")
8207 (description "Wsgi_intercept installs a WSGI application in place of a real
8208URI for testing. Testing a WSGI application normally involves starting a
8209server at a local host and port, then pointing your test code to that address.
8210Instead, this library lets you intercept calls to any specific host/port
8211combination and redirect them into a WSGI application importable by your test
8212program. Thus, you can avoid spawning multiple processes or threads to test
8213your Web app.")
8214 (home-page "https://github.com/cdent/wsgi-intercept")
8215 (license license:expat)))
89b8a551
LF
8216
8217(define-public python-pytest-xprocess
8218 (package
8219 (name "python-pytest-xprocess")
8220 (version "0.9.1")
8221 (source (origin
8222 (method url-fetch)
8223 (uri (pypi-uri "pytest-xprocess" version))
8224 (sha256
8225 (base32
8226 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
8227 (build-system python-build-system)
8228 (propagated-inputs
8229 `(("python-pytest" ,python-pytest)
8230 ("python-pytest-cache" ,python-pytest-cache)
8231 ("python-psutil" ,python-psutil)))
8232 (synopsis "Pytest plugin to manage external processes across test runs")
8233 (description "Pytest-xprocess is an experimental py.test plugin for managing
8234processes across test runs.")
8235 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
8236 (license license:expat)))
5c299bf0
LF
8237
8238(define-public python-icalendar
8239 (package
8240 (name "python-icalendar")
25291aca 8241 (version "3.11")
5c299bf0
LF
8242 (source (origin
8243 (method url-fetch)
8244 (uri (pypi-uri "icalendar" version))
8245 (sha256
8246 (base32
25291aca 8247 "01v2f3swd5s72x65cdihw83dx1z799b4i49a6ncg7vqmcm20wapd"))))
5c299bf0
LF
8248 (build-system python-build-system)
8249 (propagated-inputs
8250 `(("python-dateutil-2" ,python-dateutil-2)
8251 ("python-pytz" ,python-pytz)))
8252 (synopsis "Python library for parsing iCalendar files")
8253 (description "The icalendar package is a parser/generator of iCalendar
8254files for use with Python.")
8255 (home-page "https://github.com/collective/icalendar")
3f641af0 8256 (license license:bsd-2)))
6bbbb53e
LF
8257
8258(define-public python-sphinxcontrib-newsfeed
8259 (package
8260 (name "python-sphinxcontrib-newsfeed")
8261 (version "0.1.4")
8262 (source (origin
8263 (method url-fetch)
8264 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
8265 (sha256
8266 (base32
8267 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
8268 (build-system python-build-system)
8269 (propagated-inputs
251ed7f2 8270 `(("python-sphinx" ,python-sphinx)))
6bbbb53e
LF
8271 (synopsis "News Feed extension for Sphinx")
8272 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
8273Blog, News or Announcements section to a Sphinx website.")
8274 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 8275 (license license:bsd-2)))
2216e15c
SB
8276
8277(define-public python-args
8278 (package
8279 (name "python-args")
8280 (version "0.1.0")
8281 (source (origin
8282 (method url-fetch)
8283 (uri (pypi-uri "args" version))
8284 (sha256
8285 (base32
8286 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
8287 (build-system python-build-system)
2216e15c
SB
8288 (home-page "https://github.com/kennethreitz/args")
8289 (synopsis "Command-line argument parser")
8290 (description
8291 "This library provides a Python module to parse command-line arguments.")
3f641af0 8292 (license license:bsd-3)))
2216e15c
SB
8293
8294(define-public python2-args
8295 (package-with-python2 python-args))
c06a3de9
SB
8296
8297(define-public python-clint
8298 (package
8299 (name "python-clint")
8300 (version "0.5.1")
8301 (source (origin
8302 (method url-fetch)
8303 (uri (pypi-uri "clint" version))
8304 (sha256
8305 (base32
8306 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
8307 (build-system python-build-system)
f22efa01 8308 (propagated-inputs
f3b98f4f 8309 `(("python-args" ,python-args)))
c06a3de9
SB
8310 (home-page "https://github.com/kennethreitz/clint")
8311 (synopsis "Command-line interface tools")
8312 (description
8313 "Clint is a Python module filled with a set of tools for developing
8314command-line applications, including tools for colored and indented
8315output, progress bar display, and pipes.")
3f641af0 8316 (license license:isc)))
c06a3de9
SB
8317
8318(define-public python2-clint
8319 (package-with-python2 python-clint))
4ecdeef8
SB
8320
8321(define-public python-astor
8322 (package
8323 (name "python-astor")
8324 (version "0.5")
8325 (source (origin
8326 (method url-fetch)
8327 (uri (pypi-uri "astor" version))
8328 (sha256
8329 (base32
8330 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
8331 (build-system python-build-system)
4ecdeef8
SB
8332 (home-page "https://github.com/berkerpeksag/astor")
8333 (synopsis "Read and write Python ASTs")
8334 (description
8335 "Astor is designed to allow easy manipulation of Python source via the
8336Abstract Syntax Tree.")
3f641af0 8337 (license license:bsd-3)))
4ecdeef8
SB
8338
8339(define-public python2-astor
8340 (package-with-python2 python-astor))
e224b7d0
SB
8341
8342(define-public python-rply
8343 (package
8344 (name "python-rply")
8345 (version "0.7.4")
8346 (source (origin
8347 (method url-fetch)
8348 (uri (pypi-uri "rply" version))
8349 (sha256
8350 (base32
8351 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
8352 (build-system python-build-system)
f22efa01 8353 (propagated-inputs
f3b98f4f 8354 `(("python-appdirs" ,python-appdirs)))
e224b7d0
SB
8355 (home-page "https://github.com/alex/rply")
8356 (synopsis "Parser generator for Python")
8357 (description
8358 "This package provides a pure Python based parser generator, that also
8359works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
8360with a new public API, and RPython support.")
3f641af0 8361 (license license:bsd-3)))
e224b7d0
SB
8362
8363(define-public python2-rply
8364 (package-with-python2 python-rply))
c3e919d7
SB
8365
8366(define-public python-hy
8367 (package
8368 (name "python-hy")
8369 (version "0.11.1")
8370 (source (origin
8371 (method url-fetch)
8372 (uri (pypi-uri "hy" version))
8373 (sha256
8374 (base32
8375 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
8376 (build-system python-build-system)
f22efa01 8377 (propagated-inputs
c3e919d7
SB
8378 `(("python-astor" ,python-astor)
8379 ("python-clint" ,python-clint)
f3b98f4f 8380 ("python-rply" ,python-rply)))
c3e919d7
SB
8381 (home-page "http://hylang.org/")
8382 (synopsis "Lisp frontend to Python")
8383 (description
8384 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
8385its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
8386Python at your fingertips, in Lisp form.")
8387 (license license:expat)))
8388
8389(define-public python2-hy
8390 (package-with-python2 python-hy))
7a5b944e 8391
81f7f297
EF
8392(define-public python-rauth
8393 (package
8394 (name "python-rauth")
8395 (version "0.7.2")
8396 (source
8397 (origin
8398 (method url-fetch)
8399 (uri (pypi-uri "rauth" version))
8400 (sha256
8401 (base32
8402 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
8403 (build-system python-build-system)
8404 (arguments
8405 `(#:test-target "check"))
f22efa01 8406 (propagated-inputs
81f7f297
EF
8407 `(("python-requests" ,python-requests)))
8408 (home-page "https://github.com/litl/rauth")
8409 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
8410 (description
8411 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
8412provides service wrappers for convenient connection initialization and
8413authenticated session objects providing things like keep-alive.")
0848d8d3
EF
8414 (license license:expat)
8415 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
8416
8417(define-public python2-rauth
0848d8d3
EF
8418 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
8419 (package
8420 (inherit base)
00e10c6e 8421 (native-inputs `(("python2-unittest2" ,python2-unittest2)
0848d8d3 8422 ,@(package-native-inputs base))))))
81f7f297 8423
1abe448d
EF
8424(define-public python2-functools32
8425 (package
8426 (name "python2-functools32")
8427 (version "3.2.3-2")
8428 (source
8429 (origin
8430 (method url-fetch)
8431 (uri (pypi-uri "functools32" version))
8432 (sha256
8433 (base32
8434 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
8435 (build-system python-build-system)
8436 (arguments
8437 `(#:python ,python-2
8438 #:tests? #f)) ; no test target
1abe448d
EF
8439 (home-page "https://github.com/MiCHiLU/python-functools32")
8440 (synopsis
8441 "Backport of the functools module from Python 3.2.3")
8442 (description
8443 "This package is a backport of the @code{functools} module from Python
84443.2.3 for use with older versions of Python and PyPy.")
8445 (license license:expat)))
8446
877889f3 8447(define-public python2-futures
7a5b944e 8448 (package
877889f3 8449 (name "python2-futures")
7a5b944e
EF
8450 (version "3.0.3")
8451 (source
8452 (origin
8453 (method url-fetch)
8454 (uri (pypi-uri "futures" version))
8455 (sha256
8456 (base32
8457 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
8458 (build-system python-build-system)
877889f3 8459 (arguments `(#:python ,python-2))
7a5b944e
EF
8460 (home-page "https://github.com/agronholm/pythonfutures")
8461 (synopsis
8462 "Backport of the concurrent.futures package from Python 3.2")
8463 (description
8464 "The concurrent.futures module provides a high-level interface for
8465asynchronously executing callables. This package backports the
8466concurrent.futures package from Python 3.2")
3f641af0 8467 (license license:bsd-3)))
7a5b944e 8468
5cb2fe44
EF
8469(define-public python-promise
8470 (package
8471 (name "python-promise")
8472 (version "0.4.2")
8473 (source
8474 (origin
8475 (method url-fetch)
8476 (uri (pypi-uri "promise" version))
8477 (sha256
8478 (base32
8479 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
8480 (build-system python-build-system)
8481 ;; Tests wants python-futures, which is a python2 only program, and
8482 ;; can't be found by python-promise at test time.
8483 (arguments `(#:tests? #f))
8484 (home-page "https://github.com/syrusakbary/promise")
8485 (synopsis "Promises/A+ implementation for Python")
8486 (description
8487 "Promises/A+ implementation for Python")
8488 (properties `((python2-variant . ,(delay python2-promise))))
8489 (license license:expat)))
8490
8491(define-public python2-promise
8492 (let ((promise (package-with-python2
8493 (strip-python2-variant python-promise))))
8494 (package (inherit promise)
8495 (arguments (substitute-keyword-arguments (package-arguments promise)
8496 ((#:tests? _) #t)))
8497 (native-inputs
8498 `(("python2-futures" ,python2-futures)
8499 ("python2-pytest" ,python2-pytest)
5cb2fe44
EF
8500 ,@(package-native-inputs promise))))))
8501
c18f6368
EF
8502(define-public python-urllib3
8503 (package
8504 (name "python-urllib3")
6178274d 8505 (version "1.18.1")
c18f6368
EF
8506 (source
8507 (origin
8508 (method url-fetch)
8509 (uri (pypi-uri "urllib3" version))
8510 (sha256
8511 (base32
6178274d 8512 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
c18f6368
EF
8513 (build-system python-build-system)
8514 (arguments `(#:tests? #f))
8515 (native-inputs
f3b98f4f 8516 `(;; some packages for tests
c18f6368
EF
8517 ("python-nose" ,python-nose)
8518 ("python-mock" ,python-mock)
8519 ("python-tornado" ,python-tornado)))
8520 (propagated-inputs
8322749a 8521 `(;; extra packages for https security
c18f6368
EF
8522 ("python-certifi" ,python-certifi)
8523 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
8524 ("python-pyasn1" ,python-pyasn1)
8525 ("python-pyopenssl" ,python-pyopenssl)))
6178274d 8526 (home-page "https://urllib3.readthedocs.org/")
c18f6368
EF
8527 (synopsis "HTTP library with thread-safe connection pooling")
8528 (description
8529 "Urllib3 supports features left out of urllib and urllib2 libraries. It
8530can reuse the same socket connection for multiple requests, it can POST files,
8531supports url redirection and retries, and also gzip and deflate decoding.")
8532 (license license:expat)))
8533
8534(define-public python2-urllib3
8535 (package-with-python2 python-urllib3))
2b2f2fc1
DT
8536
8537(define-public python-colorama
8538 (package
8539 (name "python-colorama")
8540 (version "0.3.3")
8541 (source
8542 (origin
8543 (method url-fetch)
8544 (uri (pypi-uri "colorama" version))
8545 (sha256
8546 (base32
8547 "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
8548 (build-system python-build-system)
2b2f2fc1
DT
8549 (synopsis "colored terminal text rendering for Python")
8550 (description "Colorama is a Python library for rendering colored terminal
8551text.")
8552 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 8553 (license license:bsd-3)))
2b2f2fc1
DT
8554
8555(define-public python2-colorama
8556 (package-with-python2 python-colorama))
f5bcec6e
DT
8557
8558(define-public python-rsa
8559 (package
8560 (name "python-rsa")
ecd68c53 8561 (version "3.4.2")
f5bcec6e
DT
8562 (source
8563 (origin
8564 (method url-fetch)
8565 (uri (pypi-uri "rsa" version))
8566 (sha256
8567 (base32
ecd68c53 8568 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
f5bcec6e 8569 (build-system python-build-system)
f22efa01 8570 (propagated-inputs
f3b98f4f 8571 `(("python-pyasn1" ,python-pyasn1)))
f5bcec6e
DT
8572 (synopsis "Pure-Python RSA implementation")
8573 (description "Python-RSA is a pure-Python RSA implementation. It supports
8574encryption and decryption, signing and verifying signatures, and key
8575generation according to PKCS#1 version 1.5. It can be used as a Python
8576library as well as on the command line.")
8577 (home-page "http://stuvel.eu/rsa")
3f641af0 8578 (license license:asl2.0)))
f5bcec6e
DT
8579
8580(define-public python2-rsa
8581 (package-with-python2 python-rsa))
c0aacfa5
DT
8582
8583(define-public python-pluggy
8584 (package
8585 (name "python-pluggy")
8586 (version "0.3.1")
8587 (source
8588 (origin
8589 (method url-fetch)
8590 (uri (pypi-uri "pluggy" version))
8591 (sha256
8592 (base32
8593 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
8594 (build-system python-build-system)
c0aacfa5
DT
8595 (synopsis "Plugin and hook calling mechanism for Python")
8596 (description "Pluggy is an extraction of the plugin manager as used by
8597Pytest but stripped of Pytest specific details.")
8598 (home-page "https://pypi.python.org/pypi/pluggy")
8599 (license license:expat)))
8600
8601(define-public python2-pluggy
8602 (package-with-python2 python-pluggy))
a4af21ca
DT
8603
8604(define-public python-tox
8605 (package
8606 (name "python-tox")
8607 (version "2.3.1")
8608 (source
8609 (origin
8610 (method url-fetch)
8611 (uri (pypi-uri "tox" version))
8612 (sha256
8613 (base32
8614 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
8615 (build-system python-build-system)
8616 (arguments
7ba07edf
HG
8617 ;; FIXME: Tests require pytest-timeout, which itself requires
8618 ;; pytest>=2.8.0 for installation.
a4af21ca 8619 '(#:tests? #f))
482d9591
HG
8620 (propagated-inputs
8621 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
a4af21ca 8622 ("python-py" ,python-py)
482d9591 8623 ("python-virtualenv" ,python-virtualenv)))
328bb95d 8624 (native-inputs
7ba07edf
HG
8625 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
8626 ("python-pytest" ,python-pytest))) ; >= 2.3.5
a4af21ca
DT
8627 (home-page "http://tox.testrun.org/")
8628 (synopsis "Virtualenv-based automation of test activities")
8629 (description "Tox is a generic virtualenv management and test command line
8630tool. It can be used to check that a package installs correctly with
8631different Python versions and interpreters, or run tests in each type of
8632supported environment, or act as a frontend to continuous integration
8633servers.")
8634 (license license:expat)))
8635
8636(define-public python2-tox
8637 (package-with-python2 python-tox))
ba9da248
DT
8638
8639(define-public python-jmespath
8640 (package
8641 (name "python-jmespath")
8642 (version "0.9.0")
8643 (source
8644 (origin
8645 (method url-fetch)
8646 (uri (pypi-uri "jmespath" version))
8647 (sha256
8648 (base32
8649 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
8650 (build-system python-build-system)
ba9da248
DT
8651 (synopsis "JSON Matching Expressions")
8652 (description "JMESPath (pronounced “james path”) is a Python library that
8653allows one to declaratively specify how to extract elements from a JSON
8654document.")
8655 (home-page "https://github.com/jmespath/jmespath.py")
8656 (license license:expat)))
8657
8658(define-public python2-jmespath
8659 (package-with-python2 python-jmespath))
935fcd5c
DT
8660
8661(define-public python-botocore
8662 (package
8663 (name "python-botocore")
e09f952d 8664 (version "1.4.62")
935fcd5c
DT
8665 (source
8666 (origin
8667 (method url-fetch)
8668 (uri (pypi-uri "botocore" version))
8669 (sha256
8670 (base32
e09f952d 8671 "1zxczlwqy9bl27d9bc5x99mb5mcsxm350240lp5nx7014xb311lj"))))
935fcd5c 8672 (build-system python-build-system)
482d9591 8673 (propagated-inputs
935fcd5c
DT
8674 `(("python-dateutil" ,python-dateutil-2)
8675 ("python-docutils" ,python-docutils)
482d9591 8676 ("python-jmespath" ,python-jmespath)))
8fa6890b 8677 (native-inputs
482d9591 8678 `(("python-mock" ,python-mock)
935fcd5c 8679 ("python-nose" ,python-nose)
482d9591 8680 ("behave" ,behave)
935fcd5c 8681 ("python-tox" ,python-tox)
482d9591 8682 ("python-wheel" ,python-wheel)))
935fcd5c
DT
8683 (home-page "https://github.com/boto/botocore")
8684 (synopsis "Low-level interface to AWS")
8685 (description "Botocore is a Python library that provides a low-level
8686interface to the Amazon Web Services (AWS) API.")
3f641af0 8687 (license license:asl2.0)))
935fcd5c
DT
8688
8689(define-public python2-botocore
8690 (package-with-python2 python-botocore))
f861b8b8
DT
8691
8692(define-public awscli
8693 (package
8694 (name "awscli")
d5ccf71e 8695 (version "1.11.5")
f861b8b8
DT
8696 (source
8697 (origin
8698 (method url-fetch)
d5ccf71e 8699 (uri (pypi-uri name version))
f861b8b8
DT
8700 (sha256
8701 (base32
d5ccf71e 8702 "0lclasm0wnayd3b8zl9l91i32nbgrhh0ncf9lksss4cv0myfwmfg"))))
f861b8b8 8703 (build-system python-build-system)
482d9591 8704 (propagated-inputs
f861b8b8 8705 `(("python-colorama" ,python-colorama)
482d9591
HG
8706 ("python-botocore" ,python-botocore)
8707 ("python-s3transfer" ,python-s3transfer)
f861b8b8 8708 ("python-docutils" ,python-docutils)
482d9591 8709 ("python-rsa" ,python-rsa)))
d4649177 8710 (native-inputs
482d9591 8711 `(("python-mock" ,python-mock)
f861b8b8 8712 ("python-nose" ,python-nose)
f861b8b8
DT
8713 ("python-sphinx" ,python-sphinx)
8714 ("python-tox" ,python-tox)
482d9591 8715 ("python-wheel" ,python-wheel)))
f861b8b8
DT
8716 (home-page "http://aws.amazon.com/cli/")
8717 (synopsis "Command line client for AWS")
8718 (description "AWS CLI provides a unified command line interface to the
8719Amazon Web Services (AWS) API.")
3f641af0 8720 (license license:asl2.0)))
6a44697d
LF
8721
8722(define-public python-hypothesis
8723 (package
8724 (name "python-hypothesis")
bea6d94d 8725 (version "3.1.0")
6a44697d
LF
8726 (source (origin
8727 (method url-fetch)
8728 (uri (pypi-uri "hypothesis" version))
8729 (sha256
8730 (base32
bea6d94d 8731 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 8732 (build-system python-build-system)
6a44697d
LF
8733 (propagated-inputs
8734 `(("python-flake8" ,python-flake8)
8735 ("python-pytest" ,python-pytest)))
8736 (synopsis "Library for property based testing")
8737 (description "Hypothesis is a library for testing your Python code against a
8738much larger range of examples than you would ever want to write by hand. It’s
8739based on the Haskell library, Quickcheck, and is designed to integrate
8740seamlessly into your existing Python unit testing work flow.")
8741 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 8742 (license license:mpl2.0)
6f068e08 8743 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
8744
8745(define-public python2-hypothesis
6f068e08
EF
8746 (let ((hypothesis (package-with-python2
8747 (strip-python2-variant python-hypothesis))))
8748 (package (inherit hypothesis)
8749 (native-inputs
f3b98f4f 8750 `(("python2-enum34" ,python2-enum34))))))
7517e73c
LF
8751
8752(define-public python-pytest-subtesthack
8753 (package
8754 (name "python-pytest-subtesthack")
8755 (version "0.1.1")
8756 (source (origin
8757 (method url-fetch)
8758 (uri (pypi-uri "pytest-subtesthack" version))
8759 (sha256
8760 (base32
8761 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
8762 (build-system python-build-system)
7517e73c
LF
8763 (propagated-inputs
8764 `(("python-pytest" ,python-pytest)))
8765 (synopsis "Set-up and tear-down fixtures for unit tests")
8766 (description "This plugin allows you to set up and tear down fixtures within
8767unit test functions that use @code{py.test}. This is useful for using
8768@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
8769function multiple times, without setting up or tearing down fixture state as is
8770normally the case.")
8771 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 8772 (license license:unlicense)))
7517e73c
LF
8773
8774(define-public python2-pytest-subtesthack
8775 (package-with-python2 python-pytest-subtesthack))
0bdc1671
CAW
8776
8777(define-public python2-xdo
8778 (package
8779 (name "python2-xdo")
8780 (version "0.2")
8781 (source (origin
8782 (method url-fetch)
8783 (uri (string-append
8784 "http://http.debian.net/debian/pool/main/p/python-xdo/"
8785 "python-xdo_" version ".orig.tar.gz"))
8786 (sha256
8787 (base32
8788 "1kl5c1p0dyxf62plnk6fl77ycfb4whwjms16r14dxx8kn90hlqz4"))))
8789 (build-system python-build-system)
8790 (arguments
8791 `(#:python ,python-2
8792 #:tests? #f)) ; no tests provided
8793 (inputs
8794 `(("xdotool" ,xdotool)
8795 ("libX11" ,libx11)))
8796 (home-page "https://tracker.debian.org/pkg/python-xdo")
8797 (synopsis "Python library for simulating X11 keyboard/mouse input")
8798 (description "Provides bindings to libxdo for manipulating X11 via simulated
8799input. (Note that this is mostly a legacy library; you may wish to look at
8800python-xdo for newer bindings.)")
3f641af0 8801 (license license:bsd-3)))
0bdc1671 8802
cb34dc6c
CAW
8803(define-public python-wtforms
8804 (package
8805 (name "python-wtforms")
8806 (version "2.1")
8807 (source
8808 (origin
8809 (method url-fetch)
8810 (uri (pypi-uri "WTForms" version ".zip"))
8811 (sha256
8812 (base32
8813 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
8814 (build-system python-build-system)
13c4d874
EF
8815 (arguments
8816 '(#:phases
8817 (modify-phases %standard-phases
8818 (add-after 'unpack 'remove-django-test
8819 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
8820 (lambda _
8821 (substitute*
8822 "tests/runtests.py"
8823 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
8824 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
8825 #t)))))
cb34dc6c
CAW
8826 (native-inputs
8827 `(("unzip" ,unzip)))
8828 (home-page "http://wtforms.simplecodes.com/")
8829 (synopsis
8830 "Form validation and rendering library for Python web development")
8831 (description
8832 "WTForms is a flexible forms validation and rendering library
8833for Python web development. It is very similar to the web form API
8834available in Django, but is a standalone package.")
f210e944 8835 (license license:bsd-3)))
cb34dc6c
CAW
8836
8837(define-public python2-wtforms
f210e944 8838 (package-with-python2 python-wtforms))
50aaec25
DT
8839
8840(define-public python-mako
8841 (package
8842 (name "python-mako")
8843 (version "1.0.3")
8844 (source
8845 (origin
8846 (method url-fetch)
8847 (uri (pypi-uri "Mako" version))
8848 (sha256
8849 (base32
8850 "136kcjbs0s98qkx8a418b05dfblqp0kiiqyx8vhx4rarwc7bqi3n"))))
8851 (build-system python-build-system)
482d9591
HG
8852 (propagated-inputs
8853 `(("python-markupsafe" ,python-markupsafe)))
50aaec25 8854 (native-inputs
482d9591 8855 `(("python-mock" ,python-mock)
50aaec25
DT
8856 ("python-nose" ,python-nose)))
8857 (home-page "http://www.makotemplates.org/")
8858 (synopsis "Templating language for Python")
8859 (description "Mako is a templating language for Python that compiles
8860templates into Python modules.")
f210e944 8861 (license license:expat)))
50aaec25
DT
8862
8863(define-public python2-mako
f210e944 8864 (package-with-python2 python-mako))
ae00a41f
CAW
8865
8866(define-public python-waitress
8867 (package
8868 (name "python-waitress")
8869 (version "0.8.10")
8870 (source
8871 (origin
8872 (method url-fetch)
8873 (uri (pypi-uri "waitress" version))
8874 (sha256
8875 (base32
8876 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
8877 (build-system python-build-system)
8878 (home-page "https://github.com/Pylons/waitress")
8879 (synopsis "Waitress WSGI server")
8880 (description "Waitress is meant to be a production-quality pure-Python WSGI
8881server with very acceptable performance.")
f210e944 8882 (license license:zpl2.1)))
ae00a41f
CAW
8883
8884(define-public python2-waitress
f210e944 8885 (package-with-python2 python-waitress))
778a284b
CAW
8886
8887(define-public python-wsgiproxy2
8888 (package
8889 (name "python-wsgiproxy2")
8890 (version "0.4.2")
8891 (source
8892 (origin
8893 (method url-fetch)
8894 (uri (pypi-uri "WSGIProxy2" version ".zip"))
8895 (sha256
8896 (base32
8897 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
8898 (build-system python-build-system)
e359b31a
LF
8899 (arguments
8900 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
8901 ;; support Python 3:
8902 ;; https://github.com/benoitc/restkit/issues/140
8903 #:tests? #f))
778a284b
CAW
8904 (native-inputs
8905 `(("unzip" ,unzip)
8906 ("python-nose" ,python-nose)
8907 ("python-coverage" ,python-coverage)))
8908 (propagated-inputs
8909 `(("python-six" ,python-six)
8910 ("python-webob" ,python-webob)))
8911 (home-page
8912 "https://github.com/gawel/WSGIProxy2/")
8913 (synopsis "WSGI Proxy with various http client backends")
8914 (description "WSGI turns HTTP requests into WSGI function calls.
8915WSGIProxy turns WSGI function calls into HTTP requests.
8916It also includes code to sign requests and pass private data,
8917and to spawn subprocesses to handle requests.")
f210e944 8918 (license license:expat)))
778a284b
CAW
8919
8920(define-public python2-wsgiproxy2
f210e944 8921 (package-with-python2 python-wsgiproxy2))
bb7518b1
CAW
8922
8923(define-public python-pastedeploy
8924 (package
8925 (name "python-pastedeploy")
8926 (version "1.5.2")
8927 (source
8928 (origin
8929 (method url-fetch)
8930 (uri (pypi-uri "PasteDeploy" version))
8931 (sha256
8932 (base32
8933 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
8934 (build-system python-build-system)
8935 (native-inputs
8936 `(("python-nose" ,python-nose)))
bb7518b1
CAW
8937 (home-page "http://pythonpaste.org/deploy/")
8938 (synopsis
8939 "Load, configure, and compose WSGI applications and servers")
8940 (description
8941 "This tool provides code to load WSGI applications and servers from URIs;
8942these URIs can refer to Python Eggs for INI-style configuration files. Paste
8943Script provides commands to serve applications based on this configuration
8944file.")
8945 (license license:expat)))
8946
8947(define-public python2-pastedeploy
8948 (package-with-python2 python-pastedeploy))
1cf53652 8949
c4a7904c
CAW
8950(define-public python-paste
8951 (package
8952 (name "python-paste")
8953 (version "2.0.2")
8954 (source
8955 (origin
8956 (method url-fetch)
8957 (uri (pypi-uri "Paste" version))
8958 (sha256
8959 (base32
8960 "16dsv9qi0r4qsrsb6dilpq2rx0fnglvh36flzywcdnm2jg43mb5d"))
fc1adab1
AK
8961 (patches (search-patches "python-paste-remove-website-test.patch"
8962 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
8963 (build-system python-build-system)
8964 (native-inputs
8965 `(("python-nose" ,python-nose)))
8966 (propagated-inputs
f3b98f4f 8967 `(("python-six" ,python-six)))
c4a7904c
CAW
8968 (arguments
8969 '(;; Tests don't pass on Python 3, but work fine on Python 2.
8970 ;; (As of 2.0.2, Python 3 support in Paste is presently a bit broken,
8971 ;; but is usable enough for the minimal amount it's used in MediaGoblin
8972 ;; still... things should be better by the next Paste release.)
8973 #:tests? #f))
8974 (home-page "http://pythonpaste.org")
8975 (synopsis
8976 "Python web development tools, focusing on WSGI")
8977 (description
8978 "Paste provides a variety of web development tools and middleware which
8979can be nested together to build web applications. Paste's design closely
8980follows ideas flowing from WSGI (Web Standard Gateway Interface).")
8981 (license license:expat)
8982 (properties `((python2-variant . ,(delay python2-paste))))))
8983
8984(define-public python2-paste
8985 (let ((paste (package-with-python2
8986 (strip-python2-variant python-paste))))
8987 (package
8988 (inherit paste)
8989 (arguments
8990 ;; Tests are back for Python 2!
8991 `(#:tests? #t
8992 ,@(package-arguments paste))))))
8993
a8f20f63
CAW
8994(define-public python-pastescript
8995 (package
8996 (name "python-pastescript")
8997 (version "2.0.2")
8998 (source
8999 (origin
9000 (method url-fetch)
9001 (uri (pypi-uri "PasteScript" version))
9002 (sha256
9003 (base32
9004 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
9005 (build-system python-build-system)
9006 (native-inputs
9007 `(("python-nose" ,python-nose)))
9008 (propagated-inputs
f3b98f4f 9009 `(("python-paste" ,python-paste)
a8f20f63
CAW
9010 ("python-pastedeploy" ,python-pastedeploy)))
9011 (home-page "http://pythonpaste.org/script/")
9012 (arguments
9013 '(;; Unfortunately, this requires the latest unittest2,
9014 ;; but that requires traceback2 which requires linecache2 which requires
9015 ;; unittest2. So we're skipping tests for now.
9016 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
9017 ;; so in theory we could get around this situation somehow.)
9018 #:tests? #f))
9019 (synopsis
9020 "Pluggable command line tool for serving web applications and more")
9021 (description
9022 "PasteScript is a plugin-friendly command line tool which provides a
9023variety of features, from launching web applications to bootstrapping project
9024layouts.")
9025 (license license:expat)))
9026
9027(define-public python2-pastescript
9028 (package-with-python2 python-pastescript))
9029
1cf53652
CAW
9030(define-public python-pyquery
9031 (package
9032 (name "python-pyquery")
aab76e80 9033 (version "1.2.13")
1cf53652
CAW
9034 (source
9035 (origin
9036 (method url-fetch)
9037 (uri (pypi-uri "pyquery" version))
9038 (sha256
9039 (base32
aab76e80 9040 "0j9fsisip21qv4xljsg5dmni1pgpvwrjyyhhql0glydc4bs5rjgv"))))
1cf53652 9041 (build-system python-build-system)
2ddbfa8c
LF
9042 (native-inputs
9043 `(("python-webob" ,python-webob)
9044 ("python-webtest" ,python-webtest)))
1cf53652
CAW
9045 (propagated-inputs
9046 `(("python-lxml" ,python-lxml)
9047 ("python-cssselect" ,python-cssselect)))
9048 (home-page "https://github.com/gawel/pyquery")
9049 (synopsis "Make jQuery-like queries on xml documents")
9050 (description "pyquery allows you to make jQuery queries on xml documents.
9051The API is as much as possible the similar to jQuery. pyquery uses lxml for
9052fast xml and html manipulation.")
f210e944 9053 (license license:bsd-3)))
1cf53652
CAW
9054
9055(define-public python2-pyquery
f210e944 9056 (package-with-python2 python-pyquery))
aa6313d6
CAW
9057
9058(define-public python-webtest
9059 (package
9060 (name "python-webtest")
9061 (version "2.0.20")
9062 (source
9063 (origin
9064 (method url-fetch)
9065 (uri (pypi-uri "WebTest" version))
9066 (sha256
9067 (base32
9068 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
9069 (build-system python-build-system)
9070 (arguments
9071 `(;; Unfortunately we have to disable tests!
9072 ;; This release of WebTest is pinned to python-nose < 1.3,
9073 ;; but older versions of python-nose are plagued with the following
9074 ;; bug(s), which rears its ugly head during test execution:
9075 ;; https://github.com/nose-devs/nose/issues/759
9076 ;; https://github.com/nose-devs/nose/pull/811
9077 #:tests? #f))
9078 ;; Commented out code is no good, but in this case, once tests
9079 ;; are ready to be enabled again, we should put the following
9080 ;; in place:
9081 ;; (native-inputs
9082 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
9083 ;; ; but see above comment
9084 ;; ("python-coverage" ,python-coverage)
9085 ;; ("python-mock" ,python-mock)
9086 ;; ("python-pastedeploy" ,python-pastedeploy)
9087 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
9088 ;; ("python-pyquery" ,python-pyquery)))
9089 (propagated-inputs
9090 `(("python-waitress" ,python-waitress)
9091 ("python-webob" ,python-webob)
9092 ("python-six" ,python-six)
9093 ("python-beautifulsoup4" ,python-beautifulsoup4)))
9094 (home-page "http://webtest.pythonpaste.org/")
9095 (synopsis "Helper to test WSGI applications")
9096 (description "Webtest allows you to test your Python web applications
9097without starting an HTTP server. It supports anything that supports the
9098minimum of WSGI.")
f210e944 9099 (license license:expat)))
aa6313d6
CAW
9100
9101(define-public python2-webtest
f210e944 9102 (package-with-python2 python-webtest))
4cb122cd
CAW
9103
9104(define-public python-anyjson
9105 (package
9106 (name "python-anyjson")
9107 (version "0.3.3")
9108 (source
9109 (origin
9110 (method url-fetch)
9111 (uri (pypi-uri "anyjson" version))
9112 (sha256
9113 (base32
9114 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
9115 (build-system python-build-system)
9116 (arguments
9117 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
9118 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
9119 ;; whatever) so this transformation needs to be done before the tests
9120 ;; can be run. Maybe we could add a build step to transform beforehand
9121 ;; but it could be annoying/difficult.
9122 ;; We can enable tests for the Python 2 version, though, and do below.
9123 #:tests? #f))
9124 (home-page "http://bitbucket.org/runeh/anyjson/")
9125 (synopsis
9126 "Wraps best available JSON implementation in a common interface")
9127 (description
9128 "Anyjson loads whichever is the fastest JSON module installed
9129and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 9130 (license license:bsd-3)
4cb122cd
CAW
9131 (properties `((python2-variant . ,(delay python2-anyjson))))))
9132
9133(define-public python2-anyjson
9134 (let ((anyjson (package-with-python2
9135 (strip-python2-variant python-anyjson))))
9136 (package
9137 (inherit anyjson)
9138 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
9139 #:tests? #t
9140 ,@(package-arguments anyjson)))
00e10c6e 9141 (native-inputs `(("python2-nose" ,python2-nose))))))
8dfceab7
CAW
9142
9143(define-public python-amqp
9144 (package
9145 (name "python-amqp")
9146 (version "1.4.9")
9147 (source
9148 (origin
9149 (method url-fetch)
9150 (uri (pypi-uri "amqp" version))
9151 (sha256
9152 (base32
9153 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
9154 (build-system python-build-system)
9155 (native-inputs
9156 `(("python-nose" ,python-nose)
9157 ("python-mock" ,python-mock)))
9158 (home-page "http://github.com/celery/py-amqp")
9159 (synopsis
9160 "Low-level AMQP client for Python (fork of amqplib)")
9161 (description
9162 "This is a fork of amqplib which was originally written by Barry Pederson.
9163It is maintained by the Celery project, and used by kombu as a pure python
9164alternative when librabbitmq is not available.")
3f641af0 9165 (license license:lgpl2.1+)
8dfceab7
CAW
9166 (properties `((python2-variant . ,(delay python2-amqp))))))
9167
9168(define-public python2-amqp
9169 (let ((amqp (package-with-python2
9170 (strip-python2-variant python-amqp))))
9171 (package
9172 (inherit amqp)
9173 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
9174 ;; unmaintained. Weirdly, does not do this on the python 3
9175 ;; version?
9176 #:tests? #f
00e10c6e 9177 ,@(package-arguments amqp))))))
7d387305
CAW
9178
9179(define-public python-kombu
9180 (package
9181 (name "python-kombu")
0cb59822 9182 (version "3.0.37")
7d387305
CAW
9183 (source
9184 (origin
9185 (method url-fetch)
9186 (uri (pypi-uri "kombu" version))
9187 (sha256
9188 (base32
0cb59822 9189 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
7d387305
CAW
9190 (build-system python-build-system)
9191 (native-inputs
9192 `(("python-mock" ,python-mock)
9193 ("python-nose" ,python-nose)))
9194 (propagated-inputs
9195 `(("python-anyjson" ,python-anyjson)
0cb59822
LF
9196 ("python-amqp" ,python-amqp)
9197 ("python-redis" ,python-redis)))
7d387305
CAW
9198 (home-page "http://kombu.readthedocs.org")
9199 (synopsis "Message passing library for Python")
9200 (description "The aim of Kombu is to make messaging in Python as easy as
9201possible by providing an idiomatic high-level interface for the AMQ protocol,
9202and also provide proven and tested solutions to common messaging problems.
9203AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
9204message orientation, queuing, routing, reliability and security, for which the
9205RabbitMQ messaging server is the most popular implementation.")
3f641af0 9206 (license license:bsd-3)
7d387305
CAW
9207 (properties `((python2-variant . ,(delay python2-kombu))))))
9208
9209(define-public python2-kombu
9210 (let ((kombu (package-with-python2
9211 (strip-python2-variant python-kombu))))
9212 (package
9213 (inherit kombu)
328bb95d
HG
9214 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9215 ,@(package-native-inputs kombu))))))
b6f0b9fb
CAW
9216
9217(define-public python-billiard
9218 (package
9219 (name "python-billiard")
a6bb9e44 9220 (version "3.3.0.23")
b6f0b9fb
CAW
9221 (source
9222 (origin
9223 (method url-fetch)
9224 (uri (pypi-uri "billiard" version))
9225 (sha256
9226 (base32
a6bb9e44 9227 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
b6f0b9fb
CAW
9228 (build-system python-build-system)
9229 (native-inputs
9230 `(("python-nose" ,python-nose)))
9231 (home-page "http://github.com/celery/billiard")
9232 (synopsis
9233 "Python multiprocessing fork with improvements and bugfixes")
9234 (description
9235 "Billiard is a fork of the Python 2.7 multiprocessing package. The
9236multiprocessing package itself is a renamed and updated version of R Oudkerk's
9237pyprocessing package. This standalone variant is intended to be compatible with
9238Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 9239 (license license:bsd-3)
b6f0b9fb
CAW
9240 (properties `((python2-variant . ,(delay python2-billiard))))))
9241
9242(define-public python2-billiard
9243 (let ((billiard (package-with-python2
9244 (strip-python2-variant python-billiard))))
9245 (package
9246 (inherit billiard)
00e10c6e 9247 (native-inputs `(("python2-unittest2" ,python2-unittest2)
b6f0b9fb
CAW
9248 ("python2-mock" ,python2-mock)
9249 ,@(package-native-inputs billiard))))))
22df6419
CAW
9250
9251(define-public python-celery
9252 (package
9253 (name "python-celery")
9ebe87fe 9254 (version "3.1.24")
22df6419
CAW
9255 (source
9256 (origin
9257 (method url-fetch)
9258 (uri (pypi-uri "celery" version))
9259 (sha256
9260 (base32
9ebe87fe 9261 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
22df6419 9262 (build-system python-build-system)
9ebe87fe
LF
9263 (arguments
9264 `(#:phases
9265 (modify-phases %standard-phases
9266 ;; These tests break with Python 3.5:
9267 ;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
9268 (replace 'check
9269 (lambda _
9270 (zero?
9271 (system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
22df6419
CAW
9272 (native-inputs
9273 `(("python-nose" ,python-nose)))
f22efa01 9274 (propagated-inputs
22df6419
CAW
9275 `(("python-pytz" ,python-pytz)
9276 ("python-billiard" ,python-billiard)
9277 ("python-kombu" ,python-kombu)))
9278 (home-page "http://celeryproject.org")
9279 (synopsis "Distributed Task Queue")
9280 (description "Celery is an asynchronous task queue/job queue based on
9281distributed message passing. It is focused on real-time operation, but
9282supports scheduling as well. The execution units, called tasks, are executed
9283concurrently on a single or more worker servers using multiprocessing,
9284Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
9285synchronously (wait until ready).")
3f641af0 9286 (license license:bsd-3)
22df6419
CAW
9287 (properties `((python2-variant . ,(delay python2-celery))))))
9288
9289(define-public python2-celery
9290 (let ((celery (package-with-python2
9291 (strip-python2-variant python-celery))))
9292 (package
9293 (inherit celery)
00e10c6e 9294 (native-inputs `(("python2-unittest2" ,python2-unittest2)
22df6419
CAW
9295 ("python2-mock" ,python2-mock)
9296 ,@(package-native-inputs celery))))))
97e32948
CAW
9297
9298(define-public python-translitcodec
9299 (package
9300 (name "python-translitcodec")
9301 (version "0.4.0")
9302 (source
9303 (origin
9304 (method url-fetch)
9305 (uri (pypi-uri "translitcodec" version))
9306 (sha256
9307 (base32
9308 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
9309 (build-system python-build-system)
9310 (arguments
9311 `(#:tests? #f)) ; no tests provided
9312 (home-page
9313 "https://github.com/claudep/translitcodec")
9314 (synopsis
9315 "Unicode to 8-bit charset transliteration codec")
9316 (description
9317 "This package contains codecs for transliterating ISO 10646 texts into
9318best-effort representations using smaller coded character sets (ASCII,
9319ISO 8859, etc.).")
f210e944 9320 (license license:expat)))
97e32948
CAW
9321
9322(define-public python2-translitcodec
f210e944 9323 (package-with-python2 python-translitcodec))
0c3b90d4
CAW
9324
9325(define-public python-editor
9326 (package
9327 (name "python-editor")
9328 (version "0.5")
9329 (source
9330 (origin
9331 (method url-fetch)
9332 (uri (pypi-uri "python-editor" version))
9333 (sha256
9334 (base32
9335 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
9336 (build-system python-build-system)
9337 (home-page
9338 "https://github.com/fmoo/python-editor")
9339 (synopsis
9340 "Programmatically open an editor, capture the result")
9341 (description
9342 "python-editor is a library that provides the editor module for
9343programmatically interfacing with your system's $EDITOR.")
f210e944 9344 (license license:asl2.0)))
0c3b90d4
CAW
9345
9346(define-public python2-editor
f210e944 9347 (package-with-python2 python-editor))
3276517c
LF
9348
9349(define-public python-sphinxcontrib-programoutput
9350 (package
9351 (name "python-sphinxcontrib-programoutput")
9352 (version "0.8")
9353 (source (origin
9354 (method url-fetch)
9355 (uri (pypi-uri "sphinxcontrib-programoutput" version))
9356 (sha256
9357 (base32
9358 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
9359 (build-system python-build-system)
9360 (propagated-inputs
a0a09859 9361 `(("python-sphinx" ,python-sphinx)))
3276517c
LF
9362 (synopsis "Sphinx extension to include program output")
9363 (description "A Sphinx extension to literally insert the output of arbitrary
9364commands into documents, helping you to keep your command examples up to date.")
9365 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
f210e944 9366 (license license:bsd-2)))
3276517c
LF
9367
9368(define-public python2-sphinxcontrib-programoutput
f210e944 9369 (package-with-python2 python-sphinxcontrib-programoutput))
548d7165
LF
9370
9371(define-public python-sphinx-repoze-autointerface
9372 (package
9373 (name "python-sphinx-repoze-autointerface")
328ae341 9374 (version "0.8")
548d7165
LF
9375 (source (origin
9376 (method url-fetch)
9377 (uri (pypi-uri "repoze.sphinx.autointerface" version))
9378 (sha256
9379 (base32
328ae341 9380 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165
LF
9381 (build-system python-build-system)
9382 (propagated-inputs
47c7dc4a 9383 `(("python-sphinx" ,python-sphinx)
548d7165
LF
9384 ("python-zope-interface" ,python-zope-interface)))
9385 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
9386 (description "This package defines an extension for the Sphinx documentation
9387system. The extension allows generation of API documentation by
9388introspection of @code{zope.interface} instances in code.")
9389 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 9390 (license license:repoze)))
548d7165
LF
9391
9392(define-public python2-sphinx-repoze-autointerface
9393 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
9394
9395(define-public python-psycopg2
9396 (package
9397 (name "python-psycopg2")
9398 (version "2.6.1")
9399 (source
9400 (origin
9401 (method url-fetch)
9402 (uri (pypi-uri "psycopg2" version))
9403 (sha256
9404 (base32
9405 "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva"))))
9406 (build-system python-build-system)
9407 (arguments
9408 ;; Tests would require a postgresql database "psycopg2_test"
9409 ;; and a running postgresql database management service.
9410 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
9411 (inputs
9412 `(("postgresql" ,postgresql))) ; libpq
9413 (home-page "http://initd.org/psycopg/")
9414 (synopsis "Python PostgreSQL adapter")
9415 (description
9416 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
f210e944 9417 (license license:lgpl3+)))
b31fbea5
DM
9418
9419(define-public python2-psycopg2
f210e944 9420 (package-with-python2 python-psycopg2))
eed1a61f
LF
9421
9422(define-public python-vobject
9423 (package
9424 (name "python-vobject")
9bed9b15 9425 (version "0.9.2")
eed1a61f
LF
9426 (source (origin
9427 (method url-fetch)
9428 (uri (pypi-uri "vobject" version))
9429 (sha256
9430 (base32
9bed9b15 9431 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
eed1a61f 9432 (build-system python-build-system)
a9871b7b
LF
9433 (arguments
9434 '(;; The test suite relies on some non-portable Windows interfaces.
9435 #:tests? #f))
f22efa01 9436 (propagated-inputs
eed1a61f
LF
9437 `(("python-dateutil-2" ,python-dateutil-2)
9438 ("python-pyicu" ,python-pyicu)))
9439 (synopsis "Parse and generate vCard and vCalendar files")
9440 (description "Vobject is intended to be a full featured Python package for
9441parsing and generating vCard and vCalendar files. Currently, iCalendar files
9442are supported and well tested. vCard 3.0 files are supported, and all data
9443should be imported, but only a few components are understood in a sophisticated
9444way.")
9445 (home-page "http://eventable.github.io/vobject/")
f210e944 9446 (license license:asl2.0)))
eed1a61f
LF
9447
9448(define-public python2-vobject
f210e944 9449 (package-with-python2 python-vobject))
cedac813
LF
9450
9451(define-public python-munkres
9452 (package
9453 (name "python-munkres")
38e81a2c 9454 (version "1.0.8")
cedac813
LF
9455 (source (origin
9456 (method url-fetch)
9457 (uri (pypi-uri "munkres" version))
9458 (sha256
9459 (base32
38e81a2c 9460 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
cedac813
LF
9461 (build-system python-build-system)
9462 (arguments
9463 '(#:tests? #f)) ; no test suite
9464 (home-page "http://software.clapper.org/munkres/")
9465 (synopsis "Implementation of the Munkres algorithm")
9466 (description "The Munkres module provides an implementation of the Munkres
9467algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
9468useful for solving the Assignment Problem.")
3f641af0 9469 (license license:bsd-3)))
cedac813
LF
9470
9471(define-public python2-munkres
9472 (package-with-python2 python-munkres))
f3b3d78f
LF
9473
9474(define-public python-flask
9475 (package
9476 (name "python-flask")
c6c80104 9477 (version "0.11.1")
f3b3d78f
LF
9478 (source (origin
9479 (method url-fetch)
9480 (uri (pypi-uri "Flask" version))
9481 (sha256
9482 (base32
c6c80104 9483 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
f3b3d78f
LF
9484 (build-system python-build-system)
9485 (propagated-inputs
9486 `(("python-itsdangerous" ,python-itsdangerous)
9487 ("python-jinja2" ,python-jinja2)
8f35c030 9488 ("python-click" ,python-click)
f3b3d78f
LF
9489 ("python-werkzeug" ,python-werkzeug)))
9490 (home-page "https://github.com/mitsuhiko/flask/")
9491 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
9492 (description "Flask is a micro web framework based on the Werkzeug toolkit
9493and Jinja2 template engine. It is called a micro framework because it does not
9494presume or force a developer to use a particular tool or library.")
f210e944 9495 (license license:bsd-3)))
f3b3d78f
LF
9496
9497(define-public python2-flask
f210e944 9498 (package-with-python2 python-flask))
603d665b 9499
a7ad802b 9500(define-public python-flask-wtf
9501 (package
9502 (name "python-flask-wtf")
9503 (version "0.13.1")
9504 (source
9505 (origin
9506 (method url-fetch)
9507 (uri (pypi-uri "Flask-WTF" version))
9508 (sha256
9509 (base32
9510 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
9511 (build-system python-build-system)
9512 (propagated-inputs
9513 `(("python-flask-babel" ,python-flask-babel)
9514 ("python-babel" ,python-babel)
9515 ("python-wtforms" ,python-wtforms)))
9516 (native-inputs
9517 `(("python-nose" ,python-nose)))
9518 (home-page "https://github.com/lepture/flask-wtf")
9519 (synopsis "Simple integration of Flask and WTForms")
9520 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
9521upload, and reCAPTCHA.")
9522 (license license:bsd-3)))
9523
9524(define-public python2-flask-wtf
9525 (package-with-python2 python-flask-wtf))
9526
a2c7d88e 9527(define-public python-flask-multistatic
9528 (package
9529 (name "python-flask-multistatic")
9530 (version "1.0")
9531 (source
9532 (origin
9533 (method url-fetch)
9534 (uri (pypi-uri "flask-multistatic" version))
9535 (sha256
9536 (base32
9537 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
9538 (build-system python-build-system)
9539 (propagated-inputs
9540 `(("python-flask" ,python-flask)))
9541 (home-page "https://pagure.io/flask-multistatic")
9542 (synopsis "Flask plugin to allow overriding static files")
9543 (description "@code{flask-multistatic} is a flask plugin that adds support
9544for overriding static files.")
9545 (license license:gpl3+)))
9546
9547(define-public python2-flask-multistatic
9548 (package-with-python2 python-flask-multistatic))
9549
603d665b
LF
9550(define-public python-cookies
9551 (package
9552 (name "python-cookies")
9553 (version "2.2.1")
9554 (source (origin
9555 (method url-fetch)
9556 (uri (pypi-uri "cookies" version))
9557 (sha256
9558 (base32
9559 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
9560 (build-system python-build-system)
9561 (arguments
9562 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
9563 #:tests? #f))
9564 (native-inputs
9565 `(("python-pytest" ,python2-pytest)))
9566 (synopsis "HTTP cookie parser and renderer")
9567 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
9568Python.")
9569 (home-page "https://gitlab.com/sashahart/cookies")
f210e944 9570 (license license:expat)))
603d665b
LF
9571
9572(define-public python2-cookies
f210e944 9573 (package-with-python2 python-cookies))
0efde7d6
LF
9574
9575(define-public python-responses
9576 (package
9577 (name "python-responses")
9578 (version "0.5.1")
9579 (source (origin
9580 (method url-fetch)
9581 (uri (pypi-uri "responses" version))
9582 (sha256
9583 (base32
9584 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
9585 (build-system python-build-system)
9586 (arguments
9587 `(;; Test suite is not distributed:
9588 ;; https://github.com/getsentry/responses/issues/38
9589 #:tests? #f))
9590 (native-inputs
d8ea5f2f 9591 `(("python-mock" ,python-mock)))
0efde7d6
LF
9592 (propagated-inputs
9593 `(("python-requests" ,python-requests)
d8ea5f2f 9594 ("python-cookies" ,python-cookies)
0efde7d6
LF
9595 ("python-six" ,python-six)))
9596 (home-page "https://github.com/getsentry/responses")
9597 (synopsis "Utility for mocking out the `requests` Python library")
9598 (description "A utility library for mocking out the `requests` Python
9599library.")
f210e944 9600 (license license:asl2.0)))
0efde7d6
LF
9601
9602(define-public python2-responses
f210e944 9603 (package-with-python2 python-responses))
76b94885 9604
b7afd018
RW
9605(define-public python-whoosh
9606 (package
9607 (name "python-whoosh")
9608 (version "2.7.4")
9609 (source
9610 (origin
9611 (method url-fetch)
9612 (uri (pypi-uri "Whoosh" version))
9613 (sha256
9614 (base32
9615 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
9616 (build-system python-build-system)
9617 (native-inputs
f3b98f4f 9618 `(("python-pytest" ,python-pytest)))
b7afd018
RW
9619 (home-page "http://bitbucket.org/mchaput/whoosh")
9620 (synopsis "Full text indexing, search, and spell checking library")
9621 (description
9622 "Whoosh is a fast, pure-Python full text indexing, search, and spell
9623checking library.")
9624 (license license:bsd-2)))
9625
9626(define-public python2-whoosh
9627 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
9628 (package (inherit whoosh)
9629 (propagated-inputs
9630 `(("python2-backport-ssl-match-hostname"
9631 ,python2-backport-ssl-match-hostname)
9632 ,@(package-propagated-inputs whoosh))))))
9633
76b94885
LF
9634(define-public python-pathlib
9635 (package
9636 (name "python-pathlib")
9637 (version "1.0.1")
9638 (source (origin
9639 (method url-fetch)
9640 (uri (pypi-uri "pathlib" version))
9641 (sha256
9642 (base32
9643 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
9644 (build-system python-build-system)
92a312dc
RW
9645 ;; The tests depend on the internal "test" module, which does not provide
9646 ;; a stable interface.
9647 (arguments `(#:tests? #f))
76b94885 9648 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
9649 (synopsis "Object-oriented file system paths")
9650 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
9651It offers the following advantages over using string objects:
9652
9653@enumerate
9654@item No more cumbersome use of os and os.path functions. Everything can
9655be done easily through operators, attribute accesses, and method calls.
9656@item Embodies the semantics of different path types. For example,
9657comparing Windows paths ignores casing.
9658@item Well-defined semantics, eliminating any inconsistencies or
9659ambiguities (forward vs. backward slashes, etc.).
7a8894e8
HG
9660@end enumerate
9661
9662Note: In Python 3.4, pathlib is now part of the standard library. For other
9663Python versions please consider python-pathlib2 instead, which tracks the
9664standard library module. This module (python-pathlib) isn't maintained
9665anymore.")
76b94885
LF
9666 (license license:expat)))
9667
9668(define-public python2-pathlib
9669 (package-with-python2 python-pathlib))
25a7db0a 9670
b7703c81
HG
9671(define-public python2-pathlib2
9672 (package
9673 (name "python2-pathlib2")
9674 (version "2.1.0")
9675 (source (origin
9676 (method url-fetch)
9677 (uri (pypi-uri "pathlib2" version))
9678 (sha256
9679 (base32
9680 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
9681 (build-system python-build-system)
49a531f5
HG
9682 ;; We only need the the Python 2 variant, since for Python 3 our minimum
9683 ;; version is 3.4 which already includes this package as part of the
9684 ;; standard library.
b7703c81
HG
9685 (arguments
9686 `(#:python ,python-2))
9687 (native-inputs
f3b98f4f 9688 `(("python2-six" ,python2-six)))
b7703c81
HG
9689 (home-page "http://pypi.python.org/pypi/pathlib2/")
9690 (synopsis "Object-oriented file system paths - backport of standard
9691pathlib module")
9692 (description "The goal of pathlib2 is to provide a backport of standard
9693pathlib module which tracks the standard library module, so all the newest
9694features of the standard pathlib can be used also on older Python versions.
9695
9696Pathlib offers a set of classes to handle file system paths. It offers the
9697following advantages over using string objects:
9698
9699@enumerate
9700@item No more cumbersome use of os and os.path functions. Everything can
9701be done easily through operators, attribute accesses, and method calls.
9702@item Embodies the semantics of different path types. For example,
9703comparing Windows paths ignores casing.
9704@item Well-defined semantics, eliminating any inconsistencies or
9705ambiguities (forward vs. backward slashes, etc.).
9706@end enumerate")
9707 (license license:expat)))
9708
25a7db0a
LF
9709(define-public python-jellyfish
9710 (package
9711 (name "python-jellyfish")
8c4964dd 9712 (version "0.5.6")
25a7db0a
LF
9713 (source (origin
9714 (method url-fetch)
9715 (uri (pypi-uri "jellyfish" version))
9716 (sha256
9717 (base32
8c4964dd 9718 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
25a7db0a
LF
9719 (build-system python-build-system)
9720 (native-inputs
9721 `(("python-pytest" ,python-pytest)))
9722 (home-page "https://github.com/jamesturk/jellyfish")
9723 (synopsis "Approximate and phonetic matching of strings")
9724 (description "Jellyfish uses a variety of string comparison and phonetic
9725encoding algorithms to do fuzzy string matching.")
3f641af0 9726 (license license:bsd-2)
25a7db0a
LF
9727 (properties `((python2-variant . ,(delay python2-jellyfish))))))
9728
9729(define-public python2-jellyfish
9730 (let ((jellyfish (package-with-python2
9731 (strip-python2-variant python-jellyfish))))
9732 (package (inherit jellyfish)
00e10c6e 9733 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
25a7db0a 9734 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
9735
9736(define-public python2-unicodecsv
9737 (package
9738 (name "python2-unicodecsv")
9739 (version "0.14.1")
9740 (source (origin
9741 (method url-fetch)
9742 ;; The test suite is not included in the PyPi release.
9743 ;; https://github.com/jdunck/python-unicodecsv/issues/19
9744 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
9745 "archive/" version ".tar.gz"))
9746 (file-name (string-append name "-" version ".tar.gz"))
9747 (sha256
9748 (base32
9749 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
9750 (build-system python-build-system)
9751 (arguments
9752 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
9753 #:python ,python-2))
9754 (native-inputs
f3b98f4f 9755 `(("python2-unittest2" ,python2-unittest2)))
13edb0e5
LF
9756 (home-page "https://github.com/jdunck/python-unicodecsv")
9757 (synopsis "Unicode CSV module for Python 2")
9758 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
9759module, adding support for Unicode strings.")
3f641af0 9760 (license license:bsd-2)))
064503aa
LF
9761
9762(define-public python-rarfile
9763 (package
9764 (name "python-rarfile")
67824447 9765 (version "2.8")
064503aa
LF
9766 (source (origin
9767 (method url-fetch)
9768 (uri (pypi-uri "rarfile" version))
9769 (sha256
9770 (base32
67824447 9771 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
064503aa
LF
9772 (build-system python-build-system)
9773 (arguments
9774 '(#:phases
9775 (modify-phases %standard-phases
9776 (replace 'check
9777 ;; Many tests fail, but the installation proceeds.
9778 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
9779 (native-inputs
9780 `(("which" ,which))) ; required for tests
9781 (propagated-inputs
9782 `(("libarchive" ,libarchive)))
9783 (home-page "https://github.com/markokr/rarfile")
9784 (synopsis "RAR archive reader for Python")
9785 (description "This is Python module for RAR archive reading. The interface
9786is made as zipfile like as possible.")
3f641af0 9787 (license license:isc)))
064503aa
LF
9788
9789(define-public python2-rarfile
9790 (package-with-python2 python-rarfile))
daeeea71
CM
9791
9792(define-public python-magic
9793 (package
9794 (name "python-magic")
9795 (version "0.4.3")
9796 (source
9797 (origin
9798 (method url-fetch)
9799 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
9800 version ".tar.gz"))
9801 (sha256
9802 (base32
9803 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
9804 (file-name (string-append name "-" version "-checkout"))))
9805 (build-system python-build-system)
9806 (arguments
9807 ;; The tests are unreliable, so don't run them. The tests fail
9808 ;; under Python3 because they were written for Python2 and
9809 ;; contain import statements that do not work in Python3. One of
9810 ;; the tests fails under Python2 because its assertions are
9811 ;; overly stringent; it relies on comparing output strings which
9812 ;; are brittle and can change depending on the version of
9813 ;; libmagic being used and the system on which the test is
9814 ;; running. In my case, under GuixSD 0.10.0, only one test
9815 ;; failed, and it seems to have failed only because the version
9816 ;; of libmagic that is packaged in Guix outputs a slightly
9817 ;; different (but not wrong) string than the one that the test
9818 ;; expected.
9819 '(#:tests? #f
9820 #:phases (modify-phases %standard-phases
9821 ;; Replace a specific method call with a hard-coded
9822 ;; path to the necessary libmagic.so file in the
9823 ;; store. If we don't do this, then the method call
9824 ;; will fail to find the libmagic.so file, which in
9825 ;; turn will cause any application using
9826 ;; python-magic to fail.
9827 (add-before 'build 'hard-code-path-to-libmagic
9828 (lambda* (#:key inputs #:allow-other-keys)
9829 (let ((file (assoc-ref inputs "file")))
9830 (substitute* "magic.py"
9831 (("ctypes.util.find_library\\('magic'\\)")
9832 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
9833 #t)))
9834 (add-before 'install 'disable-egg-compression
9835 (lambda _
9836 (let ((port (open-file "setup.cfg" "a")))
9837 (display "\n[easy_install]\nzip_ok = 0\n"
9838 port)
9839 (close-port port)
9840 #t))))))
daeeea71
CM
9841 (inputs
9842 ;; python-magic needs to be able to find libmagic.so.
9843 `(("file" ,file)))
9844 (home-page "https://github.com/ahupp/python-magic")
9845 (synopsis "File type identification using libmagic")
9846 (description
9847 "This module uses ctypes to access the libmagic file type
9848identification library. It makes use of the local magic database and
9849supports both textual and MIME-type output. Note that this module and
9850the python-file module both provide a \"magic.py\" file; these two
9851modules, which are different and were developed separately, both serve
9852the same purpose: to provide Python bindings for libmagic.")
9853 (license license:expat)))
9854
9855(define-public python2-magic
9856 (package-with-python2 python-magic))
12af303f
CM
9857
9858(define-public python2-s3cmd
9859 (package
9860 (name "python2-s3cmd")
9861 (version "1.6.1")
9862 (source
9863 (origin
9864 (method url-fetch)
de67e922 9865 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
9866 "s3cmd-" version ".tar.gz"))
9867 (sha256
9868 (base32
9869 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
9870 (build-system python-build-system)
9871 (arguments
9872 ;; s3cmd is written for python2 only and contains no tests.
9873 `(#:python ,python-2
9874 #:tests? #f))
f22efa01 9875 (propagated-inputs
12af303f
CM
9876 `(("python2-dateutil" ,python2-dateutil)
9877 ;; The python-file package also provides a magic.py module.
9878 ;; This is an unfortunate state of affairs; however, s3cmd
9879 ;; fails to install if it cannot find specifically the
9880 ;; python-magic package. Thus we include it, instead of using
9881 ;; python-file. Ironically, s3cmd sometimes works better
9882 ;; without libmagic bindings at all:
9883 ;; https://github.com/s3tools/s3cmd/issues/198
9884 ("python2-magic" ,python2-magic)))
9885 (home-page "http://s3tools.org/s3cmd")
9886 (synopsis "Command line tool for S3-compatible storage services")
9887 (description
9888 "S3cmd is a command line tool for uploading, retrieving and managing data
9889in storage services that are compatible with the Amazon Simple Storage
9890Service (S3) protocol, including S3 itself. It supports rsync-like backup,
9891GnuPG encryption, and more. It also supports management of Amazon's
9892CloudFront content delivery network.")
3f641af0 9893 (license license:gpl2+)))
4323a5f0
AE
9894
9895(define-public python-pkgconfig
9896 (package
9897 (name "python-pkgconfig")
9898 (version "1.1.0")
9899 (source
9900 (origin
9901 (method url-fetch)
9902 (uri (pypi-uri "pkgconfig" version))
9903 (sha256
9904 (base32
9905 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
9906 (build-system python-build-system)
9907 (native-inputs
f3b98f4f 9908 `(("python-nose" ,python-nose)))
4323a5f0
AE
9909 (inputs
9910 `(("pkg-config" ,pkg-config)))
9911 (arguments
9912 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
9913 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
9914 #:tests? #f
4323a5f0
AE
9915 ;; Hard-code the path to pkg-config.
9916 #:phases
9917 (modify-phases %standard-phases
9918 (add-before
9919 'build 'patch
9920 (lambda _
9921 (substitute* "pkgconfig/pkgconfig.py"
9922 (("cmd = 'pkg-config")
9923 (string-append "cmd = '" (which "pkg-config"))))
9924 #t)))))
9925 (home-page "http://github.com/matze/pkgconfig")
9926 (synopsis "Python interface for pkg-config")
9927 (description "This module provides a Python interface to pkg-config. It
9928can be used to find all pkg-config packages, check if a package exists,
9929check if a package meets certain version requirements, query CFLAGS and
9930LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 9931 (license license:expat)))
4323a5f0
AE
9932
9933(define-public python2-pkgconfig
9934 (package-with-python2 python-pkgconfig))
9935
2e697322
BW
9936(define-public python-bz2file
9937 (package
9938 (name "python-bz2file")
9939 (version "0.98")
9940 (source
9941 (origin
9942 (method url-fetch)
9943 (uri (pypi-uri "bz2file" version))
9944 (sha256
9945 (base32
9946 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
9947 (build-system python-build-system)
9948 (arguments
124df723 9949 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
9950 (home-page "https://github.com/nvawda/bz2file")
9951 (synopsis "Read and write bzip2-compressed files")
9952 (description
9953 "Bz2file is a Python library for reading and writing bzip2-compressed
9954files. It contains a drop-in replacement for the I/O interface in the
9955standard library's @code{bz2} module, including features from the latest
9956development version of CPython that are not available in older releases.")
3f641af0 9957 (license license:asl2.0)
2e697322
BW
9958 (properties `((python2-variant . ,(delay python2-bz2file))))))
9959
9960(define-public python2-bz2file
9961 (let ((base (package-with-python2
9962 (strip-python2-variant python-bz2file))))
9963 (package
9964 (inherit base)
124df723 9965 (arguments
752bb447
BW
9966 `(#:python ,python-2
9967 #:phases
124df723
BW
9968 (modify-phases %standard-phases
9969 ;; 'python setup.py test' does not work as of 0.98.
9970 ;; There is only the one test file, so we run it directly.
9971 (replace 'check
9972 (lambda _ (zero? (system* "python"
9973 "test_bz2file.py"))))))))))
2e697322 9974
da4ac1aa
BW
9975(define-public python-future
9976 (package
9977 (name "python-future")
9978 (version "0.15.2")
9979 (source
9980 (origin
9981 (method url-fetch)
9982 (uri (pypi-uri "future" version))
9983 (sha256
9984 (base32
9985 "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx"))))
9986 (build-system python-build-system)
9987 ;; Many tests connect to the network or are otherwise flawed.
9988 ;; https://github.com/PythonCharmers/python-future/issues/210
9989 (arguments
9990 `(#:tests? #f))
9991 (home-page "http://python-future.org")
9992 (synopsis "Single-source support for Python 3 and 2")
9993 (description
9994 "@code{python-future} is the missing compatibility layer between Python 2 and
9995Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
9996to support both Python 2 and Python 3 with minimal overhead.")
f210e944 9997 (license license:expat)))
da4ac1aa
BW
9998
9999(define-public python2-future
f210e944 10000 (package-with-python2 python-future))
da4ac1aa 10001
8e451885
AE
10002(define-public python-cysignals
10003 (package
10004 (name "python-cysignals")
10005 (version "1.1.0")
10006 (source
10007 (origin
10008 (method url-fetch)
10009 (uri (pypi-uri "cysignals" version ".tar.bz2"))
10010 (sha256
10011 (base32
10012 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
10013 (build-system python-build-system)
10014 (native-inputs
10015 `(("python-cython" ,python-cython)
8e451885
AE
10016 ("python-sphinx" ,python-sphinx)))
10017 (inputs
10018 `(("pari-gp" ,pari-gp)))
10019 (arguments
10020 `(#:modules ((guix build python-build-system)
10021 ((guix build gnu-build-system) #:prefix gnu:)
10022 (guix build utils))
10023 ;; FIXME: Tests are executed after installation and currently fail
10024 ;; when not installing into standard locations; the author is working
10025 ;; on a fix.
10026 #:tests? #f
10027 #:phases
10028 (modify-phases %standard-phases
10029 (add-before
10030 'build 'configure
10031 (assoc-ref gnu:%standard-phases 'configure)))))
10032 (home-page
10033 "https://github.com/sagemath/cysignals")
10034 (synopsis
10035 "Handling of interrupts and signals for Cython")
10036 (description
10037 "The cysignals package provides mechanisms to handle interrupts (and
10038other signals and errors) in Cython code, using two related approaches,
10039for mixed Cython/Python code or external C libraries and pure Cython code,
10040respectively.")
3f641af0 10041 (license license:lgpl3+)))
8e451885
AE
10042
10043(define-public python2-cysignals
10044 (package-with-python2 python-cysignals))
10045
63bcec71
DM
10046(define-public python2-shedskin
10047 (package
10048 (name "python2-shedskin")
10049 (version "0.9.4")
10050 (source
10051 (origin
10052 (method url-fetch)
10053 (uri (string-append "https://github.com/shedskin/shedskin/"
10054 "releases/download/v" version
10055 "/shedskin-" version ".tgz"))
10056 (sha256
10057 (base32
10058 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
10059 (build-system python-build-system)
10060 (arguments
10061 `(#:python ,python-2
10062 #:phases (modify-phases %standard-phases
10063 (add-after 'unpack 'fix-resulting-include-libs
10064 (lambda* (#:key inputs #:allow-other-keys)
10065 (let ((libgc (assoc-ref inputs "libgc"))
10066 (pcre (assoc-ref inputs "pcre")))
10067 (substitute* "shedskin/makefile.py"
10068 (("variable == 'CCFLAGS':[ ]*")
10069 (string-append "variable == 'CCFLAGS':\n"
10070 " line += ' -I " pcre "/include"
10071 " -I " libgc "/include'"))
10072 (("variable == 'LFLAGS':[ ]*")
10073 (string-append "variable == 'LFLAGS':\n"
10074 " line += ' -L" pcre "/lib"
10075 " -L " libgc "/lib'")))
10076 #t))))))
63bcec71
DM
10077 (inputs `(("pcre" ,pcre)
10078 ("libgc" ,libgc)))
10079 (home-page "https://shedskin.github.io/")
10080 (synopsis "Experimental Python-2 to C++ Compiler")
10081 (description (string-append "This is an experimental compiler for a subset of
10082Python. It generates C++ code and a Makefile."))
3f641af0 10083 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
10084
10085(define-public python2-rope
10086 (package
10087 (name "python2-rope")
10088 (version "0.10.3")
10089 (source
10090 (origin
10091 (method url-fetch)
10092 (uri (pypi-uri "rope" version))
10093 (sha256
10094 (base32
10095 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
10096 (arguments
10097 ;; Rope is currently python-2 only.
10098 ;; https://github.com/python-rope/rope/issues/57
10099 `(#:python ,python-2))
10100 (build-system python-build-system)
10101 (native-inputs
f3b98f4f 10102 `(("python2-unittest2" ,python2-unittest2)))
88bb4197
LG
10103 (home-page "https://github.com/python-rope/rope")
10104 (synopsis "Refactoring library for Python")
10105 (description "Rope is a refactoring library for Python. It facilitates
10106the renaming, moving and extracting of attributes, functions, modules, fields
10107and parameters in Python 2 source code. These refactorings can also be applied
10108to occurences in strings and comments.")
3f641af0 10109 (license license:gpl2)))
6ba8ca17
10110
10111(define-public python-py3status
10112 (package
10113 (name "python-py3status")
d2262d70 10114 (version "3.1")
6ba8ca17
10115 (source
10116 (origin
10117 (method url-fetch)
10118 (uri (pypi-uri "py3status" version))
10119 (sha256
10120 (base32
d2262d70 10121 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17 10122 (build-system python-build-system)
6ba8ca17
10123 (home-page "https://github.com/ultrabug/py3status")
10124 (synopsis "Extensible i3status wrapper written in Python")
10125 (description "py3status is an i3status wrapper which extends i3status
10126functionality in a modular way, allowing you to extend your panel with your
10127own code, responding to click events and updating clock every second.")
3f641af0 10128 (license license:bsd-3)))
b8fdbca3
HG
10129
10130(define-public python-tblib
10131 (package
10132 (name "python-tblib")
10133 (version "1.3.0")
10134 (source (origin
10135 (method url-fetch)
10136 (uri (pypi-uri "tblib" version))
10137 (sha256 (base32
10138 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
10139 (build-system python-build-system)
10140 (arguments
10141 `(#:phases
10142 (modify-phases %standard-phases
10143 (replace 'check
10144 (lambda _
10145 ;; Upstream runs tests after installation and the package itself
10146 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
10147 ;; found.
10148 (setenv "PYTHONPATH"
10149 (string-append (getcwd) "/build/lib:"
10150 (getenv "PYTHONPATH")))
10151 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
10152 (native-inputs
10153 `(("python-pytest" ,python-pytest)
b8fdbca3
HG
10154 ("python-six" ,python-six)))
10155 (home-page "https://github.com/ionelmc/python-tblib")
10156 (synopsis "Traceback serialization library")
10157 (description
10158 "Traceback serialization allows you to:
10159
10160@enumerate
10161@item Pickle tracebacks and raise exceptions with pickled tracebacks in
10162different processes. This allows better error handling when running code over
10163multiple processes (imagine multiprocessing, billiard, futures, celery etc).
10164
10165@item Parse traceback strings and raise with the parsed tracebacks.
10166@end itemize")
3f641af0 10167 (license license:bsd-3)))
b8fdbca3
HG
10168
10169(define-public python2-tblib
10170 (package-with-python2 python-tblib))
1a024de4
HG
10171
10172(define-public python-sqlparse
10173 (package
10174 (name "python-sqlparse")
10175 (version "0.1.19")
10176 (source (origin
10177 (method url-fetch)
10178 (uri (pypi-uri "sqlparse" version))
10179 (sha256
10180 (base32
10181 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
10182 (build-system python-build-system)
10183 (arguments
10184 `(#:phases
10185 (modify-phases %standard-phases
10186 (replace 'check
10187 (lambda* _
10188 ;; setup.py-integrated 2to3 only affects the build files, but
10189 ;; py.test is using the source files. So we need to convert them
10190 ;; manually.
10191 (when (zero? (system* "python3"))
10192 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
10193 (zero? (system* "py.test")))))))
10194 (native-inputs
f3b98f4f 10195 `(("python-pytest" ,python-pytest)))
1a024de4
HG
10196 (home-page "https://github.com/andialbrecht/sqlparse")
10197 (synopsis "Non-validating SQL parser")
10198 (description "Sqlparse is a non-validating SQL parser for Python. It
10199provides support for parsing, splitting and formatting SQL statements.")
3f641af0 10200 (license license:bsd-3)))
1a024de4
HG
10201
10202(define-public python2-sqlparse
10203 (package-with-python2 python-sqlparse))
68b9d242
SB
10204
10205(define-public python-greenlet
10206 (package
10207 (name "python-greenlet")
10208 (version "0.4.9")
10209 (source (origin
10210 (method url-fetch)
10211 (uri (pypi-uri "greenlet" version))
10212 (sha256
10213 (base32
10214 "04h0m54dyqg49vyarq26mry6kbivnpl47rnmmrk9qn8wpfxviybr"))))
10215 (build-system python-build-system)
68b9d242
SB
10216 (home-page "https://greenlet.readthedocs.io/")
10217 (synopsis "Lightweight in-process concurrent programming")
10218 (description
10219 "Greenlet package is a spin-off of Stackless, a version of CPython
10220that supports micro-threads called \"tasklets\". Tasklets run
10221pseudo-concurrently (typically in a single or a few OS-level threads) and
10222are synchronized with data exchanges on \"channels\".")
3f641af0 10223 (license (list license:psfl license:expat))))
68b9d242
SB
10224
10225(define-public python2-greenlet
10226 (package-with-python2 python-greenlet))
d79a343b
SB
10227
10228(define-public python-gevent
10229 (package
10230 (name "python-gevent")
10231 (version "1.1.1")
10232 (source (origin
10233 (method url-fetch)
10234 (uri (pypi-uri "gevent" version))
10235 (sha256
10236 (base32
10237 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
10238 (modules '((guix build utils)))
10239 (snippet
10240 '(begin
10241 ;; unbunding libev and c-ares
10242 (for-each delete-file-recursively '("libev" "c-ares"))
10243 ;; fixing testsuite
10244 (call-with-output-file "greentest/__init__.py" noop)
10245 (substitute* "greentest/testrunner.py"
10246 (("import util") "from . import util")
10247 (("from util import log") "from .util import log"))))))
10248 (build-system python-build-system)
10249 (propagated-inputs
10250 `(("python-greenlet" ,python-greenlet)))
10251 (native-inputs
f3b98f4f 10252 `(("python-six" ,python-six)))
d79a343b
SB
10253 (inputs
10254 `(("c-ares" ,c-ares)
10255 ("libev" ,libev)))
10256 (home-page "http://www.gevent.org/")
10257 (synopsis "Coroutine-based network library")
10258 (description
10259 "gevent is a coroutine-based Python networking library that uses greenlet
10260to provide a high-level synchronous API on top of the libev event loop.")
10261 (license license:expat)))
10262
10263(define-public python2-gevent
10264 (package-with-python2 python-gevent))
da3aeeb6
SB
10265
10266(define-public python-twisted
10267 (package
10268 (name "python-twisted")
10269 (version "16.2.0")
10270 (source (origin
10271 (method url-fetch)
8ea8e8d3 10272 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
10273 (sha256
10274 (base32
10275 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
10276 (build-system python-build-system)
45912170
SB
10277 (propagated-inputs
10278 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
10279 (home-page "https://twistedmatrix.com/")
10280 (synopsis "Asynchronous networking framework written in Python")
10281 (description
10282 "Twisted is an extensible framework for Python programming, with special
10283focus on event-based network programming and multiprotocol integration.")
10284 (license license:expat)))
10285
10286(define-public python2-twisted
10287 (package-with-python2 python-twisted))
d0b6fed6 10288
4d3fa5a4
EF
10289(define-public python-pika
10290 (package
10291 (name "python-pika")
10292 (version "0.10.0")
10293 (source
10294 (origin
10295 (method url-fetch)
10296 (uri (pypi-uri "pika" version))
10297 (sha256
10298 (base32
10299 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
10300 (build-system python-build-system)
10301 (native-inputs
269d9172
LF
10302 `(("python-pyev" ,python-pyev)
10303 ("python-tornado" ,python-tornado)
10304 ("python-twisted" ,python-twisted)))
4d3fa5a4
EF
10305 (home-page "https://pika.readthedocs.org")
10306 (synopsis "Pure Python AMQP Client Library")
10307 (description
10308 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
10309Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
10310network support library.")
10311 (license license:bsd-3)))
10312
10313(define-public python2-pika
10314 (package-with-python2 python-pika))
10315
d0b6fed6
DM
10316(define-public python-ply
10317 (package
10318 (name "python-ply")
10319 (version "3.8")
10320 (source
10321 (origin
10322 (method url-fetch)
10323 (uri (string-append
10324 "https://pypi.python.org/packages/"
10325 "96/e0/430fcdb6b3ef1ae534d231397bee7e9304be14a47a267e82ebcb3323d0b5"
10326 "/ply-" version ".tar.gz"))
10327 (sha256
10328 (base32
10329 "1f70ipynmiy09k6px2j7v4w5cdrc21za3xs2k6f1bsvb0bzvvlg7"))))
10330 (build-system python-build-system)
10331 (home-page "http://www.dabeaz.com/ply/")
10332 (synopsis "Python Lex & Yacc")
10333 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
10334It uses LR parsing and does extensive error checking.")
f210e944 10335 (license license:bsd-3)))
d0b6fed6
DM
10336
10337(define-public python2-ply
f210e944 10338 (package-with-python2 python-ply))
d951bd54
SB
10339
10340(define-public python-tabulate
10341 (package
10342 (name "python-tabulate")
10343 (version "0.7.5")
10344 (source (origin
10345 (method url-fetch)
10346 (uri (pypi-uri "tabulate" version))
10347 (sha256
10348 (base32
10349 "03l1r7ddd1a0j2snv1yd0hlnghjad3fg1an1jr8936ksv75slwch"))
10350 ;; Fix tests
10351 (modules '((guix build utils)))
10352 (snippet '(substitute* '("test/test_cli.py"
10353 "test/test_input.py"
10354 "test/test_output.py"
10355 "test/test_regression.py")
10356 (("from common") "from nose.tools")))))
10357 (build-system python-build-system)
10358 (native-inputs
f3b98f4f 10359 `(;; For testing
d951bd54
SB
10360 ("python-nose" ,python-nose)))
10361 (home-page "https://bitbucket.org/astanin/python-tabulate")
10362 (synopsis "Pretty-print tabular data")
10363 (description
10364 "Tabulate is a library and command-line utility to pretty-print tabular
10365data in Python.")
10366 (license license:expat)))
10367
10368(define-public python2-tabulate
10369 (package-with-python2 python-tabulate))
1c4c8a33
SB
10370
10371(define-public python-kazoo
10372 (package
10373 (name "python-kazoo")
10374 (version "2.2.1")
10375 (source
10376 (origin
10377 (method url-fetch)
10378 (uri (pypi-uri "kazoo" version))
10379 (sha256
10380 (base32
10381 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
10382 (build-system python-build-system)
10383 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
c18899e8
SB
10384 (propagated-inputs
10385 `(("python-six" ,python-six)))
1c4c8a33
SB
10386 (home-page "https://kazoo.readthedocs.org")
10387 (synopsis "High-level Zookeeper client library")
10388 (description
10389 "Kazoo is a Python client library for the Apache Zookeeper distributed
10390application service. It is designed to be easy to use and to avoid common
10391programming errors.")
3f641af0 10392 (license license:asl2.0)))
1c4c8a33
SB
10393
10394(define-public python2-kazoo
10395 (package-with-python2 python-kazoo))
45dda35e
SB
10396
10397(define-public python-pykafka
10398 (package
10399 (name "python-pykafka")
10400 (version "2.4.0")
10401 (source (origin
10402 (method url-fetch)
c6bccf71
EF
10403 (uri (string-append
10404 "https://pypi.python.org/packages/8b/3e/"
10405 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
10406 "pykafka-" version ".tar.gz"))
45dda35e
SB
10407 (sha256
10408 (base32
10409 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
10410 (build-system python-build-system)
10411 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
c8fa3d9b 10412 (propagated-inputs
45dda35e
SB
10413 `(("python-gevent" ,python-gevent)
10414 ("python-kazoo" ,python-kazoo)
45dda35e
SB
10415 ("python-tabulate" ,python-tabulate)))
10416 (inputs
10417 `(("librdkafka" ,librdkafka)))
10418 (home-page "https://pykafka.readthedocs.io/")
10419 (synopsis "Apache Kafka client for Python")
10420 (description
10421 "PyKafka is a client for the Apache Kafka distributed messaging system.
10422It includes Python implementations of Kafka producers and consumers, which
10423are optionally backed by a C extension built on librdkafka.")
3f641af0 10424 (license license:asl2.0)))
45dda35e
SB
10425
10426(define-public python2-pykafka
10427 (package-with-python2 python-pykafka))
a44fd439
DM
10428
10429(define-public python-wcwidth
10430 (package
10431 (name "python-wcwidth")
10432 (version "0.1.6")
10433 (source
10434 (origin
10435 (method url-fetch)
10436 (uri (string-append
10437 "https://pypi.python.org/packages/"
10438 "c2/d1/7689293086a8d5320025080cde0e3155b94ae0a7496fb89a3fbaa92c354a/"
10439 "wcwidth-" version ".tar.gz"))
10440 (sha256
10441 (base32
10442 "02wjrpf001gjdjsaxxbzcwfg19crlk2dbddayrfc2v06f53yrcyw"))))
10443 (build-system python-build-system)
10444 (home-page "https://github.com/jquast/wcwidth")
66e07664 10445 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
10446 (description "Wcwidth measures the number of terminal column cells of
10447wide-character codes. It is useful for those implementing a terminal emulator,
10448or programs that carefully produce output to be interpreted by one. It is a
10449Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
10450specified in POSIX.1-2001 and POSIX.1-2008.")
f210e944 10451 (license license:expat)))
a44fd439
DM
10452
10453(define-public python2-wcwidth
f210e944 10454 (package-with-python2 python-wcwidth))
0de78c95
DP
10455
10456(define-public python2-jsonrpclib
10457 (package
10458 (name "python2-jsonrpclib")
10459 (version "0.1.7")
10460 (source (origin
10461 (method url-fetch)
10462 (uri (string-append
10463 "https://pypi.python.org/packages/source/j/jsonrpclib/"
10464 "jsonrpclib-" version ".tar.gz"))
10465 (sha256
10466 (base32
10467 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
10468 (build-system python-build-system)
0de78c95
DP
10469 (arguments
10470 `(#:tests? #f
10471 #:python ,python-2))
10472 (home-page "https://github.com/joshmarshall/jsonrpclib/")
10473 (synopsis "Implementation of JSON-RPC specification for Python")
10474 (description
10475 "This library is an implementation of the JSON-RPC specification.
10476It supports both the original 1.0 specification, as well as the
10477new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
10478etc.")
3f641af0 10479 (license license:asl2.0)))
9250b0f3
SB
10480
10481(define-public python-chai
10482 (package
10483 (name "python-chai")
10484 (version "1.1.1")
10485 (source (origin
10486 (method url-fetch)
10487 (uri (pypi-uri "chai" version))
10488 (sha256
10489 (base32
10490 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
10491 (build-system python-build-system)
9250b0f3
SB
10492 (home-page "https://github.com/agoragames/chai")
10493 (synopsis "Mocking framework for Python")
10494 (description
10495 "Chai provides an api for mocking, stubbing and spying your python
10496objects, patterned after the Mocha library for Ruby.")
3f641af0 10497 (license license:bsd-3)))
9250b0f3
SB
10498
10499(define-public python2-chai
10500 (package-with-python2 python-chai))
10501
ae43baa8
SB
10502(define-public python-arrow
10503 (package
10504 (name "python-arrow")
10505 (version "0.8.0")
10506 (source (origin
10507 (method url-fetch)
10508 (uri (pypi-uri "arrow" version))
10509 (sha256
10510 (base32
10511 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
10512 (build-system python-build-system)
10513 (native-inputs
f3b98f4f 10514 `(;; For testing
ae43baa8
SB
10515 ("python-chai" ,python-chai)
10516 ("python-simplejson" ,python-simplejson)))
36aed736
SB
10517 (propagated-inputs
10518 `(("python-dateutil" ,python-dateutil-2)))
ae43baa8
SB
10519 (home-page "https://github.com/crsmithdev/arrow/")
10520 (synopsis "Dates and times for Python")
10521 (description
10522 "Arrow is a Python library to creating, manipulating, formatting and
10523converting dates, times, and timestamps. It implements and updates the
10524datetime type.")
3f641af0 10525 (license license:asl2.0)))
ae43baa8
SB
10526
10527(define-public python2-arrow
10528 (package-with-python2 python-arrow))
10529
1f2b62a4
SB
10530(define-public python-inflection
10531 (package
10532 (name "python-inflection")
10533 (version "0.3.1")
10534 (source
10535 (origin (method url-fetch)
10536 (uri (pypi-uri "inflection" version))
10537 (sha256
10538 (base32
10539 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
10540 (build-system python-build-system)
1f2b62a4
SB
10541 (home-page "http://github.com/jpvanhal/inflection")
10542 (synopsis "Python string transformation library")
10543 (description
10544 "Inflection is a string transformation library. It singularizes
10545and pluralizes English words, and transforms strings from CamelCase to
10546underscored string.")
10547 (license license:expat)))
10548
10549(define-public python2-inflection
10550 (package-with-python2 python-inflection))
10551
18995566
SB
10552(define-public python-pylev
10553 (package
10554 (name "python-pylev")
10555 (version "1.3.0")
10556 (source (origin
10557 (method url-fetch)
10558 (uri (pypi-uri "pylev" version))
10559 (sha256
10560 (base32
10561 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
10562 (build-system python-build-system)
18995566
SB
10563 (home-page "http://github.com/toastdriven/pylev")
10564 (synopsis "Levenshtein distance implementation in Python")
10565 (description "Pure Python Levenshtein implementation, based off the
10566Wikipedia code samples at
10567@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 10568 (license license:bsd-3)))
18995566
SB
10569
10570(define-public python2-pylev
10571 (package-with-python2 python-pylev))
10572
f5deff7a
SB
10573(define-public python-cleo
10574 (package
10575 (name "python-cleo")
10576 (version "0.4.1")
10577 (source (origin
10578 (method url-fetch)
10579 (uri (pypi-uri "cleo" version))
10580 (sha256
10581 (base32
10582 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
10583 (build-system python-build-system)
10584 (native-inputs
f3b98f4f 10585 `(;; For testing
f5deff7a
SB
10586 ("python-mock" ,python-mock)
10587 ("python-pytest" ,python-pytest)))
9403150a
SB
10588 (propagated-inputs
10589 `(("python-psutil" ,python-psutil)
10590 ("python-pylev" ,python-pylev)))
f5deff7a
SB
10591 (home-page "https://github.com/sdispater/cleo")
10592 (synopsis "Command-line arguments library for Python")
10593 (description
10594 "Cleo allows you to create command-line commands with signature in
10595docstring and colored output.")
10596 (license license:expat)))
10597
10598(define-public python2-cleo
10599 (package-with-python2 python-cleo))
10600
77cadb43
SB
10601(define-public python-lazy-object-proxy
10602 (package
10603 (name "python-lazy-object-proxy")
10604 (version "1.2.2")
10605 (source (origin
10606 (method url-fetch)
10607 (uri (pypi-uri "lazy-object-proxy" version))
10608 (sha256
10609 (base32
10610 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
10611 (build-system python-build-system)
77cadb43
SB
10612 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
10613 (synopsis "Lazy object proxy for python")
10614 (description
10615 "Lazy object proxy is an object that wraps a callable but defers the call
10616until the object is actually required, and caches the result of said call.")
3f641af0 10617 (license license:bsd-2)))
77cadb43
SB
10618
10619(define-public python2-lazy-object-proxy
10620 (package-with-python2 python-lazy-object-proxy))
10621
5477e05f
SB
10622(define-public python-dnspython
10623 (package
10624 (name "python-dnspython")
6c514128 10625 (version "1.15.0")
5477e05f
SB
10626 (source (origin
10627 (method url-fetch)
10628 (uri (string-append "http://www.dnspython.org/kits/"
10629 version "/dnspython-" version ".tar.gz"))
10630 (sha256
10631 (base32
6c514128 10632 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
5477e05f
SB
10633 (build-system python-build-system)
10634 (arguments '(#:tests? #f)) ; XXX: requires internet access
5477e05f
SB
10635 (home-page "http://www.dnspython.org")
10636 (synopsis "DNS toolkit for Python")
10637 (description
10638 "dnspython is a DNS toolkit for Python. It supports almost all record
10639types. It can be used for queries, zone transfers, and dynamic updates.
10640It supports TSIG authenticated messages and EDNS0.")
10641 (license license:expat)))
10642
10643(define-public python2-dnspython
10644 (package-with-python2 python-dnspython))
10645
22711e25
SB
10646(define-public python-email-validator
10647 (package
10648 (name "python-email-validator")
10649 (version "1.0.1")
10650 (source
10651 (origin (method url-fetch)
10652 (uri (pypi-uri "email_validator" version))
10653 (sha256
10654 (base32
10655 "0mn8jg5h8ifl8w6a6m0hq8kbk0mzw9vm054qfamkn89b3npz52qw"))))
10656 (build-system python-build-system)
10657 (arguments
10658 '(#:phases
10659 (modify-phases %standard-phases
10660 (add-before 'build 'use-dnspython
10661 (lambda _
10662 (substitute* "setup.py"
10663 (("dnspython3") "dnspython"))
10664 #t)))))
d42560bd 10665 (propagated-inputs
22711e25 10666 `(("python-dnspython" ,python-dnspython)
d42560bd 10667 ("python-idna" ,python-idna)))
22711e25
SB
10668 (home-page "https://github.com/JoshData/python-email-validator")
10669 (synopsis "Email address validation library for Python")
10670 (description
10671 "This library validates email address syntax and deliverability.")
3f641af0 10672 (license license:cc0)))
22711e25
SB
10673
10674(define-public python2-email-validator
10675 (package-with-python2 python-email-validator))
10676
8987d91e
SB
10677(define-public python-ukpostcodeparser
10678 (package
10679 (name "python-ukpostcodeparser")
10680 (version "1.0.3")
10681 (source (origin
10682 (method url-fetch)
10683 (uri (pypi-uri "UkPostcodeParser" version))
10684 (sha256
10685 (base32
10686 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
10687 (build-system python-build-system)
8987d91e
SB
10688 (home-page "https://github.com/hamstah/ukpostcodeparser")
10689 (synopsis "UK Postcode parser for Python")
10690 (description
10691 "This library provides the @code{parse_uk_postcode} function for
10692parsing UK postcodes.")
10693 (license license:expat)))
10694
10695(define-public python2-ukpostcodeparser
10696 (package-with-python2 python-ukpostcodeparser))
ea92ae01
SB
10697
10698(define-public python-fake-factory
10699 (package
10700 (name "python-fake-factory")
7adc698f 10701 (version "0.7.2")
ea92ae01
SB
10702 (source (origin
10703 (method url-fetch)
10704 (uri (pypi-uri "fake-factory" version))
10705 (sha256
10706 (base32
7adc698f 10707 "0vs0dkmg0dlaxf8w6q2i3k0i03gmp56ablldv7ci9x3nbadkn71g"))))
ea92ae01 10708 (build-system python-build-system)
ea92ae01 10709 (native-inputs
f3b98f4f 10710 `(;; For testing
ea92ae01
SB
10711 ("python-email-validator" ,python-email-validator)
10712 ("python-mock" ,python-mock)
10713 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
bbcd7297
SB
10714 (propagated-inputs
10715 `(("python-dateutil" ,python-dateutil-2)
10716 ("python-six" ,python-six)))
7adc698f 10717 (home-page "https://github.com/joke2k/faker")
ea92ae01
SB
10718 (synopsis "Python package that generates fake data")
10719 (description
10720 "Faker is a Python package that generates fake data such as names,
10721addresses, and phone numbers.")
10722 (license license:expat)
10723 (properties `((python2-variant . ,(delay python2-fake-factory))))))
10724
10725(define-public python2-fake-factory
10726 (let ((base (package-with-python2 (strip-python2-variant
10727 python-fake-factory))))
10728 (package
10729 (inherit base)
24c9aa18 10730 (propagated-inputs
ea92ae01 10731 `(("python2-ipaddress" ,python2-ipaddress)
24c9aa18 10732 ,@(package-propagated-inputs base))))))
ea92ae01 10733
b49504fd
SB
10734(define-public python-pyaml
10735 (package
10736 (name "python-pyaml")
10737 (version "15.8.2")
10738 (source (origin
10739 (method url-fetch)
10740 (uri (pypi-uri "pyaml" version))
10741 (sha256
10742 (base32
10743 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
10744 (build-system python-build-system)
b49504fd
SB
10745 (propagated-inputs
10746 `(("python-pyyaml" ,python-pyyaml)))
10747 (home-page "https://github.com/mk-fg/pretty-yaml")
10748 (synopsis "YAML pretty-print library for Python")
10749 (description
10750 "pyaml is a PyYAML based python module to produce pretty and readable
10751YAML-serialized data.")
3f641af0 10752 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
10753
10754(define-public python2-pyaml
10755 (package-with-python2 python-pyaml))
10756
347175a2
SB
10757(define-public python-flexmock
10758 (package
10759 (name "python-flexmock")
10760 (version "0.10.2")
10761 (source (origin
10762 (method url-fetch)
10763 (uri (pypi-uri "flexmock" version))
10764 (sha256
10765 (base32
10766 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
10767 (build-system python-build-system)
347175a2
SB
10768 (home-page "https://flexmock.readthedocs.org")
10769 (synopsis "Testing library for Python")
10770 (description
10771 "flexmock is a testing library for Python that makes it easy to create
10772mocks, stubs and fakes.")
3f641af0 10773 (license license:bsd-3)))
347175a2
SB
10774
10775(define-public python2-flexmock
10776 (package-with-python2 python-flexmock))
10777
5a744191
SB
10778(define-public python-orator
10779 (package
10780 (name "python-orator")
10781 (version "0.8.2")
10782 (source (origin
10783 (method url-fetch)
10784 (uri (pypi-uri "orator" version))
10785 (sha256
10786 (base32
10787 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
10788 (build-system python-build-system)
10789 (arguments '(#:tests? #f)) ; no tests
b2676030 10790 (propagated-inputs
5a744191
SB
10791 `(("python-arrow" ,python-arrow)
10792 ("python-blinker" ,python-blinker)
10793 ("python-cleo" ,python-cleo)
10794 ("python-fake-factory" ,python-fake-factory)
10795 ("python-inflection" ,python-inflection)
10796 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
10797 ("python-pyaml" ,python-pyaml)
5a744191
SB
10798 ("python-simplejson" ,python-simplejson)
10799 ("python-wrapt" ,python-wrapt)))
10800 (home-page "https://orator-orm.com/")
10801 (synopsis "ActiveRecord ORM for Python")
10802 (description
10803 "Orator provides a simple ActiveRecord-like Object Relational Mapping
10804implementation for Python.")
10805 (license license:expat)
10806 (properties `((python2-variant . ,(delay python2-orator))))))
10807
10808(define-public python2-orator
10809 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
10810 (package
10811 (inherit base)
06961617 10812 (propagated-inputs
5a744191 10813 `(("python2-ipaddress" ,python2-ipaddress)
06961617 10814 ,@(package-propagated-inputs base))))))
f4155188
DM
10815
10816(define-public python-prompt-toolkit
10817 (package
10818 (name "python-prompt-toolkit")
6a34f4cc 10819 (version "1.0.9")
f4155188
DM
10820 (source
10821 (origin
10822 (method url-fetch)
d15e2ef0 10823 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
10824 (sha256
10825 (base32
6a34f4cc 10826 "172r15k9kwdw2lnajvpz1632dd16nqz1kcal1p0lq5ywdarj6rfd"))))
f4155188 10827 (build-system python-build-system)
bae18710
LF
10828 (arguments
10829 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
f22efa01
HG
10830 (propagated-inputs
10831 `(("python-wcwidth" ,python-wcwidth)
2c199b55 10832 ("python-six" ,python-six)
f22efa01 10833 ("python-pygments" ,python-pygments)))
f4155188
DM
10834 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
10835 (synopsis "Library for building command line interfaces in Python")
10836 (description
10837 "Prompt-Toolkit is a library for building interactive command line
10838interfaces in Python. It's like GNU Readline but it also features syntax
10839highlighting while typing, out-of-the-box multi-line input editing, advanced
10840code completion, incremental search, support for Chinese double-width
10841characters, mouse support, and auto suggestions.")
f210e944 10842 (license license:bsd-3)))
f4155188
DM
10843
10844(define-public python2-prompt-toolkit
f210e944 10845 (package-with-python2 python-prompt-toolkit))
a502dfbf
DM
10846
10847(define-public python-jedi
10848 (package
10849 (name "python-jedi")
10850 (version "0.9.0")
10851 (source
10852 (origin
10853 (method url-fetch)
10854 (uri (pypi-uri "jedi" version))
10855 (sha256
10856 (base32
10857 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
10858 (build-system python-build-system)
10859 (home-page "https://github.com/davidhalter/jedi")
10860 (synopsis
10861 "Autocompletion for Python that can be used for text editors")
10862 (description
10863 "Jedi is an autocompletion tool for Python that can be used for text editors.")
f210e944 10864 (license license:expat)))
a502dfbf
DM
10865
10866(define-public python2-jedi
f210e944 10867 (package-with-python2 python-jedi))
c2f0dc6e
DM
10868
10869(define-public ptpython
10870 (package
10871 (name "ptpython")
10872 (version "0.34")
10873 (source (origin
10874 (method url-fetch)
10875 (uri (pypi-uri "ptpython" version))
10876 (sha256
10877 (base32
10878 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
10879 (build-system python-build-system)
f22efa01 10880 (propagated-inputs
c2f0dc6e
DM
10881 `(("python-docopt" ,python-docopt)
10882 ("python-jedi" ,python-jedi)
10883 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 10884 ("python-pygments" ,python-pygments)))
c2f0dc6e
DM
10885 (home-page "https://github.com/jonathanslenders/ptpython")
10886 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
10887 (description
10888 "ptpython is a Python read-eval-print loop with IDE-like features.
10889It supports syntax highlighting, multiline editing, autocompletion, mouse,
10890color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
10891etc.")
3f641af0 10892 (license license:bsd-3)
c2f0dc6e
DM
10893 (properties `((python2-variant . ,(delay ptpython-2))))))
10894
10895(define-public ptpython-2
10896 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
10897 (package
10898 (inherit base)
10899 (name "ptpython2"))))
b227f0be 10900
b04a52a6
DJ
10901(define-public python-requests-oauthlib
10902 (package
10903 (name "python-requests-oauthlib")
10904 (version "0.6.2")
10905 (source
10906 (origin
10907 (method url-fetch)
10908 (uri (pypi-uri "requests-oauthlib" version))
10909 (sha256
10910 (base32
10911 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
10912 (build-system python-build-system)
10913 (arguments
10914 `(#:phases
10915 (modify-phases %standard-phases
10916 ;; removes tests that require network access
10917 (add-before 'check 'pre-check
10918 (lambda _
10919 (delete-file "tests/test_core.py")
10920 #t)))))
10921 (native-inputs
10922 `(("python-requests-mock" ,python-requests-mock)
10923 ("python-mock" ,python-mock)))
f22efa01 10924 (propagated-inputs
b04a52a6
DJ
10925 `(("python-oauthlib" ,python-oauthlib)
10926 ("python-requests" ,python-requests)))
10927 (home-page
10928 "https://github.com/requests/requests-oauthlib")
10929 (synopsis
10930 "OAuthlib authentication support for Requests")
10931 (description
10932 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
10933provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
f210e944 10934 (license license:isc)))
b04a52a6
DJ
10935
10936(define-public python2-requests-oauthlib
f210e944 10937 (package-with-python2 python-requests-oauthlib))
b04a52a6 10938
b227f0be 10939(define-public python-stem
10940 (package
10941 (name "python-stem")
c976b319 10942 (version "1.5.3")
b227f0be 10943 (source
10944 (origin
10945 (method url-fetch)
c976b319 10946 (uri (pypi-uri "stem" version))
b227f0be 10947 (sha256
10948 (base32
c976b319 10949 "0fm67dfx6qaj0mg80r4yw2i72birpzn7cnbyz4p1857max3zfc97"))))
b227f0be 10950 (build-system python-build-system)
10951 (arguments
10952 `(#:phases
10953 (modify-phases %standard-phases
10954 (replace 'check
10955 (lambda _
10956 (zero? (system* "./run_tests.py" "--unit")))))))
10957 (native-inputs
10958 `(("python-mock" ,python-mock)
10959 ("python-pep8" ,python-pep8)
10960 ("python-pyflakes" ,python-pyflakes)))
b227f0be 10961 (home-page "https://stem.torproject.org/")
10962 (synopsis
10963 "Python controller library that allows applications to interact with Tor")
10964 (description
10965 "Stem is a Python controller library for Tor. With it you can use Tor's
10966control protocol to script against the Tor process and read descriptor data
10967relays publish about themselves.")
3f641af0 10968 (license license:lgpl3)))
b227f0be 10969
10970(define-public python2-stem
10971 (package-with-python2 python-stem))
517a6c0c
DM
10972
10973(define-public python-pyserial
10974 (package
10975 (name "python-pyserial")
10976 (version "3.1.1")
10977 (source
10978 (origin
10979 (method url-fetch)
10980 (uri (pypi-uri "pyserial" version))
10981 (sha256
10982 (base32
10983 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
10984 (build-system python-build-system)
10985 (home-page
10986 "https://github.com/pyserial/pyserial")
10987 (synopsis "Python Serial Port Bindings")
10988 (description "@code{pyserial} provide serial port bindings for Python. It
10989supports different byte sizes, stop bits, parity and flow control with RTS/CTS
10990and/or Xon/Xoff. The port is accessed in RAW mode.")
f210e944 10991 (license license:bsd-3)))
517a6c0c
DM
10992
10993(define-public python2-pyserial
f210e944 10994 (package-with-python2 python-pyserial))
6eb7af2a
DJ
10995
10996(define-public python-kivy
10997 (package
10998 (name "python-kivy")
10999 (version "1.9.1")
11000 (source
11001 (origin
11002 (method url-fetch)
11003 (uri (pypi-uri "kivy" version))
11004 (file-name (string-append name "-" version ".tar.gz"))
11005 (sha256
11006 (base32
11007 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
11008 (build-system python-build-system)
11009 (arguments
11010 `(#:tests? #f ; Tests require many optional packages
11011 #:phases
11012 (modify-phases %standard-phases
11013 (replace 'build (lambda _ (zero? (system* "make" "force"))))
11014 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
11015 (lambda* (#:key inputs #:allow-other-keys)
11016 (setenv "KIVY_SDL2_PATH"
11017 (string-append (assoc-ref inputs "sdl-union")
11018 "/include/SDL2"))
11019 #t)))))
11020 (native-inputs
f2516de2
HG
11021 `(("pkg-config" ,pkg-config)
11022 ("python-cython" ,python-cython)))
6eb7af2a 11023 (inputs
f2516de2 11024 `(("gstreamer" ,gstreamer)
6eb7af2a
DJ
11025 ("mesa" ,mesa)
11026 ("sdl-union"
11027 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
11028 (home-page "http://kivy.org")
11029 (synopsis
11030 "Multitouch application framework")
11031 (description
11032 "A software library for rapid development of
11033hardware-accelerated multitouch applications.")
11034 (license license:expat)))
11035
11036(define-public python2-kivy
11037 (package-with-python2 python-kivy))
11038
11039(define-public python-kivy-next
11040 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
11041 (revision "1"))
11042 (package (inherit python-kivy)
11043 (name "python-kivy-next")
d80a71eb 11044 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
11045 (string-take commit 7)))
11046 (source
11047 (origin
11048 (method git-fetch)
11049 (uri (git-reference
11050 (url "https://github.com/kivy/kivy")
11051 (commit commit)))
11052 (file-name (string-append name "-" version "-checkout"))
11053 (sha256
11054 (base32
11055 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
11056
11057(define-public python2-kivy-next
11058 (package-with-python2 python-kivy-next))
8794bd8b
DC
11059
11060(define-public python-binaryornot
11061 (package
11062 (name "python-binaryornot")
11063 (version "0.4.0")
11064 (source (origin
11065 (method url-fetch)
11066 (uri (pypi-uri "binaryornot" version))
11067 (sha256
11068 (base32
11069 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
11070 (build-system python-build-system)
f22efa01 11071 (propagated-inputs
8794bd8b
DC
11072 `(("python-chardet" ,python-chardet)
11073 ("python-hypothesis" ,python-hypothesis)))
11074 (home-page "https://github.com/audreyr/binaryornot")
11075 (synopsis "Package to check if a file is binary or text")
11076 (description "Ultra-lightweight pure Python package to check if a file is
11077binary or text.")
11078 (license license:bsd-3)
11079 (properties `((python2-variant . ,(delay python2-binaryornot))))))
11080
11081(define-public python2-binaryornot
11082 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
11083 (package (inherit base)
f22efa01 11084 (propagated-inputs
8794bd8b 11085 `(("python2-enum34" ,python2-enum34)
f22efa01 11086 ,@(package-propagated-inputs base))))))
a9ac982a
DC
11087
11088(define-public python-nltk
11089 (package
11090 (name "python-nltk")
11091 (version "3.2.1")
11092 (source (origin
11093 (method url-fetch)
11094 (uri (pypi-uri "nltk" version))
11095 (sha256
11096 (base32
11097 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
11098 (build-system python-build-system)
59f12985
LF
11099 (arguments
11100 '(;; The tests require some extra resources to be downloaded.
11101 ;; TODO Try packaging these resources.
11102 #:tests? #f))
a9ac982a
DC
11103 (home-page "http://nltk.org/")
11104 (synopsis "Natural Language Toolkit")
11105 (description "It provides interfaces to over 50 corpora and lexical
11106resources such as WordNet, along with a suite of text processing libraries
11107for classification, tokenization, stemming, tagging, parsing, and semantic
11108reasoning, wrappers for natural language processing libraries.")
f210e944 11109 (license license:asl2.0)))
a9ac982a
DC
11110
11111(define-public python2-nltk
f210e944 11112 (package-with-python2 python-nltk))
691cd90d
DC
11113
11114(define-public python-pymongo
11115 (package
11116 (name "python-pymongo")
11117 (version "3.3.0")
11118 (source (origin
11119 (method url-fetch)
11120 (uri (pypi-uri "pymongo" version))
11121 (sha256
11122 (base32
11123 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
11124 (build-system python-build-system)
f22efa01 11125 (propagated-inputs
691cd90d
DC
11126 `(("python-certifi" ,python-certifi)))
11127 (home-page "http://github.com/mongodb/mongo-python-driver")
11128 (synopsis "Python driver for MongoDB")
11129 (description "Python driver for MongoDB.")
f210e944 11130 (license license:asl2.0)))
691cd90d
DC
11131
11132(define-public python2-pymongo
f210e944 11133 (package-with-python2 python-pymongo))
6a6c9d43
DC
11134
11135(define-public python-sh
11136 (package
11137 (name "python-sh")
11138 (version "1.11")
11139 (source (origin
11140 (method url-fetch)
11141 (uri (pypi-uri "sh" version))
11142 (sha256
11143 (base32
11144 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
11145 (build-system python-build-system)
11146 (arguments
11147 `(#:tests? #f)) ; no tests
11148 (home-page "https://github.com/amoffat/sh")
11149 (synopsis "Python subprocess interface")
11150 (description "Abstracts process invocation by providing a function
11151interface for programs.")
f210e944 11152 (license license:expat)))
6a6c9d43
DC
11153
11154(define-public python2-sh
f210e944 11155 (package-with-python2 python-sh))
05b59190 11156
25702397
EF
11157(define-public python-consul
11158 (package
11159 (name "python-consul")
11160 (version "0.6.1")
11161 (source
11162 (origin
11163 (method url-fetch)
11164 (uri (pypi-uri "python-consul" version))
11165 (sha256
11166 (base32
11167 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
11168 (build-system python-build-system)
11169 (native-inputs
fd1d6de7
HG
11170 `(("python-pytest" ,python-pytest)))
11171 (propagated-inputs
11172 `(("python-requests" ,python-requests)
25702397
EF
11173 ("python-six" ,python-six)))
11174 (home-page "https://github.com/cablehead/python-consul")
11175 (synopsis "Python client for Consul")
11176 (description
11177 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
11178discovery, monitoring and configuration.")
11179 (license license:expat)))
11180
11181(define-public python2-consul
f210e944 11182 (package-with-python2 python-consul))
25702397 11183
05b59190
DC
11184(define-public python-schematics
11185 (package
11186 (name "python-schematics")
11187 (version "1.1.1")
11188 (source
11189 (origin
11190 (method url-fetch)
11191 (uri (string-append
11192 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
11193 (file-name (string-append name "-" version ".tar.gz"))
11194 (sha256
11195 (base32
11196 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
11197 (build-system python-build-system)
f22efa01 11198 (propagated-inputs
05b59190
DC
11199 `(("python-six" ,python-six)))
11200 (arguments
11201 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
11202 ; version requirements (eg python-coveralls)
11203 (home-page "https://github.com/schematics/schematics")
11204 (synopsis "Python Data Structures for Humans")
11205 (description "Python Data Structures for Humans.")
f210e944 11206 (license license:bsd-3)))
05b59190
DC
11207
11208(define-public python2-schematics
f210e944 11209 (package-with-python2 python-schematics))
d6907ff7
DC
11210
11211(define-public python-publicsuffix
11212 (package
11213 (name "python-publicsuffix")
11214 (version "1.1.0")
11215 (source (origin
11216 (method url-fetch)
11217 (uri (pypi-uri "publicsuffix" version))
11218 (sha256
11219 (base32
11220 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
11221 (build-system python-build-system)
11222 (arguments
11223 `(#:tests? #f)) ; tests use the internet
11224 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
11225 (synopsis "Get suffix for a domain name")
11226 (description "Get a public suffix for a domain name using the Public Suffix
11227List.")
f210e944 11228 (license license:expat)))
d6907ff7
DC
11229
11230(define-public python2-publicsuffix
f210e944 11231 (package-with-python2 python-publicsuffix))
b2319996
DC
11232
11233(define-public python-publicsuffix2
11234 (package
11235 (name "python-publicsuffix2")
11236 (version "2.20160621")
11237 (source
11238 (origin
11239 (method url-fetch)
11240 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
11241 (sha256
11242 (base32
11243 "06lx603gdwad5hc3hmn763ngq0rq9bzz1ni3ga72nzk5n872arkd"))))
11244 (build-system python-build-system)
10797a0a
LF
11245 (arguments
11246 '(#:tests? #f)) ; The test suite requires network access.
b2319996
DC
11247 (home-page "https://github.com/pombredanne/python-publicsuffix2")
11248 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
11249 (description "Get a public suffix for a domain name using the Public Suffix
11250List. Forked from and using the same API as the publicsuffix package.")
f210e944 11251 (license (list license:expat license:mpl2.0))))
b2319996
DC
11252
11253(define-public python2-publicsuffix2
f210e944 11254 (package-with-python2 python-publicsuffix2))
81f1515d
DC
11255
11256(define-public python-url
11257 (package
11258 (name "python-url")
11259 (version "0.2.0")
11260 (source (origin
11261 (method url-fetch)
11262 (uri (pypi-uri "url" version))
11263 (sha256
11264 (base32
11265 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
11266 (build-system python-build-system)
f22efa01 11267 (propagated-inputs
81f1515d
DC
11268 `(("python-publicsuffix" ,python-publicsuffix)))
11269 (native-inputs
11270 `(("python-coverage" ,python-coverage)
11271 ("python-nose" ,python-nose)))
11272 (arguments
11273 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
11274 (home-page "http://github.com/seomoz/url-py")
11275 (synopsis "URL Parsing")
11276 (description "Library for parsing urls.")
11277 (license license:expat)
11278 (properties `((python2-variant . ,(delay python2-url))))))
11279
11280(define-public python2-url
11281 (let ((base (package-with-python2 (strip-python2-variant python-url))))
11282 (package (inherit base)
f22efa01 11283 (propagated-inputs
f210e944 11284 `(("python2-publicsuffix" ,python2-publicsuffix))))))
974ee2c1
TS
11285
11286(define-public python-freezegun
11287 (package
11288 (name "python-freezegun")
11289 (version "0.3.7")
11290 (source
11291 (origin
11292 (method url-fetch)
11293 (uri (pypi-uri "freezegun" version))
11294 (sha256
11295 (base32
11296 "14l19x06v5jkq4rdwbmfyw4x9lrjb2300afrk21r1ash7y1y9a0w"))))
11297 (build-system python-build-system)
11298 (native-inputs
11299 `(("python-mock" ,python-mock)
11300 ("python-nose" ,python-nose)
4e096968 11301 ("python-coverage" ,python-coverage)))
f22efa01 11302 (propagated-inputs
4e096968
HG
11303 `(("python-six" ,python-six)
11304 ("python-dateutil-2" ,python-dateutil-2)))
974ee2c1
TS
11305 (arguments
11306 `(#:phases (modify-phases %standard-phases
11307 ;; The tests are normally executed via `make test`, but the PyPi
11308 ;; package does not include the Makefile.
11309 (replace 'check
11310 (lambda _
11311 (zero? (system* "nosetests" "./tests/")))))))
11312 (home-page "https://github.com/spulec/freezegun")
11313 (synopsis "Test utility for mocking the datetime module")
11314 (description
11315 "FreezeGun is a library that allows your python tests to travel through
11316time by mocking the datetime module.")
11317 (license license:asl2.0)))
11318
11319(define-public python2-freezegun
f210e944
HG
11320 (package-with-python2 python-freezegun))
11321
dddcb25c
MB
11322
11323(define-public python-odfpy
11324 (package
11325 (name "python-odfpy")
11326 (version "1.3.3")
11327 (source (origin
11328 (method url-fetch)
11329 (uri (pypi-uri "odfpy" version))
11330 (sha256
11331 (base32
11332 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
11333 (arguments
11334 `(#:modules ((srfi srfi-1)
11335 (guix build python-build-system)
11336 (guix build utils))
11337 #:phases
11338 (modify-phases %standard-phases
11339 (replace 'check
11340 ;; The test runner invokes python2 and python3 for test*.py.
11341 ;; To avoid having both in inputs, we replicate it here.
11342 (lambda _
11343 (every (lambda (test-file)
11344 (zero? (system* "python" test-file)))
11345 (find-files "tests" "^test.*\\.py$")))))))
11346 (build-system python-build-system)
11347 (home-page "https://github.com/eea/odfpy")
11348 (synopsis "Python API and tools to manipulate OpenDocument files")
11349 (description "Collection of libraries and utility programs written in
11350Python to manipulate OpenDocument 1.2 files.")
11351 (license
11352 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
11353 ;; number of files with other licenses.
11354 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
11355
11356(define-public python2-odfpy
11357 (package-with-python2 python-odfpy))
b30565bd
MB
11358
11359(define-public python-cachecontrol
11360 (package
11361 (name "python-cachecontrol")
11362 (version "0.11.6")
11363 (source
11364 (origin
11365 (method url-fetch)
11366 ;; Pypi does not have tests.
11367 (uri (string-append
11368 "https://github.com/ionrock/cachecontrol/archive/v"
11369 version ".tar.gz"))
11370 (file-name (string-append name "-" version ".tar.gz"))
11371 (sha256
11372 (base32
11373 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
11374 (build-system python-build-system)
11375 (arguments
11376 `(#:phases
11377 (modify-phases %standard-phases
11378 (replace 'check
11379 (lambda _
11380 ;; Drop test that requires internet access.
11381 (delete-file "tests/test_regressions.py")
11382 (setenv "PYTHONPATH"
11383 (string-append (getcwd) "/build/lib:"
11384 (getenv "PYTHONPATH")))
11385 (zero? (system* "py.test" "-vv")))))))
11386 (native-inputs
11387 `(("python-pytest" ,python-pytest)
11388 ("python-redis" ,python-redis)
11389 ("python-webtest" ,python-webtest)
11390 ("python-mock" ,python-mock)))
11391 (propagated-inputs
11392 `(("python-requests" ,python-requests)
11393 ("python-lockfile" ,python-lockfile)))
11394 (home-page "https://github.com/ionrock/cachecontrol")
11395 (synopsis "The httplib2 caching algorithms for use with requests")
11396 (description "CacheControl is a port of the caching algorithms in
11397@code{httplib2} for use with @code{requests} session objects.")
f210e944 11398 (license license:asl2.0)))
b30565bd
MB
11399
11400(define-public python2-cachecontrol
f210e944 11401 (package-with-python2 python-cachecontrol))
243db824
DM
11402
11403(define-public python-lit
11404 (package
11405 (name "python-lit")
11406 (version "0.5.0")
11407 (source
11408 (origin
11409 (method url-fetch)
11410 (uri (pypi-uri "lit" version))
11411 (sha256
11412 (base32
11413 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
11414 (build-system python-build-system)
11415 (home-page "http://llvm.org/")
11416 (synopsis "LLVM Software Testing Tool")
11417 (description "@code{lit} is a portable tool for executing LLVM and Clang
11418style test suites, summarizing their results, and providing indication of
11419failures.")
f210e944 11420 (license license:ncsa)))
243db824
DM
11421
11422(define-public python2-lit
f210e944 11423 (package-with-python2 python-lit))
66f95b20
MB
11424
11425(define-public python-pytest-pep8
11426 (package
11427 (name "python-pytest-pep8")
11428 (version "1.0.6")
11429 (source (origin
11430 (method url-fetch)
11431 (uri (pypi-uri "pytest-pep8" version))
11432 (sha256
11433 (base32
11434 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
11435 (build-system python-build-system)
11436 (arguments
b41a05ce 11437 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
66f95b20
MB
11438 (native-inputs
11439 `(("python-pytest" ,python-pytest)))
11440 (propagated-inputs
11441 `(("python-pep8" ,python-pep8)))
11442 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
11443 (synopsis "Py.test plugin to check PEP8 requirements")
11444 (description "Pytest plugin for checking PEP8 compliance.")
f210e944 11445 (license license:expat)))
66f95b20
MB
11446
11447(define-public python2-pytest-pep8
f210e944 11448 (package-with-python2 python-pytest-pep8))
df94a6b5
MB
11449
11450(define-public python-pytest-flakes
11451 (package
11452 (name "python-pytest-flakes")
11453 (version "1.0.1")
11454 (source (origin
11455 (method url-fetch)
11456 (uri (pypi-uri "pytest-flakes" version))
11457 (sha256
11458 (base32
11459 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
11460 (build-system python-build-system)
11461 (arguments
b41a05ce 11462 `(#:phases
df94a6b5
MB
11463 (modify-phases %standard-phases
11464 (delete 'check)
11465 (add-after 'install 'check
05c2fd36
HG
11466 (lambda* (#:key outputs inputs #:allow-other-keys)
11467 ;; It's easier to run tests after install.
11468 ;; Make installed package available for running the tests
11469 (add-installed-pythonpath inputs outputs)
df94a6b5
MB
11470 (zero? (system* "py.test" "-vv")))))))
11471 (native-inputs
11472 `(("python-coverage" ,python-coverage)
11473 ("python-pytest" ,python-pytest)
11474 ("python-pytest-cache" ,python-pytest-cache)
11475 ("python-pytest-pep8" ,python-pytest-pep8)))
11476 (propagated-inputs
11477 `(("python-pyflakes" ,python-pyflakes)))
11478 (home-page "https://github.com/fschulze/pytest-flakes")
11479 (synopsis "Py.test plugin to check source code with pyflakes")
11480 (description "Pytest plugin for checking Python source code with pyflakes.")
f210e944 11481 (license license:expat)))
df94a6b5
MB
11482
11483(define-public python2-pytest-flakes
f210e944 11484 (package-with-python2 python-pytest-flakes))
5467ea62
MB
11485
11486(define-public python-natsort
11487 (package
11488 (name "python-natsort")
11489 (version "5.0.1")
11490 (source (origin
11491 (method url-fetch)
11492 (uri (pypi-uri "natsort" version))
11493 (sha256
11494 (base32
11495 "1abld5p4a6n5zjnyw5mi2pv37gqalcybv2brjr2y6l9l2p8v9mja"))))
11496 (build-system python-build-system)
11497 (arguments
11498 `(#:phases
11499 (modify-phases %standard-phases
11500 (add-before 'check 'set-cachedir
11501 ;; Tests require write access to $HOME by default
11502 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
11503 (native-inputs
11504 `(("python-hypothesis" ,python-hypothesis)
11505 ("python-pytest-cache" ,python-pytest-cache)
11506 ("python-pytest-cov" ,python-pytest-cov)
11507 ("python-pytest-flakes" ,python-pytest-flakes)
11508 ("python-pytest-pep8" ,python-pytest-pep8)))
11509 (propagated-inputs ; TODO: Add python-fastnumbers.
11510 `(("python-pyicu" ,python-pyicu)))
11511 (home-page "https://github.com/SethMMorton/natsort")
11512 (synopsis "Natural sorting for python and shell")
11513 (description
11514 "Natsort lets you apply natural sorting on lists instead of
11515lexicographical. If you use the built-in @code{sorted} method in python
11516on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
11517returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
11518function @code{natsorted} that identifies numbers and sorts them separately
11519from strings. It can also sort version numbers, real numbers, mixed types
11520and more, and comes with a shell command @command{natsort} that exposes this
11521functionality in the command line.")
11522 (license license:expat)
11523 (properties `((python2-variant . ,(delay python2-natsort))))))
11524
11525(define-public python2-natsort
11526 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
11527 (package (inherit base)
11528 (native-inputs
00e10c6e 11529 `(("python2-pathlib" ,python2-pathlib)
5467ea62
MB
11530 ("python2-mock" ,python2-mock)
11531 ("python2-enum34" ,python2-enum34)
11532 ,@(package-native-inputs base))))))
4efb9c54
SR
11533
11534(define-public python-glances
11535 (package
11536 (name "python-glances")
11537 (version "2.7.1")
11538 (source
11539 (origin
11540 (method url-fetch)
11541 (uri (pypi-uri "Glances" version))
11542 (sha256
11543 (base32
11544 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
11545 (build-system python-build-system)
f22efa01 11546 (propagated-inputs
4efb9c54
SR
11547 `(("python-psutil" ,python-psutil)))
11548 (home-page
11549 "https://github.com/nicolargo/glances")
11550 (synopsis
11551 "A cross-platform curses-based monitoring tool")
11552 (description
11553 "Glances is a curses-based monitoring tool for a wide variety of platforms.
11554Glances uses the PsUtil library to get information from your system. It monitors
11555CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
f210e944 11556 (license license:lgpl3+)))
4efb9c54
SR
11557
11558(define-public python2-glances
f210e944 11559 (package-with-python2 python-glances))
05b7a593
EF
11560
11561(define-public python-graphql-core
11562 (package
11563 (name "python-graphql-core")
11564 (version "0.5.3")
11565 (source
11566 (origin
11567 (method url-fetch)
11568 (uri (pypi-uri "graphql-core" version))
11569 (sha256
11570 (base32
11571 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
11572 (build-system python-build-system)
11573 (arguments
326f8285
LF
11574 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
11575 #:phases
05b7a593
EF
11576 (modify-phases %standard-phases
11577 (add-after 'unpack 'patch-hardcoded-version
11578 (lambda _ (substitute*
11579 "setup.py"
11580 (("'gevent==1.1rc1'") "'gevent'"))
11581 #t)))))
11582 (native-inputs
11583 `(("python-gevent" ,python-gevent)
11584 ("python-mock" ,python-mock)
11585 ("python-pytest-mock" ,python-pytest-mock)))
f22efa01 11586 (propagated-inputs
05b7a593
EF
11587 `(("python-promise" ,python-promise)
11588 ("python-six" ,python-six)))
11589 (home-page "https://github.com/graphql-python/graphql-core")
11590 (synopsis "GraphQL implementation for Python")
11591 (description
11592 "GraphQL implementation for Python. GraphQL is a data query language and
11593runtime designed and used to request and deliver data to mobile and web apps.
11594This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
11595to Python.")
05b7a593
EF
11596 (license license:expat)))
11597
11598(define-public python2-graphql-core
f210e944 11599 (package-with-python2 python-graphql-core))
7ee51575
EF
11600
11601(define-public python-graphql-relay
11602 (package
11603 (name "python-graphql-relay")
11604 (version "0.4.4")
11605 (source
11606 (origin
11607 (method url-fetch)
11608 (uri (pypi-uri "graphql-relay" version))
11609 (sha256
11610 (base32
11611 "04wr9ayshxjjdcg2v21c7ffbz36kif1wjl3604fqd3qignb3fbxi"))))
11612 (build-system python-build-system)
11613 (native-inputs
11614 `(("python-pytest" ,python-pytest)))
f22efa01 11615 (propagated-inputs
7ee51575
EF
11616 `(("python-graphql-core" ,python-graphql-core)
11617 ("python-promise" ,python-promise)
11618 ("python-six" ,python-six)))
11619 (home-page "https://github.com/graphql-python/graphql-relay-py")
11620 (synopsis "Relay implementation for Python")
11621 (description
11622 "This is a library to allow the easy creation of Relay-compliant servers
11623using the GraphQL Python reference implementation of a GraphQL server. It
11624should be noted that the code is a exact port of the original
11625@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
11626from Facebook.")
7ee51575
EF
11627 (license license:expat)))
11628
11629(define-public python2-graphql-relay
f210e944 11630 (package-with-python2 python-graphql-relay))
ddc63a56
EF
11631
11632(define-public python-graphene
11633 (package
11634 (name "python-graphene")
11635 (version "0.10.2")
11636 (source
11637 (origin
11638 (method url-fetch)
11639 (uri (pypi-uri "graphene" version))
11640 (sha256
11641 (base32
11642 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
11643 (build-system python-build-system)
11644 (native-inputs
11645 `(("python-django-filter" ,python-django-filter)
11646 ("python-mock" ,python-mock)
11647 ("python-psycopg2" ,python-psycopg2)
11648 ("python-pytest-django" ,python-pytest-django)
11649 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
f22efa01 11650 (propagated-inputs
ddc63a56
EF
11651 `(("python-graphql-core" ,python-graphql-core)
11652 ("python-graphql-relay" ,python-graphql-relay)
11653 ("python-iso8601" ,python-iso8601)
11654 ("python-promise" ,python-promise)
11655 ("python-six" ,python-six)))
11656 (home-page "http://graphene-python.org/")
11657 (synopsis "GraphQL Framework for Python")
11658 (description
11659 "Graphene is a Python library for building GraphQL schemas/types.
11660A GraphQL schema describes your data model, and provides a GraphQL server
11661with an associated set of resolve methods that know how to fetch data.")
11662 (properties `((python2-variant . ,(delay python2-graphene))))
11663 (license license:expat)))
11664
11665(define-public python2-graphene
11666 (let ((base (package-with-python2
11667 (strip-python2-variant python-graphene))))
11668 (package (inherit base)
11669 (native-inputs
00e10c6e 11670 `(("python2-sqlalchemy" ,python2-sqlalchemy)
ddc63a56 11671 ,@(package-native-inputs base))))))
d488d5d6
EF
11672
11673(define-public python-nautilus
11674 (package
11675 (name "python-nautilus")
11676 (version "0.4.9")
11677 (source
11678 (origin
11679 (method url-fetch)
11680 (uri (pypi-uri "nautilus" version))
11681 (sha256
11682 (base32
11683 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
11684 (build-system python-build-system)
11685 (arguments `(#:tests? #f)) ; fails to import test modules
f22efa01 11686 (propagated-inputs
d488d5d6
EF
11687 `(("python-bcrypt" ,python-bcrypt)
11688 ("python-click" ,python-click)
11689 ("python-consul" ,python-consul)
d488d5d6
EF
11690 ("python-graphene" ,python-graphene)
11691 ("python-jinja2" ,python-jinja2)
d488d5d6
EF
11692 ("python-peewee" ,python-peewee)
11693 ("python-pika" ,python-pika)
d488d5d6
EF
11694 ("python-tornado" ,python-tornado)
11695 ("python-wtforms" ,python-wtforms)))
38ceb106
HG
11696 (native-inputs
11697 `(("python-nose2" ,python-nose2)))
d488d5d6
EF
11698 (home-page "https://github.com/AlecAivazis/nautilus")
11699 (synopsis "Library for creating microservice applications")
11700 (description
11701 "Nautilus is a framework for flux based microservices that looks to
11702provide extendible implementations of common aspects of a cloud so that you can
11703focus on building massively scalable web applications.")
11704 (license license:expat)))
94cffc63 11705
66d3f50a
LF
11706(define-public python-betamax
11707 (package
11708 (name "python-betamax")
11709 (version "0.8.0")
11710 (source
11711 (origin
11712 (method url-fetch)
11713 (uri (pypi-uri "betamax" version))
11714 (sha256
11715 (base32
11716 "18f8v5gng3j773jlbbzx4rg1i4y2zw3m2l1zpmbvp8bh5a2q1i42"))))
11717 (build-system python-build-system)
11718 (arguments
11719 '(;; Many tests fail because they require networking.
11720 #:tests? #f))
c415f763 11721 (propagated-inputs
66d3f50a
LF
11722 `(("python-requests" ,python-requests)))
11723 (home-page "https://github.com/sigmavirus24/betamax")
11724 (synopsis "Record HTTP interactions with python-requests")
11725 (description "Betamax will record your test suite's HTTP interactions and
11726replay them during future tests. It is designed to work with python-requests.")
f210e944 11727 (license license:expat)))
66d3f50a
LF
11728
11729(define-public python2-betamax
f210e944 11730 (package-with-python2 python-betamax))
ca0635b4 11731
94cffc63
LF
11732(define-public python-s3transfer
11733 (package
11734 (name "python-s3transfer")
11735 (version "0.1.8")
11736 (source (origin
11737 (method url-fetch)
11738 (uri (pypi-uri "s3transfer" version))
11739 (sha256
11740 (base32
11741 "1jivjkp3xqif9gzr5fiq28jsskmh50vzzd7ldsb4rbyiw1iyv3hy"))))
11742 (build-system python-build-system)
fad8bf97
LF
11743 (arguments
11744 `(#:phases
11745 (modify-phases %standard-phases
11746 (replace 'check
11747 (lambda _
11748 ;; 7 of the 'integration' tests require network access or login
11749 ;; credentials.
11750 (zero? (system* "nosetests" "--exclude=integration")))))))
94cffc63 11751 (native-inputs
fad8bf97
LF
11752 `(("python-docutils" ,python-docutils)
11753 ("python-mock" ,python-mock)
11754 ("python-nose" ,python-nose)))
f22efa01 11755 (propagated-inputs
94cffc63
LF
11756 `(("python-botocore" ,python-botocore)))
11757 (synopsis "Amazon S3 Transfer Manager")
11758 (description "S3transfer is a Python library for managing Amazon S3
11759transfers.")
11760 (home-page "https://github.com/boto/s3transfer")
11761 (license license:asl2.0)
11762 (properties `((python2-variant . ,(delay python2-s3transfer))))))
11763
11764(define-public python2-s3transfer
11765 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
11766 (package
11767 (inherit base)
11768 (native-inputs
11769 `(("python2-futures" ,python2-futures)
94cffc63 11770 ,@(package-native-inputs base))))))
8ab59181
HG
11771
11772(define-public python-setproctitle
11773(package
11774 (name "python-setproctitle")
11775 (version "1.1.10")
11776 (source
11777 (origin
11778 (method url-fetch)
11779 (uri (pypi-uri "setproctitle" version))
11780 (sha256
11781 (base32
11782 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
11783 (build-system python-build-system)
11784 (arguments
11785 '(#:phases
11786 (modify-phases %standard-phases
11787 (add-before 'check 'patch-Makefile
11788 ;; Stricly this is only required for the python2 variant.
11789 ;; But adding a phase in an inherited package seems to be
11790 ;; cumbersum. So we patch even for python3.
11791 (lambda _
11792 (let ((nose (assoc-ref %build-inputs "python2-nose")))
11793 (when nose
11794 (substitute* "Makefile"
11795 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
11796 (string-append nose "/bin/nosetests "))))
11797 #t)))
11798 (replace 'check
11799 (lambda _
11800 (setenv "PYTHON" (or (which "python3") (which "python")))
11801 (setenv "PYCONFIG" (or (which "python3-config")
11802 (which "python-config")))
11803 (setenv "CC" "gcc")
11804 ;; No need to extend PYTHONPATH to find the built package, since
11805 ;; the Makefile will build anyway
11806 (zero? (system* "make" "check")))))))
11807 (native-inputs
11808 `(("procps" ,procps))) ; required for tests
11809 (home-page
11810 "https://github.com/dvarrazzo/py-setproctitle")
11811 (synopsis
11812 "Setproctitle implementation for Python to customize the process title")
11813 (description "The library allows a process to change its title (as displayed
11814by system tools such as ps and top).
11815
11816Changing the title is mostly useful in multi-process systems, for
11817example when a master process is forked: changing the children's title
11818allows to identify the task each process is busy with. The technique
11819is used by PostgreSQL and the OpenSSH Server for example.")
11820 (license license:bsd-3)
11821 (properties `((python2-variant . ,(delay python2-setproctitle))))))
11822
11823(define-public python2-setproctitle
11824 (let ((base (package-with-python2
11825 (strip-python2-variant python-setproctitle))))
11826 (package
11827 (inherit base)
11828 (native-inputs `(("python2-nose" ,python2-nose)
11829 ,@(package-native-inputs base))))))
162e42d8
HG
11830
11831(define-public python-validictory
11832 (package
11833 (name "python-validictory")
11834 (version "1.0.1")
11835 (source
11836 (origin
11837 (method url-fetch)
11838 (uri (pypi-uri "validictory" version))
11839 (sha256
11840 (base32
11841 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
11842 (build-system python-build-system)
11843 (arguments
11844 '(#:phases
11845 (modify-phases %standard-phases
11846 (add-after 'unpack 'bootstrap
11847 ;; Move the tests out of the package directory to avoid
11848 ;; packaging them.
11849 (lambda* _
11850 (rename-file "validictory/tests" "tests")
11851 (delete-file "tests/__init__.py")))
11852 (replace 'check
11853 (lambda _
11854 ;; Extend PYTHONPATH so the built package will be found.
11855 (setenv "PYTHONPATH"
11856 (string-append (getcwd) "/build/lib:"
11857 (getenv "PYTHONPATH")))
11858 (zero? (system* "py.test" "-vv" )))))))
11859 (native-inputs
11860 `(("python-pytest" ,python-pytest)))
11861 (home-page
11862 "https://github.com/jamesturk/validictory")
11863 (synopsis "General purpose Python data validator")
11864 (description "It allows validation of arbitrary Python data structures.
11865
11866The schema format is based on the JSON Schema
11867proposal (http://json-schema.org), so combined with json the library is also
11868useful as a validator for JSON data.")
f210e944 11869 (license license:expat)))
162e42d8
HG
11870
11871(define-public python2-validictory
f210e944 11872 (package-with-python2 python-validictory))
0990edfe
DM
11873
11874(define-public python-aniso8601
11875 (package
11876 (name "python-aniso8601")
11877 (version "1.1.0")
11878 (source
11879 (origin
11880 (method url-fetch)
11881 (uri (pypi-uri "aniso8601" version))
11882 (sha256
11883 (base32
11884 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
11885 (build-system python-build-system)
11886 (propagated-inputs
11887 `(("python-dateutil-2" ,python-dateutil-2)))
11888 (home-page
11889 "https://bitbucket.org/nielsenb/aniso8601")
11890 (synopsis
11891 "Python library for parsing ISO 8601 strings")
11892 (description
11893 "This package contains a library for parsing ISO 8601 datetime strings.")
11894 (license license:bsd-3)))
999d964d
DM
11895
11896(define-public python-flask-restful
11897 (package
11898 (name "python-flask-restful")
11899 (version "0.3.5")
11900 (source
11901 (origin
11902 (method url-fetch)
11903 (uri (pypi-uri "Flask-RESTful" version))
11904 (sha256
11905 (base32
11906 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
11907 (build-system python-build-system)
11908 (propagated-inputs
11909 `(("python-aniso8601" ,python-aniso8601)
11910 ("python-flask" ,python-flask)
11911 ("python-pycrypto" ,python-pycrypto)
11912 ("python-pytz" ,python-pytz)))
11913 (native-inputs
11914 `(;; Optional dependency of Flask. Tests need it.
11915 ("python-blinker" ,python-blinker)
11916 ("python-mock" ,python-mock) ; For tests
11917 ("python-nose" ,python-nose) ; For tests
11918 ("python-sphinx" ,python-sphinx)))
11919 (home-page
11920 "https://www.github.com/flask-restful/flask-restful/")
11921 (synopsis
11922 "Flask module for creating REST APIs")
11923 (description
11924 "This package contains a Flask module for creating REST APIs.")
11925 (license license:bsd-3)))
31288222
DM
11926
11927(define-public python-flask-basicauth
11928 (package
11929 (name "python-flask-basicauth")
11930 (version "0.2.0")
11931 (source
11932 (origin
11933 (method url-fetch)
11934 (uri (pypi-uri "Flask-BasicAuth" version))
11935 (sha256
11936 (base32
11937 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
11938 (build-system python-build-system)
11939 (propagated-inputs
11940 `(("python-flask" ,python-flask)))
11941 (home-page
11942 "https://github.com/jpvanhal/flask-basicauth")
11943 (synopsis
11944 "HTTP basic access authentication for Flask")
11945 (description
11946 "This package provides HTTP basic access authentication for Flask.")
11947 (license license:bsd-3)))
903276d0
DM
11948
11949(define-public python-flask-sqlalchemy
11950 (package
11951 (name "python-flask-sqlalchemy")
11952 (version "2.1")
11953 (source
11954 (origin
11955 (method url-fetch)
11956 (uri (pypi-uri "Flask-SQLAlchemy" version))
11957 (sha256
11958 (base32
11959 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
11960 (build-system python-build-system)
11961 (propagated-inputs
11962 `(("python-flask" ,python-flask)
11963 ("python-sqlalchemy" ,python-sqlalchemy)))
11964 (home-page
11965 "http://github.com/mitsuhiko/flask-sqlalchemy")
11966 (synopsis
11967 "Module adding SQLAlchemy support to your Flask application")
11968 (description
11969 "This package adds SQLAlchemy support to your Flask application.")
11970 (license license:bsd-3)))
329b4b3b
LF
11971
11972(define-public python-pyev
11973 (package
11974 (name "python-pyev")
11975 (version "0.9.0")
11976 (source
11977 (origin
11978 (method url-fetch)
11979 (uri (pypi-uri "pyev" version))
11980 (sha256
11981 (base32
11982 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
11983 (build-system python-build-system)
11984 (arguments
11985 `(#:tests? #f ; no test suite
11986 #:phases
11987 (modify-phases %standard-phases
11988 (add-after 'unpack 'patch
11989 (lambda* (#:key inputs #:allow-other-keys)
11990 (let ((libev (string-append (assoc-ref inputs "libev")
11991 "/lib/libev.so.4")))
11992 (substitute* "setup.py"
11993 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
11994 (string-append "libev_dll_name = \"" libev "\"")))))))))
11995 (inputs
11996 `(("libev" ,libev)))
11997 (home-page "http://pythonhosted.org/pyev/")
11998 (synopsis "Python libev interface")
11999 (description "Pyev provides a Python interface to libev.")
12000 (license license:gpl3)))
12001
12002(define-public python2-pyev
12003 (package-with-python2 python-pyev))
45b4f127
DM
12004
12005(define-public python-imagesize
12006 (package
12007 (name "python-imagesize")
12008 (version "0.7.1")
12009 (source
12010 (origin
12011 (method url-fetch)
12012 (uri (pypi-uri "imagesize" version))
12013 (sha256
12014 (base32
12015 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
12016 (build-system python-build-system)
9422c98a
LF
12017 (arguments
12018 '(;; Test files are not distributed on PyPi:
12019 ;; https://github.com/shibukawa/imagesize_py/issues/7
12020 #:tests? #f))
45b4f127
DM
12021 (home-page "https://github.com/shibukawa/imagesize_py")
12022 (synopsis "Gets image size of files in variaous formats in Python")
12023 (description
12024 "This package allows determination of image size from
12025PNG, JPEG, JPEG2000 and GIF files in pure Python.")
f210e944 12026 (license license:expat)))
45b4f127
DM
12027
12028(define-public python2-imagesize
f210e944 12029 (package-with-python2 python-imagesize))
2f6dd9cd
AI
12030
12031(define-public python-axolotl-curve25519
12032 (package
12033 (name "python-axolotl-curve25519")
12034 (version "0.1")
12035 (source
12036 (origin
12037 (method git-fetch)
12038 (uri (git-reference
12039 (url "git://github.com/tgalal/python-axolotl-curve25519")
12040 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
12041 (file-name (string-append name "-" version "-checkout"))
12042 (sha256
12043 (base32
12044 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
12045 (build-system python-build-system)
12046 (arguments
12047 `(;; Prevent creation of the egg. This works around
12048 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
12049 #:configure-flags '("--root=/")))
2f6dd9cd
AI
12050 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
12051 (synopsis "Python wrapper for curve25519 library")
12052 (description "This is a python wrapper for the curve25519 library
12053with ed25519 signatures. The C code was pulled from
12054libaxolotl-android. At the moment this wrapper is meant for use by
12055python-axolotl.")
12056 (license (list license:gpl3 ; Most files
683cdbf5 12057 license:bsd-3)))) ; curve/curve25519-donna.c
2f6dd9cd
AI
12058
12059(define-public python2-axolotl-curve25519
12060 (package-with-python2 python-axolotl-curve25519))
06ff0837
AI
12061
12062(define-public python-axolotl
12063 (package
12064 (name "python-axolotl")
12065 (version "0.1.35")
12066 (source
12067 (origin
12068 (method url-fetch)
12069 (uri (string-append
12070 "https://github.com/tgalal/python-axolotl/archive/"
12071 version ".tar.gz"))
12072 (file-name (string-append name "-" version ".tar.gz"))
12073 (sha256
12074 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
12075 (build-system python-build-system)
12076 (arguments
12077 `(#:phases
12078 (modify-phases %standard-phases
12079 ;; Don't install tests
12080 (add-before 'install 'remove-tests
12081 (lambda _
12082 (for-each delete-file-recursively
12083 '("axolotl/tests" "build/lib/axolotl/tests"))
12084 #t)))
12085 ;; Prevent creation of the egg. This works around
12086 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
12087 #:configure-flags '("--root=/")))
06ff0837
AI
12088 (propagated-inputs
12089 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
12090 ("python-dateutil" ,python-dateutil)
12091 ("python-protobuf" ,python-protobuf)
12092 ("python-pycrypto" ,python-pycrypto)))
12093 (home-page "https://github.com/tgalal/python-axolotl")
12094 (synopsis "Python port of libaxolotl-android")
12095 (description "This is a python port of libaxolotl-android. This
12096is a ratcheting forward secrecy protocol that works in synchronous and
12097asynchronous messaging environments.")
12098 (license license:gpl3)))
12099
12100(define-public python2-axolotl
12101 (package-with-python2 python-axolotl))
e2fca490
DM
12102
12103(define-public python-termstyle
12104 (package
12105 (name "python-termstyle")
12106 (version "0.1.11")
12107 (source
12108 (origin
12109 (method url-fetch)
12110 (uri (pypi-uri "termstyle" version))
12111 (sha256
12112 (base32
12113 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
12114 (build-system python-build-system)
12115 (home-page "http://github.com/gfxmonk/termstyle")
12116 (synopsis "Console text coloring for Python")
12117 (description "This package provides console text coloring for Python.")
12118 (license license:bsd-3)))
1e6112d8
DM
12119
12120(define-public python-rednose
12121 (package
12122 (name "python-rednose")
12123 (version "1.2.1")
12124 (source
12125 (origin
12126 (method url-fetch)
12127 (uri (pypi-uri "rednose" version))
12128 (sha256
12129 (base32
12130 "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
12131 (build-system python-build-system)
12132 (arguments
12133 `(#:phases
12134 (modify-phases %standard-phases
12135 (add-after 'unpack 'fix-deps
12136 (lambda _
12137 ;; See <https://github.com/JBKahn/rednose/issues/12>
12138 (substitute* "setup.py"
12139 (("python-termstyle") "termstyle"))
12140 #t)))))
12141 (propagated-inputs
12142 `(("python-colorama" ,python-colorama)
12143 ("python-termstyle" ,python-termstyle)))
12144 (native-inputs
12145 `(("python-six" ,python-six)
12146 ("python-nose" ,python-nose)))
12147 (home-page "https://github.com/JBKahn/rednose")
12148 (synopsis "Colored output for Python nosetests")
12149 (description "This package provides colored output for the
12150@command{nosetests} command of the Python Nose unit test framework.")
12151 (license license:bsd-3)))
0a7f17f0
DM
12152
12153(define-public python-flask-restplus
12154 (package
12155 (name "python-flask-restplus")
12156 (version "0.9.2")
12157 (source
12158 (origin
12159 (method url-fetch)
12160 (uri (pypi-uri "flask-restplus" version))
12161 (sha256
12162 (base32
12163 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
12164 (build-system python-build-system)
12165 (propagated-inputs
12166 `(("python-aniso8601" ,python-aniso8601)
12167 ("python-flask" ,python-flask)
12168 ("python-jsonschema" ,python-jsonschema)
12169 ("python-pytz" ,python-pytz)
12170 ("python-six" ,python-six)))
12171 (native-inputs
12172 `(("python-tzlocal" ,python-tzlocal)
12173 ("python-blinker" ,python-blinker)
12174 ("python-nose" ,python-nose)
12175 ("python-rednose" ,python-rednose)))
12176 (home-page "https://github.com/noirbizarre/flask-restplus")
12177 (synopsis "Framework for documented API development with Flask")
12178 (description "This package provides a framework for API development with
12179the Flask web framework in Python. It is similar to package
12180@code{python-flask-restful} but supports the @code{python-swagger}
12181documentation builder.")
12182 (license license:expat)))
1ed21519
DM
12183
12184(define-public python-sadisplay
12185 (package
12186 (name "python-sadisplay")
12187 (version "0.4.6")
12188 (source
12189 (origin
12190 (method url-fetch)
12191 (uri (pypi-uri "sadisplay" version))
12192 (sha256
12193 (base32
12194 "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
12195 (build-system python-build-system)
12196 (propagated-inputs
12197 `(("python-sqlalchemy" ,python-sqlalchemy)))
12198 (native-inputs
12199 `(("python-nose" ,python-nose)))
12200 (home-page "https://bitbucket.org/estin/sadisplay")
12201 (synopsis "SQLAlchemy schema displayer")
12202 (description "This package provides a program to build Entity
12203Relationship diagrams from a SQLAlchemy model (or directly from the
12204database).")
12205 (license license:bsd-3)))
12206
12207(define-public python2-sadisplay
12208 (package-with-python2 python-sadisplay))
444a79b6
DM
12209
12210(define-public python-flask-restful-swagger
12211 (package
12212 (name "python-flask-restful-swagger")
12213 (version "0.19")
12214 (source
12215 (origin
12216 (method url-fetch)
12217 (uri (pypi-uri "flask-restful-swagger" version))
12218 (sha256
12219 (base32
12220 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
12221 (build-system python-build-system)
12222 (propagated-inputs
12223 `(("python-flask-restful" ,python-flask-restful)))
12224 (home-page "https://github.com/rantav/flask-restful-swagger")
12225 (synopsis "Extract Swagger specs from Flask-Restful projects")
12226 (description "This package lets you extract Swagger API documentation
12227specs from your Flask-Restful projects.")
12228 (license license:expat)))
12229
12230(define-public python2-flask-restful-swagger
12231 (package-with-python2 python-flask-restful-swagger))
6c2e82bc
TGR
12232
12233(define-public python-argcomplete
12234 (package
12235 (name "python-argcomplete")
12236 (version "1.7.0")
12237 (source
12238 (origin
12239 (method url-fetch)
12240 (uri (pypi-uri "argcomplete" version))
12241 (sha256
12242 (base32
12243 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
12244 (build-system python-build-system)
12245 (home-page "https://github.com/kislyuk/argcomplete")
12246 (synopsis "Shell tab completion for Python argparse")
12247 (description "argcomplete provides extensible command line tab completion
12248of arguments and options for Python scripts using @code{argparse}. It's
12249particularly useful for programs with many options or sub-parsers that can
12250dynamically suggest completions; for example, when browsing resources over the
12251network.")
12252 (license license:asl2.0)))
12253
12254(define-public python2-argcomplete
12255 (package-with-python2 python-argcomplete))
361a2fcf
TGR
12256
12257(define-public python-xopen
12258 (package
12259 (name "python-xopen")
12260 (version "0.1.1")
12261 (source
12262 (origin
12263 (method url-fetch)
12264 (uri (pypi-uri "xopen" version))
12265 (sha256
12266 (base32
12267 "1wx6mylzcsyhjl19ycb83qq6iqpmr927lz62njfsar6ldsj0qcni"))
12268 (file-name (string-append name "-" version ".tar.gz"))))
12269 (build-system python-build-system)
12270 (home-page "https://github.com/marcelm/xopen/")
12271 (synopsis "Open compressed files transparently")
12272 (description "This module provides an @code{xopen} function that works like
12273Python's built-in @code{open} function, but can also deal with compressed files.
12274Supported compression formats are gzip, bzip2 and, xz, and are automatically
12275recognized by their file extensions. The focus is on being as efficient as
12276possible on all supported Python versions.")
12277 (license license:expat)))
12278
12279(define-public python2-xopen
12280 (package-with-python2 python-xopen))