gnu: Fix typos in descriptions.
[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>
28958b64 3;;; Copyright © 2013, 2014, 2015, 2016, 2017 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>
4dcb135e 6;;; Copyright © 2014, 2017 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>
7637de23 14;;; Copyright © 2015, 2016, 2017 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>
c5be3467 17;;; Copyright © 2015, 2016, 2017 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>
6bd9ad69 26;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
6eb7af2a 27;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
3f641af0 28;;; Copyright © 2016 David Craven <david@craven.ch>
df893a38 29;;; Copyright © 2016, 2017 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>
33e9490c 33;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
5220022a 34;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
819939cb 35;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
ec074213 36;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
916aafa4 37;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
1a917fc9 38;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
35db2d3c 39;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com>
a01b6da7
NK
40;;;
41;;; This file is part of GNU Guix.
42;;;
43;;; GNU Guix is free software; you can redistribute it and/or modify it
44;;; under the terms of the GNU General Public License as published by
45;;; the Free Software Foundation; either version 3 of the License, or (at
46;;; your option) any later version.
47;;;
48;;; GNU Guix is distributed in the hope that it will be useful, but
49;;; WITHOUT ANY WARRANTY; without even the implied warranty of
50;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
51;;; GNU General Public License for more details.
52;;;
53;;; You should have received a copy of the GNU General Public License
54;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
55
1ffa7090 56(define-module (gnu packages python)
3f641af0 57 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 58 #:use-module (gnu packages)
8e451885 59 #:use-module (gnu packages algebra)
d79a343b 60 #:use-module (gnu packages adns)
89b2e0b0 61 #:use-module (gnu packages attr)
d96034ed 62 #:use-module (gnu packages backup)
3969ca54 63 #:use-module (gnu packages bash)
1ffa7090 64 #:use-module (gnu packages compression)
4ed20663 65 #:use-module (gnu packages databases)
ddc63a56 66 #:use-module (gnu packages django)
5e1c9367 67 #:use-module (gnu packages file)
4ed20663 68 #:use-module (gnu packages fontutils)
4ed20663
AE
69 #:use-module (gnu packages gcc)
70 #:use-module (gnu packages ghostscript)
6eb7af2a 71 #:use-module (gnu packages gl)
4ed20663 72 #:use-module (gnu packages glib)
c227458a 73 #:use-module (gnu packages graphviz)
6eb7af2a 74 #:use-module (gnu packages gstreamer)
4ed20663 75 #:use-module (gnu packages gtk)
421a80a2 76 #:use-module (gnu packages icu4c)
c937562e 77 #:use-module (gnu packages image)
4ed20663 78 #:use-module (gnu packages imagemagick)
d79a343b 79 #:use-module (gnu packages libevent)
b10ab723 80 #:use-module (gnu packages libffi)
89b2e0b0 81 #:use-module (gnu packages linux)
ed118043 82 #:use-module (gnu packages man)
0da98533 83 #:use-module (gnu packages maths)
4ed20663 84 #:use-module (gnu packages multiprecision)
45203542 85 #:use-module (gnu packages networking)
be7134bf 86 #:use-module (gnu packages ncurses)
b04a52a6 87 #:use-module (gnu packages openstack)
d488d5d6 88 #:use-module (gnu packages password-utils)
c9b1b4f9 89 #:use-module (gnu packages pcre)
4ed20663 90 #:use-module (gnu packages perl)
b10ab723 91 #:use-module (gnu packages pkg-config)
06ff0837 92 #:use-module (gnu packages protobuf)
4535a93a 93 #:use-module (gnu packages qt)
4ed20663 94 #:use-module (gnu packages readline)
6eb7af2a 95 #:use-module (gnu packages sdl)
80ce42bd 96 #:use-module (gnu packages shells)
c9b1b4f9 97 #:use-module (gnu packages statistics)
8f9ac901 98 #:use-module (gnu packages tex)
1c65314c 99 #:use-module (gnu packages texinfo)
cc2b77df 100 #:use-module (gnu packages tls)
e25f0174 101 #:use-module (gnu packages version-control)
02f8f804 102 #:use-module (gnu packages video)
8d12be1e 103 #:use-module (gnu packages web)
ce0614dd 104 #:use-module (gnu packages base)
26b307e2 105 #:use-module (gnu packages xml)
6fa14469 106 #:use-module (gnu packages xorg)
0bdc1671 107 #:use-module (gnu packages xdisorg)
4ed20663 108 #:use-module (gnu packages zip)
afa181ff 109 #:use-module (gnu packages tcl)
63bcec71 110 #:use-module (gnu packages bdw-gc)
a01b6da7
NK
111 #:use-module (guix packages)
112 #:use-module (guix download)
ea5456c8 113 #:use-module (guix git-download)
11bb85a1 114 #:use-module (guix utils)
acc26ff1 115 #:use-module (guix build-system gnu)
d8c4998f 116 #:use-module (guix build-system cmake)
898238b9 117 #:use-module (guix build-system python)
1c65314c
FB
118 #:use-module (guix build-system trivial)
119 #:use-module (srfi srfi-1))
a01b6da7 120
45848023 121(define-public python-2.7
a01b6da7
NK
122 (package
123 (name "python")
49c2a46e 124 (version "2.7.13")
a01b6da7
NK
125 (source
126 (origin
127 (method url-fetch)
9b43a0ff 128 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
129 version "/Python-" version ".tar.xz"))
130 (sha256
131 (base32
49c2a46e 132 "0cgpk3zk0fgpji59pb4zy9nzljr70qzgv1vpz5hq5xw2d2c47m9m"))
c3052d6b
ML
133 (patches (search-patches "python-2.7-search-paths.patch"
134 "python-2-deterministic-build-info.patch"
15e57f57 135 "python-2.7-site-prefixes.patch"
dc5cec21
LF
136 "python-2.7-source-date-epoch.patch"
137 "python-2.7-getentropy-on-old-kernels.patch"))
10a42aa2
EF
138 (modules '((guix build utils)))
139 ;; suboptimal to delete failing tests here, but if we delete them in the
140 ;; arguments then we need to make sure to strip out that phase when it
141 ;; gets inherited by python and python-minimal.
142 (snippet
143 '(begin
144 (for-each delete-file
145 '("Lib/test/test_compileall.py"
f0499100 146 "Lib/test/test_ctypes.py" ; fails on mips64el
10a42aa2
EF
147 "Lib/test/test_distutils.py"
148 "Lib/test/test_import.py"
149 "Lib/test/test_shutil.py"
150 "Lib/test/test_socket.py"
1bb163b0 151 "Lib/test/test_subprocess.py"))
10a42aa2 152 #t))))
02f0c3b2
LC
153 (outputs '("out"
154 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 155 (build-system gnu-build-system)
3fdc99da 156 (arguments
10a42aa2 157 `(;; 356 tests OK.
e7e7a1eb
EF
158 ;; 6 tests failed:
159 ;; test_compileall test_distutils test_import test_shutil test_socket
160 ;; test_subprocess
161 ;; 39 tests skipped:
ff6f33cf
ED
162 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
163 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
164 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
165 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
166 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
167 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
168 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
169 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
170 ;; test_winreg test_winsound test_zipfile64
171 ;; 4 skips unexpected on linux2:
172 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 173 #:test-target "test"
3fdc99da 174 #:configure-flags
6a20289d
LC
175 (list "--enable-shared" ;allow embedding
176 "--with-system-ffi" ;build ctypes
aaf75c89 177 "--with-ensurepip=install" ;install pip and setuptools
a282d7ff 178 "--enable-unicode=ucs4"
6a20289d
LC
179 (string-append "LDFLAGS=-Wl,-rpath="
180 (assoc-ref %outputs "out") "/lib"))
fd982732 181
d2cc9c7c
LC
182 #:modules ((ice-9 ftw) (ice-9 match)
183 (guix build utils) (guix build gnu-build-system))
fd982732 184 #:phases
46472ecd
MW
185 (modify-phases %standard-phases
186 (add-before
187 'configure 'patch-lib-shells
188 (lambda _
189 ;; Filter for existing files, since some may not exist in all
190 ;; versions of python that are built with this recipe.
191 (substitute* (filter file-exists?
192 '("Lib/subprocess.py"
193 "Lib/popen2.py"
194 "Lib/distutils/tests/test_spawn.py"
195 "Lib/test/test_subprocess.py"))
196 (("/bin/sh") (which "sh")))
dedc8320
LC
197
198 ;; Use zero as the timestamp in .pyc files so that builds are
199 ;; deterministic. TODO: Remove it when this variable is set in
200 ;; gnu-build-system.scm.
a665996f 201 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 202 #t))
5b4e2791
LC
203 (add-before 'configure 'do-not-record-configure-flags
204 (lambda* (#:key configure-flags #:allow-other-keys)
205 ;; Remove configure flags from the installed '_sysconfigdata.py'
206 ;; and 'Makefile' so we don't end up keeping references to the
207 ;; build tools.
208 ;;
209 ;; Preserve at least '--with-system-ffi' since otherwise the
210 ;; thing tries to build libffi, fails, and we end up with a
211 ;; Python that lacks ctypes.
212 (substitute* "configure"
213 (("^CONFIG_ARGS=.*$")
214 (format #f "CONFIG_ARGS='~a'\n"
215 (if (member "--with-system-ffi" configure-flags)
216 "--with-system-ffi"
217 ""))))
218 #t))
46472ecd
MW
219 (add-before
220 'check 'pre-check
221 (lambda _
222 ;; 'Lib/test/test_site.py' needs a valid $HOME
223 (setenv "HOME" (getcwd))
224 #t))
225 (add-after
226 'unpack 'set-source-file-times-to-1980
227 ;; XXX One of the tests uses a ZIP library to pack up some of the
228 ;; source tree, and fails with "ZIP does not support timestamps
229 ;; before 1980". Work around this by setting the file times in the
230 ;; source tree to sometime in early 1980.
231 (lambda _
232 (let ((circa-1980 (* 10 366 24 60 60)))
233 (ftw "." (lambda (file stat flag)
234 (utime file circa-1980 circa-1980)
235 #t))
02f0c3b2 236 #t)))
9ffe61b0
LC
237 (add-after 'install 'remove-tests
238 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
239 ;; because these files are used by some libraries out there.
240 (lambda* (#:key outputs #:allow-other-keys)
241 (let ((out (assoc-ref outputs "out")))
242 (match (scandir (string-append out "/lib")
243 (lambda (name)
244 (string-prefix? "python" name)))
245 ((pythonX.Y)
246 (let ((testdir (string-append out "/lib/" pythonX.Y
247 "/test")))
248 (with-directory-excursion testdir
249 (for-each delete-file-recursively
250 (scandir testdir
251 (match-lambda
252 ((or "." "..") #f)
253 (file
254 (not
255 (string-prefix? "test_support."
256 file))))))
257 (call-with-output-file "__init__.py" (const #t))
258 #t)))))))
216c283b
LC
259 (add-before 'strip 'make-libraries-writable
260 (lambda* (#:key outputs #:allow-other-keys)
261 ;; Make .so files writable so they can be stripped.
262 (let ((out (assoc-ref outputs "out")))
263 (for-each (lambda (file)
264 (chmod file #o755))
265 (find-files (string-append out "/lib")
266 "\\.so"))
267 #t)))
02f0c3b2
LC
268 (add-after 'install 'move-tk-inter
269 (lambda* (#:key outputs #:allow-other-keys)
270 ;; When Tkinter support is built move it to a separate output so
271 ;; that the main output doesn't contain a reference to Tcl/Tk.
272 (let ((out (assoc-ref outputs "out"))
273 (tk (assoc-ref outputs "tk")))
274 (when tk
275 (match (find-files out "tkinter.*\\.so")
276 ((tkinter.so)
277 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
278 ;; want it under TK/lib/pythonX.Y/site-packages.
279 (let* ((len (string-length out))
280 (target (string-append
281 tk "/"
282 (string-drop
283 (dirname (dirname tkinter.so))
284 len)
285 "/site-packages")))
286 (install-file tkinter.so target)
287 (delete-file tkinter.so)))))
288 #t))))))
a01b6da7 289 (inputs
3fdc99da
CR
290 `(("bzip2" ,bzip2)
291 ("gdbm" ,gdbm)
b10ab723 292 ("libffi" ,libffi) ; for ctypes
b88e1b0a 293 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 294 ("openssl" ,openssl)
3fdc99da 295 ("readline" ,readline)
afa181ff
LC
296 ("zlib" ,zlib)
297 ("tcl" ,tcl)
298 ("tk" ,tk))) ; for tkinter
b10ab723
CR
299 (native-inputs
300 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
301 (native-search-paths
302 (list (search-path-specification
303 (variable "PYTHONPATH")
af070955 304 (files '("lib/python2.7/site-packages")))))
f0499100 305 (home-page "https://www.python.org")
afa181ff 306 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
307 (description
308 "Python is a remarkably powerful dynamic programming language that
309is used in a wide variety of application domains. Some of its key
310distinguishing features include: clear, readable syntax; strong
311introspection capabilities; intuitive object orientation; natural
312expression of procedural code; full modularity, supporting hierarchical
313packages; exception-based error handling; and very high level dynamic
314data types.")
3f641af0 315 (license license:psfl)))
acc26ff1 316
45848023
HG
317;; Current 2.x version.
318(define-public python-2 python-2.7)
319
72df6680 320(define-public python-3.5
b24d1cfc 321 (package (inherit python-2)
343cee8a 322 (version "3.5.3")
717003e3
LC
323 (source (origin
324 (method url-fetch)
325 (uri (string-append "https://www.python.org/ftp/python/"
326 version "/Python-" version ".tar.xz"))
fc1adab1
AK
327 (patches (search-patches
328 "python-fix-tests.patch"
72df6680 329 "python-3.5-fix-tests.patch"
e4d34cd0 330 "python-3.5-getentropy-on-old-kernels.patch"
fc1adab1
AK
331 "python-3-deterministic-build-info.patch"
332 "python-3-search-paths.patch"))
717003e3
LC
333 (patch-flags '("-p0"))
334 (sha256
335 (base32
343cee8a 336 "1c6v1n9nz4mlx9mw1125fxpmbrgniqdbbx9hnqx44maqazb2mzpf"))
fd615918
EF
337 (snippet
338 '(delete-file
339 "Lib/ctypes/test/test_win32.py")))) ; fails on aarch64
1f434457
MW
340 (arguments (substitute-keyword-arguments (package-arguments python-2)
341 ((#:tests? _) #t)))
1aebc0cb
AE
342 (native-search-paths
343 (list (search-path-specification
344 (variable "PYTHONPATH")
0e05d01e
SB
345 (files (list (string-append "lib/python"
346 (version-major+minor version)
347 "/site-packages"))))))))
f26a77ff 348
45848023 349;; Current 3.x version.
72df6680 350(define-public python-3 python-3.5)
45848023
HG
351
352;; Current major version.
353(define-public python python-3)
354
95288fcc
LC
355;; Minimal variants of Python, mostly used to break the cycle between Tk and
356;; Python (Tk -> libxcb -> Python.)
357
358(define-public python2-minimal
359 (package (inherit python-2)
360 (name "python-minimal")
02f0c3b2 361 (outputs '("out"))
5927a843
LC
362
363 ;; Keep zlib, which is used by 'pip' (via the 'zipimport' module), which
364 ;; is invoked upon 'make install'. 'pip' also expects 'ctypes' and thus
365 ;; libffi.
366 (inputs `(("libffi" ,libffi)
367 ("zlib" ,zlib)))))
95288fcc
LC
368
369(define-public python-minimal
898238b9 370 (package (inherit python)
95288fcc 371 (name "python-minimal")
02f0c3b2 372 (outputs '("out"))
95288fcc 373
d0b73960 374 ;; Build fails due to missing ctypes without libffi.
95288fcc
LC
375 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
376 ;; zlib is required by 'zipimport', used by pip.
d0b73960
CAW
377 (inputs `(("libffi" ,libffi)
378 ("openssl" ,openssl)
95288fcc
LC
379 ("zlib" ,zlib)))))
380
64cb064c
LC
381(define* (wrap-python3 python
382 #:optional
383 (name (string-append (package-name python) "-wrapper")))
898238b9 384 (package (inherit python)
95288fcc 385 (name name)
898238b9
AE
386 (source #f)
387 (build-system trivial-build-system)
02f0c3b2 388 (outputs '("out"))
3969ca54 389 (inputs `(("bash" ,bash)))
3c0f2329 390 (propagated-inputs `(("python" ,python)))
898238b9
AE
391 (arguments
392 `(#:modules ((guix build utils))
393 #:builder
394 (begin
395 (use-modules (guix build utils))
396 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
397 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
398 (mkdir-p bin)
399 (for-each
400 (lambda (old new)
401 (symlink (string-append python old)
402 (string-append bin "/" new)))
3969ca54
SB
403 `("python3" ,"pydoc3" ,"idle3" ,"pip3")
404 `("python" ,"pydoc" ,"idle" ,"pip"))
405 ;; python-config outputs search paths based upon its location,
406 ;; use a bash wrapper to avoid changing its outputs.
407 (let ((bash (string-append (assoc-ref %build-inputs "bash")
408 "/bin/bash"))
409 (old (string-append python "python3-config"))
410 (new (string-append bin "/python-config")))
411 (with-output-to-file new
412 (lambda ()
413 (format #t "#!~a~%" bash)
414 (format #t "exec \"~a\" \"$@\"~%" old)
415 (chmod new #o755)
416 #t)))))))
0d56e3e1
LC
417 (synopsis "Wrapper for the Python 3 commands")
418 (description
419 "This package provides wrappers for the commands of Python@tie{}3.x such
420that they can be invoked under their usual name---e.g., @command{python}
421instead of @command{python3}.")))
422
95288fcc
LC
423(define-public python-wrapper (wrap-python3 python))
424(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 425
aaf625b8
RW
426(define-public python-psutil
427 (package
428 (name "python-psutil")
88535a44 429 (version "4.3.0")
aaf625b8
RW
430 (source
431 (origin
432 (method url-fetch)
f56777be 433 (uri (pypi-uri "psutil" version))
aaf625b8
RW
434 (sha256
435 (base32
88535a44 436 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8 437 (build-system python-build-system)
fb08c4fe
MB
438 (arguments
439 ;; FIXME: some tests does not return and times out.
440 '(#:tests? #f))
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")
3b86a385 459 (version "1.7.1")
f9da1d8a
ED
460 (source
461 (origin
462 (method url-fetch)
690e8c66 463 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
464 (sha256
465 (base32
3b86a385 466 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
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")
c1aba1a7 532 (version "1.17.4")
429fdea1
ED
533 (source
534 (origin
535 (method url-fetch)
81b9bbbd 536 (uri (pypi-uri "paramiko" version))
429fdea1
ED
537 (sha256
538 (base32
c1aba1a7 539 "1rs2qcmskcmq66q6g5al08wa41l9am0fad5r719m8wf91msyylqw"))))
429fdea1 540 (build-system python-build-system)
49910e6a
MB
541 (arguments
542 '(;; FIXME: One test fails with "EOFError not raised by connect".
543 #:tests? #f))
544 ;; #:phases
545 ;; (modify-phases %standard-phases
546 ;; (replace 'check
547 ;; (lambda _
548 ;; (zero? (system* "python" "test.py")))))))
a3fc12da 549 (propagated-inputs
f22efa01
HG
550 `(("python-pycrypto" ,python-pycrypto)
551 ("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
552 (home-page "http://www.paramiko.org/")
553 (synopsis "SSHv2 protocol library")
554 (description "Paramiko is a python implementation of the SSHv2 protocol,
555providing both client and server functionality. While it leverages a Python C
556extension for low level cryptography (PyCrypto), Paramiko itself is a pure
557Python interface around SSH networking concepts.")
3f641af0 558 (license license:lgpl2.1+)))
429fdea1
ED
559
560(define-public python2-paramiko
561 (package-with-python2 python-paramiko))
562
563
de73dbf6
ED
564(define-public python-httplib2
565 (package
566 (name "python-httplib2")
286f1bac 567 (version "0.9.2")
de73dbf6
ED
568 (source
569 (origin
570 (method url-fetch)
286f1bac 571 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
572 (sha256
573 (base32
286f1bac 574 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6 575 (build-system python-build-system)
286f1bac 576 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
577 (synopsis "Comprehensive HTTP client library")
578 (description
579 "A comprehensive HTTP client library supporting many features left out of
580other HTTP libraries.")
581 (license license:expat)))
582
583(define-public python2-httplib2
584 (package-with-python2 python-httplib2))
585
67039875
ED
586(define-public python-ecdsa
587 (package
588 (name "python-ecdsa")
589 (version "0.13")
590 (source
591 (origin
592 (method url-fetch)
593 (uri (string-append
594 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
595 version
596 ".tar.gz"))
597 (sha256
598 (base32
599 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
600 (build-system python-build-system)
67039875
ED
601 (inputs
602 `(("openssl" ,openssl)))
603 (home-page
7bf837fd 604 "https://github.com/warner/python-ecdsa")
67039875
ED
605 (synopsis
606 "ECDSA cryptographic signature library (pure python)")
607 (description
608 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
609Curve Digital Signature Algorithm), implemented purely in Python. With this
610library, you can quickly create keypairs (signing key and verifying key), sign
611messages, and verify the signatures. The keys and signatures are very short,
612making them easy to handle and incorporate into other protocols.")
613 (license license:expat)))
614
615(define-public python2-ecdsa
616 (package-with-python2 python-ecdsa))
617
52323f32
ED
618(define-public python-ccm
619 (package
620 (name "python-ccm")
db5567f7 621 (version "2.1.6")
52323f32
ED
622 (source
623 (origin
624 (method url-fetch)
db5567f7 625 (uri (pypi-uri "ccm" version))
52323f32
ED
626 (sha256
627 (base32
db5567f7 628 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32 629 (build-system python-build-system)
f22efa01 630 (propagated-inputs
52323f32 631 `(("python-pyyaml" ,python-pyyaml)
e165f137
HG
632 ;; Not listed in setup.py, but used in ccmlib/node.py for full
633 ;; functionality
634 ("python-psutil" ,python-psutil)
52323f32
ED
635 ("python-six" ,python-six)))
636 (home-page "https://github.com/pcmanus/ccm")
d9a6e221
HG
637 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
638localhost")
639 (description "Cassandra Cluster Manager is a development tool for testing
640local Cassandra clusters. It creates, launches and removes Cassandra clusters
641on localhost.")
3f641af0 642 (license license:asl2.0)))
52323f32
ED
643
644(define-public python2-ccm
645 (package-with-python2 python-ccm))
646
89114f39 647(define-public python-pytz
acc26ff1 648 (package
89114f39 649 (name "python-pytz")
a5f92ca0 650 (version "2016.10")
acc26ff1
CR
651 (source
652 (origin
653 (method url-fetch)
61c9babb 654 (uri (pypi-uri "pytz" version ".tar.bz2"))
acc26ff1
CR
655 (sha256
656 (base32
a5f92ca0 657 "0az099cyp6p5xbsvfcdacj4hvxncbwm2ayn3h55mcp07zb2b45kh"))))
acc26ff1 658 (build-system python-build-system)
8498b8cf 659 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 660 (home-page "http://pythonhosted.org/pytz")
9e771e3b 661 (synopsis "Python timezone library")
acc26ff1
CR
662 (description
663 "This library allows accurate and cross platform timezone calculations
664using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 665 (license license:expat)))
5ace6e2f 666
89114f39 667(define-public python2-pytz
11bb85a1 668 (package-with-python2 python-pytz))
89114f39 669
fc50e9c6 670
89114f39 671(define-public python-babel
5ace6e2f 672 (package
89114f39 673 (name "python-babel")
ffb1e98d 674 (version "2.3.4")
5ace6e2f
CR
675 (source
676 (origin
677 (method url-fetch)
b850a6d8 678 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
679 (sha256
680 (base32
ffb1e98d 681 "0x98qqqw35xllpcama013a9788ly84z8dm1w2wwfpxh2710c8df5"))))
5ace6e2f 682 (build-system python-build-system)
f22efa01 683 (propagated-inputs
f3b98f4f 684 `(("python-pytz" ,python-pytz)))
8498b8cf 685 (arguments `(#:tests? #f)) ; no test target
e1804763 686 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
687 (synopsis
688 "Tools for internationalizing Python applications")
689 (description
690 "Babel is composed of two major parts:
691- tools to build and work with gettext message catalogs
692- a Python interface to the CLDR (Common Locale Data Repository), providing
693access to various locale display names, localized number and date formatting,
694etc. ")
3f641af0 695 (license license:bsd-3)))
89114f39
AE
696
697(define-public python2-babel
11bb85a1 698 (package-with-python2 python-babel))
73adf220 699
ed377cc6
RW
700(define-public python2-backport-ssl-match-hostname
701 (package
702 (name "python2-backport-ssl-match-hostname")
f2d06d46 703 (version "3.5.0.1")
ed377cc6
RW
704 (source
705 (origin
706 (method url-fetch)
707 (uri (string-append
708 "https://pypi.python.org/packages/source/b/"
709 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
710 version ".tar.gz"))
711 (sha256
712 (base32
f2d06d46 713 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 714 (build-system python-build-system)
f2d06d46
EF
715 (arguments
716 `(#:python ,python-2
717 #:tests? #f)) ; no test target
f2d06d46
EF
718 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
719 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
720 (description
721 "This backport brings the ssl.match_hostname() function to users of
722earlier versions of Python. The function checks the hostname in the
723certificate returned by the server to which a connection has been established,
724and verifies that it matches the intended target hostname.")
3f641af0 725 (license license:psfl)))
ed377cc6 726
d205f895
TD
727(define-public python-hdf4
728 (package
729 (name "python-hdf4")
730 (version "0.9")
731 (source
732 (origin
733 (method url-fetch)
734 (uri (pypi-uri name version))
735 (sha256
736 (base32
737 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
738 (build-system python-build-system)
739 (native-inputs `(("nose" ,python-nose)))
740 (propagated-inputs `(("numpy" ,python-numpy)))
741 (inputs
742 `(("hdf4" ,hdf4)
743 ("libjpeg" ,libjpeg)
744 ("zlib" ,zlib)))
745 (arguments
746 `(#:phases
747 (modify-phases %standard-phases
748 (replace 'check
749 (lambda _
750 ;; The 'runexamples' script sets PYTHONPATH to CWD, then goes
751 ;; on to import numpy. Somehow this works on their CI system.
752 ;; Let's just manage PYTHONPATH here instead.
753 (substitute* "runexamples.sh"
754 (("export PYTHONPATH=.*") ""))
755 (setenv "PYTHONPATH"
756 (string-append (getcwd) ":"
757 (getenv "PYTHONPATH")))
758 (and (zero? (system* "./runexamples.sh"))
759 (zero? (system* "nosetests" "-v"))))))))
760 (home-page "https://github.com/fhs/python-hdf4")
761 (synopsis "Python interface to the NCSA HDF4 library")
762 (description
763 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
764which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
765NetCDF files can also be read and modified. Python-HDF4 is a fork of
766@url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
767 (license license:expat)))
768
769(define-public python2-hdf4
770 (package-with-python2 python-hdf4))
771
ef5cbf9b
RW
772(define-public python-h5py
773 (package
774 (name "python-h5py")
fe147c41 775 (version "2.6.0")
ef5cbf9b
RW
776 (source
777 (origin
778 (method url-fetch)
fe147c41 779 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
780 (sha256
781 (base32
fe147c41 782 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
ef5cbf9b 783 (build-system python-build-system)
797e1401
RW
784 (arguments
785 `(#:tests? #f ; no test target
786 #:phases
787 (modify-phases %standard-phases
788 (add-after 'unpack 'fix-hdf5-paths
789 (lambda* (#:key inputs #:allow-other-keys)
790 (let ((prefix (assoc-ref inputs "hdf5")))
791 (substitute* "setup_build.py"
792 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
793 (string-append "['" prefix "/lib" "']"))
794 (("'/opt/local/include', '/usr/local/include'")
795 (string-append "'" prefix "/include" "'")))
796 (substitute* "setup_configure.py"
797 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
798 (string-append "['" prefix "/lib" "']")))
799 #t))))))
3c4010b1 800 (propagated-inputs
69866690
HG
801 `(("python-six" ,python-six)
802 ("python-numpy" ,python-numpy)))
ef5cbf9b 803 (inputs
69866690 804 `(("hdf5" ,hdf5)))
ef5cbf9b 805 (native-inputs
fe147c41
EF
806 `(("python-cython" ,python-cython)
807 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
808 (home-page "http://www.h5py.org/")
809 (synopsis "Read and write HDF5 files from Python")
810 (description
811 "The h5py package provides both a high- and low-level interface to the
812HDF5 library from Python. The low-level interface is intended to be a
813complete wrapping of the HDF5 API, while the high-level component supports
814access to HDF5 files, datasets and groups using established Python and NumPy
815concepts.")
9820a028 816 (license license:bsd-3)))
ef5cbf9b
RW
817
818(define-public python2-h5py
9820a028 819 (package-with-python2 python-h5py))
ef5cbf9b 820
ea8450c8
TD
821(define-public python-netcdf4
822 (package
823 (name "python-netcdf4")
d5a97839 824 (version "1.2.7")
ea8450c8
TD
825 (source
826 (origin
827 (method url-fetch)
828 (uri (pypi-uri "netCDF4" version))
829 (sha256
830 (base32
d5a97839 831 "1fllizmnpw0zkzzm4j9pgamarlzfn3kmv9zrm0w65q1y31h9ni0c"))))
ea8450c8
TD
832 (build-system python-build-system)
833 (native-inputs
834 `(("python-cython" ,python-cython)))
835 (propagated-inputs
836 `(("python-numpy" ,python-numpy)))
837 (inputs
838 `(("netcdf" ,netcdf)
839 ("hdf4" ,hdf4)
840 ("hdf5" ,hdf5)))
841 (arguments
842 '(#:phases
843 (modify-phases %standard-phases
844 (replace 'check
845 (lambda _
846 (setenv "NO_NET" "1") ; disable opendap tests
847 (with-directory-excursion "test"
848 (setenv "PYTHONPATH" ; find and add the library we just built
849 (string-append
850 (car (find-files "../build" "lib.*"
851 #:directories? #:t
852 #:fail-on-error? #:t))
853 ":" (getenv "PYTHONPATH")))
854 (zero? (system* "python" "run_all.py"))))))))
855 (home-page
856 "https://github.com/Unidata/netcdf4-python")
857 (synopsis "Python/numpy interface to the netCDF library")
858 (description "Netcdf4-python is a Python interface to the netCDF C
859library. netCDF version 4 has many features not found in earlier
860versions of the library and is implemented on top of HDF5. This module
861can read and write files in both the new netCDF 4 and the old netCDF 3
862format, and can create files that are readable by HDF5 clients. The
863API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
864to users of that module.")
865 ;; The software is mainly ISC, but includes some files covered
866 ;; by the Expat license.
867 (license (list license:isc license:expat))))
868
869(define-public python2-netcdf4
870 (package-with-python2 python-netcdf4))
871
c1448c69
EB
872(define-public python-lockfile
873 (package
874 (name "python-lockfile")
692add53 875 (version "0.12.2")
c1448c69
EB
876 (source
877 (origin
878 (method url-fetch)
879 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
880 "lockfile-" version ".tar.gz"))
881 (sha256
882 (base32
692add53 883 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
884 (build-system python-build-system)
885 (arguments '(#:test-target "check"))
692add53
BW
886 (native-inputs
887 `(("python-pbr" ,python-pbr)))
6a8f26a4 888 (home-page "https://launchpad.net/pylockfile")
c1448c69
EB
889 (synopsis "Platform-independent file locking module")
890 (description
891 "The lockfile package exports a LockFile class which provides a simple
892API for locking files.")
f210e944 893 (license license:expat)))
c1448c69
EB
894
895(define-public python2-lockfile
f210e944 896 (package-with-python2 python-lockfile))
c1448c69 897
5a1a4bf6
EB
898(define-public python-mock
899 (package
900 (name "python-mock")
901 (version "1.0.1")
902 (source
903 (origin
904 (method url-fetch)
6b7877e1 905 (uri (pypi-uri "mock" version))
5a1a4bf6
EB
906 (sha256
907 (base32
908 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
909 (build-system python-build-system)
910 (arguments '(#:test-target "check"))
6b7877e1 911 (home-page "https://github.com/testing-cabal/mock")
9e771e3b 912 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
913 (description
914 "Mock is a library for testing in Python. It allows you to replace parts
915of your system under test with mock objects and make assertions about how they
916have been used.")
bd3fa666 917 (license license:expat)))
5a1a4bf6
EB
918
919(define-public python2-mock
920 (package-with-python2 python-mock))
921
fc50e9c6 922
73adf220
AE
923(define-public python-setuptools
924 (package
925 (name "python-setuptools")
d660f7be 926 (version "31.0.0")
73adf220
AE
927 (source
928 (origin
929 (method url-fetch)
d660f7be 930 (uri (pypi-uri "setuptools" version))
73adf220
AE
931 (sha256
932 (base32
d660f7be 933 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
e0ed4579
HG
934 (modules '((guix build utils)))
935 (snippet
936 '(begin
937 ;; Remove included binaries which are used to build self-extracting
938 ;; installers for Windows.
939 ;; TODO: Find some way to build them ourself so we can include them.
940 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
941 #t))))
73adf220 942 (build-system python-build-system)
d3d656c5
AE
943 ;; FIXME: Tests require pytest, which itself relies on setuptools.
944 ;; One could bootstrap with an internal untested setuptools.
73adf220 945 (arguments
824af8ca 946 `(#:tests? #f))
73adf220
AE
947 (home-page "https://pypi.python.org/pypi/setuptools")
948 (synopsis
949 "Library designed to facilitate packaging Python projects")
950 (description
951 "Setuptools is a fully-featured, stable library designed to facilitate
952packaging Python projects, where packaging includes:
953Python package and module definitions,
954distribution package metadata,
955test hooks,
956project installation,
957platform-specific details,
958Python 3 support.")
d660f7be
MB
959 ;; TODO: setuptools now bundles the following libraries:
960 ;; packaging, pyparsing, six and appdirs. How to unbundle?
961 (license (list license:psfl ; setuptools itself
962 license:expat ; six, appdirs, pyparsing
963 license:asl2.0 ; packaging is dual ASL2/BSD-2
964 license:bsd-2))))
73adf220
AE
965
966(define-public python2-setuptools
967 (package-with-python2 python-setuptools))
fc50e9c6 968
aa21c764 969;;; Pycrypto is abandoned upstream:
1194575b 970;;;
aa21c764 971;;; https://github.com/dlitz/pycrypto/issues/173
1194575b 972;;;
aa21c764 973;;; TODO Remove this package from GNU Guix.
cafc3f5a
EB
974(define-public python-pycrypto
975 (package
976 (name "python-pycrypto")
977 (version "2.6.1")
978 (source
979 (origin
980 (method url-fetch)
aa21c764
LF
981 (uri (pypi-uri "pycrypto" version))
982 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
cafc3f5a
EB
983 (sha256
984 (base32
985 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
986 (build-system python-build-system)
cafc3f5a
EB
987 (inputs
988 `(("python" ,python)
989 ("gmp" ,gmp)))
990 (arguments
991 `(#:phases
992 (alist-cons-before
993 'build 'set-build-env
994 ;; pycrypto runs an autoconf configure script behind the scenes
995 (lambda _
996 (setenv "CONFIG_SHELL" (which "bash")))
997 %standard-phases)))
998 (home-page "http://www.pycrypto.org/")
999 (synopsis "Cryptographic modules for Python")
1000 (description
1001 "Pycrypto is a collection of both secure hash functions (such as SHA256
1002and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 1003etc.). The package is structured to make adding new modules easy.")
3f641af0 1004 (license license:public-domain)))
cafc3f5a 1005
345f0611 1006(define-public python2-pycrypto
1c0059da
EF
1007 (let ((pycrypto (package-with-python2 python-pycrypto)))
1008 (package (inherit pycrypto)
1009 (inputs
1010 `(("python" ,python-2)
1011 ,@(alist-delete
1012 "python"
1013 (package-inputs pycrypto)))))))
345f0611 1014
de959250 1015(define-public python-eventlet
1016 (package
1017 (name "python-eventlet")
1018 (version "0.20.1")
1019 (source
1020 (origin
1021 (method url-fetch)
1022 (uri (pypi-uri "eventlet" version))
1023 (sha256
1024 (base32
1025 "0f3q55mq4n021wb7qa53pz3ix6i2py64sap66vsaqm2scjw83m9s"))))
1026 (build-system python-build-system)
1027 (propagated-inputs
1028 `(("python-greenlet" ,python-greenlet)))
1029 (home-page "http://eventlet.net")
1030 (synopsis "Concurrent networking library for Python")
1031 (description
1032 "Eventlet is a concurrent networking library for Python that
1033allows you to change how you run your code, not how you write it.
1034It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
1035Coroutines ensure that the developer uses a blocking style of programming
1036that is similar to threading, but provide the benefits of non-blocking I/O.
1037The event dispatch is implicit, which means you can easily use @code{Eventlet}
1038from the Python interpreter, or as a small part of a larger application.")
1039 (license license:expat)))
1040
1041(define-public python2-eventlet
1042 (let ((base (package-with-python2
1043 (strip-python2-variant python-eventlet))))
1044 (package (inherit base)
1045 (propagated-inputs
1046 `(("python2-enum34" ,python2-enum34)
1047 ,@(package-propagated-inputs base))))))
1048
cafc3f5a
EB
1049(define-public python-keyring
1050 (package
1051 (name "python-keyring")
13f3ff35 1052 (version "8.7")
cafc3f5a
EB
1053 (source
1054 (origin
1055 (method url-fetch)
664e6c3a 1056 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
1057 (sha256
1058 (base32
13f3ff35 1059 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
1060 (build-system python-build-system)
1061 (native-inputs
13f3ff35 1062 `(("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1063 (propagated-inputs
cafc3f5a
EB
1064 `(("python-pycrypto" ,python-pycrypto)))
1065 (arguments
664e6c3a 1066 `(#:tests? #f)) ;TODO: tests require pytest
190ba6c2 1067 (home-page "https://github.com/jaraco/keyring")
cafc3f5a
EB
1068 (synopsis "Store and access your passwords safely")
1069 (description
1070 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 1071service from python. It can be used in any application that needs safe
cafc3f5a
EB
1072password storage.")
1073 ;; "MIT" and PSF dual license
f210e944 1074 (license license:x11)))
cafc3f5a 1075
d7af1069 1076(define-public python2-keyring
f210e944 1077 (package-with-python2 python-keyring))
d7af1069 1078
a480bc41
EB
1079(define-public python-six
1080 (package
1081 (name "python-six")
b6ab89ef 1082 (version "1.10.0")
a480bc41
EB
1083 (source
1084 (origin
1085 (method url-fetch)
b6ab89ef 1086 (uri (pypi-uri "six" version))
a480bc41
EB
1087 (sha256
1088 (base32
b6ab89ef 1089 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41 1090 (build-system python-build-system)
4fd129ee
MB
1091 (native-inputs
1092 `(("python-py" ,python-py)
1093 ("python-pytest" ,python-pytest)))
a480bc41
EB
1094 (home-page "http://pypi.python.org/pypi/six/")
1095 (synopsis "Python 2 and 3 compatibility utilities")
1096 (description
35b9e423 1097 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
1098functions for smoothing over the differences between the Python versions with
1099the goal of writing Python code that is compatible on both Python versions.
35b9e423 1100Six supports every Python version since 2.5. It is contained in only one
a480bc41 1101Python file, so it can be easily copied into your project.")
3f641af0 1102 (license license:x11)))
a480bc41 1103
0c20025c
AE
1104(define-public python2-six
1105 (package-with-python2 python-six))
1106
22d7360b 1107(define-public python-dateutil
cafc3f5a
EB
1108 (package
1109 (name "python-dateutil")
6bd9ad69 1110 (version "2.5.3")
cafc3f5a
EB
1111 (source
1112 (origin
1113 (method url-fetch)
394b8060 1114 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
1115 (sha256
1116 (base32
6bd9ad69 1117 "1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l"))))
cafc3f5a 1118 (build-system python-build-system)
f22efa01 1119 (propagated-inputs
394b8060 1120 `(("python-six" ,python-six)))
b5a5fb19 1121 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a
EB
1122 (synopsis "Extensions to the standard datetime module")
1123 (description
1124 "The dateutil module provides powerful extensions to the standard
1125datetime module, available in Python 2.3+.")
f210e944 1126 (license license:bsd-3)))
cafc3f5a 1127
fc50e9c6
AE
1128(define-public python2-dateutil
1129 (package-with-python2 python-dateutil))
1d08c01f 1130
cafc3f5a
EB
1131(define-public python-parsedatetime
1132 (package
1133 (name "python-parsedatetime")
28958b64 1134 (version "2.3")
cafc3f5a
EB
1135 (source
1136 (origin
1137 (method url-fetch)
eebf6f01 1138 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1139 (sha256
1140 (base32
28958b64 1141 "1vkrmd398s11h1zn3zaqqsiqhj9lwy1ikcg6irx2lrgjzjg3rjll"))))
cafc3f5a
EB
1142 (build-system python-build-system)
1143 (native-inputs
eebf6f01 1144 `(("python-nose" ,python-nose)
28958b64
LC
1145 ("python-pyicu" ,python-pyicu)
1146 ("python-pytest" ,python-pytest)
1147 ("python-pytest-runner" ,python-pytest-runner)))
1148 (propagated-inputs
1149 `(("python-future" ,python-future)))
7bf837fd 1150 (home-page "https://github.com/bear/parsedatetime/")
cafc3f5a
EB
1151 (synopsis
1152 "Parse human-readable date/time text")
1153 (description
e881752c 1154 "Parse human-readable date/time text.")
f210e944 1155 (license license:asl2.0)))
cafc3f5a 1156
38b8f9b2 1157(define-public python2-parsedatetime
f210e944 1158 (package-with-python2 python-parsedatetime))
38b8f9b2 1159
d072efcb
RW
1160(define-public python-pandas
1161 (package
1162 (name "python-pandas")
8e086048 1163 (version "0.19.2")
d072efcb
RW
1164 (source
1165 (origin
1b96f069 1166 (method url-fetch)
8e086048 1167 (uri (pypi-uri "pandas" version))
1b96f069 1168 (sha256
b03ee02f
MB
1169 (base32 "0540cnbwy2hc4hv2sxfs8i47xi91qzvzxfn80dl785ibiicly3vg"))
1170 (patches
1171 (search-patches "python-pandas-skip-failing-tests.patch"))))
d072efcb 1172 (build-system python-build-system)
d072efcb 1173 (propagated-inputs
f22efa01
HG
1174 `(("python-numpy" ,python-numpy)
1175 ("python-pytz" ,python-pytz)
22d7360b 1176 ("python-dateutil" ,python-dateutil)))
d072efcb 1177 (native-inputs
abcc7a0e
HG
1178 `(("python-nose" ,python-nose)
1179 ("python-cython" ,python-cython)))
d072efcb
RW
1180 (home-page "http://pandas.pydata.org")
1181 (synopsis "Data structures for data analysis, time series, and statistics")
1182 (description
1183 "Pandas is a Python package providing fast, flexible, and expressive data
1184structures designed to make working with structured (tabular,
1185multidimensional, potentially heterogeneous) and time series data both easy
1186and intuitive. It aims to be the fundamental high-level building block for
1187doing practical, real world data analysis in Python.")
f210e944 1188 (license license:bsd-3)))
d072efcb
RW
1189
1190(define-public python2-pandas
f210e944 1191 (package-with-python2 python-pandas))
d072efcb 1192
cafc3f5a
EB
1193(define-public python-tzlocal
1194 (package
1195 (name "python-tzlocal")
ed80839b 1196 (version "1.2.2")
cafc3f5a
EB
1197 (source
1198 (origin
1199 (method url-fetch)
226d3331 1200 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1201 (sha256
1202 (base32
ed80839b 1203 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1204 (build-system python-build-system)
f22efa01
HG
1205 (propagated-inputs
1206 `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1207 (home-page "https://github.com/regebro/tzlocal")
1208 (synopsis
35b9e423 1209 "Local timezone information for Python")
cafc3f5a
EB
1210 (description
1211 "Tzlocal returns a tzinfo object with the local timezone information.
1212This module attempts to fix a glaring hole in pytz, that there is no way to
1213get the local timezone information, unless you know the zoneinfo name, and
1214under several distributions that's hard or impossible to figure out.")
3f641af0 1215 (license license:cc0)))
cafc3f5a 1216
1d08c01f
AE
1217(define-public python2-pysqlite
1218 (package
1219 (name "python2-pysqlite")
e80aaeb4 1220 (version "2.8.3")
1d08c01f
AE
1221 (source
1222 (origin
1223 (method url-fetch)
fe476868 1224 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1225 (sha256
1226 (base32
e80aaeb4 1227 "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
1d08c01f
AE
1228 (build-system python-build-system)
1229 (inputs
1230 `(("sqlite" ,sqlite)))
1231 (arguments
1232 `(#:python ,python-2 ; incompatible with Python 3
1233 #:tests? #f)) ; no test target
7bf837fd 1234 (home-page "https://github.com/ghaering/pysqlite")
7a03af70 1235 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1236 (description
1237 "Pysqlite provides SQLite bindings for Python that comply to the
1238Database API 2.0T.")
ed0cdf83 1239 (license license:zlib)))
1d08c01f 1240
2875caf5
AE
1241
1242(define-public python2-mechanize
1243 (package
1244 (name "python2-mechanize")
1245 (version "0.2.5")
1246 (source
1247 (origin
1248 (method url-fetch)
1249 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1250 version ".tar.gz"))
1251 (sha256
1252 (base32
1253 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1254 (build-system python-build-system)
2875caf5
AE
1255 (arguments
1256 `(#:python ,python-2 ; apparently incompatible with Python 3
1257 #:tests? #f))
1258 ;; test fails with message
1259 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1260 ;; (python-3.3.2) or
1261 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1262 ;; (python-2.7.5).
1263 ;; The source code is from March 2011 and probably not up-to-date
1264 ;; with respect to python unit tests.
1265 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1266 (synopsis
1267 "Stateful programmatic web browsing in Python")
1268 (description
1269 "Mechanize implements stateful programmatic web browsing in Python,
1270after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1271 (license (license:non-copyleft
1272 "file://COPYING"
1273 "See COPYING in the distribution."))))
2875caf5 1274
0352532e
AE
1275
1276(define-public python-simplejson
1277 (package
1278 (name "python-simplejson")
b2e6e150 1279 (version "3.10.0")
0352532e
AE
1280 (source
1281 (origin
1282 (method url-fetch)
988d1bad 1283 (uri (pypi-uri "simplejson" version))
0352532e
AE
1284 (sha256
1285 (base32
b2e6e150 1286 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
0352532e
AE
1287 (build-system python-build-system)
1288 (home-page "http://simplejson.readthedocs.org/en/latest/")
1289 (synopsis
1290 "Json library for Python")
1291 (description
e881752c
AK
1292 "JSON (JavaScript Object Notation) is a subset of JavaScript
1293syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1294format.
0352532e
AE
1295
1296Simplejson exposes an API familiar to users of the standard library marshal
1297and pickle modules. It is the externally maintained version of the json
1298library contained in Python 2.6, but maintains compatibility with Python 2.5
1299and (currently) has significant performance advantages, even without using
1300the optional C extension for speedups. Simplejson is also supported on
1301Python 3.3+.")
3f641af0 1302 (license license:x11)))
0352532e
AE
1303
1304(define-public python2-simplejson
1305 (package-with-python2 python-simplejson))
421a80a2
AE
1306
1307
ed07b08d 1308(define-public python-pyicu
421a80a2 1309 (package
ed07b08d 1310 (name "python-pyicu")
2e161eaf 1311 (version "1.9.5")
421a80a2
AE
1312 (source
1313 (origin
1314 (method url-fetch)
2e161eaf 1315 (uri (pypi-uri "PyICU" version))
421a80a2
AE
1316 (sha256
1317 (base32
2e161eaf 1318 "16rmxy9y0qhqqna2v49i7nzwm09as699rbyvh4raw7w602w55c3k"))))
421a80a2 1319 (build-system python-build-system)
dc027d40
MB
1320 (arguments
1321 '(#:phases
1322 (modify-phases %standard-phases
1323 (add-before 'check 'delete-failing-test
1324 (lambda _
1325 ;; XXX: These tests require locales that are unavailable
1326 ;; in the build environment.
1327 (delete-file "test/test_DateTimeParserGenerator.py")
1328 #t)))))
421a80a2
AE
1329 (inputs
1330 `(("icu4c" ,icu4c)))
421a80a2 1331 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1332 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1333 (description
1334 "PyICU is a python extension wrapping the ICU C++ API.")
f210e944 1335 (license license:x11)))
ed07b08d
LF
1336
1337(define-public python2-pyicu
f210e944 1338 (package-with-python2 python-pyicu))
cc20a22a
LC
1339
1340(define-public python2-dogtail
1341 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1342 ;; spaces in indentation" with Python 3.
1343 (package
1344 (name "python2-dogtail")
c5be3467 1345 (version "0.9.9")
cc20a22a
LC
1346 (source (origin
1347 (method url-fetch)
c5be3467 1348 (uri (pypi-uri "dogtail" version))
cc20a22a
LC
1349 (sha256
1350 (base32
c5be3467 1351 "0p5wfssvzr9w0bvhllzbbd8fnp4cca2qxcpcsc33dchrmh5n552x"))))
cc20a22a
LC
1352 (build-system python-build-system)
1353 (arguments `(#:python ,python-2
1354 #:tests? #f)) ; invalid command "test"
1355 (home-page "https://fedorahosted.org/dogtail/")
1003fbcf 1356 (synopsis "GUI test tool and automation framework written in Python")
cc20a22a 1357 (description
35b9e423 1358 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1359It uses Accessibility (a11y) technologies to communicate with desktop
1360applications. dogtail scripts are written in Python and executed like any
1361other Python program.")
3f641af0 1362 (license license:gpl2+)))
515e6878 1363
011b18c3
LC
1364(define-public python2-empy
1365 (package
1366 (name "python2-empy")
1367 (version "3.3")
1368 (source (origin
1369 (method url-fetch)
1370 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1371 version ".tar.gz"))
1372 (sha256
1373 (base32
1374 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1375 (build-system python-build-system)
1376 (arguments
1377 `(#:python ,python-2
1378 #:phases (alist-replace
1379 'check
1380 (lambda _
1381 (zero? (system* "./test.sh")))
1382 %standard-phases)))
1383 (home-page "http://www.alcyone.com/software/empy/")
1384 (synopsis "Templating system for Python")
1385 (description
1386 "EmPy is a system for embedding Python expressions and statements in
1387template text; it takes an EmPy source file, processes it, and produces
1388output. This is accomplished via expansions, which are special signals to the
1cd4027c 1389EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1390EmPy can expand arbitrary Python expressions and statements in this way, as
1391well as a variety of special forms. Textual data not explicitly delimited in
1392this way is sent unaffected to the output, allowing Python to be used in
1393effect as a markup language. Also supported are callbacks via hooks,
1394recording and playback via diversions, and dynamic, chainable filters. The
1395system is highly configurable via command line options and embedded
1396commands.")
3f641af0 1397 (license license:lgpl2.1+)))
011b18c3 1398
8deeda0c
LC
1399(define-public python2-element-tree
1400 (package
1401 (name "python2-element-tree")
1402 (version "1.2.6")
1403 (source (origin
1404 (method url-fetch)
1405 (uri (string-append
1406 "http://effbot.org/media/downloads/elementtree-"
1407 version "-20050316.tar.gz"))
1408 (sha256
1409 (base32
1410 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1411 (build-system python-build-system)
1412 (arguments
1413 `(#:python ,python-2 ; seems to be part of Python 3
1414 #:tests? #f)) ; no 'test' sub-command
1415 (synopsis "Toolkit for XML processing in Python")
1416 (description
1417 "ElementTree is a Python library supporting lightweight XML processing.")
1418 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1419 (license (license:x11-style
1420 "http://docs.python.org/2/license.html"
1421 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1422
1423(define-public python2-pybugz
1424 (package
1425 (name "python2-pybugz")
1426 (version "0.6.11")
1427 (source (origin
1428 (method url-fetch)
1429 (uri (string-append
1430 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1431 version ".tar.gz"))
1432 (sha256
1433 (base32
6f194a1e 1434 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1435 (patches (search-patches "pybugz-stty.patch"
1436 "pybugz-encode-error.patch"))))
8deeda0c
LC
1437 (build-system python-build-system)
1438 (arguments
1439 `(#:python ,python-2 ; SyntaxError with Python 3
1440 #:tests? #f)) ; no 'test' sub-command
f22efa01
HG
1441 (propagated-inputs
1442 `(("element-tree" ,python2-element-tree)))
8deeda0c
LC
1443 (synopsis "Python and command-line interface to Bugzilla")
1444 (description
1445 "PyBugz is a Python library and command-line tool to query the Bugzilla
1446bug tracking system. It is meant as an aid to speed up interaction with the
1447bug tracker.")
1448 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1449 (license license:gpl2)))
8deeda0c 1450
a480bc41
EB
1451(define-public python-enum34
1452 (package
1453 (name "python-enum34")
5e923414 1454 (version "1.1.6")
a480bc41
EB
1455 (source
1456 (origin
1457 (method url-fetch)
d39ae1e5 1458 (uri (pypi-uri "enum34" version))
a480bc41
EB
1459 (sha256
1460 (base32
5e923414 1461 "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
a480bc41 1462 (build-system python-build-system)
a480bc41
EB
1463 (home-page "https://pypi.python.org/pypi/enum34")
1464 (synopsis "Backported Python 3.4 Enum")
1465 (description
1466 "Enum34 is the new Python stdlib enum module available in Python 3.4
1467backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1468 (license license:bsd-3)))
a480bc41 1469
820acd1b
LF
1470(define-public python2-enum34
1471 (package-with-python2 python-enum34))
1472
a480bc41
EB
1473(define-public python-parse-type
1474 (package
1475 (name "python-parse-type")
1476 (version "0.3.4")
1477 (source
1478 (origin
1479 (method url-fetch)
1480 (uri (string-append "https://pypi.python.org/packages/source/p/"
1481 "parse_type/parse_type-" version ".tar.gz"))
1482 (sha256
1483 (base32
1484 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1485 (build-system python-build-system)
f22efa01 1486 (propagated-inputs
f3b98f4f 1487 `(("python-six" ,python-six)
68f1cdec 1488 ("python-parse" ,python-parse)))
a480bc41
EB
1489 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1490 (home-page "https://github.com/jenisys/parse_type")
1491 (synopsis "Extended parse module")
1492 (description
1493 "Parse_type extends the python parse module.")
3f641af0 1494 (license license:bsd-3)))
a480bc41
EB
1495
1496(define-public python-parse
1497 (package
1498 (name "python-parse")
eb3d3503 1499 (version "1.6.6")
a480bc41
EB
1500 (source
1501 (origin
1502 (method url-fetch)
eb3d3503 1503 (uri (pypi-uri "parse" version))
a480bc41
EB
1504 (sha256
1505 (base32
aa6c09ed
EF
1506 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1507 (patches (search-patches "python-parse-too-many-fields.patch"))))
a480bc41
EB
1508 (build-system python-build-system)
1509 (arguments
1510 `(#:phases
f9a65318
EF
1511 (modify-phases %standard-phases
1512 (replace 'check
1513 (lambda _ (zero? (system* "python" "test_parse.py")))))))
a480bc41
EB
1514 (home-page "https://github.com/r1chardj0n3s/parse")
1515 (synopsis "Parse strings")
1516 (description
1517 "Parse strings using a specification based on the Python format()
1518syntax.")
3f641af0 1519 (license license:x11)))
a480bc41 1520
d3eff97a
JL
1521(define-public python-polib
1522 (package
1523 (name "python-polib")
1524 (version "1.0.8")
1525 (source (origin
1526 (method url-fetch)
1527 (uri (pypi-uri "polib" version))
1528 (sha256
1529 (base32
1530 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1531 (build-system python-build-system)
1532 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1533 (synopsis "Manipulate, create and modify gettext files")
1534 (description "Polib can manipulate any gettext format (po, pot and mo)
1535files. It can be used to create po files from scratch or to modify
1536existing ones.")
1537 (license license:expat)))
1538
1539(define-public python2-polib
1540 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1541 (package
1542 (inherit base)
1543 (arguments `(,@(package-arguments base)
1544 ;; Tests don't work with python2.
1545 #:tests? #f)))))
a480bc41 1546
515e6878
LC
1547(define-public scons
1548 (package
1549 (name "scons")
a3f61425 1550 (version "2.3.4")
515e6878
LC
1551 (source (origin
1552 (method url-fetch)
de67e922
LF
1553 (uri (string-append "mirror://sourceforge/scons/scons/" version
1554 "/scons-" version ".tar.gz"))
515e6878
LC
1555 (sha256
1556 (base32
a3f61425 1557 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1558 (build-system python-build-system)
1559 (arguments
1560 ;; With Python 3.x, fails to build with a syntax error.
1561 `(#:python ,python-2
b3e8b4bd 1562 #:use-setuptools? #f ; still relies on distutils
515e6878
LC
1563 #:tests? #f)) ; no 'python setup.py test' command
1564 (home-page "http://scons.org/")
1565 (synopsis "Software construction tool written in Python")
1566 (description
1567 "SCons is a software construction tool. Think of SCons as an improved,
1568cross-platform substitute for the classic Make utility with integrated
1569functionality similar to autoconf/automake and compiler caches such as ccache.
1570In short, SCons is an easier, more reliable and faster way to build
1571software.")
3f641af0 1572 (license license:x11)))
011b18c3 1573
c15a5c0e
DT
1574(define-public python-extras
1575 (package
1576 (name "python-extras")
1577 (version "0.0.3")
1578 (source
1579 (origin
1580 (method url-fetch)
1581 (uri (string-append
1582 "https://pypi.python.org/packages/source/e/extras/extras-"
1583 version ".tar.gz"))
1584 (sha256
1585 (base32
1586 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1587 (build-system python-build-system)
c15a5c0e
DT
1588 (arguments
1589 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1590 '(#:tests? #f))
1591 (home-page "https://github.com/testing-cabal/extras")
1592 (synopsis "Useful extensions to the Python standard library")
1593 (description
1594 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1595 (license license:expat)))
c15a5c0e
DT
1596
1597(define-public python2-extras
1598 (package-with-python2 python-extras))
1599
56ea0efd
DT
1600(define-public python-mimeparse
1601 (package
1602 (name "python-mimeparse")
1603 (version "0.1.4")
1604 (source
1605 (origin
1606 (method url-fetch)
1607 (uri (string-append
1608 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1609 version ".tar.gz"))
1610 (sha256
1611 (base32
1612 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1613 (build-system python-build-system)
56ea0efd
DT
1614 (arguments
1615 '(#:tests? #f)) ; no setup.py test command
1616 (home-page
1617 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1618 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1619 (description
1620 "Mimeparse provides basic functions for parsing MIME type names and
1621matching them against a list of media-ranges.")
bd3fa666 1622 (license license:expat)))
56ea0efd
DT
1623
1624(define-public python2-mimeparse
1625 (package-with-python2 python-mimeparse))
1626
4435427e
DT
1627(define-public python-nose
1628 (package
1629 (name "python-nose")
f7cb9841 1630 (version "1.3.7")
4435427e
DT
1631 (source
1632 (origin
1633 (method url-fetch)
f7cb9841 1634 (uri (pypi-uri "nose" version))
4435427e
DT
1635 (sha256
1636 (base32
f7cb9841 1637 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e 1638 (build-system python-build-system)
4435427e
DT
1639 (arguments
1640 '(#:tests? #f)) ; FIXME: test suite fails
1641 (home-page "http://readthedocs.org/docs/nose/")
1642 (synopsis "Python testing library")
1643 (description
1644 "Nose extends the unittest library to make testing easier.")
3f641af0 1645 (license license:lgpl2.0+)))
4435427e
DT
1646
1647(define-public python2-nose
1648 (package-with-python2 python-nose))
1649
0aea283a
EF
1650(define-public python-nose2
1651 (package
1652 (name "python-nose2")
1653 (version "0.6.5")
1654 (source
1655 (origin
1656 (method url-fetch)
1657 (uri (pypi-uri "nose2" version))
1658 (sha256
1659 (base32
1660 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1661 (build-system python-build-system)
1662 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
f22efa01 1663 (propagated-inputs
0aea283a
EF
1664 `(("python-cov-core" ,python-cov-core)
1665 ("python-pytest-cov" ,python-pytest-cov)
1666 ("python-six" ,python-six)))
1667 (home-page "https://github.com/nose-devs/nose2")
1668 (synopsis "Next generation of nicer testing for Python")
1669 (description
1670 "Nose2 is the next generation of nicer testing for Python, based on the
1671plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1672better plugin api, being easier for users to configure, and simplifying internal
1673interfaces and processes.")
1674 (license license:bsd-2)))
1675
1676(define-public python2-nose2
1677 (package-with-python2 python-nose2))
1678
6cd9c356
DT
1679(define-public python-unittest2
1680 (package
1681 (name "python-unittest2")
1682 (version "0.5.1")
1683 (source
1684 (origin
1685 (method url-fetch)
1686 (uri (string-append
1687 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1688 version ".tar.gz"))
1689 (sha256
1690 (base32
1691 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1692 (build-system python-build-system)
6cd9c356
DT
1693 (home-page "http://pypi.python.org/pypi/unittest2")
1694 (synopsis "Python unit testing library")
1695 (description
1696 "Unittest2 is a replacement for the unittest module in the Python
1697standard library.")
3f641af0 1698 (license license:psfl)))
6cd9c356
DT
1699
1700(define-public python2-unittest2
1701 (package (inherit python-unittest2)
1702 (name "python2-unittest2")
1703 (version "0.5.1")
1704 (source
1705 (origin
1706 (method url-fetch)
1707 (uri (string-append
1708 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1709 version ".tar.gz"))
1710 (sha256
1711 (base32
1712 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
6cd9c356
DT
1713 (arguments
1714 `(#:python ,python-2
1715 #:tests? #f)))) ; no setup.py test command
1716
02f8f804 1717(define-public python-pafy
1718 (package
1719 (name "python-pafy")
745d85b7 1720 (version "0.5.3.1")
02f8f804 1721 (source
1722 (origin
1723 (method url-fetch)
1724 (uri (pypi-uri "pafy" version))
1725 (sha256
1726 (base32
745d85b7 1727 "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
02f8f804 1728 (build-system python-build-system)
ed3fee5f 1729 (arguments
1730 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
02f8f804 1731 (propagated-inputs
1732 ;; Youtube-dl is a python package which is imported in the file
1733 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1734 `(("youtube-dl" ,youtube-dl)))
1735 (home-page "https://np1.github.io/pafy/")
1736 (synopsis "Retrieve YouTube content and metadata")
1737 (description
1738 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1739 (license license:lgpl3+)))
1740
542ad60f
DT
1741(define-public python-py
1742 (package
1743 (name "python-py")
b9463fdb 1744 (version "1.4.32")
542ad60f
DT
1745 (source
1746 (origin
1747 (method url-fetch)
71c8a804 1748 (uri (pypi-uri "py" version))
542ad60f
DT
1749 (sha256
1750 (base32
b9463fdb 1751 "19s1pql9pq85h1qzsdwgyb8a3k1qgkvh33b02m8kfqhizz8rzf64"))))
542ad60f 1752 (build-system python-build-system)
dcb0da7b
MB
1753 (arguments
1754 ;; FIXME: "ImportError: 'test' module incorrectly imported from
1755 ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
1756 ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
1757 ;; Is this module globally installed?"
1758 '(#:tests? #f))
542ad60f
DT
1759 (home-page "http://pylib.readthedocs.org/")
1760 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1761 (description
1762 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1763code introspection, and logging.")
bd3fa666 1764 (license license:expat)))
542ad60f
DT
1765
1766(define-public python2-py
1767 (package-with-python2 python-py))
1768
855d4761
DT
1769(define-public python-pytest
1770 (package
1771 (name "python-pytest")
61a4332d 1772 (version "2.7.3")
855d4761
DT
1773 (source
1774 (origin
1775 (method url-fetch)
1776 (uri (string-append
1777 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1778 version ".tar.gz"))
1779 (sha256
1780 (base32
61a4332d 1781 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1782 (modules '((guix build utils)))
1783 (snippet
1784 ;; One of the tests involves the /usr directory, so it fails.
1785 '(substitute* "testing/test_argcomplete.py"
1786 (("def test_remove_dir_prefix\\(self\\):")
1787 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1788 (build-system python-build-system)
482d9591
HG
1789 (propagated-inputs
1790 `(("python-py" ,python-py)))
e7881f3d 1791 (native-inputs
482d9591 1792 `(("python-nose" ,python-nose)
855d4761
DT
1793 ("python-mock" ,python-mock)))
1794 (home-page "http://pytest.org")
1795 (synopsis "Python testing library")
1796 (description
1797 "Pytest is a testing tool that provides auto-discovery of test modules
1798and functions, detailed info on failing assert statements, modular fixtures,
1799and many external plugins.")
bd3fa666 1800 (license license:expat)))
855d4761
DT
1801
1802(define-public python2-pytest
1803 (package-with-python2 python-pytest))
1804
23b9168d
LF
1805;; Some packages require a newer pytest.
1806(define-public python-pytest-3.0
fca4ff35
LF
1807 (package
1808 (inherit python-pytest)
1809 (name "python-pytest")
23b9168d 1810 (version "3.0.7")
fca4ff35
LF
1811 (source (origin
1812 (method url-fetch)
1813 (uri (pypi-uri "pytest" version))
1814 (sha256
1815 (base32
23b9168d 1816 "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
fca4ff35
LF
1817 (arguments
1818 `(#:phases
1819 (modify-phases %standard-phases
1820 (add-before 'check 'disable-invalid-test
1821 (lambda _
1822 (substitute* "testing/test_argcomplete.py"
1823 (("def test_remove_dir_prefix" line)
1824 (string-append "@pytest.mark.skip"
1825 "(reason=\"Assumes that /usr exists.\")\n "
1826 line)))
23b9168d 1827 #t)))))
7f71e257
MFM
1828 (native-inputs
1829 `(("python-nose" ,python-nose)
1830 ("python-mock" ,python-mock)
23b9168d
LF
1831 ("python-hypothesis" ,python-hypothesis)))
1832 (properties `((python2-variant . ,(delay python2-pytest-3.0))))))
1833
1834(define-public python2-pytest-3.0
1835 (let ((base (package-with-python2
1836 (strip-python2-variant python-pytest-3.0))))
1837 (package (inherit base)
1838 (native-inputs
1839 `(("python2-enum34" ,python2-enum34)
1840 ,@(package-native-inputs base))))))
fca4ff35 1841
358c3d61
EF
1842(define-public python-pytest-cov
1843 (package
1844 (name "python-pytest-cov")
545f4a1c 1845 (version "2.2.1")
358c3d61
EF
1846 (source
1847 (origin
1848 (method url-fetch)
1849 (uri (pypi-uri "pytest-cov" version))
1850 (sha256
545f4a1c
EF
1851 (base32
1852 "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
10468636 1853 (build-system python-build-system)
ce40b383
HG
1854 (arguments
1855 `(#:phases
1856 (modify-phases %standard-phases
1857 (replace 'check
1858 (lambda _
1859 ;; options taken from tox.ini
1860 ;; TODO: make "--restructuredtext" tests pass. They currently fail
1861 ;; with "Duplicate implicit target name"
1862 (zero? (system* "python" "./setup.py" "check"
1863 "--strict" "--metadata")))))))
f22efa01 1864 (propagated-inputs
10468636
EF
1865 `(("python-coverage" ,python-coverage)
1866 ("python-pytest" ,python-pytest)))
10468636
EF
1867 (home-page "https://github.com/pytest-dev/pytest-cov")
1868 (synopsis "Pytest plugin for measuring coverage")
1869 (description
1870 "Pytest-cov produces coverage reports. It supports centralised testing and
1871distributed testing in both @code{load} and @code{each} modes. It also
1872supports coverage of subprocesses.")
f210e944 1873 (license license:expat)))
358c3d61
EF
1874
1875(define-public python2-pytest-cov
f210e944 1876 (package-with-python2 python-pytest-cov))
358c3d61 1877
6784f2e3
RW
1878(define-public python-pytest-runner
1879 (package
1880 (name "python-pytest-runner")
1881 (version "2.6.2")
1882 (source
1883 (origin
1884 (method url-fetch)
54cd239b 1885 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
1886 (sha256
1887 (base32
1888 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1889 (build-system python-build-system)
1890 (arguments
1891 `(#:phases
1892 (modify-phases %standard-phases
1893 ;; The fancy way of setting the version with setuptools_scm does not
1894 ;; seem to work here.
1895 (add-after 'unpack 'set-version
1896 (lambda _
1897 (substitute* "docs/conf.py"
1898 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1899 (string-append "version = \"" ,version "\"")))
1900 #t)))))
1901 (native-inputs
1902 `(("python-pytest" ,python-pytest)
1903 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 1904 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
1905 (synopsis "Invoke py.test as a distutils command")
1906 (description
1907 "This package provides a @command{pytest-runner} command that
1908@file{setup.py} files can use to run tests.")
f210e944 1909 (license license:expat)))
54cd239b
EF
1910
1911(define-public python2-pytest-runner
f210e944 1912 (package-with-python2 python-pytest-runner))
6784f2e3 1913
44547e51
EF
1914(define-public python-pytest-mock
1915 (package
1916 (name "python-pytest-mock")
1917 (version "1.2")
1918 (source
1919 (origin
1920 (method url-fetch)
1921 (uri (pypi-uri "pytest-mock" version ".zip"))
1922 (sha256
1923 (base32
1924 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
1925 (build-system python-build-system)
1926 (native-inputs
1927 `(("unzip" ,unzip)))
f22efa01 1928 (propagated-inputs
d5e41cf2 1929 `(("python-pytest" ,python-pytest)))
44547e51
EF
1930 (home-page "https://github.com/pytest-dev/pytest-mock/")
1931 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
1932 (description
1933 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
1934around the patching API provided by the @code{mock} package, but with the
1935benefit of not having to worry about undoing patches at the end of a test.
1936The mocker fixture has the same API as @code{mock.patch}, supporting the
1937same arguments.")
1938 (properties `((python2-variant . ,(delay python2-pytest-mock))))
1939 (license license:expat)))
1940
1941(define-public python2-pytest-mock
1942 (let ((base (package-with-python2
1943 (strip-python2-variant python-pytest-mock))))
1944 (package (inherit base)
f22efa01 1945 (propagated-inputs
44547e51 1946 `(("python2-mock" ,python2-mock)
f22efa01 1947 ,@(package-propagated-inputs base))))))
44547e51 1948
8fa58fc9
CAW
1949(define-public python-pytest-xdist
1950 (package
1951 (name "python-pytest-xdist")
1952 (version "1.14")
1953 (source
1954 (origin
1955 (method url-fetch)
1956 (uri (pypi-uri "pytest-xdist" version ".zip"))
1957 (sha256
1958 (base32
de585a7e
HG
1959 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
1960 (modules '((guix build utils)))
1961 (snippet
1962 '(begin
1963 ;; Remove pre-compiled .pyc files from source.
1964 (for-each delete-file-recursively
1965 (find-files "." "__pycache__" #:directories? #t))
1966 (for-each delete-file (find-files "." "\\.pyc$"))
1967 #t))))
8fa58fc9 1968 (build-system python-build-system)
4eb385fb
MB
1969 (arguments
1970 '(#:tests? #f)) ;FIXME: Some tests are failing.
1971 ;; #:phases
1972 ;; (modify-phases %standard-phases
1973 ;; (delete 'check)
1974 ;; (add-after 'install 'check
1975 ;; (lambda* (#:key inputs outputs #:allow-other-keys)
1976 ;; (add-installed-pythonpath inputs outputs)
1977 ;; (zero? (system* "py.test" "-v")))))
8fa58fc9
CAW
1978 (native-inputs
1979 `(("unzip" ,unzip)
8fa58fc9 1980 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1981 (propagated-inputs
c4516ad2 1982 `(("python-execnet" ,python-execnet)
8fa58fc9
CAW
1983 ("python-pytest" ,python-pytest)
1984 ("python-py" ,python-py)))
1985 (home-page
1986 "https://github.com/pytest-dev/pytest-xdist")
1987 (synopsis
1988 "Plugin for py.test with distributed testing and loop-on-failing modes")
1989 (description
1990 "The pytest-xdist plugin extends py.test with some unique test execution
1991modes: parallelization, running tests in boxed subprocesses, the ability
1992to run tests repeatedly when failed, and the ability to run tests on multiple
1993Python interpreters or platforms. It uses rsync to copy the existing
1994program code to a remote location, executes there, and then syncs the
1995result back.")
f210e944 1996 (license license:expat)))
8fa58fc9
CAW
1997
1998(define-public python2-pytest-xdist
f210e944 1999 (package-with-python2 python-pytest-xdist))
8fa58fc9 2000
84d24017
DT
2001(define-public python-scripttest
2002 (package
2003 (name "python-scripttest")
2004 (version "1.3")
2005 (source
2006 (origin
2007 (method url-fetch)
2008 (uri (string-append
2009 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
2010 version ".tar.gz"))
2011 (sha256
2012 (base32
2013 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
2014 (build-system python-build-system)
521b7772 2015 (native-inputs
f3b98f4f 2016 `(("python-pytest" ,python-pytest)))
84d24017
DT
2017 (home-page "http://pythonpaste.org/scripttest/")
2018 (synopsis "Python library to test command-line scripts")
2019 (description "Scripttest is a Python helper library for testing
2020interactive command-line applications. With it you can run a script in a
2021subprocess and see the output as well as any file modifications.")
bd3fa666 2022 (license license:expat)))
84d24017
DT
2023
2024(define-public python2-scripttest
2025 (package-with-python2 python-scripttest))
2026
d8fa80e1
DT
2027(define-public python-testtools
2028 (package
2029 (name "python-testtools")
7adb9031 2030 (version "1.4.0")
d8fa80e1
DT
2031 (source
2032 (origin
2033 (method url-fetch)
7adb9031 2034 (uri (pypi-uri "testtools" version))
d8fa80e1
DT
2035 (sha256
2036 (base32
7adb9031 2037 "1vw8yljnd75d396hhw6s2hrf4cclzy845ifd5am0lxsl235z3i8c"))))
d8fa80e1 2038 (build-system python-build-system)
7adb9031
DM
2039 (arguments
2040 `(#:phases
2041 (modify-phases %standard-phases
2042 (add-after 'unpack 'fix-module-imports
2043 (lambda _
2044 (substitute* "setup.py"
2045 (("'unittest2>=0.8.0',") ""))
2046 (substitute* '("testtools/testcase.py"
2047 "testtools/testsuite.py"
2048 "testtools/run.py"
2049 "testtools/tests/test_run.py"
2050 "testtools/tests/test_testsuite.py"
2051 "testtools/tests/test_deferredruntest.py")
2052 ;; unittest2 is a backport of Python2.7 features to Python 2.4.
2053 (("import unittest2 as unittest") "import unittest")
2054 (("import unittest2") "import unittest as unittest2")
2055 (("from unittest2 import") "from unittest import"))
2056 (substitute* "testtools/tests/test_testresult.py"
2057 ;; NUL in source code is not allowed (raises ValueError).
2058 (("\\x00\\x04") "\\x04"))
2059 #t)))))
0e88cbf8 2060 (propagated-inputs
f22efa01
HG
2061 `(("python-mimeparse" ,python-mimeparse)
2062 ("python-extras" ,python-extras)))
d8fa80e1
DT
2063 (home-page "https://github.com/testing-cabal/testtools")
2064 (synopsis
2065 "Extensions to the Python standard library unit testing framework")
2066 (description
2067 "Testtools extends the Python standard library unit testing framework to
2068provide matchers, more debugging information, and cross-Python
2069compatibility.")
3f641af0 2070 (license license:psfl)))
d8fa80e1
DT
2071
2072(define-public python2-testtools
2073 (package-with-python2 python-testtools))
2074
5bf3afea
DT
2075(define-public python-testscenarios
2076 (package
2077 (name "python-testscenarios")
2078 (version "0.4")
2079 (source
2080 (origin
2081 (method url-fetch)
2082 (uri (string-append
2083 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
2084 version ".tar.gz"))
2085 (sha256
2086 (base32
2087 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
2088 (build-system python-build-system)
f22efa01 2089 (propagated-inputs
8e73d3ba 2090 `(("python-testtools" ,python-testtools)))
5bf3afea
DT
2091 (home-page "https://launchpad.net/testscenarios")
2092 (synopsis "Pyunit extension for dependency injection")
2093 (description
2094 "Testscenarios provides clean dependency injection for Python unittest
2095style tests.")
3f641af0 2096 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
2097
2098(define-public python2-testscenarios
2099 (package-with-python2 python-testscenarios))
2100
dac79ecc
DT
2101(define-public python-testresources
2102 (package
2103 (name "python-testresources")
2104 (version "0.2.7")
2105 (source
2106 (origin
2107 (method url-fetch)
2108 (uri (string-append
2109 "https://pypi.python.org/packages/source/t/testresources/testresources-"
2110 version ".tar.gz"))
2111 (sha256
2112 (base32
2113 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
2114 (build-system python-build-system)
dac79ecc
DT
2115 (home-page "https://launchpad.net/testresources")
2116 (synopsis
2117 "Pyunit extension for managing test resources")
2118 (description
2119 "Testresources is an extension to Python's unittest to allow declarative
2120use of resources by test cases.")
3f641af0 2121 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
2122
2123(define-public python2-testresources
2124 (package-with-python2 python-testresources))
2125
070ab058
DT
2126(define-public python-subunit
2127 (package
2128 (name "python-subunit")
2129 (version "0.0.21")
2130 (source
2131 (origin
2132 (method url-fetch)
2133 (uri (string-append
2134 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
2135 version ".tar.gz"))
2136 (sha256
2137 (base32
2138 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
2139 (build-system python-build-system)
f22efa01 2140 (propagated-inputs
b52ad371
HG
2141 `(("python-extras" ,python-extras)
2142 ("python-mimeparse" ,python-mimeparse)))
2143 (native-inputs
2144 `(("python-testscenarios" ,python-testscenarios)))
070ab058
DT
2145 (home-page "http://launchpad.net/subunit")
2146 (synopsis "Python implementation of the subunit protocol")
2147 (description
2148 "Python-subunit is a Python implementation of the subunit test streaming
2149protocol.")
3f641af0 2150 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
2151
2152(define-public python2-subunit
2153 (package-with-python2 python-subunit))
2154
d2a8db92
HG
2155;; Recent versions of python-fixtures and python-testrepository need
2156;; python-pbr for packaging, which itself needs these two packages for
2157;; testing.
2158;; To fix this circular dependency, we use a build of python-pbr, based on the
2159;; same source, just without any test dependencies and with tests disabled.
2160;; python-pbr-minmal is then used to package python-fixtures and
2161;; python-testrepository.
2162;; Strictly speaking we currently could remove the test-requirements from the
2163;; normal python-pbr package (and save this package) since test are disabled
2164;; there anyway. But this may change in future.
2165(define python-pbr-minimal
cd49454b 2166 (package
d2a8db92 2167 (name "python-pbr-minimal")
5bbb2249 2168 (version "1.10.0")
7787ef76
CR
2169 (source
2170 (origin
2171 (method url-fetch)
d2a8db92 2172 (uri (pypi-uri "pbr" version))
7787ef76
CR
2173 (sha256
2174 (base32
a1e3ed6e
DM
2175 "177kd9kbv1hvf2ban7l3x9ymzbi1md4hkaymwbgnz7ihf312hr0q"))
2176 (patches (search-patches "python-pbr-fix-man-page-support.patch"))))
7787ef76
CR
2177 (build-system python-build-system)
2178 (arguments
d2a8db92
HG
2179 `(#:tests? #f))
2180 (home-page "http://docs.openstack.org/developer/pbr/")
2181 (synopsis "Minimal build of python-pbr used for bootstrapping")
7787ef76 2182 (description
d2a8db92 2183 "Used only for bootstrapping python2-pbr, you should not need this.")
3f641af0 2184 (license license:asl2.0)))
7787ef76 2185
d2a8db92
HG
2186(define python2-pbr-minimal
2187 (package-with-python2 python-pbr-minimal))
7787ef76 2188
1ef09c0c 2189(define-public python-pbr
e25f0174 2190 (package
d2a8db92 2191 (inherit python-pbr-minimal)
e25f0174 2192 (name "python-pbr")
e25f0174
BW
2193 (arguments
2194 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2195 (propagated-inputs
d2a8db92
HG
2196 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2197 (native-inputs
e25f0174 2198 `(("python-fixtures" ,python-fixtures)
d2a8db92 2199 ;; discover, coverage, hacking, subunit
e25f0174 2200 ("python-mock" ,python-mock)
d2a8db92 2201 ("python-six" ,python-six)
e25f0174
BW
2202 ("python-sphinx" ,python-sphinx)
2203 ("python-testrepository" ,python-testrepository)
2204 ("python-testresources" ,python-testresources)
2205 ("python-testscenarios" ,python-testscenarios)
2206 ("python-testtools" ,python-testtools)
2207 ("python-virtualenv" ,python-virtualenv)))
d2a8db92 2208 (synopsis "Enhance the default behavior of Python’s setuptools")
e25f0174
BW
2209 (description
2210 "Python Build Reasonableness (PBR) is a library that injects some useful
d2a8db92
HG
2211and sensible default behaviors into your setuptools run. It will set
2212versions, process requirements files and generate AUTHORS and ChangeLog file
2213from git information.
2214")))
1ef09c0c
BW
2215
2216(define-public python2-pbr
e25f0174 2217 (package-with-python2 python-pbr))
1ef09c0c 2218
7787ef76
CR
2219(define-public python-fixtures
2220 (package
2221 (name "python-fixtures")
13fcc6df 2222 (version "1.4.0")
7787ef76
CR
2223 (source
2224 (origin
2225 (method url-fetch)
13fcc6df 2226 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2227 (sha256
2228 (base32
13fcc6df 2229 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76 2230 (build-system python-build-system)
f6c1ef18
MB
2231 (arguments
2232 '(#:phases
2233 (modify-phases %standard-phases
2234 (replace 'check
2235 (lambda _
2236 (zero? (system* "python" "-m" "testtools.run"
2237 "fixtures.test_suite")))))))
7787ef76 2238 (propagated-inputs
ae92cadd 2239 `(("python-six" ,python-six)))
e7881f3d 2240 (native-inputs
f6c1ef18
MB
2241 `(("python-mock" ,python-mock)
2242 ("python-pbr-minimal" ,python-pbr-minimal)
7787ef76 2243 ("python-testtools" ,python-testtools)))
7787ef76
CR
2244 (home-page "https://launchpad.net/python-fixtures")
2245 (synopsis "Python test fixture library")
2246 (description
2247 "Fixtures provides a way to create reusable state, useful when writing
2248Python tests.")
3f641af0 2249 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2250
cd49454b
DT
2251(define-public python2-fixtures
2252 (package-with-python2 python-fixtures))
2253
b24a0c00
DT
2254(define-public python-testrepository
2255 (package
2256 (name "python-testrepository")
2257 (version "0.0.20")
2258 (source
2259 (origin
2260 (method url-fetch)
2261 (uri (string-append
2262 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2263 version ".tar.gz"))
2264 (sha256
2265 (base32
2266 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2267 (build-system python-build-system)
90110ef9
MB
2268 (arguments
2269 ;; FIXME: Many tests are failing.
2270 '(#:tests? #f))
05de40c5 2271 (propagated-inputs
b2e66edf
HG
2272 `(("python-fixtures" ,python-fixtures)
2273 ("python-subunit" ,python-subunit)
b52ad371
HG
2274 ("python-testtools" ,python-testtools)))
2275 (native-inputs
2276 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
b24a0c00
DT
2277 ("python-mimeparse" ,python-mimeparse)))
2278 (home-page "https://launchpad.net/testrepository")
2279 (synopsis "Database for Python test results")
2280 (description "Testrepository provides a database of test results which can
2281be used as part of a developer's workflow to check things such as what tests
2282have failed since the last commit or what tests are currently failing.")
3f641af0 2283 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2284
2285(define-public python2-testrepository
2286 (package-with-python2 python-testrepository))
2287
243a009a
DT
2288(define-public python-coverage
2289 (package
2290 (name "python-coverage")
4d4cf3dd 2291 (version "4.1")
243a009a
DT
2292 (source
2293 (origin
2294 (method url-fetch)
82a3c582 2295 (uri (pypi-uri "coverage" version))
243a009a
DT
2296 (sha256
2297 (base32
4d4cf3dd 2298 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a 2299 (build-system python-build-system)
bd10e677
MB
2300 (arguments
2301 ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
2302 '(#:tests? #f))
243a009a
DT
2303 (home-page "http://nedbatchelder.com/code/coverage")
2304 (synopsis "Code coverage measurement for Python")
2305 (description
2306 "Coverage measures code coverage, typically during test execution. It
2307uses the code analysis tools and tracing hooks provided in the Python standard
2308library to determine which lines are executable, and which have been
2309executed.")
3f641af0 2310 (license license:bsd-3)))
243a009a
DT
2311
2312(define-public python2-coverage
2313 (package-with-python2 python-coverage))
2314
12f839fd
EF
2315(define-public python-cov-core
2316 (package
2317 (name "python-cov-core")
2318 (version "1.15.0")
2319 (source
2320 (origin
2321 (method url-fetch)
2322 (uri (pypi-uri "cov-core" version))
2323 (sha256
2324 (base32
2325 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2326 (build-system python-build-system)
f78e1c27 2327 (propagated-inputs
12f839fd
EF
2328 `(("python-coverage" ,python-coverage)))
2329 (home-page "https://github.com/schlamar/cov-core")
49d5e338 2330 (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
12f839fd 2331 (description
49d5e338
TGR
2332 "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
2333and @code{nose2-cov}. It is useful for developing coverage plugins for these
2334testing frameworks.")
f210e944 2335 (license license:expat)))
12f839fd
EF
2336
2337(define-public python2-cov-core
f210e944 2338 (package-with-python2 python-cov-core))
12f839fd 2339
041358fb
DT
2340(define-public python-discover
2341 (package
2342 (name "python-discover")
2343 (version "0.4.0")
2344 (source
2345 (origin
2346 (method url-fetch)
2347 (uri (string-append
2348 "https://pypi.python.org/packages/source/d/discover/discover-"
2349 version ".tar.gz"))
2350 (sha256
2351 (base32
2352 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2353 (build-system python-build-system)
041358fb
DT
2354 (home-page "http://pypi.python.org/pypi/discover/")
2355 (synopsis
2356 "Python test discovery for unittest")
2357 (description
2358 "Discover provides test discovery for unittest, a feature that has been
e881752c 2359backported from Python 2.7 for Python 2.4+.")
3f641af0 2360 (license license:bsd-3)))
041358fb
DT
2361
2362(define-public python2-discover
2363 (package-with-python2 python-discover))
2364
a480bc41
EB
2365(define-public behave
2366 (package
2367 (name "behave")
287cfd1a 2368 (version "1.2.5")
a480bc41
EB
2369 (source (origin
2370 (method url-fetch)
287cfd1a 2371 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2372 (sha256
2373 (base32
287cfd1a 2374 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41 2375 (build-system python-build-system)
f22efa01 2376 (propagated-inputs
f3b98f4f 2377 `(("python-six" ,python-six)
a480bc41
EB
2378 ("python-parse" ,python-parse)
2379 ("python-parse-type" ,python-parse-type)))
2380 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2381 ;PyHamcrest>=1.8
7bf837fd 2382 (home-page "https://github.com/behave/behave")
a480bc41
EB
2383 (synopsis "Python behavior-driven development")
2384 (description
2385 "Behave is a tool for behavior-driven development in python.
2386Behavior-driven development (or BDD) is an agile software development
2387technique that encourages collaboration between developers, QA and
2388non-technical or business participants in a software project. Behave uses
2389tests written in a natural language style, backed up by Python code.")
3f641af0 2390 (license license:x11)))
c7303d3c
DT
2391
2392(define-public python-exif-read
2393 (package
2394 (name "python-exif-read")
2a2d0981 2395 (version "2.1.2")
c7303d3c
DT
2396 (source (origin
2397 (method url-fetch)
2a2d0981 2398 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2399 (sha256
2400 (base32
2a2d0981 2401 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c 2402 (build-system python-build-system)
c7303d3c
DT
2403 (arguments `(#:tests? #f)) ; no tests
2404 (home-page "https://github.com/ianare/exif-py")
2405 (synopsis "Python library to extract EXIF data from image files")
2406 (description
2407 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2408files.")
3f641af0 2409 (license license:bsd-3)))
c7303d3c
DT
2410
2411(define-public python2-exif-read
2412 (package-with-python2 python-exif-read))
d5f89b22
DT
2413
2414(define-public python-pyld
2415 (package
2416 (name "python-pyld")
8957af32 2417 (version "0.7.1")
d5f89b22
DT
2418 (source (origin
2419 (method url-fetch)
af1ab773 2420 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2421 (sha256
2422 (base32
8957af32 2423 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
d5f89b22 2424 (build-system python-build-system)
d5f89b22 2425 (arguments `(#:tests? #f)) ; no tests
7bf837fd 2426 (home-page "https://github.com/digitalbazaar/pyld")
d5f89b22
DT
2427 (synopsis "Python implementation of the JSON-LD specification")
2428 (description
2429 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2430 (license license:bsd-3)))
d5f89b22
DT
2431
2432(define-public python2-pyld
2433 (package-with-python2 python-pyld))
3a1f9a68
DT
2434
2435(define-public python-certifi
2436 (package
2437 (name "python-certifi")
28576403 2438 (version "2017.1.23")
3a1f9a68
DT
2439 (source (origin
2440 (method url-fetch)
9a41f443 2441 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2442 (sha256
2443 (base32
28576403 2444 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
3a1f9a68 2445 (build-system python-build-system)
28576403 2446 (home-page "https://certifi.io/")
3a1f9a68
DT
2447 (synopsis "Python CA certificate bundle")
2448 (description
2449 "Certifi is a Python library that contains a CA certificate bundle, which
2450is used by the Requests library to verify HTTPS requests.")
3f641af0 2451 (license license:asl2.0)))
3a1f9a68
DT
2452
2453(define-public python2-certifi
2454 (package-with-python2 python-certifi))
e6cfbd36 2455
12c270dd
RW
2456(define-public python-click
2457 (package
2458 (name "python-click")
d4acb6db 2459 (version "6.7")
12c270dd
RW
2460 (source
2461 (origin
2462 (method url-fetch)
375f224b 2463 (uri (pypi-uri "click" version))
12c270dd 2464 (sha256
43accb58 2465 (base32
d4acb6db 2466 "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"))))
12c270dd 2467 (build-system python-build-system)
e2ab5a09
BW
2468 (arguments
2469 `(#:phases
2470 (modify-phases %standard-phases
2471 (add-after 'unpack 'fix-paths
2472 (lambda* (#:key inputs #:allow-other-keys)
2473 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2474 "cross-libc" "libc"))))
2475 (substitute* "click/_unicodefun.py"
2476 (("'locale'")
2477 (string-append "'" glibc "/bin/locale'"))))
97be1bc2
MB
2478 #t))
2479 (replace 'check
2480 (lambda _
2481 (zero? (system* "make" "test")))))))
2482 (native-inputs
2483 `(("python-pytest" ,python-pytest)))
12c270dd
RW
2484 (home-page "http://click.pocoo.org")
2485 (synopsis "Command line library for Python")
2486 (description
2487 "Click is a Python package for creating command line interfaces in a
2488composable way with as little code as necessary. Its name stands for
2489\"Command Line Interface Creation Kit\". It's highly configurable but comes
2490with sensible defaults out of the box.")
3f641af0 2491 (license license:bsd-3)))
12c270dd
RW
2492
2493(define-public python2-click
2494 (package-with-python2 python-click))
2495
addc808d
EF
2496(define-public python-wheel
2497 (package
2498 (name "python-wheel")
0e6df70b 2499 (version "0.30.0a0")
e1ba0749
EF
2500 (source
2501 (origin
2502 (method url-fetch)
2503 (uri (pypi-uri "wheel" version))
2504 (sha256
2505 (base32
0e6df70b 2506 "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
e1ba0749
EF
2507 (build-system python-build-system)
2508 (native-inputs
f3b98f4f 2509 `(("python-jsonschema" ,python-jsonschema)
e1ba0749
EF
2510 ("python-pytest-cov" ,python-pytest-cov)))
2511 (home-page "https://bitbucket.org/pypa/wheel/")
2512 (synopsis "Format for built Python packages")
2513 (description
2514 "A wheel is a ZIP-format archive with a specially formatted filename and
2515the @code{.whl} extension. It is designed to contain all the files for a PEP
2516376 compatible install in a way that is very close to the on-disk format. Many
2517packages will be properly installed with only the @code{Unpack} step and the
2518unpacked archive preserves enough information to @code{Spread} (copy data and
2519scripts to their final locations) at any later time. Wheel files can be
2520installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2521 (license license:expat)
2522 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2523
2524(define-public python2-wheel
8ad4ae20
LF
2525 (let ((wheel (package-with-python2
2526 (strip-python2-variant python-wheel))))
264ae686 2527 (package (inherit wheel)
8ad4ae20
LF
2528 (native-inputs `(("python2-functools32" ,python2-functools32)
2529 ,@(package-native-inputs wheel))))))
2530
addc808d 2531
ae641128 2532(define-public python-requests
e6cfbd36 2533 (package
ae641128 2534 (name "python-requests")
da5db988 2535 (version "2.13.0")
e6cfbd36
DT
2536 (source (origin
2537 (method url-fetch)
5d691657 2538 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2539 (sha256
2540 (base32
da5db988 2541 "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
cff0ccf9 2542 ;; TODO: unbundle urllib3 and chardet.
e6cfbd36 2543 (build-system python-build-system)
cff0ccf9
MB
2544 (arguments
2545 ;; FIXME: Some tests require network access.
2546 '(#:tests? #f))
e6cfbd36
DT
2547 (home-page "http://python-requests.org/")
2548 (synopsis "Python HTTP library")
2549 (description
2550 "Requests is a Python HTTP client library. It aims to be easier to use
2551than Python’s urllib2 library.")
3f641af0 2552 (license license:asl2.0)))
864b5211 2553
e9005180
DT
2554;; Some software requires an older version of Requests, notably Docker
2555;; Compose.
2556(define-public python-requests-2.7
2557 (package (inherit python-requests)
2558 (version "2.7.0")
2559 (source (origin
2560 (method url-fetch)
2561 (uri (pypi-uri "requests" version))
2562 (sha256
2563 (base32
2564 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2565
ae641128 2566(define-public python2-requests
8ad4ae20 2567 (package-with-python2 python-requests))
ae641128 2568
ea521b42
DT
2569(define-public python-vcversioner
2570 (package
2571 (name "python-vcversioner")
538fe019 2572 (version "2.16.0.0")
ea521b42
DT
2573 (source
2574 (origin
2575 (method url-fetch)
2576 (uri (pypi-uri "vcversioner" version))
2577 (sha256
2578 (base32
538fe019 2579 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
ea521b42 2580 (build-system python-build-system)
ea521b42
DT
2581 (synopsis "Python library for version number discovery")
2582 (description "Vcversioner is a Python library that inspects tagging
2583information in a variety of version control systems in order to discover
2584version numbers.")
2585 (home-page "https://github.com/habnabit/vcversioner")
f210e944 2586 (license license:isc)))
ea521b42
DT
2587
2588(define-public python2-vcversioner
f210e944 2589 (package-with-python2 python-vcversioner))
ae641128 2590
864b5211
DT
2591(define-public python-jsonschema
2592 (package
2593 (name "python-jsonschema")
b3667afb 2594 (version "2.5.1")
864b5211
DT
2595 (source (origin
2596 (method url-fetch)
2597 (uri
2598 (string-append
2599 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2600 version ".tar.gz"))
2601 (sha256
2602 (base32
b3667afb 2603 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211 2604 (build-system python-build-system)
8bcd6b91
EF
2605 (arguments
2606 '(#:phases
2607 (modify-phases %standard-phases
2608 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
eaba9d66 2609 (native-inputs
8bcd6b91
EF
2610 `(("python-nose" ,python-nose)
2611 ("python-vcversioner" ,python-vcversioner)))
2612 (home-page "https://github.com/Julian/jsonschema")
864b5211
DT
2613 (synopsis "Implementation of JSON Schema for Python")
2614 (description
2615 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2616 (license license:expat)
2617 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2618
2619(define-public python2-jsonschema
a14600ec
LF
2620 (let ((jsonschema (package-with-python2
2621 (strip-python2-variant python-jsonschema))))
264ae686 2622 (package (inherit jsonschema)
eaba9d66 2623 (native-inputs
8bcd6b91 2624 `(("python2-mock" ,python2-mock)
eaba9d66
MB
2625 ,@(package-native-inputs jsonschema)))
2626 (propagated-inputs
2627 `(("python2-functools32" ,python2-functools32))))))
850189b8 2628
9f21414d 2629(define-public python-kitchen
2630 (package
2631 (name "python-kitchen")
2632 (version "1.2.4")
2633 (source
2634 (origin
2635 (method url-fetch)
2636 (uri (pypi-uri "kitchen" version))
2637 (sha256
2638 (base32
2639 "0ggv3p4x8jvmmzhp0xm00h6pvh1g0gmycw71rjwagnrj8n23vxrq"))))
2640 (build-system python-build-system)
2641 (propagated-inputs
2642 `(("python-chardet" ,python-chardet)))
2643 (home-page "https://fedorahosted.org/kitchen")
2644 (synopsis "Python API for snippets")
2645 (description "@code{kitchen} module provides a python API for all sorts of
2646little useful snippets of code that everybody ends up writing for their projects
2647but never seem big enough to build an independent release. Use kitchen and stop
2648cutting and pasting that code over and over.")
2649 (license (list license:lgpl2.1+
2650 ;; subprocess.py, test_subprocess.py,
2651 ;; kitchen/pycompat25/defaultdict.py:
2652 license:psfl))))
2653
2654(define-public python2-kitchen
2655 (package-with-python2 python-kitchen))
2656
850189b8
DT
2657(define-public python-unidecode
2658 (package
2659 (name "python-unidecode")
5754fe95 2660 (version "0.04.20")
850189b8
DT
2661 (source (origin
2662 (method url-fetch)
8925d4f3 2663 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2664 (sha256
2665 (base32
5754fe95 2666 "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
850189b8 2667 (build-system python-build-system)
850189b8
DT
2668 (home-page "https://pypi.python.org/pypi/Unidecode")
2669 (synopsis "ASCII transliterations of Unicode text")
2670 (description
2671 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2672useful when integrating with legacy code that doesn't support Unicode, or for
2673ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2674machine identifiers from human-readable Unicode strings that should still be
2675somewhat intelligeble.")
3f641af0 2676 (license license:gpl2+)))
850189b8
DT
2677
2678(define-public python2-unidecode
2679 (package-with-python2 python-unidecode))
6d45fef4
DT
2680
2681(define-public python-pyjwt
2682 (package
2683 (name "python-pyjwt")
eb31d4b4 2684 (version "1.4.0")
6d45fef4
DT
2685 (source
2686 (origin
2687 (method url-fetch)
eb31d4b4 2688 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2689 (sha256
2690 (base32
eb31d4b4 2691 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2692 (build-system python-build-system)
eb31d4b4 2693 (native-inputs
130fe994
HG
2694 `(("python-pytest" ,python-pytest)
2695 ("python-pytest-cov" ,python-pytest-cov)
2696 ("python-pytest-runner" ,python-pytest-runner)))
7bf837fd 2697 (home-page "https://github.com/progrium/pyjwt")
6d45fef4
DT
2698 (synopsis "JSON Web Token implementation in Python")
2699 (description
2700 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2701 (license license:expat)))
6d45fef4
DT
2702
2703(define-public python2-pyjwt
2704 (package-with-python2 python-pyjwt))
2705
a80488c2 2706(define-public python-pykka
2707 (package
2708 (name "python-pykka")
2709 (version "1.2.1")
2710 (source
2711 (origin
2712 (method url-fetch)
2713 (uri (pypi-uri "Pykka" version))
2714 (sha256
2715 (base32
2716 "049w3r0mdnnw7xv19jiq7rvls9k7xs73x05b4qs5d6z4vvmgyiz8"))))
2717 (build-system python-build-system)
2718 (native-inputs
2719 `(("python-mock" ,python-mock)
2720 ("python-nose" ,python-nose)
2721 ("python-gevent" ,python-gevent)
2722 ("python-eventlet" ,python-eventlet)))
2723 (home-page "https://www.pykka.org/")
2724 (synopsis "Pykka is a Python implementation of the actor model")
2725 (description
2726 "Pykka is a Python implementation of the actor model.
2727The actor model introduces some simple rules to control the sharing
2728of state and cooperation between execution units, which makes it
2729easier to build concurrent applications.")
2730 (license license:asl2.0)))
2731
2732(define-public python2-pykka
2733 (package-with-python2 python-pykka))
2734
2cec1f6f
DT
2735(define-public python-oauthlib
2736 (package
2737 (name "python-oauthlib")
bde2171d 2738 (version "1.0.3")
2cec1f6f
DT
2739 (source (origin
2740 (method url-fetch)
bde2171d 2741 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2742 (sha256
2743 (base32
bde2171d 2744 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2745 (build-system python-build-system)
bde2171d 2746 (native-inputs
bb06aa34 2747 `(("python-nose" ,python-nose)
c616b5d3 2748 ("python-mock" ,python-mock)
bde2171d 2749 ("python-cryptography" ,python-cryptography)
bb06aa34
HG
2750 ("python-pyjwt" ,python-pyjwt)
2751 ("python-blinker" ,python-blinker)))
2cec1f6f
DT
2752 (home-page "https://github.com/idan/oauthlib")
2753 (synopsis "OAuth implementation for Python")
2754 (description
2755 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2756OAuth request-signing logic.")
3f641af0 2757 (license license:bsd-3)
59f151ec 2758 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2759
2760(define-public python2-oauthlib
59f151ec 2761 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2762 (package
2763 (inherit base)
00e10c6e 2764 (native-inputs `(("python2-unittest2" ,python2-unittest2)
59f151ec 2765 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2766
2767(define-public python-itsdangerous
2768 (package
2769 (name "python-itsdangerous")
2770 (version "0.24")
2771 (source
2772 (origin
2773 (method url-fetch)
2774 (uri (string-append
2775 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2776 version ".tar.gz"))
2777 (sha256
2778 (base32
2779 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2780 (build-system python-build-system)
7bf837fd 2781 (home-page "https://github.com/mitsuhiko/itsdangerous")
ec5dbb5c
DT
2782 (synopsis "Python library for passing data to/from untrusted environments")
2783 (description
2784 "Itsdangerous provides various helpers to pass trusted data to untrusted
2785environments and back.")
f210e944 2786 (license license:bsd-3)))
ec5dbb5c
DT
2787
2788(define-public python2-itsdangerous
f210e944 2789 (package-with-python2 python-itsdangerous))
5731cae3 2790
8d12be1e
RW
2791(define-public python-pyyaml
2792 (package
2793 (name "python-pyyaml")
bf5e4bc4 2794 (version "3.12")
8d12be1e
RW
2795 (source
2796 (origin
2797 (method url-fetch)
bf5e4bc4 2798 (uri (pypi-uri "PyYAML" version))
8d12be1e
RW
2799 (sha256
2800 (base32
bf5e4bc4 2801 "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"))))
8d12be1e
RW
2802 (build-system python-build-system)
2803 (inputs
2804 `(("libyaml" ,libyaml)))
8d12be1e
RW
2805 (home-page "http://pyyaml.org/wiki/PyYAML")
2806 (synopsis "YAML parser and emitter for Python")
2807 (description
2808 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2809complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2810API, and sensible error messages. PyYAML supports standard YAML tags and
2811provides Python-specific tags that allow to represent an arbitrary Python
2812object.")
2813 (license license:expat)))
2814
2815(define-public python2-pyyaml
2816 (package-with-python2 python-pyyaml))
2817
5731cae3
DT
2818(define-public python-virtualenv
2819 (package
2820 (name "python-virtualenv")
58d04dba 2821 (version "15.0.3")
5731cae3
DT
2822 (source
2823 (origin
2824 (method url-fetch)
17804240 2825 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2826 (sha256
2827 (base32
58d04dba 2828 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
5731cae3 2829 (build-system python-build-system)
17804240
EF
2830 (arguments
2831 `(#:phases
2832 (modify-phases %standard-phases
58d04dba
RW
2833 (replace 'check
2834 (lambda _
2835 ;; Disable failing test. See upstream bug report
2836 ;; https://github.com/pypa/virtualenv/issues/957
2837 (substitute* "tests/test_virtualenv.py"
2838 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2839 (zero? (system* "py.test")))))))
e7881f3d 2840 (native-inputs
f3b98f4f 2841 `(("python-mock" ,python-mock)
17804240 2842 ("python-pytest" ,python-pytest)))
5731cae3
DT
2843 (home-page "https://virtualenv.pypa.io/")
2844 (synopsis "Virtual Python environment builder")
2845 (description
2846 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2847 (license license:expat)))
5731cae3
DT
2848
2849(define-public python2-virtualenv
2850 (package-with-python2 python-virtualenv))
8176d4d5
DT
2851
2852(define-public python-markupsafe
2853 (package
2854 (name "python-markupsafe")
2855 (version "0.23")
2856 (source
2857 (origin
2858 (method url-fetch)
2859 (uri (string-append
2860 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2861 version ".tar.gz"))
2862 (sha256
2863 (base32
2864 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2865 (build-system python-build-system)
7bf837fd 2866 (home-page "https://github.com/mitsuhiko/markupsafe")
8176d4d5
DT
2867 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2868 (description
2869 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2870for Python.")
3f641af0 2871 (license license:bsd-3)))
8176d4d5
DT
2872
2873(define-public python2-markupsafe
2874 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2875
2876(define-public python-jinja2
2877 (package
2878 (name "python-jinja2")
e98149b3 2879 (version "2.8")
fe34f0d1
DT
2880 (source
2881 (origin
2882 (method url-fetch)
e98149b3 2883 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2884 (sha256
2885 (base32
e98149b3 2886 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1 2887 (build-system python-build-system)
f22efa01 2888 (propagated-inputs
f3b98f4f 2889 `(("python-markupsafe" ,python-markupsafe)))
fe34f0d1
DT
2890 (home-page "http://jinja.pocoo.org/")
2891 (synopsis "Python template engine")
2892 (description
2893 "Jinja2 is a small but fast and easy to use stand-alone template engine
2894written in pure Python.")
3f641af0 2895 (license license:bsd-3)))
fe34f0d1
DT
2896
2897(define-public python2-jinja2
2898 (package-with-python2 python-jinja2))
3580ab8b 2899
f7d17ac7
EE
2900(define-public python-pystache
2901 (package
2902 (name "python-pystache")
2903 (version "0.5.4")
2904 (source (origin
2905 (method url-fetch)
2906 (uri (pypi-uri "pystache" version))
2907 (sha256
2908 (base32
2909 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2910 (build-system python-build-system)
8bd5164b
MB
2911 (arguments
2912 '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
f7d17ac7
EE
2913 (home-page "http://defunkt.io/pystache/")
2914 (synopsis "Python logic-less template engine")
2915 (description
2916 "Pystache is a Python implementation of the framework agnostic,
2917logic-free templating system Mustache.")
8bd5164b
MB
2918 (license license:expat)
2919 (properties `((python2-variant . ,(delay python2-pystache))))))
f7d17ac7
EE
2920
2921(define-public python2-pystache
8bd5164b
MB
2922 (package (inherit (package-with-python2
2923 (strip-python2-variant python-pystache)))
2924 (arguments
2925 `(#:python ,python-2
2926 #:phases
2927 (modify-phases %standard-phases
2928 (replace 'check
2929 (lambda _
2930 (zero? (system* "python" "test_pystache.py")))))))))
f7d17ac7 2931
1285119b
RW
2932(define-public python-joblib
2933 (package
2934 (name "python-joblib")
f34ef331 2935 (version "0.10.3")
1285119b
RW
2936 (source (origin
2937 (method url-fetch)
f34ef331 2938 (uri (pypi-uri "joblib" version))
1285119b
RW
2939 (sha256
2940 (base32
6aa5f1ca
HG
2941 "0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
2942 (modules '((guix build utils)))
2943 (snippet
2944 '(begin
2945 ;; Remove pre-compiled .pyc files from source.
2946 (for-each delete-file-recursively
2947 (find-files "." "__pycache__" #:directories? #t))
2948 (for-each delete-file (find-files "." "\\.pyc$"))
2949 #t))))
1285119b 2950 (build-system python-build-system)
a8dd960a
RW
2951 (arguments
2952 `(#:phases
2953 (modify-phases %standard-phases
2954 (add-before 'check 'disable-failing-tests
2955 (lambda _
2956 ;; This numpydoc tests fails for unknown reasons
2957 (delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
2958 ;; This numpydoc test depends on matplotlib, which is not a
2959 ;; required input.
2960 (delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
2961 ;; These tests fail to execute sys.executable
2962 (substitute* "joblib/test/test_parallel.py"
2963 (("import nose" line)
2964 (string-append "from nose.plugins.skip import SkipTest\n" line))
2965 (("def test_nested_parallel_warnings" line)
2966 (string-append "@SkipTest\n" line))
2967 (("def test_parallel_with_interactively_defined_functions" line)
2968 (string-append "@SkipTest\n" line)))
2969 #t)))))
f052ec9a 2970 ;; Provide nose to enable tests command
1285119b 2971 (native-inputs
f3b98f4f 2972 `(("python-nose" ,python-nose)
f34ef331
RW
2973 ("python-sphinx" ,python-sphinx)
2974 ("python-docutils" ,python-docutils)
2975 ("python-numpydoc" ,python-numpydoc)))
1285119b
RW
2976 (home-page "http://pythonhosted.org/joblib/")
2977 (synopsis "Using Python functions as pipeline jobs")
2978 (description
2979 "Joblib is a set of tools to provide lightweight pipelining in Python.
2980In particular, joblib offers: transparent disk-caching of the output values
2981and lazy re-evaluation (memoize pattern), easy simple parallel computing
2982logging and tracing of the execution.")
3f641af0 2983 (license license:bsd-3)))
1285119b
RW
2984
2985(define-public python2-joblib
2986 (package-with-python2 python-joblib))
2987
3580ab8b
DT
2988(define-public python-docutils
2989 (package
2990 (name "python-docutils")
00e0ca7c 2991 (version "0.13.1")
3580ab8b
DT
2992 (source
2993 (origin
2994 (method url-fetch)
00e0ca7c 2995 (uri (pypi-uri "docutils" version))
3580ab8b
DT
2996 (sha256
2997 (base32
00e0ca7c 2998 "1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
3580ab8b 2999 (build-system python-build-system)
3580ab8b
DT
3000 (arguments
3001 '(#:tests? #f)) ; no setup.py test command
3002 (home-page "http://docutils.sourceforge.net/")
3003 (synopsis "Python Documentation Utilities")
3004 (description
3005 "Docutils is a modular system for processing documentation into useful
3006formats, such as HTML, XML, and LaTeX. For input Docutils supports
3007reStructuredText.")
3008 ;; Most of the source code is public domain, but some source files are
3009 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 3010 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
3011
3012(define-public python2-docutils
3013 (package-with-python2 python-docutils))
fb35b7c0
DT
3014
3015(define-public python-pygments
3016 (package
3017 (name "python-pygments")
7d2e758d 3018 (version "2.1.3")
fb35b7c0
DT
3019 (source
3020 (origin
3021 (method url-fetch)
9f442285 3022 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
3023 (sha256
3024 (base32
7d2e758d 3025 "10axnp2wpjnq9g8wg53fx0c70dfxqrz498jyz8mrdx9a3flwir48"))))
fb35b7c0 3026 (build-system python-build-system)
995cb99e
MB
3027 (arguments
3028 ;; FIXME: Tests require sphinx, which depends on this.
3029 '(#:tests? #f))
fb35b7c0
DT
3030 (home-page "http://pygments.org/")
3031 (synopsis "Syntax highlighting")
3032 (description
3033 "Pygments is a syntax highlighting package written in Python.")
3f641af0 3034 (license license:bsd-2)))
fb35b7c0
DT
3035
3036(define-public python2-pygments
3037 (package-with-python2 python-pygments))
9dd6078d
DT
3038
3039(define-public python-sphinx
3040 (package
3041 (name "python-sphinx")
c227458a 3042 (version "1.5.1")
9dd6078d
DT
3043 (source
3044 (origin
3045 (method url-fetch)
9a8acd00 3046 (uri (pypi-uri "Sphinx" version))
9dd6078d
DT
3047 (sha256
3048 (base32
c227458a 3049 "1i8p9idnli4gr0y4x67yakbdk5w6a0xjzhrg6bg51y9d1fi7fslf"))))
9dd6078d 3050 (build-system python-build-system)
03cb5f9e 3051 (arguments
c227458a
DM
3052 `(#:phases
3053 (modify-phases %standard-phases
3054 (replace 'check
3055 (lambda _
3056 ;; Requires Internet access.
3057 (delete-file "tests/test_build_linkcheck.py")
3058 (zero? (system* "make" "test")))))))
f22efa01 3059 (propagated-inputs
9a8acd00
DM
3060 `(("python-imagesize" ,python-imagesize)
3061 ("python-sphinx-alabaster-theme"
3062 ,python-sphinx-alabaster-theme)
3063 ("python-babel" ,python-babel)
3064 ("python-snowballstemmer" ,python-snowballstemmer)
9dd6078d 3065 ("python-docutils" ,python-docutils)
9a8acd00
DM
3066 ("python-jinja2" ,python-jinja2)
3067 ("python-pygments" ,python-pygments)
a10b9810 3068 ("python-requests" ,python-requests)
9a8acd00 3069 ("python-six" ,python-six)))
c227458a
DM
3070 (native-inputs
3071 `(("graphviz" ,graphviz)
3072 ("python-html5lib" ,python-html5lib)
3073 ("python-mock" ,python-mock)
a10b9810 3074 ("python-nose" ,python-nose)))
9dd6078d
DT
3075 (home-page "http://sphinx-doc.org/")
3076 (synopsis "Python documentation generator")
3077 (description "Sphinx is a tool that makes it easy to create documentation
3078for Python projects or other documents consisting of multiple reStructuredText
3079sources.")
9a8acd00
DM
3080 (license license:bsd-3)
3081 (properties `((python2-variant . ,(delay python2-sphinx))))))
9dd6078d 3082
3061b331
MFM
3083(define-public python-sphinx-1.5.3
3084 (package
3085 (inherit python-sphinx)
3086 (name "python-sphinx")
3087 (version "1.5.3")
3088 (source
3089 (origin
3090 (method url-fetch)
3091 (uri (pypi-uri "Sphinx" version))
3092 (sha256
3093 (base32
3094 "0kw1axswbvaavr8ggyf4qr6hnisnrzlbkkcdada69vk1x9xjassg"))))
3095 (native-inputs
23b9168d 3096 `(("python-pytest" ,python-pytest-3.0)
3061b331
MFM
3097 ,@(package-native-inputs python-sphinx)))))
3098
9dd6078d 3099(define-public python2-sphinx
9a8acd00
DM
3100 (let ((base (package-with-python2 (strip-python2-variant python-sphinx))))
3101 (package
3102 (inherit base)
3103 (native-inputs `(("python2-mock" ,python2-mock)
c227458a 3104 ("python2-enum34" ,python2-enum34)
9a8acd00
DM
3105 ,@(package-native-inputs base)))
3106 (propagated-inputs `(("python2-pytz" ,python2-pytz)
3107 ,@(package-propagated-inputs base))))))
6888830b 3108
ad320b20
RW
3109(define-public python-sphinx-rtd-theme
3110 (package
3111 (name "python-sphinx-rtd-theme")
3112 (version "0.1.6")
3113 (source
3114 (origin
3115 (method url-fetch)
3116 (uri (string-append "https://pypi.python.org/packages/source/s/"
3117 "sphinx_rtd_theme/sphinx_rtd_theme-"
3118 version ".tar.gz"))
3119 (sha256
3120 (base32
3121 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
3122 (build-system python-build-system)
9893cff3 3123 (arguments '(#:tests? #f)) ; No tests.
9d3a15b4
LF
3124 (propagated-inputs
3125 `(("python-sphinx" ,python-sphinx)))
ad320b20
RW
3126 (home-page "https://github.com/snide/sphinx_rtd_theme/")
3127 (synopsis "ReadTheDocs.org theme for Sphinx")
3128 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 3129 (license license:expat)))
ad320b20
RW
3130
3131(define-public python2-sphinx-rtd-theme
3132 (package-with-python2 python-sphinx-rtd-theme))
3133
fe94cf0c
HG
3134(define-public python-rst.linker
3135 (package
3136 (name "python-rst.linker")
3137 (version "1.7")
3138 (source
3139 (origin
3140 (method url-fetch)
3141 (uri (pypi-uri "rst.linker" version))
3142 (sha256
3143 (base32
3144 "0bh4lnj2p1nh0wf5pgxgfbrp27xhb1rinahkb5j7s3qprq6qn0sr"))))
3145 (build-system python-build-system)
3146 (propagated-inputs
22d7360b 3147 `(("python-dateutil" ,python-dateutil)
fe94cf0c
HG
3148 ("python-six" ,python-six)))
3149 (native-inputs
3150 `(("python-setuptools-scm" ,python-setuptools-scm)))
3151 ;; Test would require path.py, which would introduce a cyclic dependence.
3152 (arguments `(#:tests? #f))
3153 ;; Note: As of version 1.7 the documentation is not worth building.
3154 (home-page "https://github.com/jaraco/rst.linker")
3155 (synopsis "Sphinx plugin to add links and timestamps")
3156 (description "rst.linker allows to automatically replace text by a
3157reStructuredText external reference or timestamps. It's primary purpose is to
3158augment the changelog, but it can be used for other documents, too.")
3159 (license license:expat)))
3160
3161(define-public python2-rst.linker
3162 (package-with-python2 python-rst.linker))
3163
f4de5b3b
CAW
3164(define-public python-feedgenerator
3165 (package
3166 (name "python-feedgenerator")
d5c183d1 3167 (version "1.9")
f4de5b3b 3168 (source
f4de5b3b 3169 (origin
f0412aa2
EF
3170 (method url-fetch)
3171 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
3172 (sha256
3173 (base32
d5c183d1 3174 "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s"))
7c88bcf4
HG
3175 (modules '((guix build utils)))
3176 (snippet
3177 '(begin
3178 ;; Remove pre-compiled .pyc files from source.
3179 (for-each delete-file-recursively
3180 (find-files "." "__pycache__" #:directories? #t))
3181 (for-each delete-file (find-files "." "\\.pyc$"))
3182 #t))))
f4de5b3b 3183 (build-system python-build-system)
dae73d9b 3184 (propagated-inputs
f3b98f4f 3185 `(("python-pytz" ,python-pytz)
f4de5b3b 3186 ("python-six" ,python-six)))
f0412aa2 3187 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
3188 (synopsis
3189 "Standalone version of Django's Atom/RSS feed generator")
3190 (description
3191 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
3192which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 3193 (license license:bsd-3)))
f4de5b3b
CAW
3194
3195(define-public python2-feedgenerator
3196 (package-with-python2 python-feedgenerator))
3197
59ad30e3
CAW
3198(define-public python-blinker
3199 (package
3200 (name "python-blinker")
7fb9ff4d 3201 (version "1.4")
59ad30e3
CAW
3202 (source
3203 (origin
3204 (method url-fetch)
7fb9ff4d 3205 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
3206 (sha256
3207 (base32
7fb9ff4d 3208 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3 3209 (build-system python-build-system)
59ad30e3
CAW
3210 (home-page "http://pythonhosted.org/blinker/")
3211 (synopsis "Fast, simple object-to-object and broadcast signaling")
3212 (description
3213 "Blinker provides a fast dispatching system that allows any number of
3214interested parties to subscribe to events, or \"signals\".")
3215 (license license:expat)))
3216
3217(define-public python2-blinker
3218 (package-with-python2 python-blinker))
3219
b8050e71
CAW
3220(define-public pelican
3221 (package
3222 (name "pelican")
11f97c27 3223 (version "3.6.3")
b8050e71
CAW
3224 (source
3225 (origin
3226 (method url-fetch)
11f97c27 3227 (uri (pypi-uri "pelican" version))
b8050e71
CAW
3228 (sha256
3229 (base32
11f97c27 3230 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 3231 (build-system python-build-system)
f22efa01 3232 (propagated-inputs
b8050e71
CAW
3233 `(("python-feedgenerator" ,python-feedgenerator)
3234 ("python-jinja2" ,python-jinja2)
3235 ("python-pygments" ,python-pygments)
3236 ("python-docutils" ,python-docutils)
3237 ("python-pytz" ,python-pytz)
3238 ("python-blinker" ,python-blinker)
3239 ("python-unidecode" ,python-unidecode)
3240 ("python-six" ,python-six)
22d7360b 3241 ("python-dateutil" ,python-dateutil)))
b8050e71
CAW
3242 (home-page "http://getpelican.com/")
3243 (arguments
3244 `(;; XXX Requires a lot more packages to do unit tests :P
3245 #:tests? #f
3246 #:phases (modify-phases %standard-phases
3247 (add-before
3248 'install 'adjust-requires
3249 ;; Since feedgenerator is installed from git, it doesn't
3250 ;; conform to the version requirements.
3251 ;;
3252 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3253 ;; version requirement so setuptools doesn't get confused.
3254 (lambda _
3255 (substitute* "setup.py"
3256 (("['\"]feedgenerator.*?['\"]")
3257 "'feedgenerator'")))))))
3258 (synopsis "Python-based static site publishing system")
3259 (description
3260 "Pelican is a tool to generate a static blog from reStructuredText,
3261Markdown input files, and more. Pelican uses Jinja2 for templating
3262and is very extensible.")
3f641af0 3263 (license license:agpl3+)))
b8050e71 3264
240ca4aa
RW
3265(define-public python-scikit-learn
3266 (package
3267 (name "python-scikit-learn")
8e401ab6 3268 (version "0.18.1")
240ca4aa
RW
3269 (source
3270 (origin
3271 (method url-fetch)
3272 (uri (string-append
3273 "https://github.com/scikit-learn/scikit-learn/archive/"
3274 version ".tar.gz"))
7e21b9fb 3275 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
3276 (sha256
3277 (base32
8e401ab6 3278 "1hwswckdmd27f7k1jvwdc0m4mqrgxl2s245yq1scq34v124bjqgq"))))
240ca4aa
RW
3279 (build-system python-build-system)
3280 (arguments
3281 `(#:phases
4d25c486
MB
3282 (modify-phases %standard-phases
3283 (delete 'check)
3284 (add-after 'install 'check
3285 ;; Running tests from the source directory requires
3286 ;; an "inplace" build with paths relative to CWD.
3287 ;; http://scikit-learn.org/stable/developers/advanced_installation.html#testing
3288 ;; Use the installed version instead.
3289 (lambda* (#:key inputs outputs #:allow-other-keys)
3290 (add-installed-pythonpath inputs outputs)
3291 ;; some tests require access to "$HOME"
3292 (setenv "HOME" "/tmp")
3293 ;; Step out of the source directory just to be sure.
3294 (chdir "..")
3295 (zero? (system* "nosetests" "-v" "sklearn")))))))
240ca4aa 3296 (inputs
328bb95d
HG
3297 `(("openblas" ,openblas)))
3298 (native-inputs
8e401ab6
RW
3299 `(("python-nose" ,python-nose)
3300 ("python-cython" ,python-cython)))
240ca4aa
RW
3301 (propagated-inputs
3302 `(("python-numpy" ,python-numpy)
3303 ("python-scipy" ,python-scipy)))
3304 (home-page "http://scikit-learn.org/")
3305 (synopsis "Machine Learning in Python")
3306 (description
3307 "Scikit-learn provides simple and efficient tools for data
3308mining and data analysis.")
1b5241c5 3309 (license license:bsd-3)))
240ca4aa
RW
3310
3311(define-public python2-scikit-learn
1b5241c5 3312 (package-with-python2 python-scikit-learn))
240ca4aa 3313
12f8f9bb
RW
3314(define-public python-scikit-image
3315 (package
3316 (name "python-scikit-image")
3317 (version "0.11.3")
3318 (source
3319 (origin
3320 (method url-fetch)
3321 (uri (string-append
3322 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3323 version ".tar.gz"))
3324 (sha256
3325 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3326 (build-system python-build-system)
9026e689
MB
3327 (arguments
3328 ;; TODO: Some tests require running X11 server. Disable them?
3329 '(#:tests? #f))
b83e2333 3330 ;; See DEPENDS.txt for the list of build and run time requiremnts
12f8f9bb
RW
3331 (propagated-inputs
3332 `(("python-matplotlib" ,python-matplotlib)
3333 ("python-networkx" ,python-networkx)
12f8f9bb 3334 ("python-scipy" ,python-scipy)
12f8f9bb
RW
3335 ("python-pillow" ,python-pillow)))
3336 (native-inputs
b83e2333
HG
3337 `(("python-numpy" ,python-numpy)
3338 ("python-cython" ,python-cython)
3339 ("python-six" ,python-six)))
12f8f9bb
RW
3340 (home-page "http://scikit-image.org/")
3341 (synopsis "Image processing in Python")
3342 (description
e881752c 3343 "Scikit-image is a collection of algorithms for image processing.")
12733594 3344 (license license:bsd-3)))
12f8f9bb
RW
3345
3346(define-public python2-scikit-image
12733594 3347 (package-with-python2 python-scikit-image))
12f8f9bb 3348
5394a6a6
RW
3349(define-public python-redis
3350 (package
3351 (name "python-redis")
911a8faf 3352 (version "2.10.5")
5394a6a6
RW
3353 (source
3354 (origin
3355 (method url-fetch)
911a8faf 3356 (uri (pypi-uri "redis" version))
5394a6a6 3357 (sha256
911a8faf 3358 (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
5394a6a6
RW
3359 (build-system python-build-system)
3360 ;; Tests require a running Redis server
3361 (arguments '(#:tests? #f))
cf8124b0
HG
3362 ;; As long as we are not running test, we do not need this input :-)
3363 ;;(native-inputs
3364 ;; `(("python-pytest" ,python-pytest)))
5394a6a6
RW
3365 (home-page "https://github.com/andymccurdy/redis-py")
3366 (synopsis "Redis Python client")
3367 (description
3368 "This package provides a Python interface to the Redis key-value store.")
3369 (license license:expat)))
3370
3371(define-public python2-redis
3372 (package-with-python2 python-redis))
3373
748cef5b
RW
3374(define-public python-rq
3375 (package
3376 (name "python-rq")
3377 (version "0.5.2")
3378 (source
3379 (origin
3380 (method url-fetch)
3381 (uri (string-append
3382 "https://pypi.python.org/packages/source/r/rq/rq-"
3383 version ".tar.gz"))
3384 (sha256
3385 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
3386 (build-system python-build-system)
3387 (propagated-inputs
3388 `(("python-click" ,python-click)
3389 ("python-redis" ,python-redis)))
748cef5b
RW
3390 (home-page "http://python-rq.org/")
3391 (synopsis "Simple job queues for Python")
3392 (description
3393 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3394processing them in the background with workers. It is backed by Redis and it
3395is designed to have a low barrier to entry.")
3f641af0 3396 (license license:bsd-2)))
748cef5b
RW
3397
3398(define-public python2-rq
3399 (package-with-python2 python-rq))
3400
6888830b
FB
3401(define-public python-cython
3402 (package
3403 (name "python-cython")
cd158a2b 3404 (version "0.25.2")
6888830b
FB
3405 (source
3406 (origin
3407 (method url-fetch)
56918e26 3408 (uri (pypi-uri "Cython" version))
a3dea991 3409 (patches (search-patches "python-cython-fix-tests-32bit.patch"))
6888830b
FB
3410 (sha256
3411 (base32
cd158a2b 3412 "01h3lrf6d98j07iakifi81qjszh6faa37ibx7ylva1vsqbwx2hgi"))))
6888830b
FB
3413 (build-system python-build-system)
3414 ;; we need the full python package and not just the python-wrapper
3415 ;; because we need libpython3.3m.so
3416 (inputs
3417 `(("python" ,python)))
3418 (arguments
3419 `(#:phases
b92f651b
EF
3420 (modify-phases %standard-phases
3421 (add-before 'check 'set-HOME
3422 ;; some tests require access to "$HOME/.cython"
3423 (lambda _ (setenv "HOME" "/tmp")))
3424 (replace 'check
3425 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3426 (home-page "http://cython.org/")
3427 (synopsis "C extensions for Python")
3428 (description "Cython is an optimising static compiler for both the Python
3429programming language and the extended Cython programming language. It makes
3430writing C extensions for Python as easy as Python itself.")
3f641af0 3431 (license license:asl2.0)
48b311b1 3432 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3433
3434(define-public python2-cython
48b311b1
LC
3435 (package (inherit (package-with-python2
3436 (strip-python2-variant python-cython)))
6888830b
FB
3437 (name "python2-cython")
3438 (inputs
3439 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533 3440
ee5fb7ee
AV
3441;; The RPython toolchain currently does not support Python 3.
3442(define-public python2-rpython
3443 (package
3444 (name "python2-rpython")
3445 (version "0.1.4")
3446 (source
3447 (origin
3448 (method url-fetch)
3449 (uri (pypi-uri "rpython" version))
3450 (sha256
3451 (base32
3452 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3453 (build-system python-build-system)
3454 (arguments `(#:python ,python-2))
3455 (native-inputs
f3b98f4f 3456 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
ee5fb7ee
AV
3457 (home-page "https://rpython.readthedocs.org")
3458 (synopsis "Framework for implementing interpreters and virtual machines")
3459 (description "RPython is a translation and support framework for
3460producing implementations of dynamic languages, emphasizing a clean separation
3461between language specification and implementation aspects.")
3462 (license license:expat)))
3463
7ccb71e0 3464(define-public python-numpy
0da98533 3465 (package
7ccb71e0
TD
3466 (name "python-numpy")
3467 (version "1.12.0")
0da98533
FB
3468 (source
3469 (origin
3470 (method url-fetch)
7ccb71e0
TD
3471 (uri (string-append
3472 "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
3473 (file-name (string-append name "-" version ".tar.gz"))
0da98533
FB
3474 (sha256
3475 (base32
7ccb71e0 3476 "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
0da98533
FB
3477 (build-system python-build-system)
3478 (inputs
328bb95d 3479 `(("openblas" ,openblas)
cba256f8 3480 ("lapack" ,lapack)))
0da98533 3481 (native-inputs
7ccb71e0
TD
3482 `(("python-cython" ,python-cython)
3483 ("python-nose" ,python-nose)
2efabc55 3484 ("gfortran" ,gfortran)))
0da98533
FB
3485 (arguments
3486 `(#:phases
2efabc55
HG
3487 (modify-phases %standard-phases
3488 (add-before 'build 'set-environment-variables
3489 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3490 (call-with-output-file "site.cfg"
3491 (lambda (port)
cba256f8
RW
3492 (format port
3493 "[openblas]
dbdfe515
RW
3494libraries = openblas
3495library_dirs = ~a/lib
3496include_dirs = ~a/include
cba256f8 3497
2efabc55
HG
3498# backslash-n to make emacs happy
3499\n[lapack]
cba256f8
RW
3500lapack_libs = lapack
3501library_dirs = ~a/lib
3502include_dirs = ~a/include
3503"
3504 (assoc-ref inputs "openblas")
3505 (assoc-ref inputs "openblas")
3506 (assoc-ref inputs "lapack")
3507 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3508 ;; Use "gcc" executable, not "cc".
3509 (substitute* "numpy/distutils/system_info.py"
3510 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3511 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
2efabc55 3512 #t))
6a843168
FB
3513 ;; Tests can only be run after the library has been installed and not
3514 ;; within the source directory.
2efabc55
HG
3515 (delete 'check)
3516 (add-after 'install 'check
3517 (lambda* (#:key outputs inputs #:allow-other-keys)
3518 ;; Make installed package available for running the tests
3519 (add-installed-pythonpath inputs outputs)
6a843168 3520 (with-directory-excursion "/tmp"
89b5c60e 3521 (zero? (system* "python" "-c"
2efabc55 3522 "import numpy; numpy.test(verbose=2)"))))))))
0da98533
FB
3523 (home-page "http://www.numpy.org/")
3524 (synopsis "Fundamental package for scientific computing with Python")
3525 (description "NumPy is the fundamental package for scientific computing
e881752c 3526with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3527object, sophisticated (broadcasting) functions, tools for integrating C/C++
3528and Fortran code, useful linear algebra, Fourier transform, and random number
3529capabilities.")
3f641af0 3530 (license license:bsd-3)))
0da98533 3531
7ccb71e0
TD
3532(define-public python2-numpy
3533 (package-with-python2 python-numpy))
15bfe6d6 3534
460fccd4 3535(define-public python-munch
3536 (package
3537 (name "python-munch")
3538 (version "2.0.4")
3539 (source
3540 (origin
3541 (method url-fetch)
3542 (uri (pypi-uri "munch" version))
3543 (sha256
3544 (base32
3545 "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
3546 (build-system python-build-system)
3547 (home-page "https://github.com/Infinidat/munch")
3548 (synopsis "Dot-accessible dictionary")
3549 (description "Munch is a dot-accessible dictionary similar to JavaScript
3550objects.")
3551 (license license:expat)))
3552
3553(define-public python2-munch
3554 (package-with-python2 python-munch))
3555
3a1bfe18
RW
3556(define-public python2-fastlmm
3557 (package
3558 (name "python2-fastlmm")
154d0016 3559 (version "0.2.21")
3a1bfe18
RW
3560 (source
3561 (origin
3562 (method url-fetch)
b074e7d4 3563 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3564 (sha256
3565 (base32
154d0016 3566 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3567 (build-system python-build-system)
3568 (arguments
3569 `(#:python ,python-2)) ; only Python 2.7 is supported
3570 (propagated-inputs
3571 `(("python2-numpy" ,python2-numpy)
3572 ("python2-scipy" ,python2-scipy)
3573 ("python2-matplotlib" ,python2-matplotlib)
3574 ("python2-pandas" ,python2-pandas)
3575 ("python2-scikit-learn" ,python2-scikit-learn)
3a1bfe18
RW
3576 ("python2-pysnptools" ,python2-pysnptools)))
3577 (native-inputs
3578 `(("unzip" ,unzip)
2efabc55 3579 ("python2-cython" ,python2-cython)
1b6d7c3f
MB
3580 ("python2-mock" ,python2-mock)
3581 ("python2-nose" ,python2-nose)))
3a1bfe18
RW
3582 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3583 (synopsis "Perform genome-wide association studies on large data sets")
3584 (description
3585 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3586Models, is a program for performing both single-SNP and SNP-set genome-wide
3587association studies (GWAS) on extremely large data sets.")
3f641af0 3588 (license license:asl2.0)))
3a1bfe18 3589
7ccb71e0
TD
3590(define-public python-numpy-documentation
3591 (package
3592 (name "python-numpy-documentation")
3593 (version (package-version python-numpy))
3594 (source (package-source python-numpy))
3595 (build-system python-build-system)
2ee8869a 3596 (native-inputs
7ccb71e0
TD
3597 `(("python-matplotlib" ,python-matplotlib)
3598 ("python-numpy" ,python-numpy)
3599 ("pkg-config" ,pkg-config)
2efabc55
HG
3600 ("python-sphinx" ,python-sphinx)
3601 ("python-numpydoc" ,python-numpydoc)
2ee8869a
FB
3602 ("texlive" ,texlive)
3603 ("texinfo" ,texinfo)
3604 ("perl" ,perl)
7ccb71e0
TD
3605 ("scipy-sphinx-theme"
3606 ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
3607 (method git-fetch)
3608 (uri (git-reference
3609 (url "https://github.com/scipy/scipy-sphinx-theme.git")
67416769 3610 (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
7ccb71e0
TD
3611 (sha256
3612 (base32
67416769 3613 "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
7ccb71e0 3614 ,@(package-native-inputs python-numpy)))
2ee8869a 3615 (arguments
7ccb71e0
TD
3616 `(#:tests? #f ; we're only generating the documentation
3617 #:phases
3618 (modify-phases %standard-phases
3619 (delete 'build)
3620 (replace 'install
3621 (lambda* (#:key inputs outputs #:allow-other-keys)
3622 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
3623 (doc (string-append
3624 data "/doc/" ,name "-"
3625 ,(package-version python-numpy)))
3626 (info-reader (string-append data "/info"))
3627 (html (string-append doc "/html"))
3628 (scipy-sphinx-theme "scipy-sphinx-theme")
3629 (sphinx-theme-checkout (assoc-ref inputs scipy-sphinx-theme))
3630 (pyver ,(string-append "PYVER=")))
3631 (with-directory-excursion "doc"
3632 (copy-recursively sphinx-theme-checkout scipy-sphinx-theme)
3633 (mkdir-p html)
3634 (system* "make" "html" pyver)
3635 (system* "make" "latex" "PAPER=a4" pyver)
3636 (system* "make" "-C" "build/latex"
3637 "all-pdf" "PAPER=a4" pyver)
3638 ;; FIXME: Generation of the info file fails.
3639 ;; (system* "make" "info" pyver)
3640 ;; (mkdir-p info)
3641 ;; (copy-file "build/texinfo/numpy.info"
3642 ;; (string-append info "/numpy.info"))
3643 (for-each (lambda (file)
3644 (copy-file (string-append "build/latex" file)
3645 (string-append doc file)))
3646 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3647 (with-directory-excursion "build/html"
3648 (for-each (lambda (file)
3649 (let* ((dir (dirname file))
3650 (tgt-dir (string-append html "/" dir)))
3651 (unless (equal? "." dir)
3652 (mkdir-p tgt-dir))
3653 (install-file file html)))
3654 (find-files "." ".*")))))
3655 #t)))))
3656 (home-page (package-home-page python-numpy))
3657 (synopsis "Documentation for the python-numpy package")
3658 (description (package-description python-numpy))
3659 (license (package-license python-numpy))))
2ee8869a 3660
7ccb71e0
TD
3661(define-public python2-numpy-documentation
3662 (let ((numpy-documentation (package-with-python2 python-numpy-documentation)))
3663 (package
3664 (inherit numpy-documentation)
3665 (native-inputs `(("python2-functools32" ,python2-functools32)
3666 ,@(package-native-inputs numpy-documentation))))))
2ee8869a 3667
0151a8df 3668(define-public python-pygit2
3669 (package
3670 (name "python-pygit2")
022c9772 3671 (version "0.25.0")
0151a8df 3672 (source
3673 (origin
3674 (method url-fetch)
3675 (uri (pypi-uri "pygit2" version))
3676 (sha256
3677 (base32
bb6043fe
MB
3678 "0wf5rp0fvrw7j3j18dvwjq6xqlbm611wd55aphrfpps0v1gxh3ny"))
3679 (patches
3680 (search-patches "python-pygit2-disable-network-tests.patch"))))
0151a8df 3681 (build-system python-build-system)
3682 (propagated-inputs
3683 `(("python-six" ,python-six)
3684 ("python-cffi" ,python-cffi)
3685 ("libgit2" ,libgit2)
3686 ("python-tox" ,python-tox)))
3687 (home-page "https://github.com/libgit2/pygit2")
3688 (synopsis "Python bindings for libgit2")
3689 (description "Pygit2 is a set of Python bindings to the libgit2 shared
3690library, libgit2 implements Git plumbing.")
3691 ;; GPL2.0 only, with linking exception.
3692 (license license:gpl2)))
3693
3694(define-public python2-pygit2
3695 (package-with-python2 python-pygit2))
3696
15bfe6d6
FB
3697(define-public python-pyparsing
3698 (package
3699 (name "python-pyparsing")
e0669289 3700 (version "2.0.3")
15bfe6d6
FB
3701 (source
3702 (origin
3703 (method url-fetch)
de67e922
LF
3704 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
3705 "/pyparsing-" version
15bfe6d6
FB
3706 "/pyparsing-" version ".tar.gz"))
3707 (sha256
3708 (base32
e0669289 3709 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3710 (build-system python-build-system)
3711 (outputs '("out" "doc"))
3712 (arguments
3713 `(#:tests? #f ; no test target
3714 #:modules ((guix build python-build-system)
3715 (guix build utils))
3716 #:phases
3717 (alist-cons-after
3718 'install 'install-doc
3719 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3720 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3721 "/share/doc/" ,name "-" ,version))
3722 (html-doc (string-append doc "/html"))
3723 (examples (string-append doc "/examples")))
3724 (mkdir-p html-doc)
3725 (mkdir-p examples)
89b5c60e 3726 (for-each
15bfe6d6 3727 (lambda (dir tgt)
89b5c60e 3728 (map (lambda (file)
96c46210 3729 (install-file file tgt))
15bfe6d6
FB
3730 (find-files dir ".*")))
3731 (list "docs" "htmldoc" "examples")
3732 (list doc html-doc examples))))
3733 %standard-phases)))
3734 (home-page "http://pyparsing.wikispaces.com")
3735 (synopsis "Python parsing class library")
3736 (description
3737 "The pyparsing module is an alternative approach to creating and
3738executing simple grammars, vs. the traditional lex/yacc approach, or the use
3739of regular expressions. The pyparsing module provides a library of classes
3740that client code uses to construct the grammar directly in Python code.")
bd3fa666 3741 (license license:expat)))
15bfe6d6
FB
3742
3743(define-public python2-pyparsing
3744 (package-with-python2 python-pyparsing))
3745
ec00de35
FB
3746(define-public python-numpydoc
3747 (package
3748 (name "python-numpydoc")
3749 (version "0.5")
3750 (source
3751 (origin
3752 (method url-fetch)
89b5c60e 3753 (uri (string-append
ec00de35
FB
3754 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3755 version ".tar.gz"))
3756 (sha256
3757 (base32
5e4d8f67
AE
3758 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3759 (modules '((guix build utils)))
3760 (snippet
3761 '(begin
3762 ;; Drop a test requiring matplotlib, which we cannot add as an
3763 ;; input since it would create a circular dependency: Extend the
3764 ;; test for Python 3, where it is already dropped, to Python 2.
3765 (substitute* "numpydoc/tests/test_plot_directive.py"
3766 (("3") "2"))))))
ec00de35 3767 (build-system python-build-system)
fe4a8da4 3768 (propagated-inputs
213d1745
HG
3769 `(("python-sphinx" ,python-sphinx)))
3770 (native-inputs
3771 `(("python-nose" ,python-nose)))
ec00de35
FB
3772 (home-page "https://pypi.python.org/pypi/numpydoc")
3773 (synopsis
3774 "Numpy's Sphinx extensions")
3775 (description
3776 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 3777 (license license:bsd-2)))
ec00de35
FB
3778
3779(define-public python2-numpydoc
5e4d8f67 3780 (package-with-python2 python-numpydoc))
1c65314c 3781
1e656049
RW
3782(define-public python-numexpr
3783 (package
3784 (name "python-numexpr")
2ee57340 3785 (version "2.6.1")
1e656049
RW
3786 (source
3787 (origin
3788 (method url-fetch)
26112c0a 3789 (uri (pypi-uri "numexpr" version))
1e656049
RW
3790 (sha256
3791 (base32
2ee57340 3792 "01lsja72m32z0i5p8rwxbfyzk4mplh72k2a140nwh8vv4wpyfbnv"))))
1e656049
RW
3793 (build-system python-build-system)
3794 (arguments `(#:tests? #f)) ; no tests included
3795 (propagated-inputs
3796 `(("python-numpy" ,python-numpy)))
3797 (home-page "https://github.com/pydata/numexpr")
3798 (synopsis "Fast numerical expression evaluator for NumPy")
3799 (description
3800 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3801expressions that operate on arrays are accelerated and use less memory than
3802doing the same calculation in Python. In addition, its multi-threaded
3803capabilities can make use of all your cores, which may accelerate
3804computations, most specially if they are not memory-bounded (e.g. those using
3805transcendental functions).")
f210e944 3806 (license license:expat)))
1e656049
RW
3807
3808(define-public python2-numexpr
f210e944 3809 (package-with-python2 python-numexpr))
1e656049 3810
361d982c
MB
3811(define-public python-cycler
3812 (package
3813 (name "python-cycler")
3814 (version "0.10.0")
3815 (source (origin
3816 (method url-fetch)
3817 (uri (pypi-uri "cycler" version))
3818 (sha256
3819 (base32
3820 "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
3821 (build-system python-build-system)
3822 (arguments
3823 ;; XXX: The current version requires 'coveralls' which we don't have.
3824 ;; Enable this for the next release which uses 'python-pytest'.
3825 '(#:tests? #f))
3826 (propagated-inputs
3827 `(("python-six" ,python-six)))
3828 (home-page "http://matplotlib.org/cycler/")
3829 (synopsis "Composable keyword argument iterator")
3830 (description
3831 "When using @code{matplotlib} and plotting more than one line, it is
3832common to want to be able to want to be able to cycle over one or more artist
3833styles; but the plotting logic can quickly become involved.
3834To address this and enable easy cycling over arbitrary @code{kwargs}, the
3835@code{Cycler} class was developed.")
3836 (license license:bsd-3)))
3837
3838(define-public python2-cycler
3839 (package-with-python2 python-cycler))
3840
2aa6d3ae
TD
3841(define-public python-colorspacious
3842 (package
3843 (name "python-colorspacious")
3844 (version "1.1.0")
3845 (source
3846 (origin
3847 (method url-fetch)
3848 (uri (string-append "https://github.com/njsmith/colorspacious/archive/v"
3849 version ".tar.gz"))
3850 (file-name (string-append name "-" version))
3851 (sha256
3852 (base32 "1vflh5jm32qb0skza2i8pjacv09w6gq84fqpp2nj77s0rbmzgr4k"))))
3853 (build-system python-build-system)
3854 (propagated-inputs
3855 `(("python-numpy" ,python-numpy)))
ba062b3e
TD
3856 (native-inputs
3857 `(("python-nose" ,python-nose)))
3858 (arguments
3859 `(#:phases
3860 (modify-phases %standard-phases
3861 (replace 'check
3862 (lambda _
3863 (zero? (system* "nosetests" "--all-modules" "-v" "colorspacious")))))))
2aa6d3ae
TD
3864 (home-page "https://github.com/njsmith/colorspacious")
3865 (synopsis "Python library for colorspace conversions")
3866 (description "@code{colorspacious} is a Python library that lets you
3867convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
3868 (license license:expat)))
3869
3870(define-public python2-colorspacious
3871 (package-with-python2 python-colorspacious))
3872
1c65314c
FB
3873(define-public python-matplotlib
3874 (package
3875 (name "python-matplotlib")
4535a93a 3876 (version "2.0.0")
1c65314c
FB
3877 (source
3878 (origin
3879 (method url-fetch)
4535a93a
TD
3880 (uri (string-append
3881 "https://github.com/matplotlib/matplotlib/archive/v" version ".tar.gz"))
3882 (file-name (string-append name "-" version ".tar.gz"))
1c65314c
FB
3883 (sha256
3884 (base32
4535a93a 3885 "0w3k5m5qb3wsd7yhvmg042xddvligklvcq2visk2c5wnph3hhsln"))))
1c65314c 3886 (build-system python-build-system)
25f9a068 3887 (propagated-inputs ; the following packages are all needed at run time
4535a93a
TD
3888 `(("python-cycler" ,python-cycler)
3889 ("python-pyparsing" ,python-pyparsing)
25f9a068
FB
3890 ("python-pygobject" ,python-pygobject)
3891 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3892 ("python-tkinter" ,python "tk")
22d7360b 3893 ("python-dateutil" ,python-dateutil)
7ccb71e0 3894 ("python-numpy" ,python-numpy)
ca33a3ad
HG
3895 ("python-pillow" ,python-pillow)
3896 ("python-pytz" ,python-pytz)
3897 ("python-six" ,python-six)
25f9a068
FB
3898 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3899 ;; from 'gtk+') provides the required 'typelib' files used by
3900 ;; 'gobject-introspection'. The location of these files is set with the
3901 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3902 ;; is done automatically by a 'native-search-path' procedure. However,
3903 ;; at run-time the user must set this variable as follows:
3904 ;;
3905 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3906 ("gtk+" ,gtk+)
3907 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3908 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3909 ;; object. For this reason we need to import both libraries.
3910 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3911 ("python-pycairo" ,python-pycairo)
3912 ("python-cairocffi" ,python-cairocffi)))
1c65314c 3913 (inputs
ca33a3ad 3914 `(("libpng" ,libpng)
1c65314c
FB
3915 ("imagemagick" ,imagemagick)
3916 ("freetype" ,freetype)
25f9a068
FB
3917 ("cairo" ,cairo)
3918 ("glib" ,glib)
1c65314c 3919 ;; FIXME: Add backends when available.
1c65314c 3920 ;("python-wxpython" ,python-wxpython)
4535a93a 3921 ("python-pyqt" ,python-pyqt)
1bbc659f
FB
3922 ("tcl" ,tcl)
3923 ("tk" ,tk)))
1c65314c
FB
3924 (native-inputs
3925 `(("pkg-config" ,pkg-config)
ca33a3ad 3926 ("python-nose" ,python-nose)
4535a93a 3927 ("python-mock" ,python-mock)))
1c65314c
FB
3928 (arguments
3929 `(#:phases
42b7009a
DM
3930 (modify-phases %standard-phases
3931 (add-before 'build 'configure-environment
3932 (lambda* (#:key outputs inputs #:allow-other-keys)
3933 (let ((cairo (assoc-ref inputs "cairo"))
3934 (gtk+ (assoc-ref inputs "gtk+")))
3935 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3936 ;; has not effect.
3937 (setenv "LD_LIBRARY_PATH"
3938 (string-append cairo "/lib:" gtk+ "/lib"))
3939 (setenv "HOME" (getcwd))
3940 (call-with-output-file "setup.cfg"
3941 (lambda (port)
3942 (format port "[directories]~%
1bbc659f 3943basedirlist = ~a,~a~%
57b7b8cd 3944 [rc_options]~%
1bbc659f
FB
3945backend = TkAgg~%"
3946 (assoc-ref inputs "tcl")
4535a93a
TD
3947 (assoc-ref inputs "tk")))))
3948 #t)))))
1c65314c
FB
3949 (home-page "http://matplotlib.org")
3950 (synopsis "2D plotting library for Python")
3951 (description
3952 "Matplotlib is a Python 2D plotting library which produces publication
3953quality figures in a variety of hardcopy formats and interactive environments
3954across platforms. Matplotlib can be used in Python scripts, the python and
3955ipython shell, web application servers, and six graphical user interface
3956toolkits.")
3f641af0 3957 (license license:psfl)
57b7b8cd 3958 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 3959
764c077b 3960(define-public python2-matplotlib
57b7b8cd
LC
3961 (let ((matplotlib (package-with-python2
3962 (strip-python2-variant python-matplotlib))))
764c077b 3963 (package (inherit matplotlib)
88c26834
AE
3964 ;; Make sure to use special packages for Python 2 instead
3965 ;; of those automatically rewritten by package-with-python2.
89b5c60e 3966 (propagated-inputs
7ca0dbc3 3967 `(("python2-pycairo" ,python2-pycairo)
4535a93a 3968 ("python2-functools32" ,python2-functools32)
764c077b 3969 ("python2-pygobject-2" ,python2-pygobject-2)
4535a93a 3970 ("python2-subprocess32" ,python2-subprocess32)
1bbc659f
FB
3971 ("python2-tkinter" ,python-2 "tk")
3972 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3973 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 3974
4535a93a
TD
3975(define-public python-matplotlib-documentation
3976 (package
3977 (name "python-matplotlib-documentation")
3978 (version (package-version python-matplotlib))
3979 (source (package-source python-matplotlib))
3980 (build-system python-build-system)
3981 (native-inputs
3982 `(("python-matplotlib" ,python-matplotlib)
3983 ("python-colorspacious" ,python-colorspacious)
3984 ("python-sphinx" ,python-sphinx)
3985 ("python-numpydoc" ,python-numpydoc)
3986 ("python-ipython" ,python-ipython)
1eaaea41
TD
3987 ("python-mock" ,python-mock)
3988 ("graphviz" ,graphviz)
4535a93a
TD
3989 ("texlive" ,texlive)
3990 ("texinfo" ,texinfo)
3991 ,@(package-native-inputs python-matplotlib)))
3992 (arguments
3993 `(#:tests? #f ; we're only generating documentation
3994 #:phases
3995 (modify-phases %standard-phases
1eaaea41
TD
3996 (replace 'build
3997 (lambda _
3998 (chdir "doc")
3999 ;; Produce pdf in 'A4' format.
4000 (substitute* "conf.py"
4001 (("latex_paper_size = 'letter'") "")
4002 ;; latex_paper_size is deprecated -> set paper size using
4003 ;; latex_elements
4004 (("latex_elements\\['pointsize'\\] = '11pt'" match)
4005 ;; insert at a point where latex_elements{} is defined:
4006 (string-append match "\nlatex_elements['papersize'] = 'a4paper'")))
4007 (zero? (system* "python" "make.py" "html" "latex" "texinfo"))))
4535a93a 4008 (replace 'install
42b7009a 4009 (lambda* (#:key inputs outputs #:allow-other-keys)
4535a93a 4010 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
1eaaea41 4011 (doc (string-append data "/doc/python-matplotlib-" ,version))
42b7009a
DM
4012 (info (string-append data "/info"))
4013 (html (string-append doc "/html")))
1eaaea41
TD
4014 (mkdir-p html)
4015 (mkdir-p info)
4016 (copy-recursively "build/html" html)
4017 (symlink (string-append html "/_images")
4018 (string-append info "/matplotlib-figures"))
4019 (with-directory-excursion "build/texinfo"
4020 (substitute* "matplotlib.texi"
4021 (("@image\\{([^,]*)" all file)
4022 (string-append "@image{matplotlib-figures/" file)))
18b31516 4023 (symlink (string-append html "/_images")
1eaaea41
TD
4024 "./matplotlib-figures")
4025 (system* "makeinfo" "--no-split"
4026 "-o" "matplotlib.info" "matplotlib.texi"))
4027 (copy-file "build/texinfo/matplotlib.info"
4028 (string-append info "/matplotlib.info"))
4029 (copy-file "build/latex/Matplotlib.pdf"
4030 (string-append doc "/Matplotlib.pdf")))
4535a93a
TD
4031 #t)))))
4032 (home-page (package-home-page python-matplotlib))
4033 (synopsis "Documentation for the python-matplotlib package")
4034 (description (package-description python-matplotlib))
4035 (license (package-license python-matplotlib))))
1c65314c 4036
4535a93a
TD
4037(define-public python2-matplotlib-documentation
4038 (package-with-python2 python-matplotlib-documentation))
94914805 4039
0dde6232
RW
4040(define-public python2-pysnptools
4041 (package
4042 (name "python2-pysnptools")
a800018e 4043 (version "0.3.9")
0dde6232
RW
4044 (source
4045 (origin
4046 (method url-fetch)
3f2e9675 4047 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
4048 (sha256
4049 (base32
a800018e 4050 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
4051 (build-system python-build-system)
4052 (arguments
4053 `(#:python ,python-2)) ; only Python 2.7 is supported
4054 (propagated-inputs
4055 `(("python2-numpy" ,python2-numpy)
4056 ("python2-scipy" ,python2-scipy)
b72ac1b5
HG
4057 ("python2-pandas" ,python2-pandas)))
4058 (native-inputs
4059 `(("python2-cython" ,python2-cython)))
0dde6232 4060 (native-inputs
f3b98f4f 4061 `(("unzip" ,unzip)))
0dde6232
RW
4062 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
4063 (synopsis "Library for reading and manipulating genetic data")
4064 (description
4065 "PySnpTools is a library for reading and manipulating genetic data. It
4066can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
4067those files. It can also efficiently manipulate ranges of integers using set
4068operators such as union, intersection, and difference.")
3f641af0 4069 (license license:asl2.0)))
0dde6232 4070
c9b1b4f9
RW
4071(define-public python-rpy2
4072 (package
4073 (name "python-rpy2")
ec3bcbc7 4074 (version "2.7.6")
c9b1b4f9
RW
4075 (source
4076 (origin
4077 (method url-fetch)
ec3bcbc7 4078 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
4079 (sha256
4080 (base32
ec3bcbc7 4081 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9 4082 (build-system python-build-system)
444464ec
MB
4083 (arguments
4084 '(#:phases
4085 (modify-phases %standard-phases
4086 (delete 'check)
4087 (add-after 'install 'check
4088 (lambda* (#:key outputs inputs #:allow-other-keys)
4089 ;; It's easier to run tests after install.
4090 ;; Make installed package available for running the tests
4091 (add-installed-pythonpath inputs outputs)
4092 (zero? (system* "python" "-m" "rpy2.tests" "-v")))))))
482d9591
HG
4093 (propagated-inputs
4094 `(("python-six" ,python-six)))
c9b1b4f9 4095 (inputs
482d9591 4096 `(("readline" ,readline)
c9b1b4f9
RW
4097 ("icu4c" ,icu4c)
4098 ("pcre" ,pcre)
2d7c4ae3 4099 ("r-minimal" ,r-minimal)
aeb64f3c 4100 ("r-survival" ,r-survival)))
c9b1b4f9 4101 (native-inputs
f3b98f4f 4102 `(("zlib" ,zlib)))
c9b1b4f9
RW
4103 (home-page "http://rpy.sourceforge.net/")
4104 (synopsis "Python interface to the R language")
4105 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
4106low-level interface to R from Python, a proposed high-level interface,
4107including wrappers to graphical libraries, as well as R-like structures and
4108functions.")
3f641af0 4109 (license license:gpl3+)))
c9b1b4f9
RW
4110
4111(define-public python2-rpy2
4112 (let ((rpy2 (package-with-python2 python-rpy2)))
4113 (package (inherit rpy2)
d6abd094 4114 (propagated-inputs
c9b1b4f9 4115 `(("python2-singledispatch" ,python2-singledispatch)
d6abd094 4116 ,@(package-propagated-inputs rpy2))))))
c9b1b4f9 4117
bb986599
FB
4118(define-public python-scipy
4119 (package
4120 (name "python-scipy")
35093253 4121 (version "0.18.1")
bb986599
FB
4122 (source
4123 (origin
4124 (method url-fetch)
35093253
TD
4125 (uri (string-append "https://github.com/scipy/scipy/archive/v"
4126 version ".tar.gz"))
4127 (file-name (string-append name "-" version ".tar.gz"))
bb986599
FB
4128 (sha256
4129 (base32
35093253 4130 "17slsrfawjp7if6qrlx03zhgp05350ginxx8ddpw9zqx43x905sn"))))
bb986599 4131 (build-system python-build-system)
dd86c0d1 4132 (propagated-inputs
bb986599
FB
4133 `(("python-numpy" ,python-numpy)
4134 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
4135 ("python-pyparsing" ,python-pyparsing)))
4136 (inputs
4137 `(("lapack" ,lapack)
719b01c1 4138 ("openblas" ,openblas)))
bb986599 4139 (native-inputs
35093253
TD
4140 `(("python-cython" ,python-cython)
4141 ("python-nose" ,python-nose)
dd86c0d1 4142 ("python-sphinx" ,python-sphinx)
5248d49e 4143 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 4144 ("gfortran" ,gfortran)
bb986599
FB
4145 ("perl" ,perl)))
4146 (outputs '("out" "doc"))
4147 (arguments
4148 `(#:phases
16ca6aaa 4149 (modify-phases %standard-phases
16ca6aaa
MB
4150 (add-before 'build 'configure-openblas
4151 (lambda* (#:key inputs #:allow-other-keys)
4152 (call-with-output-file "site.cfg"
4153 (lambda (port)
4154 (format port
4155 "[blas]
719b01c1
RW
4156libraries = openblas
4157library_dirs = ~a/lib
4158include_dirs = ~a/include
d548e6aa
HG
4159
4160# backslash-n to make emacs happy
4161\n[atlas]
719b01c1
RW
4162library_dirs = ~a/lib
4163atlas_libs = openblas
4164"
16ca6aaa
MB
4165 (assoc-ref inputs "openblas")
4166 (assoc-ref inputs "openblas")
4167 (assoc-ref inputs "openblas"))))
db967b64 4168 #t))
35093253
TD
4169 (add-after 'install 'install-doc
4170 (lambda* (#:key inputs outputs #:allow-other-keys)
4171 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4172 (doc (string-append data "/doc/" ,name "-" ,version))
4173 (html (string-append doc "/html"))
4174 (pyver ,(string-append "PYVER=")))
4175 ;; Make installed package available for building the
4176 ;; documentation
4177 (add-installed-pythonpath inputs outputs)
4178 (with-directory-excursion "doc"
4179 ;; Fix generation of images for mathematical expressions.
4180 (substitute* (find-files "source" "conf\\.py")
4181 (("pngmath_use_preview = True")
4182 "pngmath_use_preview = False"))
4183 (mkdir-p html)
4184 (system* "make" "html" pyver)
4185 (with-directory-excursion "build/html"
4186 (for-each (lambda (file)
4187 (let* ((dir (dirname file))
4188 (tgt-dir (string-append html "/" dir)))
4189 (install-file file html)))
4190 (find-files "." ".*")))))
4191 #t))
4192 (add-after 'unpack 'fix-tests
4193 (lambda _
4194 (substitute* "scipy/integrate/tests/test_quadpack.py"
4195 (("libm.so") "libm.so.6"))
4196 #t))
4197 ;; Tests can only be run after the library has been installed and not
4198 ;; within the source directory.
4199 (delete 'check)
4200 (add-after 'install 'check
4201 (lambda* (#:key inputs outputs #:allow-other-keys)
d548e6aa 4202 (add-installed-pythonpath inputs outputs)
35093253
TD
4203 (with-directory-excursion "/tmp"
4204 (zero? (system* "python" "-c"
4205 "import scipy; scipy.test('full')")))
4206 #t)))))
bb986599
FB
4207 (home-page "http://www.scipy.org/")
4208 (synopsis "The Scipy library provides efficient numerical routines")
4209 (description "The SciPy library is one of the core packages that make up
4210the SciPy stack. It provides many user-friendly and efficient numerical
4211routines such as routines for numerical integration and optimization.")
9200fe14 4212 (properties `((python2-variant . ,(delay python2-scipy))))
3f641af0 4213 (license license:bsd-3)))
bb986599 4214
764c077b 4215(define-public python2-scipy
35093253
TD
4216 (package-with-python2
4217 (strip-python2-variant python-scipy)))
bb986599 4218
73acc193 4219(define-public python-socksipy-branch
4220 (package
4221 (name "python-socksipy-branch")
4222 (version "1.01")
4223 (source
4224 (origin
4225 (method url-fetch)
4226 (uri (pypi-uri "SocksiPy-branch" version))
4227 (sha256
4228 (base32
4229 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
4230 (build-system python-build-system)
4231 (arguments
4232 `(#:tests? #f)) ; There are no tests
4233 (home-page "https://code.google.com/archive/p/socksipy-branch/")
4234 (synopsis "Python SOCKS module")
4235 (description
4236 "SocksiPy - A Python SOCKS client module. It provides a
4237socket-like interface that supports connections to any TCP
4238service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
4239The original version was developed by Dan Haim, this is a
4240branch created by Mario Vilas to address some open issues,
4241as the original project seems to have been abandoned circa 2007.")
4242 (license license:bsd-3)))
4243
4244(define-public python2-socksipy-branch
4245 (package-with-python2 python-socksipy-branch))
4246
94914805
EB
4247(define-public python-sqlalchemy
4248 (package
4249 (name "python-sqlalchemy")
a4ba286b 4250 (version "1.0.12")
94914805
EB
4251 (source
4252 (origin
4253 (method url-fetch)
4254 (uri (string-append "https://pypi.python.org/packages/source/S/"
4255 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
4256 (sha256
4257 (base32
a4ba286b 4258 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
4259 (build-system python-build-system)
4260 (native-inputs
4261 `(("python-cython" ,python-cython) ;for c extensions
4262 ("python-pytest" ,python-pytest)
4263 ("python-mock" ,python-mock))) ;for tests
4264 (arguments
4265 `(#:phases (alist-replace
4266 'check
4267 (lambda _ (zero? (system* "py.test")))
4268 %standard-phases)))
4269 (home-page "http://www.sqlalchemy.org")
4270 (synopsis "Database abstraction library")
4271 (description
4272 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
4273gives application developers the full power and flexibility of SQL. It
4274provides a full suite of well known enterprise-level persistence patterns,
4275designed for efficient and high-performing database access, adapted into a
4276simple and Pythonic domain language.")
3f641af0 4277 (license license:x11)))
94914805
EB
4278
4279(define-public python2-sqlalchemy
4280 (package-with-python2 python-sqlalchemy))
c937562e 4281
4a093330
DM
4282(define-public python-pycodestyle
4283 (package
4284 (name "python-pycodestyle")
4285 (version "2.0.0")
4286 (source
4287 (origin
4288 (method url-fetch)
4289 (uri (pypi-uri "pycodestyle" version))
4290 (sha256
4291 (base32
4292 "1rz2v8506mdjdyxcnv9ygiw6v0d4dqx8z5sjyjm0w2v32h5l5w1p"))))
4293 (build-system python-build-system)
4294 (home-page "https://pycodestyle.readthedocs.io/")
4295 (synopsis "Python style guide checker")
4296 (description "@code{pycodestyle} (formerly pep8) is a tool to check
4297Python code against some of the style conventions in
4298@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
f210e944 4299 (license license:expat)))
4a093330
DM
4300
4301(define-public python2-pycodestyle
f210e944 4302 (package-with-python2 python-pycodestyle))
b91912c4
DM
4303
4304(define-public python-orderedmultidict
4305 (package
4306 (name "python-orderedmultidict")
9e2802cb 4307 (version "0.7.11")
b91912c4
DM
4308 (source
4309 (origin
4310 (method url-fetch)
4311 (uri (pypi-uri "orderedmultidict" version))
4312 (sha256
4313 (base32
9e2802cb 4314 "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
b91912c4
DM
4315 (build-system python-build-system)
4316 (arguments
4317 `(#:phases
4318 (modify-phases %standard-phases
4319 (add-after 'unpack 'fix-tests
4320 (lambda _
4321 ;; The package uses nosetest for running the tests.
4322 ;; Adding this initfile allows to run the test suite
4323 ;; without requiring nosetest.
4324 (zero? (system* "touch" "tests/__init__.py")))))))
4325 (propagated-inputs
4326 `(("python-six" ,python-six)))
4327 (native-inputs
4328 `(("python-pycodestyle" ,python-pycodestyle)))
4329 (home-page "https://github.com/gruns/orderedmultidict")
4330 (synopsis "Python Ordered Multivalue Dictionary - omdict")
4331 (description "This package contains a library for ordered multivalue
4332dictionaries. A multivalue dictionary is a dictionary that can store
4333multiple values for the same key. An ordered multivalue dictionary is a
4334multivalue dictionary that retains the order of insertions and deletions.")
f210e944 4335 (license license:unlicense)))
b91912c4
DM
4336
4337(define-public python2-orderedmultidict
f210e944 4338 (package-with-python2 python-orderedmultidict))
9dede065
DM
4339
4340(define-public python-furl
4341 (package
4342 (name "python-furl")
4343 (version "0.5.6")
4344 (source
4345 (origin
4346 (method url-fetch)
4347 (uri (pypi-uri "furl" version))
4348 (sha256
4349 (base32
4350 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
4351 (build-system python-build-system)
4352 (propagated-inputs
4353 `(("python-six" ,python-six)
4354 ("python-orderedmultidict" ,python-orderedmultidict)))
4355 (native-inputs
4356 `(("python-pycodestyle" ,python-pycodestyle)))
4357 (home-page "https://github.com/gruns/furl")
4358 (synopsis "URL manipulation in Python")
4359 (description "Furl provides an easy-to-use alternative to the
4360@code{urllib} and @code{urlparse} modules for manipulating URLs.")
f210e944 4361 (license license:unlicense)))
9dede065
DM
4362
4363(define-public python2-furl
f210e944 4364 (package-with-python2 python-furl))
462bf271
DM
4365
4366(define-public python-flask-babel
4367 (package
4368 (name "python-flask-babel")
4369 (version "0.11.1")
4370 (source
4371 (origin
4372 (method url-fetch)
4373 (uri (pypi-uri "Flask-Babel" version))
4374 (sha256
4375 (base32
4376 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
4377 (build-system python-build-system)
4378 (propagated-inputs
4379 `(("python-flask" ,python-flask)
4380 ("python-babel" ,python-babel)
4381 ("python-jinja2" ,python-jinja2)
4382 ("python-pytz" ,python-pytz)))
4383 (home-page "https://github.com/python-babel/flask-babel")
4384 (synopsis "Add i18n/l10n support to Flask applications")
4385 (description "This package implements internationalization and localization
4386support for Flask. This is based on the Python babel module as well as pytz -
4387both of which are installed automatically if you install this library.")
f210e944 4388 (license license:bsd-3)))
462bf271
DM
4389
4390(define-public python2-flask-babel
f210e944 4391 (package-with-python2 python-flask-babel))
4a093330 4392
de2966cf
EF
4393(define-public python-sqlalchemy-utils
4394 (package
4395 (name "python-sqlalchemy-utils")
fd2662e9 4396 (version "0.32.13")
de2966cf
EF
4397 (source
4398 (origin
4399 (method url-fetch)
4400 (uri (pypi-uri "SQLAlchemy-Utils" version))
4401 (sha256
4402 (base32
fd2662e9 4403 "0vsib7gidjamzsz6w4s5pdhxzxsrkghjnm4sqwk94igjrl3i5ixj"))))
de2966cf 4404 (build-system python-build-system)
35d56b7b
MB
4405 (arguments
4406 '(#:tests? #f)) ; FIXME: Many tests require a running database server.
4407 ;; #:phases
4408 ;; (modify-phases %standard-phases
4409 ;; (replace 'check
4410 ;; (lambda _
4411 ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
c22b4f87 4412 (propagated-inputs
de2966cf
EF
4413 `(("python-six" ,python-six)
4414 ("python-sqlalchemy" ,python-sqlalchemy)))
26d07efb 4415 (native-inputs
22d7360b 4416 `(("python-dateutil" ,python-dateutil)
35d56b7b
MB
4417 ("python-flexmock" ,python-flexmock)
4418 ("python-psycopg2" ,python-psycopg2)
4419 ("python-pytest" ,python-pytest)
4420 ("python-pytz" ,python-pytz)))
de2966cf
EF
4421 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
4422 (synopsis "Various utility functions for SQLAlchemy")
4423 (description
4424 "SQLAlchemy-utils provides various utility functions and custom data types
6a686b18
DM
4425for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
4426
4427You might also want to install the following optional dependencies:
4428@enumerate
4429@item @code{python-passlib}
4430@item @code{python-babel}
4431@item @code{python-cryptography}
4432@item @code{python-pytz}
4433@item @code{python-psycopg2}
4434@item @code{python-furl}
4435@item @code{python-flask-babel}
4436@end enumerate
4437")
de2966cf
EF
4438 (license license:bsd-3)))
4439
4440(define-public python2-sqlalchemy-utils
f210e944 4441 (package-with-python2 python-sqlalchemy-utils))
de2966cf 4442
af5a4602
CAW
4443(define-public python-alembic
4444 (package
4445 (name "python-alembic")
4418990d 4446 (version "0.8.10")
af5a4602
CAW
4447 (source
4448 (origin
4449 (method url-fetch)
4450 (uri (pypi-uri "alembic" version))
4451 (sha256
4452 (base32
4418990d 4453 "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
af5a4602
CAW
4454 (build-system python-build-system)
4455 (native-inputs
4456 `(("python-mock" ,python-mock)
4457 ("python-pytest-cov" ,python-pytest-cov)))
4458 (propagated-inputs
4459 `(("python-sqlalchemy" ,python-sqlalchemy)
4460 ("python-mako" ,python-mako)
4461 ("python-editor" ,python-editor)))
4462 (home-page "http://bitbucket.org/zzzeek/alembic")
4463 (synopsis
4464 "Database migration tool for SQLAlchemy")
4465 (description
4466 "Alembic is a lightweight database migration tool for usage with the
4467SQLAlchemy Database Toolkit for Python.")
f210e944 4468 (license license:expat)))
af5a4602
CAW
4469
4470(define-public python2-alembic
f210e944 4471 (package-with-python2 python-alembic))
af5a4602 4472
138adbbe
TD
4473(define-public python-autopep8
4474 (package
4475 (name "python-autopep8")
4476 (version "1.2.4")
4477 (source
4478 (origin
4479 (method url-fetch)
4480 (uri (pypi-uri "autopep8" version))
4481 (sha256
4482 (base32
4483 "18parm383lfn42a00wklv3qf20p4v277f1x3cn58x019dqk1xqrq"))))
4484 (build-system python-build-system)
4485 (propagated-inputs
4486 `(("python-pep8" ,python-pep8)))
4487 (home-page "https://github.com/hhatto/autopep8")
4488 (synopsis "Format Python code according to the PEP 8 style guide")
4489 (description
4490 "@code{autopep8} automatically formats Python code to conform to
4491the PEP 8 style guide. It uses the pycodestyle utility to determine
4492what parts of the code needs to be formatted. @code{autopep8} is
4493capable of fixing most of the formatting issues that can be reported
4494by pycodestyle.")
4495 (license (license:non-copyleft
4496 "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
4497
4498(define-public python2-autopep8
4499 (package-with-python2 python-autopep8))
4500
1671c07c
EB
4501(define-public python-distutils-extra
4502 (package
4503 (name "python-distutils-extra")
4504 (version "2.38")
4505 (source
4506 (origin
4507 (method url-fetch)
4508 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4509 version "/+download/python-distutils-extra-"
4510 version ".tar.gz"))
4511 (sha256
4512 (base32
4513 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4514 (build-system python-build-system)
1671c07c
EB
4515 (home-page "https://launchpad.net/python-distutils-extra/")
4516 (synopsis "Enhancements to Python's distutils")
4517 (description
4518 "The python-distutils-extra module enables you to easily integrate
4519gettext support, themed icons, and scrollkeeper-based documentation into
4520Python's distutils.")
3f641af0 4521 (license license:gpl2)))
1671c07c
EB
4522
4523(define-public python2-distutils-extra
4524 (package-with-python2 python-distutils-extra))
ea5456c8
EB
4525
4526(define-public python2-elib.intl
4527 (package
4528 (name "python2-elib.intl")
4529 (version "0.0.3")
4530 (source
4531 (origin
4532 ;; This project doesn't tag releases or publish tarballs, so we take
4533 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4534 (method git-fetch)
4535 (uri (git-reference
4536 (url "https://github.com/dieterv/elib.intl.git")
4537 (commit "d09997cfef")))
4538 (sha256
4539 (base32
4540 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4541 (build-system python-build-system)
ea5456c8
EB
4542 (arguments
4543 ;; incompatible with Python 3 (exception syntax)
4544 `(#:python ,python-2
b41a05ce 4545 #:tests? #f))
ea5456c8
EB
4546 (home-page "https://github.com/dieterv/elib.intl")
4547 (synopsis "Enhanced internationalization for Python")
4548 (description
4549 "The elib.intl module provides enhanced internationalization (I18N)
4550services for your Python modules and applications.")
3f641af0 4551 (license license:lgpl3+)))
ea5456c8 4552
c937562e
EB
4553(define-public python-pillow
4554 (package
4555 (name "python-pillow")
aba5182c 4556 (version "3.3.3")
c937562e
EB
4557 (source
4558 (origin
4559 (method url-fetch)
f1d9231d 4560 (uri (pypi-uri "Pillow" version))
a9681c74 4561 (patches (search-patches "python-pillow-freetype-2.7-test-failure.patch"))
c937562e
EB
4562 (sha256
4563 (base32
aba5182c 4564 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
c937562e
EB
4565 (build-system python-build-system)
4566 (native-inputs
f3b98f4f 4567 `(("python-nose" ,python-nose)))
c937562e 4568 (inputs
5ff408d9
SB
4569 `(("freetype" ,freetype)
4570 ("lcms" ,lcms)
c937562e
EB
4571 ("zlib" ,zlib)
4572 ("libjpeg" ,libjpeg)
4573 ("openjpeg" ,openjpeg)
5ff408d9
SB
4574 ("libtiff" ,libtiff)
4575 ("libwebp" ,libwebp)))
c937562e 4576 (arguments
e5358a6b 4577 `(#:phases (modify-phases %standard-phases
e5358a6b
LC
4578 (add-after
4579 'install 'check-installed
6151120a 4580 (lambda* (#:key outputs inputs #:allow-other-keys)
e5358a6b
LC
4581 (begin
4582 (setenv "HOME" (getcwd))
6151120a
HG
4583 ;; Make installed package available for running the
4584 ;; tests
4585 (add-installed-pythonpath inputs outputs)
e5358a6b
LC
4586 (and (zero? (system* "python" "selftest.py"
4587 "--installed"))
4588 (zero? (system* "python" "test-installed.py"))))))
4589 (delete 'check))))
c937562e
EB
4590 (home-page "https://pypi.python.org/pypi/Pillow")
4591 (synopsis "Fork of the Python Imaging Library")
4592 (description
4593 "The Python Imaging Library adds image processing capabilities to your
4594Python interpreter. This library provides extensive file format support, an
4595efficient internal representation, and fairly powerful image processing
4596capabilities. The core image library is designed for fast access to data
4597stored in a few basic pixel formats. It should provide a solid foundation for
4598a general image processing tool.")
3f641af0 4599 (license (license:x11-style
c937562e
EB
4600 "http://www.pythonware.com/products/pil/license.htm"
4601 "The PIL Software License"))))
4602
4603(define-public python2-pillow
4604 (package-with-python2 python-pillow))
bb986599 4605
a415f036
FB
4606(define-public python-pycparser
4607 (package
4608 (name "python-pycparser")
5043b20d 4609 (version "2.17")
a415f036
FB
4610 (source
4611 (origin
4612 (method url-fetch)
38eb6919 4613 (uri (pypi-uri "pycparser" version))
a415f036
FB
4614 (sha256
4615 (base32
5043b20d 4616 "1dkkjri0miidqb1zcqhqljfa34fcy9k5akasgwsv6k622zlk3b0a"))))
a415f036
FB
4617 (outputs '("out" "doc"))
4618 (build-system python-build-system)
4619 (native-inputs
f3b98f4f 4620 `(("pkg-config" ,pkg-config)))
a415f036 4621 (arguments
89b5c60e 4622 `(#:phases
819939cb
TGR
4623 (modify-phases %standard-phases
4624 (replace 'check
4625 (lambda _
4626 (with-directory-excursion "tests"
4627 (zero? (system* "python" "all_tests.py")))))
4628 (add-after 'install 'install-doc
4629 (lambda* (#:key outputs #:allow-other-keys)
4630 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4631 (doc (string-append data "/doc/" ,name "-" ,version))
4632 (examples (string-append doc "/examples")))
4633 (mkdir-p examples)
4634 (for-each (lambda (file)
4635 (copy-file (string-append "." file)
4636 (string-append doc file)))
4637 '("/README.rst" "/CHANGES" "/LICENSE"))
4638 (copy-recursively "examples" examples)))))))
a415f036
FB
4639 (home-page "https://github.com/eliben/pycparser")
4640 (synopsis "C parser in Python")
4641 (description
4642 "Pycparser is a complete parser of the C language, written in pure Python
4643using the PLY parsing library. It parses C code into an AST and can serve as
4644a front-end for C compilers or analysis tools.")
3f641af0 4645 (license license:bsd-3)))
a415f036
FB
4646
4647(define-public python2-pycparser
4648 (package-with-python2 python-pycparser))
57c3f716
FB
4649
4650(define-public python-cffi
4651 (package
4652 (name "python-cffi")
2d3a437c 4653 (version "1.4.2")
57c3f716
FB
4654 (source
4655 (origin
4656 (method url-fetch)
2d3a437c 4657 (uri (pypi-uri "cffi" version))
89b5c60e 4658 (sha256
2d3a437c 4659 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
4660 (build-system python-build-system)
4661 (outputs '("out" "doc"))
4662 (inputs
4663 `(("libffi" ,libffi)))
4664 (propagated-inputs ; required at run-time
4665 `(("python-pycparser" ,python-pycparser)))
4666 (native-inputs
4667 `(("pkg-config" ,pkg-config)
4668 ("python-sphinx" ,python-sphinx)
f3b98f4f 4669 ("python-pytest" ,python-pytest)))
57c3f716 4670 (arguments
4179f952 4671 `(#:phases
57c3f716
FB
4672 (alist-cons-after
4673 'install 'install-doc
4674 (lambda* (#:key outputs #:allow-other-keys)
4675 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4676 (doc (string-append data "/doc/" ,name "-" ,version))
4677 (html (string-append doc "/html")))
4678 (with-directory-excursion "doc"
4679 (system* "make" "html")
4680 (mkdir-p html)
4681 (copy-recursively "build/html" html))
4682 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
4683 %standard-phases)))
4684 (home-page "http://cffi.readthedocs.org")
4685 (synopsis "Foreign function interface for Python")
4686 (description
4687 "Foreign Function Interface for Python calling C code.")
bd3fa666 4688 (license license:expat)))
57c3f716
FB
4689
4690(define-public python2-cffi
4691 (package-with-python2 python-cffi))
6fa14469
FB
4692
4693(define-public python-xcffib
4694 (package
4695 (name "python-xcffib")
4696 (version "0.1.9")
4697 (source
4698 (origin
4699 (method url-fetch)
4700 (uri (string-append "https://pypi.python.org/packages/source/x/"
4701 "xcffib/xcffib-" version ".tar.gz"))
4702 (sha256
4703 (base32
4704 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
4705 (build-system python-build-system)
4706 (inputs
482d9591 4707 `(("libxcb" ,libxcb)))
6fa14469 4708 (propagated-inputs
482d9591
HG
4709 `(("python-cffi" ,python-cffi) ; used at run time
4710 ("python-six" ,python-six)))
6fa14469 4711 (arguments
e2816ac7
MB
4712 `(;; FIXME: Tests cannot load libxcb.so.1
4713 #:tests? #f
4714 #:phases
c8cd850c
MB
4715 (modify-phases %standard-phases
4716 (add-after 'install 'install-doc
4717 (lambda* (#:key outputs #:allow-other-keys)
4718 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4719 "/doc/" ,name "-" ,version)))
4720 (mkdir-p doc)
4721 (copy-file "README.md"
4722 (string-append doc "/README.md"))
4723 #t))))))
6fa14469
FB
4724 (home-page "https://github.com/tych0/xcffib")
4725 (synopsis "XCB Python bindings")
4726 (description
4727 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4728support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 4729 (license license:expat)))
6fa14469
FB
4730
4731(define-public python2-xcffib
4732 (package-with-python2 python-xcffib))
4733
9e099723
FB
4734(define-public python-cairocffi
4735 (package
4736 (name "python-cairocffi")
4737 (version "0.6")
4738 (source
4739 (origin
4740 (method url-fetch)
4741 ;; The archive on pypi is missing the 'utils' directory!
4742 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
4743 version ".tar.gz"))
f586c877 4744 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
4745 (sha256
4746 (base32
4747 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
4748 (build-system python-build-system)
4749 (outputs '("out" "doc"))
4750 (inputs
4751 `(("gdk-pixbuf" ,gdk-pixbuf)
4752 ("cairo" ,cairo)))
4753 (native-inputs
4754 `(("pkg-config" ,pkg-config)
4755 ("python-sphinx" ,python-sphinx)
f3b98f4f 4756 ("python-docutils" ,python-docutils)))
9e099723
FB
4757 (propagated-inputs
4758 `(("python-xcffib" ,python-xcffib))) ; used at run time
4759 (arguments
a792e1aa
MB
4760 `(;; FIXME: Tests cannot find 'libcairo.so.2'.
4761 #:tests? #f
4762 #:phases
6734c7ba
MB
4763 (modify-phases %standard-phases
4764 (add-after 'install 'install-doc
4765 (lambda* (#:key inputs outputs #:allow-other-keys)
4766 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4767 (doc (string-append data "/doc/" ,name "-" ,version))
4768 (html (string-append doc "/html")))
4769 (setenv "LD_LIBRARY_PATH"
4770 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4771 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4772 (setenv "LANG" "en_US.UTF-8")
4773 (mkdir-p html)
4774 (for-each (lambda (file)
4775 (copy-file (string-append "." file)
4776 (string-append doc file)))
4777 '("/README.rst" "/CHANGES" "/LICENSE"))
4778 (system* "python" "setup.py" "build_sphinx")
4779 (copy-recursively "docs/_build/html" html)
4780 #t))))))
9e099723
FB
4781 (home-page "https://github.com/SimonSapin/cairocffi")
4782 (synopsis "Python bindings and object-oriented API for Cairo")
4783 (description
4784 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4785Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4786graphics library with support for multiple backends including image buffers,
4787PNG, PostScript, PDF, and SVG file output.")
3f641af0 4788 (license license:bsd-3)))
9e099723
FB
4789
4790(define-public python2-cairocffi
4791 (package-with-python2 python-cairocffi))
4792
3cff95cb
RW
4793(define-public python-decorator
4794 (package
4795 (name "python-decorator")
d79fa7da 4796 (version "4.0.10")
3cff95cb
RW
4797 (source
4798 (origin
4799 (method url-fetch)
e21338be 4800 (uri (pypi-uri "decorator" version))
3cff95cb 4801 (sha256
d79fa7da 4802 (base32 "0w7hg59hlpq74jpyja4yfryap0ccjvchgpkfp20rhj9krgnrhvlw"))))
3cff95cb
RW
4803 (build-system python-build-system)
4804 (arguments '(#:tests? #f)) ; no test target
eb6e2e81 4805 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
4806 (synopsis "Python module to simplify usage of decorators")
4807 (description
4808 "The aim of the decorator module is to simplify the usage of decorators
4809for the average programmer, and to popularize decorators usage giving examples
4810of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4811etc. The core of this module is a decorator factory.")
4812 (license license:expat)))
4813
4814(define-public python2-decorator
4815 (package-with-python2 python-decorator))
4816
2c0499ad
RW
4817(define-public python-drmaa
4818 (package
4819 (name "python-drmaa")
7c427932 4820 (version "0.7.7")
2c0499ad
RW
4821 (source
4822 (origin
4823 (method url-fetch)
4824 (uri (string-append
4825 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4826 version ".tar.gz"))
4827 (sha256
7c427932 4828 (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
2c0499ad
RW
4829 (build-system python-build-system)
4830 ;; The test suite requires libdrmaa which is provided by the cluster
4831 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4832 ;; should be set to the path of the libdrmaa library.
4833 (arguments '(#:tests? #f))
4834 (native-inputs
f3b98f4f 4835 `(("python-nose" ,python-nose)))
2c0499ad
RW
4836 (home-page "https://pypi.python.org/pypi/drmaa")
4837 (synopsis "Python bindings for the DRMAA library")
4838 (description
4839 "A Python package for Distributed Resource Management (DRM) job
4840submission and control. This package is an implementation of the DRMAA 1.0
4841Python language binding specification.")
3f641af0 4842 (license license:bsd-3)))
2c0499ad
RW
4843
4844(define-public python2-drmaa
4845 (package-with-python2 python-drmaa))
4846
d05c6da0
RW
4847(define-public python-gridmap
4848 (package
4849 (name "python-gridmap")
4850 (version "0.13.0")
4851 (source
4852 (origin
4853 (method url-fetch)
4854 (uri (string-append
4855 "https://github.com/pygridtools/gridmap/archive/v"
4856 version ".tar.gz"))
4857 (file-name (string-append name "-" version ".tar.gz"))
4858 (sha256
4859 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4860 (build-system python-build-system)
ad348f9f
MB
4861 (arguments
4862 '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
f22efa01 4863 (propagated-inputs
d05c6da0
RW
4864 `(("python-psutil" ,python-psutil)
4865 ("python-drmaa" ,python-drmaa)
4866 ("python-pyzmq" ,python-pyzmq)))
d05c6da0
RW
4867 (home-page "https://github.com/pygridtools/gridmap")
4868 (synopsis "Create jobs on a cluster directly from Python")
4869 (description
4870 "Gridmap is a Python package to allow you to easily create jobs on the
4871cluster directly from Python. You can directly map Python functions onto the
4872cluster without needing to write any wrapper code yourself.")
3f641af0 4873 (license license:gpl3+)))
d05c6da0
RW
4874
4875(define-public python2-gridmap
4876 (package-with-python2 python-gridmap))
4877
cb6d5c54
RW
4878(define-public python-pexpect
4879 (package
4880 (name "python-pexpect")
ed118043 4881 (version "4.2.1")
cb6d5c54
RW
4882 (source
4883 (origin
4884 (method url-fetch)
ed118043 4885 (uri (pypi-uri "pexpect" version))
cb6d5c54 4886 (sha256
ed118043 4887 (base32 "14ls7k99pwvl21zqv65kzrhccv50j89m5ij1hf0slmsvlxjj84rx"))))
cb6d5c54
RW
4888 (build-system python-build-system)
4889 (arguments
4890 `(#:phases
4891 (modify-phases %standard-phases
ed118043
MB
4892 (add-before 'check 'prepare-tests
4893 (lambda _
4894 (substitute* (find-files "tests")
4895 (("/bin/ls") (which "ls"))
4896 (("/bin/echo") (which "echo"))
4897 (("/bin/which") (which "which"))
4898 ;; Many tests try to use the /bin directory which
4899 ;; is not present in the build environment.
4900 ;; Use one that's non-empty and unlikely to change.
4901 (("/bin'") "/dev'"))
4902 ;; XXX: Socket connection test gets "Connection reset by peer".
4903 ;; Why does it not work? Delete for now.
4904 (delete-file "tests/test_socket.py")
4905 #t))
3ee9355e 4906 (replace 'check (lambda _ (zero? (system* "nosetests" "-v")))))))
cb6d5c54 4907 (native-inputs
ed118043 4908 `(("python-nose" ,python-nose)
350a3084 4909 ("python-pytest" ,python-pytest-3.0)
ed118043
MB
4910 ("man-db" ,man-db)
4911 ("which" ,which)))
4912 (propagated-inputs
4913 `(("python-ptyprocess" ,python-ptyprocess)))
cb6d5c54
RW
4914 (home-page "http://pexpect.readthedocs.org/")
4915 (synopsis "Controlling interactive console applications")
4916 (description
4917 "Pexpect is a pure Python module for spawning child applications;
4918controlling them; and responding to expected patterns in their output.
4919Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4920child application and control it as if a human were typing commands.")
3f641af0 4921 (license license:isc)))
cb6d5c54
RW
4922
4923(define-public python2-pexpect
4924 (package-with-python2 python-pexpect))
4925
229ad120
RW
4926(define-public python-setuptools-scm
4927 (package
4928 (name "python-setuptools-scm")
5b1f31ff 4929 (version "1.15.0")
229ad120
RW
4930 (source (origin
4931 (method url-fetch)
383af6b0 4932 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4933 (sha256
4934 (base32
5b1f31ff 4935 "0bwyc5markib0i7i2qlyhdzxhiywzxbkfiapldma8m91m82jvwfs"))))
229ad120
RW
4936 (build-system python-build-system)
4937 (home-page "https://github.com/pypa/setuptools_scm/")
4938 (synopsis "Manage Python package versions in SCM metadata")
4939 (description
383af6b0 4940 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4941@dfn{software configuration management} (SCM) metadata instead of declaring
4942them as the version argument or in a SCM managed file.")
4943 (license license:expat)))
4944
4945(define-public python2-setuptools-scm
4946 (package-with-python2 python-setuptools-scm))
4947
b74270ee
RW
4948(define-public python-pathpy
4949 (package
4950 (name "python-pathpy")
4951 (version "8.1.1")
4952 (source
4953 (origin
4954 (method url-fetch)
4955 (uri (string-append "https://pypi.python.org/packages/source/p/"
4956 "path.py/path.py-" version ".tar.gz"))
4957 (sha256
4958 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
2887700e 4959 (outputs '("out" "doc"))
b74270ee
RW
4960 (build-system python-build-system)
4961 (propagated-inputs
4962 `(("python-appdirs" ,python-appdirs)))
4963 (native-inputs
f3b98f4f 4964 `(("python-setuptools-scm" ,python-setuptools-scm)
2887700e
HG
4965 ("python-sphinx" ,python-sphinx)
4966 ("python-rst.linker" ,python-rst.linker)
b74270ee
RW
4967 ("python-pytest" ,python-pytest)
4968 ("python-pytest-runner" ,python-pytest-runner)))
2887700e
HG
4969 (arguments
4970 `(#:phases
4971 (modify-phases %standard-phases
4972 (add-after 'build 'build-doc
4973 (lambda _
4974 (setenv "LANG" "en_US.UTF-8")
4975 (zero? (system* "python" "setup.py" "build_sphinx"))))
4976 (add-after 'install 'install-doc
4977 (lambda* (#:key outputs #:allow-other-keys)
4978 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4979 (doc (string-append data "/doc/" ,name "-" ,version))
4980 (html (string-append doc "/html")))
4981 (mkdir-p html)
4982 (for-each (lambda (file)
4983 (copy-file file (string-append doc "/" file)))
4984 '("README.rst" "CHANGES.rst"))
4985 (copy-recursively "build/sphinx/html" html)))))))
7bf837fd 4986 (home-page "https://github.com/jaraco/path.py")
b74270ee
RW
4987 (synopsis "Python module wrapper for built-in os.path")
4988 (description
4989 "@code{path.py} implements path objects as first-class entities, allowing
4990common operations on files to be invoked on those path objects directly.")
4991 (license license:expat)))
4992
4993(define-public python2-pathpy
4994 (package-with-python2 python-pathpy))
4995
0d34e01b
RW
4996(define-public python-pickleshare
4997 (package
4998 (name "python-pickleshare")
4999 (version "0.5")
5000 (source
5001 (origin
5002 (method url-fetch)
5003 (uri (string-append "https://pypi.python.org/packages/source/p/"
5004 "pickleshare/pickleshare-" version ".tar.gz"))
5005 (sha256
5006 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
5007 (build-system python-build-system)
5008 (propagated-inputs
5009 `(("python-pathpy" ,python-pathpy)))
5010 (home-page "https://github.com/vivainio/pickleshare")
5011 (synopsis "Tiny key value database with concurrency support")
5012 (description
5013 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
5014Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
5015shelve, many processes can access the database simultaneously. Changing a
5016value in database is immediately visible to other processes accessing the same
5017database. Concurrency is possible because the values are stored in separate
5018files. Hence the “database” is a directory where all files are governed by
5019PickleShare.")
5020 (license license:expat)))
5021
5022(define-public python2-pickleshare
5023 (package-with-python2 python-pickleshare))
5024
cd6e5189
RW
5025(define-public python-simplegeneric
5026 (package
5027 (name "python-simplegeneric")
5028 (version "0.8.1")
5029 (source
5030 (origin
5031 (method url-fetch)
5032 (uri (string-append "https://pypi.python.org/packages/source/s/"
5033 "simplegeneric/simplegeneric-" version ".zip"))
5034 (sha256
5035 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
5036 (build-system python-build-system)
5037 (native-inputs
f3b98f4f 5038 `(("unzip" ,unzip)))
cd6e5189
RW
5039 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
5040 (synopsis "Python module for simple generic functions")
5041 (description
5042 "The simplegeneric module lets you define simple single-dispatch generic
5043functions, akin to Python’s built-in generic functions like @code{len()},
5044@code{iter()} and so on. However, instead of using specially-named methods,
5045these generic functions use simple lookup tables, akin to those used by
5046e.g. @code{pickle.dump()} and other generic functions found in the Python
5047standard library.")
3f641af0 5048 (license license:zpl2.1)))
cd6e5189
RW
5049
5050(define-public python2-simplegeneric
5051 (package-with-python2 python-simplegeneric))
5052
ddc7d8ed 5053(define-public python-ipython-genutils
c4abbac3 5054 ;; TODO: This package is retired, check if can be removed, see description.
ddc7d8ed
RW
5055 (package
5056 (name "python-ipython-genutils")
5057 (version "0.1.0")
5058 (source
5059 (origin
5060 (method url-fetch)
5061 (uri (string-append "https://pypi.python.org/packages/source/i/"
5062 "ipython_genutils/ipython_genutils-"
5063 version ".tar.gz"))
5064 (sha256
5065 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
5066 (build-system python-build-system)
5067 (arguments `(#:tests? #f)) ; no tests
5068 (home-page "http://ipython.org")
5069 (synopsis "Vestigial utilities from IPython")
5070 (description
c4abbac3
HG
5071 "This package provides retired utilities from IPython. No packages
5072outside IPython/Jupyter should depend on it.
5073
5074This package shouldn't exist. It contains some common utilities shared by
5075Jupyter and IPython projects during The Big Split. As soon as possible, those
5076packages will remove their dependency on this, and this package will go
5077away.")
3f641af0 5078 (license license:bsd-3)))
ddc7d8ed
RW
5079
5080(define-public python2-ipython-genutils
5081 (package-with-python2 python-ipython-genutils))
5082
2b10eb48
RW
5083(define-public python-traitlets
5084 (package
5085 (name "python-traitlets")
a5ba1481 5086 (version "4.2.0")
2b10eb48
RW
5087 (source
5088 (origin
5089 (method url-fetch)
cc0c4fde 5090 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
5091 (sha256
5092 (base32
a5ba1481 5093 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
2b10eb48
RW
5094 (build-system python-build-system)
5095 (arguments
5096 `(#:phases
5097 (modify-phases %standard-phases
5098 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5099 (propagated-inputs
5100 `(("python-ipython-genutils" ,python-ipython-genutils)
5101 ("python-decorator" ,python-decorator)))
5102 (native-inputs
cc0c4fde
EF
5103 `(("python-mock" ,python-mock)
5104 ("python-nose" ,python-nose)))
2b10eb48
RW
5105 (home-page "http://ipython.org")
5106 (synopsis "Configuration system for Python applications")
5107 (description
5108 "Traitlets is a framework that lets Python classes have attributes with
5109type checking, dynamically calculated default values, and ‘on change’
5110callbacks. The package also includes a mechanism to use traitlets for
5111configuration, loading values from files or from command line arguments. This
5112is a distinct layer on top of traitlets, so you can use traitlets in your code
5113without using the configuration machinery.")
3f641af0 5114 (license license:bsd-3)))
2b10eb48
RW
5115
5116(define-public python2-traitlets
5117 (package-with-python2 python-traitlets))
5118
4263b06f
RW
5119(define-public python-jupyter-core
5120 (package
5121 (name "python-jupyter-core")
45cc957c 5122 (version "4.2.1")
4263b06f
RW
5123 (source
5124 (origin
5125 (method url-fetch)
5126 (uri (string-append (pypi-uri "jupyter_core" version)))
5127 (sha256
5128 (base32
45cc957c 5129 "1cy7inv218dgh4m1fbzbsiqpz733ylgjrj62jxqpfzs3r2cm7ic9"))))
4263b06f
RW
5130 (build-system python-build-system)
5131 ;; FIXME: not sure how to run the tests
5132 (arguments `(#:tests? #f))
5133 (propagated-inputs
5134 `(("python-traitlets" ,python-traitlets)))
5135 (home-page "http://jupyter.org/")
5136 (synopsis "Jupyter base package")
5137 (description
5138 "Jupyter core is the base package on which Jupyter projects rely.")
5139 (license license:bsd-3)))
5140
5141(define-public python2-jupyter-core
5142 (package-with-python2 python-jupyter-core))
5143
9ff01f2d
RW
5144(define-public python-jupyter-client
5145 (package
5146 (name "python-jupyter-client")
5147 (version "4.4.0")
5148 (source
5149 (origin
5150 (method url-fetch)
5151 (uri (pypi-uri "jupyter_client" version))
5152 (sha256
5153 (base32
5154 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
5155 (build-system python-build-system)
5156 ;; Tests fail because of missing native python kernel which I assume is
5157 ;; provided by the ipython package, which we cannot use because it would
5158 ;; cause a dependency cycle.
5159 (arguments `(#:tests? #f))
5160 (propagated-inputs
5161 `(("python-pyzmq" ,python-pyzmq)
5162 ("python-traitlets" ,python-traitlets)
5163 ("python-jupyter-core" ,python-jupyter-core)))
5164 (home-page "http://jupyter.org/")
5165 (synopsis "Jupyter protocol implementation and client libraries")
5166 (description
5167 "The @code{jupyter_client} package contains the reference implementation
5168of the Jupyter protocol. It also provides client and kernel management APIs
5169for working with kernels, and the @code{jupyter kernelspec} entrypoint for
5170installing @code{kernelspec}s for use with Jupyter frontends.")
5171 (license license:bsd-3)))
5172
5173(define-public python2-jupyter-client
5174 (package-with-python2 python-jupyter-client))
5175
ab526102
RW
5176(define-public python-ipykernel
5177 (package
5178 (name "python-ipykernel")
f165648e 5179 (version "4.5.2")
ab526102
RW
5180 (source
5181 (origin
5182 (method url-fetch)
5183 (uri (pypi-uri "ipykernel" version))
5184 (sha256
f165648e 5185 (base32 "0qllv0k6zzv1r1cj1x2ygxmlrrqhbslzj8rc6r6fg3kc1rgz4m2s"))))
ab526102
RW
5186 (build-system python-build-system)
5187 ;; The tests load a submodule of IPython. However, IPython itself depends
5188 ;; on ipykernel.
5189 (arguments `(#:tests? #f))
5190 (propagated-inputs
5191 ;; imported at runtime during connect
5192 `(("python-jupyter-client" ,python-jupyter-client)))
5193 (home-page "http://ipython.org")
5194 (synopsis "IPython Kernel for Jupyter")
5195 (description
5196 "This package provides the IPython kernel for Jupyter.")
5197 (license license:bsd-3)))
5198
5199(define-public python2-ipykernel
5200 (package-with-python2 python-ipykernel))
5201
5ff6effc
RW
5202(define-public python-testpath
5203 (package
5204 (name "python-testpath")
5205 (version "0.2")
5206 (source
5207 (origin
5208 (method url-fetch)
5209 (uri (string-append "https://github.com/jupyter/testpath/archive/"
5210 version ".tar.gz"))
5211 (file-name (string-append name "-" version ".tar.gz"))
5212 (sha256
5213 (base32
5214 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
5215 (build-system python-build-system)
5216 (arguments
5217 `(#:tests? #f ; this package does not even have a setup.py
b320f7bf
TD
5218 #:modules ((guix build python-build-system)
5219 (guix build utils)
5220 (srfi srfi-1))
5221 #:imported-modules (,@%python-build-system-modules
5222 (srfi srfi-1))
5ff6effc
RW
5223 #:phases
5224 (modify-phases %standard-phases
5225 (delete 'install)
5226 (replace 'build
b320f7bf
TD
5227 (lambda* (#:key inputs outputs #:allow-other-keys)
5228 (let* ((version (last
5229 (string-split (assoc-ref inputs "python") #\-)))
5230 (x.y (string-join (take (string-split version #\.) 2)
5231 "."))
5232 (dir (string-append
5233 (assoc-ref outputs "out")
5234 "/lib/python" x.y "/site-packages/testpath")))
5235 (mkdir-p dir)
5236 (copy-recursively "testpath" dir))
5237 #t)))))
5ff6effc
RW
5238 (home-page "https://github.com/takluyver/testpath")
5239 (synopsis "Test utilities for code working with files and commands")
5240 (description
5241 "Testpath is a collection of utilities for Python code working with files
5242and commands. It contains functions to check things on the filesystem, and
5243tools for mocking system commands and recording calls to those.")
5244 (license license:expat)))
5245
5246(define-public python2-testpath
5247 (package-with-python2 python-testpath))
5248
ae1ab9fe
FB
5249(define-public python-ipython
5250 (package
5251 (name "python-ipython")
fb25d348 5252 (version "5.2.2")
ae1ab9fe
FB
5253 (source
5254 (origin
fceac880 5255 (method url-fetch)
accd5f99 5256 (uri (pypi-uri "ipython" version ".tar.gz"))
fceac880 5257 (sha256
fb25d348 5258 (base32 "1qhjwa9cyz1np7rhv3p4ip13lkgbqsad62l24xkwiq1ic2gwiqbf"))))
ae1ab9fe
FB
5259 (build-system python-build-system)
5260 (outputs '("out" "doc"))
3a0b1b9a
FB
5261 (propagated-inputs
5262 `(("python-pyzmq" ,python-pyzmq)
fb25d348 5263 ("python-prompt-toolkit" ,python-prompt-toolkit)
accd5f99 5264 ("python-terminado" ,python-terminado)
ae1ab9fe 5265 ("python-matplotlib" ,python-matplotlib)
5d26e542 5266 ("python-numpy" ,python-numpy)
ae1ab9fe 5267 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
5268 ("python-jinja2" ,python-jinja2)
5269 ("python-mistune" ,python-mistune)
accd5f99
RW
5270 ("python-pexpect" ,python-pexpect)
5271 ("python-pickleshare" ,python-pickleshare)
5272 ("python-simplegeneric" ,python-simplegeneric)
3a0b1b9a 5273 ("python-jsonschema" ,python-jsonschema)
accd5f99
RW
5274 ("python-traitlets" ,python-traitlets)
5275 ("python-ipykernel" ,python-ipykernel)
fb25d348 5276 ("python-nbformat" ,python-nbformat)
accd5f99
RW
5277 ("python-pygments" ,python-pygments)))
5278 (inputs
5279 `(("readline" ,readline)
5280 ("which" ,which)))
ae1ab9fe 5281 (native-inputs
fb25d348
TD
5282 `(("graphviz" ,graphviz)
5283 ("pkg-config" ,pkg-config)
accd5f99
RW
5284 ("python-requests" ,python-requests) ;; for tests
5285 ("python-testpath" ,python-testpath)
5286 ("python-nose" ,python-nose)
ae1ab9fe 5287 ("python-sphinx" ,python-sphinx)
fb25d348 5288 ("python-shpinx-rtd-theme" ,python-sphinx-rtd-theme)
ae1ab9fe 5289 ("texlive" ,texlive)
f3b98f4f 5290 ("texinfo" ,texinfo)))
ae1ab9fe 5291 (arguments
89b5c60e 5292 `(#:phases
3a0b1b9a
FB
5293 (modify-phases %standard-phases
5294 (add-after
5295 'install 'install-doc
5296 (lambda* (#:key inputs outputs #:allow-other-keys)
5297 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5298 (doc (string-append data "/doc/" ,name "-" ,version))
5299 (html (string-append doc "/html"))
5300 (man1 (string-append data "/man/man1"))
5301 (info (string-append data "/info"))
fb25d348
TD
5302 (examples (string-append doc "/examples"))
5303 (python-arg (string-append "PYTHON=" (which "python"))))
afd3d931 5304 (setenv "LANG" "en_US.utf8")
eee5cd04
HG
5305 ;; Make installed package available for running the tests
5306 (add-installed-pythonpath inputs outputs)
3a0b1b9a 5307 (with-directory-excursion "docs"
accd5f99
RW
5308 ;; FIXME: pdf fails to build
5309 ;;(system* "make" "pdf" "PAPER=a4")
fb25d348
TD
5310 (system* "make" python-arg "html")
5311 (system* "make" python-arg "info"))
3a0b1b9a
FB
5312 (copy-recursively "docs/man" man1)
5313 (copy-recursively "examples" examples)
accd5f99 5314 (copy-recursively "docs/build/html" html)
3a0b1b9a
FB
5315 ;; (copy-file "docs/build/latex/ipython.pdf"
5316 ;; (string-append doc "/ipython.pdf"))
5317 (mkdir-p info)
5318 (copy-file "docs/build/texinfo/ipython.info"
5319 (string-append info "/ipython.info"))
5320 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
5321 ;; Tests can only be run after the library has been installed and not
5322 ;; within the source directory.
5323 (delete 'check)
5324 (add-after
5325 'install 'check
eee5cd04 5326 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3a0b1b9a
FB
5327 (if tests?
5328 (with-directory-excursion "/tmp"
eee5cd04
HG
5329 ;; Make installed package available for running the tests
5330 (add-installed-pythonpath inputs outputs)
3a0b1b9a
FB
5331 (setenv "HOME" "/tmp/") ;; required by a test
5332 (zero? (system* (string-append (assoc-ref outputs "out")
5333 "/bin/iptest"))))
5334 #t)))
5335 (add-before
5336 'install 'fix-tests
5337 (lambda* (#:key inputs #:allow-other-keys)
5338 (substitute* "./IPython/utils/_process_posix.py"
5339 (("/usr/bin/env', 'which") (which "which")))
5340 (substitute* "./IPython/core/tests/test_inputtransformer.py"
5341 (("#!/usr/bin/env python")
5342 (string-append "#!" (which "python"))))
5343 ;; Disable 1 failing test
5344 (substitute* "./IPython/core/tests/test_magic.py"
5345 (("def test_dirops\\(\\):" all)
5346 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
5347 (home-page "http://ipython.org")
5348 (synopsis "IPython is a tool for interactive computing in Python")
5349 (description
5350 "IPython provides a rich architecture for interactive computing with:
5351Powerful interactive shells, a browser-based notebook, support for interactive
5352data visualization, embeddable interpreters and tools for parallel
5353computing.")
135ba811
EF
5354 (license license:bsd-3)
5355 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
5356
5357(define-public python2-ipython
135ba811 5358 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
5359 (package
5360 (inherit ipython)
3a0b1b9a 5361 ;; FIXME: add pyreadline once available.
fb25d348
TD
5362 (propagated-inputs
5363 `(("python2-backports-shutil-get-terminal-size"
5364 ,python2-backports-shutil-get-terminal-size)
5365 ("python2-pathlib2" ,python2-pathlib2)
5366 ,@(package-propagated-inputs ipython)))
e62600fe 5367 (native-inputs
135ba811 5368 `(("python2-mock" ,python2-mock)
77a6932a 5369 ,@(package-native-inputs ipython))))))
03411993
AE
5370
5371(define-public python-isodate
5372 (package
5373 (name "python-isodate")
b6785c2e 5374 (version "0.5.4")
03411993
AE
5375 (source
5376 (origin
5377 (method url-fetch)
b6785c2e 5378 (uri (pypi-uri "isodate" version))
03411993
AE
5379 (sha256
5380 (base32
b6785c2e 5381 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993 5382 (build-system python-build-system)
03411993
AE
5383 (home-page
5384 "http://cheeseshop.python.org/pypi/isodate")
5385 (synopsis
5386 "Python date parser and formatter")
5387 (description
5388 "Python-isodate is a python module for parsing and formatting
5389ISO 8601 dates, time and duration.")
3f641af0 5390 (license license:bsd-3)))
03411993
AE
5391
5392(define-public python2-isodate
5393 (package-with-python2 python-isodate))
673ab897
AE
5394
5395(define-public python-html5lib
5396 (package
5397 (name "python-html5lib")
a14061aa 5398 (version "1.0b10")
673ab897
AE
5399 (source
5400 (origin
5401 (method url-fetch)
fee04c19 5402 (uri (pypi-uri "html5lib" version))
673ab897
AE
5403 (sha256
5404 (base32
a14061aa 5405 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
673ab897 5406 (build-system python-build-system)
3dd75476 5407 (propagated-inputs
4eb6ed28
MB
5408 `(("python-six" ,python-six)
5409 ("python-webencodings" ,python-webencodings)))
673ab897
AE
5410 (arguments
5411 `(#:test-target "check"))
5412 (home-page
5413 "https://github.com/html5lib/html5lib-python")
5414 (synopsis
5415 "Python HTML parser based on the WHATWG HTML specifcation")
5416 (description
5417 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
5418and written in Python.")
bd3fa666 5419 (license license:expat)))
673ab897
AE
5420
5421(define-public python2-html5lib
5422 (package-with-python2 python-html5lib))
e99f4211 5423
8ee62c97
RW
5424;; Needed for python-bleach, a dependency of python-notebook
5425(define-public python-html5lib-0.9
5426 (package
5427 (inherit python-html5lib)
5428 (version "0.999")
5429 (source
5430 (origin
5431 (method url-fetch)
5432 (uri (pypi-uri "html5lib" version))
5433 (sha256
5434 (base32
5435 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
5436
5437(define-public python2-html5lib-0.9
5438 (package-with-python2 python-html5lib-0.9))
5439
adbca19e
MB
5440(define-public python-webencodings
5441 (package
5442 (name "python-webencodings")
5443 (version "0.5")
5444 (source (origin
5445 (method url-fetch)
5446 (uri (pypi-uri "webencodings" version))
5447 (sha256
5448 (base32
5449 "015rw7662lkpb9aqiqah2hbizk6w531badqwjpz41rr47glmxid5"))))
5450 (build-system python-build-system)
5451 (arguments
5452 '(#:phases
5453 (modify-phases %standard-phases
5454 (replace 'check
5455 (lambda _
5456 (zero? (system* "py.test" "-v" "webencodings/tests.py")))))))
5457 (native-inputs
5458 `(("python-pytest" ,python-pytest)))
5459 (home-page "https://github.com/SimonSapin/python-webencodings")
5460 (synopsis "Character encoding aliases for legacy web content")
5461 (description
5462 "In order to be compatible with legacy web content when interpreting
5463something like @code{Content-Type: text/html; charset=latin1}, tools need
5464to use a particular set of aliases for encoding labels as well as some
5465overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
5466the web are actually aliases for @code{windows-1252}, and an @code{UTF-8}
5467or @code{UTF-16} BOM takes precedence over any other encoding declaration.
5468The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
5469defines all such details so that implementations do not have to
5470reverse-engineer each other.
5471
5472This module implements the Encoding standard and has encoding labels and
5473BOM detection, but the actual implementation for encoders and decoders
5474is Python’s.")
5475 (license license:bsd-3)))
5476
5477(define-public python2-webencodings
5478 (package-with-python2 python-webencodings))
5479
e99f4211
MW
5480(define-public python-urwid
5481 (package
5482 (name "python-urwid")
51ff41f6 5483 (version "1.3.1")
e99f4211
MW
5484 (source
5485 (origin
5486 (method url-fetch)
b97c1bfd 5487 (uri (pypi-uri "urwid" version))
e99f4211
MW
5488 (sha256
5489 (base32
51ff41f6 5490 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 5491 (build-system python-build-system)
b97c1bfd
LF
5492 (arguments
5493 `(#:phases
5494 (modify-phases %standard-phases
5495 ;; Disable failing test. Bug filed upstream:
5496 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 5497 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
5498 (add-after 'unpack 'disable-failing-test
5499 (lambda _
5500 (substitute* "urwid/tests/test_event_loops.py"
5501 (("test_remove_watch_file")
5502 "disable_remove_watch_file")))))))
e99f4211
MW
5503 (home-page "http://urwid.org")
5504 (synopsis "Console user interface library for Python")
5505 (description
5506 "Urwid is a curses-based UI/widget library for Python. It includes many
5507features useful for text console applications.")
3f641af0 5508 (license license:lgpl2.1+)))
e99f4211
MW
5509
5510(define-public python2-urwid
5511 (package-with-python2 python-urwid))
d95a56c6 5512
5220022a
JL
5513(define-public python-openid
5514 (package
5515 (name "python-openid")
5516 (version "3.0.10")
5517 (source
5518 (origin
5519 (method url-fetch)
5520 (uri (pypi-uri "python3-openid" version))
5521 (sha256
5522 (base32
5523 "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
5524 (build-system python-build-system)
5525 (home-page "https://github.com/necaris/python3-openid")
5526 (synopsis "OpenID support for servers and consumers")
5527 (description "This library provides OpenID authentication for Python, both
5528for clients and servers.")
5529 (license license:asl2.0)))
5530
3ef00f56 5531(define-public python2-openid
5532 (package
5533 (name "python2-openid")
5534 (version "2.2.5")
5535 (source
5536 (origin
5537 (method url-fetch)
5538 (uri (pypi-uri "python-openid" version))
5539 (sha256
5540 (base32
5541 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
5542 (build-system python-build-system)
5543 (arguments
5544 ;; Python 3 support is in `python3-openid`, a separate package.
5545 `(#:python ,python-2))
5546 (home-page "https://github.com/openid/python-openid")
5547 (synopsis "OpenID support for servers and consumers")
5548 (description "This library provides OpenID authentication for Python, both
5549for clients and servers.")
5550 (license license:asl2.0)))
5551
47d0b292
TS
5552(define-public python-urwidtrees
5553 (package
5554 (name "python-urwidtrees")
37ec4623 5555 (version "1.0.2")
47d0b292
TS
5556 (source
5557 (origin
5558 (method url-fetch)
37ec4623
TS
5559 ;; package author intends on distributing via github rather than pypi:
5560 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
5561 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
5562 version ".tar.gz"))
5563 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
5564 (sha256
5565 (base32
37ec4623 5566 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
5567 (build-system python-build-system)
5568 (arguments
5569 '(#:tests? #f)) ; no tests
f22efa01 5570 (propagated-inputs `(("python-urwid" ,python-urwid)))
47d0b292
TS
5571 (home-page "https://github.com/pazz/urwidtrees")
5572 (synopsis "Tree widgets for urwid")
5573 (description "Urwidtrees is a Widget Container API for the @code{urwid}
5574toolkit. Use it to build trees of widgets.")
3f641af0 5575 (license license:gpl3+)))
47d0b292
TS
5576
5577(define-public python2-urwidtrees
5578 (package-with-python2 python-urwidtrees))
5579
d95a56c6
PAR
5580(define-public python-dbus
5581 (package
5582 (name "python-dbus")
5583 (version "1.2.0")
5584 (source
5585 (origin
5586 (method url-fetch)
5587 (uri (string-append
5cc3096c 5588 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
5589 version ".tar.gz"))
5590 (sha256
5591 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
5592 (build-system gnu-build-system)
6717c879
SB
5593 (arguments
5594 '(#:phases
5595 (modify-phases %standard-phases
5596 (add-before
5597 'check 'pre-check
5598 (lambda _
5599 ;; XXX: For the missing '/etc/machine-id'.
5600 (substitute* "test/run-test.sh"
5601 (("DBUS_FATAL_WARNINGS=1")
5602 "DBUS_FATAL_WARNINGS=0"))
5603 #t)))))
d95a56c6
PAR
5604 (native-inputs
5605 `(("pkg-config" ,pkg-config)))
5606 (inputs
5607 `(("python" ,python)
2e88d113 5608 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
5609 (synopsis "Python bindings for D-bus")
5610 (description "python-dbus provides bindings for libdbus, the reference
5611implementation of D-Bus.")
5612 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 5613 (license license:expat)))
b52af02b
MW
5614
5615(define-public python2-dbus
5616 (package (inherit python-dbus)
5617 (name "python2-dbus")
5618 (inputs `(("python" ,python-2)
5619 ,@(alist-delete "python"
5620 (package-inputs python-dbus)
5621 equal?)))
5622 ;; FIXME: on Python 2, the test_utf8 fails with:
5623 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
5624 (arguments `(#:tests? #f))))
a6ac8332
AE
5625
5626(define-public python-apsw
5627 (package
5628 (name "python-apsw")
917708c2 5629 (version "3.9.2-r1")
a6ac8332
AE
5630 (source
5631 (origin
5632 (method url-fetch)
917708c2 5633 (uri (pypi-uri "apsw" version))
a6ac8332
AE
5634 (sha256
5635 (base32
917708c2 5636 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
5637 (build-system python-build-system)
5638 (inputs
f3b98f4f 5639 `(("sqlite" ,sqlite)))
a6ac8332
AE
5640 (arguments
5641 `(#:phases
154d207c
MB
5642 (modify-phases %standard-phases
5643 (delete 'check)
5644 (add-after 'install 'check
5645 (lambda* (#:key inputs outputs #:allow-other-keys)
5646 (add-installed-pythonpath inputs outputs)
5647 (zero? (system* "python" "setup.py" "test")))))))
a6ac8332
AE
5648 (home-page "https://github.com/rogerbinns/apsw/")
5649 (synopsis "Another Python SQLite Wrapper")
5650 (description "APSW is a Python wrapper for the SQLite
5651embedded relational database engine. In contrast to other wrappers such as
5652pysqlite it focuses on being a minimal layer over SQLite attempting just to
5653translate the complete SQLite API into Python.")
abde5f37 5654 (license license:zlib)))
a6ac8332
AE
5655
5656(define-public python2-apsw
5657 (package-with-python2 python-apsw))
26b307e2
AE
5658
5659(define-public python-lxml
5660 (package
5661 (name "python-lxml")
d58a3203 5662 (version "3.6.0")
26b307e2
AE
5663 (source
5664 (origin
5665 (method url-fetch)
97bbc480 5666 (uri (pypi-uri "lxml" version))
26b307e2 5667 (sha256
d58a3203
EF
5668 (base32
5669 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
5670 (build-system python-build-system)
5671 (inputs
5672 `(("libxml2" ,libxml2)
f3b98f4f 5673 ("libxslt" ,libxslt)))
26b307e2
AE
5674 (home-page "http://lxml.de/")
5675 (synopsis
5676 "Python XML processing library")
5677 (description
5678 "The lxml XML toolkit is a Pythonic binding for the C libraries
5679libxml2 and libxslt.")
3f641af0 5680 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
5681
5682(define-public python2-lxml
5683 (package-with-python2 python-lxml))
4ed20663 5684
b32a1e47
CAW
5685;; beautifulsoup4 has a totally different namespace than 3.x,
5686;; and pypi seems to put it under its own name, so I guess we should too
5687(define-public python-beautifulsoup4
5688 (package
5689 (name "python-beautifulsoup4")
80e8d851 5690 (version "4.5.3")
b32a1e47
CAW
5691 (source
5692 (origin
5693 (method url-fetch)
5694 (uri (pypi-uri "beautifulsoup4" version))
5695 (sha256
5696 (base32
80e8d851 5697 "0glaw1vyxnbp03fni7h5496n6iib0n5iim4gax1n0ngscs9s075j"))))
b32a1e47 5698 (build-system python-build-system)
5f37f0b6
LF
5699 (arguments
5700 `(#:phases
5701 (modify-phases %standard-phases
5702 ;; The Python 2 source is the definitive source of beautifulsoup4. We
5703 ;; must use this conversion script when building with Python 3. The
5704 ;; conversion script also runs the tests.
5705 ;; For more information, see the file 'convert-py3k' in the source
5706 ;; distribution.
5707 (replace 'check
5708 (lambda _ (zero? (system* "./convert-py3k")))))))
b32a1e47
CAW
5709 (home-page
5710 "http://www.crummy.com/software/BeautifulSoup/bs4/")
5711 (synopsis
5712 "Python screen-scraping library")
5713 (description
5714 "Beautiful Soup is a Python library designed for rapidly setting up
5715screen-scraping projects. It offers Pythonic idioms for navigating,
5716searching, and modifying a parse tree, providing a toolkit for
5717dissecting a document and extracting what you need. It automatically
5718converts incoming documents to Unicode and outgoing documents to UTF-8.")
ee94ca11
MB
5719 (license license:expat)
5720 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
b32a1e47
CAW
5721
5722(define-public python2-beautifulsoup4
5723 (package
5724 (inherit (package-with-python2
5725 (strip-python2-variant python-beautifulsoup4)))
5f37f0b6 5726 (arguments `(#:python ,python-2))))
b32a1e47 5727
4dcb135e 5728(define-public python-cssutils
092e86f5 5729 (package
4dcb135e 5730 (name "python-cssutils")
58d1d816 5731 (version "1.0.1")
092e86f5
AE
5732 (source
5733 (origin
5734 (method url-fetch)
58d1d816 5735 (uri (pypi-uri "cssutils" version))
092e86f5 5736 (sha256
58d1d816
EF
5737 (base32
5738 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
5739 (build-system python-build-system)
5740 (native-inputs
4dcb135e 5741 `(("unzip" ,unzip))) ; for unpacking the source
092e86f5 5742 (arguments
4dcb135e 5743 `(#:tests? #f)) ;tests require python-pbr < 1.7.0
092e86f5
AE
5744 (home-page "http://cthedot.de/cssutils/")
5745 (synopsis
5746 "CSS Cascading Style Sheets library for Python")
5747 (description
5748 "Cssutils is a Python package for parsing and building CSS
5749Cascading Style Sheets. Currently it provides a DOM only and no rendering
5750options.")
3f641af0 5751 (license license:lgpl3+)))
880ff77c 5752
4dcb135e
EB
5753(define-public python2-cssutils
5754 (package-with-python2 python-cssutils))
5755
880ff77c
AE
5756(define-public python-cssselect
5757 (package
5758 (name "python-cssselect")
d5ccd9ab 5759 (version "0.9.2")
880ff77c
AE
5760 (source
5761 (origin
5762 (method url-fetch)
d5ccd9ab 5763 (uri (pypi-uri "cssselect" version))
880ff77c 5764 (sha256
d5ccd9ab
EF
5765 (base32
5766 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c 5767 (build-system python-build-system)
880ff77c
AE
5768 (arguments
5769 ;; tests fail with message
5770 ;; AttributeError: 'module' object has no attribute 'tests'
5771 `(#:tests? #f))
5772 (home-page
5773 "https://pythonhosted.org/cssselect/")
5774 (synopsis
5775 "CSS3 selector parser and translator to XPath 1.0")
5776 (description
5777 "Cssselect ia a Python module that parses CSS3 Selectors and translates
5778them to XPath 1.0 expressions. Such expressions can be used in lxml or
5779another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 5780 (license license:bsd-3)))
880ff77c
AE
5781
5782(define-public python2-cssselect
5783 (package-with-python2 python-cssselect))
60357f99 5784
03702173 5785(define-public python-openid-cla
5786 (package
5787 (name "python-openid-cla")
5788 (version "1.2")
5789 (source
5790 (origin
5791 (method url-fetch)
5792 (uri (pypi-uri "python-openid-cla" version))
5793 (sha256
5794 (base32
5795 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
5796 (build-system python-build-system)
019ccdb6 5797 (arguments '(#:tests? #f)) ; No tests.
03702173 5798 (home-page "https://github.com/puiterwijk/python-openid-cla/")
5799 (synopsis "Implementation of the OpenID CLA extension for python-openid")
5800 (description "@code{openid-cla} is an implementation of the OpenID
5801contributor license agreement extension for python-openid.")
5802 (license license:bsd-3)))
5803
5804(define-public python2-openid-cla
5805 (package-with-python2 python-openid-cla))
5806
a0e41de4 5807(define-public python-openid-teams
5808 (package
5809 (name "python-openid-teams")
5810 (version "1.1")
5811 (source
5812 (origin
5813 (method url-fetch)
5814 (uri (pypi-uri "python-openid-teams" version))
5815 (sha256
5816 (base32
5817 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
5818 (build-system python-build-system)
ac72d3d2 5819 (arguments '(#:tests? #f)) ; No tests.
a0e41de4 5820 (home-page "https://github.com/puiterwijk/python-openid-teams/")
5821 (synopsis "Implementation of the OpenID teams extension for python-openid")
5822 (description
5823 "@code{openid-teams} is an implementation of the OpenID
5824teams extension for python-openid.")
5825 (license license:bsd-3)))
5826
5827(define-public python2-openid-teams
5828 (package-with-python2 python-openid-teams))
5829
60357f99
AE
5830(define-public python-netifaces
5831 (package
5832 (name "python-netifaces")
5833 (version "0.10.4")
5834 (source
5835 (origin
5836 (method url-fetch)
5837 (uri (string-append
5838 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
5839 version
5840 ".tar.gz"))
5841 (sha256
5842 (base32
5843 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
5844 (build-system python-build-system)
60357f99
AE
5845 (home-page
5846 "https://bitbucket.org/al45tair/netifaces")
5847 (synopsis
5848 "Python module for portable network interface information")
5849 (description
5850 "Netifaces is a Python module providing information on network
5851interfaces in an easy and portable manner.")
5852 (license license:expat)))
5853
5854(define-public python2-netifaces
5855 (package-with-python2 python-netifaces))
92cb152b 5856
32f77c04
RW
5857(define-public python-networkx
5858 (package
5859 (name "python-networkx")
a4d9609c 5860 (version "1.11")
32f77c04
RW
5861 (source
5862 (origin
5863 (method url-fetch)
a4d9609c 5864 (uri (pypi-uri "networkx" version))
32f77c04 5865 (sha256
a4d9609c 5866 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
5867 (build-system python-build-system)
5868 ;; python-decorator is needed at runtime
5869 (propagated-inputs
5870 `(("python-decorator" ,python-decorator)))
5871 (native-inputs
f3b98f4f 5872 `(("python-nose" ,python-nose)))
32f77c04
RW
5873 (home-page "http://networkx.github.io/")
5874 (synopsis "Python module for creating and manipulating graphs and networks")
5875 (description
5876 "NetworkX is a Python package for the creation, manipulation, and study
5877of the structure, dynamics, and functions of complex networks.")
3f641af0 5878 (license license:bsd-3)))
32f77c04
RW
5879
5880(define-public python2-networkx
5881 (package-with-python2 python-networkx))
5882
92cb152b
RW
5883(define-public snakemake
5884 (package
5885 (name "snakemake")
ef71ed8f 5886 (version "3.11.2")
92cb152b
RW
5887 (source
5888 (origin
5889 (method url-fetch)
7b93d866 5890 (uri (pypi-uri "snakemake" version))
92cb152b 5891 (sha256
ef71ed8f 5892 (base32 "0qcp7y9csvanyzh08jppryhd5di8r1z7p0d4wkfg5591pj3bb8zp"))))
92cb152b 5893 (build-system python-build-system)
7b93d866
MB
5894 (arguments
5895 ;; TODO: Package missing test dependencies.
5896 '(#:tests? #f))
4f9998c6
RW
5897 (propagated-inputs
5898 `(("python-wrapt" ,python-wrapt)
5899 ("python-requests" ,python-requests)))
7b93d866 5900 (home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home")
92cb152b
RW
5901 (synopsis "Python-based execution environment for make-like workflows")
5902 (description
5903 "Snakemake aims to reduce the complexity of creating workflows by
5904providing a clean and modern domain specific specification language (DSL) in
5905Python style, together with a fast and comfortable execution environment.")
5906 (license license:expat)))
a1920bc9 5907
35de1fbd
RW
5908(define-public python-seaborn
5909 (package
5910 (name "python-seaborn")
ccc18762 5911 (version "0.7.1")
35de1fbd
RW
5912 (source
5913 (origin
5914 (method url-fetch)
fc899d4f 5915 (uri (pypi-uri "seaborn" version))
35de1fbd 5916 (sha256
ccc18762 5917 (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
35de1fbd 5918 (build-system python-build-system)
6f976df6
MB
5919 (arguments
5920 '(#:tests? #f)) ; Tests requires a running X11 server.
35de1fbd
RW
5921 (propagated-inputs
5922 `(("python-pandas" ,python-pandas)
5923 ("python-matplotlib" ,python-matplotlib)
5924 ("python-scipy" ,python-scipy)))
35de1fbd
RW
5925 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
5926 (synopsis "Statistical data visualization")
5927 (description
5928 "Seaborn is a library for making attractive and informative statistical
5929graphics in Python. It is built on top of matplotlib and tightly integrated
5930with the PyData stack, including support for numpy and pandas data structures
5931and statistical routines from scipy and statsmodels.")
3f641af0 5932 (license license:bsd-3)
fc899d4f 5933 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
5934
5935(define-public python2-seaborn
fc899d4f
EF
5936 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
5937 (package
5938 (inherit base)
5939 (propagated-inputs `(("python2-pytz" ,python2-pytz)
00e10c6e 5940 ,@(package-propagated-inputs base))))))
35de1fbd 5941
58a35665
MB
5942(define-public python-mpmath
5943 (package
5944 (name "python-mpmath")
5945 (version "0.19")
5946 (source (origin
5947 (method url-fetch)
5948 (uri (string-append "http://mpmath.org/files/mpmath-"
5949 version ".tar.gz"))
5950 (sha256
5951 (base32
5952 "08ijsr4ifrqv3cjc26mkw0dbvyygsa99in376hr4b96ddm1gdpb8"))))
5953 (build-system python-build-system)
5954 (arguments
5955 '(#:phases
5956 (modify-phases %standard-phases
5957 (replace 'check
5958 (lambda _
5959 (zero?
5960 (system* "python" "mpmath/tests/runtests.py" "-local")))))))
5961 (home-page "http://mpmath.org")
5962 (synopsis "Arbitrary-precision floating-point arithmetic in python")
5963 (description
5964 "@code{mpmath} can be used as an arbitrary-precision substitute for
5965Python's float/complex types and math/cmath modules, but also does much
5966more advanced mathematics.")
5967 (license license:bsd-3)))
5968
5969(define-public python2-mpmath
5970 (package-with-python2 python-mpmath))
35de1fbd 5971
90fc547f
RW
5972(define-public python-sympy
5973 (package
5974 (name "python-sympy")
52f622ef 5975 (version "1.0")
90fc547f
RW
5976 (source
5977 (origin
5978 (method url-fetch)
5979 (uri (string-append
5980 "https://github.com/sympy/sympy/releases/download/sympy-"
5981 version "/sympy-" version ".tar.gz"))
5982 (sha256
52f622ef 5983 (base32 "1bpzjwr9hrr7w88v4vgnj9lr6vxcldc94si13n8xpr1rv08d5b1y"))))
90fc547f 5984 (build-system python-build-system)
52f622ef
MB
5985 (propagated-inputs
5986 `(("python-mpmath" ,python-mpmath)))
90fc547f
RW
5987 (home-page "http://www.sympy.org/")
5988 (synopsis "Python library for symbolic mathematics")
5989 (description
5990 "SymPy is a Python library for symbolic mathematics. It aims to become a
5991full-featured computer algebra system (CAS) while keeping the code as simple
5992as possible in order to be comprehensible and easily extensible.")
3f641af0 5993 (license license:bsd-3)))
90fc547f
RW
5994
5995(define-public python2-sympy
5996 (package-with-python2 python-sympy))
5997
e8c9b010
SR
5998(define-public python-q
5999 (package
6000 (name "python-q")
6001 (version "2.6")
6002 (source
6003 (origin
6004 (method url-fetch)
6005 (uri (pypi-uri "q" version))
6006 (sha256
6007 (base32
6008 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
6009 (build-system python-build-system)
6010 (home-page "https://github.com/zestyping/q")
6011 (synopsis "Quick-and-dirty debugging output for tired programmers")
6012 (description
6013 "q is a Python module for \"print\" style of debugging Python code. It
6014provides convenient short API for print out of values, tracebacks, and
6015falling into the Python interpreter.")
f210e944 6016 (license license:asl2.0)))
e8c9b010
SR
6017
6018(define-public python2-q
f210e944 6019 (package-with-python2 python-q))
e8c9b010 6020
a1920bc9
FB
6021(define-public python-testlib
6022 (package
6023 (name "python-testlib")
6024 (version "0.6.5")
6025 (source
6026 (origin
6027 (method url-fetch)
6028 (uri (string-append
6029 "https://pypi.python.org/packages/source/t/testlib/testlib-"
6030 version ".zip"))
6031 (sha256
6032 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
6033 (build-system python-build-system)
a1920bc9 6034 (native-inputs
632735f2 6035 `(("unzip" ,unzip))) ; for unpacking the source
a1920bc9
FB
6036 (synopsis "Python micro test suite harness")
6037 (description "A micro unittest suite harness for Python.")
6038 (home-page "https://github.com/trentm/testlib")
1cb9c006 6039 (license license:expat)))
a1920bc9
FB
6040
6041(define-public python2-testlib
6042 (package-with-python2 python-testlib))
db62afa5
LC
6043
6044(define-public python2-xlib
6045 (package
6046 (name "python2-xlib")
6047 (version "0.14")
6048 (source (origin
6049 (method url-fetch)
de67e922
LF
6050 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
6051 "/" version "/"
db62afa5
LC
6052 "python-xlib-" version ".tar.gz"))
6053 (sha256
6054 (base32
6055 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
6056 (build-system python-build-system)
6057 (arguments
6058 `(#:python ,python-2 ;Python 2 only
6059 #:tests? #f)) ;no tests
db62afa5
LC
6060 (home-page "http://python-xlib.sourceforge.net/")
6061 (synopsis "Python X11 client library")
6062 (description
6063 "The Python X Library is intended to be a fully functional X client
6064library for Python programs. It is useful to implement low-level X clients.
6065It is written entirely in Python.")
3f641af0 6066 (license license:gpl2+)))
0234ca06
DT
6067
6068(define-public python-singledispatch
6069 (package
6070 (name "python-singledispatch")
6071 (version "3.4.0.3")
6072 (source
6073 (origin
6074 (method url-fetch)
bdb67d84 6075 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
6076 (sha256
6077 (base32
6078 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
6079 (build-system python-build-system)
5e1c9d24
HG
6080 (native-inputs
6081 `(("python-six" ,python-six))) ; required for conversion, not at run-time
0234ca06
DT
6082 (home-page
6083 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
6084 (synopsis "Backport of singledispatch feature from Python 3.4")
6085 (description
6086 "This library brings functools.singledispatch from Python 3.4 to Python
60872.6-3.3.")
6088 (license license:expat)))
6089
6090(define-public python2-singledispatch
6091 (package-with-python2 python-singledispatch))
feaae484 6092
310d218f
RW
6093(define-public python-tornado
6094 (package
6095 (name "python-tornado")
a724924b 6096 (version "4.3")
310d218f
RW
6097 (source
6098 (origin
6099 (method url-fetch)
a724924b 6100 (uri (pypi-uri "tornado" version))
310d218f 6101 (sha256
a724924b 6102 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f 6103 (build-system python-build-system)
3fe2c209
MB
6104 (arguments
6105 '(;; FIXME: Two tests error out with:
6106 ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
6107 ;; #:phases
6108 ;; (modify-phases %standard-phases
6109 ;; (replace 'check
6110 ;; (lambda _
6111 ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
6112 ;; ;; "tornado/platform/kqueue.py". This is the supported method:
6113 ;; (zero? (system* "python" "-m" "tornado.test")))))
6114 #:tests? #f))
310d218f 6115 (native-inputs
b455439b 6116 `(("python-certifi" ,python-certifi)))
f22efa01 6117 (propagated-inputs
b455439b 6118 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 6119 (home-page "http://www.tornadoweb.org/")
310d218f
RW
6120 (synopsis "Python web framework and asynchronous networking library")
6121 (description
6122 "Tornado is a Python web framework and asynchronous networking library,
6123originally developed at FriendFeed. By using non-blocking network I/O,
6124Tornado can scale to tens of thousands of open connections, making it ideal
6125for long polling, WebSockets, and other applications that require a long-lived
6126connection to each user.")
3f641af0 6127 (license license:asl2.0)
b455439b 6128 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
6129
6130(define-public python2-tornado
b455439b 6131 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f 6132 (package (inherit tornado)
f22efa01 6133 (propagated-inputs
310d218f
RW
6134 `(("python2-backport-ssl-match-hostname"
6135 ,python2-backport-ssl-match-hostname)
b455439b 6136 ("python2-singledispatch" ,python2-singledispatch)
f22efa01 6137 ,@(package-propagated-inputs tornado))))))
310d218f 6138
6b59fc10
EF
6139;; the python- version can be removed with python-3.5
6140(define-public python-backports-abc
6141 (package
6142 (name "python-backports-abc")
27f9148e 6143 (version "0.5")
6b59fc10
EF
6144 (source
6145 (origin
6146 (method url-fetch)
6147 (uri (pypi-uri "backports_abc" version))
6148 (sha256
6149 (base32
27f9148e 6150 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
6b59fc10 6151 (build-system python-build-system)
6b59fc10 6152 (home-page "https://github.com/cython/backports_abc")
66e07664 6153 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
6154 (description
6155 "Python-backports-abc provides a backport of additions to the
6156'collections.abc' module in Python-3.5.")
3f641af0 6157 (license license:psfl)))
6b59fc10
EF
6158
6159(define-public python2-backports-abc
6160 (package-with-python2 python-backports-abc))
6161
ec074213
TD
6162(define-public python2-backports-shutil-get-terminal-size
6163 (package
6164 (name "python2-backports-shutil-get-terminal-size")
6165 (version "1.0.0")
6166 (source
6167 (origin
6168 (method url-fetch)
6169 (uri (pypi-uri "backports.shutil_get_terminal_size" version))
6170 (sha256
6171 (base32
6172 "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki"))))
6173 (build-system python-build-system)
6174 (arguments
c0446791
MB
6175 `(#:python ,python-2
6176 #:phases
6177 (modify-phases %standard-phases
6178 (replace 'check
6179 (lambda _
6180 (zero? (system* "py.test" "-v")))))))
6181 (native-inputs
6182 `(("python2-pytest" ,python2-pytest)))
ec074213
TD
6183 (home-page "https://github.com/chrippa/backports.shutil_get_terminal_size")
6184 (synopsis "Backport of Python 3.3's @code{shutil.get_terminal_size}")
6185 (description
6186 "This package provides a backport of the @code{get_terminal_size
6187function} from Python 3.3's @code{shutil}.
6188Unlike the original version it is written in pure Python rather than C,
6189so it might be a tiny bit slower.")
6190 (license license:expat)))
6191
feaae484
SB
6192(define-public python-waf
6193 (package
6194 (name "python-waf")
27bf00e6 6195 (version "1.9.8")
feaae484
SB
6196 (source (origin
6197 (method url-fetch)
bae67829 6198 (uri (string-append "https://waf.io/"
feaae484
SB
6199 "waf-" version ".tar.bz2"))
6200 (sha256
6201 (base32
27bf00e6 6202 "0wl4cnmp06lfxqjxaan58bqxn27smhydz0sg5prrfbl3bsw4gv6q"))))
feaae484
SB
6203 (build-system python-build-system)
6204 (arguments
6205 '(#:phases
6206 (modify-phases %standard-phases
6207 (replace 'build
7dd55dfe
EF
6208 (lambda _
6209 (zero? (system* "python" "waf-light" "configure" "build"))))
feaae484 6210 (replace 'check
7dd55dfe
EF
6211 (lambda _
6212 (zero? (system* "python" "waf" "--version"))))
feaae484 6213 (replace 'install
7dd55dfe
EF
6214 (lambda _
6215 (copy-file "waf" %output))))))
27bf00e6 6216 (home-page "https://waf.io/")
feaae484
SB
6217 (synopsis "Python-based build system")
6218 (description
6219 "Waf is a Python-based framework for configuring, compiling and installing
6220applications.")
3f641af0 6221 (license license:bsd-3)))
feaae484
SB
6222
6223(define-public python2-waf
6224 (package-with-python2 python-waf))
45203542
RW
6225
6226(define-public python-pyzmq
6227 (package
6228 (name "python-pyzmq")
3655ee76 6229 (version "15.1.0")
45203542
RW
6230 (source
6231 (origin
6232 (method url-fetch)
3655ee76 6233 (uri (pypi-uri "pyzmq" version))
45203542 6234 (sha256
3655ee76 6235 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
6236 (build-system python-build-system)
6237 (arguments
6238 `(#:configure-flags
6239 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
6240 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
6241 ;; --inplace' for 'python setup.py test' to work.
6242 #:tests? #f))
6243 (inputs
6244 `(("zeromq" ,zeromq)))
6245 (native-inputs
6246 `(("pkg-config" ,pkg-config)
f3b98f4f 6247 ("python-nose" ,python-nose)))
7bf837fd 6248 (home-page "https://github.com/zeromq/pyzmq")
45203542
RW
6249 (synopsis "Python bindings for 0MQ")
6250 (description
6251 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 6252 (license license:bsd-4)))
45203542
RW
6253
6254(define-public python2-pyzmq
6255 (package-with-python2 python-pyzmq))
d889e6c4
CR
6256
6257(define-public python-pep8
6258 (package
6259 (name "python-pep8")
db251311 6260 (version "1.7.0")
d889e6c4
CR
6261 (source
6262 (origin
6263 (method url-fetch)
db251311 6264 (uri (pypi-uri "pep8" version))
d889e6c4
CR
6265 (sha256
6266 (base32
db251311 6267 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4 6268 (build-system python-build-system)
d889e6c4
CR
6269 (home-page "http://pep8.readthedocs.org/")
6270 (synopsis "Python style guide checker")
6271 (description
6272 "This tools checks Python code against some of the style conventions in
6273PEP 8.")
6274 (license license:expat)))
6275
6276(define-public python2-pep8
6277 (package-with-python2 python-pep8))
e31d7f44
CR
6278
6279(define-public python-pyflakes
6280 (package
6281 (name "python-pyflakes")
2abc3972 6282 (version "1.0.0")
e31d7f44
CR
6283 (source
6284 (origin
6285 (method url-fetch)
2abc3972 6286 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
6287 (sha256
6288 (base32
2abc3972 6289 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44 6290 (build-system python-build-system)
e31d7f44
CR
6291 (home-page
6292 "https://github.com/pyflakes/pyflakes")
6293 (synopsis "Passive checker of Python programs")
6294 (description
6295 "Pyflakes statically checks Python source code for common errors.")
6296 (license license:expat)))
a59e017c 6297
7261d9eb
CR
6298(define-public python2-pyflakes
6299 (package-with-python2 python-pyflakes))
6300
a59e017c
CR
6301(define-public python-mccabe
6302 (package
6303 (name "python-mccabe")
c6ebd40d 6304 (version "0.4.0")
a59e017c
CR
6305 (source
6306 (origin
6307 (method url-fetch)
c6ebd40d 6308 (uri (pypi-uri "mccabe" version))
a59e017c
CR
6309 (sha256
6310 (base32
c6ebd40d 6311 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c 6312 (build-system python-build-system)
328bb95d 6313 (native-inputs
c6ebd40d 6314 `(("python-pytest" ,python-pytest)
f3b98f4f 6315 ("python-pytest-runner" ,python-pytest-runner)))
a59e017c
CR
6316 (home-page "https://github.com/flintwork/mccabe")
6317 (synopsis "McCabe checker, plugin for flake8")
6318 (description
6319 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
6320complexity of Python source code.")
7362371d 6321 (license license:expat)))
a59e017c
CR
6322
6323(define-public python2-mccabe
6324 (package-with-python2 python-mccabe))
e8df8f47 6325
7477fbb1
CR
6326(define-public python-mccabe-0.2.1
6327 (package (inherit python-mccabe)
6328 (version "0.2.1")
6329 (source
6330 (origin
6331 (method url-fetch)
6332 (uri (pypi-uri "mccabe" version))
6333 (sha256
6334 (base32
f3b98f4f 6335 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
7477fbb1
CR
6336
6337(define-public python2-mccabe-0.2.1
6338 (package-with-python2 python-mccabe-0.2.1))
6339
e8df8f47
CR
6340;; Flake8 2.4.1 requires an older version of pep8.
6341;; This should be removed ASAP.
6342(define-public python-pep8-1.5.7
6343 (package (inherit python-pep8)
6344 (version "1.5.7")
6345 (source
6346 (origin
6347 (method url-fetch)
6348 (uri (string-append
6349 "https://pypi.python.org/packages/source/p/pep8/pep8-"
6350 version
6351 ".tar.gz"))
6352 (sha256
6353 (base32
73e3060d
MB
6354 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
6355 (arguments
6356 ;; XXX Tests not compatible with Python 3.5.
6357 '(#:tests? #f))))
e8df8f47
CR
6358
6359(define-public python2-pep8-1.5.7
6360 (package-with-python2 python-pep8-1.5.7))
6361
6362;; Flake8 2.4.1 requires an older version of pyflakes.
6363;; This should be removed ASAP.
6364(define-public python-pyflakes-0.8.1
6365 (package (inherit python-pyflakes)
6366 (version "0.8.1")
6367 (source
6368 (origin
6369 (method url-fetch)
6370 (uri (string-append
6371 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
6372 version
6373 ".tar.gz"))
6374 (sha256
6375 (base32
0d84e1ef
MB
6376 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
6377 (arguments
6378 ;; XXX Tests not compatible with Python 3.5.
6379 '(#:tests? #f))))
e8df8f47
CR
6380
6381(define-public python2-pyflakes-0.8.1
7261d9eb 6382 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
6383
6384(define-public python-flake8
6385 (package
6386 (name "python-flake8")
43789136 6387 (version "2.5.4")
e8df8f47
CR
6388 (source
6389 (origin
6390 (method url-fetch)
1b995533 6391 (uri (pypi-uri "flake8" version))
e8df8f47
CR
6392 (sha256
6393 (base32
011271c7
HG
6394 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
6395 (modules '((guix build utils)))
6396 (snippet
6397 '(begin
6398 ;; Remove pre-compiled .pyc files from source.
6399 (for-each delete-file-recursively
6400 (find-files "." "__pycache__" #:directories? #t))
6401 (for-each delete-file (find-files "." "\\.pyc$"))
6402 #t))))
e8df8f47 6403 (build-system python-build-system)
482d9591 6404 (propagated-inputs
f3b98f4f 6405 `(("python-pep8" ,python-pep8)
43789136 6406 ("python-pyflakes" ,python-pyflakes)
482d9591 6407 ("python-mccabe" ,python-mccabe)))
328bb95d
HG
6408 (native-inputs
6409 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
e8df8f47
CR
6410 ("python-nose" ,python-nose)))
6411 (home-page "https://gitlab.com/pycqa/flake8")
6412 (synopsis
6413 "The modular source code checker: pep8, pyflakes and co")
6414 (description
6415 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
6416 (license license:expat)))
6417
6418(define-public python2-flake8
6419 (package-with-python2 python-flake8))
61b9ac53 6420
abf21efc
CR
6421;; This will only be needed by the python-hacking package and will not be
6422;; necessary once python-hacking > 0.10.2 is released.
6423(define-public python-flake8-2.2.4
6424 (package (inherit python-flake8)
482d9591 6425 (propagated-inputs
f3b98f4f 6426 `(("python-pep8" ,python-pep8-1.5.7)
abf21efc 6427 ("python-pyflakes" ,python-pyflakes-0.8.1)
482d9591 6428 ("python-mccabe" ,python-mccabe-0.2.1)))
328bb95d 6429 (native-inputs
482d9591 6430 `(("python-mock" ,python-mock)
abf21efc
CR
6431 ("python-nose" ,python-nose)))
6432 (version "2.2.4")
6433 (source
6434 (origin
6435 (method url-fetch)
6436 (uri (pypi-uri "flake8" version))
6437 (sha256
6438 (base32
b9c8ccce
HG
6439 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))
6440 (modules '((guix build utils)))
6441 (snippet
6442 '(begin
6443 ;; Remove pre-compiled .pyc files from source.
6444 (for-each delete-file-recursively
6445 (find-files "." "__pycache__" #:directories? #t))
6446 (for-each delete-file (find-files "." "\\.pyc$"))
a717e8a6
MB
6447 #t))))
6448 (arguments
6449 ;; XXX Fails with Python 3.5.
6450 '(#:tests? #f))))
abf21efc
CR
6451
6452(define-public python2-flake8-2.2.4
6453 (package-with-python2 python-flake8-2.2.4))
6454
1f42d824
MFM
6455(define-public python-flake8-polyfill
6456 (package
6457 (name "python-flake8-polyfill")
6458 (version "1.0.1")
6459 (source
6460 (origin
6461 (method url-fetch)
6462 (uri (pypi-uri "flake8-polyfill" version))
6463 (sha256
6464 (base32
6465 "02gn2wxvh9vnf7m7dld7ca4l60mg5c370hv3swwppkngwaqmcw67"))))
6466 (build-system python-build-system)
2c1cad7a
MB
6467 (arguments
6468 '(#:phases
6469 (modify-phases %standard-phases
6470 (replace 'check
6471 (lambda _
6472 (setenv "PYTHONPATH"
6473 (string-append (getcwd) "/build/lib:"
6474 (getenv "PYTHONPATH")))
6475 (zero? (system* "py.test" "-v")))))))
6476 (native-inputs
6477 `(("python-flake8" ,python-flake8)
6478 ("python-mock" ,python-mock)
6479 ("python-pycodestyle" ,python-pycodestyle)
6480 ("python-pytest" ,python-pytest)))
1f42d824
MFM
6481 (home-page "https://gitlab.com/pycqa/flake8-polyfill")
6482 (synopsis "Polyfill package for Flake8 plugins")
6483 (description
6484 "This package that provides some compatibility helpers for Flake8
6485plugins that intend to support Flake8 2.x and 3.x simultaneously.")
6486 (license license:expat)))
6487
6488(define-public python2-flake8-polyfill
6489 (package-with-python2 python-flake8-polyfill))
6490
61b9ac53
FB
6491(define-public python-mistune
6492 (package
6493 (name "python-mistune")
08b81336 6494 (version "0.7.3")
61b9ac53
FB
6495 (source
6496 (origin
6497 (method url-fetch)
eff8d773 6498 (uri (pypi-uri "mistune" version))
61b9ac53
FB
6499 (sha256
6500 (base32
08b81336 6501 "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
61b9ac53 6502 (build-system python-build-system)
328bb95d 6503 (native-inputs
f3b98f4f 6504 `(("python-nose" ,python-nose)
61b9ac53
FB
6505 ("python-cython" ,python-cython)))
6506 (home-page "https://github.com/lepture/mistune")
6507 (synopsis "Markdown parser in pure Python")
6508 (description "This package provides a fast markdown parser in pure
6509Python.")
3f641af0 6510 (license license:bsd-3)))
61b9ac53
FB
6511
6512(define-public python2-mistune
6513 (package-with-python2 python-mistune))
6d992d07 6514
b9893908
EE
6515(define-public python-markdown
6516 (package
6517 (name "python-markdown")
4ffbe8c6 6518 (version "2.6.8")
b9893908
EE
6519 (source
6520 (origin
6521 (method url-fetch)
6522 (uri (pypi-uri "Markdown" version))
6523 (sha256
6524 (base32
4ffbe8c6 6525 "0cqfhr1km2s5d8jm6hbwgkrrj9hvkjf2gab3s2axlrw1clgaij0a"))))
b9893908
EE
6526 (build-system python-build-system)
6527 (arguments
6528 `(#:phases
6529 (modify-phases %standard-phases
6530 (replace 'check
6531 (lambda _
6532 (zero? (system* "python" "run-tests.py")))))))
6533 (native-inputs
6534 `(("python-nose" ,python-nose)
6535 ("python-pyyaml" ,python-pyyaml)))
6536 (home-page "https://pythonhosted.org/Markdown/")
6537 (synopsis "Python implementation of Markdown")
6538 (description
6539 "This package provides a Python implementation of John Gruber's
6540Markdown. The library features international input, various Markdown
6541extensions, and several HTML output formats. A command line wrapper
6542markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 6543 (license license:bsd-3)))
b9893908
EE
6544
6545(define-public python2-markdown
6546 (package-with-python2 python-markdown))
6547
6d992d07
FB
6548(define-public python-ptyprocess
6549 (package
6550 (name "python-ptyprocess")
70fc93cb 6551 (version "0.5.1")
6d992d07
FB
6552 (source
6553 (origin
6554 (method url-fetch)
6555 (uri (string-append
6556 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
6557 version ".tar.gz"))
6558 (sha256
6559 (base32
70fc93cb 6560 "19l1xrjn4l9gjz01s3vg92gn2dd9d8mw1v86ppkzlnr9m5iwwc05"))))
6d992d07 6561 (build-system python-build-system)
328bb95d 6562 (native-inputs
f3b98f4f 6563 `(("python-nose" ,python-nose)))
6d992d07
FB
6564 (arguments
6565 `(#:phases
6566 (modify-phases %standard-phases
6567 (replace 'check
6568 (lambda _
6569 (zero? (system* "nosetests")))))))
6570 (home-page "https://github.com/pexpect/ptyprocess")
6571 (synopsis "Run a subprocess in a pseudo terminal")
6572 (description
6573 "This package provides a Python library used to launch a subprocess in a
6574pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 6575 (license license:isc)))
6d992d07
FB
6576
6577(define-public python2-ptyprocess
6578 (package-with-python2 python-ptyprocess))
4aadb1df 6579
df893a38
MB
6580(define-public python-cram
6581 (package
6582 (name "python-cram")
6583 (version "0.7")
6584 (home-page "https://bitheap.org/cram/")
6585 (source (origin
6586 (method url-fetch)
6587 (uri (list (string-append home-page "cram-"
6588 version ".tar.gz")
6589 (pypi-uri "cram" version)))
6590 (sha256
6591 (base32
6592 "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
6593 (arguments
6594 '(#:phases
6595 (modify-phases %standard-phases
6596 (add-after 'unpack 'patch-source
6597 (lambda _
6598 (substitute* (find-files "cram" ".*\\.py$")
6599 ;; Replace default shell path.
6600 (("/bin/sh") (which "sh")))
6601 (substitute* (find-files "tests" ".*\\.t$")
6602 (("md5") "md5sum")
6603 (("/bin/bash") (which "bash"))
6604 (("/bin/sh") (which "sh")))
6605 (substitute* "cram/_test.py"
6606 ;; This hack works around a bug triggered by substituting
6607 ;; the /bin/sh paths. "tests/usage.t" compares the output of
6608 ;; "cram -h", which breaks the output at 80 characters. This
6609 ;; causes the line showing the default shell to break into two
6610 ;; lines, but the test expects a single line...
6611 (("env\\['COLUMNS'\\] = '80'")
6612 "env['COLUMNS'] = '160'"))
6613 #t))
6614 (delete 'check)
6615 (add-after 'install 'check
6616 ;; The test phase uses the built library and executable.
6617 ;; It's easier to run it after install since the build
6618 ;; directory contains version-specific PATH.
6619 (lambda* (#:key inputs outputs #:allow-other-keys)
6620 (add-installed-pythonpath inputs outputs)
6621 (setenv "PATH" (string-append (getenv "PATH") ":"
6622 (assoc-ref outputs "out") "/bin"))
6623 (zero? (system* "make" "test")))))))
6624 (build-system python-build-system)
6625 (native-inputs
6626 `(("python-coverage" ,python-coverage)
6627 ("which" ,which)))
6628 (synopsis "Simple testing framework for command line applications")
6629 (description
6630 "Cram is a functional testing framework for command line applications.
6631Cram tests look like snippets of interactive shell sessions. Cram runs each
6632command and compares the command output in the test with the command’s actual
6633output.")
6634 (license license:gpl2+)))
6635
6636(define-public python2-cram
6637 (package-with-python2 python-cram))
6638
4aadb1df
FB
6639(define-public python-terminado
6640 (package
6641 (name "python-terminado")
783fb0a3 6642 (version "0.6")
4aadb1df
FB
6643 (source
6644 (origin
6645 (method url-fetch)
783fb0a3 6646 (uri (pypi-uri "terminado" version))
4aadb1df
FB
6647 (sha256
6648 (base32
783fb0a3 6649 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
6650 (build-system python-build-system)
6651 (propagated-inputs
6652 `(("python-tornado" ,python-tornado)
6653 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
6654 (native-inputs
6655 `(("python-nose" ,python-nose)))
4aadb1df
FB
6656 (arguments
6657 `(#:phases
6658 (modify-phases %standard-phases
6659 (replace 'check
6660 (lambda _
6661 (zero? (system* "nosetests")))))))
6662 (home-page "https://github.com/takluyver/terminado")
6663 (synopsis "Terminals served to term.js using Tornado websockets")
6664 (description "This package provides a Tornado websocket backend for the
6665term.js Javascript terminal emulator library.")
3f641af0 6666 (license license:bsd-2)
783fb0a3 6667 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
6668
6669(define-public python2-terminado
783fb0a3 6670 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 6671 (package (inherit terminado)
783fb0a3
EF
6672 (propagated-inputs
6673 `(("python2-backport-ssl-match-hostname"
6674 ,python2-backport-ssl-match-hostname)
00e10c6e 6675 ,@(package-propagated-inputs terminado))))))
5faa5ce4 6676
789de5e2 6677(define-public python-straight-plugin
6678 (package
6679 (name "python-straight-plugin")
6680 (version "1.4.1")
6681 (source
6682 (origin
6683 (method url-fetch)
6684 (uri (pypi-uri "straight.plugin" version))
6685 (sha256
6686 (base32
6687 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
6688 (build-system python-build-system)
6689 (home-page "https://github.com/ironfroggy/straight.plugin")
6690 (synopsis "Simple namespaced plugin facility")
6691 (description "Straight Plugin provides a type of plugin you can create from
6692almost any existing Python modules, and an easy way for outside developers to
6693add functionality and customization to your projects with their own plugins.")
6694 (license license:expat)))
6695
6696(define-public python2-straight-plugin
6697 (package-with-python2 python-straight-plugin))
6698
d582eaac
SB
6699(define-public python-fonttools
6700 (package
6701 (name "python-fonttools")
6702 (version "2.5")
6703 (source (origin
6704 (method url-fetch)
6705 (uri (string-append
6706 "https://pypi.python.org/packages/source/F/FontTools/"
6707 "fonttools-" version ".tar.gz"))
6708 (sha256
6709 (base32
6710 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
6711 (build-system python-build-system)
9e8c6a37
HG
6712 (arguments
6713 '(#:test-target "check"
6714 #:phases
6715 (modify-phases %standard-phases
6716 (add-after 'unpack 'patch-setuppy
6717 ;; Remove the undocumented "extra_path" argument, which adds an
6718 ;; intervening directories between site-packages and the package
6719 ;; directory.
6720 (lambda _
6721 (substitute* "setup.py"
6722 (("^[ \t]*extra_path *= *'FontTools',") ""))
6723 #t)))))
7bf837fd 6724 (home-page "https://github.com/behdad/fonttools")
d582eaac
SB
6725 (synopsis "Tools to manipulate font files")
6726 (description
6727 "FontTools/TTX is a library to manipulate font files from Python. It
9e8c6a37 6728supports reading and writing of TrueType/OpenType fonts, reading and writing
d582eaac
SB
6729of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
6730also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
6731from an XML-based format.")
3f641af0
DC
6732 (license (license:non-copyleft
6733 "file://LICENSE.txt"
6734 "See LICENSE.txt in the distribution."))))
d582eaac
SB
6735
6736(define-public python2-fonttools
6737 (package-with-python2 python-fonttools))
75710da6 6738
5faa5ce4
RW
6739(define-public python-ly
6740 (package
6741 (name "python-ly")
5135354f 6742 (version "0.9.4")
5faa5ce4
RW
6743 (source
6744 (origin
6745 (method url-fetch)
5135354f
RW
6746 (uri (string-append "https://pypi.python.org/packages/57/4f/"
6747 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
6748 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
6749 (sha256
6750 (base32
5135354f 6751 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4 6752 (build-system python-build-system)
972cf9be
MB
6753 (arguments
6754 ;; FIXME: Some tests need network access.
6755 '(#:tests? #f))
5faa5ce4
RW
6756 (synopsis "Tool and library for manipulating LilyPond files")
6757 (description "This package provides a Python library to parse, manipulate
6758or create documents in LilyPond format. A command line program ly is also
6759provided that can be used to do various manipulations with LilyPond files.")
6760 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 6761 (license license:gpl2+)))
7e7b27d9
CR
6762
6763(define-public python-appdirs
6764 (package
6765 (name "python-appdirs")
543782e1 6766 (version "1.4.3")
7e7b27d9
CR
6767 (source
6768 (origin
6769 (method url-fetch)
26b16fd9 6770 (uri (pypi-uri "appdirs" version))
7e7b27d9
CR
6771 (sha256
6772 (base32
543782e1 6773 "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y"))))
7e7b27d9 6774 (build-system python-build-system)
7bf837fd 6775 (home-page "https://github.com/ActiveState/appdirs")
7e7b27d9
CR
6776 (synopsis
6777 "Determine platform-specific dirs, e.g. a \"user data dir\"")
6778 (description
6779 "This module provides a portable way of finding out where user data
6780should be stored on various operating systems.")
6781 (license license:expat)))
6782
6783(define-public python2-appdirs
6784 (package-with-python2 python-appdirs))
89b2e0b0
LF
6785
6786(define-public python-llfuse
6787 (package
6788 (name "python-llfuse")
e36ace36 6789 (version "1.1.1")
89b2e0b0
LF
6790 (source (origin
6791 (method url-fetch)
6792 (uri (string-append
6793 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6794 "llfuse-" version ".tar.bz2"))
6795 (sha256
6796 (base32
e36ace36 6797 "0v6vj9mb286njgd1szg9hz2qdh5f3vkhsvajripfcqg458av310v"))))
89b2e0b0
LF
6798 (build-system python-build-system)
6799 (inputs
6800 `(("fuse" ,fuse)
6801 ("attr" ,attr)))
6802 (native-inputs
f3b98f4f 6803 `(("pkg-config" ,pkg-config)))
89b2e0b0
LF
6804 (synopsis "Python bindings for FUSE")
6805 (description
6806 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
6807 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 6808 (license license:lgpl2.0+)
cd0569c4 6809 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
6810
6811(define-public python2-llfuse
cd0569c4
LF
6812 (package (inherit (package-with-python2
6813 (strip-python2-variant python-llfuse)))
6814 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
6815
6816;; For attic-0.16
6817(define-public python-llfuse-0.41
6818 (package (inherit python-llfuse)
229b3661 6819 (version "0.41.1")
cd0569c4
LF
6820 (source (origin
6821 (method url-fetch)
6822 (uri (string-append
6823 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6824 "llfuse-" version ".tar.bz2"))
6825 (sha256
6826 (base32
229b3661 6827 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
6828 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
6829 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 6830 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
6831
6832(define-public python-msgpack
6833 (package
6834 (name "python-msgpack")
aed625bd 6835 (version "0.4.8")
641c9871
LF
6836 (source (origin
6837 (method url-fetch)
ae831df4 6838 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
6839 (sha256
6840 (base32
aed625bd 6841 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 6842 (build-system python-build-system)
641c9871
LF
6843 (synopsis "MessagePack (de)serializer")
6844 (description "MessagePack is a fast, compact binary serialization format,
6845suitable for similar data to JSON. This package provides CPython bindings for
6846reading and writing MessagePack data.")
6847 (home-page "https://pypi.python.org/pypi/msgpack-python/")
f210e944 6848 (license license:asl2.0)))
bd74be7b
LF
6849
6850(define-public python2-msgpack
f210e944 6851 (package-with-python2 python-msgpack))
641c9871 6852
6e5e39f4
CR
6853(define-public python-netaddr
6854 (package
6855 (name "python-netaddr")
6856 (version "0.7.18")
6857 (source
6858 (origin
6859 (method url-fetch)
6860 (uri (string-append
6861 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
6862 version
6863 ".tar.gz"))
6864 (sha256
6865 (base32
6866 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
6867 (build-system python-build-system)
6868 (arguments `(#:tests? #f)) ;; No tests.
6e5e39f4
CR
6869 (home-page "https://github.com/drkjam/netaddr/")
6870 (synopsis "Pythonic manipulation of network addresses")
6871 (description
6872 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
6873and MAC network addresses.")
3f641af0 6874 (license license:bsd-3)))
6e5e39f4
CR
6875
6876(define-public python2-netaddr
6877 (package-with-python2 python-netaddr))
8c692a52
CR
6878
6879(define-public python-wrapt
6880 (package
6881 (name "python-wrapt")
d25bee26 6882 (version "1.10.8")
8c692a52
CR
6883 (source
6884 (origin
6885 (method url-fetch)
d25bee26 6886 (uri (pypi-uri "wrapt" version))
8c692a52
CR
6887 (sha256
6888 (base32
d25bee26 6889 "0wrcm1mydvfivbkzz0h81ygzdchnscshi6xvy5n3r21r9s0px8af"))))
8c692a52
CR
6890 (build-system python-build-system)
6891 (arguments
6892 ;; Tests are not included in the tarball, they are only available in the
6893 ;; git repository.
6894 `(#:tests? #f))
8c692a52
CR
6895 (home-page "https://github.com/GrahamDumpleton/wrapt")
6896 (synopsis "Module for decorators, wrappers and monkey patching")
6897 (description
6898 "The aim of the wrapt module is to provide a transparent object proxy for
6899 Python, which can be used as the basis for the construction of function
6900 wrappers and decorator functions.")
3f641af0 6901 (license license:bsd-2)))
8c692a52
CR
6902
6903(define-public python2-wrapt
6904 (package-with-python2 python-wrapt))
b85c85be
CR
6905
6906(define-public python-iso8601
6907 (package
6908 (name "python-iso8601")
fe84bc9a 6909 (version "0.1.11")
b85c85be
CR
6910 (source
6911 (origin
6912 (method url-fetch)
fe84bc9a 6913 (uri (pypi-uri "iso8601" version))
b85c85be 6914 (sha256
fe84bc9a
EF
6915 (base32
6916 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be 6917 (build-system python-build-system)
63b02364
MB
6918 (native-inputs
6919 `(("python-pytest" ,python-pytest)))
b85c85be
CR
6920 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
6921 (synopsis "Module to parse ISO 8601 dates")
6922 (description
6923 "This module parses the most common forms of ISO 8601 date strings (e.g.
6924@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
6925 (license license:expat)))
6926
6927(define-public python2-iso8601
6928 (package-with-python2 python-iso8601))
5e412b63
CR
6929
6930(define-public python-monotonic
6931 (package
6932 (name "python-monotonic")
6933 (version "0.3")
6934 (source
6935 (origin
6936 (method url-fetch)
6937 (uri (string-append
6938 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
6939 version
6940 ".tar.gz"))
6941 (sha256
6942 (base32
6943 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
6944 (build-system python-build-system)
5e412b63
CR
6945 (home-page "https://github.com/atdt/monotonic")
6946 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
6947 (description
6948 "This module provides a monotonic() function which returns the value (in
6949fractional seconds) of a clock which never goes backwards.")
3f641af0 6950 (license license:asl2.0)))
5e412b63
CR
6951
6952(define-public python2-monotonic
6953 (package-with-python2 python-monotonic))
de34afac
CR
6954
6955(define-public python-webob
6956 (package
6957 (name "python-webob")
b8834c21 6958 (version "1.5.1")
de34afac
CR
6959 (source
6960 (origin
6961 (method url-fetch)
b8834c21 6962 (uri (pypi-uri "WebOb" version))
de34afac
CR
6963 (sha256
6964 (base32
b8834c21 6965 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac 6966 (build-system python-build-system)
328bb95d 6967 (native-inputs
f3b98f4f 6968 `(("python-nose" ,python-nose)))
de34afac
CR
6969 (home-page "http://webob.org/")
6970 (synopsis "WSGI request and response object")
6971 (description
6972 "WebOb provides wrappers around the WSGI request environment, and an
6973object to help create WSGI responses.")
6974 (license license:expat)))
6975
6976(define-public python2-webob
6977 (package-with-python2 python-webob))
350ba0a3 6978
02a8a187
BW
6979(define-public python-xlrd
6980 (package
6981 (name "python-xlrd")
c2ad4d70 6982 (version "1.0.0")
02a8a187
BW
6983 (source (origin
6984 (method url-fetch)
e775f48e 6985 (uri (pypi-uri "xlrd" version))
02a8a187
BW
6986 (sha256
6987 (base32
c2ad4d70 6988 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
02a8a187
BW
6989 (build-system python-build-system)
6990 (arguments
6991 `(#:phases
6992 (modify-phases %standard-phases
c2ad4d70 6993 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
02a8a187
BW
6994 ;; run tests instead for now.
6995 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
f3b98f4f 6996 (native-inputs `(("python-nose" ,python-nose)))
02a8a187
BW
6997 (home-page "http://www.python-excel.org/")
6998 (synopsis "Library for extracting data from Excel files")
6999 (description "This packages provides a library to extract data from
c598e35c 7000spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
7001@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
7002Unicode-aware. It is not intended as an end-user tool.")
3f641af0 7003 (license license:bsd-3)))
02a8a187
BW
7004
7005(define-public python2-xlrd
7006 (package-with-python2 python-xlrd))
7007
350ba0a3
CR
7008(define-public python-prettytable
7009 (package
7010 (name "python-prettytable")
7011 (version "0.7.2")
7012 (source
7013 (origin
7014 (method url-fetch)
7015 (uri (string-append
7016 "https://pypi.python.org/packages/source/P/PrettyTable/"
7017 "prettytable-" version ".tar.bz2"))
7018 (sha256
7019 (base32
7020 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
7021 (build-system python-build-system)
350ba0a3
CR
7022 (home-page "http://code.google.com/p/prettytable/")
7023 (synopsis "Display tabular data in an ASCII table format")
7024 (description
7025 "A library designed to represent tabular data in visually appealing ASCII
7026tables. PrettyTable allows for selection of which columns are to be printed,
7027independent alignment of columns (left or right justified or centred) and
7028printing of sub-tables by specifying a row range.")
3f641af0 7029 (license license:bsd-3)))
350ba0a3
CR
7030
7031(define-public python2-prettytable
7032 (package-with-python2 python-prettytable))
7a8ac75a 7033
9f8ee3fe
RW
7034(define-public python-tables
7035 (package
7036 (name "python-tables")
7037 (version "3.2.2")
7038 (source
7039 (origin
7040 (method url-fetch)
7041 (uri (pypi-uri "tables" version))
7042 (sha256
7043 (base32
bac23672
HG
7044 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
7045 (modules '((guix build utils)))
7046 (snippet
7047 '(begin
7048 ;; Remove pre-compiled .pyc files from source.
7049 (for-each delete-file-recursively
7050 (find-files "." "__pycache__" #:directories? #t))
7051 (for-each delete-file (find-files "." "\\.pyc$"))
7052 #t))))
9f8ee3fe
RW
7053 (build-system python-build-system)
7054 (arguments
7055 `(;; FIXME: python-build-system does not pass configure-flags to "build"
7056 ;; or "check", so we must override the build and check phases.
7057 #:phases
7058 (modify-phases %standard-phases
7059 (add-after 'unpack 'use-gcc
7060 (lambda _
7061 (substitute* "setup.py"
7062 (("compiler = new_compiler\\(\\)" line)
7063 (string-append line
7064 "\ncompiler.set_executables(compiler='gcc',"
7065 "compiler_so='gcc',"
7066 "linker_exe='gcc',"
7067 "linker_so='gcc -shared')")))
7068 #t))
7069 (replace 'build
7070 (lambda* (#:key inputs #:allow-other-keys)
7071 (zero? (system* "python" "setup.py" "build"
7072 (string-append "--hdf5="
7073 (assoc-ref inputs "hdf5"))))))
7074 (replace 'check
7075 (lambda* (#:key inputs #:allow-other-keys)
7076 (zero? (system* "python" "setup.py" "check"
7077 (string-append "--hdf5="
7078 (assoc-ref inputs "hdf5")))))))))
7079 (propagated-inputs
7080 `(("python-numexpr" ,python-numexpr)
7081 ("python-numpy" ,python-numpy)))
7082 (native-inputs
f3b98f4f 7083 `(("python-cython" ,python-cython)
9f8ee3fe
RW
7084 ("pkg-config" ,pkg-config)))
7085 (inputs
7086 `(("hdf5" ,hdf5)
7087 ("bzip2" ,bzip2)
7088 ("zlib" ,zlib)))
7089 (home-page "http://www.pytables.org/")
7090 (synopsis "Hierarchical datasets for Python")
7091 (description "PyTables is a package for managing hierarchical datasets and
d1e4ad1b 7092designed to efficiently cope with extremely large amounts of data.")
3f641af0 7093 (license license:bsd-3)))
9f8ee3fe
RW
7094
7095(define-public python2-tables
7096 (package-with-python2 python-tables))
7097
7a8ac75a
RW
7098(define-public python-pyasn1
7099 (package
7100 (name "python-pyasn1")
caa0edb3 7101 (version "0.1.9")
7a8ac75a
RW
7102 (source
7103 (origin
7104 (method url-fetch)
caa0edb3 7105 (uri (pypi-uri "pyasn1" version))
7a8ac75a
RW
7106 (sha256
7107 (base32
caa0edb3 7108 "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"))))
7a8ac75a
RW
7109 (build-system python-build-system)
7110 (home-page "http://pyasn1.sourceforge.net/")
7111 (synopsis "ASN.1 types and codecs")
7112 (description
7113 "This is an implementation of ASN.1 types and codecs in Python. It is
7114suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 7115 (license license:bsd-2)))
7a8ac75a
RW
7116
7117(define-public python2-pyasn1
7118 (package-with-python2 python-pyasn1))
9a49a535 7119
5988c299
EF
7120(define-public python-pyasn1-modules
7121 (package
7122 (name "python-pyasn1-modules")
7123 (version "0.0.8")
7124 (source
7125 (origin
7126 (method url-fetch)
7127 (uri (pypi-uri "pyasn1-modules" version))
7128 (sha256
7129 (base32
7130 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
7131 (build-system python-build-system)
5988c299
EF
7132 (propagated-inputs
7133 `(("python-pyasn1" ,python-pyasn1)))
3b3b60d0 7134 (home-page "https://sourceforge.net/projects/pyasn1/")
5988c299
EF
7135 (synopsis "ASN.1 codec implementations")
7136 (description
7137 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
7138implementations of ASN.1-based codecs and protocols.")
3f641af0 7139 (license license:bsd-3)))
5988c299
EF
7140
7141(define-public python2-pyasn1-modules
7142 (package-with-python2 python-pyasn1-modules))
7143
520af157 7144(define-public python-ipaddress
9a49a535 7145 (package
520af157 7146 (name "python-ipaddress")
36e0d9db 7147 (version "1.0.18")
520af157
DC
7148 (source (origin
7149 (method url-fetch)
7150 (uri (pypi-uri "ipaddress" version))
7151 (sha256
7152 (base32
36e0d9db 7153 "1q8klj9d84cmxgz66073x1j35cplr3r77vx1znhxiwl5w74391ax"))))
9a49a535 7154 (build-system python-build-system)
9a49a535
RW
7155 (home-page "https://github.com/phihag/ipaddress")
7156 (synopsis "IP address manipulation library")
7157 (description
520af157
DC
7158 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
7159 in Python. This library is used to create, poke at, and manipulate IPv4 and
7160 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
7161 module to older versions of Python.")
f210e944 7162 (license license:psfl)))
520af157
DC
7163
7164(define-public python2-ipaddress
f210e944 7165 (package-with-python2 python-ipaddress))
3f00e078 7166
4a238186
HG
7167(define-public python2-ipaddr
7168 (package
7169 (name "python2-ipaddr")
7170 (version "2.1.11")
7171 (source
7172 (origin
7173 (method url-fetch)
7174 (uri (pypi-uri "ipaddr" version))
7175 (sha256
7176 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
7177 (build-system python-build-system)
7178 (arguments
7179 `(#:python ,python-2 ;version 2 only
7180 #:phases
7181 (modify-phases %standard-phases
7182 (replace 'check
7183 (lambda* _
7184 (zero? (system* "python" "ipaddr_test.py")))))))
7185 (home-page "https://github.com/google/ipaddr-py")
7186 (synopsis "IP address manipulation library")
7187 (description
7188 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
7189IPv6 addresses and networks.
7190
7191For new implementations you may prefer to use the standard module
7192@code{ipaddress}, which was introduced in Python 3.3 and backported to older
7193versions of Python.")
3f641af0 7194 (license license:asl2.0)))
4a238186 7195
3f00e078
RW
7196(define-public python-idna
7197 (package
7198 (name "python-idna")
7199 (version "2.0")
7200 (source
7201 (origin
7202 (method url-fetch)
7203 (uri (string-append "https://pypi.python.org/packages/source/i/"
7204 "idna/idna-" version ".tar.gz"))
7205 (sha256
7206 (base32
7207 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
7208 (build-system python-build-system)
3f00e078
RW
7209 (home-page "https://github.com/kjd/idna")
7210 (synopsis "Internationalized domain names in applications")
7211 (description
7212 "This is a library to support the Internationalised Domain Names in
7213Applications (IDNA) protocol as specified in RFC 5891. This version of the
7214protocol is often referred to as “IDNA2008” and can produce different results
7215from the earlier standard from 2003. The library is also intended to act as a
7216suitable drop-in replacement for the “encodings.idna” module that comes with
7217the Python standard library but currently only supports the older 2003
7218specification.")
3f641af0 7219 (license license:bsd-4)))
3f00e078
RW
7220
7221(define-public python2-idna
7222 (package-with-python2 python-idna))
36ebf972
RW
7223
7224(define-public python-pretend
7225 (package
7226 (name "python-pretend")
7227 (version "1.0.8")
7228 (source
7229 (origin
7230 (method url-fetch)
7231 (uri (string-append "https://pypi.python.org/packages/source/p/"
7232 "pretend/pretend-" version ".tar.gz"))
7233 (sha256
7234 (base32
7235 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
7236 (build-system python-build-system)
36ebf972
RW
7237 (home-page "https://github.com/alex/pretend")
7238 (synopsis "Library for stubbing in Python")
7239 (description
7240 "Pretend is a library to make stubbing with Python easier. Stubbing is a
7241technique for writing tests. You may hear the term mixed up with mocks,
7242fakes, or doubles. Basically, a stub is an object that returns pre-canned
7243responses, rather than doing any computation.")
3f641af0 7244 (license license:bsd-3)))
36ebf972
RW
7245
7246(define-public python2-pretend
7247 (package-with-python2 python-pretend))
aa759a51
RW
7248
7249(define-public python-cryptography-vectors
7250 (package
7251 (name "python-cryptography-vectors")
27fab2bf 7252 (version "1.7.1")
aa759a51
RW
7253 (source
7254 (origin
7255 (method url-fetch)
9c509ca9 7256 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
7257 (sha256
7258 (base32
27fab2bf 7259 "1x2mz4wggja5ih45c6cw0kzyad4jr8avg327dawjr1gnpdq1psa7"))))
aa759a51 7260 (build-system python-build-system)
aa759a51 7261 (home-page "https://github.com/pyca/cryptography")
66e07664 7262 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
7263 (description
7264 "This package contains test vectors for the cryptography package.")
7265 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 7266 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
7267
7268(define-public python2-cryptography-vectors
7269 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
7270
7271(define-public python-cryptography
7272 (package
7273 (name "python-cryptography")
27fab2bf 7274 (version "1.7.1")
88b47cb0
RW
7275 (source
7276 (origin
7277 (method url-fetch)
9c509ca9 7278 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
7279 (sha256
7280 (base32
27fab2bf 7281 "0k6v7wq4h0yk9r0x0bl2x9fyrg4a6gj5qp4m9mgpk6m481yyygwm"))))
88b47cb0
RW
7282 (build-system python-build-system)
7283 (inputs
7284 `(("openssl" ,openssl)))
7285 (propagated-inputs
7286 `(("python-cffi" ,python-cffi)
7287 ("python-six" ,python-six)
7288 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
7289 ("python-idna" ,python-idna)
7290 ("python-iso8601" ,python-iso8601)))
7291 (native-inputs
7292 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 7293 ("python-hypothesis" ,python-hypothesis)
88b47cb0 7294 ("python-pretend" ,python-pretend)
ce6c13ee
EF
7295 ("python-pyasn1" ,python-pyasn1)
7296 ("python-pyasn1-modules" ,python-pyasn1-modules)
912dcbad 7297 ("python-pytz" ,python-pytz)
23b9168d 7298 ("python-pytest" ,python-pytest-3.0)))
88b47cb0
RW
7299 (home-page "https://github.com/pyca/cryptography")
7300 (synopsis "Cryptographic recipes and primitives for Python")
7301 (description
7302 "cryptography is a package which provides cryptographic recipes and
7303primitives to Python developers. It aims to be the “cryptographic standard
7304library” for Python. The package includes both high level recipes, and low
7305level interfaces to common cryptographic algorithms such as symmetric ciphers,
7306message digests and key derivation functions.")
7307 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 7308 (license (list license:bsd-3 license:asl2.0))
519e2f4f 7309 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
7310
7311(define-public python2-cryptography
519e2f4f
LF
7312 (let ((crypto (package-with-python2
7313 (strip-python2-variant python-cryptography))))
88b47cb0
RW
7314 (package (inherit crypto)
7315 (propagated-inputs
7316 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
7317 ("python2-backport-ssl-match-hostname"
7318 ,python2-backport-ssl-match-hostname)
68f1cdec 7319 ("python2-enum34" ,python2-enum34)
88b47cb0 7320 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
7321
7322(define-public python-pyopenssl
7323 (package
7324 (name "python-pyopenssl")
61684de2 7325 (version "16.2.0")
5af999b8
RW
7326 (source
7327 (origin
7328 (method url-fetch)
eb68d268 7329 (uri (pypi-uri "pyOpenSSL" version))
5af999b8
RW
7330 (sha256
7331 (base32
7c6bf660
MB
7332 "0vji4yrfshs15xpczbhzhasnjrwcarsqg87n98ixnyafnyxs6ybp"))
7333 (patches
7334 (search-patches "python-pyopenssl-skip-network-test.patch"))))
5af999b8 7335 (build-system python-build-system)
30e0229a 7336 (arguments
7c6bf660
MB
7337 '(#:phases
7338 (modify-phases %standard-phases
7339 (delete 'check)
7340 (add-after 'install 'check
7341 (lambda* (#:key inputs outputs #:allow-other-keys)
7342 (add-installed-pythonpath inputs outputs)
7343 (zero? (system* "py.test" "-v")))))))
5af999b8
RW
7344 (propagated-inputs
7345 `(("python-cryptography" ,python-cryptography)
7346 ("python-six" ,python-six)))
7347 (inputs
7348 `(("openssl" ,openssl)))
30e0229a
MB
7349 (native-inputs
7350 `(("python-pytest" ,python-pytest)))
5af999b8
RW
7351 (home-page "https://github.com/pyca/pyopenssl")
7352 (synopsis "Python wrapper module around the OpenSSL library")
7353 (description
7354 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
7355library.")
3f641af0 7356 (license license:asl2.0)))
5af999b8
RW
7357
7358(define-public python2-pyopenssl
519e2f4f 7359 (package-with-python2 python-pyopenssl))
643725a1
CR
7360
7361(define-public python-pip
7362 (package
7363 (name "python-pip")
392c26b0 7364 (version "9.0.1")
643725a1
CR
7365 (source
7366 (origin
7367 (method url-fetch)
6fb54e3b 7368 (uri (pypi-uri "pip" version))
643725a1
CR
7369 (sha256
7370 (base32
392c26b0 7371 "03clr9c1dih5n9c00c592zzvf6r1ffimywkaq9agcqdllzhl7wh9"))))
643725a1 7372 (build-system python-build-system)
392c26b0
MC
7373 (arguments
7374 '(#:tests? #f)) ; there are no tests in the pypi archive.
643725a1 7375 (home-page "https://pip.pypa.io/")
392c26b0 7376 (synopsis "Package manager for Python software")
643725a1 7377 (description
392c26b0 7378 "Pip is a package manager for Python software, that finds packages on the
643725a1
CR
7379Python Package Index (PyPI).")
7380 (license license:expat)))
7381
7382(define-public python2-pip
7383 (package-with-python2 python-pip))
d8c4998f
LC
7384
7385(define-public python-tlsh
7386 (package
7387 (name "python-tlsh")
99b00dc7 7388 (version "3.4.4")
d8c4998f
LC
7389 (home-page "https://github.com/trendmicro/tlsh")
7390 (source (origin
99b00dc7
EF
7391 (method url-fetch)
7392 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
7393 version ".tar.gz"))
d8c4998f
LC
7394 (sha256
7395 (base32
99b00dc7
EF
7396 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
7397 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
7398 (build-system cmake-build-system)
7399 (arguments
7400 '(#:out-of-source? #f
7401 #:phases (modify-phases %standard-phases
7402 (replace
7403 'install
7404 (lambda* (#:key outputs #:allow-other-keys)
7405 ;; Build and install the Python bindings. The underlying
7406 ;; C++ library is apparently not meant to be installed.
7407 (let ((out (assoc-ref outputs "out")))
7408 (with-directory-excursion "py_ext"
7409 (and (system* "python" "setup.py" "build")
7410 (system* "python" "setup.py" "install"
7411 (string-append "--prefix=" out))))))))))
7412 (inputs `(("python" ,python-wrapper))) ;for the bindings
7413 (synopsis "Fuzzy matching library for Python")
7414 (description
7415 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
7416Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
7417value which can be used for similarity comparisons. Similar objects have
7418similar hash values, which allows for the detection of similar objects by
7419comparing their hash values. The byte stream should have a sufficient amount
7420of complexity; for example, a byte stream of identical bytes will not generate
7421a hash value.")
3f641af0 7422 (license license:asl2.0)))
d8c4998f
LC
7423
7424(define-public python2-tlsh
7425 (package
7426 (inherit python-tlsh)
7427 (name "python2-tlsh")
7428 (inputs `(("python" ,python-2)))))
d96034ed 7429
67f66812
BW
7430(define-public python-termcolor
7431 (package
7432 (name "python-termcolor")
7433 (version "1.1.0")
7434 (source
7435 (origin
7436 (method url-fetch)
7437 (uri (pypi-uri "python-termcolor" version))
7438 (sha256
7439 (base32
7440 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
7441 (build-system python-build-system)
7442 (arguments
7443 ;; There are no tests.
7444 `(#:tests? #f))
7445 (home-page "http://pypi.python.org/pypi/termcolor")
7446 (synopsis "ANSII Color formatting for terminal output")
7447 (description
7448 "This package provides ANSII Color formatting for output in terminals.")
7449 (license license:expat)))
7450
7451(define-public python2-termcolor
7452 (package-with-python2 python-termcolor))
7453
d96034ed
LC
7454(define-public python-libarchive-c
7455 (package
7456 (name "python-libarchive-c")
03fd001c 7457 (version "2.2")
d96034ed
LC
7458 (source (origin
7459 (method url-fetch)
03fd001c 7460 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
7461 (sha256
7462 (base32
03fd001c 7463 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
7464 (build-system python-build-system)
7465 (arguments
7466 '(#:phases (modify-phases %standard-phases
7467 (add-before
7468 'build 'reference-libarchive
7469 (lambda* (#:key inputs #:allow-other-keys)
7470 ;; Retain the absolute file name of libarchive.so.
7471 (let ((libarchive (assoc-ref inputs "libarchive")))
7472 (substitute* "libarchive/ffi.py"
7473 (("find_library\\('archive'\\)")
7474 (string-append "'" libarchive
b41a05ce 7475 "/lib/libarchive.so'")))))))))
d96034ed 7476 (inputs
f3b98f4f 7477 `(("libarchive" ,libarchive)))
d96034ed
LC
7478 (home-page "https://github.com/Changaco/python-libarchive-c")
7479 (synopsis "Python interface to libarchive")
7480 (description
7481 "This package provides Python bindings to libarchive, a C library to
7482access possibly compressed archives in many different formats. It uses
7483Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 7484 (license license:lgpl2.0+)))
d96034ed
LC
7485
7486(define-public python2-libarchive-c
7487 (package-with-python2 python-libarchive-c))
5e1c9367
LC
7488
7489(define-public python-file
7490 (package
7491 (inherit file)
7492 (name "python-file")
7ffa5d4a
LF
7493 (source (origin
7494 (inherit (package-source file))
7495 ;; This patch should not be applied to python2-file.
7496 (patches (search-patches "python-file-double-encoding-bug.patch"))))
5e1c9367
LC
7497 (build-system python-build-system)
7498 (arguments
7499 '(#:tests? #f ;no tests
00bf74be 7500 #:configure-flags '("--single-version-externally-managed" "--root=/")
5e1c9367
LC
7501 #:phases (modify-phases %standard-phases
7502 (add-before 'build 'change-directory
7503 (lambda _
7504 (chdir "python")
7505 #t))
7506 (add-before 'build 'set-library-file-name
7507 (lambda* (#:key inputs #:allow-other-keys)
7508 (let ((file (assoc-ref inputs "file")))
7509 (substitute* "magic.py"
7510 (("find_library\\('magic'\\)")
7511 (string-append "'" file "/lib/libmagic.so'")))
7512 #t))))))
7513 (inputs `(("file" ,file)))
7514 (self-native-input? #f)
daeeea71
CM
7515 (synopsis "Python bindings to the libmagic file type guesser. Note that
7516this module and the python-magic module both provide a \"magic.py\" file;
7517these two modules, which are different and were developed separately, both
f210e944 7518serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
7519
7520(define-public python2-file
f210e944 7521 (package-with-python2 python-file))
85d4aeac
LC
7522
7523(define-public python-debian
7524 (package
7525 (name "python-debian")
02d7f337 7526 (version "0.1.28")
85d4aeac
LC
7527 (source
7528 (origin
7529 (method url-fetch)
5e217a8b 7530 (uri (pypi-uri name version))
85d4aeac
LC
7531 (sha256
7532 (base32
02d7f337 7533 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
85d4aeac 7534 (build-system python-build-system)
f22efa01 7535 (propagated-inputs
85d4aeac 7536 `(("python-six" ,python-six)))
85d4aeac
LC
7537 (home-page "http://packages.debian.org/sid/python-debian")
7538 (synopsis "Debian package related modules")
7539 (description
5c7bdc9a
LC
7540 ;; XXX: Use @enumerate instead of @itemize to work around
7541 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
7542 "This package provides Python modules that abstract many formats of
7543Debian-related files, such as:
7544
5c7bdc9a 7545@enumerate
85d4aeac
LC
7546@item Debtags information;
7547@item @file{debian/changelog} files;
7548@item packages files, pdiffs;
7549@item control files of single or multiple RFC822-style paragraphs---e.g.
7550 @file{debian/control}, @file{.changes}, @file{.dsc};
7551@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
7552 contained files and meta-information.
5c7bdc9a 7553@end enumerate\n")
85d4aeac
LC
7554
7555 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 7556 (license license:gpl3+)))
85d4aeac
LC
7557
7558(define-public python2-debian
7559 (package-with-python2 python-debian))
816a6538 7560
2d321bb2
RW
7561(define-public python-nbformat
7562 (package
7563 (name "python-nbformat")
7564 (version "4.1.0")
7565 (source
7566 (origin
7567 (method url-fetch)
7568 (uri (pypi-uri "nbformat" version))
7569 (sha256
7570 (base32
7571 "0mq8iki3d4mnx7wy05phss7x98mds4fqydin8lcagidp1knw1xnv"))))
7572 (build-system python-build-system)
7573 (arguments `(#:tests? #f)) ; no test target
7574 (propagated-inputs
7575 `(("python-ipython-genutils" ,python-ipython-genutils)
7576 ("python-jsonschema" ,python-jsonschema)
7577 ("python-jupyter-core" ,python-jupyter-core)
7578 ("python-traitlets" ,python-traitlets)))
2d321bb2
RW
7579 (home-page "http://jupyter.org")
7580 (synopsis "Jupyter Notebook format")
7581 (description "This package provides the reference implementation of the
7582Jupyter Notebook format and Python APIs for working with notebooks.")
7583 (license license:bsd-3)))
7584
7585(define-public python2-nbformat
7586 (package-with-python2 python-nbformat))
7587
55436048
RW
7588(define-public python-bleach
7589 (package
7590 (name "python-bleach")
7591 (version "1.4.3")
7592 (source
7593 (origin
7594 (method url-fetch)
7595 (uri (pypi-uri "bleach" version))
7596 (sha256
7597 (base32
7598 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
7599 (build-system python-build-system)
7600 (propagated-inputs
7601 `(("python-html5lib" ,python-html5lib-0.9)
55436048
RW
7602 ("python-six" ,python-six)))
7603 (native-inputs
7604 `(("python-nose" ,python-nose)))
7bf837fd 7605 (home-page "https://github.com/jsocol/bleach")
55436048
RW
7606 (synopsis "Whitelist-based HTML-sanitizing tool")
7607 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
7608 (license license:asl2.0)))
7609
7610(define-public python2-bleach
7611 (package-with-python2 python-bleach))
7612
60590a3a
RW
7613(define-public python-entrypoints
7614 (package
7615 (name "python-entrypoints")
7616 (version "0.2.2")
7617 (source
7618 (origin
7619 (method url-fetch)
7620 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
7621 version ".tar.gz"))
7622 (file-name (string-append name "-" version ".tar.gz"))
7623 (sha256
7624 (base32
7625 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
7626 (build-system python-build-system)
7627 ;; The package does not come with a setup.py file, so we have to generate
7628 ;; one ourselves.
7629 (arguments
7630 `(#:tests? #f
7631 #:phases
7632 (modify-phases %standard-phases
7633 (add-after 'unpack 'create-setup.py
7634 (lambda _
7635 (call-with-output-file "setup.py"
7636 (lambda (port)
7637 (format port "\
7638from setuptools import setup
7639setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
7640" ,version))))))))
7641 (home-page "https://github.com/takluyver/entrypoints")
7642 (synopsis "Discover and load entry points from installed Python packages")
7643 (description "Entry points are a way for Python packages to advertise
7644objects with some common interface. The most common examples are
7645@code{console_scripts} entry points, which define shell commands by
7646identifying a Python function to run. The @code{entrypoints} module contains
7647functions to find and load entry points.")
7648 (license license:expat)))
7649
7650(define-public python2-entrypoints
7651 (package-with-python2 python-entrypoints))
7652
c60898a8
RW
7653(define-public python-nbconvert
7654 (package
7655 (name "python-nbconvert")
7656 (version "5.0.0b1")
7657 (source
7658 (origin
7659 (method url-fetch)
7660 (uri (pypi-uri "nbconvert" version))
7661 (sha256
7662 (base32
7663 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
7664 (build-system python-build-system)
497355dc
MB
7665 (arguments
7666 `(;; The "bdist_egg" target is disabled by default, causing the installation
7667 ;; to fail.
7668 #:configure-flags (list "bdist_egg")
7669 ;; FIXME: 5 failures, 40 errors.
7670 #:tests? #f))
7671 ;; #:phases
7672 ;; (modify-phases %standard-phases
7673 ;; (replace 'check
7674 ;; (lambda _
7675 ;; (zero? (system* "py.test" "-v")))))
7676 (native-inputs
7677 `(("python-pytest" ,python-pytest)))
c60898a8
RW
7678 (propagated-inputs
7679 `(("python-bleach" ,python-bleach)
7680 ("python-entrypoints" ,python-entrypoints)
7681 ("python-jinja2" ,python-jinja2)
7682 ("python-jupyter-core" ,python-jupyter-core)
7683 ("python-mistune" ,python-mistune)
7684 ("python-nbformat" ,python-nbformat)
7685 ("python-pygments" ,python-pygments)
c60898a8
RW
7686 ("python-traitlets" ,python-traitlets)))
7687 (home-page "http://jupyter.org")
7688 (synopsis "Converting Jupyter Notebooks")
7689 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
7690notebooks to various other formats via Jinja templates. It allows you to
7691convert an @code{.ipynb} notebook file into various static formats including:
7692
7693@enumerate
7694@item HTML
7695@item LaTeX
7696@item PDF
7697@item Reveal JS
7698@item Markdown (md)
7699@item ReStructured Text (rst)
7700@item executable script
7701@end enumerate\n")
7702 (license license:bsd-3)))
7703
7704(define-public python2-nbconvert
7705 (package-with-python2 python-nbconvert))
7706
a0d62280
RW
7707(define-public python-notebook
7708 (package
7709 (name "python-notebook")
7710 (version "4.2.3")
7711 (source (origin
7712 (method url-fetch)
7713 (uri (pypi-uri "notebook" version))
7714 (sha256
7715 (base32
7716 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
7717 (build-system python-build-system)
7718 (arguments
7719 `(#:phases
7720 (modify-phases %standard-phases
7721 (replace 'check
7722 (lambda _
7723 ;; HOME must be set for tests
7724 (setenv "HOME" "/tmp")
7725 (zero? (system* "nosetests")))))))
7726 (propagated-inputs
7727 `(("python-jupyter-core" ,python-jupyter-core)
7728 ("python-nbformat" ,python-nbformat)
7729 ("python-nbconvert" ,python-nbconvert)
7730 ("python-ipython" ,python-ipython)))
7731 (native-inputs
7732 `(("python-nose" ,python-nose)
7733 ("python-sphinx" ,python-sphinx)
7734 ("python-requests" ,python-requests)))
7735 (home-page "http://jupyter.org/")
7736 (synopsis "Web-based notebook environment for interactive computing")
7737 (description
7738 "The Jupyter HTML notebook is a web-based notebook environment for
7739interactive computing.")
3a735ecf 7740 (properties `((python2-variant . ,(delay python2-notebook))))
a0d62280
RW
7741 (license license:bsd-3)))
7742
7743(define-public python2-notebook
3a735ecf
HG
7744 (let ((base (package-with-python2
7745 (strip-python2-variant python-notebook))))
7746 (package (inherit base)
7747 (native-inputs
7748 `(("python2-mock" ,python2-mock)
7749 ,@(package-native-inputs base)))
7750 (arguments
7751 (substitute-keyword-arguments (package-arguments base)
7752 ((#:phases phases)
7753 `(modify-phases ,phases
7754 (add-before 'check 'disable-test-case
7755 ;; The test requires network access to localhost. Curiously it
7756 ;; fails with Python 2 only. Simply make the test-case return
7757 ;; immediately.
7758 (lambda _
7759 (substitute*
7760 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
7761 (("formats = self.nbconvert_api") "return #")))))))))))
a0d62280 7762
d55724ed
RW
7763(define-public python-widgetsnbextension
7764 (package
7765 (name "python-widgetsnbextension")
7766 (version "1.2.6")
7767 (source
7768 (origin
7769 (method url-fetch)
7770 (uri (pypi-uri "widgetsnbextension" version))
7771 (sha256
7772 (base32
7773 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
7774 (build-system python-build-system)
7775 (propagated-inputs
7776 `(("python-notebook" ,python-notebook)))
7777 (native-inputs
58f5fae7
MB
7778 `(("python-certifi" ,python-certifi)
7779 ("python-nose" ,python-nose)))
d55724ed
RW
7780 (home-page "http://ipython.org")
7781 (synopsis "IPython HTML widgets for Jupyter")
7782 (description "This package provides interactive HTML widgets for Jupyter
7783notebooks.")
7784 (license license:bsd-3)))
7785
7786(define-public python2-widgetsnbextension
7787 (package-with-python2 python-widgetsnbextension))
7788
4fe2e344
RW
7789(define-public python-ipywidgets
7790 (package
7791 (name "python-ipywidgets")
7792 (version "5.2.2")
7793 (source
7794 (origin
7795 (method url-fetch)
7796 (uri (pypi-uri "ipywidgets" version))
7797 (sha256
7798 (base32
7799 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
7800 (build-system python-build-system)
7801 ;; FIXME: it's not clear how to run the tests.
7802 (arguments `(#:tests? #f))
7803 (propagated-inputs
7804 `(("python-ipykernel" ,python-ipykernel)
7805 ("python-ipython" ,python-ipython)
4fe2e344
RW
7806 ("python-traitlets" ,python-traitlets)
7807 ("python-widgetsnbextension" ,python-widgetsnbextension)))
7808 (home-page "http://ipython.org")
7809 (synopsis "IPython HTML widgets for Jupyter")
7810 (description "Ipywidgets are interactive HTML widgets for Jupyter
7811notebooks and the IPython kernel. Notebooks come alive when interactive
7812widgets are used. Users gain control of their data and can visualize changes
7813in the data.")
7814 (license license:bsd-3)))
7815
7816(define-public python2-ipywidgets
7817 (package-with-python2 python-ipywidgets))
7818
8ceebf8f
RW
7819(define-public python-jupyter-console
7820 (package
7821 (name "python-jupyter-console")
7822 (version "5.0.0")
7823 (source
7824 (origin
7825 (method url-fetch)
7826 (uri (pypi-uri "jupyter_console" version))
7827 (sha256
7828 (base32
7829 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
7830 (build-system python-build-system)
7831 ;; FIXME: it's not clear how to run the tests.
7832 (arguments `(#:tests? #f))
7833 (propagated-inputs
7834 `(("python-ipykernel" ,python-ipykernel)
7835 ("python-ipython" ,python-ipython)
7836 ("python-jupyter-client" ,python-jupyter-client)
7837 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 7838 ("python-pygments" ,python-pygments)))
8ceebf8f
RW
7839 (home-page "https://jupyter.org")
7840 (synopsis "Jupyter terminal console")
7841 (description "This package provides a terminal-based console frontend for
7842Jupyter kernels. It also allows for console-based interaction with non-Python
7843Jupyter kernels such as IJulia and IRKernel.")
7844 (license license:bsd-3)))
7845
7846(define-public python2-jupyter-console
7847 (package-with-python2 python-jupyter-console))
7848
c27ae827
RW
7849(define-public jupyter
7850 (package
7851 (name "jupyter")
7852 (version "1.0.0")
7853 (source
7854 (origin
7855 (method url-fetch)
7856 (uri (pypi-uri "jupyter" version))
7857 (sha256
7858 (base32
7859 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
7860 (build-system python-build-system)
7861 ;; FIXME: it's not clear how to run the tests.
7862 (arguments `(#:tests? #f))
7863 (propagated-inputs
7864 `(("python-ipykernel" ,python-ipykernel)
7865 ("python-ipywidgets" ,python-ipywidgets)
7866 ("python-jupyter-console" ,python-jupyter-console)
7867 ("python-nbconvert" ,python-nbconvert)
f3b98f4f 7868 ("python-notebook" ,python-notebook)))
c27ae827
RW
7869 (home-page "http://jupyter.org")
7870 (synopsis "Web application for interactive documents")
7871 (description
7872 "The Jupyter Notebook is a web application that allows you to create and
7873share documents that contain live code, equations, visualizations and
7874explanatory text. Uses include: data cleaning and transformation, numerical
7875simulation, statistical modeling, machine learning and much more.")
7876 (license license:bsd-3)))
7877
816a6538
LC
7878(define-public python-chardet
7879 (package
7880 (name "python-chardet")
7881 (version "2.3.0")
7882 (source
7883 (origin
7884 (method url-fetch)
7885 (uri (string-append
7886 "https://pypi.python.org/packages/source/c/chardet/chardet-"
7887 version
7888 ".tar.gz"))
7889 (sha256
7890 (base32
7891 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
7892 (build-system python-build-system)
816a6538
LC
7893 (home-page "https://github.com/chardet/chardet")
7894 (synopsis "Universal encoding detector for Python 2 and 3")
7895 (description
7896 "This package provides @code{chardet}, a Python module that can
7897automatically detect a wide range of file encodings.")
3f641af0 7898 (license license:lgpl2.1+)))
816a6538
LC
7899
7900(define-public python2-chardet
7901 (package-with-python2 python-chardet))
2fc5f186 7902
1872f1bb
KM
7903(define-public python-docopt
7904 (package
7905 (name "python-docopt")
7906 (version "0.6.2")
7907 (source
7908 (origin
7909 (method url-fetch)
7910 ;; The release on PyPI does not include tests.
7911 (uri (string-append
7912 "https://github.com/docopt/docopt/archive/"
7913 version ".tar.gz"))
7914 (file-name (string-append name "-" version ".tar.gz"))
7915 (sha256
7916 (base32
7917 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
7918 (build-system python-build-system)
7919 (native-inputs
f3b98f4f 7920 `(("python-pytest" ,python-pytest)))
1872f1bb
KM
7921 (arguments
7922 `(#:phases (alist-replace
7923 'check
7924 (lambda _ (zero? (system* "py.test")))
7925 %standard-phases)))
7926 (home-page "http://docopt.org")
7927 (synopsis "Command-line interface description language for Python")
7928 (description "This library allows the user to define a command-line
7929interface from a program's help message rather than specifying it
7930programatically with command-line parsers like @code{getopt} and
7931@code{argparse}.")
7932 (license license:expat)))
7933
7934(define-public python2-docopt
7935 (package-with-python2 python-docopt))
7936
2fc5f186
LF
7937(define-public python-zope-event
7938 (package
7939 (name "python-zope-event")
7940 (version "4.1.0")
7941 (source
7942 (origin
7943 (method url-fetch)
7944 (uri (string-append "https://pypi.python.org/packages/source/z"
7945 "/zope.event/zope.event-" version ".tar.gz"))
7946 (sha256
7947 (base32
7948 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
7949 (build-system python-build-system)
2fc5f186
LF
7950 (home-page "http://pypi.python.org/pypi/zope.event")
7951 (synopsis "Event publishing system for Python")
7952 (description "Zope.event provides an event publishing API, intended for
7953use by applications which are unaware of any subscribers to their events. It
7954is a simple event-dispatching system on which more sophisticated event
7955dispatching systems can be built.")
3f641af0 7956 (license license:zpl2.1)))
2fc5f186
LF
7957
7958(define-public python2-zope-event
7959 (package-with-python2 python-zope-event))
97abe268
LF
7960
7961(define-public python-zope-interface
7962 (package
7963 (name "python-zope-interface")
7964 (version "4.1.3")
7965 (source
7966 (origin
7967 (method url-fetch)
7968 (uri (string-append "https://pypi.python.org/packages/source/z"
7969 "/zope.interface/zope.interface-" version ".tar.gz"))
7970 (sha256
7971 (base32
7972 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
7973 (build-system python-build-system)
38d480a8 7974 (native-inputs
97abe268
LF
7975 `(("python-zope-event" ,python-zope-event)))
7976 (home-page "https://github.com/zopefoundation/zope.interface")
7977 (synopsis "Python implementation of the \"design by contract\"
7978methodology")
7979 (description "Zope.interface provides an implementation of \"object
7980interfaces\" for Python. Interfaces are a mechanism for labeling objects as
7981conforming to a given API or contract.")
3f641af0 7982 (license license:zpl2.1)))
97abe268
LF
7983
7984(define-public python2-zope-interface
7985 (package-with-python2 python-zope-interface))
81f2373c
LF
7986
7987(define-public python-zope-exceptions
7988 (package
7989 (name "python-zope-exceptions")
7990 (version "4.0.8")
7991 (source
7992 (origin
7993 (method url-fetch)
7994 (uri (string-append "https://pypi.python.org/packages/source/z"
7995 "/zope.exceptions/zope.exceptions-"
7996 version ".tar.gz"))
7997 (sha256
7998 (base32
7999 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
8000 (build-system python-build-system)
8001 (arguments
8002 '(#:tests? #f)) ; circular dependency with zope.testrunner
8003 (propagated-inputs
8004 `(("python-zope-interface" ,python-zope-interface)))
8005 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
8006 (synopsis "Zope exceptions")
8007 (description "Zope.exceptions provides general-purpose exception types
8008that have uses outside of the Zope framework.")
3f641af0 8009 (license license:zpl2.1)))
81f2373c
LF
8010
8011(define-public python2-zope-exceptions
8012 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
8013
8014(define-public python-zope-testing
8015 (package
8016 (name "python-zope-testing")
8017 (version "4.5.0")
8018 (source
8019 (origin
8020 (method url-fetch)
8021 (uri (string-append "https://pypi.python.org/packages/source/z"
8022 "/zope.testing/zope.testing-" version ".tar.gz"))
8023 (sha256
8024 (base32
b02f7a21
HG
8025 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
8026 (modules '((guix build utils)))
8027 (snippet
8028 '(begin
8029 ;; Remove pre-compiled .pyc files backup files from source.
8030 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
8031 #t))))
900e3c0e
LF
8032 (build-system python-build-system)
8033 (native-inputs
8034 `(("python-zope-exceptions" ,python-zope-exceptions)))
8035 (propagated-inputs
8036 `(("python-zope-interface" ,python-zope-interface)))
8037 (home-page "http://pypi.python.org/pypi/zope.testing")
8038 (synopsis "Zope testing helpers")
8039 (description "Zope.testing provides a number of testing utilities for HTML
8040forms, HTTP servers, regular expressions, and more.")
3f641af0 8041 (license license:zpl2.1)))
900e3c0e
LF
8042
8043(define-public python2-zope-testing
8044 (package-with-python2 python-zope-testing))
01614c4f
LF
8045
8046(define-public python-zope-testrunner
8047 (package
8048 (name "python-zope-testrunner")
8049 (version "4.4.9")
8050 (source
8051 (origin
8052 (method url-fetch)
8053 (uri (string-append "https://pypi.python.org/packages/source/z"
8054 "/zope.testrunner/zope.testrunner-"
8055 version ".zip"))
8056 (sha256
8057 (base32
8058 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
8059 (build-system python-build-system)
385871e5
MB
8060 (arguments
8061 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
01614c4f
LF
8062 (native-inputs
8063 `(("python-six" ,python-six)
e408ffc3 8064 ;("python-zope-interface" ,python-zope-interface)
01614c4f
LF
8065 ("python-zope-exceptions" ,python-zope-exceptions)
8066 ("python-zope-testing" ,python-zope-testing)
8067 ("unzip" ,unzip)))
8068 (propagated-inputs
8069 `(("python-zope-interface" ,python-zope-interface)))
8070 (home-page "http://pypi.python.org/pypi/zope.testrunner")
8071 (synopsis "Zope testrunner script")
8072 (description "Zope.testrunner provides a script for running Python
8073tests.")
3f641af0 8074 (license license:zpl2.1)))
01614c4f
LF
8075
8076(define-public python2-zope-testrunner
8077 (let ((base (package-with-python2 python-zope-testrunner)))
8078 (package
8079 (inherit base)
8080 (native-inputs
8081 (append (package-native-inputs base)
8082 `(("python2-subunit" ,python2-subunit)
8083 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
8084
8085(define-public python-zope-i18nmessageid
8086 (package
8087 (name "python-zope-i18nmessageid")
8088 (version "4.0.3")
8089 (source
8090 (origin
8091 (method url-fetch)
8092 (uri (string-append
8093 "https://pypi.python.org/packages/source/z"
8094 "/zope.i18nmessageid/zope.i18nmessageid-"
8095 version ".tar.gz"))
8096 (sha256
8097 (base32
8098 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
8099 (build-system python-build-system)
6a5c710c
LF
8100 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
8101 (synopsis "Message identifiers for internationalization")
8102 (description "Zope.i18nmessageid provides facilities for declaring
8103internationalized messages within program source text.")
3f641af0 8104 (license license:zpl2.1)))
6a5c710c
LF
8105
8106(define-public python2-zope-i18nmessageid
8107 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
8108
8109(define-public python-zope-schema
8110 (package
8111 (name "python-zope-schema")
8112 (version "4.4.2")
8113 (source
8114 (origin
8115 (method url-fetch)
8116 (uri (string-append "https://pypi.python.org/packages/source/z"
8117 "/zope.schema/zope.schema-" version ".tar.gz"))
8118 (sha256
8119 (base32
8120 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
8121 (build-system python-build-system)
22dba2ef
MB
8122 (arguments
8123 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
71fb09f3
LF
8124 (propagated-inputs
8125 `(("python-zope-event" ,python-zope-event)
2b9e4bea 8126 ("python-zope-exceptions", python-zope-exceptions)
71fb09f3
LF
8127 ("python-zope-interface" ,python-zope-interface)))
8128 (native-inputs
47f77210
HG
8129 `(("python-zope-testing" ,python-zope-testing)
8130 ("python-coverage" ,python-coverage)
8131 ("python-nose" ,python-nose)))
71fb09f3
LF
8132 (home-page "http://pypi.python.org/pypi/zope.schema")
8133 (synopsis "Zope data schemas")
8134 (description "Zope.scheme provides extensions to zope.interface for
8135defining data schemas.")
3f641af0 8136 (license license:zpl2.1)))
71fb09f3
LF
8137
8138(define-public python2-zope-schema
8139 (package-with-python2 python-zope-schema))
fbac9b17
LF
8140
8141(define-public python-zope-configuration
8142 (package
8143 (name "python-zope-configuration")
8144 (version "4.0.3")
8145 (source (origin
8146 (method url-fetch)
8147 (uri (string-append "https://pypi.python.org/packages/source/z"
8148 "/zope.configuration/zope.configuration-"
8149 version ".tar.gz"))
8150 (sha256
8151 (base32
8152 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
8153 (build-system python-build-system)
7e8b1bfa
MB
8154 (arguments
8155 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
fbac9b17
LF
8156 (propagated-inputs
8157 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8158 ("python-zope-schema" ,python-zope-schema)))
8159 (home-page "http://pypi.python.org/pypi/zope.configuration")
8160 (synopsis "Zope Configuration Markup Language")
8161 (description "Zope.configuration implements ZCML, the Zope Configuration
8162Markup Language.")
3f641af0 8163 (license license:zpl2.1)))
fbac9b17
LF
8164
8165(define-public python2-zope-configuration
8166 (package-with-python2 python-zope-configuration))
2ad52086
LF
8167
8168(define-public python-zope-proxy
8169 (package
8170 (name "python-zope-proxy")
8171 (version "4.1.6")
8172 (source
8173 (origin
8174 (method url-fetch)
8175 (uri (string-append "https://pypi.python.org/packages/source/z"
8176 "/zope.proxy/zope.proxy-" version ".tar.gz"))
8177 (sha256
8178 (base32
8179 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
8180 (build-system python-build-system)
66b3aadb
MB
8181 (arguments
8182 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
2ad52086
LF
8183 (propagated-inputs
8184 `(("python-zope-interface" ,python-zope-interface)))
8185 (home-page "http://pypi.python.org/pypi/zope.proxy")
8186 (synopsis "Generic, transparent proxies")
8187 (description "Zope.proxy provides generic, transparent proxies for Python.
8188Proxies are special objects which serve as mostly-transparent wrappers around
8189another object, intervening in the apparent behavior of the wrapped object
8190only when necessary to apply the policy (e.g., access checking, location
8191brokering, etc.) for which the proxy is responsible.")
3f641af0 8192 (license license:zpl2.1)))
2ad52086
LF
8193
8194(define-public python2-zope-proxy
8195 (package-with-python2 python-zope-proxy))
f404b5ea
LF
8196
8197(define-public python-zope-location
8198 (package
8199 (name "python-zope-location")
8200 (version "4.0.3")
8201 (source
8202 (origin
8203 (method url-fetch)
8204 (uri (string-append "https://pypi.python.org/packages/source/z"
8205 "/zope.location/zope.location-" version ".tar.gz"))
8206 (sha256
8207 (base32
8208 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
8209 (build-system python-build-system)
40bb8e07
MB
8210 (arguments
8211 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
d27f176a 8212 (propagated-inputs
f404b5ea
LF
8213 `(("python-zope-proxy" ,python-zope-proxy)
8214 ("python-zope-schema" ,python-zope-schema)))
8215 (home-page "http://pypi.python.org/pypi/zope.location/")
8216 (synopsis "Zope location library")
8217 (description "Zope.location implements the concept of \"locations\" in
8218Zope3, which are are special objects that have a structural location.")
3f641af0 8219 (license license:zpl2.1)))
f404b5ea
LF
8220
8221(define-public python2-zope-location
8222 (package-with-python2 python-zope-location))
d4b77f36
LF
8223
8224(define-public python-zope-security
8225 (package
8226 (name "python-zope-security")
8227 (version "4.0.3")
8228 (source
8229 (origin
8230 (method url-fetch)
8231 (uri (string-append "https://pypi.python.org/packages/source/z"
8232 "/zope.security/zope.security-" version ".tar.gz"))
8233 (sha256
8234 (base32
8235 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
8236 (build-system python-build-system)
a74f9b12
MB
8237 (arguments
8238 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
d4b77f36
LF
8239 (propagated-inputs
8240 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
d4b77f36 8241 ("python-zope-proxy" ,python-zope-proxy)
fd8e23b7 8242 ("python-zope-schema" ,python-zope-schema)))
a74f9b12
MB
8243 (native-inputs
8244 `(("python-six" ,python-six)
8245 ("python-zope-component" ,python-zope-component)
fd8e23b7
HG
8246 ("python-zope-configuration" ,python-zope-configuration)
8247 ("python-zope-location" ,python-zope-location)
d4b77f36
LF
8248 ("python-zope-testrunner" ,python-zope-testrunner)
8249 ("python-zope-testing" ,python-zope-testing)))
8250 (home-page "http://pypi.python.org/pypi/zope.security")
8251 (synopsis "Zope security framework")
8252 (description "Zope.security provides a generic mechanism to implement
8253security policies on Python objects.")
3f641af0 8254 (license license:zpl2.1)))
d4b77f36
LF
8255
8256(define-public python2-zope-security
04417662
EF
8257 (let ((zope-security (package-with-python2 python-zope-security)))
8258 (package (inherit zope-security)
8259 (propagated-inputs
8260 `(("python2-zope-testrunner" ,python2-zope-testrunner)
8261 ,@(alist-delete
8262 "python-zope-testrunner"
8263 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
8264
8265(define-public python-zope-component
8266 (package
8267 (name "python-zope-component")
35e1a0f1 8268 (version "4.3.0")
a6b61b27
LF
8269 (source
8270 (origin
8271 (method url-fetch)
35e1a0f1 8272 (uri (pypi-uri "zope.component" version))
a6b61b27
LF
8273 (sha256
8274 (base32
35e1a0f1 8275 "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
a6b61b27
LF
8276 (build-system python-build-system)
8277 (arguments
8278 ;; Skip tests due to circular dependency with python-zope-security.
8279 '(#:tests? #f))
8280 (native-inputs
8281 `(("python-zope-testing" ,python-zope-testing)))
8282 (propagated-inputs
8283 `(("python-zope-event" ,python-zope-event)
8284 ("python-zope-interface" ,python-zope-interface)
8285 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8286 ("python-zope-configuration" ,python-zope-configuration)))
8287 (home-page "https://github.com/zopefoundation/zope.component")
8288 (synopsis "Zope Component Architecture")
8289 (description "Zope.component represents the core of the Zope Component
8290Architecture. Together with the zope.interface package, it provides
8291facilities for defining, registering and looking up components.")
3f641af0 8292 (license license:zpl2.1)))
a6b61b27
LF
8293
8294(define-public python2-zope-component
8295 (package-with-python2 python-zope-component))
3859ac12 8296
1ae44b80 8297(define-public python-pythondialog
b5f218be 8298 (package
1ae44b80 8299 (name "python-pythondialog")
42c4b246 8300 (version "3.4.0")
b5f218be
LF
8301 (source
8302 (origin
8303 (method url-fetch)
1ae44b80 8304 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
8305 (sha256
8306 (base32
1ae44b80 8307 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
8308 (build-system python-build-system)
8309 (arguments
8310 `(#:phases
8311 (modify-phases %standard-phases
8312 (add-after 'unpack 'patch-path
8313 (lambda* (#:key inputs #:allow-other-keys)
8314 (let* ((dialog (assoc-ref inputs "dialog")))
8315 ;; Since this library really wants to grovel the search path, we
8316 ;; must hardcode dialog's store path into it.
8317 (substitute* "dialog.py"
8318 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
8319 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
8320 #t))))
b5f218be
LF
8321 #:tests? #f)) ; no test suite
8322 (propagated-inputs
8323 `(("dialog" ,dialog)))
8324 (home-page "http://pythondialog.sourceforge.net/")
8325 (synopsis "Python interface to the UNIX dialog utility")
8326 (description "A Python wrapper for the dialog utility. Its purpose is to
8327provide an easy to use, pythonic and comprehensive Python interface to dialog.
8328This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 8329 (license license:lgpl2.1)
1ae44b80
LF
8330 (properties `((python2-variant . ,(delay python2-pythondialog))))))
8331
8332(define-public python2-pythondialog
8333 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
8334 (package
8335 (inherit base)
8336 (version (package-version python-pythondialog))
8337 (source (origin
8338 (method url-fetch)
8339 (uri (pypi-uri "python2-pythondialog" version))
8340 (sha256
8341 (base32
8342 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 8343
3859ac12
LF
8344(define-public python-pyrfc3339
8345 (package
8346 (name "python-pyrfc3339")
d9aa097b 8347 (version "1.0")
3859ac12
LF
8348 (source
8349 (origin
8350 (method url-fetch)
d9aa097b 8351 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
8352 (sha256
8353 (base32
d9aa097b 8354 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
8355 (build-system python-build-system)
8356 (propagated-inputs
8357 `(("python-pytz" ,python-pytz)))
8358 (native-inputs
f3b98f4f 8359 `(("python-nose" ,python-nose)))
3859ac12
LF
8360 (home-page "https://github.com/kurtraschke/pyRFC3339")
8361 (synopsis "Python timestamp library")
8362 (description "Python library for generating and parsing RFC 3339-compliant
8363timestamps.")
8364 (license license:expat)))
8365
8366(define-public python2-pyrfc3339
8367 (package-with-python2 python-pyrfc3339))
5eea2005
LF
8368
8369(define-public python-werkzeug
8370 (package
8371 (name "python-werkzeug")
bbb99d6b 8372 (version "0.11.15")
5eea2005
LF
8373 (source
8374 (origin
8375 (method url-fetch)
4b47cbfa 8376 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
8377 (sha256
8378 (base32
bbb99d6b 8379 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
5eea2005
LF
8380 (build-system python-build-system)
8381 (native-inputs
8382 `(("python-pytest" ,python-pytest)))
8383 (home-page "http://werkzeug.pocoo.org/")
8384 (synopsis "Utilities for WSGI applications")
8385 (description "One of the most advanced WSGI utility modules. It includes a
8386powerful debugger, full-featured request and response objects, HTTP utilities to
8387handle entity tags, cache control headers, HTTP dates, cookie handling, file
8388uploads, a powerful URL routing system and a bunch of community-contributed
8389addon modules.")
3f641af0 8390 (license license:x11)))
5eea2005
LF
8391
8392(define-public python2-werkzeug
8393 (package-with-python2 python-werkzeug))
99fffa8a
LF
8394
8395(define-public python-configobj
8396 (package
8397 (name "python-configobj")
8398 (version "5.0.6")
8399 (source (origin
8400 (method url-fetch)
8401 (uri (string-append
8402 "https://pypi.python.org/packages/source/c/configobj/"
8403 "configobj-" version ".tar.gz"))
8404 (sha256
8405 (base32
8406 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
8407 ;; Patch setup.py so it looks for python-setuptools, which is
8408 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 8409 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a 8410 (build-system python-build-system)
861f70c9 8411 (propagated-inputs
f3b98f4f 8412 `(("python-six" ,python-six)))
99fffa8a
LF
8413 (synopsis "Config file reading, writing and validation")
8414 (description "ConfigObj is a simple but powerful config file reader and
8415writer: an ini file round tripper. Its main feature is that it is very easy to
8416use, with a straightforward programmer’s interface and a simple syntax for
8417config files.")
8418 (home-page "https://github.com/DiffSK/configobj")
3f641af0 8419 (license license:bsd-3)))
99fffa8a
LF
8420
8421(define-public python2-configobj
8422 (package-with-python2 python-configobj))
79e8a291
LF
8423
8424(define-public python-configargparse
8425 (package
8426 (name "python-configargparse")
8427 (version "0.10.0")
8428 (source (origin
8429 (method url-fetch)
8430 (uri (string-append
8431 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
8432 "ConfigArgParse-" version ".tar.gz"))
8433 (sha256
8434 (base32
8435 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
8436 (build-system python-build-system)
8437 (arguments
8438 ;; FIXME: Bug in test suite filed upstream:
8439 ;; https://github.com/bw2/ConfigArgParse/issues/32
8440 '(#:tests? #f))
8441 (synopsis "Replacement for argparse")
8442 (description "A drop-in replacement for argparse that allows options to also
8443be set via config files and/or environment variables.")
8444 (home-page "https://github.com/bw2/ConfigArgParse")
8445 (license license:expat)))
8446
8447(define-public python2-configargparse
8448 (package-with-python2 python-configargparse))
ab41f979
LF
8449
8450(define-public python-ndg-httpsclient
8451 (package
8452 (name "python-ndg-httpsclient")
ae476d01 8453 (version "0.4.2")
ab41f979
LF
8454 (source (origin
8455 (method url-fetch)
7be13d00 8456 (uri (pypi-uri "ndg_httpsclient" version))
ab41f979
LF
8457 (sha256
8458 (base32
ae476d01 8459 "1b5qirv46v4dpnmfqviwq42mdwfcby4dxmz0i41wad2337pqf2aq"))))
ab41f979 8460 (build-system python-build-system)
a39cc016
LF
8461 (arguments
8462 '(;; The tests appear to require networking.
8463 #:tests? #f))
ab41f979
LF
8464 (propagated-inputs
8465 `(("python-pyopenssl" ,python-pyopenssl)))
8466 (synopsis "HTTPS support for Python's httplib and urllib2")
8467 (description "This is a HTTPS client implementation for httplib and urllib2
8468based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
8469over the default provided with Python and importantly enables full verification
8470of the SSL peer.")
8471 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 8472 (license license:bsd-3)))
ab41f979
LF
8473
8474;; python2-openssl requires special care, so package-with-python2 is
8475;; insufficient.
8476(define-public python2-ndg-httpsclient
8477 (package (inherit python-ndg-httpsclient)
8478 (name "python2-ndg-httpsclient")
8479 (arguments `(#:python ,python-2))
8480 (propagated-inputs
8481 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
8482
8483(define-public python-contextlib2
8484 (package
8485 (name "python-contextlib2")
8486 (version "0.4.0")
8487 (source
8488 (origin
8489 (method url-fetch)
8490 (uri (pypi-uri "contextlib2" version))
8491 (sha256
8492 (base32
8493 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
8494 (build-system python-build-system)
8495 (arguments
8496 `(#:phases
8497 (modify-phases %standard-phases
8498 (replace 'check
8499 (lambda _ (zero?
8500 (system*
b3546174 8501 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
8502 (home-page "http://contextlib2.readthedocs.org/")
8503 (synopsis "Tools for decorators and context managers")
8504 (description "This module is primarily a backport of the Python
85053.2 contextlib to earlier Python versions. Like contextlib, it
8506provides utilities for common tasks involving decorators and context
8507managers. It also contains additional features that are not part of
8508the standard library.")
3f641af0 8509 (license license:psfl)))
03f964a5
CM
8510
8511(define-public python2-contextlib2
8512 (package-with-python2 python-contextlib2))
210bf497
DT
8513
8514(define-public python-texttable
8515 (package
8516 (name "python-texttable")
4c4d4df3 8517 (version "0.8.7")
210bf497
DT
8518 (source
8519 (origin
8520 (method url-fetch)
8521 (uri (pypi-uri "texttable" version))
8522 (sha256
8523 (base32
4c4d4df3 8524 "1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a"))))
210bf497
DT
8525 (build-system python-build-system)
8526 (arguments '(#:tests? #f)) ; no tests
8527 (home-page "https://github.com/foutaise/texttable/")
8528 (synopsis "Python module for creating simple ASCII tables")
8529 (description "Texttable is a Python module for creating simple ASCII
8530tables.")
3f641af0 8531 (license license:lgpl2.1+)))
210bf497
DT
8532
8533(define-public python2-texttable
8534 (package-with-python2 python-texttable))
67c52bb3
DT
8535
8536(define-public python-websocket-client
8537 (package
8538 (name "python-websocket-client")
6b810897 8539 (version "0.37.0")
67c52bb3
DT
8540 (source
8541 (origin
8542 (method url-fetch)
6b810897 8543 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
8544 (sha256
8545 (base32
6b810897 8546 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3 8547 (build-system python-build-system)
a5333f7c
HG
8548 (propagated-inputs
8549 `(("python-six" ,python-six)))
67c52bb3
DT
8550 (home-page "https://github.com/liris/websocket-client")
8551 (synopsis "WebSocket client for Python")
8552 (description "The Websocket-client module provides the low level APIs for
8553WebSocket usage in Python programs.")
3f641af0 8554 (license license:lgpl2.1+)))
67c52bb3
DT
8555
8556(define-public python2-websocket-client
8557 (package-with-python2 python-websocket-client))
5c6eea2a
LF
8558
8559(define-public python-atomicwrites
8560 (package
8561 (name "python-atomicwrites")
c56ad5e2 8562 (version "1.1.5")
5c6eea2a
LF
8563 (source (origin
8564 (method url-fetch)
8565 (uri (pypi-uri "atomicwrites" version))
8566 (sha256
8567 (base32
c56ad5e2 8568 "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214"))))
5c6eea2a
LF
8569 (build-system python-build-system)
8570 (synopsis "Atomic file writes in Python")
8571 (description "Library for atomic file writes using platform dependent tools
8f65585b 8572for atomic file system operations.")
5c6eea2a 8573 (home-page "https://github.com/untitaker/python-atomicwrites")
f210e944 8574 (license license:expat)))
9bb6d184
LF
8575
8576(define-public python2-atomicwrites
f210e944 8577 (package-with-python2 python-atomicwrites))
561bb3cb
LF
8578
8579(define-public python-requests-toolbelt
8580 (package
8581 (name "python-requests-toolbelt")
c02af1c8 8582 (version "0.6.2")
561bb3cb
LF
8583 (source (origin
8584 (method url-fetch)
c02af1c8
LF
8585 (uri (string-append
8586 "https://pypi.python.org/packages/"
8587 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
8588 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
8589 (sha256
8590 (base32
c02af1c8 8591 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb 8592 (build-system python-build-system)
759aadd4
LF
8593 (native-inputs
8594 `(("python-betamax" ,python-betamax)
8595 ("python-mock" ,python-mock)
8596 ("python-pytest" ,python-pytest)))
561bb3cb
LF
8597 (propagated-inputs
8598 `(("python-requests" ,python-requests)))
8599 (synopsis "Extensions to python-requests")
8600 (description "This is a toolbelt of useful classes and functions to be used
8601with python-requests.")
8602 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 8603 (license license:asl2.0)))
d1deb90b
LF
8604
8605(define-public python-click-threading
8606 (package
8607 (name "python-click-threading")
3d2e0dbc 8608 (version "0.2.0")
d1deb90b
LF
8609 (source (origin
8610 (method url-fetch)
3d2e0dbc
LF
8611 (uri (string-append
8612 "https://pypi.python.org/packages/"
8613 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
8614 "click-threading-" version ".tar.gz"))
d1deb90b
LF
8615 (sha256
8616 (base32
3d2e0dbc 8617 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
8618 (build-system python-build-system)
8619 (propagated-inputs
8620 `(("python-click" ,python-click)))
8621 (synopsis "Utilities for multithreading in Click")
8622 (description "This package provides utilities for multithreading in Click
8623applications.")
8624 (home-page "https://github.com/click-contrib/click-threading")
8625 (license license:expat)))
7b17cab9
LF
8626
8627(define-public python-click-log
8628 (package
8629 (name "python-click-log")
42734b9a 8630 (version "0.1.8")
7b17cab9
LF
8631 (source (origin
8632 (method url-fetch)
8633 (uri (pypi-uri "click-log" version))
8634 (sha256
8635 (base32
42734b9a 8636 "14ikfjfgnzf21mjniq9lfk2igzykgzfvwwrk85nw2b9fq44109sp"))))
7b17cab9
LF
8637 (build-system python-build-system)
8638 (propagated-inputs
8639 `(("python-click" ,python-click)))
8640 (synopsis "Logging for click applications")
8641 (description "This package provides a Python library for logging Click
8642applications.")
8643 (home-page "https://github.com/click-contrib/click-log")
8644 (license license:expat)))
7b3a4ee4
LF
8645
8646(define-public python-apipkg
8647 (package
8648 (name "python-apipkg")
8649 (version "1.4")
8650 (source (origin
8651 (method url-fetch)
8652 (uri (pypi-uri "apipkg" version))
8653 (sha256
8654 (base32
8655 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
8656 (build-system python-build-system)
328bb95d 8657 (native-inputs
7b3a4ee4
LF
8658 `(("python-pytest" ,python-pytest)))
8659 (synopsis "Namespace control and lazy-import mechanism")
8660 (description "With apipkg you can control the exported namespace of a Python
8661package and greatly reduce the number of imports for your users. It is a small
8662pure Python module that works on virtually all Python versions.")
8663 (home-page "https://bitbucket.org/hpk42/apipkg")
f210e944 8664 (license license:expat)))
e08739c3
CAW
8665
8666(define-public python2-apipkg
f210e944 8667 (package-with-python2 python-apipkg))
848964fe
LF
8668
8669(define-public python-execnet
8670 (package
8671 (name "python-execnet")
8672 (version "1.4.1")
8673 (source (origin
8674 (method url-fetch)
8675 (uri (pypi-uri "execnet" version))
8676 (sha256
8677 (base32
8678 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
8679 (build-system python-build-system)
ca0eee9d
LF
8680 (arguments
8681 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
8682 ;; The two test failures are caused by the lack of an `ssh` executable.
8683 ;; The test suite can be run with pytest after the 'install' phase.
8684 #:tests? #f))
848964fe 8685 (native-inputs
ca0eee9d
LF
8686 `(("python-pytest" ,python-pytest)
8687 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 8688 (propagated-inputs
848964fe
LF
8689 `(("python-apipkg" ,python-apipkg)))
8690 (synopsis "Rapid multi-Python deployment")
8691 (description "Execnet provides a share-nothing model with
8692channel-send/receive communication for distributing execution across many
8693Python interpreters across version, platform and network barriers. It has a
d1e4ad1b 8694minimal and fast API targeting the following uses:
848964fe
LF
8695@enumerate
8696@item distribute tasks to (many) local or remote CPUs
8697@item write and deploy hybrid multi-process applications
8698@item write scripts to administer multiple environments
8699@end enumerate")
8700 (home-page "http://codespeak.net/execnet/")
f210e944 8701 (license license:expat)))
16c84f90
CAW
8702
8703(define-public python2-execnet
f210e944 8704 (package-with-python2 python-execnet))
6720dbb4 8705
d5bbf806 8706(define-public python-trollius-redis
8707 (package
8708 (name "python-trollius-redis")
8709 (version "0.1.4")
8710 (source
8711 (origin
8712 (method url-fetch)
8713 (uri (pypi-uri "trollius_redis" version))
8714 (sha256
8715 (base32
8716 "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
8717 (build-system python-build-system)
97b62eb0
MB
8718 ;; TODO: Tests require packaging 'hiredis'.
8719 (arguments '(#:tests? #f))
d5bbf806 8720 (home-page "https://github.com/benjolitz/trollius-redis")
8721 (synopsis "Port of asyncio-redis to trollius")
8722 (description "@code{trollius-redis} is a Redis client for Python
8723 trollius. It is an asynchronious IO (PEP 3156) implementation of the
8724 Redis protocol.")
8725 (license license:bsd-2)))
8726
8727(define-public python2-trollius-redis
8728 (package-with-python2 python-trollius-redis))
8729
6720dbb4
LF
8730;;; The software provided by this package was integrated into pytest 2.8.
8731(define-public python-pytest-cache
8732 (package
8733 (name "python-pytest-cache")
8734 (version "1.0")
8735 (source (origin
8736 (method url-fetch)
8737 (uri (pypi-uri "pytest-cache" version))
8738 (sha256
8739 (base32
8740 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
8741 (build-system python-build-system)
f22efa01 8742 (propagated-inputs
630d938f
EF
8743 `(("python-apipkg" ,python-apipkg)
8744 ("python-execnet" ,python-execnet)
8745 ("python-py" ,python-py)
8746 ("python-pytest" ,python-pytest)))
6720dbb4
LF
8747 (synopsis "Py.test plugin with mechanisms for caching across test runs")
8748 (description "The pytest-cache plugin provides tools to rerun failures from
8749the last py.test invocation.")
8750 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
f210e944 8751 (license license:expat)))
0adc21c2
EF
8752
8753(define-public python2-pytest-cache
f210e944 8754 (package-with-python2 python-pytest-cache))
d7e729fe
LF
8755
8756(define-public python-pytest-localserver
8757 (package
8758 (name "python-pytest-localserver")
29f20168 8759 (version "0.3.5")
d7e729fe
LF
8760 (source (origin
8761 (method url-fetch)
29f20168 8762 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
8763 (sha256
8764 (base32
29f20168 8765 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
8766 (build-system python-build-system)
8767 (arguments
8768 `(#:phases (modify-phases %standard-phases
8769 (replace 'check
8770 (lambda _
8771 (zero? (system* "py.test" "--genscript=runtests.py"))
8772 (zero? (system* "py.test")))))))
8773 (native-inputs
d7e729fe
LF
8774 `(("python-pytest" ,python-pytest)
8775 ("python-requests" ,python-requests)
9ba40f05 8776 ("python-six" ,python-six)))
f22efa01 8777 (propagated-inputs
9ba40f05 8778 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
8779 (synopsis "Py.test plugin to test server connections locally")
8780 (description "Pytest-localserver is a plugin for the pytest testing
8781framework which enables you to test server connections locally.")
8782 (home-page "https://pypi.python.org/pypi/pytest-localserver")
8783 (license license:expat)))
28cecbb7
LF
8784
8785(define-public python-wsgi-intercept
8786 (package
8787 (name "python-wsgi-intercept")
909fbd2b 8788 (version "1.2.2")
28cecbb7
LF
8789 (source (origin
8790 (method url-fetch)
909fbd2b
LF
8791 (uri (string-append
8792 "https://pypi.python.org/packages/"
8793 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
8794 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
8795 (sha256
8796 (base32
909fbd2b 8797 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7 8798 (build-system python-build-system)
b9fc496f
HG
8799 (propagated-inputs
8800 `(("python-six" ,python-six)))
28cecbb7 8801 (native-inputs
9d813ec1 8802 `(("python-pytest" ,python-pytest)
b9fc496f
HG
8803 ("python-httplib2" ,python-httplib2)
8804 ("python-requests" ,python-requests)
8757f050 8805 ("python-urllib3" ,python-urllib3)))
28cecbb7
LF
8806 (synopsis "Puts a WSGI application in place of a real URI for testing")
8807 (description "Wsgi_intercept installs a WSGI application in place of a real
8808URI for testing. Testing a WSGI application normally involves starting a
8809server at a local host and port, then pointing your test code to that address.
8810Instead, this library lets you intercept calls to any specific host/port
8811combination and redirect them into a WSGI application importable by your test
8812program. Thus, you can avoid spawning multiple processes or threads to test
8813your Web app.")
8814 (home-page "https://github.com/cdent/wsgi-intercept")
8815 (license license:expat)))
89b8a551
LF
8816
8817(define-public python-pytest-xprocess
8818 (package
8819 (name "python-pytest-xprocess")
8820 (version "0.9.1")
8821 (source (origin
8822 (method url-fetch)
8823 (uri (pypi-uri "pytest-xprocess" version))
8824 (sha256
8825 (base32
8826 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
8827 (build-system python-build-system)
8828 (propagated-inputs
8829 `(("python-pytest" ,python-pytest)
8830 ("python-pytest-cache" ,python-pytest-cache)
8831 ("python-psutil" ,python-psutil)))
8832 (synopsis "Pytest plugin to manage external processes across test runs")
8833 (description "Pytest-xprocess is an experimental py.test plugin for managing
8834processes across test runs.")
8835 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
8836 (license license:expat)))
5c299bf0
LF
8837
8838(define-public python-icalendar
8839 (package
8840 (name "python-icalendar")
b611d018 8841 (version "3.11.3")
5c299bf0
LF
8842 (source (origin
8843 (method url-fetch)
8844 (uri (pypi-uri "icalendar" version))
8845 (sha256
8846 (base32
b611d018 8847 "086jslw8cg2hni79j267p1dy6d27m7q5hi39ni2clh9waqbdf5v3"))))
5c299bf0
LF
8848 (build-system python-build-system)
8849 (propagated-inputs
22d7360b 8850 `(("python-dateutil" ,python-dateutil)
5c299bf0
LF
8851 ("python-pytz" ,python-pytz)))
8852 (synopsis "Python library for parsing iCalendar files")
8853 (description "The icalendar package is a parser/generator of iCalendar
8854files for use with Python.")
8855 (home-page "https://github.com/collective/icalendar")
3f641af0 8856 (license license:bsd-2)))
6bbbb53e
LF
8857
8858(define-public python-sphinxcontrib-newsfeed
8859 (package
8860 (name "python-sphinxcontrib-newsfeed")
8861 (version "0.1.4")
8862 (source (origin
8863 (method url-fetch)
8864 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
8865 (sha256
8866 (base32
8867 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
3d2a544c 8868 (arguments '(#:tests? #f)) ; No tests.
6bbbb53e
LF
8869 (build-system python-build-system)
8870 (propagated-inputs
251ed7f2 8871 `(("python-sphinx" ,python-sphinx)))
6bbbb53e
LF
8872 (synopsis "News Feed extension for Sphinx")
8873 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
8874Blog, News or Announcements section to a Sphinx website.")
8875 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 8876 (license license:bsd-2)))
2216e15c
SB
8877
8878(define-public python-args
8879 (package
8880 (name "python-args")
8881 (version "0.1.0")
8882 (source (origin
8883 (method url-fetch)
8884 (uri (pypi-uri "args" version))
8885 (sha256
8886 (base32
8887 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
8888 (build-system python-build-system)
2216e15c
SB
8889 (home-page "https://github.com/kennethreitz/args")
8890 (synopsis "Command-line argument parser")
8891 (description
8892 "This library provides a Python module to parse command-line arguments.")
3f641af0 8893 (license license:bsd-3)))
2216e15c
SB
8894
8895(define-public python2-args
8896 (package-with-python2 python-args))
c06a3de9
SB
8897
8898(define-public python-clint
8899 (package
8900 (name "python-clint")
8901 (version "0.5.1")
8902 (source (origin
8903 (method url-fetch)
8904 (uri (pypi-uri "clint" version))
8905 (sha256
8906 (base32
8907 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
8908 (build-system python-build-system)
6145b604
MB
8909 (arguments
8910 '(#:phases
8911 (modify-phases %standard-phases
8912 (replace 'check
8913 (lambda _
8914 (zero? (system* "py.test" "-v")))))))
8915 (native-inputs
8916 `(("python-pytest" ,python-pytest)))
f22efa01 8917 (propagated-inputs
f3b98f4f 8918 `(("python-args" ,python-args)))
c06a3de9
SB
8919 (home-page "https://github.com/kennethreitz/clint")
8920 (synopsis "Command-line interface tools")
8921 (description
8922 "Clint is a Python module filled with a set of tools for developing
8923command-line applications, including tools for colored and indented
8924output, progress bar display, and pipes.")
3f641af0 8925 (license license:isc)))
c06a3de9
SB
8926
8927(define-public python2-clint
8928 (package-with-python2 python-clint))
4ecdeef8
SB
8929
8930(define-public python-astor
8931 (package
8932 (name "python-astor")
8933 (version "0.5")
8934 (source (origin
8935 (method url-fetch)
8936 (uri (pypi-uri "astor" version))
8937 (sha256
8938 (base32
8939 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
8940 (build-system python-build-system)
4ecdeef8
SB
8941 (home-page "https://github.com/berkerpeksag/astor")
8942 (synopsis "Read and write Python ASTs")
8943 (description
8944 "Astor is designed to allow easy manipulation of Python source via the
8945Abstract Syntax Tree.")
3f641af0 8946 (license license:bsd-3)))
4ecdeef8
SB
8947
8948(define-public python2-astor
8949 (package-with-python2 python-astor))
e224b7d0
SB
8950
8951(define-public python-rply
8952 (package
8953 (name "python-rply")
8954 (version "0.7.4")
8955 (source (origin
8956 (method url-fetch)
8957 (uri (pypi-uri "rply" version))
8958 (sha256
8959 (base32
8960 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
8961 (build-system python-build-system)
f22efa01 8962 (propagated-inputs
f3b98f4f 8963 `(("python-appdirs" ,python-appdirs)))
e224b7d0
SB
8964 (home-page "https://github.com/alex/rply")
8965 (synopsis "Parser generator for Python")
8966 (description
8967 "This package provides a pure Python based parser generator, that also
8968works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
8969with a new public API, and RPython support.")
3f641af0 8970 (license license:bsd-3)))
e224b7d0
SB
8971
8972(define-public python2-rply
8973 (package-with-python2 python-rply))
c3e919d7
SB
8974
8975(define-public python-hy
8976 (package
8977 (name "python-hy")
8978 (version "0.11.1")
8979 (source (origin
8980 (method url-fetch)
8981 (uri (pypi-uri "hy" version))
8982 (sha256
8983 (base32
8984 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
8985 (build-system python-build-system)
15c37077
MB
8986 (arguments
8987 '(#:phases
8988 (modify-phases %standard-phases
8989 (replace 'check
8990 (lambda _
8991 ;; Tests require write access to HOME.
8992 (setenv "HOME" "/tmp")
8993 (zero? (system* "nosetests")))))))
8994 (native-inputs
8995 `(("python-coverage" ,python-coverage)
8996 ("python-nose" ,python-nose)))
f22efa01 8997 (propagated-inputs
c3e919d7
SB
8998 `(("python-astor" ,python-astor)
8999 ("python-clint" ,python-clint)
f3b98f4f 9000 ("python-rply" ,python-rply)))
c3e919d7
SB
9001 (home-page "http://hylang.org/")
9002 (synopsis "Lisp frontend to Python")
9003 (description
9004 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
9005its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
9006Python at your fingertips, in Lisp form.")
9007 (license license:expat)))
9008
9009(define-public python2-hy
9010 (package-with-python2 python-hy))
7a5b944e 9011
81f7f297
EF
9012(define-public python-rauth
9013 (package
9014 (name "python-rauth")
06fe79f2 9015 (version "0.7.3")
81f7f297
EF
9016 (source
9017 (origin
9018 (method url-fetch)
9019 (uri (pypi-uri "rauth" version))
9020 (sha256
9021 (base32
06fe79f2 9022 "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
81f7f297
EF
9023 (build-system python-build-system)
9024 (arguments
9025 `(#:test-target "check"))
f22efa01 9026 (propagated-inputs
81f7f297
EF
9027 `(("python-requests" ,python-requests)))
9028 (home-page "https://github.com/litl/rauth")
9029 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
9030 (description
9031 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
9032provides service wrappers for convenient connection initialization and
9033authenticated session objects providing things like keep-alive.")
0848d8d3
EF
9034 (license license:expat)
9035 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
9036
9037(define-public python2-rauth
0848d8d3
EF
9038 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
9039 (package
9040 (inherit base)
00e10c6e 9041 (native-inputs `(("python2-unittest2" ,python2-unittest2)
0848d8d3 9042 ,@(package-native-inputs base))))))
81f7f297 9043
1abe448d
EF
9044(define-public python2-functools32
9045 (package
9046 (name "python2-functools32")
9047 (version "3.2.3-2")
9048 (source
9049 (origin
9050 (method url-fetch)
9051 (uri (pypi-uri "functools32" version))
9052 (sha256
9053 (base32
9054 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
9055 (build-system python-build-system)
9056 (arguments
9057 `(#:python ,python-2
9058 #:tests? #f)) ; no test target
1abe448d
EF
9059 (home-page "https://github.com/MiCHiLU/python-functools32")
9060 (synopsis
9061 "Backport of the functools module from Python 3.2.3")
9062 (description
9063 "This package is a backport of the @code{functools} module from Python
90643.2.3 for use with older versions of Python and PyPy.")
9065 (license license:expat)))
9066
550bd98b
MB
9067(define-public python2-subprocess32
9068 (package
9069 (name "python2-subprocess32")
9070 (version "3.2.7")
9071 (source (origin
9072 (method url-fetch)
9073 (uri (pypi-uri "subprocess32" version))
9074 (sha256
9075 (base32
9076 "14350dhhlhyz5gqzi3lihn9m6lvskx5mcb20srx1kgsk9i50li8y"))
9077 (patches
9078 (search-patches "python2-subprocess32-disable-input-test.patch"))))
9079 (build-system python-build-system)
9080 (arguments
9081 `(#:python ,python-2
9082 #:phases
9083 (modify-phases %standard-phases
9084 (add-after 'unpack 'patch-/bin/sh
9085 (lambda _
9086 (substitute* '("subprocess32.py"
9087 "test_subprocess32.py")
9088 (("/bin/sh") (which "sh")))
9089 #t))
9090 (delete 'check)
9091 (add-after 'install 'check
9092 (lambda* (#:key inputs outputs #:allow-other-keys)
9093 ;; For some reason this package fails to import
9094 ;; _posixsubprocess.so when PYTHONPATH is set to the build
9095 ;; directory. Running tests after install is easier.
9096 (add-installed-pythonpath inputs outputs)
9097 (zero? (system* "python" "test_subprocess32.py")))))))
9098 (home-page "https://github.com/google/python-subprocess32")
9099 (synopsis "Backport of the subprocess module from Python 3.2")
9100 (description
9101 "This is a backport of the @code{subprocess} standard library module
9102from Python 3.2 and 3.3 for use on Python 2. It includes bugfixes and some
9103new features. On POSIX systems it is guaranteed to be reliable when used
9104in threaded applications. It includes timeout support from Python 3.3 but
9105otherwise matches 3.2’s API.")
9106 (license license:psfl)))
9107
877889f3 9108(define-public python2-futures
7a5b944e 9109 (package
877889f3 9110 (name "python2-futures")
e17a1248 9111 (version "3.0.5")
7a5b944e
EF
9112 (source
9113 (origin
9114 (method url-fetch)
9115 (uri (pypi-uri "futures" version))
9116 (sha256
9117 (base32
e17a1248 9118 "1pw1z4329xvlabdpwqa6b7v2fxf7hl64m4cgr22ckbym8m8m4hh5"))))
7a5b944e 9119 (build-system python-build-system)
877889f3 9120 (arguments `(#:python ,python-2))
7a5b944e
EF
9121 (home-page "https://github.com/agronholm/pythonfutures")
9122 (synopsis
9123 "Backport of the concurrent.futures package from Python 3.2")
9124 (description
9125 "The concurrent.futures module provides a high-level interface for
9126asynchronously executing callables. This package backports the
9127concurrent.futures package from Python 3.2")
3f641af0 9128 (license license:bsd-3)))
7a5b944e 9129
5cb2fe44
EF
9130(define-public python-promise
9131 (package
9132 (name "python-promise")
9133 (version "0.4.2")
9134 (source
9135 (origin
9136 (method url-fetch)
9137 (uri (pypi-uri "promise" version))
9138 (sha256
9139 (base32
9140 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
9141 (build-system python-build-system)
9142 ;; Tests wants python-futures, which is a python2 only program, and
9143 ;; can't be found by python-promise at test time.
9144 (arguments `(#:tests? #f))
9145 (home-page "https://github.com/syrusakbary/promise")
9146 (synopsis "Promises/A+ implementation for Python")
9147 (description
9148 "Promises/A+ implementation for Python")
9149 (properties `((python2-variant . ,(delay python2-promise))))
9150 (license license:expat)))
9151
9152(define-public python2-promise
9153 (let ((promise (package-with-python2
9154 (strip-python2-variant python-promise))))
9155 (package (inherit promise)
9156 (arguments (substitute-keyword-arguments (package-arguments promise)
9157 ((#:tests? _) #t)))
9158 (native-inputs
9159 `(("python2-futures" ,python2-futures)
9160 ("python2-pytest" ,python2-pytest)
5cb2fe44
EF
9161 ,@(package-native-inputs promise))))))
9162
c18f6368
EF
9163(define-public python-urllib3
9164 (package
9165 (name "python-urllib3")
6178274d 9166 (version "1.18.1")
c18f6368
EF
9167 (source
9168 (origin
9169 (method url-fetch)
9170 (uri (pypi-uri "urllib3" version))
9171 (sha256
9172 (base32
6178274d 9173 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
c18f6368
EF
9174 (build-system python-build-system)
9175 (arguments `(#:tests? #f))
9176 (native-inputs
f3b98f4f 9177 `(;; some packages for tests
c18f6368
EF
9178 ("python-nose" ,python-nose)
9179 ("python-mock" ,python-mock)
9180 ("python-tornado" ,python-tornado)))
9181 (propagated-inputs
8322749a 9182 `(;; extra packages for https security
c18f6368
EF
9183 ("python-certifi" ,python-certifi)
9184 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
9185 ("python-pyasn1" ,python-pyasn1)
9186 ("python-pyopenssl" ,python-pyopenssl)))
6178274d 9187 (home-page "https://urllib3.readthedocs.org/")
c18f6368
EF
9188 (synopsis "HTTP library with thread-safe connection pooling")
9189 (description
9190 "Urllib3 supports features left out of urllib and urllib2 libraries. It
9191can reuse the same socket connection for multiple requests, it can POST files,
9192supports url redirection and retries, and also gzip and deflate decoding.")
9193 (license license:expat)))
9194
9195(define-public python2-urllib3
9196 (package-with-python2 python-urllib3))
2b2f2fc1
DT
9197
9198(define-public python-colorama
9199 (package
9200 (name "python-colorama")
f92576f9 9201 (version "0.3.7")
2b2f2fc1
DT
9202 (source
9203 (origin
9204 (method url-fetch)
9205 (uri (pypi-uri "colorama" version))
9206 (sha256
9207 (base32
f92576f9 9208 "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
2b2f2fc1 9209 (build-system python-build-system)
46e110cc 9210 (synopsis "Colored terminal text rendering for Python")
2b2f2fc1
DT
9211 (description "Colorama is a Python library for rendering colored terminal
9212text.")
9213 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 9214 (license license:bsd-3)))
2b2f2fc1
DT
9215
9216(define-public python2-colorama
9217 (package-with-python2 python-colorama))
f5bcec6e
DT
9218
9219(define-public python-rsa
9220 (package
9221 (name "python-rsa")
ecd68c53 9222 (version "3.4.2")
f5bcec6e
DT
9223 (source
9224 (origin
9225 (method url-fetch)
9226 (uri (pypi-uri "rsa" version))
9227 (sha256
9228 (base32
ecd68c53 9229 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
f5bcec6e 9230 (build-system python-build-system)
f22efa01 9231 (propagated-inputs
f3b98f4f 9232 `(("python-pyasn1" ,python-pyasn1)))
f5bcec6e
DT
9233 (synopsis "Pure-Python RSA implementation")
9234 (description "Python-RSA is a pure-Python RSA implementation. It supports
9235encryption and decryption, signing and verifying signatures, and key
9236generation according to PKCS#1 version 1.5. It can be used as a Python
9237library as well as on the command line.")
9238 (home-page "http://stuvel.eu/rsa")
3f641af0 9239 (license license:asl2.0)))
f5bcec6e
DT
9240
9241(define-public python2-rsa
9242 (package-with-python2 python-rsa))
c0aacfa5
DT
9243
9244(define-public python-pluggy
9245 (package
9246 (name "python-pluggy")
9247 (version "0.3.1")
9248 (source
9249 (origin
9250 (method url-fetch)
9251 (uri (pypi-uri "pluggy" version))
9252 (sha256
9253 (base32
9254 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
9255 (build-system python-build-system)
c0aacfa5
DT
9256 (synopsis "Plugin and hook calling mechanism for Python")
9257 (description "Pluggy is an extraction of the plugin manager as used by
9258Pytest but stripped of Pytest specific details.")
9259 (home-page "https://pypi.python.org/pypi/pluggy")
9260 (license license:expat)))
9261
9262(define-public python2-pluggy
9263 (package-with-python2 python-pluggy))
a4af21ca
DT
9264
9265(define-public python-tox
9266 (package
9267 (name "python-tox")
9268 (version "2.3.1")
9269 (source
9270 (origin
9271 (method url-fetch)
9272 (uri (pypi-uri "tox" version))
9273 (sha256
9274 (base32
9275 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
9276 (build-system python-build-system)
9277 (arguments
7ba07edf
HG
9278 ;; FIXME: Tests require pytest-timeout, which itself requires
9279 ;; pytest>=2.8.0 for installation.
a4af21ca 9280 '(#:tests? #f))
482d9591
HG
9281 (propagated-inputs
9282 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
a4af21ca 9283 ("python-py" ,python-py)
482d9591 9284 ("python-virtualenv" ,python-virtualenv)))
328bb95d 9285 (native-inputs
7ba07edf
HG
9286 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
9287 ("python-pytest" ,python-pytest))) ; >= 2.3.5
a4af21ca
DT
9288 (home-page "http://tox.testrun.org/")
9289 (synopsis "Virtualenv-based automation of test activities")
9290 (description "Tox is a generic virtualenv management and test command line
9291tool. It can be used to check that a package installs correctly with
9292different Python versions and interpreters, or run tests in each type of
9293supported environment, or act as a frontend to continuous integration
9294servers.")
9295 (license license:expat)))
9296
9297(define-public python2-tox
9298 (package-with-python2 python-tox))
ba9da248
DT
9299
9300(define-public python-jmespath
9301 (package
9302 (name "python-jmespath")
9303 (version "0.9.0")
9304 (source
9305 (origin
9306 (method url-fetch)
9307 (uri (pypi-uri "jmespath" version))
9308 (sha256
9309 (base32
9310 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
9311 (build-system python-build-system)
52a75a83
MB
9312 (native-inputs
9313 `(("python-nose" ,python-nose)))
ba9da248
DT
9314 (synopsis "JSON Matching Expressions")
9315 (description "JMESPath (pronounced “james path”) is a Python library that
9316allows one to declaratively specify how to extract elements from a JSON
9317document.")
9318 (home-page "https://github.com/jmespath/jmespath.py")
9319 (license license:expat)))
9320
9321(define-public python2-jmespath
9322 (package-with-python2 python-jmespath))
935fcd5c
DT
9323
9324(define-public python-botocore
9325 (package
9326 (name "python-botocore")
d93985fe 9327 (version "1.5.26")
935fcd5c
DT
9328 (source
9329 (origin
9330 (method url-fetch)
9331 (uri (pypi-uri "botocore" version))
9332 (sha256
9333 (base32
d93985fe 9334 "1b7l48hr88galrrc5q6k21z3sdadzxc87ppzs7k9fz4p1w8bfnvb"))))
935fcd5c 9335 (build-system python-build-system)
877fdac9
MB
9336 (arguments
9337 ;; FIXME: Many tests are failing.
9338 '(#:tests? #f))
482d9591 9339 (propagated-inputs
22d7360b 9340 `(("python-dateutil" ,python-dateutil)
935fcd5c 9341 ("python-docutils" ,python-docutils)
482d9591 9342 ("python-jmespath" ,python-jmespath)))
8fa6890b 9343 (native-inputs
482d9591 9344 `(("python-mock" ,python-mock)
935fcd5c 9345 ("python-nose" ,python-nose)
482d9591 9346 ("behave" ,behave)
935fcd5c 9347 ("python-tox" ,python-tox)
482d9591 9348 ("python-wheel" ,python-wheel)))
935fcd5c
DT
9349 (home-page "https://github.com/boto/botocore")
9350 (synopsis "Low-level interface to AWS")
9351 (description "Botocore is a Python library that provides a low-level
9352interface to the Amazon Web Services (AWS) API.")
3f641af0 9353 (license license:asl2.0)))
935fcd5c
DT
9354
9355(define-public python2-botocore
9356 (package-with-python2 python-botocore))
f861b8b8
DT
9357
9358(define-public awscli
9359 (package
9360 (name "awscli")
192b887a 9361 (version "1.11.63")
f861b8b8
DT
9362 (source
9363 (origin
9364 (method url-fetch)
d5ccf71e 9365 (uri (pypi-uri name version))
f861b8b8
DT
9366 (sha256
9367 (base32
192b887a 9368 "1r8aqv8w27k76lcsfk83w6qw9lz8gk2ibzwacp5wjhpp2gik911m"))))
f861b8b8 9369 (build-system python-build-system)
482d9591 9370 (propagated-inputs
f861b8b8 9371 `(("python-colorama" ,python-colorama)
482d9591
HG
9372 ("python-botocore" ,python-botocore)
9373 ("python-s3transfer" ,python-s3transfer)
f861b8b8 9374 ("python-docutils" ,python-docutils)
482d9591 9375 ("python-rsa" ,python-rsa)))
619bfd81
MB
9376 (arguments
9377 ;; FIXME: The 'pypi' release does not contain tests.
9378 '(#:tests? #f))
60a8be3a 9379 (home-page "https://aws.amazon.com/cli/")
f861b8b8
DT
9380 (synopsis "Command line client for AWS")
9381 (description "AWS CLI provides a unified command line interface to the
9382Amazon Web Services (AWS) API.")
3f641af0 9383 (license license:asl2.0)))
6a44697d
LF
9384
9385(define-public python-hypothesis
9386 (package
9387 (name "python-hypothesis")
bea6d94d 9388 (version "3.1.0")
6a44697d
LF
9389 (source (origin
9390 (method url-fetch)
9391 (uri (pypi-uri "hypothesis" version))
9392 (sha256
9393 (base32
bea6d94d 9394 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 9395 (build-system python-build-system)
bd100c71 9396 (native-inputs
6a44697d
LF
9397 `(("python-flake8" ,python-flake8)
9398 ("python-pytest" ,python-pytest)))
9399 (synopsis "Library for property based testing")
9400 (description "Hypothesis is a library for testing your Python code against a
9401much larger range of examples than you would ever want to write by hand. It’s
9402based on the Haskell library, Quickcheck, and is designed to integrate
9403seamlessly into your existing Python unit testing work flow.")
9404 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 9405 (license license:mpl2.0)
6f068e08 9406 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
9407
9408(define-public python2-hypothesis
6f068e08
EF
9409 (let ((hypothesis (package-with-python2
9410 (strip-python2-variant python-hypothesis))))
9411 (package (inherit hypothesis)
9412 (native-inputs
bd100c71
MB
9413 `(("python2-enum34" ,python2-enum34)
9414 ,@(package-native-inputs hypothesis))))))
7517e73c
LF
9415
9416(define-public python-pytest-subtesthack
9417 (package
9418 (name "python-pytest-subtesthack")
9419 (version "0.1.1")
9420 (source (origin
9421 (method url-fetch)
9422 (uri (pypi-uri "pytest-subtesthack" version))
9423 (sha256
9424 (base32
9425 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
9426 (build-system python-build-system)
7517e73c
LF
9427 (propagated-inputs
9428 `(("python-pytest" ,python-pytest)))
9429 (synopsis "Set-up and tear-down fixtures for unit tests")
9430 (description "This plugin allows you to set up and tear down fixtures within
9431unit test functions that use @code{py.test}. This is useful for using
9432@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
9433function multiple times, without setting up or tearing down fixture state as is
9434normally the case.")
9435 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 9436 (license license:unlicense)))
7517e73c
LF
9437
9438(define-public python2-pytest-subtesthack
9439 (package-with-python2 python-pytest-subtesthack))
0bdc1671 9440
7637de23 9441(define-public python-xdo
0bdc1671 9442 (package
7637de23 9443 (name "python-xdo")
e871c332 9444 (version "0.3")
0bdc1671
CAW
9445 (source (origin
9446 (method url-fetch)
9447 (uri (string-append
9448 "http://http.debian.net/debian/pool/main/p/python-xdo/"
9449 "python-xdo_" version ".orig.tar.gz"))
9450 (sha256
9451 (base32
e871c332 9452 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
0bdc1671
CAW
9453 (build-system python-build-system)
9454 (arguments
736cfc10
SB
9455 '(#:phases
9456 (modify-phases %standard-phases
9457 (add-before 'install 'patch-libxdo-path
9458 ;; Hardcode the path of dynamically loaded libxdo library.
9459 (lambda* (#:key inputs #:allow-other-keys)
9460 (let ((libxdo (string-append
9461 (assoc-ref inputs "xdotool")
9462 "/lib/libxdo.so")))
9463 (substitute* "xdo/_xdo.py"
9464 (("find_library\\(\"xdo\"\\)")
9465 (simple-format #f "\"~a\"" libxdo)))
9466 #t))))
9467 #:tests? #f)) ; no tests provided
0b5e0863
SB
9468 (propagated-inputs
9469 `(("python-six" ,python-six)))
0bdc1671
CAW
9470 (inputs
9471 `(("xdotool" ,xdotool)
9472 ("libX11" ,libx11)))
9473 (home-page "https://tracker.debian.org/pkg/python-xdo")
9474 (synopsis "Python library for simulating X11 keyboard/mouse input")
9475 (description "Provides bindings to libxdo for manipulating X11 via simulated
9476input. (Note that this is mostly a legacy library; you may wish to look at
9477python-xdo for newer bindings.)")
3f641af0 9478 (license license:bsd-3)))
0bdc1671 9479
7637de23
LF
9480(define-public python2-xdo
9481 (package-with-python2 python-xdo))
9482
cb34dc6c
CAW
9483(define-public python-wtforms
9484 (package
9485 (name "python-wtforms")
9486 (version "2.1")
9487 (source
9488 (origin
9489 (method url-fetch)
9490 (uri (pypi-uri "WTForms" version ".zip"))
9491 (sha256
9492 (base32
9493 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
9494 (build-system python-build-system)
13c4d874
EF
9495 (arguments
9496 '(#:phases
9497 (modify-phases %standard-phases
9498 (add-after 'unpack 'remove-django-test
9499 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
9500 (lambda _
9501 (substitute*
9502 "tests/runtests.py"
9503 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
9504 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
9505 #t)))))
cb34dc6c
CAW
9506 (native-inputs
9507 `(("unzip" ,unzip)))
9508 (home-page "http://wtforms.simplecodes.com/")
9509 (synopsis
9510 "Form validation and rendering library for Python web development")
9511 (description
9512 "WTForms is a flexible forms validation and rendering library
9513for Python web development. It is very similar to the web form API
9514available in Django, but is a standalone package.")
f210e944 9515 (license license:bsd-3)))
cb34dc6c
CAW
9516
9517(define-public python2-wtforms
f210e944 9518 (package-with-python2 python-wtforms))
50aaec25
DT
9519
9520(define-public python-mako
9521 (package
9522 (name "python-mako")
3753f2e6 9523 (version "1.0.6")
50aaec25
DT
9524 (source
9525 (origin
9526 (method url-fetch)
9527 (uri (pypi-uri "Mako" version))
9528 (sha256
9529 (base32
3753f2e6 9530 "03dyxgjknp4ffsv7vwfd28l5bbpzi0ylp20543wpg3iahyyrwma8"))))
50aaec25 9531 (build-system python-build-system)
482d9591
HG
9532 (propagated-inputs
9533 `(("python-markupsafe" ,python-markupsafe)))
50aaec25 9534 (native-inputs
482d9591 9535 `(("python-mock" ,python-mock)
e435af5c
MB
9536 ("python-nose" ,python-nose)
9537 ("python-pytest" ,python-pytest)))
50aaec25
DT
9538 (home-page "http://www.makotemplates.org/")
9539 (synopsis "Templating language for Python")
9540 (description "Mako is a templating language for Python that compiles
9541templates into Python modules.")
f210e944 9542 (license license:expat)))
50aaec25
DT
9543
9544(define-public python2-mako
f210e944 9545 (package-with-python2 python-mako))
ae00a41f
CAW
9546
9547(define-public python-waitress
9548 (package
9549 (name "python-waitress")
9550 (version "0.8.10")
9551 (source
9552 (origin
9553 (method url-fetch)
9554 (uri (pypi-uri "waitress" version))
9555 (sha256
9556 (base32
9557 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
9558 (build-system python-build-system)
9559 (home-page "https://github.com/Pylons/waitress")
9560 (synopsis "Waitress WSGI server")
9561 (description "Waitress is meant to be a production-quality pure-Python WSGI
9562server with very acceptable performance.")
f210e944 9563 (license license:zpl2.1)))
ae00a41f
CAW
9564
9565(define-public python2-waitress
f210e944 9566 (package-with-python2 python-waitress))
778a284b
CAW
9567
9568(define-public python-wsgiproxy2
9569 (package
9570 (name "python-wsgiproxy2")
9571 (version "0.4.2")
9572 (source
9573 (origin
9574 (method url-fetch)
9575 (uri (pypi-uri "WSGIProxy2" version ".zip"))
9576 (sha256
9577 (base32
9578 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
9579 (build-system python-build-system)
e359b31a
LF
9580 (arguments
9581 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
9582 ;; support Python 3:
9583 ;; https://github.com/benoitc/restkit/issues/140
9584 #:tests? #f))
778a284b
CAW
9585 (native-inputs
9586 `(("unzip" ,unzip)
9587 ("python-nose" ,python-nose)
9588 ("python-coverage" ,python-coverage)))
9589 (propagated-inputs
9590 `(("python-six" ,python-six)
9591 ("python-webob" ,python-webob)))
9592 (home-page
9593 "https://github.com/gawel/WSGIProxy2/")
9594 (synopsis "WSGI Proxy with various http client backends")
9595 (description "WSGI turns HTTP requests into WSGI function calls.
9596WSGIProxy turns WSGI function calls into HTTP requests.
9597It also includes code to sign requests and pass private data,
9598and to spawn subprocesses to handle requests.")
f210e944 9599 (license license:expat)))
778a284b
CAW
9600
9601(define-public python2-wsgiproxy2
f210e944 9602 (package-with-python2 python-wsgiproxy2))
bb7518b1
CAW
9603
9604(define-public python-pastedeploy
9605 (package
9606 (name "python-pastedeploy")
9607 (version "1.5.2")
9608 (source
9609 (origin
9610 (method url-fetch)
9611 (uri (pypi-uri "PasteDeploy" version))
9612 (sha256
9613 (base32
9614 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
9615 (build-system python-build-system)
9616 (native-inputs
9617 `(("python-nose" ,python-nose)))
bb7518b1
CAW
9618 (home-page "http://pythonpaste.org/deploy/")
9619 (synopsis
9620 "Load, configure, and compose WSGI applications and servers")
9621 (description
9622 "This tool provides code to load WSGI applications and servers from URIs;
9623these URIs can refer to Python Eggs for INI-style configuration files. Paste
9624Script provides commands to serve applications based on this configuration
9625file.")
9626 (license license:expat)))
9627
9628(define-public python2-pastedeploy
9629 (package-with-python2 python-pastedeploy))
1cf53652 9630
c4a7904c
CAW
9631(define-public python-paste
9632 (package
9633 (name "python-paste")
ba1731da 9634 (version "2.0.3")
c4a7904c
CAW
9635 (source
9636 (origin
9637 (method url-fetch)
9638 (uri (pypi-uri "Paste" version))
9639 (sha256
9640 (base32
ba1731da 9641 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
fc1adab1
AK
9642 (patches (search-patches "python-paste-remove-website-test.patch"
9643 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
9644 (build-system python-build-system)
9645 (native-inputs
9646 `(("python-nose" ,python-nose)))
9647 (propagated-inputs
f3b98f4f 9648 `(("python-six" ,python-six)))
c4a7904c
CAW
9649 (home-page "http://pythonpaste.org")
9650 (synopsis
9651 "Python web development tools, focusing on WSGI")
9652 (description
9653 "Paste provides a variety of web development tools and middleware which
9654can be nested together to build web applications. Paste's design closely
9655follows ideas flowing from WSGI (Web Standard Gateway Interface).")
ba1731da 9656 (license license:expat)))
c4a7904c
CAW
9657
9658(define-public python2-paste
ba1731da 9659 (package-with-python2 python-paste))
c4a7904c 9660
a8f20f63
CAW
9661(define-public python-pastescript
9662 (package
9663 (name "python-pastescript")
9664 (version "2.0.2")
9665 (source
9666 (origin
9667 (method url-fetch)
9668 (uri (pypi-uri "PasteScript" version))
9669 (sha256
9670 (base32
9671 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
9672 (build-system python-build-system)
9673 (native-inputs
9674 `(("python-nose" ,python-nose)))
9675 (propagated-inputs
f3b98f4f 9676 `(("python-paste" ,python-paste)
a8f20f63
CAW
9677 ("python-pastedeploy" ,python-pastedeploy)))
9678 (home-page "http://pythonpaste.org/script/")
9679 (arguments
9680 '(;; Unfortunately, this requires the latest unittest2,
9681 ;; but that requires traceback2 which requires linecache2 which requires
9682 ;; unittest2. So we're skipping tests for now.
9683 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
9684 ;; so in theory we could get around this situation somehow.)
9685 #:tests? #f))
9686 (synopsis
9687 "Pluggable command line tool for serving web applications and more")
9688 (description
9689 "PasteScript is a plugin-friendly command line tool which provides a
9690variety of features, from launching web applications to bootstrapping project
9691layouts.")
9692 (license license:expat)))
9693
9694(define-public python2-pastescript
9695 (package-with-python2 python-pastescript))
9696
1cf53652
CAW
9697(define-public python-pyquery
9698 (package
9699 (name "python-pyquery")
ab0c3429 9700 (version "1.2.17")
1cf53652
CAW
9701 (source
9702 (origin
9703 (method url-fetch)
9704 (uri (pypi-uri "pyquery" version))
9705 (sha256
9706 (base32
ab0c3429 9707 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
1cf53652 9708 (build-system python-build-system)
2ddbfa8c
LF
9709 (native-inputs
9710 `(("python-webob" ,python-webob)
9711 ("python-webtest" ,python-webtest)))
1cf53652
CAW
9712 (propagated-inputs
9713 `(("python-lxml" ,python-lxml)
9714 ("python-cssselect" ,python-cssselect)))
9715 (home-page "https://github.com/gawel/pyquery")
9716 (synopsis "Make jQuery-like queries on xml documents")
9717 (description "pyquery allows you to make jQuery queries on xml documents.
9718The API is as much as possible the similar to jQuery. pyquery uses lxml for
9719fast xml and html manipulation.")
f210e944 9720 (license license:bsd-3)))
1cf53652
CAW
9721
9722(define-public python2-pyquery
f210e944 9723 (package-with-python2 python-pyquery))
aa6313d6
CAW
9724
9725(define-public python-webtest
9726 (package
9727 (name "python-webtest")
9728 (version "2.0.20")
9729 (source
9730 (origin
9731 (method url-fetch)
9732 (uri (pypi-uri "WebTest" version))
9733 (sha256
9734 (base32
9735 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
9736 (build-system python-build-system)
9737 (arguments
9738 `(;; Unfortunately we have to disable tests!
9739 ;; This release of WebTest is pinned to python-nose < 1.3,
9740 ;; but older versions of python-nose are plagued with the following
9741 ;; bug(s), which rears its ugly head during test execution:
9742 ;; https://github.com/nose-devs/nose/issues/759
9743 ;; https://github.com/nose-devs/nose/pull/811
9744 #:tests? #f))
9745 ;; Commented out code is no good, but in this case, once tests
9746 ;; are ready to be enabled again, we should put the following
9747 ;; in place:
9748 ;; (native-inputs
9749 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
9750 ;; ; but see above comment
9751 ;; ("python-coverage" ,python-coverage)
9752 ;; ("python-mock" ,python-mock)
9753 ;; ("python-pastedeploy" ,python-pastedeploy)
9754 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
9755 ;; ("python-pyquery" ,python-pyquery)))
9756 (propagated-inputs
9757 `(("python-waitress" ,python-waitress)
9758 ("python-webob" ,python-webob)
9759 ("python-six" ,python-six)
9760 ("python-beautifulsoup4" ,python-beautifulsoup4)))
9761 (home-page "http://webtest.pythonpaste.org/")
9762 (synopsis "Helper to test WSGI applications")
9763 (description "Webtest allows you to test your Python web applications
9764without starting an HTTP server. It supports anything that supports the
9765minimum of WSGI.")
f210e944 9766 (license license:expat)))
aa6313d6
CAW
9767
9768(define-public python2-webtest
f210e944 9769 (package-with-python2 python-webtest))
4cb122cd
CAW
9770
9771(define-public python-anyjson
9772 (package
9773 (name "python-anyjson")
9774 (version "0.3.3")
9775 (source
9776 (origin
9777 (method url-fetch)
9778 (uri (pypi-uri "anyjson" version))
9779 (sha256
9780 (base32
9781 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
9782 (build-system python-build-system)
9783 (arguments
9784 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
9785 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
9786 ;; whatever) so this transformation needs to be done before the tests
9787 ;; can be run. Maybe we could add a build step to transform beforehand
9788 ;; but it could be annoying/difficult.
9789 ;; We can enable tests for the Python 2 version, though, and do below.
9790 #:tests? #f))
9791 (home-page "http://bitbucket.org/runeh/anyjson/")
9792 (synopsis
9793 "Wraps best available JSON implementation in a common interface")
9794 (description
9795 "Anyjson loads whichever is the fastest JSON module installed
9796and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 9797 (license license:bsd-3)
4cb122cd
CAW
9798 (properties `((python2-variant . ,(delay python2-anyjson))))))
9799
9800(define-public python2-anyjson
9801 (let ((anyjson (package-with-python2
9802 (strip-python2-variant python-anyjson))))
9803 (package
9804 (inherit anyjson)
9805 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
9806 #:tests? #t
9807 ,@(package-arguments anyjson)))
00e10c6e 9808 (native-inputs `(("python2-nose" ,python2-nose))))))
8dfceab7
CAW
9809
9810(define-public python-amqp
9811 (package
9812 (name "python-amqp")
9813 (version "1.4.9")
9814 (source
9815 (origin
9816 (method url-fetch)
9817 (uri (pypi-uri "amqp" version))
9818 (sha256
9819 (base32
9820 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
9821 (build-system python-build-system)
9822 (native-inputs
9823 `(("python-nose" ,python-nose)
9824 ("python-mock" ,python-mock)))
7bf837fd 9825 (home-page "https://github.com/celery/py-amqp")
8dfceab7
CAW
9826 (synopsis
9827 "Low-level AMQP client for Python (fork of amqplib)")
9828 (description
9829 "This is a fork of amqplib which was originally written by Barry Pederson.
9830It is maintained by the Celery project, and used by kombu as a pure python
9831alternative when librabbitmq is not available.")
3f641af0 9832 (license license:lgpl2.1+)
8dfceab7
CAW
9833 (properties `((python2-variant . ,(delay python2-amqp))))))
9834
9835(define-public python2-amqp
9836 (let ((amqp (package-with-python2
9837 (strip-python2-variant python-amqp))))
9838 (package
9839 (inherit amqp)
9840 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
9841 ;; unmaintained. Weirdly, does not do this on the python 3
9842 ;; version?
9843 #:tests? #f
00e10c6e 9844 ,@(package-arguments amqp))))))
7d387305
CAW
9845
9846(define-public python-kombu
9847 (package
9848 (name "python-kombu")
0cb59822 9849 (version "3.0.37")
7d387305
CAW
9850 (source
9851 (origin
9852 (method url-fetch)
9853 (uri (pypi-uri "kombu" version))
9854 (sha256
9855 (base32
0cb59822 9856 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
7d387305
CAW
9857 (build-system python-build-system)
9858 (native-inputs
9859 `(("python-mock" ,python-mock)
9860 ("python-nose" ,python-nose)))
9861 (propagated-inputs
9862 `(("python-anyjson" ,python-anyjson)
0cb59822
LF
9863 ("python-amqp" ,python-amqp)
9864 ("python-redis" ,python-redis)))
7d387305
CAW
9865 (home-page "http://kombu.readthedocs.org")
9866 (synopsis "Message passing library for Python")
9867 (description "The aim of Kombu is to make messaging in Python as easy as
9868possible by providing an idiomatic high-level interface for the AMQ protocol,
9869and also provide proven and tested solutions to common messaging problems.
9870AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
9871message orientation, queuing, routing, reliability and security, for which the
9872RabbitMQ messaging server is the most popular implementation.")
3f641af0 9873 (license license:bsd-3)
7d387305
CAW
9874 (properties `((python2-variant . ,(delay python2-kombu))))))
9875
9876(define-public python2-kombu
9877 (let ((kombu (package-with-python2
9878 (strip-python2-variant python-kombu))))
9879 (package
9880 (inherit kombu)
752eb9e0
MB
9881 (arguments `(;; FIXME: 'TestTransport.test_del_sync' fails on python2.
9882 ;; It works fine on the python3 variant.
9883 #:tests? #f
9884 ,@(package-arguments kombu)))
328bb95d
HG
9885 (native-inputs `(("python2-unittest2" ,python2-unittest2)
9886 ,@(package-native-inputs kombu))))))
b6f0b9fb
CAW
9887
9888(define-public python-billiard
9889 (package
9890 (name "python-billiard")
a6bb9e44 9891 (version "3.3.0.23")
b6f0b9fb
CAW
9892 (source
9893 (origin
9894 (method url-fetch)
9895 (uri (pypi-uri "billiard" version))
9896 (sha256
9897 (base32
a6bb9e44 9898 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
b6f0b9fb
CAW
9899 (build-system python-build-system)
9900 (native-inputs
9901 `(("python-nose" ,python-nose)))
7bf837fd 9902 (home-page "https://github.com/celery/billiard")
b6f0b9fb
CAW
9903 (synopsis
9904 "Python multiprocessing fork with improvements and bugfixes")
9905 (description
9906 "Billiard is a fork of the Python 2.7 multiprocessing package. The
9907multiprocessing package itself is a renamed and updated version of R Oudkerk's
9908pyprocessing package. This standalone variant is intended to be compatible with
9909Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 9910 (license license:bsd-3)
b6f0b9fb
CAW
9911 (properties `((python2-variant . ,(delay python2-billiard))))))
9912
9913(define-public python2-billiard
9914 (let ((billiard (package-with-python2
9915 (strip-python2-variant python-billiard))))
9916 (package
9917 (inherit billiard)
00e10c6e 9918 (native-inputs `(("python2-unittest2" ,python2-unittest2)
b6f0b9fb
CAW
9919 ("python2-mock" ,python2-mock)
9920 ,@(package-native-inputs billiard))))))
22df6419
CAW
9921
9922(define-public python-celery
9923 (package
9924 (name "python-celery")
9ebe87fe 9925 (version "3.1.24")
22df6419
CAW
9926 (source
9927 (origin
9928 (method url-fetch)
9929 (uri (pypi-uri "celery" version))
9930 (sha256
9931 (base32
9ebe87fe 9932 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
22df6419 9933 (build-system python-build-system)
9ebe87fe
LF
9934 (arguments
9935 `(#:phases
9936 (modify-phases %standard-phases
9937 ;; These tests break with Python 3.5:
9938 ;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
9939 (replace 'check
9940 (lambda _
9941 (zero?
9942 (system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
22df6419
CAW
9943 (native-inputs
9944 `(("python-nose" ,python-nose)))
f22efa01 9945 (propagated-inputs
22df6419
CAW
9946 `(("python-pytz" ,python-pytz)
9947 ("python-billiard" ,python-billiard)
9948 ("python-kombu" ,python-kombu)))
9949 (home-page "http://celeryproject.org")
9950 (synopsis "Distributed Task Queue")
9951 (description "Celery is an asynchronous task queue/job queue based on
9952distributed message passing. It is focused on real-time operation, but
9953supports scheduling as well. The execution units, called tasks, are executed
9954concurrently on a single or more worker servers using multiprocessing,
9955Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
9956synchronously (wait until ready).")
3f641af0 9957 (license license:bsd-3)
22df6419
CAW
9958 (properties `((python2-variant . ,(delay python2-celery))))))
9959
9960(define-public python2-celery
9961 (let ((celery (package-with-python2
9962 (strip-python2-variant python-celery))))
9963 (package
9964 (inherit celery)
00e10c6e 9965 (native-inputs `(("python2-unittest2" ,python2-unittest2)
22df6419
CAW
9966 ("python2-mock" ,python2-mock)
9967 ,@(package-native-inputs celery))))))
97e32948
CAW
9968
9969(define-public python-translitcodec
9970 (package
9971 (name "python-translitcodec")
9972 (version "0.4.0")
9973 (source
9974 (origin
9975 (method url-fetch)
9976 (uri (pypi-uri "translitcodec" version))
9977 (sha256
9978 (base32
9979 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
9980 (build-system python-build-system)
9981 (arguments
9982 `(#:tests? #f)) ; no tests provided
9983 (home-page
9984 "https://github.com/claudep/translitcodec")
9985 (synopsis
9986 "Unicode to 8-bit charset transliteration codec")
9987 (description
9988 "This package contains codecs for transliterating ISO 10646 texts into
9989best-effort representations using smaller coded character sets (ASCII,
9990ISO 8859, etc.).")
f210e944 9991 (license license:expat)))
97e32948
CAW
9992
9993(define-public python2-translitcodec
f210e944 9994 (package-with-python2 python-translitcodec))
0c3b90d4
CAW
9995
9996(define-public python-editor
9997 (package
9998 (name "python-editor")
9999 (version "0.5")
10000 (source
10001 (origin
10002 (method url-fetch)
10003 (uri (pypi-uri "python-editor" version))
10004 (sha256
10005 (base32
10006 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
10007 (build-system python-build-system)
10008 (home-page
10009 "https://github.com/fmoo/python-editor")
10010 (synopsis
10011 "Programmatically open an editor, capture the result")
10012 (description
10013 "python-editor is a library that provides the editor module for
10014programmatically interfacing with your system's $EDITOR.")
f210e944 10015 (license license:asl2.0)))
0c3b90d4
CAW
10016
10017(define-public python2-editor
f210e944 10018 (package-with-python2 python-editor))
3276517c
LF
10019
10020(define-public python-sphinxcontrib-programoutput
10021 (package
10022 (name "python-sphinxcontrib-programoutput")
10023 (version "0.8")
10024 (source (origin
10025 (method url-fetch)
10026 (uri (pypi-uri "sphinxcontrib-programoutput" version))
10027 (sha256
10028 (base32
10029 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
10030 (build-system python-build-system)
e2cb140e
MB
10031 (arguments
10032 ;; FIXME: Many tests are failing and the upstream is gone.
10033 '(#:tests? #f))
3276517c 10034 (propagated-inputs
a0a09859 10035 `(("python-sphinx" ,python-sphinx)))
3276517c
LF
10036 (synopsis "Sphinx extension to include program output")
10037 (description "A Sphinx extension to literally insert the output of arbitrary
10038commands into documents, helping you to keep your command examples up to date.")
10039 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
f210e944 10040 (license license:bsd-2)))
3276517c
LF
10041
10042(define-public python2-sphinxcontrib-programoutput
f210e944 10043 (package-with-python2 python-sphinxcontrib-programoutput))
548d7165
LF
10044
10045(define-public python-sphinx-repoze-autointerface
10046 (package
10047 (name "python-sphinx-repoze-autointerface")
328ae341 10048 (version "0.8")
548d7165
LF
10049 (source (origin
10050 (method url-fetch)
10051 (uri (pypi-uri "repoze.sphinx.autointerface" version))
10052 (sha256
10053 (base32
328ae341 10054 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165 10055 (build-system python-build-system)
5b3c3d4b 10056 (arguments '(#:tests? #f)) ; No tests.
548d7165 10057 (propagated-inputs
47c7dc4a 10058 `(("python-sphinx" ,python-sphinx)
548d7165
LF
10059 ("python-zope-interface" ,python-zope-interface)))
10060 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
10061 (description "This package defines an extension for the Sphinx documentation
10062system. The extension allows generation of API documentation by
10063introspection of @code{zope.interface} instances in code.")
10064 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 10065 (license license:repoze)))
548d7165
LF
10066
10067(define-public python2-sphinx-repoze-autointerface
10068 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
10069
10070(define-public python-psycopg2
10071 (package
10072 (name "python-psycopg2")
8e718963 10073 (version "2.6.2")
b31fbea5
DM
10074 (source
10075 (origin
10076 (method url-fetch)
10077 (uri (pypi-uri "psycopg2" version))
10078 (sha256
10079 (base32
8e718963 10080 "0p60z2gwfcal30y2w8gprflchp1kcg9qblc5rn782p4wxl90wjbh"))))
b31fbea5
DM
10081 (build-system python-build-system)
10082 (arguments
10083 ;; Tests would require a postgresql database "psycopg2_test"
10084 ;; and a running postgresql database management service.
10085 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
10086 (inputs
10087 `(("postgresql" ,postgresql))) ; libpq
10088 (home-page "http://initd.org/psycopg/")
10089 (synopsis "Python PostgreSQL adapter")
10090 (description
10091 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
f210e944 10092 (license license:lgpl3+)))
b31fbea5
DM
10093
10094(define-public python2-psycopg2
f210e944 10095 (package-with-python2 python-psycopg2))
eed1a61f
LF
10096
10097(define-public python-vobject
10098 (package
10099 (name "python-vobject")
9bed9b15 10100 (version "0.9.2")
eed1a61f
LF
10101 (source (origin
10102 (method url-fetch)
10103 (uri (pypi-uri "vobject" version))
10104 (sha256
10105 (base32
9bed9b15 10106 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
eed1a61f 10107 (build-system python-build-system)
a9871b7b
LF
10108 (arguments
10109 '(;; The test suite relies on some non-portable Windows interfaces.
10110 #:tests? #f))
f22efa01 10111 (propagated-inputs
22d7360b 10112 `(("python-dateutil" ,python-dateutil)
eed1a61f
LF
10113 ("python-pyicu" ,python-pyicu)))
10114 (synopsis "Parse and generate vCard and vCalendar files")
10115 (description "Vobject is intended to be a full featured Python package for
10116parsing and generating vCard and vCalendar files. Currently, iCalendar files
10117are supported and well tested. vCard 3.0 files are supported, and all data
10118should be imported, but only a few components are understood in a sophisticated
10119way.")
10120 (home-page "http://eventable.github.io/vobject/")
f210e944 10121 (license license:asl2.0)))
eed1a61f
LF
10122
10123(define-public python2-vobject
f210e944 10124 (package-with-python2 python-vobject))
cedac813
LF
10125
10126(define-public python-munkres
10127 (package
10128 (name "python-munkres")
38e81a2c 10129 (version "1.0.8")
cedac813
LF
10130 (source (origin
10131 (method url-fetch)
10132 (uri (pypi-uri "munkres" version))
10133 (sha256
10134 (base32
38e81a2c 10135 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
cedac813
LF
10136 (build-system python-build-system)
10137 (arguments
10138 '(#:tests? #f)) ; no test suite
10139 (home-page "http://software.clapper.org/munkres/")
10140 (synopsis "Implementation of the Munkres algorithm")
10141 (description "The Munkres module provides an implementation of the Munkres
10142algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
10143useful for solving the Assignment Problem.")
3f641af0 10144 (license license:bsd-3)))
cedac813
LF
10145
10146(define-public python2-munkres
10147 (package-with-python2 python-munkres))
f3b3d78f
LF
10148
10149(define-public python-flask
10150 (package
10151 (name "python-flask")
c6c80104 10152 (version "0.11.1")
f3b3d78f
LF
10153 (source (origin
10154 (method url-fetch)
10155 (uri (pypi-uri "Flask" version))
10156 (sha256
10157 (base32
c6c80104 10158 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
f3b3d78f
LF
10159 (build-system python-build-system)
10160 (propagated-inputs
10161 `(("python-itsdangerous" ,python-itsdangerous)
10162 ("python-jinja2" ,python-jinja2)
8f35c030 10163 ("python-click" ,python-click)
f3b3d78f
LF
10164 ("python-werkzeug" ,python-werkzeug)))
10165 (home-page "https://github.com/mitsuhiko/flask/")
10166 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
10167 (description "Flask is a micro web framework based on the Werkzeug toolkit
10168and Jinja2 template engine. It is called a micro framework because it does not
10169presume or force a developer to use a particular tool or library.")
f210e944 10170 (license license:bsd-3)))
f3b3d78f
LF
10171
10172(define-public python2-flask
f210e944 10173 (package-with-python2 python-flask))
603d665b 10174
a7ad802b 10175(define-public python-flask-wtf
10176 (package
10177 (name "python-flask-wtf")
10178 (version "0.13.1")
10179 (source
10180 (origin
10181 (method url-fetch)
10182 (uri (pypi-uri "Flask-WTF" version))
10183 (sha256
10184 (base32
10185 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
10186 (build-system python-build-system)
d296d300
MB
10187 (arguments
10188 '(#:phases
10189 (modify-phases %standard-phases
10190 (add-before 'check 'drop-failing-test
10191 (lambda _
10192 ;; FIXME: This file tries resolving an external server, which
10193 ;; fails. Try to patch out the offending section instead of
10194 ;; deleting the whole thing.
10195 (delete-file "tests/test_recaptcha.py")
10196 #t)))))
a7ad802b 10197 (propagated-inputs
10198 `(("python-flask-babel" ,python-flask-babel)
10199 ("python-babel" ,python-babel)
10200 ("python-wtforms" ,python-wtforms)))
10201 (native-inputs
10202 `(("python-nose" ,python-nose)))
10203 (home-page "https://github.com/lepture/flask-wtf")
10204 (synopsis "Simple integration of Flask and WTForms")
10205 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
10206upload, and reCAPTCHA.")
10207 (license license:bsd-3)))
10208
10209(define-public python2-flask-wtf
10210 (package-with-python2 python-flask-wtf))
10211
a2c7d88e 10212(define-public python-flask-multistatic
10213 (package
10214 (name "python-flask-multistatic")
10215 (version "1.0")
10216 (source
10217 (origin
10218 (method url-fetch)
10219 (uri (pypi-uri "flask-multistatic" version))
10220 (sha256
10221 (base32
10222 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
10223 (build-system python-build-system)
10224 (propagated-inputs
10225 `(("python-flask" ,python-flask)))
10226 (home-page "https://pagure.io/flask-multistatic")
10227 (synopsis "Flask plugin to allow overriding static files")
10228 (description "@code{flask-multistatic} is a flask plugin that adds support
10229for overriding static files.")
10230 (license license:gpl3+)))
10231
10232(define-public python2-flask-multistatic
10233 (package-with-python2 python-flask-multistatic))
10234
603d665b
LF
10235(define-public python-cookies
10236 (package
10237 (name "python-cookies")
10238 (version "2.2.1")
10239 (source (origin
10240 (method url-fetch)
10241 (uri (pypi-uri "cookies" version))
10242 (sha256
10243 (base32
10244 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
10245 (build-system python-build-system)
10246 (arguments
10247 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
10248 #:tests? #f))
10249 (native-inputs
10250 `(("python-pytest" ,python2-pytest)))
10251 (synopsis "HTTP cookie parser and renderer")
10252 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
10253Python.")
10254 (home-page "https://gitlab.com/sashahart/cookies")
f210e944 10255 (license license:expat)))
603d665b
LF
10256
10257(define-public python2-cookies
f210e944 10258 (package-with-python2 python-cookies))
0efde7d6
LF
10259
10260(define-public python-responses
10261 (package
10262 (name "python-responses")
10263 (version "0.5.1")
10264 (source (origin
10265 (method url-fetch)
10266 (uri (pypi-uri "responses" version))
10267 (sha256
10268 (base32
10269 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
10270 (build-system python-build-system)
10271 (arguments
10272 `(;; Test suite is not distributed:
10273 ;; https://github.com/getsentry/responses/issues/38
10274 #:tests? #f))
10275 (native-inputs
d8ea5f2f 10276 `(("python-mock" ,python-mock)))
0efde7d6
LF
10277 (propagated-inputs
10278 `(("python-requests" ,python-requests)
d8ea5f2f 10279 ("python-cookies" ,python-cookies)
0efde7d6
LF
10280 ("python-six" ,python-six)))
10281 (home-page "https://github.com/getsentry/responses")
10282 (synopsis "Utility for mocking out the `requests` Python library")
10283 (description "A utility library for mocking out the `requests` Python
10284library.")
f210e944 10285 (license license:asl2.0)))
0efde7d6
LF
10286
10287(define-public python2-responses
f210e944 10288 (package-with-python2 python-responses))
76b94885 10289
b7afd018
RW
10290(define-public python-whoosh
10291 (package
10292 (name "python-whoosh")
10293 (version "2.7.4")
10294 (source
10295 (origin
10296 (method url-fetch)
10297 (uri (pypi-uri "Whoosh" version))
10298 (sha256
10299 (base32
10300 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
10301 (build-system python-build-system)
10302 (native-inputs
f3b98f4f 10303 `(("python-pytest" ,python-pytest)))
b7afd018
RW
10304 (home-page "http://bitbucket.org/mchaput/whoosh")
10305 (synopsis "Full text indexing, search, and spell checking library")
10306 (description
10307 "Whoosh is a fast, pure-Python full text indexing, search, and spell
10308checking library.")
10309 (license license:bsd-2)))
10310
10311(define-public python2-whoosh
10312 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
10313 (package (inherit whoosh)
10314 (propagated-inputs
10315 `(("python2-backport-ssl-match-hostname"
10316 ,python2-backport-ssl-match-hostname)
10317 ,@(package-propagated-inputs whoosh))))))
10318
76b94885
LF
10319(define-public python-pathlib
10320 (package
10321 (name "python-pathlib")
10322 (version "1.0.1")
10323 (source (origin
10324 (method url-fetch)
10325 (uri (pypi-uri "pathlib" version))
10326 (sha256
10327 (base32
10328 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
10329 (build-system python-build-system)
92a312dc
RW
10330 ;; The tests depend on the internal "test" module, which does not provide
10331 ;; a stable interface.
10332 (arguments `(#:tests? #f))
76b94885 10333 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
10334 (synopsis "Object-oriented file system paths")
10335 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
10336It offers the following advantages over using string objects:
10337
10338@enumerate
10339@item No more cumbersome use of os and os.path functions. Everything can
10340be done easily through operators, attribute accesses, and method calls.
10341@item Embodies the semantics of different path types. For example,
10342comparing Windows paths ignores casing.
10343@item Well-defined semantics, eliminating any inconsistencies or
10344ambiguities (forward vs. backward slashes, etc.).
7a8894e8
HG
10345@end enumerate
10346
10347Note: In Python 3.4, pathlib is now part of the standard library. For other
10348Python versions please consider python-pathlib2 instead, which tracks the
10349standard library module. This module (python-pathlib) isn't maintained
10350anymore.")
76b94885
LF
10351 (license license:expat)))
10352
10353(define-public python2-pathlib
10354 (package-with-python2 python-pathlib))
25a7db0a 10355
b7703c81
HG
10356(define-public python2-pathlib2
10357 (package
10358 (name "python2-pathlib2")
10359 (version "2.1.0")
10360 (source (origin
10361 (method url-fetch)
10362 (uri (pypi-uri "pathlib2" version))
10363 (sha256
10364 (base32
10365 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
10366 (build-system python-build-system)
49a531f5
HG
10367 ;; We only need the the Python 2 variant, since for Python 3 our minimum
10368 ;; version is 3.4 which already includes this package as part of the
10369 ;; standard library.
b7703c81
HG
10370 (arguments
10371 `(#:python ,python-2))
10372 (native-inputs
f3b98f4f 10373 `(("python2-six" ,python2-six)))
b7703c81
HG
10374 (home-page "http://pypi.python.org/pypi/pathlib2/")
10375 (synopsis "Object-oriented file system paths - backport of standard
10376pathlib module")
10377 (description "The goal of pathlib2 is to provide a backport of standard
10378pathlib module which tracks the standard library module, so all the newest
10379features of the standard pathlib can be used also on older Python versions.
10380
10381Pathlib offers a set of classes to handle file system paths. It offers the
10382following advantages over using string objects:
10383
10384@enumerate
10385@item No more cumbersome use of os and os.path functions. Everything can
10386be done easily through operators, attribute accesses, and method calls.
10387@item Embodies the semantics of different path types. For example,
10388comparing Windows paths ignores casing.
10389@item Well-defined semantics, eliminating any inconsistencies or
10390ambiguities (forward vs. backward slashes, etc.).
10391@end enumerate")
10392 (license license:expat)))
10393
25a7db0a
LF
10394(define-public python-jellyfish
10395 (package
10396 (name "python-jellyfish")
8c4964dd 10397 (version "0.5.6")
25a7db0a
LF
10398 (source (origin
10399 (method url-fetch)
10400 (uri (pypi-uri "jellyfish" version))
10401 (sha256
10402 (base32
8c4964dd 10403 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
25a7db0a
LF
10404 (build-system python-build-system)
10405 (native-inputs
10406 `(("python-pytest" ,python-pytest)))
10407 (home-page "https://github.com/jamesturk/jellyfish")
10408 (synopsis "Approximate and phonetic matching of strings")
10409 (description "Jellyfish uses a variety of string comparison and phonetic
10410encoding algorithms to do fuzzy string matching.")
3f641af0 10411 (license license:bsd-2)
25a7db0a
LF
10412 (properties `((python2-variant . ,(delay python2-jellyfish))))))
10413
10414(define-public python2-jellyfish
10415 (let ((jellyfish (package-with-python2
10416 (strip-python2-variant python-jellyfish))))
10417 (package (inherit jellyfish)
00e10c6e 10418 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
25a7db0a 10419 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
10420
10421(define-public python2-unicodecsv
10422 (package
10423 (name "python2-unicodecsv")
10424 (version "0.14.1")
10425 (source (origin
10426 (method url-fetch)
10427 ;; The test suite is not included in the PyPi release.
10428 ;; https://github.com/jdunck/python-unicodecsv/issues/19
10429 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
10430 "archive/" version ".tar.gz"))
10431 (file-name (string-append name "-" version ".tar.gz"))
10432 (sha256
10433 (base32
10434 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
10435 (build-system python-build-system)
10436 (arguments
10437 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
10438 #:python ,python-2))
10439 (native-inputs
f3b98f4f 10440 `(("python2-unittest2" ,python2-unittest2)))
13edb0e5
LF
10441 (home-page "https://github.com/jdunck/python-unicodecsv")
10442 (synopsis "Unicode CSV module for Python 2")
10443 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
10444module, adding support for Unicode strings.")
3f641af0 10445 (license license:bsd-2)))
064503aa
LF
10446
10447(define-public python-rarfile
10448 (package
10449 (name "python-rarfile")
67824447 10450 (version "2.8")
064503aa
LF
10451 (source (origin
10452 (method url-fetch)
10453 (uri (pypi-uri "rarfile" version))
10454 (sha256
10455 (base32
67824447 10456 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
064503aa
LF
10457 (build-system python-build-system)
10458 (arguments
10459 '(#:phases
10460 (modify-phases %standard-phases
10461 (replace 'check
10462 ;; Many tests fail, but the installation proceeds.
10463 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
10464 (native-inputs
10465 `(("which" ,which))) ; required for tests
10466 (propagated-inputs
10467 `(("libarchive" ,libarchive)))
10468 (home-page "https://github.com/markokr/rarfile")
10469 (synopsis "RAR archive reader for Python")
10470 (description "This is Python module for RAR archive reading. The interface
10471is made as zipfile like as possible.")
3f641af0 10472 (license license:isc)))
064503aa
LF
10473
10474(define-public python2-rarfile
10475 (package-with-python2 python-rarfile))
daeeea71
CM
10476
10477(define-public python-magic
10478 (package
10479 (name "python-magic")
10480 (version "0.4.3")
10481 (source
10482 (origin
10483 (method url-fetch)
10484 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
10485 version ".tar.gz"))
10486 (sha256
10487 (base32
10488 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
10489 (file-name (string-append name "-" version "-checkout"))))
10490 (build-system python-build-system)
10491 (arguments
10492 ;; The tests are unreliable, so don't run them. The tests fail
10493 ;; under Python3 because they were written for Python2 and
10494 ;; contain import statements that do not work in Python3. One of
10495 ;; the tests fails under Python2 because its assertions are
10496 ;; overly stringent; it relies on comparing output strings which
10497 ;; are brittle and can change depending on the version of
10498 ;; libmagic being used and the system on which the test is
10499 ;; running. In my case, under GuixSD 0.10.0, only one test
10500 ;; failed, and it seems to have failed only because the version
10501 ;; of libmagic that is packaged in Guix outputs a slightly
10502 ;; different (but not wrong) string than the one that the test
10503 ;; expected.
10504 '(#:tests? #f
10505 #:phases (modify-phases %standard-phases
10506 ;; Replace a specific method call with a hard-coded
10507 ;; path to the necessary libmagic.so file in the
10508 ;; store. If we don't do this, then the method call
10509 ;; will fail to find the libmagic.so file, which in
10510 ;; turn will cause any application using
10511 ;; python-magic to fail.
10512 (add-before 'build 'hard-code-path-to-libmagic
10513 (lambda* (#:key inputs #:allow-other-keys)
10514 (let ((file (assoc-ref inputs "file")))
10515 (substitute* "magic.py"
10516 (("ctypes.util.find_library\\('magic'\\)")
10517 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
10518 #t)))
10519 (add-before 'install 'disable-egg-compression
10520 (lambda _
10521 (let ((port (open-file "setup.cfg" "a")))
10522 (display "\n[easy_install]\nzip_ok = 0\n"
10523 port)
10524 (close-port port)
10525 #t))))))
daeeea71
CM
10526 (inputs
10527 ;; python-magic needs to be able to find libmagic.so.
10528 `(("file" ,file)))
10529 (home-page "https://github.com/ahupp/python-magic")
10530 (synopsis "File type identification using libmagic")
10531 (description
10532 "This module uses ctypes to access the libmagic file type
10533identification library. It makes use of the local magic database and
10534supports both textual and MIME-type output. Note that this module and
10535the python-file module both provide a \"magic.py\" file; these two
10536modules, which are different and were developed separately, both serve
10537the same purpose: to provide Python bindings for libmagic.")
10538 (license license:expat)))
10539
10540(define-public python2-magic
10541 (package-with-python2 python-magic))
12af303f
CM
10542
10543(define-public python2-s3cmd
10544 (package
10545 (name "python2-s3cmd")
10546 (version "1.6.1")
10547 (source
10548 (origin
10549 (method url-fetch)
de67e922 10550 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
10551 "s3cmd-" version ".tar.gz"))
10552 (sha256
10553 (base32
10554 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
10555 (build-system python-build-system)
10556 (arguments
10557 ;; s3cmd is written for python2 only and contains no tests.
10558 `(#:python ,python-2
10559 #:tests? #f))
f22efa01 10560 (propagated-inputs
12af303f
CM
10561 `(("python2-dateutil" ,python2-dateutil)
10562 ;; The python-file package also provides a magic.py module.
10563 ;; This is an unfortunate state of affairs; however, s3cmd
10564 ;; fails to install if it cannot find specifically the
10565 ;; python-magic package. Thus we include it, instead of using
10566 ;; python-file. Ironically, s3cmd sometimes works better
10567 ;; without libmagic bindings at all:
10568 ;; https://github.com/s3tools/s3cmd/issues/198
10569 ("python2-magic" ,python2-magic)))
10570 (home-page "http://s3tools.org/s3cmd")
10571 (synopsis "Command line tool for S3-compatible storage services")
10572 (description
10573 "S3cmd is a command line tool for uploading, retrieving and managing data
10574in storage services that are compatible with the Amazon Simple Storage
10575Service (S3) protocol, including S3 itself. It supports rsync-like backup,
10576GnuPG encryption, and more. It also supports management of Amazon's
10577CloudFront content delivery network.")
3f641af0 10578 (license license:gpl2+)))
4323a5f0
AE
10579
10580(define-public python-pkgconfig
10581 (package
10582 (name "python-pkgconfig")
10583 (version "1.1.0")
10584 (source
10585 (origin
10586 (method url-fetch)
10587 (uri (pypi-uri "pkgconfig" version))
10588 (sha256
10589 (base32
10590 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
10591 (build-system python-build-system)
10592 (native-inputs
f3b98f4f 10593 `(("python-nose" ,python-nose)))
4323a5f0
AE
10594 (inputs
10595 `(("pkg-config" ,pkg-config)))
10596 (arguments
10597 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
10598 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
10599 #:tests? #f
4323a5f0
AE
10600 ;; Hard-code the path to pkg-config.
10601 #:phases
10602 (modify-phases %standard-phases
10603 (add-before
10604 'build 'patch
10605 (lambda _
10606 (substitute* "pkgconfig/pkgconfig.py"
10607 (("cmd = 'pkg-config")
10608 (string-append "cmd = '" (which "pkg-config"))))
10609 #t)))))
7bf837fd 10610 (home-page "https://github.com/matze/pkgconfig")
4323a5f0
AE
10611 (synopsis "Python interface for pkg-config")
10612 (description "This module provides a Python interface to pkg-config. It
10613can be used to find all pkg-config packages, check if a package exists,
10614check if a package meets certain version requirements, query CFLAGS and
10615LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 10616 (license license:expat)))
4323a5f0
AE
10617
10618(define-public python2-pkgconfig
10619 (package-with-python2 python-pkgconfig))
10620
2e697322
BW
10621(define-public python-bz2file
10622 (package
10623 (name "python-bz2file")
10624 (version "0.98")
10625 (source
10626 (origin
10627 (method url-fetch)
10628 (uri (pypi-uri "bz2file" version))
10629 (sha256
10630 (base32
10631 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
10632 (build-system python-build-system)
10633 (arguments
124df723 10634 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
10635 (home-page "https://github.com/nvawda/bz2file")
10636 (synopsis "Read and write bzip2-compressed files")
10637 (description
10638 "Bz2file is a Python library for reading and writing bzip2-compressed
10639files. It contains a drop-in replacement for the I/O interface in the
10640standard library's @code{bz2} module, including features from the latest
10641development version of CPython that are not available in older releases.")
3f641af0 10642 (license license:asl2.0)
2e697322
BW
10643 (properties `((python2-variant . ,(delay python2-bz2file))))))
10644
10645(define-public python2-bz2file
10646 (let ((base (package-with-python2
10647 (strip-python2-variant python-bz2file))))
10648 (package
10649 (inherit base)
124df723 10650 (arguments
752bb447
BW
10651 `(#:python ,python-2
10652 #:phases
124df723
BW
10653 (modify-phases %standard-phases
10654 ;; 'python setup.py test' does not work as of 0.98.
10655 ;; There is only the one test file, so we run it directly.
10656 (replace 'check
10657 (lambda _ (zero? (system* "python"
10658 "test_bz2file.py"))))))))))
2e697322 10659
da4ac1aa
BW
10660(define-public python-future
10661 (package
10662 (name "python-future")
10663 (version "0.15.2")
10664 (source
10665 (origin
10666 (method url-fetch)
10667 (uri (pypi-uri "future" version))
10668 (sha256
10669 (base32
10670 "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx"))))
10671 (build-system python-build-system)
10672 ;; Many tests connect to the network or are otherwise flawed.
10673 ;; https://github.com/PythonCharmers/python-future/issues/210
10674 (arguments
10675 `(#:tests? #f))
10676 (home-page "http://python-future.org")
10677 (synopsis "Single-source support for Python 3 and 2")
10678 (description
10679 "@code{python-future} is the missing compatibility layer between Python 2 and
10680Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
10681to support both Python 2 and Python 3 with minimal overhead.")
f210e944 10682 (license license:expat)))
da4ac1aa
BW
10683
10684(define-public python2-future
f210e944 10685 (package-with-python2 python-future))
da4ac1aa 10686
8e451885
AE
10687(define-public python-cysignals
10688 (package
10689 (name "python-cysignals")
10690 (version "1.1.0")
10691 (source
10692 (origin
10693 (method url-fetch)
10694 (uri (pypi-uri "cysignals" version ".tar.bz2"))
10695 (sha256
10696 (base32
10697 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
10698 (build-system python-build-system)
10699 (native-inputs
10700 `(("python-cython" ,python-cython)
8e451885
AE
10701 ("python-sphinx" ,python-sphinx)))
10702 (inputs
10703 `(("pari-gp" ,pari-gp)))
10704 (arguments
10705 `(#:modules ((guix build python-build-system)
10706 ((guix build gnu-build-system) #:prefix gnu:)
10707 (guix build utils))
10708 ;; FIXME: Tests are executed after installation and currently fail
10709 ;; when not installing into standard locations; the author is working
10710 ;; on a fix.
10711 #:tests? #f
10712 #:phases
10713 (modify-phases %standard-phases
10714 (add-before
10715 'build 'configure
10716 (assoc-ref gnu:%standard-phases 'configure)))))
10717 (home-page
10718 "https://github.com/sagemath/cysignals")
10719 (synopsis
10720 "Handling of interrupts and signals for Cython")
10721 (description
10722 "The cysignals package provides mechanisms to handle interrupts (and
10723other signals and errors) in Cython code, using two related approaches,
10724for mixed Cython/Python code or external C libraries and pure Cython code,
10725respectively.")
3f641af0 10726 (license license:lgpl3+)))
8e451885
AE
10727
10728(define-public python2-cysignals
10729 (package-with-python2 python-cysignals))
10730
63bcec71
DM
10731(define-public python2-shedskin
10732 (package
10733 (name "python2-shedskin")
10734 (version "0.9.4")
10735 (source
10736 (origin
10737 (method url-fetch)
10738 (uri (string-append "https://github.com/shedskin/shedskin/"
10739 "releases/download/v" version
10740 "/shedskin-" version ".tgz"))
10741 (sha256
10742 (base32
10743 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
10744 (build-system python-build-system)
10745 (arguments
10746 `(#:python ,python-2
10747 #:phases (modify-phases %standard-phases
10748 (add-after 'unpack 'fix-resulting-include-libs
10749 (lambda* (#:key inputs #:allow-other-keys)
10750 (let ((libgc (assoc-ref inputs "libgc"))
10751 (pcre (assoc-ref inputs "pcre")))
10752 (substitute* "shedskin/makefile.py"
10753 (("variable == 'CCFLAGS':[ ]*")
10754 (string-append "variable == 'CCFLAGS':\n"
10755 " line += ' -I " pcre "/include"
10756 " -I " libgc "/include'"))
10757 (("variable == 'LFLAGS':[ ]*")
10758 (string-append "variable == 'LFLAGS':\n"
10759 " line += ' -L" pcre "/lib"
10760 " -L " libgc "/lib'")))
10761 #t))))))
63bcec71
DM
10762 (inputs `(("pcre" ,pcre)
10763 ("libgc" ,libgc)))
10764 (home-page "https://shedskin.github.io/")
10765 (synopsis "Experimental Python-2 to C++ Compiler")
10766 (description (string-append "This is an experimental compiler for a subset of
10767Python. It generates C++ code and a Makefile."))
3f641af0 10768 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
10769
10770(define-public python2-rope
10771 (package
10772 (name "python2-rope")
10773 (version "0.10.3")
10774 (source
10775 (origin
10776 (method url-fetch)
10777 (uri (pypi-uri "rope" version))
10778 (sha256
10779 (base32
10780 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
10781 (arguments
10782 ;; Rope is currently python-2 only.
10783 ;; https://github.com/python-rope/rope/issues/57
10784 `(#:python ,python-2))
10785 (build-system python-build-system)
10786 (native-inputs
f3b98f4f 10787 `(("python2-unittest2" ,python2-unittest2)))
88bb4197
LG
10788 (home-page "https://github.com/python-rope/rope")
10789 (synopsis "Refactoring library for Python")
10790 (description "Rope is a refactoring library for Python. It facilitates
10791the renaming, moving and extracting of attributes, functions, modules, fields
10792and parameters in Python 2 source code. These refactorings can also be applied
d1e4ad1b 10793to occurrences in strings and comments.")
3f641af0 10794 (license license:gpl2)))
6ba8ca17
10795
10796(define-public python-py3status
10797 (package
10798 (name "python-py3status")
d2262d70 10799 (version "3.1")
6ba8ca17
10800 (source
10801 (origin
10802 (method url-fetch)
10803 (uri (pypi-uri "py3status" version))
10804 (sha256
10805 (base32
d2262d70 10806 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17 10807 (build-system python-build-system)
8653c1d5
MB
10808 (arguments
10809 '(#:tests? #f)) ; TODO: Requires many libraries not in Guix.
6ba8ca17
10810 (home-page "https://github.com/ultrabug/py3status")
10811 (synopsis "Extensible i3status wrapper written in Python")
10812 (description "py3status is an i3status wrapper which extends i3status
10813functionality in a modular way, allowing you to extend your panel with your
10814own code, responding to click events and updating clock every second.")
3f641af0 10815 (license license:bsd-3)))
b8fdbca3
HG
10816
10817(define-public python-tblib
10818 (package
10819 (name "python-tblib")
10820 (version "1.3.0")
10821 (source (origin
10822 (method url-fetch)
10823 (uri (pypi-uri "tblib" version))
10824 (sha256 (base32
10825 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
10826 (build-system python-build-system)
10827 (arguments
10828 `(#:phases
10829 (modify-phases %standard-phases
10830 (replace 'check
10831 (lambda _
10832 ;; Upstream runs tests after installation and the package itself
10833 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
10834 ;; found.
10835 (setenv "PYTHONPATH"
10836 (string-append (getcwd) "/build/lib:"
10837 (getenv "PYTHONPATH")))
10838 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
10839 (native-inputs
10840 `(("python-pytest" ,python-pytest)
b8fdbca3
HG
10841 ("python-six" ,python-six)))
10842 (home-page "https://github.com/ionelmc/python-tblib")
10843 (synopsis "Traceback serialization library")
10844 (description
10845 "Traceback serialization allows you to:
10846
10847@enumerate
10848@item Pickle tracebacks and raise exceptions with pickled tracebacks in
10849different processes. This allows better error handling when running code over
10850multiple processes (imagine multiprocessing, billiard, futures, celery etc).
10851
10852@item Parse traceback strings and raise with the parsed tracebacks.
9657aeb1 10853@end enumerate\n")
3f641af0 10854 (license license:bsd-3)))
b8fdbca3
HG
10855
10856(define-public python2-tblib
10857 (package-with-python2 python-tblib))
1a024de4
HG
10858
10859(define-public python-sqlparse
10860 (package
10861 (name "python-sqlparse")
10862 (version "0.1.19")
10863 (source (origin
10864 (method url-fetch)
10865 (uri (pypi-uri "sqlparse" version))
10866 (sha256
10867 (base32
10868 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
10869 (build-system python-build-system)
10870 (arguments
10871 `(#:phases
10872 (modify-phases %standard-phases
10873 (replace 'check
10874 (lambda* _
10875 ;; setup.py-integrated 2to3 only affects the build files, but
10876 ;; py.test is using the source files. So we need to convert them
10877 ;; manually.
10878 (when (zero? (system* "python3"))
10879 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
10880 (zero? (system* "py.test")))))))
10881 (native-inputs
f3b98f4f 10882 `(("python-pytest" ,python-pytest)))
1a024de4
HG
10883 (home-page "https://github.com/andialbrecht/sqlparse")
10884 (synopsis "Non-validating SQL parser")
10885 (description "Sqlparse is a non-validating SQL parser for Python. It
10886provides support for parsing, splitting and formatting SQL statements.")
3f641af0 10887 (license license:bsd-3)))
1a024de4
HG
10888
10889(define-public python2-sqlparse
10890 (package-with-python2 python-sqlparse))
68b9d242
SB
10891
10892(define-public python-greenlet
10893 (package
10894 (name "python-greenlet")
1f89fb16 10895 (version "0.4.11")
68b9d242
SB
10896 (source (origin
10897 (method url-fetch)
10898 (uri (pypi-uri "greenlet" version))
10899 (sha256
10900 (base32
1f89fb16 10901 "1xhik26j4f3kc4qw9xmj0c567rb5h1zryb4ijwqnqwwjvfhbv59h"))))
68b9d242 10902 (build-system python-build-system)
68b9d242
SB
10903 (home-page "https://greenlet.readthedocs.io/")
10904 (synopsis "Lightweight in-process concurrent programming")
10905 (description
10906 "Greenlet package is a spin-off of Stackless, a version of CPython
10907that supports micro-threads called \"tasklets\". Tasklets run
10908pseudo-concurrently (typically in a single or a few OS-level threads) and
10909are synchronized with data exchanges on \"channels\".")
3f641af0 10910 (license (list license:psfl license:expat))))
68b9d242
SB
10911
10912(define-public python2-greenlet
10913 (package-with-python2 python-greenlet))
d79a343b
SB
10914
10915(define-public python-gevent
10916 (package
10917 (name "python-gevent")
10918 (version "1.1.1")
10919 (source (origin
10920 (method url-fetch)
10921 (uri (pypi-uri "gevent" version))
10922 (sha256
10923 (base32
10924 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
10925 (modules '((guix build utils)))
10926 (snippet
10927 '(begin
10928 ;; unbunding libev and c-ares
10929 (for-each delete-file-recursively '("libev" "c-ares"))
10930 ;; fixing testsuite
10931 (call-with-output-file "greentest/__init__.py" noop)
10932 (substitute* "greentest/testrunner.py"
10933 (("import util") "from . import util")
10934 (("from util import log") "from .util import log"))))))
10935 (build-system python-build-system)
10936 (propagated-inputs
10937 `(("python-greenlet" ,python-greenlet)))
10938 (native-inputs
f3b98f4f 10939 `(("python-six" ,python-six)))
d79a343b
SB
10940 (inputs
10941 `(("c-ares" ,c-ares)
10942 ("libev" ,libev)))
10943 (home-page "http://www.gevent.org/")
10944 (synopsis "Coroutine-based network library")
10945 (description
10946 "gevent is a coroutine-based Python networking library that uses greenlet
10947to provide a high-level synchronous API on top of the libev event loop.")
10948 (license license:expat)))
10949
10950(define-public python2-gevent
10951 (package-with-python2 python-gevent))
da3aeeb6 10952
c9a18125
MB
10953(define-public python-geventhttpclient
10954 (package
10955 (name "python-geventhttpclient")
10956 (version "1.3.1")
10957 (source (origin
10958 (method url-fetch)
10959 (uri (pypi-uri "geventhttpclient" version))
10960 (sha256
10961 (base32
10962 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
10963 (modules '((guix build utils)))
10964 (snippet
10965 '(begin
10966 ;; Delete pre-compiled files.
10967 (for-each delete-file (find-files "src/geventhttpclient"
10968 ".*\\.pyc"))
10969 #t))))
10970 (build-system python-build-system)
10971 (arguments
10972 '(#:phases
10973 (modify-phases %standard-phases
10974 (add-after 'unpack 'delete-network-tests
10975 (lambda _
10976 (delete-file "src/geventhttpclient/tests/test_client.py")
10977 #t))
10978 (delete 'check)
10979 (add-after 'install 'check
10980 (lambda* (#:key inputs outputs #:allow-other-keys)
10981 (add-installed-pythonpath inputs outputs)
10982 (zero? (system* "py.test" "src/geventhttpclient/tests" "-v")))))))
10983 (native-inputs
10984 `(("python-pytest" ,python-pytest)))
10985 (propagated-inputs
10986 `(("python-certifi" ,python-certifi)
10987 ("python-gevent" ,python-gevent)
10988 ("python-six" ,python-six)))
10989 (home-page "https://github.com/gwik/geventhttpclient")
10990 (synopsis "HTTP client library for gevent")
10991 (description "@code{python-geventhttpclient} is a high performance,
10992concurrent HTTP client library for python using @code{gevent}.")
10993 (license license:expat)))
10994
10995(define-public python2-geventhttpclient
10996 (package-with-python2 python-geventhttpclient))
10997
b585e361
DM
10998(define-public python-fastimport
10999 (package
11000 (name "python-fastimport")
11001 (version "0.9.6")
11002 (source
11003 (origin
11004 (method url-fetch)
11005 (uri (pypi-uri "fastimport" version))
11006 (sha256
11007 (base32 "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"))))
11008 (build-system python-build-system)
11009 (home-page "https://github.com/jelmer/python-fastimport")
11010 (synopsis "VCS fastimport parser and generator in Python")
11011 (description "This package provides a parser for and generator of the Git
11012@url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport}
11013format.")
11014 (license license:gpl2+)))
11015
11016(define-public python2-fastimport
11017 (package-with-python2 python-fastimport))
11018
da3aeeb6
SB
11019(define-public python-twisted
11020 (package
11021 (name "python-twisted")
11022 (version "16.2.0")
11023 (source (origin
11024 (method url-fetch)
8ea8e8d3 11025 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
11026 (sha256
11027 (base32
11028 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
11029 (build-system python-build-system)
a960e73f
MB
11030 (arguments
11031 '(#:tests? #f)) ; FIXME: Some tests are failing.
11032 ;; #:phases
11033 ;; (modify-phases %standard-phases
11034 ;; (replace 'check
11035 ;; (lambda _
11036 ;; (zero? (system* "./bin/trial" "twisted")))))
45912170
SB
11037 (propagated-inputs
11038 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
11039 (home-page "https://twistedmatrix.com/")
11040 (synopsis "Asynchronous networking framework written in Python")
11041 (description
11042 "Twisted is an extensible framework for Python programming, with special
11043focus on event-based network programming and multiprotocol integration.")
11044 (license license:expat)))
11045
11046(define-public python2-twisted
11047 (package-with-python2 python-twisted))
d0b6fed6 11048
4d3fa5a4
EF
11049(define-public python-pika
11050 (package
11051 (name "python-pika")
11052 (version "0.10.0")
11053 (source
11054 (origin
11055 (method url-fetch)
11056 (uri (pypi-uri "pika" version))
11057 (sha256
11058 (base32
11059 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
11060 (build-system python-build-system)
11061 (native-inputs
269d9172
LF
11062 `(("python-pyev" ,python-pyev)
11063 ("python-tornado" ,python-tornado)
11064 ("python-twisted" ,python-twisted)))
4d3fa5a4
EF
11065 (home-page "https://pika.readthedocs.org")
11066 (synopsis "Pure Python AMQP Client Library")
11067 (description
11068 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
11069Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
11070network support library.")
11071 (license license:bsd-3)))
11072
11073(define-public python2-pika
11074 (package-with-python2 python-pika))
11075
d0b6fed6
DM
11076(define-public python-ply
11077 (package
11078 (name "python-ply")
234ade2d 11079 (version "3.9")
d0b6fed6
DM
11080 (source
11081 (origin
11082 (method url-fetch)
234ade2d 11083 (uri (pypi-uri "ply" version))
d0b6fed6
DM
11084 (sha256
11085 (base32
234ade2d 11086 "0gpl0yli3w03ipyqfrp3w5nf0iawhsq65anf5wwm2wf5p502jzhd"))))
d0b6fed6
DM
11087 (build-system python-build-system)
11088 (home-page "http://www.dabeaz.com/ply/")
11089 (synopsis "Python Lex & Yacc")
11090 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
11091It uses LR parsing and does extensive error checking.")
f210e944 11092 (license license:bsd-3)))
d0b6fed6
DM
11093
11094(define-public python2-ply
f210e944 11095 (package-with-python2 python-ply))
d951bd54
SB
11096
11097(define-public python-tabulate
11098 (package
11099 (name "python-tabulate")
e6ace98d 11100 (version "0.7.7")
d951bd54
SB
11101 (source (origin
11102 (method url-fetch)
11103 (uri (pypi-uri "tabulate" version))
11104 (sha256
11105 (base32
fe2ba3a8 11106 "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
d951bd54 11107 (build-system python-build-system)
fe2ba3a8
MB
11108 (arguments
11109 ;; FIXME: The pypi release tarball is missing a 'test/common.py'
11110 ;; and the latest release is not tagged in the upstream repository.
11111 '(#:tests? #f))
d951bd54
SB
11112 (home-page "https://bitbucket.org/astanin/python-tabulate")
11113 (synopsis "Pretty-print tabular data")
11114 (description
11115 "Tabulate is a library and command-line utility to pretty-print tabular
11116data in Python.")
11117 (license license:expat)))
11118
11119(define-public python2-tabulate
11120 (package-with-python2 python-tabulate))
1c4c8a33
SB
11121
11122(define-public python-kazoo
11123 (package
11124 (name "python-kazoo")
11125 (version "2.2.1")
11126 (source
11127 (origin
11128 (method url-fetch)
11129 (uri (pypi-uri "kazoo" version))
11130 (sha256
11131 (base32
11132 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
11133 (build-system python-build-system)
11134 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
c18899e8
SB
11135 (propagated-inputs
11136 `(("python-six" ,python-six)))
1c4c8a33
SB
11137 (home-page "https://kazoo.readthedocs.org")
11138 (synopsis "High-level Zookeeper client library")
11139 (description
11140 "Kazoo is a Python client library for the Apache Zookeeper distributed
11141application service. It is designed to be easy to use and to avoid common
11142programming errors.")
3f641af0 11143 (license license:asl2.0)))
1c4c8a33
SB
11144
11145(define-public python2-kazoo
11146 (package-with-python2 python-kazoo))
45dda35e
SB
11147
11148(define-public python-pykafka
11149 (package
11150 (name "python-pykafka")
11151 (version "2.4.0")
11152 (source (origin
11153 (method url-fetch)
c6bccf71
EF
11154 (uri (string-append
11155 "https://pypi.python.org/packages/8b/3e/"
11156 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
11157 "pykafka-" version ".tar.gz"))
45dda35e
SB
11158 (sha256
11159 (base32
11160 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
11161 (build-system python-build-system)
11162 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
c8fa3d9b 11163 (propagated-inputs
45dda35e
SB
11164 `(("python-gevent" ,python-gevent)
11165 ("python-kazoo" ,python-kazoo)
45dda35e
SB
11166 ("python-tabulate" ,python-tabulate)))
11167 (inputs
11168 `(("librdkafka" ,librdkafka)))
11169 (home-page "https://pykafka.readthedocs.io/")
11170 (synopsis "Apache Kafka client for Python")
11171 (description
11172 "PyKafka is a client for the Apache Kafka distributed messaging system.
11173It includes Python implementations of Kafka producers and consumers, which
11174are optionally backed by a C extension built on librdkafka.")
3f641af0 11175 (license license:asl2.0)))
45dda35e
SB
11176
11177(define-public python2-pykafka
11178 (package-with-python2 python-pykafka))
a44fd439
DM
11179
11180(define-public python-wcwidth
11181 (package
11182 (name "python-wcwidth")
9e59478f 11183 (version "0.1.7")
a44fd439
DM
11184 (source
11185 (origin
11186 (method url-fetch)
9e59478f 11187 (uri (pypi-uri "wcwidth" version))
a44fd439
DM
11188 (sha256
11189 (base32
9e59478f 11190 "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx"))))
a44fd439
DM
11191 (build-system python-build-system)
11192 (home-page "https://github.com/jquast/wcwidth")
66e07664 11193 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
11194 (description "Wcwidth measures the number of terminal column cells of
11195wide-character codes. It is useful for those implementing a terminal emulator,
11196or programs that carefully produce output to be interpreted by one. It is a
11197Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
11198specified in POSIX.1-2001 and POSIX.1-2008.")
f210e944 11199 (license license:expat)))
a44fd439
DM
11200
11201(define-public python2-wcwidth
f210e944 11202 (package-with-python2 python-wcwidth))
0de78c95
DP
11203
11204(define-public python2-jsonrpclib
11205 (package
11206 (name "python2-jsonrpclib")
11207 (version "0.1.7")
11208 (source (origin
11209 (method url-fetch)
11210 (uri (string-append
11211 "https://pypi.python.org/packages/source/j/jsonrpclib/"
11212 "jsonrpclib-" version ".tar.gz"))
11213 (sha256
11214 (base32
11215 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
11216 (build-system python-build-system)
0de78c95
DP
11217 (arguments
11218 `(#:tests? #f
11219 #:python ,python-2))
11220 (home-page "https://github.com/joshmarshall/jsonrpclib/")
11221 (synopsis "Implementation of JSON-RPC specification for Python")
11222 (description
11223 "This library is an implementation of the JSON-RPC specification.
11224It supports both the original 1.0 specification, as well as the
11225new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
11226etc.")
3f641af0 11227 (license license:asl2.0)))
9250b0f3
SB
11228
11229(define-public python-chai
11230 (package
11231 (name "python-chai")
11232 (version "1.1.1")
11233 (source (origin
11234 (method url-fetch)
11235 (uri (pypi-uri "chai" version))
11236 (sha256
11237 (base32
11238 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
11239 (build-system python-build-system)
9250b0f3
SB
11240 (home-page "https://github.com/agoragames/chai")
11241 (synopsis "Mocking framework for Python")
11242 (description
11243 "Chai provides an api for mocking, stubbing and spying your python
11244objects, patterned after the Mocha library for Ruby.")
3f641af0 11245 (license license:bsd-3)))
9250b0f3
SB
11246
11247(define-public python2-chai
11248 (package-with-python2 python-chai))
11249
ae43baa8
SB
11250(define-public python-arrow
11251 (package
11252 (name "python-arrow")
11253 (version "0.8.0")
11254 (source (origin
11255 (method url-fetch)
11256 (uri (pypi-uri "arrow" version))
11257 (sha256
11258 (base32
11259 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
11260 (build-system python-build-system)
11261 (native-inputs
f3b98f4f 11262 `(;; For testing
ae43baa8
SB
11263 ("python-chai" ,python-chai)
11264 ("python-simplejson" ,python-simplejson)))
36aed736 11265 (propagated-inputs
22d7360b 11266 `(("python-dateutil" ,python-dateutil)))
ae43baa8
SB
11267 (home-page "https://github.com/crsmithdev/arrow/")
11268 (synopsis "Dates and times for Python")
11269 (description
11270 "Arrow is a Python library to creating, manipulating, formatting and
11271converting dates, times, and timestamps. It implements and updates the
11272datetime type.")
3f641af0 11273 (license license:asl2.0)))
ae43baa8
SB
11274
11275(define-public python2-arrow
11276 (package-with-python2 python-arrow))
11277
1f2b62a4
SB
11278(define-public python-inflection
11279 (package
11280 (name "python-inflection")
11281 (version "0.3.1")
11282 (source
11283 (origin (method url-fetch)
11284 (uri (pypi-uri "inflection" version))
11285 (sha256
11286 (base32
11287 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
11288 (build-system python-build-system)
e9127525
MB
11289 (native-inputs
11290 `(("python-pytest" ,python-pytest)))
7bf837fd 11291 (home-page "https://github.com/jpvanhal/inflection")
1f2b62a4
SB
11292 (synopsis "Python string transformation library")
11293 (description
11294 "Inflection is a string transformation library. It singularizes
11295and pluralizes English words, and transforms strings from CamelCase to
11296underscored string.")
11297 (license license:expat)))
11298
11299(define-public python2-inflection
11300 (package-with-python2 python-inflection))
11301
18995566
SB
11302(define-public python-pylev
11303 (package
11304 (name "python-pylev")
11305 (version "1.3.0")
11306 (source (origin
11307 (method url-fetch)
11308 (uri (pypi-uri "pylev" version))
11309 (sha256
11310 (base32
11311 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
11312 (build-system python-build-system)
7bf837fd 11313 (home-page "https://github.com/toastdriven/pylev")
18995566
SB
11314 (synopsis "Levenshtein distance implementation in Python")
11315 (description "Pure Python Levenshtein implementation, based off the
11316Wikipedia code samples at
11317@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 11318 (license license:bsd-3)))
18995566
SB
11319
11320(define-public python2-pylev
11321 (package-with-python2 python-pylev))
11322
f5deff7a
SB
11323(define-public python-cleo
11324 (package
11325 (name "python-cleo")
11326 (version "0.4.1")
11327 (source (origin
11328 (method url-fetch)
11329 (uri (pypi-uri "cleo" version))
11330 (sha256
11331 (base32
11332 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
11333 (build-system python-build-system)
11334 (native-inputs
f3b98f4f 11335 `(;; For testing
f5deff7a
SB
11336 ("python-mock" ,python-mock)
11337 ("python-pytest" ,python-pytest)))
9403150a
SB
11338 (propagated-inputs
11339 `(("python-psutil" ,python-psutil)
11340 ("python-pylev" ,python-pylev)))
f5deff7a
SB
11341 (home-page "https://github.com/sdispater/cleo")
11342 (synopsis "Command-line arguments library for Python")
11343 (description
11344 "Cleo allows you to create command-line commands with signature in
11345docstring and colored output.")
11346 (license license:expat)))
11347
11348(define-public python2-cleo
11349 (package-with-python2 python-cleo))
11350
77cadb43
SB
11351(define-public python-lazy-object-proxy
11352 (package
11353 (name "python-lazy-object-proxy")
11354 (version "1.2.2")
11355 (source (origin
11356 (method url-fetch)
11357 (uri (pypi-uri "lazy-object-proxy" version))
11358 (sha256
11359 (base32
11360 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
11361 (build-system python-build-system)
77cadb43
SB
11362 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
11363 (synopsis "Lazy object proxy for python")
11364 (description
11365 "Lazy object proxy is an object that wraps a callable but defers the call
11366until the object is actually required, and caches the result of said call.")
3f641af0 11367 (license license:bsd-2)))
77cadb43
SB
11368
11369(define-public python2-lazy-object-proxy
11370 (package-with-python2 python-lazy-object-proxy))
11371
5477e05f
SB
11372(define-public python-dnspython
11373 (package
11374 (name "python-dnspython")
6c514128 11375 (version "1.15.0")
5477e05f
SB
11376 (source (origin
11377 (method url-fetch)
11378 (uri (string-append "http://www.dnspython.org/kits/"
11379 version "/dnspython-" version ".tar.gz"))
11380 (sha256
11381 (base32
6c514128 11382 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
5477e05f
SB
11383 (build-system python-build-system)
11384 (arguments '(#:tests? #f)) ; XXX: requires internet access
5477e05f
SB
11385 (home-page "http://www.dnspython.org")
11386 (synopsis "DNS toolkit for Python")
11387 (description
11388 "dnspython is a DNS toolkit for Python. It supports almost all record
11389types. It can be used for queries, zone transfers, and dynamic updates.
11390It supports TSIG authenticated messages and EDNS0.")
11391 (license license:expat)))
11392
11393(define-public python2-dnspython
11394 (package-with-python2 python-dnspython))
11395
22711e25
SB
11396(define-public python-email-validator
11397 (package
11398 (name "python-email-validator")
b165c215 11399 (version "1.0.2")
22711e25
SB
11400 (source
11401 (origin (method url-fetch)
11402 (uri (pypi-uri "email_validator" version))
11403 (sha256
11404 (base32
b165c215 11405 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
22711e25
SB
11406 (build-system python-build-system)
11407 (arguments
11408 '(#:phases
11409 (modify-phases %standard-phases
11410 (add-before 'build 'use-dnspython
11411 (lambda _
11412 (substitute* "setup.py"
11413 (("dnspython3") "dnspython"))
11414 #t)))))
d42560bd 11415 (propagated-inputs
22711e25 11416 `(("python-dnspython" ,python-dnspython)
d42560bd 11417 ("python-idna" ,python-idna)))
22711e25
SB
11418 (home-page "https://github.com/JoshData/python-email-validator")
11419 (synopsis "Email address validation library for Python")
11420 (description
11421 "This library validates email address syntax and deliverability.")
3f641af0 11422 (license license:cc0)))
22711e25
SB
11423
11424(define-public python2-email-validator
11425 (package-with-python2 python-email-validator))
11426
8987d91e
SB
11427(define-public python-ukpostcodeparser
11428 (package
11429 (name "python-ukpostcodeparser")
11430 (version "1.0.3")
11431 (source (origin
11432 (method url-fetch)
11433 (uri (pypi-uri "UkPostcodeParser" version))
11434 (sha256
11435 (base32
11436 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
11437 (build-system python-build-system)
8987d91e
SB
11438 (home-page "https://github.com/hamstah/ukpostcodeparser")
11439 (synopsis "UK Postcode parser for Python")
11440 (description
11441 "This library provides the @code{parse_uk_postcode} function for
11442parsing UK postcodes.")
11443 (license license:expat)))
11444
11445(define-public python2-ukpostcodeparser
11446 (package-with-python2 python-ukpostcodeparser))
ea92ae01 11447
ce7911dd
MB
11448(define-public python-faker
11449 (package
11450 (name "python-faker")
11451 (version "0.7.9")
11452 (source (origin
11453 (method url-fetch)
11454 (uri (pypi-uri "Faker" version))
11455 (sha256
11456 (base32
11457 "1fh2p2yz0fsdr4fqwxgddwbvfb6qn6vp8yx0qwqzra27yq5d1wsm"))
11458 (patches
11459 (search-patches "python-faker-fix-build-32bit.patch"))
11460 (modules '((guix build utils)))
11461 (snippet
11462 '(begin
11463 (for-each delete-file (find-files "." "\\.pyc$"))
11464 #t))))
11465 (build-system python-build-system)
11466 (arguments
11467 '(#:phases
11468 (modify-phases %standard-phases
11469 (replace 'check
11470 (lambda _
11471 (zero? (system* "python" "-m" "unittest" "-v" "tests")))))))
11472 (native-inputs
11473 `(;; For testing
11474 ("python-email-validator" ,python-email-validator)
11475 ("python-mock" ,python-mock)
11476 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
11477 (propagated-inputs
11478 `(("python-dateutil" ,python-dateutil)
11479 ("python-six" ,python-six)))
11480 (home-page "https://github.com/joke2k/faker")
11481 (synopsis "Python package that generates fake data")
11482 (description
11483 "Faker is a Python package that generates fake data such as names,
11484addresses, and phone numbers.")
11485 (license license:expat)
11486 (properties `((python2-variant . ,(delay python2-faker))))))
11487
11488(define-public python2-faker
11489 (let ((base (package-with-python2 (strip-python2-variant
11490 python-faker))))
11491 (package
11492 (inherit base)
11493 (propagated-inputs
11494 `(("python2-ipaddress" ,python2-ipaddress)
11495 ,@(package-propagated-inputs base))))))
11496
ea92ae01
SB
11497(define-public python-fake-factory
11498 (package
11499 (name "python-fake-factory")
7adc698f 11500 (version "0.7.2")
ea92ae01
SB
11501 (source (origin
11502 (method url-fetch)
11503 (uri (pypi-uri "fake-factory" version))
11504 (sha256
11505 (base32
42945fb5
MB
11506 "0vs0dkmg0dlaxf8w6q2i3k0i03gmp56ablldv7ci9x3nbadkn71g"))
11507 (patches
11508 (search-patches
11509 "python-fake-factory-fix-build-32bit.patch"))))
ea92ae01 11510 (build-system python-build-system)
b7f3ea95
MB
11511 (arguments
11512 '(#:phases
11513 (modify-phases %standard-phases
11514 (replace 'check
11515 (lambda _
11516 (zero? (system* "python" "-m" "unittest" "-v" "faker.tests")))))))
ea92ae01 11517 (native-inputs
f3b98f4f 11518 `(;; For testing
ea92ae01
SB
11519 ("python-email-validator" ,python-email-validator)
11520 ("python-mock" ,python-mock)
11521 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
bbcd7297 11522 (propagated-inputs
22d7360b 11523 `(("python-dateutil" ,python-dateutil)
bbcd7297 11524 ("python-six" ,python-six)))
7adc698f 11525 (home-page "https://github.com/joke2k/faker")
ea92ae01
SB
11526 (synopsis "Python package that generates fake data")
11527 (description
11528 "Faker is a Python package that generates fake data such as names,
11529addresses, and phone numbers.")
11530 (license license:expat)
ce7911dd
MB
11531 (properties `((python2-variant . ,(delay python2-fake-factory))
11532 (superseded . ,python-faker)))))
ea92ae01
SB
11533
11534(define-public python2-fake-factory
11535 (let ((base (package-with-python2 (strip-python2-variant
11536 python-fake-factory))))
11537 (package
11538 (inherit base)
ce7911dd 11539 (properties `((superseded . ,python2-faker)))
24c9aa18 11540 (propagated-inputs
ea92ae01 11541 `(("python2-ipaddress" ,python2-ipaddress)
24c9aa18 11542 ,@(package-propagated-inputs base))))))
ea92ae01 11543
b49504fd
SB
11544(define-public python-pyaml
11545 (package
11546 (name "python-pyaml")
11547 (version "15.8.2")
11548 (source (origin
11549 (method url-fetch)
11550 (uri (pypi-uri "pyaml" version))
11551 (sha256
11552 (base32
11553 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
11554 (build-system python-build-system)
f620311a
MB
11555 (native-inputs
11556 `(("python-unidecode" ,python-unidecode)))
b49504fd
SB
11557 (propagated-inputs
11558 `(("python-pyyaml" ,python-pyyaml)))
11559 (home-page "https://github.com/mk-fg/pretty-yaml")
11560 (synopsis "YAML pretty-print library for Python")
11561 (description
11562 "pyaml is a PyYAML based python module to produce pretty and readable
11563YAML-serialized data.")
3f641af0 11564 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
11565
11566(define-public python2-pyaml
11567 (package-with-python2 python-pyaml))
11568
347175a2
SB
11569(define-public python-flexmock
11570 (package
11571 (name "python-flexmock")
11572 (version "0.10.2")
11573 (source (origin
11574 (method url-fetch)
11575 (uri (pypi-uri "flexmock" version))
11576 (sha256
11577 (base32
11578 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
11579 (build-system python-build-system)
347175a2
SB
11580 (home-page "https://flexmock.readthedocs.org")
11581 (synopsis "Testing library for Python")
11582 (description
11583 "flexmock is a testing library for Python that makes it easy to create
11584mocks, stubs and fakes.")
3f641af0 11585 (license license:bsd-3)))
347175a2
SB
11586
11587(define-public python2-flexmock
11588 (package-with-python2 python-flexmock))
11589
5a744191
SB
11590(define-public python-orator
11591 (package
11592 (name "python-orator")
11593 (version "0.8.2")
11594 (source (origin
11595 (method url-fetch)
11596 (uri (pypi-uri "orator" version))
11597 (sha256
11598 (base32
11599 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
11600 (build-system python-build-system)
11601 (arguments '(#:tests? #f)) ; no tests
b2676030 11602 (propagated-inputs
5a744191
SB
11603 `(("python-arrow" ,python-arrow)
11604 ("python-blinker" ,python-blinker)
11605 ("python-cleo" ,python-cleo)
ce7911dd 11606 ("python-faker" ,python-faker)
5a744191
SB
11607 ("python-inflection" ,python-inflection)
11608 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
11609 ("python-pyaml" ,python-pyaml)
5a744191
SB
11610 ("python-simplejson" ,python-simplejson)
11611 ("python-wrapt" ,python-wrapt)))
11612 (home-page "https://orator-orm.com/")
11613 (synopsis "ActiveRecord ORM for Python")
11614 (description
11615 "Orator provides a simple ActiveRecord-like Object Relational Mapping
11616implementation for Python.")
11617 (license license:expat)
11618 (properties `((python2-variant . ,(delay python2-orator))))))
11619
11620(define-public python2-orator
11621 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
11622 (package
11623 (inherit base)
06961617 11624 (propagated-inputs
5a744191 11625 `(("python2-ipaddress" ,python2-ipaddress)
06961617 11626 ,@(package-propagated-inputs base))))))
f4155188
DM
11627
11628(define-public python-prompt-toolkit
11629 (package
11630 (name "python-prompt-toolkit")
6a34f4cc 11631 (version "1.0.9")
f4155188
DM
11632 (source
11633 (origin
11634 (method url-fetch)
d15e2ef0 11635 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
11636 (sha256
11637 (base32
6a34f4cc 11638 "172r15k9kwdw2lnajvpz1632dd16nqz1kcal1p0lq5ywdarj6rfd"))))
f4155188 11639 (build-system python-build-system)
bae18710
LF
11640 (arguments
11641 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
f22efa01
HG
11642 (propagated-inputs
11643 `(("python-wcwidth" ,python-wcwidth)
2c199b55 11644 ("python-six" ,python-six)
f22efa01 11645 ("python-pygments" ,python-pygments)))
f4155188
DM
11646 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
11647 (synopsis "Library for building command line interfaces in Python")
11648 (description
11649 "Prompt-Toolkit is a library for building interactive command line
11650interfaces in Python. It's like GNU Readline but it also features syntax
11651highlighting while typing, out-of-the-box multi-line input editing, advanced
11652code completion, incremental search, support for Chinese double-width
11653characters, mouse support, and auto suggestions.")
f210e944 11654 (license license:bsd-3)))
f4155188
DM
11655
11656(define-public python2-prompt-toolkit
f210e944 11657 (package-with-python2 python-prompt-toolkit))
a502dfbf
DM
11658
11659(define-public python-jedi
11660 (package
11661 (name "python-jedi")
11662 (version "0.9.0")
11663 (source
11664 (origin
11665 (method url-fetch)
11666 (uri (pypi-uri "jedi" version))
11667 (sha256
11668 (base32
11669 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
11670 (build-system python-build-system)
bfce8a34
MB
11671 (arguments
11672 ;; FIXME: One test fails (use "py.test" instead of 'setup.py test').
11673 '(#:tests? #f))
11674 (native-inputs
11675 `(("python-pytest" ,python-pytest)))
a502dfbf
DM
11676 (home-page "https://github.com/davidhalter/jedi")
11677 (synopsis
11678 "Autocompletion for Python that can be used for text editors")
11679 (description
11680 "Jedi is an autocompletion tool for Python that can be used for text editors.")
f210e944 11681 (license license:expat)))
a502dfbf
DM
11682
11683(define-public python2-jedi
f210e944 11684 (package-with-python2 python-jedi))
c2f0dc6e
DM
11685
11686(define-public ptpython
11687 (package
11688 (name "ptpython")
11689 (version "0.34")
11690 (source (origin
11691 (method url-fetch)
11692 (uri (pypi-uri "ptpython" version))
11693 (sha256
11694 (base32
11695 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
11696 (build-system python-build-system)
32955348
MB
11697 (arguments
11698 '(#:tests? #f)) ; FIXME: No tests in pypi tarball.
f22efa01 11699 (propagated-inputs
c2f0dc6e
DM
11700 `(("python-docopt" ,python-docopt)
11701 ("python-jedi" ,python-jedi)
11702 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 11703 ("python-pygments" ,python-pygments)))
c2f0dc6e
DM
11704 (home-page "https://github.com/jonathanslenders/ptpython")
11705 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
11706 (description
11707 "ptpython is a Python read-eval-print loop with IDE-like features.
11708It supports syntax highlighting, multiline editing, autocompletion, mouse,
11709color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
11710etc.")
3f641af0 11711 (license license:bsd-3)
c2f0dc6e
DM
11712 (properties `((python2-variant . ,(delay ptpython-2))))))
11713
11714(define-public ptpython-2
11715 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
11716 (package
11717 (inherit base)
11718 (name "ptpython2"))))
b227f0be 11719
b04a52a6
DJ
11720(define-public python-requests-oauthlib
11721 (package
11722 (name "python-requests-oauthlib")
11723 (version "0.6.2")
11724 (source
11725 (origin
11726 (method url-fetch)
11727 (uri (pypi-uri "requests-oauthlib" version))
11728 (sha256
11729 (base32
11730 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
11731 (build-system python-build-system)
11732 (arguments
11733 `(#:phases
11734 (modify-phases %standard-phases
11735 ;; removes tests that require network access
11736 (add-before 'check 'pre-check
11737 (lambda _
11738 (delete-file "tests/test_core.py")
11739 #t)))))
11740 (native-inputs
11741 `(("python-requests-mock" ,python-requests-mock)
11742 ("python-mock" ,python-mock)))
f22efa01 11743 (propagated-inputs
b04a52a6
DJ
11744 `(("python-oauthlib" ,python-oauthlib)
11745 ("python-requests" ,python-requests)))
11746 (home-page
11747 "https://github.com/requests/requests-oauthlib")
11748 (synopsis
11749 "OAuthlib authentication support for Requests")
11750 (description
11751 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
11752provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
f210e944 11753 (license license:isc)))
b04a52a6
DJ
11754
11755(define-public python2-requests-oauthlib
f210e944 11756 (package-with-python2 python-requests-oauthlib))
b04a52a6 11757
b227f0be 11758(define-public python-stem
11759 (package
11760 (name "python-stem")
0bb1c35a 11761 (version "1.5.4")
b227f0be 11762 (source
11763 (origin
11764 (method url-fetch)
c976b319 11765 (uri (pypi-uri "stem" version))
b227f0be 11766 (sha256
11767 (base32
0bb1c35a 11768 "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
b227f0be 11769 (build-system python-build-system)
11770 (arguments
11771 `(#:phases
11772 (modify-phases %standard-phases
11773 (replace 'check
11774 (lambda _
11775 (zero? (system* "./run_tests.py" "--unit")))))))
11776 (native-inputs
11777 `(("python-mock" ,python-mock)
11778 ("python-pep8" ,python-pep8)
11779 ("python-pyflakes" ,python-pyflakes)))
b227f0be 11780 (home-page "https://stem.torproject.org/")
11781 (synopsis
11782 "Python controller library that allows applications to interact with Tor")
11783 (description
11784 "Stem is a Python controller library for Tor. With it you can use Tor's
11785control protocol to script against the Tor process and read descriptor data
11786relays publish about themselves.")
3f641af0 11787 (license license:lgpl3)))
b227f0be 11788
11789(define-public python2-stem
11790 (package-with-python2 python-stem))
517a6c0c
DM
11791
11792(define-public python-pyserial
11793 (package
11794 (name "python-pyserial")
11795 (version "3.1.1")
11796 (source
11797 (origin
11798 (method url-fetch)
11799 (uri (pypi-uri "pyserial" version))
11800 (sha256
11801 (base32
11802 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
11803 (build-system python-build-system)
0a702009
MB
11804 (arguments
11805 '(#:tests? #f)) ; FIXME: 3/49 tests are failing.
11806 ;; #:phases
11807 ;; (modify-phases %standard-phases
11808 ;; (replace 'check
11809 ;; (lambda _
11810 ;; (zero? (system* "python" "test/run_all_tests.py" "loop://")))))))
517a6c0c
DM
11811 (home-page
11812 "https://github.com/pyserial/pyserial")
11813 (synopsis "Python Serial Port Bindings")
11814 (description "@code{pyserial} provide serial port bindings for Python. It
11815supports different byte sizes, stop bits, parity and flow control with RTS/CTS
11816and/or Xon/Xoff. The port is accessed in RAW mode.")
f210e944 11817 (license license:bsd-3)))
517a6c0c
DM
11818
11819(define-public python2-pyserial
f210e944 11820 (package-with-python2 python-pyserial))
6eb7af2a
DJ
11821
11822(define-public python-kivy
11823 (package
11824 (name "python-kivy")
11825 (version "1.9.1")
11826 (source
11827 (origin
11828 (method url-fetch)
11829 (uri (pypi-uri "kivy" version))
11830 (file-name (string-append name "-" version ".tar.gz"))
11831 (sha256
11832 (base32
11833 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
11834 (build-system python-build-system)
11835 (arguments
11836 `(#:tests? #f ; Tests require many optional packages
11837 #:phases
11838 (modify-phases %standard-phases
11839 (replace 'build (lambda _ (zero? (system* "make" "force"))))
11840 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
11841 (lambda* (#:key inputs #:allow-other-keys)
11842 (setenv "KIVY_SDL2_PATH"
11843 (string-append (assoc-ref inputs "sdl-union")
11844 "/include/SDL2"))
11845 #t)))))
11846 (native-inputs
f2516de2
HG
11847 `(("pkg-config" ,pkg-config)
11848 ("python-cython" ,python-cython)))
6eb7af2a 11849 (inputs
f2516de2 11850 `(("gstreamer" ,gstreamer)
6eb7af2a
DJ
11851 ("mesa" ,mesa)
11852 ("sdl-union"
11853 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
11854 (home-page "http://kivy.org")
11855 (synopsis
11856 "Multitouch application framework")
11857 (description
11858 "A software library for rapid development of
11859hardware-accelerated multitouch applications.")
11860 (license license:expat)))
11861
11862(define-public python2-kivy
11863 (package-with-python2 python-kivy))
11864
11865(define-public python-kivy-next
11866 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
11867 (revision "1"))
11868 (package (inherit python-kivy)
11869 (name "python-kivy-next")
d80a71eb 11870 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
11871 (string-take commit 7)))
11872 (source
11873 (origin
11874 (method git-fetch)
11875 (uri (git-reference
11876 (url "https://github.com/kivy/kivy")
11877 (commit commit)))
11878 (file-name (string-append name "-" version "-checkout"))
11879 (sha256
11880 (base32
11881 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
11882
11883(define-public python2-kivy-next
11884 (package-with-python2 python-kivy-next))
8794bd8b
DC
11885
11886(define-public python-binaryornot
11887 (package
11888 (name "python-binaryornot")
11889 (version "0.4.0")
11890 (source (origin
11891 (method url-fetch)
11892 (uri (pypi-uri "binaryornot" version))
11893 (sha256
11894 (base32
11895 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
11896 (build-system python-build-system)
f22efa01 11897 (propagated-inputs
8794bd8b
DC
11898 `(("python-chardet" ,python-chardet)
11899 ("python-hypothesis" ,python-hypothesis)))
11900 (home-page "https://github.com/audreyr/binaryornot")
11901 (synopsis "Package to check if a file is binary or text")
11902 (description "Ultra-lightweight pure Python package to check if a file is
11903binary or text.")
11904 (license license:bsd-3)
11905 (properties `((python2-variant . ,(delay python2-binaryornot))))))
11906
11907(define-public python2-binaryornot
11908 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
11909 (package (inherit base)
f22efa01 11910 (propagated-inputs
8794bd8b 11911 `(("python2-enum34" ,python2-enum34)
f22efa01 11912 ,@(package-propagated-inputs base))))))
a9ac982a
DC
11913
11914(define-public python-nltk
11915 (package
11916 (name "python-nltk")
11917 (version "3.2.1")
11918 (source (origin
11919 (method url-fetch)
11920 (uri (pypi-uri "nltk" version))
11921 (sha256
11922 (base32
11923 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
11924 (build-system python-build-system)
59f12985
LF
11925 (arguments
11926 '(;; The tests require some extra resources to be downloaded.
11927 ;; TODO Try packaging these resources.
11928 #:tests? #f))
a9ac982a
DC
11929 (home-page "http://nltk.org/")
11930 (synopsis "Natural Language Toolkit")
11931 (description "It provides interfaces to over 50 corpora and lexical
11932resources such as WordNet, along with a suite of text processing libraries
11933for classification, tokenization, stemming, tagging, parsing, and semantic
11934reasoning, wrappers for natural language processing libraries.")
f210e944 11935 (license license:asl2.0)))
a9ac982a
DC
11936
11937(define-public python2-nltk
f210e944 11938 (package-with-python2 python-nltk))
691cd90d
DC
11939
11940(define-public python-pymongo
11941 (package
11942 (name "python-pymongo")
11943 (version "3.3.0")
11944 (source (origin
11945 (method url-fetch)
11946 (uri (pypi-uri "pymongo" version))
11947 (sha256
11948 (base32
11949 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
11950 (build-system python-build-system)
f22efa01 11951 (propagated-inputs
691cd90d 11952 `(("python-certifi" ,python-certifi)))
7bf837fd 11953 (home-page "https://github.com/mongodb/mongo-python-driver")
691cd90d
DC
11954 (synopsis "Python driver for MongoDB")
11955 (description "Python driver for MongoDB.")
f210e944 11956 (license license:asl2.0)))
691cd90d
DC
11957
11958(define-public python2-pymongo
f210e944 11959 (package-with-python2 python-pymongo))
6a6c9d43
DC
11960
11961(define-public python-sh
11962 (package
11963 (name "python-sh")
11964 (version "1.11")
11965 (source (origin
11966 (method url-fetch)
11967 (uri (pypi-uri "sh" version))
11968 (sha256
11969 (base32
11970 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
11971 (build-system python-build-system)
11972 (arguments
11973 `(#:tests? #f)) ; no tests
11974 (home-page "https://github.com/amoffat/sh")
11975 (synopsis "Python subprocess interface")
11976 (description "Abstracts process invocation by providing a function
11977interface for programs.")
f210e944 11978 (license license:expat)))
6a6c9d43
DC
11979
11980(define-public python2-sh
f210e944 11981 (package-with-python2 python-sh))
05b59190 11982
25702397
EF
11983(define-public python-consul
11984 (package
11985 (name "python-consul")
11986 (version "0.6.1")
11987 (source
11988 (origin
11989 (method url-fetch)
11990 (uri (pypi-uri "python-consul" version))
11991 (sha256
11992 (base32
11993 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
11994 (build-system python-build-system)
11995 (native-inputs
fd1d6de7
HG
11996 `(("python-pytest" ,python-pytest)))
11997 (propagated-inputs
11998 `(("python-requests" ,python-requests)
25702397
EF
11999 ("python-six" ,python-six)))
12000 (home-page "https://github.com/cablehead/python-consul")
12001 (synopsis "Python client for Consul")
12002 (description
12003 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
12004discovery, monitoring and configuration.")
12005 (license license:expat)))
12006
12007(define-public python2-consul
f210e944 12008 (package-with-python2 python-consul))
25702397 12009
05b59190
DC
12010(define-public python-schematics
12011 (package
12012 (name "python-schematics")
12013 (version "1.1.1")
12014 (source
12015 (origin
12016 (method url-fetch)
12017 (uri (string-append
12018 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
12019 (file-name (string-append name "-" version ".tar.gz"))
12020 (sha256
12021 (base32
12022 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
12023 (build-system python-build-system)
f22efa01 12024 (propagated-inputs
05b59190
DC
12025 `(("python-six" ,python-six)))
12026 (arguments
12027 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
12028 ; version requirements (eg python-coveralls)
12029 (home-page "https://github.com/schematics/schematics")
12030 (synopsis "Python Data Structures for Humans")
12031 (description "Python Data Structures for Humans.")
f210e944 12032 (license license:bsd-3)))
05b59190
DC
12033
12034(define-public python2-schematics
f210e944 12035 (package-with-python2 python-schematics))
d6907ff7
DC
12036
12037(define-public python-publicsuffix
12038 (package
12039 (name "python-publicsuffix")
12040 (version "1.1.0")
12041 (source (origin
12042 (method url-fetch)
12043 (uri (pypi-uri "publicsuffix" version))
12044 (sha256
12045 (base32
12046 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
12047 (build-system python-build-system)
12048 (arguments
12049 `(#:tests? #f)) ; tests use the internet
12050 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
12051 (synopsis "Get suffix for a domain name")
12052 (description "Get a public suffix for a domain name using the Public Suffix
12053List.")
f210e944 12054 (license license:expat)))
d6907ff7
DC
12055
12056(define-public python2-publicsuffix
f210e944 12057 (package-with-python2 python-publicsuffix))
b2319996
DC
12058
12059(define-public python-publicsuffix2
12060 (package
12061 (name "python-publicsuffix2")
91862162 12062 (version "2.20160818")
b2319996
DC
12063 (source
12064 (origin
12065 (method url-fetch)
12066 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
12067 (sha256
12068 (base32
91862162 12069 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
b2319996 12070 (build-system python-build-system)
10797a0a
LF
12071 (arguments
12072 '(#:tests? #f)) ; The test suite requires network access.
b2319996
DC
12073 (home-page "https://github.com/pombredanne/python-publicsuffix2")
12074 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
12075 (description "Get a public suffix for a domain name using the Public Suffix
12076List. Forked from and using the same API as the publicsuffix package.")
f210e944 12077 (license (list license:expat license:mpl2.0))))
b2319996
DC
12078
12079(define-public python2-publicsuffix2
f210e944 12080 (package-with-python2 python-publicsuffix2))
81f1515d
DC
12081
12082(define-public python-url
12083 (package
12084 (name "python-url")
12085 (version "0.2.0")
12086 (source (origin
12087 (method url-fetch)
12088 (uri (pypi-uri "url" version))
12089 (sha256
12090 (base32
12091 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
12092 (build-system python-build-system)
f22efa01 12093 (propagated-inputs
81f1515d
DC
12094 `(("python-publicsuffix" ,python-publicsuffix)))
12095 (native-inputs
12096 `(("python-coverage" ,python-coverage)
12097 ("python-nose" ,python-nose)))
12098 (arguments
12099 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
7bf837fd 12100 (home-page "https://github.com/seomoz/url-py")
81f1515d
DC
12101 (synopsis "URL Parsing")
12102 (description "Library for parsing urls.")
12103 (license license:expat)
12104 (properties `((python2-variant . ,(delay python2-url))))))
12105
12106(define-public python2-url
12107 (let ((base (package-with-python2 (strip-python2-variant python-url))))
12108 (package (inherit base)
f22efa01 12109 (propagated-inputs
f210e944 12110 `(("python2-publicsuffix" ,python2-publicsuffix))))))
974ee2c1
TS
12111
12112(define-public python-freezegun
12113 (package
12114 (name "python-freezegun")
0c315fb3 12115 (version "0.3.8")
974ee2c1
TS
12116 (source
12117 (origin
12118 (method url-fetch)
12119 (uri (pypi-uri "freezegun" version))
12120 (sha256
12121 (base32
0c315fb3 12122 "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151"))))
974ee2c1
TS
12123 (build-system python-build-system)
12124 (native-inputs
12125 `(("python-mock" ,python-mock)
12126 ("python-nose" ,python-nose)
4e096968 12127 ("python-coverage" ,python-coverage)))
f22efa01 12128 (propagated-inputs
4e096968 12129 `(("python-six" ,python-six)
22d7360b 12130 ("python-dateutil" ,python-dateutil)))
974ee2c1
TS
12131 (arguments
12132 `(#:phases (modify-phases %standard-phases
12133 ;; The tests are normally executed via `make test`, but the PyPi
12134 ;; package does not include the Makefile.
12135 (replace 'check
12136 (lambda _
12137 (zero? (system* "nosetests" "./tests/")))))))
12138 (home-page "https://github.com/spulec/freezegun")
12139 (synopsis "Test utility for mocking the datetime module")
12140 (description
12141 "FreezeGun is a library that allows your python tests to travel through
12142time by mocking the datetime module.")
12143 (license license:asl2.0)))
12144
12145(define-public python2-freezegun
f210e944
HG
12146 (package-with-python2 python-freezegun))
12147
dddcb25c
MB
12148
12149(define-public python-odfpy
12150 (package
12151 (name "python-odfpy")
12152 (version "1.3.3")
12153 (source (origin
12154 (method url-fetch)
12155 (uri (pypi-uri "odfpy" version))
12156 (sha256
12157 (base32
12158 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
12159 (arguments
12160 `(#:modules ((srfi srfi-1)
12161 (guix build python-build-system)
12162 (guix build utils))
12163 #:phases
12164 (modify-phases %standard-phases
12165 (replace 'check
12166 ;; The test runner invokes python2 and python3 for test*.py.
12167 ;; To avoid having both in inputs, we replicate it here.
12168 (lambda _
12169 (every (lambda (test-file)
12170 (zero? (system* "python" test-file)))
12171 (find-files "tests" "^test.*\\.py$")))))))
12172 (build-system python-build-system)
12173 (home-page "https://github.com/eea/odfpy")
12174 (synopsis "Python API and tools to manipulate OpenDocument files")
12175 (description "Collection of libraries and utility programs written in
12176Python to manipulate OpenDocument 1.2 files.")
12177 (license
12178 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
12179 ;; number of files with other licenses.
12180 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
12181
12182(define-public python2-odfpy
12183 (package-with-python2 python-odfpy))
b30565bd
MB
12184
12185(define-public python-cachecontrol
12186 (package
12187 (name "python-cachecontrol")
12188 (version "0.11.6")
12189 (source
12190 (origin
12191 (method url-fetch)
12192 ;; Pypi does not have tests.
12193 (uri (string-append
12194 "https://github.com/ionrock/cachecontrol/archive/v"
12195 version ".tar.gz"))
12196 (file-name (string-append name "-" version ".tar.gz"))
12197 (sha256
12198 (base32
12199 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
12200 (build-system python-build-system)
12201 (arguments
12202 `(#:phases
12203 (modify-phases %standard-phases
12204 (replace 'check
12205 (lambda _
12206 ;; Drop test that requires internet access.
12207 (delete-file "tests/test_regressions.py")
12208 (setenv "PYTHONPATH"
12209 (string-append (getcwd) "/build/lib:"
12210 (getenv "PYTHONPATH")))
12211 (zero? (system* "py.test" "-vv")))))))
12212 (native-inputs
12213 `(("python-pytest" ,python-pytest)
12214 ("python-redis" ,python-redis)
12215 ("python-webtest" ,python-webtest)
12216 ("python-mock" ,python-mock)))
12217 (propagated-inputs
12218 `(("python-requests" ,python-requests)
12219 ("python-lockfile" ,python-lockfile)))
12220 (home-page "https://github.com/ionrock/cachecontrol")
12221 (synopsis "The httplib2 caching algorithms for use with requests")
12222 (description "CacheControl is a port of the caching algorithms in
12223@code{httplib2} for use with @code{requests} session objects.")
f210e944 12224 (license license:asl2.0)))
b30565bd
MB
12225
12226(define-public python2-cachecontrol
f210e944 12227 (package-with-python2 python-cachecontrol))
243db824
DM
12228
12229(define-public python-lit
12230 (package
12231 (name "python-lit")
12232 (version "0.5.0")
12233 (source
12234 (origin
12235 (method url-fetch)
12236 (uri (pypi-uri "lit" version))
12237 (sha256
12238 (base32
12239 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
12240 (build-system python-build-system)
12241 (home-page "http://llvm.org/")
12242 (synopsis "LLVM Software Testing Tool")
12243 (description "@code{lit} is a portable tool for executing LLVM and Clang
12244style test suites, summarizing their results, and providing indication of
12245failures.")
f210e944 12246 (license license:ncsa)))
243db824
DM
12247
12248(define-public python2-lit
f210e944 12249 (package-with-python2 python-lit))
66f95b20
MB
12250
12251(define-public python-pytest-pep8
12252 (package
12253 (name "python-pytest-pep8")
12254 (version "1.0.6")
12255 (source (origin
12256 (method url-fetch)
12257 (uri (pypi-uri "pytest-pep8" version))
12258 (sha256
12259 (base32
12260 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
12261 (build-system python-build-system)
12262 (arguments
b41a05ce 12263 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
66f95b20
MB
12264 (native-inputs
12265 `(("python-pytest" ,python-pytest)))
12266 (propagated-inputs
12267 `(("python-pep8" ,python-pep8)))
12268 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
12269 (synopsis "Py.test plugin to check PEP8 requirements")
12270 (description "Pytest plugin for checking PEP8 compliance.")
f210e944 12271 (license license:expat)))
66f95b20
MB
12272
12273(define-public python2-pytest-pep8
f210e944 12274 (package-with-python2 python-pytest-pep8))
df94a6b5
MB
12275
12276(define-public python-pytest-flakes
12277 (package
12278 (name "python-pytest-flakes")
12279 (version "1.0.1")
12280 (source (origin
12281 (method url-fetch)
12282 (uri (pypi-uri "pytest-flakes" version))
12283 (sha256
12284 (base32
12285 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
12286 (build-system python-build-system)
12287 (arguments
b41a05ce 12288 `(#:phases
df94a6b5
MB
12289 (modify-phases %standard-phases
12290 (delete 'check)
12291 (add-after 'install 'check
05c2fd36
HG
12292 (lambda* (#:key outputs inputs #:allow-other-keys)
12293 ;; It's easier to run tests after install.
12294 ;; Make installed package available for running the tests
12295 (add-installed-pythonpath inputs outputs)
df94a6b5
MB
12296 (zero? (system* "py.test" "-vv")))))))
12297 (native-inputs
12298 `(("python-coverage" ,python-coverage)
12299 ("python-pytest" ,python-pytest)
12300 ("python-pytest-cache" ,python-pytest-cache)
12301 ("python-pytest-pep8" ,python-pytest-pep8)))
12302 (propagated-inputs
12303 `(("python-pyflakes" ,python-pyflakes)))
12304 (home-page "https://github.com/fschulze/pytest-flakes")
12305 (synopsis "Py.test plugin to check source code with pyflakes")
12306 (description "Pytest plugin for checking Python source code with pyflakes.")
f210e944 12307 (license license:expat)))
df94a6b5
MB
12308
12309(define-public python2-pytest-flakes
f210e944 12310 (package-with-python2 python-pytest-flakes))
5467ea62
MB
12311
12312(define-public python-natsort
12313 (package
12314 (name "python-natsort")
a06cd95a 12315 (version "5.0.2")
5467ea62
MB
12316 (source (origin
12317 (method url-fetch)
12318 (uri (pypi-uri "natsort" version))
12319 (sha256
12320 (base32
a06cd95a 12321 "0bh6j0l8iapjnsgg3bs6q075cnzjl6zw1vlgqyv3qrygm2cxypkn"))))
5467ea62
MB
12322 (build-system python-build-system)
12323 (arguments
12324 `(#:phases
12325 (modify-phases %standard-phases
12326 (add-before 'check 'set-cachedir
12327 ;; Tests require write access to $HOME by default
12328 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
12329 (native-inputs
12330 `(("python-hypothesis" ,python-hypothesis)
12331 ("python-pytest-cache" ,python-pytest-cache)
12332 ("python-pytest-cov" ,python-pytest-cov)
12333 ("python-pytest-flakes" ,python-pytest-flakes)
12334 ("python-pytest-pep8" ,python-pytest-pep8)))
12335 (propagated-inputs ; TODO: Add python-fastnumbers.
12336 `(("python-pyicu" ,python-pyicu)))
12337 (home-page "https://github.com/SethMMorton/natsort")
12338 (synopsis "Natural sorting for python and shell")
12339 (description
12340 "Natsort lets you apply natural sorting on lists instead of
12341lexicographical. If you use the built-in @code{sorted} method in python
12342on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
12343returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
12344function @code{natsorted} that identifies numbers and sorts them separately
12345from strings. It can also sort version numbers, real numbers, mixed types
12346and more, and comes with a shell command @command{natsort} that exposes this
12347functionality in the command line.")
12348 (license license:expat)
12349 (properties `((python2-variant . ,(delay python2-natsort))))))
12350
12351(define-public python2-natsort
12352 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
12353 (package (inherit base)
12354 (native-inputs
00e10c6e 12355 `(("python2-pathlib" ,python2-pathlib)
5467ea62
MB
12356 ("python2-mock" ,python2-mock)
12357 ("python2-enum34" ,python2-enum34)
12358 ,@(package-native-inputs base))))))
4efb9c54
SR
12359
12360(define-public python-glances
12361 (package
12362 (name "python-glances")
12363 (version "2.7.1")
12364 (source
12365 (origin
12366 (method url-fetch)
12367 (uri (pypi-uri "Glances" version))
12368 (sha256
12369 (base32
12370 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
12371 (build-system python-build-system)
f22efa01 12372 (propagated-inputs
4efb9c54
SR
12373 `(("python-psutil" ,python-psutil)))
12374 (home-page
12375 "https://github.com/nicolargo/glances")
12376 (synopsis
12377 "A cross-platform curses-based monitoring tool")
12378 (description
12379 "Glances is a curses-based monitoring tool for a wide variety of platforms.
12380Glances uses the PsUtil library to get information from your system. It monitors
12381CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
f210e944 12382 (license license:lgpl3+)))
4efb9c54
SR
12383
12384(define-public python2-glances
f210e944 12385 (package-with-python2 python-glances))
05b7a593
EF
12386
12387(define-public python-graphql-core
12388 (package
12389 (name "python-graphql-core")
12390 (version "0.5.3")
12391 (source
12392 (origin
12393 (method url-fetch)
12394 (uri (pypi-uri "graphql-core" version))
12395 (sha256
12396 (base32
12397 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
12398 (build-system python-build-system)
12399 (arguments
326f8285
LF
12400 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
12401 #:phases
05b7a593
EF
12402 (modify-phases %standard-phases
12403 (add-after 'unpack 'patch-hardcoded-version
12404 (lambda _ (substitute*
12405 "setup.py"
12406 (("'gevent==1.1rc1'") "'gevent'"))
12407 #t)))))
12408 (native-inputs
12409 `(("python-gevent" ,python-gevent)
12410 ("python-mock" ,python-mock)
12411 ("python-pytest-mock" ,python-pytest-mock)))
f22efa01 12412 (propagated-inputs
05b7a593
EF
12413 `(("python-promise" ,python-promise)
12414 ("python-six" ,python-six)))
12415 (home-page "https://github.com/graphql-python/graphql-core")
12416 (synopsis "GraphQL implementation for Python")
12417 (description
12418 "GraphQL implementation for Python. GraphQL is a data query language and
12419runtime designed and used to request and deliver data to mobile and web apps.
12420This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
12421to Python.")
05b7a593
EF
12422 (license license:expat)))
12423
12424(define-public python2-graphql-core
f210e944 12425 (package-with-python2 python-graphql-core))
7ee51575
EF
12426
12427(define-public python-graphql-relay
12428 (package
12429 (name "python-graphql-relay")
b13a5b4d 12430 (version "0.4.5")
7ee51575
EF
12431 (source
12432 (origin
12433 (method url-fetch)
12434 (uri (pypi-uri "graphql-relay" version))
12435 (sha256
12436 (base32
b13a5b4d 12437 "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7"))))
7ee51575
EF
12438 (build-system python-build-system)
12439 (native-inputs
12440 `(("python-pytest" ,python-pytest)))
f22efa01 12441 (propagated-inputs
7ee51575
EF
12442 `(("python-graphql-core" ,python-graphql-core)
12443 ("python-promise" ,python-promise)
12444 ("python-six" ,python-six)))
12445 (home-page "https://github.com/graphql-python/graphql-relay-py")
12446 (synopsis "Relay implementation for Python")
12447 (description
12448 "This is a library to allow the easy creation of Relay-compliant servers
12449using the GraphQL Python reference implementation of a GraphQL server. It
12450should be noted that the code is a exact port of the original
12451@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
12452from Facebook.")
7ee51575
EF
12453 (license license:expat)))
12454
12455(define-public python2-graphql-relay
f210e944 12456 (package-with-python2 python-graphql-relay))
ddc63a56
EF
12457
12458(define-public python-graphene
12459 (package
12460 (name "python-graphene")
12461 (version "0.10.2")
12462 (source
12463 (origin
12464 (method url-fetch)
12465 (uri (pypi-uri "graphene" version))
12466 (sha256
12467 (base32
12468 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
12469 (build-system python-build-system)
12470 (native-inputs
12471 `(("python-django-filter" ,python-django-filter)
12472 ("python-mock" ,python-mock)
12473 ("python-psycopg2" ,python-psycopg2)
12474 ("python-pytest-django" ,python-pytest-django)
12475 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
f22efa01 12476 (propagated-inputs
ddc63a56
EF
12477 `(("python-graphql-core" ,python-graphql-core)
12478 ("python-graphql-relay" ,python-graphql-relay)
12479 ("python-iso8601" ,python-iso8601)
12480 ("python-promise" ,python-promise)
12481 ("python-six" ,python-six)))
12482 (home-page "http://graphene-python.org/")
12483 (synopsis "GraphQL Framework for Python")
12484 (description
12485 "Graphene is a Python library for building GraphQL schemas/types.
12486A GraphQL schema describes your data model, and provides a GraphQL server
12487with an associated set of resolve methods that know how to fetch data.")
12488 (properties `((python2-variant . ,(delay python2-graphene))))
12489 (license license:expat)))
12490
12491(define-public python2-graphene
12492 (let ((base (package-with-python2
12493 (strip-python2-variant python-graphene))))
12494 (package (inherit base)
12495 (native-inputs
00e10c6e 12496 `(("python2-sqlalchemy" ,python2-sqlalchemy)
ddc63a56 12497 ,@(package-native-inputs base))))))
d488d5d6
EF
12498
12499(define-public python-nautilus
12500 (package
12501 (name "python-nautilus")
12502 (version "0.4.9")
12503 (source
12504 (origin
12505 (method url-fetch)
12506 (uri (pypi-uri "nautilus" version))
12507 (sha256
12508 (base32
12509 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
12510 (build-system python-build-system)
12511 (arguments `(#:tests? #f)) ; fails to import test modules
f22efa01 12512 (propagated-inputs
d488d5d6
EF
12513 `(("python-bcrypt" ,python-bcrypt)
12514 ("python-click" ,python-click)
12515 ("python-consul" ,python-consul)
d488d5d6
EF
12516 ("python-graphene" ,python-graphene)
12517 ("python-jinja2" ,python-jinja2)
d488d5d6
EF
12518 ("python-peewee" ,python-peewee)
12519 ("python-pika" ,python-pika)
d488d5d6
EF
12520 ("python-tornado" ,python-tornado)
12521 ("python-wtforms" ,python-wtforms)))
38ceb106
HG
12522 (native-inputs
12523 `(("python-nose2" ,python-nose2)))
d488d5d6
EF
12524 (home-page "https://github.com/AlecAivazis/nautilus")
12525 (synopsis "Library for creating microservice applications")
12526 (description
12527 "Nautilus is a framework for flux based microservices that looks to
12528provide extendible implementations of common aspects of a cloud so that you can
12529focus on building massively scalable web applications.")
12530 (license license:expat)))
94cffc63 12531
89cd988b
DM
12532(define-public python-snowballstemmer
12533 (package
12534 (name "python-snowballstemmer")
12535 (version "1.2.1")
12536 (source (origin
1bd858cc
MB
12537 (method url-fetch)
12538 (uri (pypi-uri "snowballstemmer" version))
12539 (sha256
12540 (base32
12541 "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi"))))
89cd988b
DM
12542 (build-system python-build-system)
12543 (arguments
12544 `(;; No tests exist
12545 #:tests? #f))
12546 (home-page "https://github.com/shibukawa/snowball_py")
12547 (synopsis "Snowball stemming library collection for Python")
12548 (description "This package provides 16 word stemmer algorithms generated
12549from Snowball algorithms. It includes the 15 original ones plus the Poerter
12550English stemmer.")
12551 (license license:bsd-3)))
12552
12553(define-public python2-snowballstemmer
12554 (package-with-python2 python-snowballstemmer))
12555
754bfd70
DM
12556(define-public python-sphinx-cloud-sptheme
12557 (package
12558 (name "python-sphinx-cloud-sptheme")
5095bc7d 12559 (version "1.8.0")
754bfd70 12560 (source (origin
1bd858cc
MB
12561 (method url-fetch)
12562 (uri (pypi-uri "cloud_sptheme" version))
12563 (sha256
12564 (base32
5095bc7d 12565 "1dniqb6a39yh786f86c4jn666rwnyi1jvzn4616zhcchb7sfdshd"))))
1bd858cc 12566 (build-system python-build-system)
a31e2f1a
MB
12567 ;; FIXME: The 'pypi' release archive does not contain tests.
12568 (arguments '(#:tests? #f))
1bd858cc
MB
12569 (native-inputs
12570 `(("python-sphinx" ,python-sphinx)))
12571 (home-page "https://bitbucket.org/ecollins/cloud_sptheme")
12572 (synopsis "'Cloud' theme for Sphinx documenter")
12573 (description "This package contains the \"Cloud\" theme for Sphinx and some
754bfd70 12574related extensions.")
1bd858cc 12575 (license license:bsd-3)))
754bfd70
DM
12576
12577(define-public python2-sphinx-cloud-sptheme
12578 (package-with-python2 python-sphinx-cloud-sptheme))
12579
807a5b32
DM
12580(define-public python-sphinx-alabaster-theme
12581 (package
12582 (name "python-sphinx-alabaster-theme")
12583 (version "0.7.9")
1bd858cc
MB
12584 (source (origin
12585 (method url-fetch)
12586 (uri (pypi-uri "alabaster" version))
12587 (sha256
12588 (base32
12589 "027anxzcb951gjlcc43y3rbn9qrw36d16vj9wd2smv5410xx9bs7"))))
807a5b32
DM
12590 (build-system python-build-system)
12591 (propagated-inputs
12592 `(("python-pygments" ,python-pygments)))
12593 (home-page "https://alabaster.readthedocs.io/")
12594 (synopsis "Configurable sidebar-enabled Sphinx theme")
12595 (description "Alabaster is a visually (c)lean, responsive, configurable
12596theme for the Sphinx documentation system. It's the default theme of Sphinx.")
12597 (license license:bsd-3)))
12598
12599(define-public python2-sphinx-alabaster-theme
12600 (package-with-python2 python-sphinx-alabaster-theme))
12601
66d3f50a
LF
12602(define-public python-betamax
12603 (package
12604 (name "python-betamax")
12605 (version "0.8.0")
12606 (source
12607 (origin
12608 (method url-fetch)
12609 (uri (pypi-uri "betamax" version))
12610 (sha256
12611 (base32
12612 "18f8v5gng3j773jlbbzx4rg1i4y2zw3m2l1zpmbvp8bh5a2q1i42"))))
12613 (build-system python-build-system)
12614 (arguments
12615 '(;; Many tests fail because they require networking.
12616 #:tests? #f))
c415f763 12617 (propagated-inputs
66d3f50a
LF
12618 `(("python-requests" ,python-requests)))
12619 (home-page "https://github.com/sigmavirus24/betamax")
12620 (synopsis "Record HTTP interactions with python-requests")
12621 (description "Betamax will record your test suite's HTTP interactions and
12622replay them during future tests. It is designed to work with python-requests.")
f210e944 12623 (license license:expat)))
66d3f50a
LF
12624
12625(define-public python2-betamax
f210e944 12626 (package-with-python2 python-betamax))
ca0635b4 12627
94cffc63
LF
12628(define-public python-s3transfer
12629 (package
12630 (name "python-s3transfer")
1b5ea092 12631 (version "0.1.10")
94cffc63
LF
12632 (source (origin
12633 (method url-fetch)
12634 (uri (pypi-uri "s3transfer" version))
12635 (sha256
12636 (base32
1b5ea092 12637 "1h8g9bknvxflxkpbnxyfxmk8pvgykbbk9ljdvhqh6z4vjc2926ms"))))
94cffc63 12638 (build-system python-build-system)
fad8bf97
LF
12639 (arguments
12640 `(#:phases
12641 (modify-phases %standard-phases
12642 (replace 'check
12643 (lambda _
12644 ;; 7 of the 'integration' tests require network access or login
12645 ;; credentials.
12646 (zero? (system* "nosetests" "--exclude=integration")))))))
94cffc63 12647 (native-inputs
fad8bf97
LF
12648 `(("python-docutils" ,python-docutils)
12649 ("python-mock" ,python-mock)
12650 ("python-nose" ,python-nose)))
f22efa01 12651 (propagated-inputs
94cffc63
LF
12652 `(("python-botocore" ,python-botocore)))
12653 (synopsis "Amazon S3 Transfer Manager")
12654 (description "S3transfer is a Python library for managing Amazon S3
12655transfers.")
12656 (home-page "https://github.com/boto/s3transfer")
12657 (license license:asl2.0)
12658 (properties `((python2-variant . ,(delay python2-s3transfer))))))
12659
12660(define-public python2-s3transfer
12661 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
12662 (package
12663 (inherit base)
12664 (native-inputs
12665 `(("python2-futures" ,python2-futures)
94cffc63 12666 ,@(package-native-inputs base))))))
8ab59181
HG
12667
12668(define-public python-setproctitle
12669(package
12670 (name "python-setproctitle")
12671 (version "1.1.10")
12672 (source
12673 (origin
12674 (method url-fetch)
12675 (uri (pypi-uri "setproctitle" version))
12676 (sha256
12677 (base32
12678 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
12679 (build-system python-build-system)
12680 (arguments
12681 '(#:phases
12682 (modify-phases %standard-phases
12683 (add-before 'check 'patch-Makefile
12684 ;; Stricly this is only required for the python2 variant.
12685 ;; But adding a phase in an inherited package seems to be
12686 ;; cumbersum. So we patch even for python3.
12687 (lambda _
12688 (let ((nose (assoc-ref %build-inputs "python2-nose")))
12689 (when nose
12690 (substitute* "Makefile"
12691 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
12692 (string-append nose "/bin/nosetests "))))
12693 #t)))
12694 (replace 'check
12695 (lambda _
12696 (setenv "PYTHON" (or (which "python3") (which "python")))
12697 (setenv "PYCONFIG" (or (which "python3-config")
12698 (which "python-config")))
12699 (setenv "CC" "gcc")
12700 ;; No need to extend PYTHONPATH to find the built package, since
12701 ;; the Makefile will build anyway
12702 (zero? (system* "make" "check")))))))
12703 (native-inputs
12704 `(("procps" ,procps))) ; required for tests
12705 (home-page
12706 "https://github.com/dvarrazzo/py-setproctitle")
12707 (synopsis
12708 "Setproctitle implementation for Python to customize the process title")
12709 (description "The library allows a process to change its title (as displayed
12710by system tools such as ps and top).
12711
12712Changing the title is mostly useful in multi-process systems, for
12713example when a master process is forked: changing the children's title
12714allows to identify the task each process is busy with. The technique
12715is used by PostgreSQL and the OpenSSH Server for example.")
12716 (license license:bsd-3)
12717 (properties `((python2-variant . ,(delay python2-setproctitle))))))
12718
12719(define-public python2-setproctitle
12720 (let ((base (package-with-python2
12721 (strip-python2-variant python-setproctitle))))
12722 (package
12723 (inherit base)
12724 (native-inputs `(("python2-nose" ,python2-nose)
12725 ,@(package-native-inputs base))))))
162e42d8
HG
12726
12727(define-public python-validictory
12728 (package
12729 (name "python-validictory")
12730 (version "1.0.1")
12731 (source
12732 (origin
12733 (method url-fetch)
12734 (uri (pypi-uri "validictory" version))
12735 (sha256
12736 (base32
12737 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
12738 (build-system python-build-system)
12739 (arguments
12740 '(#:phases
12741 (modify-phases %standard-phases
12742 (add-after 'unpack 'bootstrap
12743 ;; Move the tests out of the package directory to avoid
12744 ;; packaging them.
12745 (lambda* _
12746 (rename-file "validictory/tests" "tests")
12747 (delete-file "tests/__init__.py")))
12748 (replace 'check
12749 (lambda _
12750 ;; Extend PYTHONPATH so the built package will be found.
12751 (setenv "PYTHONPATH"
12752 (string-append (getcwd) "/build/lib:"
12753 (getenv "PYTHONPATH")))
12754 (zero? (system* "py.test" "-vv" )))))))
12755 (native-inputs
12756 `(("python-pytest" ,python-pytest)))
12757 (home-page
12758 "https://github.com/jamesturk/validictory")
12759 (synopsis "General purpose Python data validator")
12760 (description "It allows validation of arbitrary Python data structures.
12761
12762The schema format is based on the JSON Schema
12763proposal (http://json-schema.org), so combined with json the library is also
12764useful as a validator for JSON data.")
f210e944 12765 (license license:expat)))
162e42d8
HG
12766
12767(define-public python2-validictory
f210e944 12768 (package-with-python2 python-validictory))
0990edfe
DM
12769
12770(define-public python-aniso8601
12771 (package
12772 (name "python-aniso8601")
12773 (version "1.1.0")
12774 (source
12775 (origin
12776 (method url-fetch)
12777 (uri (pypi-uri "aniso8601" version))
12778 (sha256
12779 (base32
12780 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
12781 (build-system python-build-system)
12782 (propagated-inputs
22d7360b 12783 `(("python-dateutil" ,python-dateutil)))
0990edfe
DM
12784 (home-page
12785 "https://bitbucket.org/nielsenb/aniso8601")
12786 (synopsis
12787 "Python library for parsing ISO 8601 strings")
12788 (description
12789 "This package contains a library for parsing ISO 8601 datetime strings.")
12790 (license license:bsd-3)))
999d964d
DM
12791
12792(define-public python-flask-restful
12793 (package
12794 (name "python-flask-restful")
12795 (version "0.3.5")
12796 (source
12797 (origin
12798 (method url-fetch)
12799 (uri (pypi-uri "Flask-RESTful" version))
12800 (sha256
12801 (base32
12802 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
12803 (build-system python-build-system)
12804 (propagated-inputs
12805 `(("python-aniso8601" ,python-aniso8601)
12806 ("python-flask" ,python-flask)
12807 ("python-pycrypto" ,python-pycrypto)
12808 ("python-pytz" ,python-pytz)))
12809 (native-inputs
12810 `(;; Optional dependency of Flask. Tests need it.
12811 ("python-blinker" ,python-blinker)
12812 ("python-mock" ,python-mock) ; For tests
12813 ("python-nose" ,python-nose) ; For tests
12814 ("python-sphinx" ,python-sphinx)))
12815 (home-page
12816 "https://www.github.com/flask-restful/flask-restful/")
12817 (synopsis
12818 "Flask module for creating REST APIs")
12819 (description
12820 "This package contains a Flask module for creating REST APIs.")
12821 (license license:bsd-3)))
31288222
DM
12822
12823(define-public python-flask-basicauth
12824 (package
12825 (name "python-flask-basicauth")
12826 (version "0.2.0")
12827 (source
12828 (origin
12829 (method url-fetch)
12830 (uri (pypi-uri "Flask-BasicAuth" version))
12831 (sha256
12832 (base32
12833 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
12834 (build-system python-build-system)
12835 (propagated-inputs
12836 `(("python-flask" ,python-flask)))
12837 (home-page
12838 "https://github.com/jpvanhal/flask-basicauth")
12839 (synopsis
12840 "HTTP basic access authentication for Flask")
12841 (description
12842 "This package provides HTTP basic access authentication for Flask.")
12843 (license license:bsd-3)))
903276d0
DM
12844
12845(define-public python-flask-sqlalchemy
12846 (package
12847 (name "python-flask-sqlalchemy")
12848 (version "2.1")
12849 (source
12850 (origin
12851 (method url-fetch)
12852 (uri (pypi-uri "Flask-SQLAlchemy" version))
12853 (sha256
12854 (base32
12855 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
12856 (build-system python-build-system)
12857 (propagated-inputs
12858 `(("python-flask" ,python-flask)
12859 ("python-sqlalchemy" ,python-sqlalchemy)))
12860 (home-page
7bf837fd 12861 "https://github.com/mitsuhiko/flask-sqlalchemy")
903276d0
DM
12862 (synopsis
12863 "Module adding SQLAlchemy support to your Flask application")
12864 (description
12865 "This package adds SQLAlchemy support to your Flask application.")
12866 (license license:bsd-3)))
329b4b3b
LF
12867
12868(define-public python-pyev
12869 (package
12870 (name "python-pyev")
12871 (version "0.9.0")
12872 (source
12873 (origin
12874 (method url-fetch)
12875 (uri (pypi-uri "pyev" version))
12876 (sha256
12877 (base32
12878 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
12879 (build-system python-build-system)
12880 (arguments
12881 `(#:tests? #f ; no test suite
12882 #:phases
12883 (modify-phases %standard-phases
12884 (add-after 'unpack 'patch
12885 (lambda* (#:key inputs #:allow-other-keys)
12886 (let ((libev (string-append (assoc-ref inputs "libev")
12887 "/lib/libev.so.4")))
12888 (substitute* "setup.py"
12889 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
12890 (string-append "libev_dll_name = \"" libev "\"")))))))))
12891 (inputs
12892 `(("libev" ,libev)))
12893 (home-page "http://pythonhosted.org/pyev/")
12894 (synopsis "Python libev interface")
12895 (description "Pyev provides a Python interface to libev.")
12896 (license license:gpl3)))
12897
12898(define-public python2-pyev
12899 (package-with-python2 python-pyev))
45b4f127
DM
12900
12901(define-public python-imagesize
12902 (package
12903 (name "python-imagesize")
12904 (version "0.7.1")
12905 (source
12906 (origin
12907 (method url-fetch)
12908 (uri (pypi-uri "imagesize" version))
12909 (sha256
12910 (base32
12911 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
12912 (build-system python-build-system)
9422c98a
LF
12913 (arguments
12914 '(;; Test files are not distributed on PyPi:
12915 ;; https://github.com/shibukawa/imagesize_py/issues/7
12916 #:tests? #f))
45b4f127
DM
12917 (home-page "https://github.com/shibukawa/imagesize_py")
12918 (synopsis "Gets image size of files in variaous formats in Python")
12919 (description
12920 "This package allows determination of image size from
12921PNG, JPEG, JPEG2000 and GIF files in pure Python.")
f210e944 12922 (license license:expat)))
45b4f127
DM
12923
12924(define-public python2-imagesize
f210e944 12925 (package-with-python2 python-imagesize))
2f6dd9cd
AI
12926
12927(define-public python-axolotl-curve25519
12928 (package
12929 (name "python-axolotl-curve25519")
12930 (version "0.1")
12931 (source
12932 (origin
12933 (method git-fetch)
12934 (uri (git-reference
12935 (url "git://github.com/tgalal/python-axolotl-curve25519")
12936 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
12937 (file-name (string-append name "-" version "-checkout"))
12938 (sha256
12939 (base32
12940 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
12941 (build-system python-build-system)
12942 (arguments
12943 `(;; Prevent creation of the egg. This works around
12944 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
12945 #:configure-flags '("--root=/")))
2f6dd9cd
AI
12946 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
12947 (synopsis "Python wrapper for curve25519 library")
12948 (description "This is a python wrapper for the curve25519 library
12949with ed25519 signatures. The C code was pulled from
12950libaxolotl-android. At the moment this wrapper is meant for use by
12951python-axolotl.")
12952 (license (list license:gpl3 ; Most files
683cdbf5 12953 license:bsd-3)))) ; curve/curve25519-donna.c
2f6dd9cd
AI
12954
12955(define-public python2-axolotl-curve25519
12956 (package-with-python2 python-axolotl-curve25519))
06ff0837
AI
12957
12958(define-public python-axolotl
12959 (package
12960 (name "python-axolotl")
12961 (version "0.1.35")
12962 (source
12963 (origin
12964 (method url-fetch)
12965 (uri (string-append
12966 "https://github.com/tgalal/python-axolotl/archive/"
12967 version ".tar.gz"))
12968 (file-name (string-append name "-" version ".tar.gz"))
12969 (sha256
12970 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
12971 (build-system python-build-system)
12972 (arguments
12973 `(#:phases
12974 (modify-phases %standard-phases
12975 ;; Don't install tests
12976 (add-before 'install 'remove-tests
12977 (lambda _
12978 (for-each delete-file-recursively
12979 '("axolotl/tests" "build/lib/axolotl/tests"))
01fb9f66 12980 #t)))))
06ff0837
AI
12981 (propagated-inputs
12982 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
12983 ("python-dateutil" ,python-dateutil)
12984 ("python-protobuf" ,python-protobuf)
12985 ("python-pycrypto" ,python-pycrypto)))
12986 (home-page "https://github.com/tgalal/python-axolotl")
12987 (synopsis "Python port of libaxolotl-android")
12988 (description "This is a python port of libaxolotl-android. This
12989is a ratcheting forward secrecy protocol that works in synchronous and
12990asynchronous messaging environments.")
12991 (license license:gpl3)))
12992
12993(define-public python2-axolotl
12994 (package-with-python2 python-axolotl))
e2fca490
DM
12995
12996(define-public python-termstyle
12997 (package
12998 (name "python-termstyle")
12999 (version "0.1.11")
13000 (source
13001 (origin
13002 (method url-fetch)
13003 (uri (pypi-uri "termstyle" version))
13004 (sha256
13005 (base32
13006 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
13007 (build-system python-build-system)
7917a135
MB
13008 (arguments
13009 '(#:phases
13010 (modify-phases %standard-phases
13011 (replace 'check
13012 (lambda _
13013 (zero? (system* "python" "test3.py")))))))
7bf837fd 13014 (home-page "https://github.com/gfxmonk/termstyle")
e2fca490
DM
13015 (synopsis "Console text coloring for Python")
13016 (description "This package provides console text coloring for Python.")
13017 (license license:bsd-3)))
1e6112d8
DM
13018
13019(define-public python-rednose
13020 (package
13021 (name "python-rednose")
13022 (version "1.2.1")
13023 (source
13024 (origin
13025 (method url-fetch)
13026 (uri (pypi-uri "rednose" version))
13027 (sha256
13028 (base32
13029 "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
13030 (build-system python-build-system)
13031 (arguments
13032 `(#:phases
13033 (modify-phases %standard-phases
13034 (add-after 'unpack 'fix-deps
13035 (lambda _
13036 ;; See <https://github.com/JBKahn/rednose/issues/12>
13037 (substitute* "setup.py"
13038 (("python-termstyle") "termstyle"))
13039 #t)))))
13040 (propagated-inputs
13041 `(("python-colorama" ,python-colorama)
13042 ("python-termstyle" ,python-termstyle)))
13043 (native-inputs
13044 `(("python-six" ,python-six)
13045 ("python-nose" ,python-nose)))
13046 (home-page "https://github.com/JBKahn/rednose")
13047 (synopsis "Colored output for Python nosetests")
13048 (description "This package provides colored output for the
13049@command{nosetests} command of the Python Nose unit test framework.")
13050 (license license:bsd-3)))
0a7f17f0
DM
13051
13052(define-public python-flask-restplus
13053 (package
13054 (name "python-flask-restplus")
13055 (version "0.9.2")
13056 (source
13057 (origin
13058 (method url-fetch)
13059 (uri (pypi-uri "flask-restplus" version))
13060 (sha256
13061 (base32
13062 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
13063 (build-system python-build-system)
59f74825
MB
13064 (arguments
13065 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
13066 ;; #:phases
13067 ;; (modify-phases %standard-phases
13068 ;; (replace 'check
13069 ;; (lambda _
13070 ;; (zero? (system* "nosetests")))))))
0a7f17f0
DM
13071 (propagated-inputs
13072 `(("python-aniso8601" ,python-aniso8601)
13073 ("python-flask" ,python-flask)
13074 ("python-jsonschema" ,python-jsonschema)
13075 ("python-pytz" ,python-pytz)
13076 ("python-six" ,python-six)))
13077 (native-inputs
13078 `(("python-tzlocal" ,python-tzlocal)
13079 ("python-blinker" ,python-blinker)
13080 ("python-nose" ,python-nose)
13081 ("python-rednose" ,python-rednose)))
13082 (home-page "https://github.com/noirbizarre/flask-restplus")
13083 (synopsis "Framework for documented API development with Flask")
13084 (description "This package provides a framework for API development with
13085the Flask web framework in Python. It is similar to package
13086@code{python-flask-restful} but supports the @code{python-swagger}
13087documentation builder.")
13088 (license license:expat)))
1ed21519
DM
13089
13090(define-public python-sadisplay
13091 (package
13092 (name "python-sadisplay")
13093 (version "0.4.6")
13094 (source
13095 (origin
13096 (method url-fetch)
13097 (uri (pypi-uri "sadisplay" version))
13098 (sha256
13099 (base32
13100 "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
13101 (build-system python-build-system)
13102 (propagated-inputs
13103 `(("python-sqlalchemy" ,python-sqlalchemy)))
13104 (native-inputs
13105 `(("python-nose" ,python-nose)))
13106 (home-page "https://bitbucket.org/estin/sadisplay")
13107 (synopsis "SQLAlchemy schema displayer")
13108 (description "This package provides a program to build Entity
13109Relationship diagrams from a SQLAlchemy model (or directly from the
13110database).")
13111 (license license:bsd-3)))
13112
13113(define-public python2-sadisplay
13114 (package-with-python2 python-sadisplay))
444a79b6
DM
13115
13116(define-public python-flask-restful-swagger
13117 (package
13118 (name "python-flask-restful-swagger")
13119 (version "0.19")
13120 (source
13121 (origin
13122 (method url-fetch)
13123 (uri (pypi-uri "flask-restful-swagger" version))
13124 (sha256
13125 (base32
13126 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
13127 (build-system python-build-system)
13128 (propagated-inputs
13129 `(("python-flask-restful" ,python-flask-restful)))
13130 (home-page "https://github.com/rantav/flask-restful-swagger")
13131 (synopsis "Extract Swagger specs from Flask-Restful projects")
13132 (description "This package lets you extract Swagger API documentation
13133specs from your Flask-Restful projects.")
13134 (license license:expat)))
13135
13136(define-public python2-flask-restful-swagger
13137 (package-with-python2 python-flask-restful-swagger))
6c2e82bc
TGR
13138
13139(define-public python-argcomplete
13140 (package
13141 (name "python-argcomplete")
13142 (version "1.7.0")
13143 (source
13144 (origin
13145 (method url-fetch)
13146 (uri (pypi-uri "argcomplete" version))
13147 (sha256
13148 (base32
13149 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
13150 (build-system python-build-system)
80ce42bd
MB
13151 (native-inputs
13152 `(("python-pexpect" ,python-pexpect)
13153 ("tcsh" ,tcsh)))
6c2e82bc
TGR
13154 (home-page "https://github.com/kislyuk/argcomplete")
13155 (synopsis "Shell tab completion for Python argparse")
13156 (description "argcomplete provides extensible command line tab completion
13157of arguments and options for Python scripts using @code{argparse}. It's
13158particularly useful for programs with many options or sub-parsers that can
13159dynamically suggest completions; for example, when browsing resources over the
13160network.")
13161 (license license:asl2.0)))
13162
13163(define-public python2-argcomplete
13164 (package-with-python2 python-argcomplete))
361a2fcf
TGR
13165
13166(define-public python-xopen
13167 (package
13168 (name "python-xopen")
13169 (version "0.1.1")
13170 (source
13171 (origin
13172 (method url-fetch)
13173 (uri (pypi-uri "xopen" version))
13174 (sha256
13175 (base32
13176 "1wx6mylzcsyhjl19ycb83qq6iqpmr927lz62njfsar6ldsj0qcni"))
13177 (file-name (string-append name "-" version ".tar.gz"))))
13178 (build-system python-build-system)
13179 (home-page "https://github.com/marcelm/xopen/")
13180 (synopsis "Open compressed files transparently")
13181 (description "This module provides an @code{xopen} function that works like
13182Python's built-in @code{open} function, but can also deal with compressed files.
13183Supported compression formats are gzip, bzip2 and, xz, and are automatically
13184recognized by their file extensions. The focus is on being as efficient as
13185possible on all supported Python versions.")
13186 (license license:expat)))
13187
13188(define-public python2-xopen
13189 (package-with-python2 python-xopen))
8d67610b
DM
13190
13191(define-public python2-cheetah
13192 (package
13193 (name "python2-cheetah")
13194 (version "2.4.4")
13195 (source
13196 (origin
13197 (method url-fetch)
13198 (uri (pypi-uri "Cheetah" version))
13199 (sha256
13200 (base32
13201 "0l5mm4lnysjkzpjr95q5ydm9xc8bv43fxmr79ypybrf1y0lq4c5y"))))
13202 (build-system python-build-system)
13203 (arguments
13204 `(#:python ,python-2))
13205 (propagated-inputs
13206 `(("python2-markdown" ,python2-markdown)))
13207 (home-page "https://pythonhosted.org/Cheetah/")
13208 (synopsis "Template engine")
13209 (description "Cheetah is a text-based template engine and Python code
13210generator.
13211
13212Cheetah can be used as a standalone templating utility or referenced as
13213a library from other Python applications. It has many potential uses,
13214but web developers looking for a viable alternative to ASP, JSP, PHP and
13215PSP are expected to be its principle user group.
13216
13217Features:
13218@enumerate
13219@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
13220 text-based format.
13221@item Cleanly separates content, graphic design, and program code.
13222@item Blends the power and flexibility of Python with a simple template language
13223 that non-programmers can understand.
13224@item Gives template writers full access to any Python data structure, module,
13225 function, object, or method in their templates.
13226@item Makes code reuse easy by providing an object-orientated interface to
13227 templates that is accessible from Python code or other Cheetah templates.
13228 One template can subclass another and selectively reimplement sections of it.
13229@item Provides a simple, yet powerful, caching mechanism that can dramatically
13230 improve the performance of a dynamic website.
13231@item Compiles templates into optimized, yet readable, Python code.
13232@end enumerate")
13233 (license (license:x11-style "file://LICENSE"))))
916aafa4 13234
d83d8722
DM
13235(define-public python-dulwich
13236 (package
13237 (name "python-dulwich")
13238 (version "0.16.3")
13239 (source
13240 (origin
13241 (method url-fetch)
13242 (uri (list (string-append "https://www.dulwich.io/releases/"
13243 "dulwich-" version ".tar.gz")
13244 (pypi-uri "dulwich" version)))
13245 (sha256
13246 (base32 "0fl47vzfgc3w3rmhn8naii905cjqcp0vc68iyvymxp7567hh6als"))))
13247 (build-system python-build-system)
13248 (arguments
13249 `(#:phases
13250 (modify-phases %standard-phases
13251 (add-before 'check 'fix-tests
13252 (lambda* (#:key inputs #:allow-other-keys)
13253 ;; The tests use Popen with a custom environment which doesn't
13254 ;; include PATH.
13255 (substitute* "dulwich/tests/compat/utils.py"
13256 (("'git'") (string-append "'"
13257 (which "git")
13258 "'")))
13259 (substitute* '("dulwich/tests/test_repository.py"
13260 "dulwich/tests/test_hooks.py")
13261 (("#!/bin/sh") (string-append "#!" (which "sh"))))
13262 (setenv "TEST_RUNNER" "unittest")
13263 (setenv "PYTHONHASHSEED" "random")
13264 #t)))))
13265 (propagated-inputs
13266 `(("python-fastimport" ,python-fastimport)))
13267 (native-inputs
13268 `(("python-mock" ,python-mock)
13269 ("python-geventhttpclient" ,python-geventhttpclient)
13270 ("git" ,git)))
13271 (home-page "https://www.dulwich.io/")
13272 (synopsis "Git implementation in Python")
13273 (description "Dulwich is an implementation of the Git file formats and
13274protocols written in pure Python.")
13275 ;; Can be used with either license.
13276 (license (list license:asl2.0 license:gpl2+))))
13277
13278(define-public python2-dulwich
13279 (package-with-python2 python-dulwich))
424b1ae7 13280
916aafa4
CZ
13281(define-public python-pbkdf2
13282 (package
13283 (name "python-pbkdf2")
13284 (version "1.3")
13285 (source
13286 (origin
13287 (method url-fetch)
13288 (uri (pypi-uri "pbkdf2" version))
13289 (sha256
13290 (base32
13291 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
13292 (build-system python-build-system)
fffcd8b8
MB
13293 (arguments
13294 '(#:phases
13295 (modify-phases %standard-phases
13296 (replace 'check
13297 (lambda _
13298 (setenv "PYTHONPATH"
13299 (string-append (getcwd) "/build/lib:"
13300 (getenv "PYTHONPATH")))
13301 (zero? (system* "python" "test/test_pbkdf2.py")))))))
916aafa4
CZ
13302 (propagated-inputs
13303 `(("python-pycrypto" ,python-pycrypto))) ; optional
13304 (home-page "http://www.dlitz.net/software/python-pbkdf2/")
13305 (synopsis "Password-based key derivation")
13306 (description "This module implements the password-based key derivation
13307function, PBKDF2, specified in RSA PKCS#5 v2.0.
13308
13309PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
13310is part of the RSA Public Key Cryptography Standards series. The provided
13311implementation takes a password or a passphrase and a salt value (and
13312optionally a iteration count, a digest module, and a MAC module) and provides
13313a file-like object from which an arbitrarly-sized key can be read.")
13314 (license license:expat)))
13315
13316(define-public python2-pbkdf2
13317 (package-with-python2 python-pbkdf2))
cba84a38
CZ
13318
13319(define-public python-qrcode
13320 (package
13321 (name "python-qrcode")
13322 (version "5.3")
13323 (source
13324 (origin
13325 (method url-fetch)
13326 (uri (pypi-uri "qrcode" version))
13327 (sha256
13328 (base32
13329 "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1"))))
13330 (build-system python-build-system)
6925cd78
MB
13331 (arguments
13332 ;; FIXME: Tests require packaging 'pymaging'.
13333 '(#:tests? #f))
cba84a38
CZ
13334 (propagated-inputs
13335 `(("python-lxml" ,python-lxml) ; for SVG output
13336 ("python-pillow" ,python-pillow) ; for PNG output
13337 ("python-six" ,python-six)))
13338 (home-page "https://github.com/lincolnloop/python-qrcode")
13339 (synopsis "QR Code image generator")
13340 (description "This package provides a pure Python QR Code generator
13341module. It uses the Python Imaging Library (PIL) to allow for the generation
13342of QR Codes.
13343
13344In addition this package provides a command line tool to generate QR codes and
13345either write these QR codes to a file or do the output as ascii art at the
13346console.")
13347 (license license:bsd-3)))
13348
13349(define-public python2-qrcode
13350 (package-with-python2 python-qrcode))
af7caada
CZ
13351
13352;; SlowAES isn't compatible with Python 3.
13353(define-public python2-slowaes
13354 (package
13355 (name "python2-slowaes")
13356 (version "0.1a1")
13357 (source
13358 (origin
13359 (method url-fetch)
13360 (uri (pypi-uri "slowaes" version))
13361 (sha256
13362 (base32
13363 "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
13364 (build-system python-build-system)
13365 (arguments `(#:python ,python-2))
13366 (home-page "http://code.google.com/p/slowaes/")
13367 (synopsis "Implementation of AES in Python")
13368 (description "This package contains an implementation of AES in Python.
13369This implementation is slow (hence the project name) but still useful when
13370faster ones are not available.")
13371 (license license:asl2.0)))
1a917fc9
MFM
13372
13373(define-public python-rst2ansi
13374 (package
13375 (name "python-rst2ansi")
13376 (version "0.1.5")
13377 (source
13378 (origin
13379 (method url-fetch)
13380 (uri (pypi-uri "rst2ansi" version))
13381 (sha256
13382 (base32
13383 "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
13384 (build-system python-build-system)
13385 (propagated-inputs
13386 `(("python-docutils" ,python-docutils)))
13387 (home-page "https://github.com/Snaipe/python-rst-to-ansi")
13388 (synopsis "Convert RST to ANSI-decorated console output")
13389 (description
13390 "Python module dedicated to rendering RST (reStructuredText) documents
13391to ansi-escaped strings suitable for display in a terminal.")
13392 (license license:expat)))
2f4623db
MFM
13393
13394(define-public python-ddt
13395 (package
13396 (name "python-ddt")
13397 (version "1.1.1")
13398 (source
13399 (origin
13400 (method url-fetch)
13401 (uri (pypi-uri "ddt" version))
13402 (sha256
13403 (base32
13404 "1c00ikkxr7lha97c81k938bzhgd4pbwamkjn0h4nkhr3xk00zp6n"))))
13405 (build-system python-build-system)
13406 (native-inputs
13407 `(("python-mock" ,python-mock)
13408 ("python-nose" ,python-nose)))
13409 (propagated-inputs
13410 `(("python-six" ,python-six)
13411 ("python-pyyaml" ,python-pyyaml)))
13412 (home-page "https://github.com/txels/ddt")
13413 (synopsis "Data-Driven Tests")
13414 (description
13415 "DDT (Data-Driven Tests) allows you to multiply one test case by running
13416it with different test data, and make it appear as multiple test cases.")
13417 (license license:expat)))
13418
13419(define-public python2-ddt
13420 (package-with-python2 python-ddt))
2299b137
MFM
13421
13422(define-public python-pycosat
13423 (package
13424 (name "python-pycosat")
13425 (version "0.6.1")
13426 (source
13427 (origin
13428 (method url-fetch)
13429 (uri (pypi-uri "pycosat" version))
13430 (sha256
13431 (base32
13432 "1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
13433 ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
13434 (build-system python-build-system)
13435 (home-page "https://github.com/ContinuumIO/pycosat")
13436 (synopsis "Bindings to picosat (a SAT solver)")
13437 (description
13438 "This package provides efficient Python bindings to @code{picosat} on
13439the C level. When importing pycosat, the @code{picosat} solver becomes part
13440of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
13441Problem} (SAT) solver.")
13442 (license license:expat)))
13443
13444(define-public python2-pycosat
13445 (package-with-python2 python-pycosat))
8fd68504
MFM
13446
13447(define-public python2-ruamel.ordereddict
13448 (package
13449 (name "python2-ruamel.ordereddict")
13450 (version "0.4.9")
13451 (source
13452 (origin
13453 (method url-fetch)
13454 (uri (pypi-uri "ruamel.ordereddict" version))
13455 (sha256
13456 (base32
13457 "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
13458 (build-system python-build-system)
13459 (arguments
13460 `(#:python ,python-2
13461 #:phases
13462 (modify-phases %standard-phases
13463 (delete 'check)
13464 (add-after 'install 'check
13465 (lambda* (#:key inputs outputs #:allow-other-keys)
13466 (add-installed-pythonpath inputs outputs)
13467 (zero? (system* "python" "test/testordereddict.py")))))))
13468 (home-page "https://bitbucket.org/ruamel/ordereddict")
13469 (synopsis "Version of dict that keeps keys in insertion order")
13470 (description
13471 "This is an implementation of an ordered dictionary with @dfn{Key
13472Insertion Order} (KIO: updates of values do not affect the position of the
13473key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
13474removed and put at the back). The standard library module @code{OrderedDict},
13475implemented later, implements a subset of @code{ordereddict} functionality.
13476Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
13477Order} (KSO, no sorting function can be specified, but a transform can be
13478specified to apply on the key before comparison (e.g. @code{string.lower})).")
13479 (license license:expat)))
d8768e31
EB
13480
13481(define-public python-pypeg2
13482 (package
13483 (name "python-pypeg2")
13484 (version "2.15.2")
13485 (source
13486 (origin
13487 (method url-fetch)
13488 (uri (pypi-uri "pyPEG2" version))
13489 (sha256
13490 (base32
13491 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
13492 (build-system python-build-system)
13493 (propagated-inputs `(("python-lxml" ,python-lxml)))
13494 (arguments
13495 ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
13496 '(#:tests? #f))
13497 (home-page "https://fdik.org/pyPEG/")
13498 (synopsis "Parsering Expression Grammars in Python")
13499 (description "PyPEG is an intrinsic parser interpreter framework for
13500Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
13501parse many formal languages.")
13502 (license license:gpl2)))
33e9490c
AI
13503
13504(define-public python2-cliapp
13505 (package
13506 (name "python2-cliapp")
13507 (version "1.20160724")
13508 (source
13509 (origin
13510 (method url-fetch)
13511 (uri (string-append
13512 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-"
13513 version ".tar.gz"))
13514 (sha256
13515 (base32
13516 "025cyi75vxyghbm4hav8dz4fzwksshddavy9g9fwr440awcvw74f"))))
13517 (build-system python-build-system)
13518 (arguments
13519 `(#:python ,python-2))
13520 (propagated-inputs
13521 `(("python2-pyaml" ,python2-pyaml)))
13522 (home-page "https://liw.fi/cliapp/")
13523 (synopsis "Python framework for command line programs")
13524 (description "@code{python2-cliapp} is a python framework for
13525command line programs. It contains the typical stuff such programs
13526need to do, such as parsing the command line for options, and
13527iterating over input files.")
13528 (license license:gpl2+)))
13529
77e99411
AI
13530(define-public python2-ttystatus
13531 (package
13532 (name "python2-ttystatus")
13533 (version "0.32")
13534 (source
13535 (origin
13536 (method url-fetch)
13537 (uri (string-append
13538 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/ttystatus/snapshot/ttystatus-"
13539 version ".tar.gz"))
13540 (sha256
13541 (base32
13542 "0b5g889jj23r2w1hi300cdldx6jvspanp0ybf5n1qvdvl150aamf"))))
13543 (build-system python-build-system)
13544 (arguments
13545 `(#:python ,python-2))
13546 (home-page "https://liw.fi/ttystatus/")
13547 (synopsis "Python library for showing progress reporting and
13548status updates on terminals")
13549 (description "@code{python2-ttystatus} is a python library for
13550showing progress reporting and status updates on terminals, for
13551command line programs. Output is automatically adapted to the width
13552of the terminal: truncated if it does not fit, and resized if the
13553terminal size changes.")
13554 (license license:gpl3+)))
c220f0b4
AI
13555
13556(define-public python2-tracing
13557 (package
13558 (name "python2-tracing")
13559 (version "0.10")
13560 (source
13561 (origin
13562 (method url-fetch)
13563 (uri (string-append
13564 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/python-tracing/snapshot/tracing-"
13565 version ".tar.gz"))
13566 (sha256
13567 (base32
13568 "06cw4zg42fsvqy372vi2whj26w56vzg5axhzwdjc2bgwf03garbw"))))
13569 (build-system python-build-system)
13570 (arguments
13571 `(#:python ,python-2))
13572 (home-page "https://liw.fi/tracing/")
13573 (synopsis "Python debug logging helper")
13574 (description "@code{python2-tracing} is a python library for
13575logging debug messages. It provides a way to turn debugging messages
13576on and off, based on the filename they occur in. It is much faster
13577than using @code{logging.Filter} to accomplish the same thing, which
13578matters when code is run in production mode. The actual logging still
13579happens using the @code{logging} library.")
13580 (license license:gpl3+)))
b6b2ca5d
AI
13581
13582(define-public python2-larch
13583 (package
13584 (name "python2-larch")
13585 (version "1.20151025")
13586 (source
13587 (origin
13588 (method url-fetch)
13589 (uri (string-append
13590 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/larch/snapshot/larch-"
13591 version ".tar.gz"))
13592 (sha256
13593 (base32
13594 "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
13595 (build-system python-build-system)
13596 (arguments
13597 `(#:python ,python-2))
13598 (propagated-inputs
13599 `(("python2-tracing" ,python2-tracing)))
13600 (home-page "https://liw.fi/larch/")
13601 (synopsis "Python copy-on-write B-tree library")
13602 (description "@code{python2-larch} is an implementation of
13603particular kind of B-tree, based on research by Ohad Rodeh. See
13604@url{http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf} for details
13605on the data structure.
13606
13607The distinctive feature of this B-tree is that a node is never
13608(conceptually) modified. Instead, all updates are done by
13609copy-on-write. This makes it easy to clone a tree, and modify only the
13610clone, while other processes access the original tree.")
13611 (license license:gpl3+)))
35db2d3c
AP
13612
13613(define-public python-htmlmin
13614 (package
13615 (name "python-htmlmin")
13616 (version "0.1.10")
13617 (source
13618 (origin
13619 (method url-fetch)
13620 (uri (pypi-uri "htmlmin" version))
13621 (sha256
13622 (base32
13623 "0qxa93j3p1ak32qh8d9kshqv8v3z0hkc13dwbhp5cn7sn3xmsp6a"))))
13624 (arguments
13625 `(#:tests? #f)) ;htmlmin has no tests
13626 (build-system python-build-system)
13627 (home-page "https://htmlmin.readthedocs.org/en/latest/")
13628 (synopsis "HTML minifier")
13629 (description "@code{htmlmin} is an HTML minifier that just works.
13630It comes with safe defaults and easily configurable options.")
13631 (license license:bsd-3)))
13632
13633(define-public python2-htmlmin
13634 (package-with-python2 python-htmlmin))
78c55663
AP
13635
13636(define-public python-flask-htmlmin
13637 (package
13638 (name "python-flask-htmlmin")
13639 (version "1.2")
13640 (source
13641 (origin
13642 (method url-fetch)
13643 (uri (pypi-uri "Flask-HTMLmin" version))
13644 (sha256
13645 (base32
13646 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
13647 (propagated-inputs
13648 `(("python-flask" ,python-flask)
13649 ("python-htmlmin" ,python-htmlmin)))
13650 (build-system python-build-system)
13651 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
13652 (synopsis "HTML response minifier for Flask")
13653 (description
13654 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
13655 (license license:bsd-3)))
13656
13657(define-public python2-flask-htmlmin
13658 (package-with-python2 python-flask-htmlmin))
a71c8638
AP
13659
13660(define-public python-flask-login
13661 (package
13662 (name "python-flask-login")
13663 (version "0.4.0")
13664 (source
13665 (origin
13666 (method url-fetch)
13667 (uri (string-append "https://github.com/maxcountryman/flask-login/archive/"
13668 version ".tar.gz"))
13669 (file-name (string-append name "-" version ".tar.gz"))
13670 (sha256
13671 (base32
13672 "1pdqp7a2gyb7k06xda004x0fi2w66s6kn2i0ndkqndmg12d83f9w"))))
13673 (arguments
13674 ;; Tests fail PEP8 compliance. See:
13675 ;; https://github.com/maxcountryman/flask-login/issues/340
13676 `(#:tests? #f))
13677 (build-system python-build-system)
13678 (home-page "https://github.com/maxcountryman/flask-login")
13679 (synopsis "User session management for Flask")
13680 (description
13681 "@code{Flask-Login} provides user session management for Flask. It
13682handles the common tasks of logging in, logging out, and remembering your
13683users' sessions over extended periods of time.")
13684 (license license:expat)))
13685
13686(define-public python2-flask-login
13687 (package-with-python2 python-flask-login))
d5ef113c
AI
13688
13689(define-public python-astroid
13690 (package
13691 (name "python-astroid")
13692 (version "1.4.9")
13693 (source
13694 (origin
13695 (method url-fetch)
13696 (uri (string-append
13697 "https://github.com/PyCQA/astroid/archive/astroid-"
13698 version ".tar.gz"))
13699 (sha256
13700 (base32
13701 "0j0wgy54d13a470vm4b9rdjk99n1hmdxpf34x9k3pbmi9w9b566z"))))
13702 (build-system python-build-system)
13703 (propagated-inputs
13704 `(("python-lazy-object-proxy" ,python-lazy-object-proxy)
13705 ("python-six" ,python-six)
13706 ("python-wrapt" ,python-wrapt)))
13707 (arguments
13708 `(#:phases
13709 (modify-phases %standard-phases
13710 (replace 'check
13711 (lambda _
13712 (zero? (system* "python" "-m" "unittest" "discover"
13713 "-p" "unittest*.py")))))))
13714 (home-page "https://github.com/PyCQA/astroid")
13715 (synopsis "Common base representation of python source code for pylint and
13716other projects")
13717 (description "@code{python-astroid} provides a common base representation
13718of python source code for projects such as pychecker, pyreverse, pylint, etc.
13719
13720It provides a compatible representation which comes from the _ast module. It
13721rebuilds the tree generated by the builtin _ast module by recursively walking
13722down the AST and building an extended ast. The new node classes have
13723additional methods and attributes for different usages. They include some
13724support for static inference and local name scopes. Furthermore, astroid
13725builds partial trees by inspecting living objects.")
13726 (license license:lgpl2.1+)))
13727
13728(define-public python2-astroid
13729 (package-with-python2 python-astroid))
6ba0af79
AI
13730
13731(define-public python-isort
13732 (package
13733 (name "python-isort")
13734 (version "4.2.5")
13735 (source
13736 (origin
13737 (method url-fetch)
13738 (uri (string-append
13739 "https://github.com/timothycrosley/isort/archive/"
13740 version ".tar.gz"))
13741 (file-name (string-append name "-" version ".tar.gz"))
13742 (sha256
13743 (base32
13744 "0zsrgkb0krn5476yncy5dd56k7dk34zqb4bnlvwy44ixgilyjmfh"))))
13745 (build-system python-build-system)
13746 (native-inputs
13747 `(("python-mock" ,python-mock)
13748 ("python-pytest" ,python-pytest)))
13749 (home-page "https://github.com/timothycrosley/isort")
13750 (synopsis "Python utility/library to sort python imports")
13751 (description "@code{python-isort} is a python utility/library to sort
13752imports alphabetically, and automatically separated into sections. It
13753provides a command line utility, a python library and plugins for various
13754editors.")
13755 (license license:expat)))
13756
13757(define-public python2-isort
13758 (package-with-python2 python-isort))
965a083e
AI
13759
13760(define-public python2-backports-functools-lru-cache
13761 (package
13762 (name "python2-backports-functools-lru-cache")
13763 (version "1.3")
13764 (source
13765 (origin
13766 (method url-fetch)
13767 ;; only the pypi tarballs contain the necessary metadata
13768 (uri (pypi-uri "backports.functools_lru_cache" version))
13769 (sha256
13770 (base32
13771 "158ysf2hb0q4p4695abfiym9x1ywg0dgh8a3apd7gqaaxjy22jj4"))))
13772 (build-system python-build-system)
13773 (native-inputs
13774 `(("python2-setuptools-scm" ,python2-setuptools-scm)))
13775 (arguments
13776 `(#:python ,python-2))
13777 (home-page "https://github.com/jaraco/backports.functools_lru_cache")
13778 (synopsis "Backport of functools.lru_cache from Python 3.3")
13779 (description "@code{python2-backports-functools-lru-cache} is a backport
13780of @code{functools.lru_cache} from python 3.3.")
13781 (license license:expat)))
23db3fc6
AI
13782
13783(define-public python-configparser
13784 (package
13785 (name "python-configparser")
13786 (version "3.5.0")
13787 (source
13788 (origin
13789 (method url-fetch)
13790 (uri (string-append
13791 "https://bitbucket.org/ambv/configparser/get/"
13792 version ".tar.bz2"))
13793 (file-name (string-append name "-" version ".tar.gz"))
13794 (sha256
13795 (base32
13796 "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa"))))
13797 (build-system python-build-system)
13798 (home-page "http://docs.python.org/py3k/library/configparser.html")
13799 (synopsis "Backport of configparser from python 3.5")
13800 (description "@code{python-configparser} is a backport of
13801@code{configparser} from Python 3.5 so that it can be used directly
13802in other versions.")
13803 (license license:expat)))
13804
13805(define-public python2-configparser
13806 (package-with-python2 python-configparser))
61550ded
AI
13807
13808(define-public python2-coverage-test-runner
13809 (package
13810 (name "python2-coverage-test-runner")
13811 (version "1.11")
13812 (source
13813 (origin
13814 (method url-fetch)
13815 (uri (string-append
13816 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/"
13817 "coverage-test-runner/snapshot/coverage-test-runner-"
13818 version ".tar.gz"))
13819 (sha256
13820 (base32
13821 "0y1m7z3dl63kmhcmydl1mwg0hacnf6ghrx9dah17j9iasssfa3g7"))))
13822 (build-system python-build-system)
13823 (arguments
13824 `(#:python ,python-2
13825 #:phases
13826 (modify-phases %standard-phases
13827 (replace 'check
13828 (lambda _
13829 (zero? (system* "./testrun")))))))
13830 (propagated-inputs
13831 `(("python2-coverage" ,python2-coverage)))
13832 (home-page "https://liw.fi/coverage-test-runner/")
13833 (synopsis "Python module for running unit tests")
13834 (description "@code{CoverageTestRunner} is a python module for running
d1e4ad1b 13835unit tests and failing them if the unit test module does not exercise all
61550ded
AI
13836statements in the module it tests.")
13837 (license license:gpl3+)))
315944a3
AI
13838
13839(define-public python-pylint
13840 (package
13841 (name "python-pylint")
13842 (version "1.6.5")
13843 (source
13844 (origin
13845 (method url-fetch)
13846 (uri (string-append
13847 "https://github.com/PyCQA/pylint/archive/pylint-"
13848 version ".tar.gz"))
13849 (sha256
13850 (base32
13851 "08pmgflmq2zrzrn9nkfadzwa5vybz46wvwxhrsd2mjlcgsh4rzbm"))))
13852 (build-system python-build-system)
13853 (native-inputs
13854 `(("python-tox" ,python-tox)))
13855 (propagated-inputs
13856 `(("python-astroid" ,python-astroid)
13857 ("python-isort" ,python-isort)
13858 ("python-mccabe" ,python-mccabe)
13859 ("python-six" ,python-six)))
13860 (arguments
13861 `(#:phases
13862 (modify-phases %standard-phases
13863 (replace 'check
13864 (lambda _
13865 ;; Somehow, tests for python2-pylint
13866 ;; fail if run from the build directory
13867 (let ((work "/tmp/work"))
13868 (mkdir-p work)
13869 (setenv "PYTHONPATH"
13870 (string-append (getenv "PYTHONPATH") ":" work))
13871 (copy-recursively "." work)
13872 (with-directory-excursion "/tmp"
13873 (zero? (system* "python" "-m" "unittest" "discover"
13874 "-s" (string-append work "/pylint/test")
13875 "-p" "*test_*.py")))))))))
13876 (home-page "https://github.com/PyCQA/pylint")
13877 (synopsis "Python source code analyzer which looks for coding standard
13878errors")
13879 (description "Pylint is a Python source code analyzer which looks
13880for programming errors, helps enforcing a coding standard and sniffs
13881for some code smells (as defined in Martin Fowler's Refactoring book).
13882
13883Pylint has many rules enabled by default, way too much to silence them
13884all on a minimally sized program. It's highly configurable and handle
13885pragmas to control it from within your code. Additionally, it is
13886possible to write plugins to add your own checks.")
13887 (license license:gpl2+)))
13888
13889(define-public python2-pylint
13890 (let ((pylint (package-with-python2 python-pylint)))
13891 (package (inherit pylint)
13892 (propagated-inputs
13893 `(("python2-backports-functools-lru-cache"
13894 ,python2-backports-functools-lru-cache)
13895 ("python2-configparser" ,python2-configparser)
13896 ,@(package-propagated-inputs pylint))))))
5d0c3ba8
MFM
13897
13898(define-public python-paramunittest
13899 (package
13900 (name "python-paramunittest")
13901 (version "0.2")
13902 (source
13903 (origin
13904 (method url-fetch)
13905 (uri (pypi-uri "ParamUnittest" version))
13906 (sha256
13907 (base32
13908 "0kp793hws5xv1wvycxq7jw2pwy36f35k39jg8hx5qikij5a0jid1"))))
13909 (build-system python-build-system)
13910 (home-page
13911 "https://github.com/rik0/ParamUnittest")
13912 (synopsis
13913 "Simple extension to have parametrized unit tests")
13914 (description
13915 "This package allows to create parametrized unit-tests that work with the standard
13916unittest package. A parametrized test case is automatically converted to multiple test
13917cases. Since they are TestCase subclasses, they work with other test suites that
13918recognize TestCases.")
13919 (license license:bsd-2)))
13920
13921(define-public python2-python-paramunittest
13922 (package-with-python2 python-paramunittest))
eec21d4b
MFM
13923
13924(define-public python-mando
13925 (package
13926 (name "python-mando")
13927 (version "0.5")
13928 (source
13929 (origin
13930 (method url-fetch)
13931 (uri (pypi-uri "mando" version))
13932 (sha256
13933 (base32
13934 "0q05h66439gqdmlk4jqm6xrwrzfdgs4mwk70barxhr2y83qbbdc0"))))
13935 (build-system python-build-system)
13936 (propagated-inputs
13937 `(("python-rst2ansi" ,python-rst2ansi)))
13938 (native-inputs
13939 `(("python-sphinx" ,python-sphinx-1.5.3)
13940 ("python-paramunittest" ,python-paramunittest)))
13941 (home-page "https://mando.readthedocs.org/")
13942 (synopsis
13943 "Wrapper around argparse, allowing creation of complete CLI applications")
13944 (description
13945 "This package is a wrapper around argparse, allowing you to write complete CLI
13946 applications in seconds while maintaining all the flexibility.")
13947 (license license:expat)))
13948
13949(define-public python2-mando
13950 (package-with-python2 python-mando))
b98d4ec0
MFM
13951
13952(define-public python-mando-0.3.1
13953 ;; python-radon (version 1.5.0) has a requirement
13954 ;; for mando<0.4,>=0.3
13955 (package
13956 (inherit python-mando)
13957 (name "python-mando")
13958 (version "0.3.1")
13959 (source
13960 (origin
13961 (method url-fetch)
13962 (uri (string-append "https://github.com/rubik/mando/archive/v"
13963 version
13964 ".tar.gz"))
13965 (sha256
13966 (base32
13967 "17jlkdpqw22z1nyml5ybslilqkzmnk0dxxjml8bfghav1l5hbwd2"))))))