gnu: python2-ttystatus: Enable tests.
[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>
d92621cf 10;;; Copyright © 2015, 2016, 2017 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>
ca0e62bf 30;;; Copyright © 2016, 2017 Stefan Reichör <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>
f9f67fcb 39;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
16fe516e 40;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
a5e8f597 41;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
3015d455 42;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
fa3f5f47 43;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
3c8ba11a 44;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
f817b4d9 45;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
3fee0039 46;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
a01b6da7
NK
47;;;
48;;; This file is part of GNU Guix.
49;;;
50;;; GNU Guix is free software; you can redistribute it and/or modify it
51;;; under the terms of the GNU General Public License as published by
52;;; the Free Software Foundation; either version 3 of the License, or (at
53;;; your option) any later version.
54;;;
55;;; GNU Guix is distributed in the hope that it will be useful, but
56;;; WITHOUT ANY WARRANTY; without even the implied warranty of
57;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
58;;; GNU General Public License for more details.
59;;;
60;;; You should have received a copy of the GNU General Public License
61;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
62
1ffa7090 63(define-module (gnu packages python)
3f641af0 64 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 65 #:use-module (gnu packages)
8e451885 66 #:use-module (gnu packages algebra)
d79a343b 67 #:use-module (gnu packages adns)
89b2e0b0 68 #:use-module (gnu packages attr)
d96034ed 69 #:use-module (gnu packages backup)
3969ca54 70 #:use-module (gnu packages bash)
1ffa7090 71 #:use-module (gnu packages compression)
dc1bd2b5 72 #:use-module (gnu packages crypto)
4ed20663 73 #:use-module (gnu packages databases)
ddc63a56 74 #:use-module (gnu packages django)
5e1c9367 75 #:use-module (gnu packages file)
4ed20663 76 #:use-module (gnu packages fontutils)
4ed20663
AE
77 #:use-module (gnu packages gcc)
78 #:use-module (gnu packages ghostscript)
6eb7af2a 79 #:use-module (gnu packages gl)
4ed20663 80 #:use-module (gnu packages glib)
c227458a 81 #:use-module (gnu packages graphviz)
6eb7af2a 82 #:use-module (gnu packages gstreamer)
4ed20663 83 #:use-module (gnu packages gtk)
421a80a2 84 #:use-module (gnu packages icu4c)
c937562e 85 #:use-module (gnu packages image)
4ed20663 86 #:use-module (gnu packages imagemagick)
d79a343b 87 #:use-module (gnu packages libevent)
b10ab723 88 #:use-module (gnu packages libffi)
89b2e0b0 89 #:use-module (gnu packages linux)
ed118043 90 #:use-module (gnu packages man)
0da98533 91 #:use-module (gnu packages maths)
4ed20663 92 #:use-module (gnu packages multiprecision)
45203542 93 #:use-module (gnu packages networking)
be7134bf 94 #:use-module (gnu packages ncurses)
b04a52a6 95 #:use-module (gnu packages openstack)
d488d5d6 96 #:use-module (gnu packages password-utils)
c9b1b4f9 97 #:use-module (gnu packages pcre)
4ed20663 98 #:use-module (gnu packages perl)
b10ab723 99 #:use-module (gnu packages pkg-config)
06ff0837 100 #:use-module (gnu packages protobuf)
4535a93a 101 #:use-module (gnu packages qt)
4ed20663 102 #:use-module (gnu packages readline)
6eb7af2a 103 #:use-module (gnu packages sdl)
5f94ec91 104 #:use-module (gnu packages search)
80ce42bd 105 #:use-module (gnu packages shells)
7ea498e5 106 #:use-module (gnu packages ssh)
c9b1b4f9 107 #:use-module (gnu packages statistics)
8f9ac901 108 #:use-module (gnu packages tex)
1c65314c 109 #:use-module (gnu packages texinfo)
cc2b77df 110 #:use-module (gnu packages tls)
e25f0174 111 #:use-module (gnu packages version-control)
02f8f804 112 #:use-module (gnu packages video)
8d12be1e 113 #:use-module (gnu packages web)
ce0614dd 114 #:use-module (gnu packages base)
26b307e2 115 #:use-module (gnu packages xml)
6fa14469 116 #:use-module (gnu packages xorg)
0bdc1671 117 #:use-module (gnu packages xdisorg)
afa181ff 118 #:use-module (gnu packages tcl)
63bcec71 119 #:use-module (gnu packages bdw-gc)
a01b6da7
NK
120 #:use-module (guix packages)
121 #:use-module (guix download)
ea5456c8 122 #:use-module (guix git-download)
11bb85a1 123 #:use-module (guix utils)
acc26ff1 124 #:use-module (guix build-system gnu)
d8c4998f 125 #:use-module (guix build-system cmake)
898238b9 126 #:use-module (guix build-system python)
1c65314c
FB
127 #:use-module (guix build-system trivial)
128 #:use-module (srfi srfi-1))
a01b6da7 129
45848023 130(define-public python-2.7
a01b6da7
NK
131 (package
132 (name "python")
49c2a46e 133 (version "2.7.13")
a01b6da7
NK
134 (source
135 (origin
136 (method url-fetch)
9b43a0ff 137 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
138 version "/Python-" version ".tar.xz"))
139 (sha256
140 (base32
49c2a46e 141 "0cgpk3zk0fgpji59pb4zy9nzljr70qzgv1vpz5hq5xw2d2c47m9m"))
c3052d6b
ML
142 (patches (search-patches "python-2.7-search-paths.patch"
143 "python-2-deterministic-build-info.patch"
15e57f57 144 "python-2.7-site-prefixes.patch"
dc5cec21
LF
145 "python-2.7-source-date-epoch.patch"
146 "python-2.7-getentropy-on-old-kernels.patch"))
10a42aa2
EF
147 (modules '((guix build utils)))
148 ;; suboptimal to delete failing tests here, but if we delete them in the
149 ;; arguments then we need to make sure to strip out that phase when it
150 ;; gets inherited by python and python-minimal.
151 (snippet
152 '(begin
153 (for-each delete-file
154 '("Lib/test/test_compileall.py"
f0499100 155 "Lib/test/test_ctypes.py" ; fails on mips64el
10a42aa2
EF
156 "Lib/test/test_distutils.py"
157 "Lib/test/test_import.py"
158 "Lib/test/test_shutil.py"
159 "Lib/test/test_socket.py"
1bb163b0 160 "Lib/test/test_subprocess.py"))
10a42aa2 161 #t))))
02f0c3b2
LC
162 (outputs '("out"
163 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 164 (build-system gnu-build-system)
3fdc99da 165 (arguments
10a42aa2 166 `(;; 356 tests OK.
e7e7a1eb
EF
167 ;; 6 tests failed:
168 ;; test_compileall test_distutils test_import test_shutil test_socket
169 ;; test_subprocess
170 ;; 39 tests skipped:
ff6f33cf
ED
171 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
172 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
173 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
174 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
175 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
176 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
177 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
178 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
179 ;; test_winreg test_winsound test_zipfile64
180 ;; 4 skips unexpected on linux2:
181 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 182 #:test-target "test"
3fdc99da 183 #:configure-flags
6a20289d
LC
184 (list "--enable-shared" ;allow embedding
185 "--with-system-ffi" ;build ctypes
aaf75c89 186 "--with-ensurepip=install" ;install pip and setuptools
a282d7ff 187 "--enable-unicode=ucs4"
6a20289d
LC
188 (string-append "LDFLAGS=-Wl,-rpath="
189 (assoc-ref %outputs "out") "/lib"))
fd982732 190
d2cc9c7c
LC
191 #:modules ((ice-9 ftw) (ice-9 match)
192 (guix build utils) (guix build gnu-build-system))
fd982732 193 #:phases
46472ecd
MW
194 (modify-phases %standard-phases
195 (add-before
196 'configure 'patch-lib-shells
197 (lambda _
198 ;; Filter for existing files, since some may not exist in all
199 ;; versions of python that are built with this recipe.
200 (substitute* (filter file-exists?
201 '("Lib/subprocess.py"
202 "Lib/popen2.py"
203 "Lib/distutils/tests/test_spawn.py"
204 "Lib/test/test_subprocess.py"))
205 (("/bin/sh") (which "sh")))
dedc8320
LC
206
207 ;; Use zero as the timestamp in .pyc files so that builds are
208 ;; deterministic. TODO: Remove it when this variable is set in
209 ;; gnu-build-system.scm.
a665996f 210 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 211 #t))
5b4e2791
LC
212 (add-before 'configure 'do-not-record-configure-flags
213 (lambda* (#:key configure-flags #:allow-other-keys)
214 ;; Remove configure flags from the installed '_sysconfigdata.py'
215 ;; and 'Makefile' so we don't end up keeping references to the
216 ;; build tools.
217 ;;
218 ;; Preserve at least '--with-system-ffi' since otherwise the
219 ;; thing tries to build libffi, fails, and we end up with a
220 ;; Python that lacks ctypes.
221 (substitute* "configure"
222 (("^CONFIG_ARGS=.*$")
223 (format #f "CONFIG_ARGS='~a'\n"
224 (if (member "--with-system-ffi" configure-flags)
225 "--with-system-ffi"
226 ""))))
227 #t))
46472ecd
MW
228 (add-before
229 'check 'pre-check
230 (lambda _
231 ;; 'Lib/test/test_site.py' needs a valid $HOME
232 (setenv "HOME" (getcwd))
233 #t))
234 (add-after
235 'unpack 'set-source-file-times-to-1980
236 ;; XXX One of the tests uses a ZIP library to pack up some of the
237 ;; source tree, and fails with "ZIP does not support timestamps
238 ;; before 1980". Work around this by setting the file times in the
239 ;; source tree to sometime in early 1980.
240 (lambda _
241 (let ((circa-1980 (* 10 366 24 60 60)))
242 (ftw "." (lambda (file stat flag)
243 (utime file circa-1980 circa-1980)
244 #t))
02f0c3b2 245 #t)))
9ffe61b0
LC
246 (add-after 'install 'remove-tests
247 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
248 ;; because these files are used by some libraries out there.
249 (lambda* (#:key outputs #:allow-other-keys)
250 (let ((out (assoc-ref outputs "out")))
251 (match (scandir (string-append out "/lib")
252 (lambda (name)
253 (string-prefix? "python" name)))
254 ((pythonX.Y)
255 (let ((testdir (string-append out "/lib/" pythonX.Y
256 "/test")))
257 (with-directory-excursion testdir
258 (for-each delete-file-recursively
259 (scandir testdir
260 (match-lambda
261 ((or "." "..") #f)
262 (file
263 (not
264 (string-prefix? "test_support."
265 file))))))
266 (call-with-output-file "__init__.py" (const #t))
267 #t)))))))
216c283b
LC
268 (add-before 'strip 'make-libraries-writable
269 (lambda* (#:key outputs #:allow-other-keys)
270 ;; Make .so files writable so they can be stripped.
271 (let ((out (assoc-ref outputs "out")))
272 (for-each (lambda (file)
273 (chmod file #o755))
274 (find-files (string-append out "/lib")
275 "\\.so"))
276 #t)))
02f0c3b2
LC
277 (add-after 'install 'move-tk-inter
278 (lambda* (#:key outputs #:allow-other-keys)
279 ;; When Tkinter support is built move it to a separate output so
280 ;; that the main output doesn't contain a reference to Tcl/Tk.
281 (let ((out (assoc-ref outputs "out"))
282 (tk (assoc-ref outputs "tk")))
283 (when tk
284 (match (find-files out "tkinter.*\\.so")
285 ((tkinter.so)
286 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
287 ;; want it under TK/lib/pythonX.Y/site-packages.
288 (let* ((len (string-length out))
289 (target (string-append
290 tk "/"
291 (string-drop
292 (dirname (dirname tkinter.so))
293 len)
294 "/site-packages")))
295 (install-file tkinter.so target)
296 (delete-file tkinter.so)))))
297 #t))))))
a01b6da7 298 (inputs
3fdc99da
CR
299 `(("bzip2" ,bzip2)
300 ("gdbm" ,gdbm)
b10ab723 301 ("libffi" ,libffi) ; for ctypes
b88e1b0a 302 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 303 ("openssl" ,openssl)
3fdc99da 304 ("readline" ,readline)
afa181ff
LC
305 ("zlib" ,zlib)
306 ("tcl" ,tcl)
307 ("tk" ,tk))) ; for tkinter
b10ab723
CR
308 (native-inputs
309 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
310 (native-search-paths
311 (list (search-path-specification
312 (variable "PYTHONPATH")
af070955 313 (files '("lib/python2.7/site-packages")))))
f0499100 314 (home-page "https://www.python.org")
afa181ff 315 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
316 (description
317 "Python is a remarkably powerful dynamic programming language that
318is used in a wide variety of application domains. Some of its key
319distinguishing features include: clear, readable syntax; strong
320introspection capabilities; intuitive object orientation; natural
321expression of procedural code; full modularity, supporting hierarchical
322packages; exception-based error handling; and very high level dynamic
323data types.")
3f641af0 324 (license license:psfl)))
acc26ff1 325
45848023
HG
326;; Current 2.x version.
327(define-public python-2 python-2.7)
328
72df6680 329(define-public python-3.5
b24d1cfc 330 (package (inherit python-2)
343cee8a 331 (version "3.5.3")
717003e3
LC
332 (source (origin
333 (method url-fetch)
334 (uri (string-append "https://www.python.org/ftp/python/"
335 version "/Python-" version ".tar.xz"))
fc1adab1
AK
336 (patches (search-patches
337 "python-fix-tests.patch"
72df6680 338 "python-3.5-fix-tests.patch"
e4d34cd0 339 "python-3.5-getentropy-on-old-kernels.patch"
fc1adab1
AK
340 "python-3-deterministic-build-info.patch"
341 "python-3-search-paths.patch"))
717003e3
LC
342 (patch-flags '("-p0"))
343 (sha256
344 (base32
343cee8a 345 "1c6v1n9nz4mlx9mw1125fxpmbrgniqdbbx9hnqx44maqazb2mzpf"))
fd615918 346 (snippet
e46e9573
EF
347 '(begin
348 (for-each delete-file
349 '("Lib/ctypes/test/test_win32.py" ; fails on aarch64
350 "Lib/test/test_fcntl.py"))
351 #t))))
1f434457
MW
352 (arguments (substitute-keyword-arguments (package-arguments python-2)
353 ((#:tests? _) #t)))
1aebc0cb
AE
354 (native-search-paths
355 (list (search-path-specification
356 (variable "PYTHONPATH")
0e05d01e
SB
357 (files (list (string-append "lib/python"
358 (version-major+minor version)
359 "/site-packages"))))))))
f26a77ff 360
45848023 361;; Current 3.x version.
72df6680 362(define-public python-3 python-3.5)
45848023
HG
363
364;; Current major version.
365(define-public python python-3)
366
95288fcc
LC
367;; Minimal variants of Python, mostly used to break the cycle between Tk and
368;; Python (Tk -> libxcb -> Python.)
369
370(define-public python2-minimal
371 (package (inherit python-2)
372 (name "python-minimal")
02f0c3b2 373 (outputs '("out"))
5927a843
LC
374
375 ;; Keep zlib, which is used by 'pip' (via the 'zipimport' module), which
376 ;; is invoked upon 'make install'. 'pip' also expects 'ctypes' and thus
377 ;; libffi.
378 (inputs `(("libffi" ,libffi)
379 ("zlib" ,zlib)))))
95288fcc
LC
380
381(define-public python-minimal
898238b9 382 (package (inherit python)
95288fcc 383 (name "python-minimal")
02f0c3b2 384 (outputs '("out"))
95288fcc 385
d0b73960 386 ;; Build fails due to missing ctypes without libffi.
95288fcc
LC
387 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
388 ;; zlib is required by 'zipimport', used by pip.
d0b73960
CAW
389 (inputs `(("libffi" ,libffi)
390 ("openssl" ,openssl)
95288fcc
LC
391 ("zlib" ,zlib)))))
392
64cb064c
LC
393(define* (wrap-python3 python
394 #:optional
395 (name (string-append (package-name python) "-wrapper")))
898238b9 396 (package (inherit python)
95288fcc 397 (name name)
898238b9
AE
398 (source #f)
399 (build-system trivial-build-system)
02f0c3b2 400 (outputs '("out"))
3969ca54 401 (inputs `(("bash" ,bash)))
3c0f2329 402 (propagated-inputs `(("python" ,python)))
898238b9
AE
403 (arguments
404 `(#:modules ((guix build utils))
405 #:builder
406 (begin
407 (use-modules (guix build utils))
408 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
409 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
410 (mkdir-p bin)
411 (for-each
412 (lambda (old new)
413 (symlink (string-append python old)
414 (string-append bin "/" new)))
3969ca54
SB
415 `("python3" ,"pydoc3" ,"idle3" ,"pip3")
416 `("python" ,"pydoc" ,"idle" ,"pip"))
417 ;; python-config outputs search paths based upon its location,
418 ;; use a bash wrapper to avoid changing its outputs.
419 (let ((bash (string-append (assoc-ref %build-inputs "bash")
420 "/bin/bash"))
421 (old (string-append python "python3-config"))
422 (new (string-append bin "/python-config")))
423 (with-output-to-file new
424 (lambda ()
425 (format #t "#!~a~%" bash)
426 (format #t "exec \"~a\" \"$@\"~%" old)
427 (chmod new #o755)
428 #t)))))))
0d56e3e1
LC
429 (synopsis "Wrapper for the Python 3 commands")
430 (description
431 "This package provides wrappers for the commands of Python@tie{}3.x such
432that they can be invoked under their usual name---e.g., @command{python}
433instead of @command{python3}.")))
434
95288fcc
LC
435(define-public python-wrapper (wrap-python3 python))
436(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 437
aaf625b8
RW
438(define-public python-psutil
439 (package
440 (name "python-psutil")
88535a44 441 (version "4.3.0")
aaf625b8
RW
442 (source
443 (origin
444 (method url-fetch)
f56777be 445 (uri (pypi-uri "psutil" version))
aaf625b8
RW
446 (sha256
447 (base32
88535a44 448 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8 449 (build-system python-build-system)
fb08c4fe
MB
450 (arguments
451 ;; FIXME: some tests does not return and times out.
452 '(#:tests? #f))
88535a44 453 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
454 (synopsis "Library for retrieving information on running processes")
455 (description
456 "psutil (Python system and process utilities) is a library for retrieving
457information on running processes and system utilization (CPU, memory, disks,
458network) in Python. It is useful mainly for system monitoring, profiling and
459limiting process resources and management of running processes. It implements
460many functionalities offered by command line tools such as: ps, top, lsof,
461netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
462pidof, tty, taskset, pmap.")
3f641af0 463 (license license:bsd-3)))
aaf625b8
RW
464
465(define-public python2-psutil
466 (package-with-python2 python-psutil))
898238b9 467
f9da1d8a
ED
468(define-public python-passlib
469 (package
470 (name "python-passlib")
3b86a385 471 (version "1.7.1")
f9da1d8a
ED
472 (source
473 (origin
474 (method url-fetch)
690e8c66 475 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
476 (sha256
477 (base32
3b86a385 478 "1q2khqpj9rlcgdmkypjdq1kswvhjf72bq0zk2cv669cc2dj8z51x"))))
f9da1d8a
ED
479 (build-system python-build-system)
480 (native-inputs
f3b98f4f 481 `(("python-nose" ,python-nose)))
f22efa01 482 (propagated-inputs
f9da1d8a
ED
483 `(("python-py-bcrypt" ,python-py-bcrypt)))
484 (arguments
485 `(#:phases
486 (alist-cons-before
487 'check 'set-PYTHON_EGG_CACHE
488 ;; some tests require access to "$HOME/.cython"
489 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
490 %standard-phases)))
491 (home-page "https://bitbucket.org/ecollins/passlib")
492 (synopsis
493 "Comprehensive password hashing framework")
494 (description
495 "Passlib is a password hashing library for Python 2 & 3, which provides
496cross-platform implementations of over 30 password hashing algorithms, as well
497as a framework for managing existing password hashes. It's designed to be
498useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
499to providing full-strength password hashing for multi-user application.")
3f641af0 500 (license license:bsd-3)))
f9da1d8a
ED
501
502(define-public python2-passlib
503 (package-with-python2 python-passlib))
504
feb0d9c3
ED
505(define-public python-py-bcrypt
506 (package
507 (name "python-py-bcrypt")
508 (version "0.4")
509 (source
510 (origin
511 (method url-fetch)
512 (uri (string-append
513 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
514 version
515 ".tar.gz"))
516 (sha256
517 (base32
518 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
519 (build-system python-build-system)
feb0d9c3
ED
520 (home-page "https://code.google.com/p/py-bcrypt")
521 (synopsis
522 "Bcrypt password hashing and key derivation")
523 (description
524 "A python wrapper of OpenBSD's Blowfish password hashing code. This
525system hashes passwords using a version of Bruce Schneier's Blowfish block
526cipher with modifications designed to raise the cost of off-line password
527cracking and frustrate fast hardware implementation. The computation cost of
528the algorithm is parametised, so it can be increased as computers get faster.
529The intent is to make a compromise of a password database less likely to
530result in an attacker gaining knowledge of the plaintext passwords (e.g. using
531John the Ripper).")
532 ;; "sha2.c" is under BSD-3;
533 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
534 ;; the rest is under ISC.
3f641af0 535 (license (list license:isc license:bsd-3 license:bsd-4))))
feb0d9c3
ED
536
537(define-public python2-py-bcrypt
538 (package-with-python2 python-py-bcrypt))
539
540
429fdea1
ED
541(define-public python-paramiko
542 (package
543 (name "python-paramiko")
b22cdf0c 544 (version "2.1.2")
429fdea1
ED
545 (source
546 (origin
547 (method url-fetch)
81b9bbbd 548 (uri (pypi-uri "paramiko" version))
429fdea1
ED
549 (sha256
550 (base32
b22cdf0c 551 "04734n0wy3hxk6rij4fr29in5jmr70nxpc7pqi2ksbjysfz4kbjz"))))
429fdea1 552 (build-system python-build-system)
49910e6a 553 (arguments
b22cdf0c
SB
554 '(#:phases
555 (modify-phases %standard-phases
556 (replace 'check
557 (lambda _
558 (zero? (system* "python" "test.py")))))))
a3fc12da 559 (propagated-inputs
b22cdf0c
SB
560 `(("python-pyasn1" ,python-pyasn1)
561 ("python-cryptography" ,python-cryptography)))
429fdea1
ED
562 (home-page "http://www.paramiko.org/")
563 (synopsis "SSHv2 protocol library")
564 (description "Paramiko is a python implementation of the SSHv2 protocol,
565providing both client and server functionality. While it leverages a Python C
566extension for low level cryptography (PyCrypto), Paramiko itself is a pure
567Python interface around SSH networking concepts.")
3f641af0 568 (license license:lgpl2.1+)))
429fdea1
ED
569
570(define-public python2-paramiko
571 (package-with-python2 python-paramiko))
572
573
de73dbf6
ED
574(define-public python-httplib2
575 (package
576 (name "python-httplib2")
286f1bac 577 (version "0.9.2")
de73dbf6
ED
578 (source
579 (origin
580 (method url-fetch)
286f1bac 581 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
582 (sha256
583 (base32
286f1bac 584 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6 585 (build-system python-build-system)
286f1bac 586 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
587 (synopsis "Comprehensive HTTP client library")
588 (description
589 "A comprehensive HTTP client library supporting many features left out of
590other HTTP libraries.")
591 (license license:expat)))
592
593(define-public python2-httplib2
594 (package-with-python2 python-httplib2))
595
67039875
ED
596(define-public python-ecdsa
597 (package
598 (name "python-ecdsa")
599 (version "0.13")
600 (source
601 (origin
602 (method url-fetch)
603 (uri (string-append
604 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
605 version
606 ".tar.gz"))
607 (sha256
608 (base32
609 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
610 (build-system python-build-system)
67039875
ED
611 (inputs
612 `(("openssl" ,openssl)))
613 (home-page
7bf837fd 614 "https://github.com/warner/python-ecdsa")
67039875
ED
615 (synopsis
616 "ECDSA cryptographic signature library (pure python)")
617 (description
618 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
619Curve Digital Signature Algorithm), implemented purely in Python. With this
620library, you can quickly create keypairs (signing key and verifying key), sign
621messages, and verify the signatures. The keys and signatures are very short,
622making them easy to handle and incorporate into other protocols.")
623 (license license:expat)))
624
625(define-public python2-ecdsa
626 (package-with-python2 python-ecdsa))
627
52323f32
ED
628(define-public python-ccm
629 (package
630 (name "python-ccm")
db5567f7 631 (version "2.1.6")
52323f32
ED
632 (source
633 (origin
634 (method url-fetch)
db5567f7 635 (uri (pypi-uri "ccm" version))
52323f32
ED
636 (sha256
637 (base32
db5567f7 638 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32 639 (build-system python-build-system)
f22efa01 640 (propagated-inputs
52323f32 641 `(("python-pyyaml" ,python-pyyaml)
e165f137
HG
642 ;; Not listed in setup.py, but used in ccmlib/node.py for full
643 ;; functionality
644 ("python-psutil" ,python-psutil)
52323f32
ED
645 ("python-six" ,python-six)))
646 (home-page "https://github.com/pcmanus/ccm")
d9a6e221
HG
647 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
648localhost")
649 (description "Cassandra Cluster Manager is a development tool for testing
650local Cassandra clusters. It creates, launches and removes Cassandra clusters
651on localhost.")
3f641af0 652 (license license:asl2.0)))
52323f32
ED
653
654(define-public python2-ccm
655 (package-with-python2 python-ccm))
656
89114f39 657(define-public python-pytz
acc26ff1 658 (package
89114f39 659 (name "python-pytz")
3fee0039 660 (version "2017.2")
acc26ff1
CR
661 (source
662 (origin
663 (method url-fetch)
3fee0039 664 (uri (pypi-uri "pytz" version ".zip"))
acc26ff1
CR
665 (sha256
666 (base32
3fee0039 667 "12cmd3j46d2gcw08bspvp6s9icfcvx88zjz52n1bli9dyvl5dh7m"))))
acc26ff1 668 (build-system python-build-system)
3fee0039
MFM
669 (native-inputs
670 `(("unzip" ,unzip)))
b01bbbcf 671 (home-page "http://pythonhosted.org/pytz")
9e771e3b 672 (synopsis "Python timezone library")
3fee0039
MFM
673 (description "This library brings the Olson tz database into Python. It
674allows accurate and cross platform timezone calculations using Python 2.4 or
675higher. It also solves the issue of ambiguous times at the end of daylight
676saving time. Almost all of the Olson timezones are supported.")
b01bbbcf 677 (license license:expat)))
5ace6e2f 678
89114f39 679(define-public python2-pytz
11bb85a1 680 (package-with-python2 python-pytz))
89114f39 681
1f84ff51
MFM
682(define-public python-clyent
683 (package
684 (name "python-clyent")
685 (version "1.2.1")
686 (source
687 (origin
688 (method url-fetch)
689 (uri (pypi-uri "clyent" version))
690 (sha256
691 (base32
692 "1r9987qmy1pz3hq54160bapqsywpq14waw4w9x3ly8hmq7kpgfbj"))))
693 (build-system python-build-system)
694 (native-inputs
695 `(("python-mock" ,python-mock)))
696 (home-page "https://github.com/binstar/clyent")
697 (synopsis "Command line client library")
698 (description "Clyent is a Python command line utiliy library. It is used
699by @code{binstar}, @code{binstar-build} and @code{chalmers}.")
700 (license license:bsd-3)))
701
702(define-public python2-clyent
703 (package-with-python2 python-clyent))
704
89114f39 705(define-public python-babel
5ace6e2f 706 (package
89114f39 707 (name "python-babel")
ffb1e98d 708 (version "2.3.4")
5ace6e2f
CR
709 (source
710 (origin
711 (method url-fetch)
b850a6d8 712 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
713 (sha256
714 (base32
ffb1e98d 715 "0x98qqqw35xllpcama013a9788ly84z8dm1w2wwfpxh2710c8df5"))))
5ace6e2f 716 (build-system python-build-system)
f22efa01 717 (propagated-inputs
f3b98f4f 718 `(("python-pytz" ,python-pytz)))
8498b8cf 719 (arguments `(#:tests? #f)) ; no test target
e1804763 720 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
721 (synopsis
722 "Tools for internationalizing Python applications")
723 (description
724 "Babel is composed of two major parts:
725- tools to build and work with gettext message catalogs
726- a Python interface to the CLDR (Common Locale Data Repository), providing
727access to various locale display names, localized number and date formatting,
728etc. ")
3f641af0 729 (license license:bsd-3)))
89114f39
AE
730
731(define-public python2-babel
11bb85a1 732 (package-with-python2 python-babel))
73adf220 733
ed377cc6
RW
734(define-public python2-backport-ssl-match-hostname
735 (package
736 (name "python2-backport-ssl-match-hostname")
f2d06d46 737 (version "3.5.0.1")
ed377cc6
RW
738 (source
739 (origin
740 (method url-fetch)
741 (uri (string-append
742 "https://pypi.python.org/packages/source/b/"
743 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
744 version ".tar.gz"))
745 (sha256
746 (base32
f2d06d46 747 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 748 (build-system python-build-system)
f2d06d46
EF
749 (arguments
750 `(#:python ,python-2
751 #:tests? #f)) ; no test target
f2d06d46
EF
752 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
753 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
754 (description
755 "This backport brings the ssl.match_hostname() function to users of
756earlier versions of Python. The function checks the hostname in the
757certificate returned by the server to which a connection has been established,
758and verifies that it matches the intended target hostname.")
3f641af0 759 (license license:psfl)))
ed377cc6 760
d205f895
TD
761(define-public python-hdf4
762 (package
763 (name "python-hdf4")
764 (version "0.9")
765 (source
766 (origin
767 (method url-fetch)
768 (uri (pypi-uri name version))
769 (sha256
770 (base32
771 "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
772 (build-system python-build-system)
773 (native-inputs `(("nose" ,python-nose)))
774 (propagated-inputs `(("numpy" ,python-numpy)))
775 (inputs
776 `(("hdf4" ,hdf4)
777 ("libjpeg" ,libjpeg)
778 ("zlib" ,zlib)))
779 (arguments
780 `(#:phases
781 (modify-phases %standard-phases
782 (replace 'check
783 (lambda _
784 ;; The 'runexamples' script sets PYTHONPATH to CWD, then goes
785 ;; on to import numpy. Somehow this works on their CI system.
786 ;; Let's just manage PYTHONPATH here instead.
787 (substitute* "runexamples.sh"
788 (("export PYTHONPATH=.*") ""))
789 (setenv "PYTHONPATH"
790 (string-append (getcwd) ":"
791 (getenv "PYTHONPATH")))
792 (and (zero? (system* "./runexamples.sh"))
793 (zero? (system* "nosetests" "-v"))))))))
794 (home-page "https://github.com/fhs/python-hdf4")
795 (synopsis "Python interface to the NCSA HDF4 library")
796 (description
797 "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
798which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
799NetCDF files can also be read and modified. Python-HDF4 is a fork of
800@url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
801 (license license:expat)))
802
803(define-public python2-hdf4
804 (package-with-python2 python-hdf4))
805
ef5cbf9b
RW
806(define-public python-h5py
807 (package
808 (name "python-h5py")
5c78db62 809 (version "2.7.0")
ef5cbf9b
RW
810 (source
811 (origin
812 (method url-fetch)
fe147c41 813 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
814 (sha256
815 (base32
5c78db62 816 "0433sdv6xc9p7v1xs1gvbxp7p152ywi3nplgjb258q9fvw9469br"))))
ef5cbf9b 817 (build-system python-build-system)
797e1401
RW
818 (arguments
819 `(#:tests? #f ; no test target
820 #:phases
821 (modify-phases %standard-phases
822 (add-after 'unpack 'fix-hdf5-paths
823 (lambda* (#:key inputs #:allow-other-keys)
824 (let ((prefix (assoc-ref inputs "hdf5")))
825 (substitute* "setup_build.py"
826 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
827 (string-append "['" prefix "/lib" "']"))
828 (("'/opt/local/include', '/usr/local/include'")
829 (string-append "'" prefix "/include" "'")))
830 (substitute* "setup_configure.py"
831 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
832 (string-append "['" prefix "/lib" "']")))
833 #t))))))
3c4010b1 834 (propagated-inputs
69866690
HG
835 `(("python-six" ,python-six)
836 ("python-numpy" ,python-numpy)))
ef5cbf9b 837 (inputs
69866690 838 `(("hdf5" ,hdf5)))
ef5cbf9b 839 (native-inputs
fe147c41
EF
840 `(("python-cython" ,python-cython)
841 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
842 (home-page "http://www.h5py.org/")
843 (synopsis "Read and write HDF5 files from Python")
844 (description
845 "The h5py package provides both a high- and low-level interface to the
846HDF5 library from Python. The low-level interface is intended to be a
847complete wrapping of the HDF5 API, while the high-level component supports
848access to HDF5 files, datasets and groups using established Python and NumPy
849concepts.")
9820a028 850 (license license:bsd-3)))
ef5cbf9b
RW
851
852(define-public python2-h5py
9820a028 853 (package-with-python2 python-h5py))
ef5cbf9b 854
ea8450c8
TD
855(define-public python-netcdf4
856 (package
857 (name "python-netcdf4")
1206c95a 858 (version "1.2.9")
ea8450c8
TD
859 (source
860 (origin
861 (method url-fetch)
862 (uri (pypi-uri "netCDF4" version))
863 (sha256
864 (base32
1206c95a 865 "1h6jq338amlbk0ilzvjyl7cck80i0bah9a5spn9in71vy2qxm7i5"))))
ea8450c8
TD
866 (build-system python-build-system)
867 (native-inputs
868 `(("python-cython" ,python-cython)))
869 (propagated-inputs
870 `(("python-numpy" ,python-numpy)))
871 (inputs
872 `(("netcdf" ,netcdf)
873 ("hdf4" ,hdf4)
874 ("hdf5" ,hdf5)))
875 (arguments
876 '(#:phases
877 (modify-phases %standard-phases
878 (replace 'check
879 (lambda _
880 (setenv "NO_NET" "1") ; disable opendap tests
881 (with-directory-excursion "test"
882 (setenv "PYTHONPATH" ; find and add the library we just built
883 (string-append
884 (car (find-files "../build" "lib.*"
885 #:directories? #:t
886 #:fail-on-error? #:t))
887 ":" (getenv "PYTHONPATH")))
888 (zero? (system* "python" "run_all.py"))))))))
889 (home-page
890 "https://github.com/Unidata/netcdf4-python")
891 (synopsis "Python/numpy interface to the netCDF library")
892 (description "Netcdf4-python is a Python interface to the netCDF C
893library. netCDF version 4 has many features not found in earlier
894versions of the library and is implemented on top of HDF5. This module
895can read and write files in both the new netCDF 4 and the old netCDF 3
896format, and can create files that are readable by HDF5 clients. The
897API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
898to users of that module.")
899 ;; The software is mainly ISC, but includes some files covered
900 ;; by the Expat license.
901 (license (list license:isc license:expat))))
902
903(define-public python2-netcdf4
904 (package-with-python2 python-netcdf4))
905
c1448c69
EB
906(define-public python-lockfile
907 (package
908 (name "python-lockfile")
692add53 909 (version "0.12.2")
c1448c69
EB
910 (source
911 (origin
912 (method url-fetch)
913 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
914 "lockfile-" version ".tar.gz"))
915 (sha256
916 (base32
692add53 917 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
918 (build-system python-build-system)
919 (arguments '(#:test-target "check"))
692add53
BW
920 (native-inputs
921 `(("python-pbr" ,python-pbr)))
6a8f26a4 922 (home-page "https://launchpad.net/pylockfile")
c1448c69
EB
923 (synopsis "Platform-independent file locking module")
924 (description
925 "The lockfile package exports a LockFile class which provides a simple
926API for locking files.")
f210e944 927 (license license:expat)))
c1448c69
EB
928
929(define-public python2-lockfile
f210e944 930 (package-with-python2 python-lockfile))
c1448c69 931
5a1a4bf6
EB
932(define-public python-mock
933 (package
934 (name "python-mock")
935 (version "1.0.1")
936 (source
937 (origin
938 (method url-fetch)
6b7877e1 939 (uri (pypi-uri "mock" version))
5a1a4bf6
EB
940 (sha256
941 (base32
942 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
943 (build-system python-build-system)
944 (arguments '(#:test-target "check"))
6b7877e1 945 (home-page "https://github.com/testing-cabal/mock")
9e771e3b 946 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
947 (description
948 "Mock is a library for testing in Python. It allows you to replace parts
949of your system under test with mock objects and make assertions about how they
950have been used.")
bd3fa666 951 (license license:expat)))
5a1a4bf6
EB
952
953(define-public python2-mock
954 (package-with-python2 python-mock))
955
731b0c72
LF
956;;; Some packages (notably, certbot and python-acme) rely on this newer version
957;;; of python-mock. However, a large number of packages fail to build with
958;;; mock@2, so we add a new variable for now. Also, there may be a dependency
959;;; cycle between mock and six, so we avoid creating python2-mock@2 for now.
960(define-public python-mock-2
961 (package
962 (inherit python-mock)
963 (version "2.0.0")
964 (source
965 (origin
966 (method url-fetch)
967 (uri (pypi-uri "mock" version))
968 (sha256
969 (base32
970 "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i"))))
971 (propagated-inputs
972 `(("python-pbr" ,python-pbr-minimal)
973 ,@(package-propagated-inputs python-mock)))))
fc50e9c6 974
73adf220
AE
975(define-public python-setuptools
976 (package
977 (name "python-setuptools")
d660f7be 978 (version "31.0.0")
73adf220
AE
979 (source
980 (origin
981 (method url-fetch)
d660f7be 982 (uri (pypi-uri "setuptools" version))
73adf220
AE
983 (sha256
984 (base32
d660f7be 985 "0ypybh4hx3bv4vhg2dc74xpj1g56ggnaffm87k4abhwjwq6wq608"))
e0ed4579
HG
986 (modules '((guix build utils)))
987 (snippet
988 '(begin
989 ;; Remove included binaries which are used to build self-extracting
990 ;; installers for Windows.
991 ;; TODO: Find some way to build them ourself so we can include them.
992 (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
993 #t))))
73adf220 994 (build-system python-build-system)
d3d656c5
AE
995 ;; FIXME: Tests require pytest, which itself relies on setuptools.
996 ;; One could bootstrap with an internal untested setuptools.
73adf220 997 (arguments
824af8ca 998 `(#:tests? #f))
73adf220
AE
999 (home-page "https://pypi.python.org/pypi/setuptools")
1000 (synopsis
1001 "Library designed to facilitate packaging Python projects")
1002 (description
1003 "Setuptools is a fully-featured, stable library designed to facilitate
1004packaging Python projects, where packaging includes:
1005Python package and module definitions,
1006distribution package metadata,
1007test hooks,
1008project installation,
1009platform-specific details,
1010Python 3 support.")
d660f7be
MB
1011 ;; TODO: setuptools now bundles the following libraries:
1012 ;; packaging, pyparsing, six and appdirs. How to unbundle?
1013 (license (list license:psfl ; setuptools itself
1014 license:expat ; six, appdirs, pyparsing
1015 license:asl2.0 ; packaging is dual ASL2/BSD-2
1016 license:bsd-2))))
73adf220
AE
1017
1018(define-public python2-setuptools
1019 (package-with-python2 python-setuptools))
fc50e9c6 1020
fa56c773
KK
1021(define-public python-uniseg
1022 (package
1023 (name "python-uniseg")
1024 (version "0.7.1")
1025 (source
1026 (origin
1027 (method url-fetch)
1028 (uri (string-append "https://bitbucket.org/emptypage/uniseg-python/"
1029 "get/rel-" version ".tar.gz"))
1030 (file-name (string-append name "-" version ".tar.gz"))
1031 (sha256
1032 (base32
1033 "1df4gddnj2a0v8z35wb2ra5vvh1f1qyxs8fgd25c8g64031mna6x"))))
1034 (build-system python-build-system)
1035 (arguments
1036 '(#:tests? #f)) ; The test suite requires network access.
1037 (home-page
1038 "https://bitbucket.org/emptypage/uniseg-python")
1039 (synopsis
1040 "Python library to determine Unicode text segmentations")
1041 (description
1042 "Uniseg is a Python package used to determine Unicode text segmentations.
1043Supported segmentations include:
1044@enumerate
1045@item @dfn{Code point} (any value in the Unicode codespace)
1046@item @dfn{Grapheme cluster} (user-perceived character made of a single or
1047multiple Unicode code points, e.g. \"G\" + acute-accent)
1048@item Word break
1049@item Sentence break
1050@item Line break
1051@end enumerate")
1052 (license license:expat)))
1053
1054(define-public python2-uniseg
1055 (package-with-python2 python-uniseg))
1056
aa21c764 1057;;; Pycrypto is abandoned upstream:
1194575b 1058;;;
aa21c764 1059;;; https://github.com/dlitz/pycrypto/issues/173
1194575b 1060;;;
aa21c764 1061;;; TODO Remove this package from GNU Guix.
cafc3f5a
EB
1062(define-public python-pycrypto
1063 (package
1064 (name "python-pycrypto")
1065 (version "2.6.1")
1066 (source
1067 (origin
1068 (method url-fetch)
aa21c764
LF
1069 (uri (pypi-uri "pycrypto" version))
1070 (patches (search-patches "python-pycrypto-CVE-2013-7459.patch"))
cafc3f5a
EB
1071 (sha256
1072 (base32
1073 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
1074 (build-system python-build-system)
cafc3f5a
EB
1075 (inputs
1076 `(("python" ,python)
1077 ("gmp" ,gmp)))
1078 (arguments
1079 `(#:phases
1080 (alist-cons-before
1081 'build 'set-build-env
1082 ;; pycrypto runs an autoconf configure script behind the scenes
1083 (lambda _
1084 (setenv "CONFIG_SHELL" (which "bash")))
1085 %standard-phases)))
1086 (home-page "http://www.pycrypto.org/")
1087 (synopsis "Cryptographic modules for Python")
1088 (description
1089 "Pycrypto is a collection of both secure hash functions (such as SHA256
1090and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 1091etc.). The package is structured to make adding new modules easy.")
3f641af0 1092 (license license:public-domain)))
cafc3f5a 1093
345f0611 1094(define-public python2-pycrypto
1c0059da
EF
1095 (let ((pycrypto (package-with-python2 python-pycrypto)))
1096 (package (inherit pycrypto)
1097 (inputs
1098 `(("python" ,python-2)
1099 ,@(alist-delete
1100 "python"
1101 (package-inputs pycrypto)))))))
345f0611 1102
de959250 1103(define-public python-eventlet
1104 (package
1105 (name "python-eventlet")
1106 (version "0.20.1")
1107 (source
1108 (origin
1109 (method url-fetch)
1110 (uri (pypi-uri "eventlet" version))
1111 (sha256
1112 (base32
1113 "0f3q55mq4n021wb7qa53pz3ix6i2py64sap66vsaqm2scjw83m9s"))))
1114 (build-system python-build-system)
1115 (propagated-inputs
1116 `(("python-greenlet" ,python-greenlet)))
5150d8b4
TGR
1117 (arguments
1118 ;; TODO: Requires unpackaged 'enum-compat'.
1119 '(#:tests? #f))
de959250 1120 (home-page "http://eventlet.net")
1121 (synopsis "Concurrent networking library for Python")
1122 (description
1123 "Eventlet is a concurrent networking library for Python that
1124allows you to change how you run your code, not how you write it.
1125It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
1126Coroutines ensure that the developer uses a blocking style of programming
1127that is similar to threading, but provide the benefits of non-blocking I/O.
1128The event dispatch is implicit, which means you can easily use @code{Eventlet}
1129from the Python interpreter, or as a small part of a larger application.")
1130 (license license:expat)))
1131
1132(define-public python2-eventlet
1133 (let ((base (package-with-python2
1134 (strip-python2-variant python-eventlet))))
1135 (package (inherit base)
1136 (propagated-inputs
1137 `(("python2-enum34" ,python2-enum34)
1138 ,@(package-propagated-inputs base))))))
1139
cafc3f5a
EB
1140(define-public python-keyring
1141 (package
1142 (name "python-keyring")
13f3ff35 1143 (version "8.7")
cafc3f5a
EB
1144 (source
1145 (origin
1146 (method url-fetch)
664e6c3a 1147 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
1148 (sha256
1149 (base32
13f3ff35 1150 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
1151 (build-system python-build-system)
1152 (native-inputs
13f3ff35 1153 `(("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 1154 (propagated-inputs
cafc3f5a
EB
1155 `(("python-pycrypto" ,python-pycrypto)))
1156 (arguments
664e6c3a 1157 `(#:tests? #f)) ;TODO: tests require pytest
190ba6c2 1158 (home-page "https://github.com/jaraco/keyring")
cafc3f5a
EB
1159 (synopsis "Store and access your passwords safely")
1160 (description
1161 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 1162service from python. It can be used in any application that needs safe
cafc3f5a
EB
1163password storage.")
1164 ;; "MIT" and PSF dual license
f210e944 1165 (license license:x11)))
cafc3f5a 1166
d7af1069 1167(define-public python2-keyring
f210e944 1168 (package-with-python2 python-keyring))
d7af1069 1169
a480bc41
EB
1170(define-public python-six
1171 (package
1172 (name "python-six")
b6ab89ef 1173 (version "1.10.0")
a480bc41
EB
1174 (source
1175 (origin
1176 (method url-fetch)
b6ab89ef 1177 (uri (pypi-uri "six" version))
a480bc41
EB
1178 (sha256
1179 (base32
b6ab89ef 1180 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41 1181 (build-system python-build-system)
4fd129ee
MB
1182 (native-inputs
1183 `(("python-py" ,python-py)
1184 ("python-pytest" ,python-pytest)))
a480bc41
EB
1185 (home-page "http://pypi.python.org/pypi/six/")
1186 (synopsis "Python 2 and 3 compatibility utilities")
1187 (description
35b9e423 1188 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
1189functions for smoothing over the differences between the Python versions with
1190the goal of writing Python code that is compatible on both Python versions.
35b9e423 1191Six supports every Python version since 2.5. It is contained in only one
a480bc41 1192Python file, so it can be easily copied into your project.")
3f641af0 1193 (license license:x11)))
a480bc41 1194
0c20025c
AE
1195(define-public python2-six
1196 (package-with-python2 python-six))
1197
22d7360b 1198(define-public python-dateutil
cafc3f5a
EB
1199 (package
1200 (name "python-dateutil")
e139c7a7 1201 (version "2.6.0")
cafc3f5a
EB
1202 (source
1203 (origin
1204 (method url-fetch)
394b8060 1205 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
1206 (sha256
1207 (base32
e139c7a7 1208 "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2"))))
cafc3f5a 1209 (build-system python-build-system)
f22efa01 1210 (propagated-inputs
394b8060 1211 `(("python-six" ,python-six)))
b5a5fb19 1212 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a
EB
1213 (synopsis "Extensions to the standard datetime module")
1214 (description
1215 "The dateutil module provides powerful extensions to the standard
1216datetime module, available in Python 2.3+.")
f210e944 1217 (license license:bsd-3)))
cafc3f5a 1218
fc50e9c6
AE
1219(define-public python2-dateutil
1220 (package-with-python2 python-dateutil))
1d08c01f 1221
cafc3f5a
EB
1222(define-public python-parsedatetime
1223 (package
1224 (name "python-parsedatetime")
642656a1 1225 (version "2.4")
cafc3f5a
EB
1226 (source
1227 (origin
1228 (method url-fetch)
eebf6f01 1229 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1230 (sha256
1231 (base32
642656a1 1232 "0jxqkjks7z9dn222cqgvskp4wr6d92aglinxq7pd2w4mzdc7r09x"))))
cafc3f5a
EB
1233 (build-system python-build-system)
1234 (native-inputs
eebf6f01 1235 `(("python-nose" ,python-nose)
28958b64
LC
1236 ("python-pyicu" ,python-pyicu)
1237 ("python-pytest" ,python-pytest)
1238 ("python-pytest-runner" ,python-pytest-runner)))
1239 (propagated-inputs
1240 `(("python-future" ,python-future)))
7bf837fd 1241 (home-page "https://github.com/bear/parsedatetime/")
cafc3f5a
EB
1242 (synopsis
1243 "Parse human-readable date/time text")
1244 (description
e881752c 1245 "Parse human-readable date/time text.")
f210e944 1246 (license license:asl2.0)))
cafc3f5a 1247
38b8f9b2 1248(define-public python2-parsedatetime
f210e944 1249 (package-with-python2 python-parsedatetime))
38b8f9b2 1250
d072efcb
RW
1251(define-public python-pandas
1252 (package
1253 (name "python-pandas")
8e086048 1254 (version "0.19.2")
d072efcb
RW
1255 (source
1256 (origin
1b96f069 1257 (method url-fetch)
8e086048 1258 (uri (pypi-uri "pandas" version))
1b96f069 1259 (sha256
b03ee02f
MB
1260 (base32 "0540cnbwy2hc4hv2sxfs8i47xi91qzvzxfn80dl785ibiicly3vg"))
1261 (patches
1262 (search-patches "python-pandas-skip-failing-tests.patch"))))
d072efcb 1263 (build-system python-build-system)
d072efcb 1264 (propagated-inputs
f22efa01
HG
1265 `(("python-numpy" ,python-numpy)
1266 ("python-pytz" ,python-pytz)
22d7360b 1267 ("python-dateutil" ,python-dateutil)))
d072efcb 1268 (native-inputs
abcc7a0e
HG
1269 `(("python-nose" ,python-nose)
1270 ("python-cython" ,python-cython)))
d072efcb
RW
1271 (home-page "http://pandas.pydata.org")
1272 (synopsis "Data structures for data analysis, time series, and statistics")
1273 (description
1274 "Pandas is a Python package providing fast, flexible, and expressive data
1275structures designed to make working with structured (tabular,
1276multidimensional, potentially heterogeneous) and time series data both easy
1277and intuitive. It aims to be the fundamental high-level building block for
1278doing practical, real world data analysis in Python.")
f210e944 1279 (license license:bsd-3)))
d072efcb
RW
1280
1281(define-public python2-pandas
f210e944 1282 (package-with-python2 python-pandas))
d072efcb 1283
cafc3f5a
EB
1284(define-public python-tzlocal
1285 (package
1286 (name "python-tzlocal")
ed80839b 1287 (version "1.2.2")
cafc3f5a
EB
1288 (source
1289 (origin
1290 (method url-fetch)
226d3331 1291 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1292 (sha256
1293 (base32
ed80839b 1294 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1295 (build-system python-build-system)
f22efa01
HG
1296 (propagated-inputs
1297 `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1298 (home-page "https://github.com/regebro/tzlocal")
1299 (synopsis
35b9e423 1300 "Local timezone information for Python")
cafc3f5a
EB
1301 (description
1302 "Tzlocal returns a tzinfo object with the local timezone information.
1303This module attempts to fix a glaring hole in pytz, that there is no way to
1304get the local timezone information, unless you know the zoneinfo name, and
1305under several distributions that's hard or impossible to figure out.")
3f641af0 1306 (license license:cc0)))
cafc3f5a 1307
1d08c01f
AE
1308(define-public python2-pysqlite
1309 (package
1310 (name "python2-pysqlite")
e80aaeb4 1311 (version "2.8.3")
1d08c01f
AE
1312 (source
1313 (origin
1314 (method url-fetch)
fe476868 1315 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1316 (sha256
1317 (base32
e80aaeb4 1318 "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
1d08c01f
AE
1319 (build-system python-build-system)
1320 (inputs
1321 `(("sqlite" ,sqlite)))
1322 (arguments
1323 `(#:python ,python-2 ; incompatible with Python 3
1324 #:tests? #f)) ; no test target
7bf837fd 1325 (home-page "https://github.com/ghaering/pysqlite")
7a03af70 1326 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1327 (description
1328 "Pysqlite provides SQLite bindings for Python that comply to the
1329Database API 2.0T.")
ed0cdf83 1330 (license license:zlib)))
1d08c01f 1331
2875caf5
AE
1332
1333(define-public python2-mechanize
1334 (package
1335 (name "python2-mechanize")
1336 (version "0.2.5")
1337 (source
1338 (origin
1339 (method url-fetch)
1340 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1341 version ".tar.gz"))
1342 (sha256
1343 (base32
1344 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1345 (build-system python-build-system)
2875caf5
AE
1346 (arguments
1347 `(#:python ,python-2 ; apparently incompatible with Python 3
1348 #:tests? #f))
1349 ;; test fails with message
1350 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1351 ;; (python-3.3.2) or
1352 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1353 ;; (python-2.7.5).
1354 ;; The source code is from March 2011 and probably not up-to-date
1355 ;; with respect to python unit tests.
1356 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1357 (synopsis
1358 "Stateful programmatic web browsing in Python")
1359 (description
1360 "Mechanize implements stateful programmatic web browsing in Python,
1361after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1362 (license (license:non-copyleft
1363 "file://COPYING"
1364 "See COPYING in the distribution."))))
2875caf5 1365
0352532e
AE
1366
1367(define-public python-simplejson
1368 (package
1369 (name "python-simplejson")
b2e6e150 1370 (version "3.10.0")
0352532e
AE
1371 (source
1372 (origin
1373 (method url-fetch)
988d1bad 1374 (uri (pypi-uri "simplejson" version))
0352532e
AE
1375 (sha256
1376 (base32
b2e6e150 1377 "1qhwsykjlb85igb4cfl6v6gkprzbbg8gyqdd7zscc8w3x0ifcfwm"))))
0352532e
AE
1378 (build-system python-build-system)
1379 (home-page "http://simplejson.readthedocs.org/en/latest/")
1380 (synopsis
1381 "Json library for Python")
1382 (description
e881752c
AK
1383 "JSON (JavaScript Object Notation) is a subset of JavaScript
1384syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1385format.
0352532e
AE
1386
1387Simplejson exposes an API familiar to users of the standard library marshal
1388and pickle modules. It is the externally maintained version of the json
1389library contained in Python 2.6, but maintains compatibility with Python 2.5
1390and (currently) has significant performance advantages, even without using
1391the optional C extension for speedups. Simplejson is also supported on
1392Python 3.3+.")
3f641af0 1393 (license license:x11)))
0352532e
AE
1394
1395(define-public python2-simplejson
1396 (package-with-python2 python-simplejson))
421a80a2
AE
1397
1398
ed07b08d 1399(define-public python-pyicu
421a80a2 1400 (package
ed07b08d 1401 (name "python-pyicu")
2e161eaf 1402 (version "1.9.5")
421a80a2
AE
1403 (source
1404 (origin
1405 (method url-fetch)
2e161eaf 1406 (uri (pypi-uri "PyICU" version))
421a80a2
AE
1407 (sha256
1408 (base32
2e161eaf 1409 "16rmxy9y0qhqqna2v49i7nzwm09as699rbyvh4raw7w602w55c3k"))))
421a80a2 1410 (build-system python-build-system)
dc027d40
MB
1411 (arguments
1412 '(#:phases
1413 (modify-phases %standard-phases
1414 (add-before 'check 'delete-failing-test
1415 (lambda _
1416 ;; XXX: These tests require locales that are unavailable
1417 ;; in the build environment.
1418 (delete-file "test/test_DateTimeParserGenerator.py")
1419 #t)))))
421a80a2
AE
1420 (inputs
1421 `(("icu4c" ,icu4c)))
421a80a2 1422 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1423 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1424 (description
1425 "PyICU is a python extension wrapping the ICU C++ API.")
f210e944 1426 (license license:x11)))
ed07b08d
LF
1427
1428(define-public python2-pyicu
f210e944 1429 (package-with-python2 python-pyicu))
cc20a22a
LC
1430
1431(define-public python2-dogtail
1432 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1433 ;; spaces in indentation" with Python 3.
1434 (package
1435 (name "python2-dogtail")
c5be3467 1436 (version "0.9.9")
cc20a22a
LC
1437 (source (origin
1438 (method url-fetch)
c5be3467 1439 (uri (pypi-uri "dogtail" version))
cc20a22a
LC
1440 (sha256
1441 (base32
c5be3467 1442 "0p5wfssvzr9w0bvhllzbbd8fnp4cca2qxcpcsc33dchrmh5n552x"))))
cc20a22a
LC
1443 (build-system python-build-system)
1444 (arguments `(#:python ,python-2
1445 #:tests? #f)) ; invalid command "test"
5ee684ff
EJ
1446 ;; Currently no offical homepage.
1447 (home-page "https://pypi.python.org/pypi/dogtail/")
1003fbcf 1448 (synopsis "GUI test tool and automation framework written in Python")
cc20a22a 1449 (description
35b9e423 1450 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1451It uses Accessibility (a11y) technologies to communicate with desktop
1452applications. dogtail scripts are written in Python and executed like any
1453other Python program.")
3f641af0 1454 (license license:gpl2+)))
515e6878 1455
011b18c3
LC
1456(define-public python2-empy
1457 (package
1458 (name "python2-empy")
1459 (version "3.3")
1460 (source (origin
1461 (method url-fetch)
1462 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1463 version ".tar.gz"))
1464 (sha256
1465 (base32
1466 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1467 (build-system python-build-system)
1468 (arguments
1469 `(#:python ,python-2
1470 #:phases (alist-replace
1471 'check
1472 (lambda _
1473 (zero? (system* "./test.sh")))
1474 %standard-phases)))
1475 (home-page "http://www.alcyone.com/software/empy/")
1476 (synopsis "Templating system for Python")
1477 (description
1478 "EmPy is a system for embedding Python expressions and statements in
1479template text; it takes an EmPy source file, processes it, and produces
1480output. This is accomplished via expansions, which are special signals to the
1cd4027c 1481EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1482EmPy can expand arbitrary Python expressions and statements in this way, as
1483well as a variety of special forms. Textual data not explicitly delimited in
1484this way is sent unaffected to the output, allowing Python to be used in
1485effect as a markup language. Also supported are callbacks via hooks,
1486recording and playback via diversions, and dynamic, chainable filters. The
1487system is highly configurable via command line options and embedded
1488commands.")
3f641af0 1489 (license license:lgpl2.1+)))
011b18c3 1490
8deeda0c
LC
1491(define-public python2-element-tree
1492 (package
1493 (name "python2-element-tree")
1494 (version "1.2.6")
1495 (source (origin
1496 (method url-fetch)
1497 (uri (string-append
1498 "http://effbot.org/media/downloads/elementtree-"
1499 version "-20050316.tar.gz"))
1500 (sha256
1501 (base32
1502 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1503 (build-system python-build-system)
1504 (arguments
1505 `(#:python ,python-2 ; seems to be part of Python 3
1506 #:tests? #f)) ; no 'test' sub-command
1507 (synopsis "Toolkit for XML processing in Python")
1508 (description
1509 "ElementTree is a Python library supporting lightweight XML processing.")
1510 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1511 (license (license:x11-style
1512 "http://docs.python.org/2/license.html"
1513 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1514
1515(define-public python2-pybugz
1516 (package
1517 (name "python2-pybugz")
1518 (version "0.6.11")
1519 (source (origin
1520 (method url-fetch)
1521 (uri (string-append
1522 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1523 version ".tar.gz"))
1524 (sha256
1525 (base32
6f194a1e 1526 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1527 (patches (search-patches "pybugz-stty.patch"
1528 "pybugz-encode-error.patch"))))
8deeda0c
LC
1529 (build-system python-build-system)
1530 (arguments
1531 `(#:python ,python-2 ; SyntaxError with Python 3
1532 #:tests? #f)) ; no 'test' sub-command
f22efa01
HG
1533 (propagated-inputs
1534 `(("element-tree" ,python2-element-tree)))
8deeda0c
LC
1535 (synopsis "Python and command-line interface to Bugzilla")
1536 (description
1537 "PyBugz is a Python library and command-line tool to query the Bugzilla
1538bug tracking system. It is meant as an aid to speed up interaction with the
1539bug tracker.")
1540 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1541 (license license:gpl2)))
8deeda0c 1542
a480bc41
EB
1543(define-public python-enum34
1544 (package
1545 (name "python-enum34")
5e923414 1546 (version "1.1.6")
a480bc41
EB
1547 (source
1548 (origin
1549 (method url-fetch)
d39ae1e5 1550 (uri (pypi-uri "enum34" version))
a480bc41
EB
1551 (sha256
1552 (base32
5e923414 1553 "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
a480bc41 1554 (build-system python-build-system)
a480bc41
EB
1555 (home-page "https://pypi.python.org/pypi/enum34")
1556 (synopsis "Backported Python 3.4 Enum")
1557 (description
1558 "Enum34 is the new Python stdlib enum module available in Python 3.4
1559backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1560 (license license:bsd-3)))
a480bc41 1561
820acd1b
LF
1562(define-public python2-enum34
1563 (package-with-python2 python-enum34))
1564
a480bc41
EB
1565(define-public python-parse-type
1566 (package
1567 (name "python-parse-type")
1568 (version "0.3.4")
1569 (source
1570 (origin
1571 (method url-fetch)
1572 (uri (string-append "https://pypi.python.org/packages/source/p/"
1573 "parse_type/parse_type-" version ".tar.gz"))
1574 (sha256
1575 (base32
1576 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1577 (build-system python-build-system)
8ed12889
DM
1578 (arguments
1579 `(#:phases
1580 (modify-phases %standard-phases
1581 (add-after 'unpack 'patch-tests
1582 (lambda _
1583 (substitute* "tests/test_parse_type_parse.py"
1584 ;; Newer Python versions don't have the problem this test tests.
1585 (("self[.]assertRaises[(]parse.TooManyFields, p.parse, ''[)]")
1586 ""))
1587 #t)))))
f22efa01 1588 (propagated-inputs
f3b98f4f 1589 `(("python-six" ,python-six)
68f1cdec 1590 ("python-parse" ,python-parse)))
8ed12889
DM
1591 (native-inputs
1592 `(("python-pytest" ,python-pytest)
1593 ("python-pytest-runner" ,python-pytest-runner)))
a480bc41
EB
1594 (home-page "https://github.com/jenisys/parse_type")
1595 (synopsis "Extended parse module")
1596 (description
1597 "Parse_type extends the python parse module.")
8ed12889
DM
1598 (properties
1599 `((python2-variant . ,(delay python2-parse-type))))
3f641af0 1600 (license license:bsd-3)))
a480bc41 1601
8ed12889
DM
1602(define-public python2-parse-type
1603 (let ((base (package-with-python2
1604 (strip-python2-variant python-parse-type))))
1605 (package (inherit base)
1606 (propagated-inputs
1607 `(("python2-enum34" ,python2-enum34)
1608 ,@(package-propagated-inputs base))))))
1609
a480bc41
EB
1610(define-public python-parse
1611 (package
1612 (name "python-parse")
eb3d3503 1613 (version "1.6.6")
a480bc41
EB
1614 (source
1615 (origin
1616 (method url-fetch)
eb3d3503 1617 (uri (pypi-uri "parse" version))
a480bc41
EB
1618 (sha256
1619 (base32
aa6c09ed
EF
1620 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))
1621 (patches (search-patches "python-parse-too-many-fields.patch"))))
a480bc41
EB
1622 (build-system python-build-system)
1623 (arguments
1624 `(#:phases
f9a65318
EF
1625 (modify-phases %standard-phases
1626 (replace 'check
1627 (lambda _ (zero? (system* "python" "test_parse.py")))))))
a480bc41
EB
1628 (home-page "https://github.com/r1chardj0n3s/parse")
1629 (synopsis "Parse strings")
1630 (description
1631 "Parse strings using a specification based on the Python format()
1632syntax.")
3f641af0 1633 (license license:x11)))
a480bc41 1634
d3eff97a
JL
1635(define-public python-polib
1636 (package
1637 (name "python-polib")
1638 (version "1.0.8")
1639 (source (origin
1640 (method url-fetch)
1641 (uri (pypi-uri "polib" version))
1642 (sha256
1643 (base32
1644 "1pq2hbm3m2q0cjdszk8mc4qa1vl3wcblh5nfyirlfnzb2pcy7zss"))))
1645 (build-system python-build-system)
1646 (home-page "https://bitbucket.org/izi/polib/wiki/Home")
1647 (synopsis "Manipulate, create and modify gettext files")
1648 (description "Polib can manipulate any gettext format (po, pot and mo)
1649files. It can be used to create po files from scratch or to modify
1650existing ones.")
1651 (license license:expat)))
1652
1653(define-public python2-polib
1654 (let ((base (package-with-python2 (strip-python2-variant python-polib))))
1655 (package
1656 (inherit base)
1657 (arguments `(,@(package-arguments base)
1658 ;; Tests don't work with python2.
1659 #:tests? #f)))))
a480bc41 1660
515e6878
LC
1661(define-public scons
1662 (package
1663 (name "scons")
76ab3141 1664 (version "2.5.1")
515e6878
LC
1665 (source (origin
1666 (method url-fetch)
de67e922
LF
1667 (uri (string-append "mirror://sourceforge/scons/scons/" version
1668 "/scons-" version ".tar.gz"))
515e6878
LC
1669 (sha256
1670 (base32
76ab3141 1671 "1wji1z9jdkhnmm99apx6fhld9cs52rr56aigniyrcsmlwy52298b"))))
515e6878
LC
1672 (build-system python-build-system)
1673 (arguments
1674 ;; With Python 3.x, fails to build with a syntax error.
1675 `(#:python ,python-2
b3e8b4bd 1676 #:use-setuptools? #f ; still relies on distutils
515e6878
LC
1677 #:tests? #f)) ; no 'python setup.py test' command
1678 (home-page "http://scons.org/")
1679 (synopsis "Software construction tool written in Python")
1680 (description
1681 "SCons is a software construction tool. Think of SCons as an improved,
1682cross-platform substitute for the classic Make utility with integrated
1683functionality similar to autoconf/automake and compiler caches such as ccache.
1684In short, SCons is an easier, more reliable and faster way to build
1685software.")
3f641af0 1686 (license license:x11)))
011b18c3 1687
c15a5c0e
DT
1688(define-public python-extras
1689 (package
1690 (name "python-extras")
1691 (version "0.0.3")
1692 (source
1693 (origin
1694 (method url-fetch)
1695 (uri (string-append
1696 "https://pypi.python.org/packages/source/e/extras/extras-"
1697 version ".tar.gz"))
1698 (sha256
1699 (base32
1700 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1701 (build-system python-build-system)
c15a5c0e
DT
1702 (arguments
1703 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1704 '(#:tests? #f))
1705 (home-page "https://github.com/testing-cabal/extras")
1706 (synopsis "Useful extensions to the Python standard library")
1707 (description
1708 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1709 (license license:expat)))
c15a5c0e
DT
1710
1711(define-public python2-extras
1712 (package-with-python2 python-extras))
1713
56ea0efd
DT
1714(define-public python-mimeparse
1715 (package
1716 (name "python-mimeparse")
1717 (version "0.1.4")
1718 (source
1719 (origin
1720 (method url-fetch)
1721 (uri (string-append
1722 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1723 version ".tar.gz"))
1724 (sha256
1725 (base32
1726 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1727 (build-system python-build-system)
56ea0efd
DT
1728 (arguments
1729 '(#:tests? #f)) ; no setup.py test command
1730 (home-page
1731 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1732 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1733 (description
1734 "Mimeparse provides basic functions for parsing MIME type names and
1735matching them against a list of media-ranges.")
bd3fa666 1736 (license license:expat)))
56ea0efd
DT
1737
1738(define-public python2-mimeparse
1739 (package-with-python2 python-mimeparse))
1740
4435427e
DT
1741(define-public python-nose
1742 (package
1743 (name "python-nose")
f7cb9841 1744 (version "1.3.7")
4435427e
DT
1745 (source
1746 (origin
1747 (method url-fetch)
f7cb9841 1748 (uri (pypi-uri "nose" version))
4435427e
DT
1749 (sha256
1750 (base32
f7cb9841 1751 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e 1752 (build-system python-build-system)
4435427e
DT
1753 (arguments
1754 '(#:tests? #f)) ; FIXME: test suite fails
1755 (home-page "http://readthedocs.org/docs/nose/")
1756 (synopsis "Python testing library")
1757 (description
1758 "Nose extends the unittest library to make testing easier.")
3f641af0 1759 (license license:lgpl2.0+)))
4435427e
DT
1760
1761(define-public python2-nose
1762 (package-with-python2 python-nose))
1763
0aea283a
EF
1764(define-public python-nose2
1765 (package
1766 (name "python-nose2")
1767 (version "0.6.5")
1768 (source
1769 (origin
1770 (method url-fetch)
1771 (uri (pypi-uri "nose2" version))
1772 (sha256
1773 (base32
1774 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1775 (build-system python-build-system)
1776 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
f22efa01 1777 (propagated-inputs
0aea283a
EF
1778 `(("python-cov-core" ,python-cov-core)
1779 ("python-pytest-cov" ,python-pytest-cov)
1780 ("python-six" ,python-six)))
1781 (home-page "https://github.com/nose-devs/nose2")
1782 (synopsis "Next generation of nicer testing for Python")
1783 (description
1784 "Nose2 is the next generation of nicer testing for Python, based on the
1785plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1786better plugin api, being easier for users to configure, and simplifying internal
1787interfaces and processes.")
1788 (license license:bsd-2)))
1789
1790(define-public python2-nose2
1791 (package-with-python2 python-nose2))
1792
6cd9c356
DT
1793(define-public python-unittest2
1794 (package
1795 (name "python-unittest2")
1796 (version "0.5.1")
1797 (source
1798 (origin
1799 (method url-fetch)
1800 (uri (string-append
1801 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1802 version ".tar.gz"))
1803 (sha256
1804 (base32
1805 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1806 (build-system python-build-system)
6cd9c356
DT
1807 (home-page "http://pypi.python.org/pypi/unittest2")
1808 (synopsis "Python unit testing library")
1809 (description
1810 "Unittest2 is a replacement for the unittest module in the Python
1811standard library.")
3f641af0 1812 (license license:psfl)))
6cd9c356
DT
1813
1814(define-public python2-unittest2
1815 (package (inherit python-unittest2)
1816 (name "python2-unittest2")
1817 (version "0.5.1")
1818 (source
1819 (origin
1820 (method url-fetch)
1821 (uri (string-append
1822 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1823 version ".tar.gz"))
1824 (sha256
1825 (base32
1826 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
6cd9c356
DT
1827 (arguments
1828 `(#:python ,python-2
1829 #:tests? #f)))) ; no setup.py test command
1830
02f8f804 1831(define-public python-pafy
1832 (package
1833 (name "python-pafy")
745d85b7 1834 (version "0.5.3.1")
02f8f804 1835 (source
1836 (origin
1837 (method url-fetch)
1838 (uri (pypi-uri "pafy" version))
1839 (sha256
1840 (base32
745d85b7 1841 "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
02f8f804 1842 (build-system python-build-system)
ed3fee5f 1843 (arguments
1844 `(#:tests? #f)) ; Currently pafy can not find itself in the tests
02f8f804 1845 (propagated-inputs
1846 ;; Youtube-dl is a python package which is imported in the file
1847 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1848 `(("youtube-dl" ,youtube-dl)))
1849 (home-page "https://np1.github.io/pafy/")
1850 (synopsis "Retrieve YouTube content and metadata")
1851 (description
1852 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1853 (license license:lgpl3+)))
1854
542ad60f
DT
1855(define-public python-py
1856 (package
1857 (name "python-py")
b9463fdb 1858 (version "1.4.32")
542ad60f
DT
1859 (source
1860 (origin
1861 (method url-fetch)
71c8a804 1862 (uri (pypi-uri "py" version))
542ad60f
DT
1863 (sha256
1864 (base32
b9463fdb 1865 "19s1pql9pq85h1qzsdwgyb8a3k1qgkvh33b02m8kfqhizz8rzf64"))))
542ad60f 1866 (build-system python-build-system)
dcb0da7b
MB
1867 (arguments
1868 ;; FIXME: "ImportError: 'test' module incorrectly imported from
1869 ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
1870 ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
1871 ;; Is this module globally installed?"
1872 '(#:tests? #f))
542ad60f
DT
1873 (home-page "http://pylib.readthedocs.org/")
1874 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1875 (description
1876 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1877code introspection, and logging.")
bd3fa666 1878 (license license:expat)))
542ad60f
DT
1879
1880(define-public python2-py
1881 (package-with-python2 python-py))
1882
855d4761
DT
1883(define-public python-pytest
1884 (package
1885 (name "python-pytest")
61a4332d 1886 (version "2.7.3")
855d4761
DT
1887 (source
1888 (origin
1889 (method url-fetch)
1890 (uri (string-append
1891 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1892 version ".tar.gz"))
1893 (sha256
1894 (base32
61a4332d 1895 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1896 (modules '((guix build utils)))
1897 (snippet
1898 ;; One of the tests involves the /usr directory, so it fails.
1899 '(substitute* "testing/test_argcomplete.py"
1900 (("def test_remove_dir_prefix\\(self\\):")
1901 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1902 (build-system python-build-system)
482d9591
HG
1903 (propagated-inputs
1904 `(("python-py" ,python-py)))
e7881f3d 1905 (native-inputs
60724d69
MB
1906 `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`.
1907 ("bash" ,bash)
1908 ("python-nose" ,python-nose)
855d4761
DT
1909 ("python-mock" ,python-mock)))
1910 (home-page "http://pytest.org")
1911 (synopsis "Python testing library")
1912 (description
1913 "Pytest is a testing tool that provides auto-discovery of test modules
1914and functions, detailed info on failing assert statements, modular fixtures,
1915and many external plugins.")
bd3fa666 1916 (license license:expat)))
855d4761
DT
1917
1918(define-public python2-pytest
1919 (package-with-python2 python-pytest))
1920
23b9168d
LF
1921;; Some packages require a newer pytest.
1922(define-public python-pytest-3.0
fca4ff35
LF
1923 (package
1924 (inherit python-pytest)
1925 (name "python-pytest")
23b9168d 1926 (version "3.0.7")
fca4ff35
LF
1927 (source (origin
1928 (method url-fetch)
1929 (uri (pypi-uri "pytest" version))
1930 (sha256
1931 (base32
23b9168d 1932 "1asc4b2nd2a4f0g3r12y97rslq5wliji7b73wwkvdrm5s7mrc1mp"))))
fca4ff35
LF
1933 (arguments
1934 `(#:phases
1935 (modify-phases %standard-phases
1936 (add-before 'check 'disable-invalid-test
1937 (lambda _
1938 (substitute* "testing/test_argcomplete.py"
1939 (("def test_remove_dir_prefix" line)
1940 (string-append "@pytest.mark.skip"
1941 "(reason=\"Assumes that /usr exists.\")\n "
1942 line)))
23b9168d 1943 #t)))))
7f71e257 1944 (native-inputs
60724d69
MB
1945 `(("python-hypothesis" ,python-hypothesis)
1946 ,@(package-native-inputs python-pytest)))
23b9168d
LF
1947 (properties `((python2-variant . ,(delay python2-pytest-3.0))))))
1948
1949(define-public python2-pytest-3.0
1950 (let ((base (package-with-python2
1951 (strip-python2-variant python-pytest-3.0))))
1952 (package (inherit base)
1953 (native-inputs
1954 `(("python2-enum34" ,python2-enum34)
1955 ,@(package-native-inputs base))))))
fca4ff35 1956
358c3d61
EF
1957(define-public python-pytest-cov
1958 (package
1959 (name "python-pytest-cov")
1aecfe17 1960 (version "2.4.0")
358c3d61
EF
1961 (source
1962 (origin
1963 (method url-fetch)
1964 (uri (pypi-uri "pytest-cov" version))
1965 (sha256
545f4a1c 1966 (base32
1aecfe17 1967 "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k"))))
10468636 1968 (build-system python-build-system)
ce40b383
HG
1969 (arguments
1970 `(#:phases
1971 (modify-phases %standard-phases
1972 (replace 'check
1973 (lambda _
1974 ;; options taken from tox.ini
1975 ;; TODO: make "--restructuredtext" tests pass. They currently fail
1976 ;; with "Duplicate implicit target name"
1977 (zero? (system* "python" "./setup.py" "check"
1978 "--strict" "--metadata")))))))
f22efa01 1979 (propagated-inputs
10468636
EF
1980 `(("python-coverage" ,python-coverage)
1981 ("python-pytest" ,python-pytest)))
10468636
EF
1982 (home-page "https://github.com/pytest-dev/pytest-cov")
1983 (synopsis "Pytest plugin for measuring coverage")
1984 (description
1985 "Pytest-cov produces coverage reports. It supports centralised testing and
1986distributed testing in both @code{load} and @code{each} modes. It also
1987supports coverage of subprocesses.")
f210e944 1988 (license license:expat)))
358c3d61
EF
1989
1990(define-public python2-pytest-cov
f210e944 1991 (package-with-python2 python-pytest-cov))
358c3d61 1992
6784f2e3
RW
1993(define-public python-pytest-runner
1994 (package
1995 (name "python-pytest-runner")
047160f2 1996 (version "2.11.1")
6784f2e3
RW
1997 (source
1998 (origin
1999 (method url-fetch)
54cd239b 2000 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
2001 (sha256
2002 (base32
047160f2 2003 "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq"))))
6784f2e3
RW
2004 (build-system python-build-system)
2005 (arguments
2006 `(#:phases
2007 (modify-phases %standard-phases
2008 ;; The fancy way of setting the version with setuptools_scm does not
2009 ;; seem to work here.
2010 (add-after 'unpack 'set-version
2011 (lambda _
2012 (substitute* "docs/conf.py"
2013 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
2014 (string-append "version = \"" ,version "\"")))
2015 #t)))))
2016 (native-inputs
2017 `(("python-pytest" ,python-pytest)
2018 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 2019 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
2020 (synopsis "Invoke py.test as a distutils command")
2021 (description
2022 "This package provides a @command{pytest-runner} command that
2023@file{setup.py} files can use to run tests.")
f210e944 2024 (license license:expat)))
54cd239b
EF
2025
2026(define-public python2-pytest-runner
f210e944 2027 (package-with-python2 python-pytest-runner))
6784f2e3 2028
44547e51
EF
2029(define-public python-pytest-mock
2030 (package
2031 (name "python-pytest-mock")
2032 (version "1.2")
2033 (source
2034 (origin
2035 (method url-fetch)
2036 (uri (pypi-uri "pytest-mock" version ".zip"))
2037 (sha256
2038 (base32
2039 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
2040 (build-system python-build-system)
2041 (native-inputs
2042 `(("unzip" ,unzip)))
f22efa01 2043 (propagated-inputs
d5e41cf2 2044 `(("python-pytest" ,python-pytest)))
44547e51
EF
2045 (home-page "https://github.com/pytest-dev/pytest-mock/")
2046 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
2047 (description
2048 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
2049around the patching API provided by the @code{mock} package, but with the
2050benefit of not having to worry about undoing patches at the end of a test.
2051The mocker fixture has the same API as @code{mock.patch}, supporting the
2052same arguments.")
2053 (properties `((python2-variant . ,(delay python2-pytest-mock))))
2054 (license license:expat)))
2055
2056(define-public python2-pytest-mock
2057 (let ((base (package-with-python2
2058 (strip-python2-variant python-pytest-mock))))
2059 (package (inherit base)
f22efa01 2060 (propagated-inputs
44547e51 2061 `(("python2-mock" ,python2-mock)
f22efa01 2062 ,@(package-propagated-inputs base))))))
44547e51 2063
8fa58fc9
CAW
2064(define-public python-pytest-xdist
2065 (package
2066 (name "python-pytest-xdist")
2067 (version "1.14")
2068 (source
2069 (origin
2070 (method url-fetch)
2071 (uri (pypi-uri "pytest-xdist" version ".zip"))
2072 (sha256
2073 (base32
de585a7e
HG
2074 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
2075 (modules '((guix build utils)))
2076 (snippet
2077 '(begin
2078 ;; Remove pre-compiled .pyc files from source.
2079 (for-each delete-file-recursively
2080 (find-files "." "__pycache__" #:directories? #t))
2081 (for-each delete-file (find-files "." "\\.pyc$"))
2082 #t))))
8fa58fc9 2083 (build-system python-build-system)
4eb385fb
MB
2084 (arguments
2085 '(#:tests? #f)) ;FIXME: Some tests are failing.
2086 ;; #:phases
2087 ;; (modify-phases %standard-phases
2088 ;; (delete 'check)
2089 ;; (add-after 'install 'check
2090 ;; (lambda* (#:key inputs outputs #:allow-other-keys)
2091 ;; (add-installed-pythonpath inputs outputs)
2092 ;; (zero? (system* "py.test" "-v")))))
8fa58fc9
CAW
2093 (native-inputs
2094 `(("unzip" ,unzip)
8fa58fc9 2095 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 2096 (propagated-inputs
c4516ad2 2097 `(("python-execnet" ,python-execnet)
8fa58fc9
CAW
2098 ("python-pytest" ,python-pytest)
2099 ("python-py" ,python-py)))
2100 (home-page
2101 "https://github.com/pytest-dev/pytest-xdist")
2102 (synopsis
2103 "Plugin for py.test with distributed testing and loop-on-failing modes")
2104 (description
2105 "The pytest-xdist plugin extends py.test with some unique test execution
2106modes: parallelization, running tests in boxed subprocesses, the ability
2107to run tests repeatedly when failed, and the ability to run tests on multiple
2108Python interpreters or platforms. It uses rsync to copy the existing
2109program code to a remote location, executes there, and then syncs the
2110result back.")
f210e944 2111 (license license:expat)))
8fa58fc9
CAW
2112
2113(define-public python2-pytest-xdist
f210e944 2114 (package-with-python2 python-pytest-xdist))
8fa58fc9 2115
84d24017
DT
2116(define-public python-scripttest
2117 (package
2118 (name "python-scripttest")
2119 (version "1.3")
2120 (source
2121 (origin
2122 (method url-fetch)
2123 (uri (string-append
2124 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
2125 version ".tar.gz"))
2126 (sha256
2127 (base32
2128 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
2129 (build-system python-build-system)
521b7772 2130 (native-inputs
f3b98f4f 2131 `(("python-pytest" ,python-pytest)))
84d24017
DT
2132 (home-page "http://pythonpaste.org/scripttest/")
2133 (synopsis "Python library to test command-line scripts")
2134 (description "Scripttest is a Python helper library for testing
2135interactive command-line applications. With it you can run a script in a
2136subprocess and see the output as well as any file modifications.")
bd3fa666 2137 (license license:expat)))
84d24017
DT
2138
2139(define-public python2-scripttest
2140 (package-with-python2 python-scripttest))
2141
d8fa80e1
DT
2142(define-public python-testtools
2143 (package
2144 (name "python-testtools")
7adb9031 2145 (version "1.4.0")
d8fa80e1
DT
2146 (source
2147 (origin
2148 (method url-fetch)
7adb9031 2149 (uri (pypi-uri "testtools" version))
d8fa80e1
DT
2150 (sha256
2151 (base32
7adb9031 2152 "1vw8yljnd75d396hhw6s2hrf4cclzy845ifd5am0lxsl235z3i8c"))))
d8fa80e1 2153 (build-system python-build-system)
7adb9031
DM
2154 (arguments
2155 `(#:phases
2156 (modify-phases %standard-phases
2157 (add-after 'unpack 'fix-module-imports
2158 (lambda _
2159 (substitute* "setup.py"
2160 (("'unittest2>=0.8.0',") ""))
2161 (substitute* '("testtools/testcase.py"
2162 "testtools/testsuite.py"
2163 "testtools/run.py"
2164 "testtools/tests/test_run.py"
2165 "testtools/tests/test_testsuite.py"
2166 "testtools/tests/test_deferredruntest.py")
2167 ;; unittest2 is a backport of Python2.7 features to Python 2.4.
2168 (("import unittest2 as unittest") "import unittest")
2169 (("import unittest2") "import unittest as unittest2")
2170 (("from unittest2 import") "from unittest import"))
2171 (substitute* "testtools/tests/test_testresult.py"
2172 ;; NUL in source code is not allowed (raises ValueError).
2173 (("\\x00\\x04") "\\x04"))
2174 #t)))))
0e88cbf8 2175 (propagated-inputs
f22efa01
HG
2176 `(("python-mimeparse" ,python-mimeparse)
2177 ("python-extras" ,python-extras)))
d8fa80e1
DT
2178 (home-page "https://github.com/testing-cabal/testtools")
2179 (synopsis
2180 "Extensions to the Python standard library unit testing framework")
2181 (description
2182 "Testtools extends the Python standard library unit testing framework to
2183provide matchers, more debugging information, and cross-Python
2184compatibility.")
3f641af0 2185 (license license:psfl)))
d8fa80e1
DT
2186
2187(define-public python2-testtools
2188 (package-with-python2 python-testtools))
2189
5bf3afea
DT
2190(define-public python-testscenarios
2191 (package
2192 (name "python-testscenarios")
2193 (version "0.4")
2194 (source
2195 (origin
2196 (method url-fetch)
2197 (uri (string-append
2198 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
2199 version ".tar.gz"))
2200 (sha256
2201 (base32
2202 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
2203 (build-system python-build-system)
f22efa01 2204 (propagated-inputs
8e73d3ba 2205 `(("python-testtools" ,python-testtools)))
5bf3afea
DT
2206 (home-page "https://launchpad.net/testscenarios")
2207 (synopsis "Pyunit extension for dependency injection")
2208 (description
2209 "Testscenarios provides clean dependency injection for Python unittest
2210style tests.")
3f641af0 2211 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
2212
2213(define-public python2-testscenarios
2214 (package-with-python2 python-testscenarios))
2215
dac79ecc
DT
2216(define-public python-testresources
2217 (package
2218 (name "python-testresources")
2219 (version "0.2.7")
2220 (source
2221 (origin
2222 (method url-fetch)
2223 (uri (string-append
2224 "https://pypi.python.org/packages/source/t/testresources/testresources-"
2225 version ".tar.gz"))
2226 (sha256
2227 (base32
2228 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
2229 (build-system python-build-system)
dac79ecc
DT
2230 (home-page "https://launchpad.net/testresources")
2231 (synopsis
2232 "Pyunit extension for managing test resources")
2233 (description
2234 "Testresources is an extension to Python's unittest to allow declarative
2235use of resources by test cases.")
3f641af0 2236 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
2237
2238(define-public python2-testresources
2239 (package-with-python2 python-testresources))
2240
070ab058
DT
2241(define-public python-subunit
2242 (package
2243 (name "python-subunit")
2244 (version "0.0.21")
2245 (source
2246 (origin
2247 (method url-fetch)
2248 (uri (string-append
2249 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
2250 version ".tar.gz"))
2251 (sha256
2252 (base32
2253 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
2254 (build-system python-build-system)
f22efa01 2255 (propagated-inputs
b52ad371
HG
2256 `(("python-extras" ,python-extras)
2257 ("python-mimeparse" ,python-mimeparse)))
2258 (native-inputs
2259 `(("python-testscenarios" ,python-testscenarios)))
070ab058
DT
2260 (home-page "http://launchpad.net/subunit")
2261 (synopsis "Python implementation of the subunit protocol")
2262 (description
2263 "Python-subunit is a Python implementation of the subunit test streaming
2264protocol.")
3f641af0 2265 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
2266
2267(define-public python2-subunit
2268 (package-with-python2 python-subunit))
2269
d2a8db92
HG
2270;; Recent versions of python-fixtures and python-testrepository need
2271;; python-pbr for packaging, which itself needs these two packages for
2272;; testing.
2273;; To fix this circular dependency, we use a build of python-pbr, based on the
2274;; same source, just without any test dependencies and with tests disabled.
2275;; python-pbr-minmal is then used to package python-fixtures and
2276;; python-testrepository.
2277;; Strictly speaking we currently could remove the test-requirements from the
2278;; normal python-pbr package (and save this package) since test are disabled
2279;; there anyway. But this may change in future.
2280(define python-pbr-minimal
cd49454b 2281 (package
d2a8db92 2282 (name "python-pbr-minimal")
269504a7 2283 (version "3.0.1")
7787ef76
CR
2284 (source
2285 (origin
2286 (method url-fetch)
d2a8db92 2287 (uri (pypi-uri "pbr" version))
7787ef76
CR
2288 (sha256
2289 (base32
269504a7 2290 "14fs5acnalnb3h62s7q7av239j541fk0n0z0lawh4h09b1s93s6p"))))
7787ef76
CR
2291 (build-system python-build-system)
2292 (arguments
d2a8db92
HG
2293 `(#:tests? #f))
2294 (home-page "http://docs.openstack.org/developer/pbr/")
2295 (synopsis "Minimal build of python-pbr used for bootstrapping")
7787ef76 2296 (description
d2a8db92 2297 "Used only for bootstrapping python2-pbr, you should not need this.")
3f641af0 2298 (license license:asl2.0)))
7787ef76 2299
d2a8db92
HG
2300(define python2-pbr-minimal
2301 (package-with-python2 python-pbr-minimal))
7787ef76 2302
1ef09c0c 2303(define-public python-pbr
e25f0174 2304 (package
d2a8db92 2305 (inherit python-pbr-minimal)
e25f0174 2306 (name "python-pbr")
e25f0174
BW
2307 (arguments
2308 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2309 (propagated-inputs
d2a8db92
HG
2310 `(("git" ,git))) ;; pbr actually uses the "git" binary.
2311 (native-inputs
e25f0174 2312 `(("python-fixtures" ,python-fixtures)
d2a8db92 2313 ;; discover, coverage, hacking, subunit
e25f0174 2314 ("python-mock" ,python-mock)
d2a8db92 2315 ("python-six" ,python-six)
e25f0174
BW
2316 ("python-sphinx" ,python-sphinx)
2317 ("python-testrepository" ,python-testrepository)
2318 ("python-testresources" ,python-testresources)
2319 ("python-testscenarios" ,python-testscenarios)
2320 ("python-testtools" ,python-testtools)
2321 ("python-virtualenv" ,python-virtualenv)))
d2a8db92 2322 (synopsis "Enhance the default behavior of Python’s setuptools")
e25f0174
BW
2323 (description
2324 "Python Build Reasonableness (PBR) is a library that injects some useful
d2a8db92
HG
2325and sensible default behaviors into your setuptools run. It will set
2326versions, process requirements files and generate AUTHORS and ChangeLog file
2327from git information.
2328")))
1ef09c0c
BW
2329
2330(define-public python2-pbr
e25f0174 2331 (package-with-python2 python-pbr))
1ef09c0c 2332
7787ef76
CR
2333(define-public python-fixtures
2334 (package
2335 (name "python-fixtures")
13fcc6df 2336 (version "1.4.0")
7787ef76
CR
2337 (source
2338 (origin
2339 (method url-fetch)
13fcc6df 2340 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2341 (sha256
2342 (base32
13fcc6df 2343 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76 2344 (build-system python-build-system)
f6c1ef18
MB
2345 (arguments
2346 '(#:phases
2347 (modify-phases %standard-phases
2348 (replace 'check
2349 (lambda _
2350 (zero? (system* "python" "-m" "testtools.run"
2351 "fixtures.test_suite")))))))
7787ef76 2352 (propagated-inputs
ae92cadd 2353 `(("python-six" ,python-six)))
e7881f3d 2354 (native-inputs
f6c1ef18
MB
2355 `(("python-mock" ,python-mock)
2356 ("python-pbr-minimal" ,python-pbr-minimal)
7787ef76 2357 ("python-testtools" ,python-testtools)))
7787ef76
CR
2358 (home-page "https://launchpad.net/python-fixtures")
2359 (synopsis "Python test fixture library")
2360 (description
2361 "Fixtures provides a way to create reusable state, useful when writing
2362Python tests.")
3f641af0 2363 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2364
cd49454b
DT
2365(define-public python2-fixtures
2366 (package-with-python2 python-fixtures))
2367
b24a0c00
DT
2368(define-public python-testrepository
2369 (package
2370 (name "python-testrepository")
2371 (version "0.0.20")
2372 (source
2373 (origin
2374 (method url-fetch)
2375 (uri (string-append
2376 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2377 version ".tar.gz"))
2378 (sha256
2379 (base32
2380 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2381 (build-system python-build-system)
90110ef9
MB
2382 (arguments
2383 ;; FIXME: Many tests are failing.
2384 '(#:tests? #f))
05de40c5 2385 (propagated-inputs
b2e66edf
HG
2386 `(("python-fixtures" ,python-fixtures)
2387 ("python-subunit" ,python-subunit)
b52ad371
HG
2388 ("python-testtools" ,python-testtools)))
2389 (native-inputs
2390 `(("python-pbr-minimal" ,python-pbr-minimal) ;; same as for building fixture
b24a0c00
DT
2391 ("python-mimeparse" ,python-mimeparse)))
2392 (home-page "https://launchpad.net/testrepository")
2393 (synopsis "Database for Python test results")
2394 (description "Testrepository provides a database of test results which can
2395be used as part of a developer's workflow to check things such as what tests
2396have failed since the last commit or what tests are currently failing.")
3f641af0 2397 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2398
2399(define-public python2-testrepository
2400 (package-with-python2 python-testrepository))
2401
243a009a
DT
2402(define-public python-coverage
2403 (package
2404 (name "python-coverage")
4d4cf3dd 2405 (version "4.1")
243a009a
DT
2406 (source
2407 (origin
2408 (method url-fetch)
82a3c582 2409 (uri (pypi-uri "coverage" version))
243a009a
DT
2410 (sha256
2411 (base32
4d4cf3dd 2412 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a 2413 (build-system python-build-system)
bd10e677
MB
2414 (arguments
2415 ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
2416 '(#:tests? #f))
243a009a
DT
2417 (home-page "http://nedbatchelder.com/code/coverage")
2418 (synopsis "Code coverage measurement for Python")
2419 (description
2420 "Coverage measures code coverage, typically during test execution. It
2421uses the code analysis tools and tracing hooks provided in the Python standard
2422library to determine which lines are executable, and which have been
2423executed.")
3f641af0 2424 (license license:bsd-3)))
243a009a
DT
2425
2426(define-public python2-coverage
2427 (package-with-python2 python-coverage))
2428
12f839fd
EF
2429(define-public python-cov-core
2430 (package
2431 (name "python-cov-core")
2432 (version "1.15.0")
2433 (source
2434 (origin
2435 (method url-fetch)
2436 (uri (pypi-uri "cov-core" version))
2437 (sha256
2438 (base32
2439 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2440 (build-system python-build-system)
f78e1c27 2441 (propagated-inputs
12f839fd
EF
2442 `(("python-coverage" ,python-coverage)))
2443 (home-page "https://github.com/schlamar/cov-core")
49d5e338 2444 (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
12f839fd 2445 (description
49d5e338
TGR
2446 "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
2447and @code{nose2-cov}. It is useful for developing coverage plugins for these
2448testing frameworks.")
f210e944 2449 (license license:expat)))
12f839fd
EF
2450
2451(define-public python2-cov-core
f210e944 2452 (package-with-python2 python-cov-core))
12f839fd 2453
041358fb
DT
2454(define-public python-discover
2455 (package
2456 (name "python-discover")
2457 (version "0.4.0")
2458 (source
2459 (origin
2460 (method url-fetch)
2461 (uri (string-append
2462 "https://pypi.python.org/packages/source/d/discover/discover-"
2463 version ".tar.gz"))
2464 (sha256
2465 (base32
2466 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2467 (build-system python-build-system)
041358fb
DT
2468 (home-page "http://pypi.python.org/pypi/discover/")
2469 (synopsis
2470 "Python test discovery for unittest")
2471 (description
2472 "Discover provides test discovery for unittest, a feature that has been
e881752c 2473backported from Python 2.7 for Python 2.4+.")
3f641af0 2474 (license license:bsd-3)))
041358fb
DT
2475
2476(define-public python2-discover
2477 (package-with-python2 python-discover))
2478
a480bc41
EB
2479(define-public behave
2480 (package
2481 (name "behave")
287cfd1a 2482 (version "1.2.5")
a480bc41
EB
2483 (source (origin
2484 (method url-fetch)
287cfd1a 2485 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2486 (sha256
2487 (base32
287cfd1a 2488 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41 2489 (build-system python-build-system)
f22efa01 2490 (propagated-inputs
f3b98f4f 2491 `(("python-six" ,python-six)
a480bc41
EB
2492 ("python-parse" ,python-parse)
2493 ("python-parse-type" ,python-parse-type)))
2494 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2495 ;PyHamcrest>=1.8
7bf837fd 2496 (home-page "https://github.com/behave/behave")
a480bc41
EB
2497 (synopsis "Python behavior-driven development")
2498 (description
2499 "Behave is a tool for behavior-driven development in python.
2500Behavior-driven development (or BDD) is an agile software development
2501technique that encourages collaboration between developers, QA and
2502non-technical or business participants in a software project. Behave uses
2503tests written in a natural language style, backed up by Python code.")
3f641af0 2504 (license license:x11)))
c7303d3c
DT
2505
2506(define-public python-exif-read
2507 (package
2508 (name "python-exif-read")
2a2d0981 2509 (version "2.1.2")
c7303d3c
DT
2510 (source (origin
2511 (method url-fetch)
2a2d0981 2512 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2513 (sha256
2514 (base32
2a2d0981 2515 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c 2516 (build-system python-build-system)
c7303d3c
DT
2517 (arguments `(#:tests? #f)) ; no tests
2518 (home-page "https://github.com/ianare/exif-py")
2519 (synopsis "Python library to extract EXIF data from image files")
2520 (description
2521 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2522files.")
3f641af0 2523 (license license:bsd-3)))
c7303d3c
DT
2524
2525(define-public python2-exif-read
2526 (package-with-python2 python-exif-read))
d5f89b22
DT
2527
2528(define-public python-pyld
2529 (package
2530 (name "python-pyld")
8957af32 2531 (version "0.7.1")
d5f89b22
DT
2532 (source (origin
2533 (method url-fetch)
af1ab773 2534 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2535 (sha256
2536 (base32
8957af32 2537 "1m0fs6897vxfkf7awah5i66i7b7smm5fnywf1w50fpzyfbfhr156"))))
d5f89b22 2538 (build-system python-build-system)
d5f89b22 2539 (arguments `(#:tests? #f)) ; no tests
7bf837fd 2540 (home-page "https://github.com/digitalbazaar/pyld")
d5f89b22
DT
2541 (synopsis "Python implementation of the JSON-LD specification")
2542 (description
2543 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2544 (license license:bsd-3)))
d5f89b22
DT
2545
2546(define-public python2-pyld
2547 (package-with-python2 python-pyld))
3a1f9a68
DT
2548
2549(define-public python-certifi
2550 (package
2551 (name "python-certifi")
28576403 2552 (version "2017.1.23")
3a1f9a68
DT
2553 (source (origin
2554 (method url-fetch)
9a41f443 2555 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2556 (sha256
2557 (base32
28576403 2558 "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
3a1f9a68 2559 (build-system python-build-system)
28576403 2560 (home-page "https://certifi.io/")
3a1f9a68
DT
2561 (synopsis "Python CA certificate bundle")
2562 (description
2563 "Certifi is a Python library that contains a CA certificate bundle, which
2564is used by the Requests library to verify HTTPS requests.")
3f641af0 2565 (license license:asl2.0)))
3a1f9a68
DT
2566
2567(define-public python2-certifi
2568 (package-with-python2 python-certifi))
e6cfbd36 2569
12c270dd
RW
2570(define-public python-click
2571 (package
2572 (name "python-click")
d4acb6db 2573 (version "6.7")
12c270dd
RW
2574 (source
2575 (origin
2576 (method url-fetch)
375f224b 2577 (uri (pypi-uri "click" version))
12c270dd 2578 (sha256
43accb58 2579 (base32
d4acb6db 2580 "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"))))
12c270dd 2581 (build-system python-build-system)
e2ab5a09
BW
2582 (arguments
2583 `(#:phases
2584 (modify-phases %standard-phases
2585 (add-after 'unpack 'fix-paths
2586 (lambda* (#:key inputs #:allow-other-keys)
2587 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2588 "cross-libc" "libc"))))
2589 (substitute* "click/_unicodefun.py"
2590 (("'locale'")
2591 (string-append "'" glibc "/bin/locale'"))))
97be1bc2
MB
2592 #t))
2593 (replace 'check
2594 (lambda _
2595 (zero? (system* "make" "test")))))))
2596 (native-inputs
2597 `(("python-pytest" ,python-pytest)))
12c270dd
RW
2598 (home-page "http://click.pocoo.org")
2599 (synopsis "Command line library for Python")
2600 (description
2601 "Click is a Python package for creating command line interfaces in a
2602composable way with as little code as necessary. Its name stands for
2603\"Command Line Interface Creation Kit\". It's highly configurable but comes
2604with sensible defaults out of the box.")
3f641af0 2605 (license license:bsd-3)))
12c270dd
RW
2606
2607(define-public python2-click
2608 (package-with-python2 python-click))
2609
addc808d
EF
2610(define-public python-wheel
2611 (package
2612 (name "python-wheel")
0e6df70b 2613 (version "0.30.0a0")
e1ba0749
EF
2614 (source
2615 (origin
2616 (method url-fetch)
2617 (uri (pypi-uri "wheel" version))
2618 (sha256
2619 (base32
0e6df70b 2620 "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
e1ba0749
EF
2621 (build-system python-build-system)
2622 (native-inputs
f3b98f4f 2623 `(("python-jsonschema" ,python-jsonschema)
e1ba0749
EF
2624 ("python-pytest-cov" ,python-pytest-cov)))
2625 (home-page "https://bitbucket.org/pypa/wheel/")
2626 (synopsis "Format for built Python packages")
2627 (description
2628 "A wheel is a ZIP-format archive with a specially formatted filename and
2629the @code{.whl} extension. It is designed to contain all the files for a PEP
2630376 compatible install in a way that is very close to the on-disk format. Many
2631packages will be properly installed with only the @code{Unpack} step and the
2632unpacked archive preserves enough information to @code{Spread} (copy data and
2633scripts to their final locations) at any later time. Wheel files can be
2634installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2635 (license license:expat)
2636 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2637
2638(define-public python2-wheel
8ad4ae20
LF
2639 (let ((wheel (package-with-python2
2640 (strip-python2-variant python-wheel))))
264ae686 2641 (package (inherit wheel)
8ad4ae20
LF
2642 (native-inputs `(("python2-functools32" ,python2-functools32)
2643 ,@(package-native-inputs wheel))))))
2644
addc808d 2645
ae641128 2646(define-public python-requests
e6cfbd36 2647 (package
ae641128 2648 (name "python-requests")
da5db988 2649 (version "2.13.0")
e6cfbd36
DT
2650 (source (origin
2651 (method url-fetch)
5d691657 2652 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2653 (sha256
2654 (base32
da5db988 2655 "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
cff0ccf9 2656 ;; TODO: unbundle urllib3 and chardet.
e6cfbd36 2657 (build-system python-build-system)
cff0ccf9
MB
2658 (arguments
2659 ;; FIXME: Some tests require network access.
2660 '(#:tests? #f))
e6cfbd36
DT
2661 (home-page "http://python-requests.org/")
2662 (synopsis "Python HTTP library")
2663 (description
2664 "Requests is a Python HTTP client library. It aims to be easier to use
2665than Python’s urllib2 library.")
3f641af0 2666 (license license:asl2.0)))
864b5211 2667
e9005180
DT
2668;; Some software requires an older version of Requests, notably Docker
2669;; Compose.
2670(define-public python-requests-2.7
2671 (package (inherit python-requests)
2672 (version "2.7.0")
2673 (source (origin
2674 (method url-fetch)
2675 (uri (pypi-uri "requests" version))
2676 (sha256
2677 (base32
2678 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2679
ae641128 2680(define-public python2-requests
8ad4ae20 2681 (package-with-python2 python-requests))
ae641128 2682
ea521b42
DT
2683(define-public python-vcversioner
2684 (package
2685 (name "python-vcversioner")
538fe019 2686 (version "2.16.0.0")
ea521b42
DT
2687 (source
2688 (origin
2689 (method url-fetch)
2690 (uri (pypi-uri "vcversioner" version))
2691 (sha256
2692 (base32
538fe019 2693 "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
ea521b42 2694 (build-system python-build-system)
ea521b42
DT
2695 (synopsis "Python library for version number discovery")
2696 (description "Vcversioner is a Python library that inspects tagging
2697information in a variety of version control systems in order to discover
2698version numbers.")
2699 (home-page "https://github.com/habnabit/vcversioner")
f210e944 2700 (license license:isc)))
ea521b42
DT
2701
2702(define-public python2-vcversioner
f210e944 2703 (package-with-python2 python-vcversioner))
ae641128 2704
864b5211
DT
2705(define-public python-jsonschema
2706 (package
2707 (name "python-jsonschema")
b3667afb 2708 (version "2.5.1")
864b5211
DT
2709 (source (origin
2710 (method url-fetch)
2711 (uri
2712 (string-append
2713 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2714 version ".tar.gz"))
2715 (sha256
2716 (base32
b3667afb 2717 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211 2718 (build-system python-build-system)
8bcd6b91
EF
2719 (arguments
2720 '(#:phases
2721 (modify-phases %standard-phases
2722 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
eaba9d66 2723 (native-inputs
8bcd6b91
EF
2724 `(("python-nose" ,python-nose)
2725 ("python-vcversioner" ,python-vcversioner)))
2726 (home-page "https://github.com/Julian/jsonschema")
864b5211
DT
2727 (synopsis "Implementation of JSON Schema for Python")
2728 (description
2729 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2730 (license license:expat)
2731 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2732
2733(define-public python2-jsonschema
a14600ec
LF
2734 (let ((jsonschema (package-with-python2
2735 (strip-python2-variant python-jsonschema))))
264ae686 2736 (package (inherit jsonschema)
eaba9d66 2737 (native-inputs
8bcd6b91 2738 `(("python2-mock" ,python2-mock)
eaba9d66
MB
2739 ,@(package-native-inputs jsonschema)))
2740 (propagated-inputs
2741 `(("python2-functools32" ,python2-functools32))))))
850189b8 2742
7734ed7a
OP
2743(define-public python-schema
2744 (package
2745 (name "python-schema")
2746 (version "0.6.6")
2747 (source
2748 (origin
2749 (method url-fetch)
2750 (uri (pypi-uri "schema" version))
2751 (sha256
2752 (base32
2753 "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm"))))
2754 (build-system python-build-system)
2755 (native-inputs
2756 `(("python-pytest" ,python-pytest)))
2757 (home-page "https://github.com/keleshev/schema")
2758 (synopsis "Simple data validation library")
2759 (description
2760 "@code{python-schema} is a library for validating Python data
2761structures, such as those obtained from config-files, forms, external
2762services or command-line parsing, converted from JSON/YAML (or
2763something else) to Python data-types.")
2764 (license license:psfl)))
2765
2766(define-public python2-schema
2767 (package-with-python2 python-schema))
2768
2769(define-public python-schema-0.5
2770 (package (inherit python-schema)
2771 (version "0.5.0")
2772 (source
2773 (origin
2774 (method url-fetch)
2775 (uri (pypi-uri "schema" version))
2776 (sha256
2777 (base32
2778 "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s"))))))
2779
2780(define-public python2-schema-0.5
2781 (package-with-python2 python-schema-0.5))
2782
9f21414d 2783(define-public python-kitchen
2784 (package
2785 (name "python-kitchen")
2786 (version "1.2.4")
2787 (source
2788 (origin
2789 (method url-fetch)
2790 (uri (pypi-uri "kitchen" version))
2791 (sha256
2792 (base32
2793 "0ggv3p4x8jvmmzhp0xm00h6pvh1g0gmycw71rjwagnrj8n23vxrq"))))
2794 (build-system python-build-system)
2795 (propagated-inputs
2796 `(("python-chardet" ,python-chardet)))
cb542830 2797 (home-page "https://github.com/fedora-infra/kitchen")
9f21414d 2798 (synopsis "Python API for snippets")
2799 (description "@code{kitchen} module provides a python API for all sorts of
2800little useful snippets of code that everybody ends up writing for their projects
2801but never seem big enough to build an independent release. Use kitchen and stop
2802cutting and pasting that code over and over.")
2803 (license (list license:lgpl2.1+
2804 ;; subprocess.py, test_subprocess.py,
2805 ;; kitchen/pycompat25/defaultdict.py:
2806 license:psfl))))
2807
2808(define-public python2-kitchen
2809 (package-with-python2 python-kitchen))
2810
850189b8
DT
2811(define-public python-unidecode
2812 (package
2813 (name "python-unidecode")
5754fe95 2814 (version "0.04.20")
850189b8
DT
2815 (source (origin
2816 (method url-fetch)
8925d4f3 2817 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2818 (sha256
2819 (base32
5754fe95 2820 "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
850189b8 2821 (build-system python-build-system)
850189b8
DT
2822 (home-page "https://pypi.python.org/pypi/Unidecode")
2823 (synopsis "ASCII transliterations of Unicode text")
2824 (description
2825 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2826useful when integrating with legacy code that doesn't support Unicode, or for
2827ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2828machine identifiers from human-readable Unicode strings that should still be
2829somewhat intelligeble.")
3f641af0 2830 (license license:gpl2+)))
850189b8
DT
2831
2832(define-public python2-unidecode
2833 (package-with-python2 python-unidecode))
6d45fef4
DT
2834
2835(define-public python-pyjwt
2836 (package
2837 (name "python-pyjwt")
7e31427f 2838 (version "1.5.2")
6d45fef4
DT
2839 (source
2840 (origin
2841 (method url-fetch)
eb31d4b4 2842 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2843 (sha256
2844 (base32
7e31427f
MB
2845 "0pvr3iymab7v2qz74ann760z7qahqgqszxz5iqqbaqv4z2zz0y8i"))
2846 (modules '((guix build utils)))
2847 (snippet
2848 '(begin
2849 (for-each delete-file-recursively
2850 (find-files "." "\\.pyc$"))
2851 #t))))
6d45fef4 2852 (build-system python-build-system)
eb31d4b4 2853 (native-inputs
7e31427f 2854 `(("python-pytest" ,python-pytest-3.0)
130fe994
HG
2855 ("python-pytest-cov" ,python-pytest-cov)
2856 ("python-pytest-runner" ,python-pytest-runner)))
7bf837fd 2857 (home-page "https://github.com/progrium/pyjwt")
6d45fef4
DT
2858 (synopsis "JSON Web Token implementation in Python")
2859 (description
2860 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2861 (license license:expat)))
6d45fef4
DT
2862
2863(define-public python2-pyjwt
2864 (package-with-python2 python-pyjwt))
2865
a80488c2 2866(define-public python-pykka
2867 (package
2868 (name "python-pykka")
2869 (version "1.2.1")
2870 (source
2871 (origin
2872 (method url-fetch)
2873 (uri (pypi-uri "Pykka" version))
2874 (sha256
2875 (base32
2876 "049w3r0mdnnw7xv19jiq7rvls9k7xs73x05b4qs5d6z4vvmgyiz8"))))
2877 (build-system python-build-system)
2878 (native-inputs
2879 `(("python-mock" ,python-mock)
2880 ("python-nose" ,python-nose)
2881 ("python-gevent" ,python-gevent)
2882 ("python-eventlet" ,python-eventlet)))
2883 (home-page "https://www.pykka.org/")
2884 (synopsis "Pykka is a Python implementation of the actor model")
2885 (description
2886 "Pykka is a Python implementation of the actor model.
2887The actor model introduces some simple rules to control the sharing
2888of state and cooperation between execution units, which makes it
2889easier to build concurrent applications.")
2890 (license license:asl2.0)))
2891
2892(define-public python2-pykka
2893 (package-with-python2 python-pykka))
2894
2cec1f6f
DT
2895(define-public python-oauthlib
2896 (package
2897 (name "python-oauthlib")
bde2171d 2898 (version "1.0.3")
2cec1f6f
DT
2899 (source (origin
2900 (method url-fetch)
bde2171d 2901 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2902 (sha256
2903 (base32
bde2171d 2904 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2905 (build-system python-build-system)
bde2171d 2906 (native-inputs
bb06aa34 2907 `(("python-nose" ,python-nose)
c616b5d3 2908 ("python-mock" ,python-mock)
bde2171d 2909 ("python-cryptography" ,python-cryptography)
bb06aa34
HG
2910 ("python-pyjwt" ,python-pyjwt)
2911 ("python-blinker" ,python-blinker)))
2cec1f6f
DT
2912 (home-page "https://github.com/idan/oauthlib")
2913 (synopsis "OAuth implementation for Python")
2914 (description
2915 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2916OAuth request-signing logic.")
3f641af0 2917 (license license:bsd-3)
59f151ec 2918 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2919
2920(define-public python2-oauthlib
59f151ec 2921 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2922 (package
2923 (inherit base)
00e10c6e 2924 (native-inputs `(("python2-unittest2" ,python2-unittest2)
59f151ec 2925 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2926
2927(define-public python-itsdangerous
2928 (package
2929 (name "python-itsdangerous")
2930 (version "0.24")
2931 (source
2932 (origin
2933 (method url-fetch)
2934 (uri (string-append
2935 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2936 version ".tar.gz"))
2937 (sha256
2938 (base32
2939 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2940 (build-system python-build-system)
7bf837fd 2941 (home-page "https://github.com/mitsuhiko/itsdangerous")
ec5dbb5c
DT
2942 (synopsis "Python library for passing data to/from untrusted environments")
2943 (description
2944 "Itsdangerous provides various helpers to pass trusted data to untrusted
2945environments and back.")
f210e944 2946 (license license:bsd-3)))
ec5dbb5c
DT
2947
2948(define-public python2-itsdangerous
f210e944 2949 (package-with-python2 python-itsdangerous))
5731cae3 2950
8d12be1e
RW
2951(define-public python-pyyaml
2952 (package
2953 (name "python-pyyaml")
bf5e4bc4 2954 (version "3.12")
8d12be1e
RW
2955 (source
2956 (origin
2957 (method url-fetch)
bf5e4bc4 2958 (uri (pypi-uri "PyYAML" version))
8d12be1e
RW
2959 (sha256
2960 (base32
bf5e4bc4 2961 "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"))))
8d12be1e
RW
2962 (build-system python-build-system)
2963 (inputs
2964 `(("libyaml" ,libyaml)))
8d12be1e
RW
2965 (home-page "http://pyyaml.org/wiki/PyYAML")
2966 (synopsis "YAML parser and emitter for Python")
2967 (description
2968 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2969complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2970API, and sensible error messages. PyYAML supports standard YAML tags and
2971provides Python-specific tags that allow to represent an arbitrary Python
2972object.")
2973 (license license:expat)))
2974
2975(define-public python2-pyyaml
2976 (package-with-python2 python-pyyaml))
2977
5731cae3
DT
2978(define-public python-virtualenv
2979 (package
2980 (name "python-virtualenv")
58d04dba 2981 (version "15.0.3")
5731cae3
DT
2982 (source
2983 (origin
2984 (method url-fetch)
17804240 2985 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2986 (sha256
2987 (base32
58d04dba 2988 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
5731cae3 2989 (build-system python-build-system)
17804240
EF
2990 (arguments
2991 `(#:phases
2992 (modify-phases %standard-phases
58d04dba
RW
2993 (replace 'check
2994 (lambda _
2995 ;; Disable failing test. See upstream bug report
2996 ;; https://github.com/pypa/virtualenv/issues/957
2997 (substitute* "tests/test_virtualenv.py"
2998 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2999 (zero? (system* "py.test")))))))
e7881f3d 3000 (native-inputs
f3b98f4f 3001 `(("python-mock" ,python-mock)
17804240 3002 ("python-pytest" ,python-pytest)))
5731cae3
DT
3003 (home-page "https://virtualenv.pypa.io/")
3004 (synopsis "Virtual Python environment builder")
3005 (description
3006 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 3007 (license license:expat)))
5731cae3
DT
3008
3009(define-public python2-virtualenv
3010 (package-with-python2 python-virtualenv))
8176d4d5
DT
3011
3012(define-public python-markupsafe
3013 (package
3014 (name "python-markupsafe")
3015 (version "0.23")
3016 (source
3017 (origin
3018 (method url-fetch)
3019 (uri (string-append
3020 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
3021 version ".tar.gz"))
3022 (sha256
3023 (base32
3024 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
3025 (build-system python-build-system)
7bf837fd 3026 (home-page "https://github.com/mitsuhiko/markupsafe")
8176d4d5
DT
3027 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
3028 (description
3029 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
3030for Python.")
3f641af0 3031 (license license:bsd-3)))
8176d4d5
DT
3032
3033(define-public python2-markupsafe
3034 (package-with-python2 python-markupsafe))
fe34f0d1
DT
3035
3036(define-public python-jinja2
3037 (package
3038 (name "python-jinja2")
bac5fd21 3039 (version "2.9.6")
fe34f0d1
DT
3040 (source
3041 (origin
3042 (method url-fetch)
e98149b3 3043 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
3044 (sha256
3045 (base32
bac5fd21 3046 "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx"))))
fe34f0d1 3047 (build-system python-build-system)
bac5fd21
RW
3048 (arguments
3049 `(#:phases
3050 (modify-phases %standard-phases
3051 ;; These files cannot be built with Python < 3.6. See
3052 ;; https://github.com/pallets/jinja/issues/655
3053 ;; FIXME: Remove this when the "python" package is upgraded.
3054 (add-after 'unpack 'delete-incompatible-files
3055 (lambda _
3056 (for-each delete-file
3057 '("jinja2/asyncsupport.py"
3058 "jinja2/asyncfilters.py"))
3059 #t)))))
f22efa01 3060 (propagated-inputs
f3b98f4f 3061 `(("python-markupsafe" ,python-markupsafe)))
fe34f0d1
DT
3062 (home-page "http://jinja.pocoo.org/")
3063 (synopsis "Python template engine")
3064 (description
3065 "Jinja2 is a small but fast and easy to use stand-alone template engine
3066written in pure Python.")
3f641af0 3067 (license license:bsd-3)))
fe34f0d1
DT
3068
3069(define-public python2-jinja2
3070 (package-with-python2 python-jinja2))
3580ab8b 3071
f7d17ac7
EE
3072(define-public python-pystache
3073 (package
3074 (name "python-pystache")
3075 (version "0.5.4")
3076 (source (origin
3077 (method url-fetch)
3078 (uri (pypi-uri "pystache" version))
3079 (sha256
3080 (base32
3081 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
3082 (build-system python-build-system)
8bd5164b
MB
3083 (arguments
3084 '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
f7d17ac7
EE
3085 (home-page "http://defunkt.io/pystache/")
3086 (synopsis "Python logic-less template engine")
3087 (description
3088 "Pystache is a Python implementation of the framework agnostic,
3089logic-free templating system Mustache.")
8bd5164b
MB
3090 (license license:expat)
3091 (properties `((python2-variant . ,(delay python2-pystache))))))
f7d17ac7
EE
3092
3093(define-public python2-pystache
8bd5164b
MB
3094 (package (inherit (package-with-python2
3095 (strip-python2-variant python-pystache)))
3096 (arguments
3097 `(#:python ,python-2
3098 #:phases
3099 (modify-phases %standard-phases
3100 (replace 'check
3101 (lambda _
3102 (zero? (system* "python" "test_pystache.py")))))))))
f7d17ac7 3103
1285119b
RW
3104(define-public python-joblib
3105 (package
3106 (name "python-joblib")
f34ef331 3107 (version "0.10.3")
1285119b
RW
3108 (source (origin
3109 (method url-fetch)
f34ef331 3110 (uri (pypi-uri "joblib" version))
1285119b
RW
3111 (sha256
3112 (base32
6aa5f1ca
HG
3113 "0787k919zlfmgymprz5bzv0v1df5bbirlf3awrghmjgvkrd9dci9"))
3114 (modules '((guix build utils)))
3115 (snippet
3116 '(begin
3117 ;; Remove pre-compiled .pyc files from source.
3118 (for-each delete-file-recursively
3119 (find-files "." "__pycache__" #:directories? #t))
3120 (for-each delete-file (find-files "." "\\.pyc$"))
3121 #t))))
1285119b 3122 (build-system python-build-system)
a8dd960a
RW
3123 (arguments
3124 `(#:phases
3125 (modify-phases %standard-phases
3126 (add-before 'check 'disable-failing-tests
3127 (lambda _
3128 ;; This numpydoc tests fails for unknown reasons
3129 (delete-file "doc/sphinxext/numpydoc/tests/test_docscrape.py")
3130 ;; This numpydoc test depends on matplotlib, which is not a
3131 ;; required input.
3132 (delete-file "doc/sphinxext/numpydoc/tests/test_plot_directive.py")
3133 ;; These tests fail to execute sys.executable
3134 (substitute* "joblib/test/test_parallel.py"
3135 (("import nose" line)
3136 (string-append "from nose.plugins.skip import SkipTest\n" line))
3137 (("def test_nested_parallel_warnings" line)
3138 (string-append "@SkipTest\n" line))
3139 (("def test_parallel_with_interactively_defined_functions" line)
3140 (string-append "@SkipTest\n" line)))
3141 #t)))))
f052ec9a 3142 ;; Provide nose to enable tests command
1285119b 3143 (native-inputs
f3b98f4f 3144 `(("python-nose" ,python-nose)
f34ef331
RW
3145 ("python-sphinx" ,python-sphinx)
3146 ("python-docutils" ,python-docutils)
3147 ("python-numpydoc" ,python-numpydoc)))
1285119b
RW
3148 (home-page "http://pythonhosted.org/joblib/")
3149 (synopsis "Using Python functions as pipeline jobs")
3150 (description
3151 "Joblib is a set of tools to provide lightweight pipelining in Python.
3152In particular, joblib offers: transparent disk-caching of the output values
3153and lazy re-evaluation (memoize pattern), easy simple parallel computing
3154logging and tracing of the execution.")
3f641af0 3155 (license license:bsd-3)))
1285119b
RW
3156
3157(define-public python2-joblib
3158 (package-with-python2 python-joblib))
3159
3580ab8b
DT
3160(define-public python-docutils
3161 (package
3162 (name "python-docutils")
00e0ca7c 3163 (version "0.13.1")
3580ab8b
DT
3164 (source
3165 (origin
3166 (method url-fetch)
00e0ca7c 3167 (uri (pypi-uri "docutils" version))
3580ab8b
DT
3168 (sha256
3169 (base32
00e0ca7c 3170 "1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
3580ab8b 3171 (build-system python-build-system)
3580ab8b
DT
3172 (arguments
3173 '(#:tests? #f)) ; no setup.py test command
3174 (home-page "http://docutils.sourceforge.net/")
3175 (synopsis "Python Documentation Utilities")
3176 (description
3177 "Docutils is a modular system for processing documentation into useful
3178formats, such as HTML, XML, and LaTeX. For input Docutils supports
3179reStructuredText.")
3180 ;; Most of the source code is public domain, but some source files are
3181 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 3182 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
3183
3184(define-public python2-docutils
3185 (package-with-python2 python-docutils))
fb35b7c0
DT
3186
3187(define-public python-pygments
3188 (package
3189 (name "python-pygments")
7d2e758d 3190 (version "2.1.3")
fb35b7c0
DT
3191 (source
3192 (origin
3193 (method url-fetch)
9f442285 3194 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
3195 (sha256
3196 (base32
7d2e758d 3197 "10axnp2wpjnq9g8wg53fx0c70dfxqrz498jyz8mrdx9a3flwir48"))))
fb35b7c0 3198 (build-system python-build-system)
995cb99e
MB
3199 (arguments
3200 ;; FIXME: Tests require sphinx, which depends on this.
3201 '(#:tests? #f))
fb35b7c0
DT
3202 (home-page "http://pygments.org/")
3203 (synopsis "Syntax highlighting")
3204 (description
3205 "Pygments is a syntax highlighting package written in Python.")
3f641af0 3206 (license license:bsd-2)))
fb35b7c0
DT
3207
3208(define-public python2-pygments
3209 (package-with-python2 python-pygments))
9dd6078d 3210
5f94ec91
RW
3211(define-public python-sphinxcontrib-websupport
3212 (package
3213 (name "python-sphinxcontrib-websupport")
3214 (version "1.0.1")
3215 (source (origin
3216 (method url-fetch)
3217 (uri (pypi-uri "sphinxcontrib-websupport" version))
3218 (sha256
3219 (base32
3220 "1f9f0wjpi9nhikbyaz6d19s7qvzdf1nq2g5dsh640fma4q9rd1bs"))))
3221 (build-system python-build-system)
3222 (propagated-inputs
3223 `(("python-mock" ,python-mock)
3224 ("python-pytest" ,python-pytest)
3225 ("python-xapian-bindings" ,python-xapian-bindings)))
3226 ;; Needed for running the test suite
3227 (native-inputs
3228 `(("python-six" ,python-six)
3229 ("python-jinja2" ,python-jinja2)
3230 ("python-docutils" ,python-docutils)
3231 ("python-sphinx" ,python-sphinx)
3232 ("python-sqlalchemy" ,python-sqlalchemy)
3233 ("python-whoosh" ,python-whoosh)))
3234 (home-page "http://sphinx-doc.org/")
3235 (synopsis "Sphinx API for web applications")
3236 (description "This package provides a Python API to easily integrate
3237Sphinx documentation into your web application. It provides tools to
3238integrate Sphinx documents in web templates and to handle searches.")
3239 (license license:bsd-3)))
3240
9dd6078d
DT
3241(define-public python-sphinx
3242 (package
3243 (name "python-sphinx")
c227458a 3244 (version "1.5.1")
9dd6078d
DT
3245 (source
3246 (origin
3247 (method url-fetch)
9a8acd00 3248 (uri (pypi-uri "Sphinx" version))
9dd6078d
DT
3249 (sha256
3250 (base32
c227458a 3251 "1i8p9idnli4gr0y4x67yakbdk5w6a0xjzhrg6bg51y9d1fi7fslf"))))
9dd6078d 3252 (build-system python-build-system)
03cb5f9e 3253 (arguments
c227458a
DM
3254 `(#:phases
3255 (modify-phases %standard-phases
3256 (replace 'check
3257 (lambda _
3258 ;; Requires Internet access.
3259 (delete-file "tests/test_build_linkcheck.py")
3260 (zero? (system* "make" "test")))))))
f22efa01 3261 (propagated-inputs
9a8acd00
DM
3262 `(("python-imagesize" ,python-imagesize)
3263 ("python-sphinx-alabaster-theme"
3264 ,python-sphinx-alabaster-theme)
3265 ("python-babel" ,python-babel)
3266 ("python-snowballstemmer" ,python-snowballstemmer)
9dd6078d 3267 ("python-docutils" ,python-docutils)
9a8acd00
DM
3268 ("python-jinja2" ,python-jinja2)
3269 ("python-pygments" ,python-pygments)
a10b9810 3270 ("python-requests" ,python-requests)
9a8acd00 3271 ("python-six" ,python-six)))
c227458a
DM
3272 (native-inputs
3273 `(("graphviz" ,graphviz)
3274 ("python-html5lib" ,python-html5lib)
3275 ("python-mock" ,python-mock)
a10b9810 3276 ("python-nose" ,python-nose)))
9dd6078d
DT
3277 (home-page "http://sphinx-doc.org/")
3278 (synopsis "Python documentation generator")
3279 (description "Sphinx is a tool that makes it easy to create documentation
3280for Python projects or other documents consisting of multiple reStructuredText
3281sources.")
9a8acd00
DM
3282 (license license:bsd-3)
3283 (properties `((python2-variant . ,(delay python2-sphinx))))))
9dd6078d 3284
e7304ab1
RW
3285(define-public python-sphinx-1.6
3286 (package (inherit python-sphinx)
3287 (name "python-sphinx")
3288 (version "1.6.3")
3289 (source (origin
3290 (method url-fetch)
3291 (uri (pypi-uri "Sphinx" version))
3292 (sha256
3293 (base32
3294 "1rj6f3i8hmrx2qlkshi5kp5xcy98dlynwlyl05yvflj5f66dp2xg"))))
3295 (arguments
3296 `(#:phases
3297 (modify-phases %standard-phases
3298 (replace 'check
3299 (lambda _
3300 ;; Requires Internet access.
3301 (delete-file "tests/test_build_linkcheck.py")
3302 (substitute* "tests/test_build_latex.py"
3303 (("@pytest.mark.sphinx\\('latex', testroot='images'\\)")
3304 "@pytest.mark.skip()"))
3305 (zero? (system* "make" "test")))))))
3306 (propagated-inputs
3307 `(("python-sphinxcontrib-websupport" ,python-sphinxcontrib-websupport)
3308 ,@(package-propagated-inputs python-sphinx)))
3309 (native-inputs
3310 `(("python-pytest" ,python-pytest-3.0)
3311 ("imagemagick" ,imagemagick) ; for "convert"
3312 ,@(package-native-inputs python-sphinx)))
3313 (properties '())))
3314
3061b331
MFM
3315(define-public python-sphinx-1.5.3
3316 (package
3317 (inherit python-sphinx)
3318 (name "python-sphinx")
3319 (version "1.5.3")
3320 (source
3321 (origin
3322 (method url-fetch)
3323 (uri (pypi-uri "Sphinx" version))
3324 (sha256
3325 (base32
3326 "0kw1axswbvaavr8ggyf4qr6hnisnrzlbkkcdada69vk1x9xjassg"))))
3327 (native-inputs
23b9168d 3328 `(("python-pytest" ,python-pytest-3.0)
3061b331
MFM
3329 ,@(package-native-inputs python-sphinx)))))
3330
9dd6078d 3331(define-public python2-sphinx
9a8acd00
DM
3332 (let ((base (package-with-python2 (strip-python2-variant python-sphinx))))
3333 (package
3334 (inherit base)
3335 (native-inputs `(("python2-mock" ,python2-mock)
c227458a 3336 ("python2-enum34" ,python2-enum34)
9a8acd00
DM
3337 ,@(package-native-inputs base)))
3338 (propagated-inputs `(("python2-pytz" ,python2-pytz)
3339 ,@(package-propagated-inputs base))))))
6888830b 3340
ad320b20
RW
3341(define-public python-sphinx-rtd-theme
3342 (package
3343 (name "python-sphinx-rtd-theme")
af842d45 3344 (version "0.2.4")
ad320b20
RW
3345 (source
3346 (origin
3347 (method url-fetch)
af842d45 3348 (uri (pypi-uri "sphinx_rtd_theme" version))
ad320b20
RW
3349 (sha256
3350 (base32
af842d45 3351 "05rlhjzdyapr2w74jjs7mrm8hi69qskcr5vya9f9drpsys7lpxrd"))))
ad320b20 3352 (build-system python-build-system)
9893cff3 3353 (arguments '(#:tests? #f)) ; No tests.
9d3a15b4
LF
3354 (propagated-inputs
3355 `(("python-sphinx" ,python-sphinx)))
ad320b20
RW
3356 (home-page "https://github.com/snide/sphinx_rtd_theme/")
3357 (synopsis "ReadTheDocs.org theme for Sphinx")
3358 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 3359 (license license:expat)))
ad320b20
RW
3360
3361(define-public python2-sphinx-rtd-theme
3362 (package-with-python2 python-sphinx-rtd-theme))
3363
fe94cf0c
HG
3364(define-public python-rst.linker
3365 (package
3366 (name "python-rst.linker")
3367 (version "1.7")
3368 (source
3369 (origin
3370 (method url-fetch)
3371 (uri (pypi-uri "rst.linker" version))
3372 (sha256
3373 (base32
3374 "0bh4lnj2p1nh0wf5pgxgfbrp27xhb1rinahkb5j7s3qprq6qn0sr"))))
3375 (build-system python-build-system)
3376 (propagated-inputs
22d7360b 3377 `(("python-dateutil" ,python-dateutil)
fe94cf0c
HG
3378 ("python-six" ,python-six)))
3379 (native-inputs
3380 `(("python-setuptools-scm" ,python-setuptools-scm)))
3381 ;; Test would require path.py, which would introduce a cyclic dependence.
3382 (arguments `(#:tests? #f))
3383 ;; Note: As of version 1.7 the documentation is not worth building.
3384 (home-page "https://github.com/jaraco/rst.linker")
3385 (synopsis "Sphinx plugin to add links and timestamps")
3386 (description "rst.linker allows to automatically replace text by a
3387reStructuredText external reference or timestamps. It's primary purpose is to
3388augment the changelog, but it can be used for other documents, too.")
3389 (license license:expat)))
3390
3391(define-public python2-rst.linker
3392 (package-with-python2 python-rst.linker))
3393
f4de5b3b
CAW
3394(define-public python-feedgenerator
3395 (package
3396 (name "python-feedgenerator")
d5c183d1 3397 (version "1.9")
f4de5b3b 3398 (source
f4de5b3b 3399 (origin
f0412aa2
EF
3400 (method url-fetch)
3401 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
3402 (sha256
3403 (base32
d5c183d1 3404 "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s"))
7c88bcf4
HG
3405 (modules '((guix build utils)))
3406 (snippet
3407 '(begin
3408 ;; Remove pre-compiled .pyc files from source.
3409 (for-each delete-file-recursively
3410 (find-files "." "__pycache__" #:directories? #t))
3411 (for-each delete-file (find-files "." "\\.pyc$"))
3412 #t))))
f4de5b3b 3413 (build-system python-build-system)
dae73d9b 3414 (propagated-inputs
f3b98f4f 3415 `(("python-pytz" ,python-pytz)
f4de5b3b 3416 ("python-six" ,python-six)))
f0412aa2 3417 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
3418 (synopsis
3419 "Standalone version of Django's Atom/RSS feed generator")
3420 (description
3421 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
3422which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 3423 (license license:bsd-3)))
f4de5b3b
CAW
3424
3425(define-public python2-feedgenerator
3426 (package-with-python2 python-feedgenerator))
3427
59ad30e3
CAW
3428(define-public python-blinker
3429 (package
3430 (name "python-blinker")
7fb9ff4d 3431 (version "1.4")
59ad30e3
CAW
3432 (source
3433 (origin
3434 (method url-fetch)
7fb9ff4d 3435 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
3436 (sha256
3437 (base32
7fb9ff4d 3438 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3 3439 (build-system python-build-system)
59ad30e3
CAW
3440 (home-page "http://pythonhosted.org/blinker/")
3441 (synopsis "Fast, simple object-to-object and broadcast signaling")
3442 (description
3443 "Blinker provides a fast dispatching system that allows any number of
3444interested parties to subscribe to events, or \"signals\".")
3445 (license license:expat)))
3446
3447(define-public python2-blinker
3448 (package-with-python2 python-blinker))
3449
b8050e71
CAW
3450(define-public pelican
3451 (package
3452 (name "pelican")
11f97c27 3453 (version "3.6.3")
b8050e71
CAW
3454 (source
3455 (origin
3456 (method url-fetch)
11f97c27 3457 (uri (pypi-uri "pelican" version))
b8050e71
CAW
3458 (sha256
3459 (base32
11f97c27 3460 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 3461 (build-system python-build-system)
f22efa01 3462 (propagated-inputs
b8050e71
CAW
3463 `(("python-feedgenerator" ,python-feedgenerator)
3464 ("python-jinja2" ,python-jinja2)
3465 ("python-pygments" ,python-pygments)
3466 ("python-docutils" ,python-docutils)
3467 ("python-pytz" ,python-pytz)
3468 ("python-blinker" ,python-blinker)
3469 ("python-unidecode" ,python-unidecode)
3470 ("python-six" ,python-six)
22d7360b 3471 ("python-dateutil" ,python-dateutil)))
b8050e71
CAW
3472 (home-page "http://getpelican.com/")
3473 (arguments
3474 `(;; XXX Requires a lot more packages to do unit tests :P
3475 #:tests? #f
3476 #:phases (modify-phases %standard-phases
3477 (add-before
3478 'install 'adjust-requires
3479 ;; Since feedgenerator is installed from git, it doesn't
3480 ;; conform to the version requirements.
3481 ;;
3482 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3483 ;; version requirement so setuptools doesn't get confused.
3484 (lambda _
3485 (substitute* "setup.py"
3486 (("['\"]feedgenerator.*?['\"]")
3487 "'feedgenerator'")))))))
3488 (synopsis "Python-based static site publishing system")
3489 (description
3490 "Pelican is a tool to generate a static blog from reStructuredText,
3491Markdown input files, and more. Pelican uses Jinja2 for templating
3492and is very extensible.")
3f641af0 3493 (license license:agpl3+)))
b8050e71 3494
240ca4aa
RW
3495(define-public python-scikit-learn
3496 (package
3497 (name "python-scikit-learn")
d7eea7d7 3498 (version "0.19.0")
240ca4aa
RW
3499 (source
3500 (origin
3501 (method url-fetch)
3502 (uri (string-append
3503 "https://github.com/scikit-learn/scikit-learn/archive/"
3504 version ".tar.gz"))
7e21b9fb 3505 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
3506 (sha256
3507 (base32
d7eea7d7 3508 "0g7q4ri75mj93wpa9bp83a3jmrf3dm5va9h7k4zkbcxr6bgqka15"))))
240ca4aa
RW
3509 (build-system python-build-system)
3510 (arguments
3511 `(#:phases
4d25c486
MB
3512 (modify-phases %standard-phases
3513 (delete 'check)
3514 (add-after 'install 'check
3515 ;; Running tests from the source directory requires
3516 ;; an "inplace" build with paths relative to CWD.
3517 ;; http://scikit-learn.org/stable/developers/advanced_installation.html#testing
3518 ;; Use the installed version instead.
3519 (lambda* (#:key inputs outputs #:allow-other-keys)
3520 (add-installed-pythonpath inputs outputs)
3521 ;; some tests require access to "$HOME"
3522 (setenv "HOME" "/tmp")
3523 ;; Step out of the source directory just to be sure.
3524 (chdir "..")
3525 (zero? (system* "nosetests" "-v" "sklearn")))))))
240ca4aa 3526 (inputs
328bb95d
HG
3527 `(("openblas" ,openblas)))
3528 (native-inputs
8e401ab6
RW
3529 `(("python-nose" ,python-nose)
3530 ("python-cython" ,python-cython)))
240ca4aa
RW
3531 (propagated-inputs
3532 `(("python-numpy" ,python-numpy)
3533 ("python-scipy" ,python-scipy)))
3534 (home-page "http://scikit-learn.org/")
3535 (synopsis "Machine Learning in Python")
3536 (description
3537 "Scikit-learn provides simple and efficient tools for data
3538mining and data analysis.")
1b5241c5 3539 (license license:bsd-3)))
240ca4aa
RW
3540
3541(define-public python2-scikit-learn
1b5241c5 3542 (package-with-python2 python-scikit-learn))
240ca4aa 3543
12f8f9bb
RW
3544(define-public python-scikit-image
3545 (package
3546 (name "python-scikit-image")
3547 (version "0.11.3")
3548 (source
3549 (origin
3550 (method url-fetch)
3551 (uri (string-append
3552 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3553 version ".tar.gz"))
3554 (sha256
3555 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3556 (build-system python-build-system)
9026e689
MB
3557 (arguments
3558 ;; TODO: Some tests require running X11 server. Disable them?
3559 '(#:tests? #f))
b83e2333 3560 ;; See DEPENDS.txt for the list of build and run time requiremnts
12f8f9bb
RW
3561 (propagated-inputs
3562 `(("python-matplotlib" ,python-matplotlib)
3563 ("python-networkx" ,python-networkx)
12f8f9bb 3564 ("python-scipy" ,python-scipy)
12f8f9bb
RW
3565 ("python-pillow" ,python-pillow)))
3566 (native-inputs
b83e2333
HG
3567 `(("python-numpy" ,python-numpy)
3568 ("python-cython" ,python-cython)
3569 ("python-six" ,python-six)))
12f8f9bb
RW
3570 (home-page "http://scikit-image.org/")
3571 (synopsis "Image processing in Python")
3572 (description
e881752c 3573 "Scikit-image is a collection of algorithms for image processing.")
12733594 3574 (license license:bsd-3)))
12f8f9bb
RW
3575
3576(define-public python2-scikit-image
12733594 3577 (package-with-python2 python-scikit-image))
12f8f9bb 3578
5394a6a6
RW
3579(define-public python-redis
3580 (package
3581 (name "python-redis")
911a8faf 3582 (version "2.10.5")
5394a6a6
RW
3583 (source
3584 (origin
3585 (method url-fetch)
911a8faf 3586 (uri (pypi-uri "redis" version))
5394a6a6 3587 (sha256
911a8faf 3588 (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
5394a6a6
RW
3589 (build-system python-build-system)
3590 ;; Tests require a running Redis server
3591 (arguments '(#:tests? #f))
cf8124b0
HG
3592 ;; As long as we are not running test, we do not need this input :-)
3593 ;;(native-inputs
3594 ;; `(("python-pytest" ,python-pytest)))
5394a6a6
RW
3595 (home-page "https://github.com/andymccurdy/redis-py")
3596 (synopsis "Redis Python client")
3597 (description
3598 "This package provides a Python interface to the Redis key-value store.")
3599 (license license:expat)))
3600
3601(define-public python2-redis
3602 (package-with-python2 python-redis))
3603
748cef5b
RW
3604(define-public python-rq
3605 (package
3606 (name "python-rq")
eed206cb 3607 (version "0.7.1")
748cef5b
RW
3608 (source
3609 (origin
3610 (method url-fetch)
eed206cb 3611 (uri (pypi-uri "rq" version))
748cef5b 3612 (sha256
eed206cb 3613 (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
748cef5b
RW
3614 (build-system python-build-system)
3615 (propagated-inputs
3616 `(("python-click" ,python-click)
3617 ("python-redis" ,python-redis)))
748cef5b
RW
3618 (home-page "http://python-rq.org/")
3619 (synopsis "Simple job queues for Python")
3620 (description
3621 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3622processing them in the background with workers. It is backed by Redis and it
3623is designed to have a low barrier to entry.")
3f641af0 3624 (license license:bsd-2)))
748cef5b
RW
3625
3626(define-public python2-rq
3627 (package-with-python2 python-rq))
3628
6888830b
FB
3629(define-public python-cython
3630 (package
3631 (name "python-cython")
e3b861ce 3632 (version "0.26")
6888830b
FB
3633 (source
3634 (origin
3635 (method url-fetch)
56918e26 3636 (uri (pypi-uri "Cython" version))
6888830b
FB
3637 (sha256
3638 (base32
e3b861ce 3639 "0riciynnr0r68cvg6r3gbhi9x7h44pdwb7926m6n5vfs5p1f492c"))))
6888830b
FB
3640 (build-system python-build-system)
3641 ;; we need the full python package and not just the python-wrapper
3642 ;; because we need libpython3.3m.so
3643 (inputs
3644 `(("python" ,python)))
3645 (arguments
3646 `(#:phases
b92f651b
EF
3647 (modify-phases %standard-phases
3648 (add-before 'check 'set-HOME
3649 ;; some tests require access to "$HOME/.cython"
e3b861ce 3650 (lambda _ (setenv "HOME" "/tmp") #t))
b92f651b
EF
3651 (replace 'check
3652 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3653 (home-page "http://cython.org/")
3654 (synopsis "C extensions for Python")
3655 (description "Cython is an optimising static compiler for both the Python
3656programming language and the extended Cython programming language. It makes
3657writing C extensions for Python as easy as Python itself.")
3f641af0 3658 (license license:asl2.0)
48b311b1 3659 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3660
3661(define-public python2-cython
48b311b1
LC
3662 (package (inherit (package-with-python2
3663 (strip-python2-variant python-cython)))
6888830b
FB
3664 (name "python2-cython")
3665 (inputs
3666 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533 3667
ee5fb7ee
AV
3668;; The RPython toolchain currently does not support Python 3.
3669(define-public python2-rpython
3670 (package
3671 (name "python2-rpython")
3672 (version "0.1.4")
3673 (source
3674 (origin
3675 (method url-fetch)
3676 (uri (pypi-uri "rpython" version))
3677 (sha256
3678 (base32
3679 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3680 (build-system python-build-system)
3681 (arguments `(#:python ,python-2))
3682 (native-inputs
f3b98f4f 3683 `(("python2-pytest" ,python2-pytest))) ; needed for running tests
ee5fb7ee
AV
3684 (home-page "https://rpython.readthedocs.org")
3685 (synopsis "Framework for implementing interpreters and virtual machines")
3686 (description "RPython is a translation and support framework for
3687producing implementations of dynamic languages, emphasizing a clean separation
3688between language specification and implementation aspects.")
3689 (license license:expat)))
3690
7ccb71e0 3691(define-public python-numpy
0da98533 3692 (package
7ccb71e0
TD
3693 (name "python-numpy")
3694 (version "1.12.0")
0da98533
FB
3695 (source
3696 (origin
3697 (method url-fetch)
7ccb71e0
TD
3698 (uri (string-append
3699 "https://github.com/numpy/numpy/archive/v" version ".tar.gz"))
3700 (file-name (string-append name "-" version ".tar.gz"))
0da98533
FB
3701 (sha256
3702 (base32
7ccb71e0 3703 "025d4j4aakcp8w5i5diqh812cbbjgac7jszx1j56ivrbi1i8vv7d"))))
0da98533
FB
3704 (build-system python-build-system)
3705 (inputs
328bb95d 3706 `(("openblas" ,openblas)
cba256f8 3707 ("lapack" ,lapack)))
0da98533 3708 (native-inputs
7ccb71e0
TD
3709 `(("python-cython" ,python-cython)
3710 ("python-nose" ,python-nose)
2efabc55 3711 ("gfortran" ,gfortran)))
0da98533
FB
3712 (arguments
3713 `(#:phases
2efabc55
HG
3714 (modify-phases %standard-phases
3715 (add-before 'build 'set-environment-variables
3716 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3717 (call-with-output-file "site.cfg"
3718 (lambda (port)
cba256f8
RW
3719 (format port
3720 "[openblas]
dbdfe515
RW
3721libraries = openblas
3722library_dirs = ~a/lib
3723include_dirs = ~a/include
cba256f8 3724
2efabc55
HG
3725# backslash-n to make emacs happy
3726\n[lapack]
cba256f8
RW
3727lapack_libs = lapack
3728library_dirs = ~a/lib
3729include_dirs = ~a/include
3730"
3731 (assoc-ref inputs "openblas")
3732 (assoc-ref inputs "openblas")
3733 (assoc-ref inputs "lapack")
3734 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3735 ;; Use "gcc" executable, not "cc".
3736 (substitute* "numpy/distutils/system_info.py"
3737 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3738 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
2efabc55 3739 #t))
6a843168
FB
3740 ;; Tests can only be run after the library has been installed and not
3741 ;; within the source directory.
2efabc55
HG
3742 (delete 'check)
3743 (add-after 'install 'check
3744 (lambda* (#:key outputs inputs #:allow-other-keys)
3745 ;; Make installed package available for running the tests
3746 (add-installed-pythonpath inputs outputs)
6a843168 3747 (with-directory-excursion "/tmp"
89b5c60e 3748 (zero? (system* "python" "-c"
2efabc55 3749 "import numpy; numpy.test(verbose=2)"))))))))
0da98533
FB
3750 (home-page "http://www.numpy.org/")
3751 (synopsis "Fundamental package for scientific computing with Python")
3752 (description "NumPy is the fundamental package for scientific computing
e881752c 3753with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3754object, sophisticated (broadcasting) functions, tools for integrating C/C++
3755and Fortran code, useful linear algebra, Fourier transform, and random number
3756capabilities.")
3f641af0 3757 (license license:bsd-3)))
0da98533 3758
7ccb71e0
TD
3759(define-public python2-numpy
3760 (package-with-python2 python-numpy))
15bfe6d6 3761
460fccd4 3762(define-public python-munch
3763 (package
3764 (name "python-munch")
3765 (version "2.0.4")
3766 (source
3767 (origin
3768 (method url-fetch)
3769 (uri (pypi-uri "munch" version))
3770 (sha256
3771 (base32
3772 "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
3773 (build-system python-build-system)
3774 (home-page "https://github.com/Infinidat/munch")
3775 (synopsis "Dot-accessible dictionary")
3776 (description "Munch is a dot-accessible dictionary similar to JavaScript
3777objects.")
3778 (license license:expat)))
3779
3780(define-public python2-munch
3781 (package-with-python2 python-munch))
3782
beed6abc
RW
3783(define-public python-colormath
3784 (package
3785 (name "python-colormath")
3786 (version "2.1.1")
3787 (source
3788 (origin
3789 (method url-fetch)
3790 (uri (pypi-uri "colormath" version))
3791 (sha256
3792 (base32
3793 "01wp5xwm0a89wdm1dc9rr1ij90idzdiiipxdj1yslhqzkhnjnfh0"))))
3794 (build-system python-build-system)
3795 (propagated-inputs
3796 `(("python-networkx" ,python-networkx)
3797 ("python-numpy" ,python-numpy)))
3798 (home-page "https://github.com/gtaylor/python-colormath")
3799 (synopsis "Color math and conversion library")
3800 (description
3801 "This is a Python library for color math and conversions.")
3802 (license license:bsd-3)))
3803
3804(define-public python2-colormath
3805 (package-with-python2 python-colormath))
3806
4a7d2009
RW
3807(define-public python-spectra
3808 (package
3809 (name "python-spectra")
3810 (version "0.0.8")
3811 (source
3812 (origin
3813 (method url-fetch)
3814 (uri (pypi-uri "spectra" version))
3815 (sha256
3816 (base32
3817 "0n87kzhpkml2s2q91rdkl8wz2kkv5b0bkrgww45lxa5vq34qh6w5"))))
3818 (build-system python-build-system)
3819 (arguments
3820 `(#:phases
3821 (modify-phases %standard-phases
3822 (replace 'check
3823 (lambda _
3824 (zero? (system* "nosetests" "-v")))))))
3825 (propagated-inputs
3826 `(("python-colormath" ,python-colormath)))
3827 (native-inputs
3828 `(("python-nose" ,python-nose)))
3829 (home-page "http://github.com/jsvine/spectra")
3830 (synopsis "Color scales and color conversion")
3831 (description
3832 "This package provides a Python library intended to make color math,
3833color scales, and color space conversion easy. It has support for:
3834
3835@enumerate
3836@item Color scales
3837@item Color ranges
3838@item Color blending
3839@item Brightening/darkening colors
3840@item Saturating/desaturating colors
3841@item Conversion to/from multiple color spaces.
3842@end enumerate\n")
3843 (license license:expat)))
3844
3845(define-public python2-spectra
3846 (package-with-python2 python-spectra))
3847
3a1bfe18
RW
3848(define-public python2-fastlmm
3849 (package
3850 (name "python2-fastlmm")
154d0016 3851 (version "0.2.21")
3a1bfe18
RW
3852 (source
3853 (origin
3854 (method url-fetch)
b074e7d4 3855 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3856 (sha256
3857 (base32
154d0016 3858 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3859 (build-system python-build-system)
3860 (arguments
3861 `(#:python ,python-2)) ; only Python 2.7 is supported
3862 (propagated-inputs
3863 `(("python2-numpy" ,python2-numpy)
3864 ("python2-scipy" ,python2-scipy)
3865 ("python2-matplotlib" ,python2-matplotlib)
3866 ("python2-pandas" ,python2-pandas)
3867 ("python2-scikit-learn" ,python2-scikit-learn)
3a1bfe18
RW
3868 ("python2-pysnptools" ,python2-pysnptools)))
3869 (native-inputs
3870 `(("unzip" ,unzip)
2efabc55 3871 ("python2-cython" ,python2-cython)
1b6d7c3f
MB
3872 ("python2-mock" ,python2-mock)
3873 ("python2-nose" ,python2-nose)))
3a1bfe18
RW
3874 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3875 (synopsis "Perform genome-wide association studies on large data sets")
3876 (description
3877 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3878Models, is a program for performing both single-SNP and SNP-set genome-wide
3879association studies (GWAS) on extremely large data sets.")
3f641af0 3880 (license license:asl2.0)))
3a1bfe18 3881
7ccb71e0
TD
3882(define-public python-numpy-documentation
3883 (package
3884 (name "python-numpy-documentation")
3885 (version (package-version python-numpy))
3886 (source (package-source python-numpy))
3887 (build-system python-build-system)
2ee8869a 3888 (native-inputs
7ccb71e0
TD
3889 `(("python-matplotlib" ,python-matplotlib)
3890 ("python-numpy" ,python-numpy)
3891 ("pkg-config" ,pkg-config)
2efabc55
HG
3892 ("python-sphinx" ,python-sphinx)
3893 ("python-numpydoc" ,python-numpydoc)
8b89c171
RW
3894 ("texlive" ,(texlive-union (list texlive-fonts-amsfonts
3895 texlive-fonts-ec
3896 texlive-generic-ifxetex
3897 texlive-generic-pdftex
3898 texlive-latex-amsfonts
3899 texlive-latex-capt-of
3900 texlive-latex-cmap
3901 texlive-latex-environ
3902 texlive-latex-eqparbox
3903 texlive-latex-etoolbox
3904 texlive-latex-expdlist
3905 texlive-latex-fancyhdr
3906 texlive-latex-fancyvrb
3907 texlive-latex-fncychap
3908 texlive-latex-float
3909 texlive-latex-framed
3910 texlive-latex-geometry
3911 texlive-latex-graphics
3912 texlive-latex-hyperref
3913 texlive-latex-mdwtools
3914 texlive-latex-multirow
3915 texlive-latex-oberdiek
3916 texlive-latex-parskip
3917 texlive-latex-preview
3918 texlive-latex-tabulary
3919 texlive-latex-threeparttable
3920 texlive-latex-titlesec
3921 texlive-latex-trimspaces
3922 texlive-latex-ucs
3923 texlive-latex-upquote
3924 texlive-latex-url
3925 texlive-latex-varwidth
3926 texlive-latex-wrapfig)))
2ee8869a
FB
3927 ("texinfo" ,texinfo)
3928 ("perl" ,perl)
7ccb71e0
TD
3929 ("scipy-sphinx-theme"
3930 ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
3931 (method git-fetch)
3932 (uri (git-reference
3933 (url "https://github.com/scipy/scipy-sphinx-theme.git")
67416769 3934 (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
7ccb71e0
TD
3935 (sha256
3936 (base32
67416769 3937 "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl"))))
7ccb71e0 3938 ,@(package-native-inputs python-numpy)))
2ee8869a 3939 (arguments
7ccb71e0
TD
3940 `(#:tests? #f ; we're only generating the documentation
3941 #:phases
3942 (modify-phases %standard-phases
3943 (delete 'build)
3944 (replace 'install
3945 (lambda* (#:key inputs outputs #:allow-other-keys)
3946 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
3947 (doc (string-append
3948 data "/doc/" ,name "-"
3949 ,(package-version python-numpy)))
3950 (info-reader (string-append data "/info"))
3951 (html (string-append doc "/html"))
3952 (scipy-sphinx-theme "scipy-sphinx-theme")
3953 (sphinx-theme-checkout (assoc-ref inputs scipy-sphinx-theme))
3954 (pyver ,(string-append "PYVER=")))
8b89c171
RW
3955
3956 ;; FIXME: this is needed to for texlive-union to generate
3957 ;; fonts, which are not found.
3958 (setenv "HOME" "/tmp")
3959
7ccb71e0
TD
3960 (with-directory-excursion "doc"
3961 (copy-recursively sphinx-theme-checkout scipy-sphinx-theme)
3962 (mkdir-p html)
3963 (system* "make" "html" pyver)
3964 (system* "make" "latex" "PAPER=a4" pyver)
3965 (system* "make" "-C" "build/latex"
3966 "all-pdf" "PAPER=a4" pyver)
3967 ;; FIXME: Generation of the info file fails.
3968 ;; (system* "make" "info" pyver)
3969 ;; (mkdir-p info)
3970 ;; (copy-file "build/texinfo/numpy.info"
3971 ;; (string-append info "/numpy.info"))
3972 (for-each (lambda (file)
3973 (copy-file (string-append "build/latex" file)
3974 (string-append doc file)))
3975 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3976 (with-directory-excursion "build/html"
3977 (for-each (lambda (file)
3978 (let* ((dir (dirname file))
3979 (tgt-dir (string-append html "/" dir)))
3980 (unless (equal? "." dir)
3981 (mkdir-p tgt-dir))
3982 (install-file file html)))
3983 (find-files "." ".*")))))
3984 #t)))))
3985 (home-page (package-home-page python-numpy))
3986 (synopsis "Documentation for the python-numpy package")
3987 (description (package-description python-numpy))
3988 (license (package-license python-numpy))))
2ee8869a 3989
7ccb71e0
TD
3990(define-public python2-numpy-documentation
3991 (let ((numpy-documentation (package-with-python2 python-numpy-documentation)))
3992 (package
3993 (inherit numpy-documentation)
3994 (native-inputs `(("python2-functools32" ,python2-functools32)
3995 ,@(package-native-inputs numpy-documentation))))))
2ee8869a 3996
0151a8df 3997(define-public python-pygit2
3998 (package
3999 (name "python-pygit2")
8c0c0c4d 4000 (version "0.26.0")
0151a8df 4001 (source
4002 (origin
4003 (method url-fetch)
4004 (uri (pypi-uri "pygit2" version))
4005 (sha256
4006 (base32
8c0c0c4d 4007 "1cbc488ra3kg7r3qky17ms0szi3cda2d96qfkv1l9djsy9hnvw57"))
bb6043fe
MB
4008 (patches
4009 (search-patches "python-pygit2-disable-network-tests.patch"))))
0151a8df 4010 (build-system python-build-system)
4011 (propagated-inputs
4012 `(("python-six" ,python-six)
4013 ("python-cffi" ,python-cffi)
4014 ("libgit2" ,libgit2)
4015 ("python-tox" ,python-tox)))
4016 (home-page "https://github.com/libgit2/pygit2")
4017 (synopsis "Python bindings for libgit2")
4018 (description "Pygit2 is a set of Python bindings to the libgit2 shared
4019library, libgit2 implements Git plumbing.")
4020 ;; GPL2.0 only, with linking exception.
4021 (license license:gpl2)))
4022
4023(define-public python2-pygit2
4024 (package-with-python2 python-pygit2))
4025
15bfe6d6
FB
4026(define-public python-pyparsing
4027 (package
4028 (name "python-pyparsing")
9e5ee6b6 4029 (version "2.2.0")
15bfe6d6
FB
4030 (source
4031 (origin
4032 (method url-fetch)
de67e922
LF
4033 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
4034 "/pyparsing-" version
15bfe6d6
FB
4035 "/pyparsing-" version ".tar.gz"))
4036 (sha256
4037 (base32
9e5ee6b6 4038 "016b9gh606aa44sq92jslm89bg874ia0yyiyb643fa6dgbsbqch8"))))
15bfe6d6
FB
4039 (build-system python-build-system)
4040 (outputs '("out" "doc"))
4041 (arguments
4042 `(#:tests? #f ; no test target
15bfe6d6 4043 #:phases
007176e7
MB
4044 (modify-phases %standard-phases
4045 (add-after 'install 'install-doc
4046 (lambda* (#:key outputs #:allow-other-keys)
4047 (let* ((doc (string-append (assoc-ref outputs "doc")
4048 "/share/doc/" ,name "-" ,version))
4049 (html-doc (string-append doc "/html"))
4050 (examples (string-append doc "/examples")))
4051 (mkdir-p html-doc)
4052 (mkdir-p examples)
4053 (for-each
4054 (lambda (dir tgt)
4055 (map (lambda (file)
4056 (install-file file tgt))
4057 (find-files dir ".*")))
4058 (list "docs" "htmldoc" "examples")
4059 (list doc html-doc examples))
4060 #t))))))
15bfe6d6
FB
4061 (home-page "http://pyparsing.wikispaces.com")
4062 (synopsis "Python parsing class library")
4063 (description
4064 "The pyparsing module is an alternative approach to creating and
4065executing simple grammars, vs. the traditional lex/yacc approach, or the use
4066of regular expressions. The pyparsing module provides a library of classes
4067that client code uses to construct the grammar directly in Python code.")
bd3fa666 4068 (license license:expat)))
15bfe6d6
FB
4069
4070(define-public python2-pyparsing
4071 (package-with-python2 python-pyparsing))
4072
ec00de35
FB
4073(define-public python-numpydoc
4074 (package
4075 (name "python-numpydoc")
4076 (version "0.5")
4077 (source
4078 (origin
4079 (method url-fetch)
89b5c60e 4080 (uri (string-append
ec00de35
FB
4081 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
4082 version ".tar.gz"))
4083 (sha256
4084 (base32
5e4d8f67
AE
4085 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
4086 (modules '((guix build utils)))
4087 (snippet
4088 '(begin
4089 ;; Drop a test requiring matplotlib, which we cannot add as an
4090 ;; input since it would create a circular dependency: Extend the
4091 ;; test for Python 3, where it is already dropped, to Python 2.
4092 (substitute* "numpydoc/tests/test_plot_directive.py"
4093 (("3") "2"))))))
ec00de35 4094 (build-system python-build-system)
fe4a8da4 4095 (propagated-inputs
213d1745
HG
4096 `(("python-sphinx" ,python-sphinx)))
4097 (native-inputs
4098 `(("python-nose" ,python-nose)))
ec00de35
FB
4099 (home-page "https://pypi.python.org/pypi/numpydoc")
4100 (synopsis
4101 "Numpy's Sphinx extensions")
4102 (description
4103 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 4104 (license license:bsd-2)))
ec00de35
FB
4105
4106(define-public python2-numpydoc
5e4d8f67 4107 (package-with-python2 python-numpydoc))
1c65314c 4108
1e656049
RW
4109(define-public python-numexpr
4110 (package
4111 (name "python-numexpr")
2ee57340 4112 (version "2.6.1")
1e656049
RW
4113 (source
4114 (origin
4115 (method url-fetch)
26112c0a 4116 (uri (pypi-uri "numexpr" version))
1e656049
RW
4117 (sha256
4118 (base32
2ee57340 4119 "01lsja72m32z0i5p8rwxbfyzk4mplh72k2a140nwh8vv4wpyfbnv"))))
1e656049
RW
4120 (build-system python-build-system)
4121 (arguments `(#:tests? #f)) ; no tests included
4122 (propagated-inputs
4123 `(("python-numpy" ,python-numpy)))
4124 (home-page "https://github.com/pydata/numexpr")
4125 (synopsis "Fast numerical expression evaluator for NumPy")
4126 (description
4127 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
4128expressions that operate on arrays are accelerated and use less memory than
4129doing the same calculation in Python. In addition, its multi-threaded
4130capabilities can make use of all your cores, which may accelerate
4131computations, most specially if they are not memory-bounded (e.g. those using
4132transcendental functions).")
f210e944 4133 (license license:expat)))
1e656049
RW
4134
4135(define-public python2-numexpr
f210e944 4136 (package-with-python2 python-numexpr))
1e656049 4137
361d982c
MB
4138(define-public python-cycler
4139 (package
4140 (name "python-cycler")
4141 (version "0.10.0")
4142 (source (origin
4143 (method url-fetch)
4144 (uri (pypi-uri "cycler" version))
4145 (sha256
4146 (base32
4147 "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
4148 (build-system python-build-system)
4149 (arguments
4150 ;; XXX: The current version requires 'coveralls' which we don't have.
4151 ;; Enable this for the next release which uses 'python-pytest'.
4152 '(#:tests? #f))
4153 (propagated-inputs
4154 `(("python-six" ,python-six)))
4155 (home-page "http://matplotlib.org/cycler/")
4156 (synopsis "Composable keyword argument iterator")
4157 (description
4158 "When using @code{matplotlib} and plotting more than one line, it is
4159common to want to be able to want to be able to cycle over one or more artist
4160styles; but the plotting logic can quickly become involved.
4161To address this and enable easy cycling over arbitrary @code{kwargs}, the
4162@code{Cycler} class was developed.")
4163 (license license:bsd-3)))
4164
4165(define-public python2-cycler
4166 (package-with-python2 python-cycler))
4167
2aa6d3ae
TD
4168(define-public python-colorspacious
4169 (package
4170 (name "python-colorspacious")
4171 (version "1.1.0")
4172 (source
4173 (origin
4174 (method url-fetch)
4175 (uri (string-append "https://github.com/njsmith/colorspacious/archive/v"
4176 version ".tar.gz"))
4177 (file-name (string-append name "-" version))
4178 (sha256
4179 (base32 "1vflh5jm32qb0skza2i8pjacv09w6gq84fqpp2nj77s0rbmzgr4k"))))
4180 (build-system python-build-system)
4181 (propagated-inputs
4182 `(("python-numpy" ,python-numpy)))
ba062b3e
TD
4183 (native-inputs
4184 `(("python-nose" ,python-nose)))
4185 (arguments
4186 `(#:phases
4187 (modify-phases %standard-phases
4188 (replace 'check
4189 (lambda _
4190 (zero? (system* "nosetests" "--all-modules" "-v" "colorspacious")))))))
2aa6d3ae
TD
4191 (home-page "https://github.com/njsmith/colorspacious")
4192 (synopsis "Python library for colorspace conversions")
4193 (description "@code{colorspacious} is a Python library that lets you
4194convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
4195 (license license:expat)))
4196
4197(define-public python2-colorspacious
4198 (package-with-python2 python-colorspacious))
4199
1c65314c
FB
4200(define-public python-matplotlib
4201 (package
4202 (name "python-matplotlib")
71d20587 4203 (version "2.0.2")
1c65314c
FB
4204 (source
4205 (origin
4206 (method url-fetch)
71d20587 4207 (uri (pypi-uri "matplotlib" version))
1c65314c
FB
4208 (sha256
4209 (base32
71d20587 4210 "1w8z2a1l7s72p1byfz7g03wqhygqxi8w82619dqb3a1lm97w9yqg"))))
1c65314c 4211 (build-system python-build-system)
25f9a068 4212 (propagated-inputs ; the following packages are all needed at run time
4535a93a
TD
4213 `(("python-cycler" ,python-cycler)
4214 ("python-pyparsing" ,python-pyparsing)
25f9a068
FB
4215 ("python-pygobject" ,python-pygobject)
4216 ("gobject-introspection" ,gobject-introspection)
1bbc659f 4217 ("python-tkinter" ,python "tk")
22d7360b 4218 ("python-dateutil" ,python-dateutil)
7ccb71e0 4219 ("python-numpy" ,python-numpy)
ca33a3ad
HG
4220 ("python-pillow" ,python-pillow)
4221 ("python-pytz" ,python-pytz)
4222 ("python-six" ,python-six)
25f9a068
FB
4223 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
4224 ;; from 'gtk+') provides the required 'typelib' files used by
4225 ;; 'gobject-introspection'. The location of these files is set with the
4226 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
4227 ;; is done automatically by a 'native-search-path' procedure. However,
4228 ;; at run-time the user must set this variable as follows:
4229 ;;
4230 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
4231 ("gtk+" ,gtk+)
4232 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
4233 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
4234 ;; object. For this reason we need to import both libraries.
4235 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
4236 ("python-pycairo" ,python-pycairo)
4237 ("python-cairocffi" ,python-cairocffi)))
1c65314c 4238 (inputs
ca33a3ad 4239 `(("libpng" ,libpng)
1c65314c
FB
4240 ("imagemagick" ,imagemagick)
4241 ("freetype" ,freetype)
25f9a068
FB
4242 ("cairo" ,cairo)
4243 ("glib" ,glib)
1c65314c 4244 ;; FIXME: Add backends when available.
1c65314c 4245 ;("python-wxpython" ,python-wxpython)
4535a93a 4246 ("python-pyqt" ,python-pyqt)
1bbc659f
FB
4247 ("tcl" ,tcl)
4248 ("tk" ,tk)))
1c65314c
FB
4249 (native-inputs
4250 `(("pkg-config" ,pkg-config)
ca33a3ad 4251 ("python-nose" ,python-nose)
4535a93a 4252 ("python-mock" ,python-mock)))
1c65314c
FB
4253 (arguments
4254 `(#:phases
42b7009a
DM
4255 (modify-phases %standard-phases
4256 (add-before 'build 'configure-environment
4257 (lambda* (#:key outputs inputs #:allow-other-keys)
4258 (let ((cairo (assoc-ref inputs "cairo"))
4259 (gtk+ (assoc-ref inputs "gtk+")))
4260 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
4261 ;; has not effect.
4262 (setenv "LD_LIBRARY_PATH"
4263 (string-append cairo "/lib:" gtk+ "/lib"))
4264 (setenv "HOME" (getcwd))
4265 (call-with-output-file "setup.cfg"
4266 (lambda (port)
4267 (format port "[directories]~%
1bbc659f 4268basedirlist = ~a,~a~%
57b7b8cd 4269 [rc_options]~%
1bbc659f
FB
4270backend = TkAgg~%"
4271 (assoc-ref inputs "tcl")
4535a93a
TD
4272 (assoc-ref inputs "tk")))))
4273 #t)))))
1c65314c
FB
4274 (home-page "http://matplotlib.org")
4275 (synopsis "2D plotting library for Python")
4276 (description
4277 "Matplotlib is a Python 2D plotting library which produces publication
4278quality figures in a variety of hardcopy formats and interactive environments
4279across platforms. Matplotlib can be used in Python scripts, the python and
4280ipython shell, web application servers, and six graphical user interface
4281toolkits.")
3f641af0 4282 (license license:psfl)
57b7b8cd 4283 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 4284
764c077b 4285(define-public python2-matplotlib
57b7b8cd
LC
4286 (let ((matplotlib (package-with-python2
4287 (strip-python2-variant python-matplotlib))))
764c077b 4288 (package (inherit matplotlib)
88c26834
AE
4289 ;; Make sure to use special packages for Python 2 instead
4290 ;; of those automatically rewritten by package-with-python2.
89b5c60e 4291 (propagated-inputs
7ca0dbc3 4292 `(("python2-pycairo" ,python2-pycairo)
4535a93a 4293 ("python2-functools32" ,python2-functools32)
764c077b 4294 ("python2-pygobject-2" ,python2-pygobject-2)
4535a93a 4295 ("python2-subprocess32" ,python2-subprocess32)
1bbc659f
FB
4296 ("python2-tkinter" ,python-2 "tk")
4297 ,@(fold alist-delete (package-propagated-inputs matplotlib)
4298 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 4299
4535a93a
TD
4300(define-public python-matplotlib-documentation
4301 (package
4302 (name "python-matplotlib-documentation")
4303 (version (package-version python-matplotlib))
4304 (source (package-source python-matplotlib))
4305 (build-system python-build-system)
4306 (native-inputs
4307 `(("python-matplotlib" ,python-matplotlib)
4308 ("python-colorspacious" ,python-colorspacious)
4309 ("python-sphinx" ,python-sphinx)
4310 ("python-numpydoc" ,python-numpydoc)
4311 ("python-ipython" ,python-ipython)
1eaaea41
TD
4312 ("python-mock" ,python-mock)
4313 ("graphviz" ,graphviz)
4535a93a
TD
4314 ("texlive" ,texlive)
4315 ("texinfo" ,texinfo)
4316 ,@(package-native-inputs python-matplotlib)))
4317 (arguments
4318 `(#:tests? #f ; we're only generating documentation
4319 #:phases
4320 (modify-phases %standard-phases
1eaaea41
TD
4321 (replace 'build
4322 (lambda _
4323 (chdir "doc")
4324 ;; Produce pdf in 'A4' format.
4325 (substitute* "conf.py"
4326 (("latex_paper_size = 'letter'") "")
4327 ;; latex_paper_size is deprecated -> set paper size using
4328 ;; latex_elements
4329 (("latex_elements\\['pointsize'\\] = '11pt'" match)
4330 ;; insert at a point where latex_elements{} is defined:
4331 (string-append match "\nlatex_elements['papersize'] = 'a4paper'")))
4332 (zero? (system* "python" "make.py" "html" "latex" "texinfo"))))
4535a93a 4333 (replace 'install
42b7009a 4334 (lambda* (#:key inputs outputs #:allow-other-keys)
4535a93a 4335 (let* ((data (string-append (assoc-ref outputs "out") "/share"))
1eaaea41 4336 (doc (string-append data "/doc/python-matplotlib-" ,version))
42b7009a
DM
4337 (info (string-append data "/info"))
4338 (html (string-append doc "/html")))
1eaaea41
TD
4339 (mkdir-p html)
4340 (mkdir-p info)
4341 (copy-recursively "build/html" html)
4342 (symlink (string-append html "/_images")
4343 (string-append info "/matplotlib-figures"))
4344 (with-directory-excursion "build/texinfo"
4345 (substitute* "matplotlib.texi"
4346 (("@image\\{([^,]*)" all file)
4347 (string-append "@image{matplotlib-figures/" file)))
18b31516 4348 (symlink (string-append html "/_images")
1eaaea41
TD
4349 "./matplotlib-figures")
4350 (system* "makeinfo" "--no-split"
4351 "-o" "matplotlib.info" "matplotlib.texi"))
4352 (copy-file "build/texinfo/matplotlib.info"
4353 (string-append info "/matplotlib.info"))
4354 (copy-file "build/latex/Matplotlib.pdf"
4355 (string-append doc "/Matplotlib.pdf")))
4535a93a
TD
4356 #t)))))
4357 (home-page (package-home-page python-matplotlib))
4358 (synopsis "Documentation for the python-matplotlib package")
4359 (description (package-description python-matplotlib))
4360 (license (package-license python-matplotlib))))
1c65314c 4361
4535a93a
TD
4362(define-public python2-matplotlib-documentation
4363 (package-with-python2 python-matplotlib-documentation))
94914805 4364
0dde6232
RW
4365(define-public python2-pysnptools
4366 (package
4367 (name "python2-pysnptools")
a800018e 4368 (version "0.3.9")
0dde6232
RW
4369 (source
4370 (origin
4371 (method url-fetch)
3f2e9675 4372 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
4373 (sha256
4374 (base32
a800018e 4375 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
4376 (build-system python-build-system)
4377 (arguments
4378 `(#:python ,python-2)) ; only Python 2.7 is supported
4379 (propagated-inputs
4380 `(("python2-numpy" ,python2-numpy)
4381 ("python2-scipy" ,python2-scipy)
b72ac1b5
HG
4382 ("python2-pandas" ,python2-pandas)))
4383 (native-inputs
4384 `(("python2-cython" ,python2-cython)))
0dde6232 4385 (native-inputs
f3b98f4f 4386 `(("unzip" ,unzip)))
0dde6232
RW
4387 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
4388 (synopsis "Library for reading and manipulating genetic data")
4389 (description
4390 "PySnpTools is a library for reading and manipulating genetic data. It
4391can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
4392those files. It can also efficiently manipulate ranges of integers using set
4393operators such as union, intersection, and difference.")
3f641af0 4394 (license license:asl2.0)))
0dde6232 4395
c9b1b4f9
RW
4396(define-public python-rpy2
4397 (package
4398 (name "python-rpy2")
deee5dda 4399 (version "2.9.0")
c9b1b4f9
RW
4400 (source
4401 (origin
4402 (method url-fetch)
ec3bcbc7 4403 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
4404 (sha256
4405 (base32
deee5dda 4406 "0bqihjrdqwj5r1h86shvfb1p5hfr4a6klv1v54bzfr9r144w3rni"))))
c9b1b4f9 4407 (build-system python-build-system)
444464ec 4408 (arguments
deee5dda
RW
4409 '(#:modules ((ice-9 ftw)
4410 (srfi srfi-1)
4411 (srfi srfi-26)
4412 (guix build utils)
4413 (guix build python-build-system))
4414 #:phases
444464ec 4415 (modify-phases %standard-phases
deee5dda
RW
4416 ;; Without this phase the test loader cannot find the directories, in
4417 ;; which it is supposed to look for test files.
4418 (add-after 'unpack 'fix-tests
4419 (lambda* (#:key outputs #:allow-other-keys)
4420 (substitute* "rpy/tests.py"
4421 (("loader.discover\\(")
4422 "loader.discover(rpy_root + '/' +"))
4423 #t))
4424 (replace 'check
444464ec 4425 (lambda* (#:key outputs inputs #:allow-other-keys)
deee5dda
RW
4426 (let ((cwd (getcwd)))
4427 (setenv "PYTHONPATH"
4428 (string-append cwd "/build/"
4429 (find (cut string-prefix? "lib" <>)
4430 (scandir (string-append cwd "/build")))
4431 ":"
4432 (getenv "PYTHONPATH"))))
444464ec 4433 (zero? (system* "python" "-m" "rpy2.tests" "-v")))))))
482d9591 4434 (propagated-inputs
deee5dda
RW
4435 `(("python-six" ,python-six)
4436 ("python-jinja2" ,python-jinja2)
4437 ("python-pytz" ,python-pytz)))
c9b1b4f9 4438 (inputs
482d9591 4439 `(("readline" ,readline)
c9b1b4f9
RW
4440 ("icu4c" ,icu4c)
4441 ("pcre" ,pcre)
2d7c4ae3 4442 ("r-minimal" ,r-minimal)
deee5dda
RW
4443 ("r-survival" ,r-survival)
4444 ("r-ggplot2" ,r-ggplot2)
4445 ("r-rsqlite" ,r-rsqlite)
4446 ("r-dplyr" ,r-dplyr)
4447 ("r-dbplyr" ,r-dbplyr)
4448 ("python-numpy" ,python-numpy)))
c9b1b4f9 4449 (native-inputs
f3b98f4f 4450 `(("zlib" ,zlib)))
c9b1b4f9
RW
4451 (home-page "http://rpy.sourceforge.net/")
4452 (synopsis "Python interface to the R language")
4453 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
4454low-level interface to R from Python, a proposed high-level interface,
4455including wrappers to graphical libraries, as well as R-like structures and
4456functions.")
c92483bd
RW
4457 ;; Any of these licenses can be picked for the R interface. The whole
4458 ;; project is released under GPLv2+ according to the license declaration
4459 ;; in "setup.py".
4460 (license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+))))
c9b1b4f9 4461
bb986599
FB
4462(define-public python-scipy
4463 (package
4464 (name "python-scipy")
09efef33 4465 (version "0.19.1")
bb986599
FB
4466 (source
4467 (origin
4468 (method url-fetch)
09efef33 4469 (uri (pypi-uri "scipy" version))
bb986599
FB
4470 (sha256
4471 (base32
09efef33 4472 "1rl411bvla6q7qfdb47fpdnyjhfgzl6smpha33n9ar1klykjr6m1"))))
bb986599 4473 (build-system python-build-system)
dd86c0d1 4474 (propagated-inputs
bb986599
FB
4475 `(("python-numpy" ,python-numpy)
4476 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
4477 ("python-pyparsing" ,python-pyparsing)))
4478 (inputs
4479 `(("lapack" ,lapack)
719b01c1 4480 ("openblas" ,openblas)))
bb986599 4481 (native-inputs
35093253
TD
4482 `(("python-cython" ,python-cython)
4483 ("python-nose" ,python-nose)
dd86c0d1 4484 ("python-sphinx" ,python-sphinx)
5248d49e 4485 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 4486 ("gfortran" ,gfortran)
bb986599
FB
4487 ("perl" ,perl)))
4488 (outputs '("out" "doc"))
4489 (arguments
4490 `(#:phases
16ca6aaa 4491 (modify-phases %standard-phases
16ca6aaa
MB
4492 (add-before 'build 'configure-openblas
4493 (lambda* (#:key inputs #:allow-other-keys)
4494 (call-with-output-file "site.cfg"
4495 (lambda (port)
4496 (format port
4497 "[blas]
719b01c1
RW
4498libraries = openblas
4499library_dirs = ~a/lib
4500include_dirs = ~a/include
d548e6aa
HG
4501
4502# backslash-n to make emacs happy
4503\n[atlas]
719b01c1
RW
4504library_dirs = ~a/lib
4505atlas_libs = openblas
4506"
16ca6aaa
MB
4507 (assoc-ref inputs "openblas")
4508 (assoc-ref inputs "openblas")
4509 (assoc-ref inputs "openblas"))))
db967b64 4510 #t))
35093253
TD
4511 (add-after 'install 'install-doc
4512 (lambda* (#:key inputs outputs #:allow-other-keys)
4513 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4514 (doc (string-append data "/doc/" ,name "-" ,version))
4515 (html (string-append doc "/html"))
4516 (pyver ,(string-append "PYVER=")))
4517 ;; Make installed package available for building the
4518 ;; documentation
4519 (add-installed-pythonpath inputs outputs)
4520 (with-directory-excursion "doc"
4521 ;; Fix generation of images for mathematical expressions.
4522 (substitute* (find-files "source" "conf\\.py")
4523 (("pngmath_use_preview = True")
4524 "pngmath_use_preview = False"))
4525 (mkdir-p html)
4526 (system* "make" "html" pyver)
4527 (with-directory-excursion "build/html"
4528 (for-each (lambda (file)
4529 (let* ((dir (dirname file))
4530 (tgt-dir (string-append html "/" dir)))
4531 (install-file file html)))
4532 (find-files "." ".*")))))
4533 #t))
4534 (add-after 'unpack 'fix-tests
4535 (lambda _
4536 (substitute* "scipy/integrate/tests/test_quadpack.py"
4537 (("libm.so") "libm.so.6"))
4538 #t))
4539 ;; Tests can only be run after the library has been installed and not
4540 ;; within the source directory.
4541 (delete 'check)
4542 (add-after 'install 'check
4543 (lambda* (#:key inputs outputs #:allow-other-keys)
d548e6aa 4544 (add-installed-pythonpath inputs outputs)
35093253
TD
4545 (with-directory-excursion "/tmp"
4546 (zero? (system* "python" "-c"
4547 "import scipy; scipy.test('full')")))
4548 #t)))))
bb986599
FB
4549 (home-page "http://www.scipy.org/")
4550 (synopsis "The Scipy library provides efficient numerical routines")
4551 (description "The SciPy library is one of the core packages that make up
4552the SciPy stack. It provides many user-friendly and efficient numerical
4553routines such as routines for numerical integration and optimization.")
9200fe14 4554 (properties `((python2-variant . ,(delay python2-scipy))))
3f641af0 4555 (license license:bsd-3)))
bb986599 4556
764c077b 4557(define-public python2-scipy
35093253
TD
4558 (package-with-python2
4559 (strip-python2-variant python-scipy)))
bb986599 4560
e537c917
CB
4561(define-public python-sockjs-tornado
4562 (package
4563 (name "python-sockjs-tornado")
4564 (version "1.0.3")
4565 (source
4566 (origin
4567 (method url-fetch)
4568 (uri (pypi-uri "sockjs-tornado" version))
4569 (sha256
4570 (base32
4571 "16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd"))))
4572 (build-system python-build-system)
4573 (arguments
4574 `(;; There are no tests, and running the test phase requires missing
4575 ;; dependencies
4576 #:tests? #f))
4577 (propagated-inputs
4578 `(("python-tornado" ,python-tornado)))
4579 (home-page "http://github.com/mrjoes/sockjs-tornado/")
4580 (synopsis
4581 "SockJS python server implementation on top of Tornado framework")
4582 (description
4583 "SockJS-tornado provides the server side counterpart to a SockJS client
4584library, through the Tornado framework.
4585
4586SockJS provides a low latency, full duplex, cross-domain communication channel
4587between a web browser and web server.")
4588 (license license:expat)))
4589
4590(define-public python2-sockjs-tornado
4591 (package-with-python2 python-sockjs-tornado))
4592
73acc193 4593(define-public python-socksipy-branch
4594 (package
4595 (name "python-socksipy-branch")
4596 (version "1.01")
4597 (source
4598 (origin
4599 (method url-fetch)
4600 (uri (pypi-uri "SocksiPy-branch" version))
4601 (sha256
4602 (base32
4603 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
4604 (build-system python-build-system)
4605 (arguments
4606 `(#:tests? #f)) ; There are no tests
4607 (home-page "https://code.google.com/archive/p/socksipy-branch/")
4608 (synopsis "Python SOCKS module")
4609 (description
4610 "SocksiPy - A Python SOCKS client module. It provides a
4611socket-like interface that supports connections to any TCP
4612service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
4613The original version was developed by Dan Haim, this is a
4614branch created by Mario Vilas to address some open issues,
4615as the original project seems to have been abandoned circa 2007.")
4616 (license license:bsd-3)))
4617
4618(define-public python2-socksipy-branch
4619 (package-with-python2 python-socksipy-branch))
4620
94914805
EB
4621(define-public python-sqlalchemy
4622 (package
4623 (name "python-sqlalchemy")
a4ba286b 4624 (version "1.0.12")
94914805
EB
4625 (source
4626 (origin
4627 (method url-fetch)
4628 (uri (string-append "https://pypi.python.org/packages/source/S/"
4629 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
4630 (sha256
4631 (base32
a4ba286b 4632 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
4633 (build-system python-build-system)
4634 (native-inputs
4635 `(("python-cython" ,python-cython) ;for c extensions
4636 ("python-pytest" ,python-pytest)
4637 ("python-mock" ,python-mock))) ;for tests
4638 (arguments
4639 `(#:phases (alist-replace
4640 'check
4641 (lambda _ (zero? (system* "py.test")))
4642 %standard-phases)))
4643 (home-page "http://www.sqlalchemy.org")
4644 (synopsis "Database abstraction library")
4645 (description
4646 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
4647gives application developers the full power and flexibility of SQL. It
4648provides a full suite of well known enterprise-level persistence patterns,
4649designed for efficient and high-performing database access, adapted into a
4650simple and Pythonic domain language.")
3f641af0 4651 (license license:x11)))
94914805
EB
4652
4653(define-public python2-sqlalchemy
4654 (package-with-python2 python-sqlalchemy))
c937562e 4655
4a093330
DM
4656(define-public python-pycodestyle
4657 (package
4658 (name "python-pycodestyle")
9b801661 4659 (version "2.3.1")
4a093330
DM
4660 (source
4661 (origin
4662 (method url-fetch)
4663 (uri (pypi-uri "pycodestyle" version))
4664 (sha256
4665 (base32
9b801661 4666 "0rk78b66p57ala26mdldl9lafr48blv5s659sah9q50qnfjmc8k8"))))
4a093330
DM
4667 (build-system python-build-system)
4668 (home-page "https://pycodestyle.readthedocs.io/")
4669 (synopsis "Python style guide checker")
4670 (description "@code{pycodestyle} (formerly pep8) is a tool to check
4671Python code against some of the style conventions in
4672@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
f210e944 4673 (license license:expat)))
4a093330
DM
4674
4675(define-public python2-pycodestyle
f210e944 4676 (package-with-python2 python-pycodestyle))
b91912c4
DM
4677
4678(define-public python-orderedmultidict
4679 (package
4680 (name "python-orderedmultidict")
9e2802cb 4681 (version "0.7.11")
b91912c4
DM
4682 (source
4683 (origin
4684 (method url-fetch)
4685 (uri (pypi-uri "orderedmultidict" version))
4686 (sha256
4687 (base32
9e2802cb 4688 "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
b91912c4
DM
4689 (build-system python-build-system)
4690 (arguments
4691 `(#:phases
4692 (modify-phases %standard-phases
4693 (add-after 'unpack 'fix-tests
4694 (lambda _
4695 ;; The package uses nosetest for running the tests.
4696 ;; Adding this initfile allows to run the test suite
4697 ;; without requiring nosetest.
4698 (zero? (system* "touch" "tests/__init__.py")))))))
4699 (propagated-inputs
4700 `(("python-six" ,python-six)))
4701 (native-inputs
4702 `(("python-pycodestyle" ,python-pycodestyle)))
4703 (home-page "https://github.com/gruns/orderedmultidict")
4704 (synopsis "Python Ordered Multivalue Dictionary - omdict")
4705 (description "This package contains a library for ordered multivalue
4706dictionaries. A multivalue dictionary is a dictionary that can store
4707multiple values for the same key. An ordered multivalue dictionary is a
4708multivalue dictionary that retains the order of insertions and deletions.")
f210e944 4709 (license license:unlicense)))
b91912c4
DM
4710
4711(define-public python2-orderedmultidict
f210e944 4712 (package-with-python2 python-orderedmultidict))
9dede065
DM
4713
4714(define-public python-furl
4715 (package
4716 (name "python-furl")
4717 (version "0.5.6")
4718 (source
4719 (origin
4720 (method url-fetch)
4721 (uri (pypi-uri "furl" version))
4722 (sha256
4723 (base32
4724 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
4725 (build-system python-build-system)
4726 (propagated-inputs
4727 `(("python-six" ,python-six)
4728 ("python-orderedmultidict" ,python-orderedmultidict)))
4729 (native-inputs
4730 `(("python-pycodestyle" ,python-pycodestyle)))
4731 (home-page "https://github.com/gruns/furl")
4732 (synopsis "URL manipulation in Python")
4733 (description "Furl provides an easy-to-use alternative to the
4734@code{urllib} and @code{urlparse} modules for manipulating URLs.")
f210e944 4735 (license license:unlicense)))
9dede065
DM
4736
4737(define-public python2-furl
f210e944 4738 (package-with-python2 python-furl))
462bf271 4739
4e52739c
MB
4740(define-public python-flaky
4741 (package
4742 (name "python-flaky")
4743 (version "3.4.0")
4744 (source (origin
4745 (method url-fetch)
4746 (uri (pypi-uri "flaky" version))
4747 (sha256
4748 (base32
4749 "18pkmf79rfkfpy1d2rrx3v55nxj762ilyk9rvd6s6dccxw58imsa"))))
4750 (build-system python-build-system)
4751 (arguments
4752 ;; TODO: Tests require 'coveralls' and 'genty' which are not in Guix yet.
4753 '(#:tests? #f))
4754 (home-page "https://github.com/box/flaky")
4755 (synopsis "Automatically rerun flaky tests")
4756 (description
4757 "Flaky is a plugin for @code{nose} or @code{py.test} that automatically
4758reruns flaky tests.
4759
4760Ideally, tests reliably pass or fail, but sometimes test fixtures must rely
4761on components that aren't 100% reliable. With flaky, instead of removing
f1ddfe4f 4762those tests or marking them to @code{@@skip}, they can be automatically
4e52739c
MB
4763retried.")
4764 (license license:asl2.0)))
4765
4766(define-public python2-flaky
4767 (package-with-python2 python-flaky))
4768
462bf271
DM
4769(define-public python-flask-babel
4770 (package
4771 (name "python-flask-babel")
4772 (version "0.11.1")
4773 (source
4774 (origin
4775 (method url-fetch)
4776 (uri (pypi-uri "Flask-Babel" version))
4777 (sha256
4778 (base32
4779 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
4780 (build-system python-build-system)
4781 (propagated-inputs
4782 `(("python-flask" ,python-flask)
4783 ("python-babel" ,python-babel)
4784 ("python-jinja2" ,python-jinja2)
4785 ("python-pytz" ,python-pytz)))
4786 (home-page "https://github.com/python-babel/flask-babel")
4787 (synopsis "Add i18n/l10n support to Flask applications")
4788 (description "This package implements internationalization and localization
4789support for Flask. This is based on the Python babel module as well as pytz -
4790both of which are installed automatically if you install this library.")
f210e944 4791 (license license:bsd-3)))
462bf271
DM
4792
4793(define-public python2-flask-babel
f210e944 4794 (package-with-python2 python-flask-babel))
4a093330 4795
de2966cf
EF
4796(define-public python-sqlalchemy-utils
4797 (package
4798 (name "python-sqlalchemy-utils")
fd2662e9 4799 (version "0.32.13")
de2966cf
EF
4800 (source
4801 (origin
4802 (method url-fetch)
4803 (uri (pypi-uri "SQLAlchemy-Utils" version))
4804 (sha256
4805 (base32
fd2662e9 4806 "0vsib7gidjamzsz6w4s5pdhxzxsrkghjnm4sqwk94igjrl3i5ixj"))))
de2966cf 4807 (build-system python-build-system)
35d56b7b
MB
4808 (arguments
4809 '(#:tests? #f)) ; FIXME: Many tests require a running database server.
4810 ;; #:phases
4811 ;; (modify-phases %standard-phases
4812 ;; (replace 'check
4813 ;; (lambda _
4814 ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
c22b4f87 4815 (propagated-inputs
de2966cf
EF
4816 `(("python-six" ,python-six)
4817 ("python-sqlalchemy" ,python-sqlalchemy)))
26d07efb 4818 (native-inputs
22d7360b 4819 `(("python-dateutil" ,python-dateutil)
35d56b7b
MB
4820 ("python-flexmock" ,python-flexmock)
4821 ("python-psycopg2" ,python-psycopg2)
4822 ("python-pytest" ,python-pytest)
4823 ("python-pytz" ,python-pytz)))
de2966cf
EF
4824 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
4825 (synopsis "Various utility functions for SQLAlchemy")
4826 (description
4827 "SQLAlchemy-utils provides various utility functions and custom data types
6a686b18
DM
4828for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
4829
4830You might also want to install the following optional dependencies:
4831@enumerate
4832@item @code{python-passlib}
4833@item @code{python-babel}
4834@item @code{python-cryptography}
4835@item @code{python-pytz}
4836@item @code{python-psycopg2}
4837@item @code{python-furl}
4838@item @code{python-flask-babel}
4839@end enumerate
4840")
de2966cf
EF
4841 (license license:bsd-3)))
4842
4843(define-public python2-sqlalchemy-utils
f210e944 4844 (package-with-python2 python-sqlalchemy-utils))
de2966cf 4845
af5a4602
CAW
4846(define-public python-alembic
4847 (package
4848 (name "python-alembic")
4418990d 4849 (version "0.8.10")
af5a4602
CAW
4850 (source
4851 (origin
4852 (method url-fetch)
4853 (uri (pypi-uri "alembic" version))
4854 (sha256
4855 (base32
4418990d 4856 "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
af5a4602
CAW
4857 (build-system python-build-system)
4858 (native-inputs
4859 `(("python-mock" ,python-mock)
4860 ("python-pytest-cov" ,python-pytest-cov)))
4861 (propagated-inputs
4862 `(("python-sqlalchemy" ,python-sqlalchemy)
4863 ("python-mako" ,python-mako)
4864 ("python-editor" ,python-editor)))
4865 (home-page "http://bitbucket.org/zzzeek/alembic")
4866 (synopsis
4867 "Database migration tool for SQLAlchemy")
4868 (description
4869 "Alembic is a lightweight database migration tool for usage with the
4870SQLAlchemy Database Toolkit for Python.")
f210e944 4871 (license license:expat)))
af5a4602
CAW
4872
4873(define-public python2-alembic
f210e944 4874 (package-with-python2 python-alembic))
af5a4602 4875
138adbbe
TD
4876(define-public python-autopep8
4877 (package
4878 (name "python-autopep8")
4879 (version "1.2.4")
4880 (source
4881 (origin
4882 (method url-fetch)
4883 (uri (pypi-uri "autopep8" version))
4884 (sha256
4885 (base32
4886 "18parm383lfn42a00wklv3qf20p4v277f1x3cn58x019dqk1xqrq"))))
4887 (build-system python-build-system)
4888 (propagated-inputs
4889 `(("python-pep8" ,python-pep8)))
4890 (home-page "https://github.com/hhatto/autopep8")
4891 (synopsis "Format Python code according to the PEP 8 style guide")
4892 (description
4893 "@code{autopep8} automatically formats Python code to conform to
4894the PEP 8 style guide. It uses the pycodestyle utility to determine
4895what parts of the code needs to be formatted. @code{autopep8} is
4896capable of fixing most of the formatting issues that can be reported
4897by pycodestyle.")
4898 (license (license:non-copyleft
4899 "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
4900
4901(define-public python2-autopep8
4902 (package-with-python2 python-autopep8))
4903
1671c07c
EB
4904(define-public python-distutils-extra
4905 (package
4906 (name "python-distutils-extra")
4907 (version "2.38")
4908 (source
4909 (origin
4910 (method url-fetch)
4911 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4912 version "/+download/python-distutils-extra-"
4913 version ".tar.gz"))
4914 (sha256
4915 (base32
4916 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4917 (build-system python-build-system)
1671c07c
EB
4918 (home-page "https://launchpad.net/python-distutils-extra/")
4919 (synopsis "Enhancements to Python's distutils")
4920 (description
4921 "The python-distutils-extra module enables you to easily integrate
4922gettext support, themed icons, and scrollkeeper-based documentation into
4923Python's distutils.")
3f641af0 4924 (license license:gpl2)))
1671c07c
EB
4925
4926(define-public python2-distutils-extra
4927 (package-with-python2 python-distutils-extra))
ea5456c8
EB
4928
4929(define-public python2-elib.intl
4930 (package
4931 (name "python2-elib.intl")
4932 (version "0.0.3")
4933 (source
4934 (origin
4935 ;; This project doesn't tag releases or publish tarballs, so we take
4936 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4937 (method git-fetch)
4938 (uri (git-reference
4939 (url "https://github.com/dieterv/elib.intl.git")
4940 (commit "d09997cfef")))
4941 (sha256
4942 (base32
4943 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4944 (build-system python-build-system)
ea5456c8
EB
4945 (arguments
4946 ;; incompatible with Python 3 (exception syntax)
4947 `(#:python ,python-2
b41a05ce 4948 #:tests? #f))
ea5456c8
EB
4949 (home-page "https://github.com/dieterv/elib.intl")
4950 (synopsis "Enhanced internationalization for Python")
4951 (description
4952 "The elib.intl module provides enhanced internationalization (I18N)
4953services for your Python modules and applications.")
3f641af0 4954 (license license:lgpl3+)))
ea5456c8 4955
c937562e
EB
4956(define-public python-pillow
4957 (package
4958 (name "python-pillow")
aba5182c 4959 (version "3.3.3")
c937562e
EB
4960 (source
4961 (origin
4962 (method url-fetch)
f1d9231d 4963 (uri (pypi-uri "Pillow" version))
a9681c74 4964 (patches (search-patches "python-pillow-freetype-2.7-test-failure.patch"))
c937562e
EB
4965 (sha256
4966 (base32
aba5182c 4967 "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj"))))
c937562e
EB
4968 (build-system python-build-system)
4969 (native-inputs
f3b98f4f 4970 `(("python-nose" ,python-nose)))
c937562e 4971 (inputs
5ff408d9
SB
4972 `(("freetype" ,freetype)
4973 ("lcms" ,lcms)
c937562e
EB
4974 ("zlib" ,zlib)
4975 ("libjpeg" ,libjpeg)
4976 ("openjpeg" ,openjpeg)
5ff408d9
SB
4977 ("libtiff" ,libtiff)
4978 ("libwebp" ,libwebp)))
c937562e 4979 (arguments
e5358a6b 4980 `(#:phases (modify-phases %standard-phases
e5358a6b
LC
4981 (add-after
4982 'install 'check-installed
6151120a 4983 (lambda* (#:key outputs inputs #:allow-other-keys)
e5358a6b
LC
4984 (begin
4985 (setenv "HOME" (getcwd))
6151120a
HG
4986 ;; Make installed package available for running the
4987 ;; tests
4988 (add-installed-pythonpath inputs outputs)
e5358a6b
LC
4989 (and (zero? (system* "python" "selftest.py"
4990 "--installed"))
4991 (zero? (system* "python" "test-installed.py"))))))
4992 (delete 'check))))
c937562e
EB
4993 (home-page "https://pypi.python.org/pypi/Pillow")
4994 (synopsis "Fork of the Python Imaging Library")
4995 (description
4996 "The Python Imaging Library adds image processing capabilities to your
4997Python interpreter. This library provides extensive file format support, an
4998efficient internal representation, and fairly powerful image processing
4999capabilities. The core image library is designed for fast access to data
5000stored in a few basic pixel formats. It should provide a solid foundation for
5001a general image processing tool.")
3f641af0 5002 (license (license:x11-style
c937562e
EB
5003 "http://www.pythonware.com/products/pil/license.htm"
5004 "The PIL Software License"))))
5005
5006(define-public python2-pillow
5007 (package-with-python2 python-pillow))
bb986599 5008
a415f036
FB
5009(define-public python-pycparser
5010 (package
5011 (name "python-pycparser")
5043b20d 5012 (version "2.17")
a415f036
FB
5013 (source
5014 (origin
5015 (method url-fetch)
38eb6919 5016 (uri (pypi-uri "pycparser" version))
a415f036
FB
5017 (sha256
5018 (base32
5043b20d 5019 "1dkkjri0miidqb1zcqhqljfa34fcy9k5akasgwsv6k622zlk3b0a"))))
a415f036
FB
5020 (outputs '("out" "doc"))
5021 (build-system python-build-system)
5022 (native-inputs
f3b98f4f 5023 `(("pkg-config" ,pkg-config)))
a415f036 5024 (arguments
89b5c60e 5025 `(#:phases
819939cb
TGR
5026 (modify-phases %standard-phases
5027 (replace 'check
5028 (lambda _
5029 (with-directory-excursion "tests"
5030 (zero? (system* "python" "all_tests.py")))))
5031 (add-after 'install 'install-doc
5032 (lambda* (#:key outputs #:allow-other-keys)
5033 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5034 (doc (string-append data "/doc/" ,name "-" ,version))
5035 (examples (string-append doc "/examples")))
5036 (mkdir-p examples)
5037 (for-each (lambda (file)
5038 (copy-file (string-append "." file)
5039 (string-append doc file)))
5040 '("/README.rst" "/CHANGES" "/LICENSE"))
5041 (copy-recursively "examples" examples)))))))
a415f036
FB
5042 (home-page "https://github.com/eliben/pycparser")
5043 (synopsis "C parser in Python")
5044 (description
5045 "Pycparser is a complete parser of the C language, written in pure Python
5046using the PLY parsing library. It parses C code into an AST and can serve as
5047a front-end for C compilers or analysis tools.")
3f641af0 5048 (license license:bsd-3)))
a415f036
FB
5049
5050(define-public python2-pycparser
5051 (package-with-python2 python-pycparser))
57c3f716
FB
5052
5053(define-public python-cffi
5054 (package
5055 (name "python-cffi")
029933cf 5056 (version "1.10.0")
57c3f716
FB
5057 (source
5058 (origin
5059 (method url-fetch)
2d3a437c 5060 (uri (pypi-uri "cffi" version))
89b5c60e 5061 (sha256
029933cf 5062 (base32 "1mffyilq4qycm8gs4wkgb18rnqil8a9blqq77chdlshzxc8jkc5k"))))
57c3f716
FB
5063 (build-system python-build-system)
5064 (outputs '("out" "doc"))
5065 (inputs
5066 `(("libffi" ,libffi)))
5067 (propagated-inputs ; required at run-time
5068 `(("python-pycparser" ,python-pycparser)))
5069 (native-inputs
5070 `(("pkg-config" ,pkg-config)
5071 ("python-sphinx" ,python-sphinx)
f3b98f4f 5072 ("python-pytest" ,python-pytest)))
57c3f716 5073 (arguments
295f32f3
MB
5074 `(#:modules ((ice-9 ftw)
5075 (srfi srfi-26)
5076 (guix build utils)
5077 (guix build python-build-system))
5078 #:phases
5079 (modify-phases %standard-phases
5080 (replace 'check
5081 (lambda _
5082 (setenv "PYTHONPATH"
5083 (string-append
5084 (getenv "PYTHONPATH")
5085 ":" (getcwd) "/build/"
5086 (car (scandir "build" (cut string-prefix? "lib." <>)))))
029933cf
MB
5087
5088 ;; XXX The "normal" approach of setting CC and friends does
5089 ;; not work here. Is this the correct way of doing things?
5090 (substitute* "testing/embedding/test_basic.py"
5091 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
5092 (string-append "c = distutils.ccompiler.new_compiler();"
5093 "c.set_executables(compiler='gcc',"
5094 "compiler_so='gcc',linker_exe='gcc',"
5095 "linker_so='gcc -shared')")))
5096 (substitute* "testing/cffi0/test_ownlib.py"
5097 (("'cc testownlib") "'gcc testownlib"))
5098 (zero? (system* "py.test" "-v" "c/" "testing/"))))
295f32f3
MB
5099 (add-after 'install 'install-doc
5100 (lambda* (#:key outputs #:allow-other-keys)
5101 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5102 (doc (string-append data "/doc/" ,name "-" ,version))
5103 (html (string-append doc "/html")))
5104 (with-directory-excursion "doc"
5105 (system* "make" "html")
5106 (mkdir-p html)
5107 (copy-recursively "build/html" html))
5108 (copy-file "LICENSE" (string-append doc "/LICENSE"))
5109 #t))))))
57c3f716
FB
5110 (home-page "http://cffi.readthedocs.org")
5111 (synopsis "Foreign function interface for Python")
5112 (description
5113 "Foreign Function Interface for Python calling C code.")
bd3fa666 5114 (license license:expat)))
57c3f716
FB
5115
5116(define-public python2-cffi
5117 (package-with-python2 python-cffi))
6fa14469
FB
5118
5119(define-public python-xcffib
5120 (package
5121 (name "python-xcffib")
8347c122 5122 (version "0.5.1")
6fa14469
FB
5123 (source
5124 (origin
5125 (method url-fetch)
8347c122 5126 (uri (pypi-uri "xcffib" version))
6fa14469
FB
5127 (sha256
5128 (base32
8347c122 5129 "09gbnmr5vn58mm8xi3fmd7fz6743cks6c46dphnxzwax6zsxmy60"))))
6fa14469
FB
5130 (build-system python-build-system)
5131 (inputs
482d9591 5132 `(("libxcb" ,libxcb)))
6fa14469 5133 (propagated-inputs
482d9591
HG
5134 `(("python-cffi" ,python-cffi) ; used at run time
5135 ("python-six" ,python-six)))
6fa14469 5136 (arguments
e46bf223 5137 `(;; FIXME: Tests need more work. See ".travis.yml" in the repository.
e2816ac7
MB
5138 #:tests? #f
5139 #:phases
c8cd850c 5140 (modify-phases %standard-phases
e46bf223
JMSG
5141 (add-after 'unpack 'fix-libxcb-path
5142 (lambda* (#:key inputs #:allow-other-keys)
5143 (let ((libxcb (assoc-ref inputs "libxcb")))
5144 (substitute* '("xcffib/__init__.py")
5145 (("^soname = \"") (string-append "soname = \"" libxcb "/lib/")))
5146 #t)))
c8cd850c
MB
5147 (add-after 'install 'install-doc
5148 (lambda* (#:key outputs #:allow-other-keys)
5149 (let ((doc (string-append (assoc-ref outputs "out") "/share"
5150 "/doc/" ,name "-" ,version)))
5151 (mkdir-p doc)
5152 (copy-file "README.md"
5153 (string-append doc "/README.md"))
5154 #t))))))
6fa14469
FB
5155 (home-page "https://github.com/tych0/xcffib")
5156 (synopsis "XCB Python bindings")
5157 (description
5158 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
5159support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 5160 (license license:expat)))
6fa14469
FB
5161
5162(define-public python2-xcffib
5163 (package-with-python2 python-xcffib))
5164
9e099723
FB
5165(define-public python-cairocffi
5166 (package
5167 (name "python-cairocffi")
80f78e8f 5168 (version "0.8.0")
9e099723
FB
5169 (source
5170 (origin
5171 (method url-fetch)
5172 ;; The archive on pypi is missing the 'utils' directory!
3015d455 5173 (uri (string-append "https://github.com/Kozea/cairocffi/archive/v"
9e099723 5174 version ".tar.gz"))
f586c877 5175 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
5176 (sha256
5177 (base32
80f78e8f 5178 "1rk2dvy3fxrga6bvvxc2fi5lbaynm5h4a0w0aaxyn3bc77rszjg9"))))
9e099723
FB
5179 (build-system python-build-system)
5180 (outputs '("out" "doc"))
5181 (inputs
5182 `(("gdk-pixbuf" ,gdk-pixbuf)
5183 ("cairo" ,cairo)))
5184 (native-inputs
5185 `(("pkg-config" ,pkg-config)
5186 ("python-sphinx" ,python-sphinx)
f3b98f4f 5187 ("python-docutils" ,python-docutils)))
9e099723
FB
5188 (propagated-inputs
5189 `(("python-xcffib" ,python-xcffib))) ; used at run time
5190 (arguments
a792e1aa
MB
5191 `(;; FIXME: Tests cannot find 'libcairo.so.2'.
5192 #:tests? #f
5193 #:phases
6734c7ba
MB
5194 (modify-phases %standard-phases
5195 (add-after 'install 'install-doc
5196 (lambda* (#:key inputs outputs #:allow-other-keys)
5197 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5198 (doc (string-append data "/doc/" ,name "-" ,version))
5199 (html (string-append doc "/html")))
5200 (setenv "LD_LIBRARY_PATH"
5201 (string-append (assoc-ref inputs "cairo") "/lib" ":"
5202 (assoc-ref inputs "gdk-pixbuf") "/lib"))
5203 (setenv "LANG" "en_US.UTF-8")
5204 (mkdir-p html)
5205 (for-each (lambda (file)
5206 (copy-file (string-append "." file)
5207 (string-append doc file)))
5208 '("/README.rst" "/CHANGES" "/LICENSE"))
5209 (system* "python" "setup.py" "build_sphinx")
5210 (copy-recursively "docs/_build/html" html)
5211 #t))))))
3015d455 5212 (home-page "https://github.com/Kozea/cairocffi")
9e099723
FB
5213 (synopsis "Python bindings and object-oriented API for Cairo")
5214 (description
5215 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
5216Python bindings and object-oriented API for cairo. Cairo is a 2D vector
5217graphics library with support for multiple backends including image buffers,
5218PNG, PostScript, PDF, and SVG file output.")
3f641af0 5219 (license license:bsd-3)))
9e099723
FB
5220
5221(define-public python2-cairocffi
5222 (package-with-python2 python-cairocffi))
5223
3cff95cb
RW
5224(define-public python-decorator
5225 (package
5226 (name "python-decorator")
d79fa7da 5227 (version "4.0.10")
3cff95cb
RW
5228 (source
5229 (origin
5230 (method url-fetch)
e21338be 5231 (uri (pypi-uri "decorator" version))
3cff95cb 5232 (sha256
d79fa7da 5233 (base32 "0w7hg59hlpq74jpyja4yfryap0ccjvchgpkfp20rhj9krgnrhvlw"))))
3cff95cb
RW
5234 (build-system python-build-system)
5235 (arguments '(#:tests? #f)) ; no test target
eb6e2e81 5236 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
5237 (synopsis "Python module to simplify usage of decorators")
5238 (description
5239 "The aim of the decorator module is to simplify the usage of decorators
5240for the average programmer, and to popularize decorators usage giving examples
5241of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
5242etc. The core of this module is a decorator factory.")
5243 (license license:expat)))
5244
5245(define-public python2-decorator
5246 (package-with-python2 python-decorator))
5247
2c0499ad
RW
5248(define-public python-drmaa
5249 (package
5250 (name "python-drmaa")
7c427932 5251 (version "0.7.7")
2c0499ad
RW
5252 (source
5253 (origin
5254 (method url-fetch)
d92621cf 5255 (uri (pypi-uri "drmaa" version))
2c0499ad 5256 (sha256
7c427932 5257 (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
2c0499ad
RW
5258 (build-system python-build-system)
5259 ;; The test suite requires libdrmaa which is provided by the cluster
5260 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
5261 ;; should be set to the path of the libdrmaa library.
5262 (arguments '(#:tests? #f))
5263 (native-inputs
f3b98f4f 5264 `(("python-nose" ,python-nose)))
2c0499ad
RW
5265 (home-page "https://pypi.python.org/pypi/drmaa")
5266 (synopsis "Python bindings for the DRMAA library")
5267 (description
5268 "A Python package for Distributed Resource Management (DRM) job
5269submission and control. This package is an implementation of the DRMAA 1.0
5270Python language binding specification.")
3f641af0 5271 (license license:bsd-3)))
2c0499ad
RW
5272
5273(define-public python2-drmaa
5274 (package-with-python2 python-drmaa))
5275
a70b03d4
TD
5276(define-public python-grako
5277 (package
5278 (name "python-grako")
5279 (version "3.99.9")
5280 (source
5281 (origin
5282 (method url-fetch)
5283 (uri
5284 (pypi-uri "grako" version ".zip"))
5285 (sha256
5286 (base32
5287 "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw"))))
5288 (build-system python-build-system)
5289 (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive.
5290 (native-inputs
5291 `(("unzip" ,unzip)
5292 ("python-pytest" ,python-pytest-3.0)
5293 ("python-pytest-runner" ,python-pytest-runner)))
5294 (home-page "https://bitbucket.org/neogeny/grako")
5295 (synopsis "EBNF parser generator")
5296 (description
5297 "Grako takes a grammar in a variation of EBNF as input, and outputs a
5298memoizing PEG/Packrat parser in Python.")
5299 (license license:bsd-3)))
5300
5301(define-public python2-grako
5302 (package-with-python2 python-grako))
5303
d05c6da0
RW
5304(define-public python-gridmap
5305 (package
5306 (name "python-gridmap")
5307 (version "0.13.0")
5308 (source
5309 (origin
5310 (method url-fetch)
5311 (uri (string-append
5312 "https://github.com/pygridtools/gridmap/archive/v"
5313 version ".tar.gz"))
5314 (file-name (string-append name "-" version ".tar.gz"))
5315 (sha256
5316 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
5317 (build-system python-build-system)
ad348f9f
MB
5318 (arguments
5319 '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
f22efa01 5320 (propagated-inputs
d05c6da0
RW
5321 `(("python-psutil" ,python-psutil)
5322 ("python-drmaa" ,python-drmaa)
5323 ("python-pyzmq" ,python-pyzmq)))
d05c6da0
RW
5324 (home-page "https://github.com/pygridtools/gridmap")
5325 (synopsis "Create jobs on a cluster directly from Python")
5326 (description
5327 "Gridmap is a Python package to allow you to easily create jobs on the
5328cluster directly from Python. You can directly map Python functions onto the
5329cluster without needing to write any wrapper code yourself.")
3f641af0 5330 (license license:gpl3+)))
d05c6da0
RW
5331
5332(define-public python2-gridmap
5333 (package-with-python2 python-gridmap))
5334
84342e2f
SR
5335(define-public python-honcho
5336 (package
5337 (name "python-honcho")
5338 (version "1.0.1")
5339 (source
5340 (origin
5341 (method url-fetch)
5342 (uri (string-append
5343 "https://github.com/nickstenning/honcho/archive/v"
5344 version ".tar.gz"))
5345 (file-name (string-append name "-" version ".tar.gz"))
5346 (sha256
5347 (base32 "0zizn61n5z5hq421hkypk9pw8s6fpxw30f4hsg7k4ivwzy3gjw9j"))))
5348 (build-system python-build-system)
5349 (native-inputs
5350 `(("python-pytest" ,python-pytest-3.0)
5351 ("python-mock" ,python-mock)
5352 ("python-tox" ,python-tox)
5353 ("which" ,which))) ;for tests
5354 (propagated-inputs
5355 `(("python-jinja2" ,python-jinja2)))
5356 (arguments
5357 `(#:phases
5358 (modify-phases %standard-phases
5359 (delete 'check)
5360 (add-after 'install 'check
5361 (lambda* (#:key outputs inputs #:allow-other-keys)
5362 ;; fix honcho path in testsuite
5363 (substitute* "tests/conftest.py"
5364 (("'honcho'") (string-append "'" (assoc-ref outputs "out")
5365 "/bin/honcho" "'")))
5366 ;; It's easier to run tests after install.
5367 ;; Make installed package available for running the tests
5368 (add-installed-pythonpath inputs outputs)
5369 (zero? (system* "py.test" "-v")))))))
5370 (home-page "https://github.com/nickstenning/honcho")
5371 (synopsis "Manage Procfile-based applications")
5372 (description
5373 "A Procfile is a file which describes how to run an application
5374consisting of serveral processes. honcho starts all listed processes.
5375The output of all running processes is collected by honcho and
5376displayed.")
5377 (license license:expat)))
5378
5379(define-public python2-honcho
5380 (package-with-python2 python-honcho))
5381
cb6d5c54
RW
5382(define-public python-pexpect
5383 (package
5384 (name "python-pexpect")
ed118043 5385 (version "4.2.1")
cb6d5c54
RW
5386 (source
5387 (origin
5388 (method url-fetch)
ed118043 5389 (uri (pypi-uri "pexpect" version))
cb6d5c54 5390 (sha256
ed118043 5391 (base32 "14ls7k99pwvl21zqv65kzrhccv50j89m5ij1hf0slmsvlxjj84rx"))))
cb6d5c54
RW
5392 (build-system python-build-system)
5393 (arguments
5394 `(#:phases
5395 (modify-phases %standard-phases
ed118043
MB
5396 (add-before 'check 'prepare-tests
5397 (lambda _
5398 (substitute* (find-files "tests")
5399 (("/bin/ls") (which "ls"))
5400 (("/bin/echo") (which "echo"))
5401 (("/bin/which") (which "which"))
5402 ;; Many tests try to use the /bin directory which
5403 ;; is not present in the build environment.
5404 ;; Use one that's non-empty and unlikely to change.
5405 (("/bin'") "/dev'"))
5406 ;; XXX: Socket connection test gets "Connection reset by peer".
5407 ;; Why does it not work? Delete for now.
5408 (delete-file "tests/test_socket.py")
5409 #t))
3ee9355e 5410 (replace 'check (lambda _ (zero? (system* "nosetests" "-v")))))))
cb6d5c54 5411 (native-inputs
ed118043 5412 `(("python-nose" ,python-nose)
350a3084 5413 ("python-pytest" ,python-pytest-3.0)
ed118043 5414 ("man-db" ,man-db)
dc4f697f
LC
5415 ("which" ,which)
5416 ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py'
ed118043
MB
5417 (propagated-inputs
5418 `(("python-ptyprocess" ,python-ptyprocess)))
cb6d5c54
RW
5419 (home-page "http://pexpect.readthedocs.org/")
5420 (synopsis "Controlling interactive console applications")
5421 (description
5422 "Pexpect is a pure Python module for spawning child applications;
5423controlling them; and responding to expected patterns in their output.
5424Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
5425child application and control it as if a human were typing commands.")
3f641af0 5426 (license license:isc)))
cb6d5c54
RW
5427
5428(define-public python2-pexpect
5429 (package-with-python2 python-pexpect))
5430
229ad120
RW
5431(define-public python-setuptools-scm
5432 (package
5433 (name "python-setuptools-scm")
5b1f31ff 5434 (version "1.15.0")
229ad120
RW
5435 (source (origin
5436 (method url-fetch)
383af6b0 5437 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
5438 (sha256
5439 (base32
5b1f31ff 5440 "0bwyc5markib0i7i2qlyhdzxhiywzxbkfiapldma8m91m82jvwfs"))))
229ad120
RW
5441 (build-system python-build-system)
5442 (home-page "https://github.com/pypa/setuptools_scm/")
5443 (synopsis "Manage Python package versions in SCM metadata")
5444 (description
383af6b0 5445 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
5446@dfn{software configuration management} (SCM) metadata instead of declaring
5447them as the version argument or in a SCM managed file.")
5448 (license license:expat)))
5449
5450(define-public python2-setuptools-scm
5451 (package-with-python2 python-setuptools-scm))
5452
b74270ee
RW
5453(define-public python-pathpy
5454 (package
5455 (name "python-pathpy")
5456 (version "8.1.1")
5457 (source
5458 (origin
5459 (method url-fetch)
5460 (uri (string-append "https://pypi.python.org/packages/source/p/"
5461 "path.py/path.py-" version ".tar.gz"))
5462 (sha256
5463 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
2887700e 5464 (outputs '("out" "doc"))
b74270ee
RW
5465 (build-system python-build-system)
5466 (propagated-inputs
5467 `(("python-appdirs" ,python-appdirs)))
5468 (native-inputs
f3b98f4f 5469 `(("python-setuptools-scm" ,python-setuptools-scm)
2887700e
HG
5470 ("python-sphinx" ,python-sphinx)
5471 ("python-rst.linker" ,python-rst.linker)
b74270ee
RW
5472 ("python-pytest" ,python-pytest)
5473 ("python-pytest-runner" ,python-pytest-runner)))
2887700e
HG
5474 (arguments
5475 `(#:phases
5476 (modify-phases %standard-phases
5477 (add-after 'build 'build-doc
5478 (lambda _
5479 (setenv "LANG" "en_US.UTF-8")
5480 (zero? (system* "python" "setup.py" "build_sphinx"))))
5481 (add-after 'install 'install-doc
5482 (lambda* (#:key outputs #:allow-other-keys)
5483 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5484 (doc (string-append data "/doc/" ,name "-" ,version))
5485 (html (string-append doc "/html")))
5486 (mkdir-p html)
5487 (for-each (lambda (file)
5488 (copy-file file (string-append doc "/" file)))
5489 '("README.rst" "CHANGES.rst"))
5490 (copy-recursively "build/sphinx/html" html)))))))
7bf837fd 5491 (home-page "https://github.com/jaraco/path.py")
b74270ee
RW
5492 (synopsis "Python module wrapper for built-in os.path")
5493 (description
5494 "@code{path.py} implements path objects as first-class entities, allowing
5495common operations on files to be invoked on those path objects directly.")
5496 (license license:expat)))
5497
5498(define-public python2-pathpy
5499 (package-with-python2 python-pathpy))
5500
0d34e01b
RW
5501(define-public python-pickleshare
5502 (package
5503 (name "python-pickleshare")
5504 (version "0.5")
5505 (source
5506 (origin
5507 (method url-fetch)
5508 (uri (string-append "https://pypi.python.org/packages/source/p/"
5509 "pickleshare/pickleshare-" version ".tar.gz"))
5510 (sha256
5511 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
5512 (build-system python-build-system)
5513 (propagated-inputs
5514 `(("python-pathpy" ,python-pathpy)))
5515 (home-page "https://github.com/vivainio/pickleshare")
5516 (synopsis "Tiny key value database with concurrency support")
5517 (description
5518 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
5519Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
5520shelve, many processes can access the database simultaneously. Changing a
5521value in database is immediately visible to other processes accessing the same
5522database. Concurrency is possible because the values are stored in separate
5523files. Hence the “database” is a directory where all files are governed by
5524PickleShare.")
5525 (license license:expat)))
5526
5527(define-public python2-pickleshare
5528 (package-with-python2 python-pickleshare))
5529
cd6e5189
RW
5530(define-public python-simplegeneric
5531 (package
5532 (name "python-simplegeneric")
5533 (version "0.8.1")
5534 (source
5535 (origin
5536 (method url-fetch)
5537 (uri (string-append "https://pypi.python.org/packages/source/s/"
5538 "simplegeneric/simplegeneric-" version ".zip"))
5539 (sha256
5540 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
5541 (build-system python-build-system)
5542 (native-inputs
f3b98f4f 5543 `(("unzip" ,unzip)))
cd6e5189
RW
5544 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
5545 (synopsis "Python module for simple generic functions")
5546 (description
5547 "The simplegeneric module lets you define simple single-dispatch generic
5548functions, akin to Python’s built-in generic functions like @code{len()},
5549@code{iter()} and so on. However, instead of using specially-named methods,
5550these generic functions use simple lookup tables, akin to those used by
5551e.g. @code{pickle.dump()} and other generic functions found in the Python
5552standard library.")
3f641af0 5553 (license license:zpl2.1)))
cd6e5189
RW
5554
5555(define-public python2-simplegeneric
5556 (package-with-python2 python-simplegeneric))
5557
ddc7d8ed 5558(define-public python-ipython-genutils
c4abbac3 5559 ;; TODO: This package is retired, check if can be removed, see description.
ddc7d8ed
RW
5560 (package
5561 (name "python-ipython-genutils")
5562 (version "0.1.0")
5563 (source
5564 (origin
5565 (method url-fetch)
5566 (uri (string-append "https://pypi.python.org/packages/source/i/"
5567 "ipython_genutils/ipython_genutils-"
5568 version ".tar.gz"))
5569 (sha256
5570 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
5571 (build-system python-build-system)
5572 (arguments `(#:tests? #f)) ; no tests
5573 (home-page "http://ipython.org")
5574 (synopsis "Vestigial utilities from IPython")
5575 (description
c4abbac3
HG
5576 "This package provides retired utilities from IPython. No packages
5577outside IPython/Jupyter should depend on it.
5578
5579This package shouldn't exist. It contains some common utilities shared by
5580Jupyter and IPython projects during The Big Split. As soon as possible, those
5581packages will remove their dependency on this, and this package will go
5582away.")
3f641af0 5583 (license license:bsd-3)))
ddc7d8ed
RW
5584
5585(define-public python2-ipython-genutils
5586 (package-with-python2 python-ipython-genutils))
5587
2b10eb48
RW
5588(define-public python-traitlets
5589 (package
5590 (name "python-traitlets")
a5ba1481 5591 (version "4.2.0")
2b10eb48
RW
5592 (source
5593 (origin
5594 (method url-fetch)
cc0c4fde 5595 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
5596 (sha256
5597 (base32
a5ba1481 5598 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
2b10eb48
RW
5599 (build-system python-build-system)
5600 (arguments
5601 `(#:phases
5602 (modify-phases %standard-phases
5603 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
5604 (propagated-inputs
5605 `(("python-ipython-genutils" ,python-ipython-genutils)
5606 ("python-decorator" ,python-decorator)))
5607 (native-inputs
cc0c4fde
EF
5608 `(("python-mock" ,python-mock)
5609 ("python-nose" ,python-nose)))
2b10eb48
RW
5610 (home-page "http://ipython.org")
5611 (synopsis "Configuration system for Python applications")
5612 (description
5613 "Traitlets is a framework that lets Python classes have attributes with
5614type checking, dynamically calculated default values, and ‘on change’
5615callbacks. The package also includes a mechanism to use traitlets for
5616configuration, loading values from files or from command line arguments. This
5617is a distinct layer on top of traitlets, so you can use traitlets in your code
5618without using the configuration machinery.")
3f641af0 5619 (license license:bsd-3)))
2b10eb48
RW
5620
5621(define-public python2-traitlets
5622 (package-with-python2 python-traitlets))
5623
4263b06f
RW
5624(define-public python-jupyter-core
5625 (package
5626 (name "python-jupyter-core")
45cc957c 5627 (version "4.2.1")
4263b06f
RW
5628 (source
5629 (origin
5630 (method url-fetch)
5631 (uri (string-append (pypi-uri "jupyter_core" version)))
5632 (sha256
5633 (base32
45cc957c 5634 "1cy7inv218dgh4m1fbzbsiqpz733ylgjrj62jxqpfzs3r2cm7ic9"))))
4263b06f
RW
5635 (build-system python-build-system)
5636 ;; FIXME: not sure how to run the tests
5637 (arguments `(#:tests? #f))
5638 (propagated-inputs
5639 `(("python-traitlets" ,python-traitlets)))
5640 (home-page "http://jupyter.org/")
5641 (synopsis "Jupyter base package")
5642 (description
5643 "Jupyter core is the base package on which Jupyter projects rely.")
5644 (license license:bsd-3)))
5645
5646(define-public python2-jupyter-core
5647 (package-with-python2 python-jupyter-core))
5648
9ff01f2d
RW
5649(define-public python-jupyter-client
5650 (package
5651 (name "python-jupyter-client")
5652 (version "4.4.0")
5653 (source
5654 (origin
5655 (method url-fetch)
5656 (uri (pypi-uri "jupyter_client" version))
5657 (sha256
5658 (base32
5659 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
5660 (build-system python-build-system)
5661 ;; Tests fail because of missing native python kernel which I assume is
5662 ;; provided by the ipython package, which we cannot use because it would
5663 ;; cause a dependency cycle.
5664 (arguments `(#:tests? #f))
5665 (propagated-inputs
5666 `(("python-pyzmq" ,python-pyzmq)
5667 ("python-traitlets" ,python-traitlets)
5668 ("python-jupyter-core" ,python-jupyter-core)))
5669 (home-page "http://jupyter.org/")
5670 (synopsis "Jupyter protocol implementation and client libraries")
5671 (description
5672 "The @code{jupyter_client} package contains the reference implementation
5673of the Jupyter protocol. It also provides client and kernel management APIs
5674for working with kernels, and the @code{jupyter kernelspec} entrypoint for
5675installing @code{kernelspec}s for use with Jupyter frontends.")
5676 (license license:bsd-3)))
5677
5678(define-public python2-jupyter-client
5679 (package-with-python2 python-jupyter-client))
5680
ab526102
RW
5681(define-public python-ipykernel
5682 (package
5683 (name "python-ipykernel")
f165648e 5684 (version "4.5.2")
ab526102
RW
5685 (source
5686 (origin
5687 (method url-fetch)
5688 (uri (pypi-uri "ipykernel" version))
5689 (sha256
f165648e 5690 (base32 "0qllv0k6zzv1r1cj1x2ygxmlrrqhbslzj8rc6r6fg3kc1rgz4m2s"))))
ab526102
RW
5691 (build-system python-build-system)
5692 ;; The tests load a submodule of IPython. However, IPython itself depends
5693 ;; on ipykernel.
5694 (arguments `(#:tests? #f))
5695 (propagated-inputs
5696 ;; imported at runtime during connect
5697 `(("python-jupyter-client" ,python-jupyter-client)))
5698 (home-page "http://ipython.org")
5699 (synopsis "IPython Kernel for Jupyter")
5700 (description
5701 "This package provides the IPython kernel for Jupyter.")
5702 (license license:bsd-3)))
5703
5704(define-public python2-ipykernel
5705 (package-with-python2 python-ipykernel))
5706
5ff6effc
RW
5707(define-public python-testpath
5708 (package
5709 (name "python-testpath")
5710 (version "0.2")
5711 (source
5712 (origin
5713 (method url-fetch)
5714 (uri (string-append "https://github.com/jupyter/testpath/archive/"
5715 version ".tar.gz"))
5716 (file-name (string-append name "-" version ".tar.gz"))
5717 (sha256
5718 (base32
5719 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
5720 (build-system python-build-system)
5721 (arguments
5722 `(#:tests? #f ; this package does not even have a setup.py
b320f7bf
TD
5723 #:modules ((guix build python-build-system)
5724 (guix build utils)
5725 (srfi srfi-1))
5726 #:imported-modules (,@%python-build-system-modules
5727 (srfi srfi-1))
5ff6effc
RW
5728 #:phases
5729 (modify-phases %standard-phases
5730 (delete 'install)
5731 (replace 'build
b320f7bf
TD
5732 (lambda* (#:key inputs outputs #:allow-other-keys)
5733 (let* ((version (last
5734 (string-split (assoc-ref inputs "python") #\-)))
5735 (x.y (string-join (take (string-split version #\.) 2)
5736 "."))
5737 (dir (string-append
5738 (assoc-ref outputs "out")
5739 "/lib/python" x.y "/site-packages/testpath")))
5740 (mkdir-p dir)
5741 (copy-recursively "testpath" dir))
5742 #t)))))
5ff6effc
RW
5743 (home-page "https://github.com/takluyver/testpath")
5744 (synopsis "Test utilities for code working with files and commands")
5745 (description
5746 "Testpath is a collection of utilities for Python code working with files
5747and commands. It contains functions to check things on the filesystem, and
5748tools for mocking system commands and recording calls to those.")
5749 (license license:expat)))
5750
5751(define-public python2-testpath
5752 (package-with-python2 python-testpath))
5753
ae1ab9fe
FB
5754(define-public python-ipython
5755 (package
5756 (name "python-ipython")
fb25d348 5757 (version "5.2.2")
ae1ab9fe
FB
5758 (source
5759 (origin
fceac880 5760 (method url-fetch)
accd5f99 5761 (uri (pypi-uri "ipython" version ".tar.gz"))
fceac880 5762 (sha256
fb25d348 5763 (base32 "1qhjwa9cyz1np7rhv3p4ip13lkgbqsad62l24xkwiq1ic2gwiqbf"))))
ae1ab9fe
FB
5764 (build-system python-build-system)
5765 (outputs '("out" "doc"))
3a0b1b9a
FB
5766 (propagated-inputs
5767 `(("python-pyzmq" ,python-pyzmq)
fb25d348 5768 ("python-prompt-toolkit" ,python-prompt-toolkit)
accd5f99 5769 ("python-terminado" ,python-terminado)
ae1ab9fe 5770 ("python-matplotlib" ,python-matplotlib)
5d26e542 5771 ("python-numpy" ,python-numpy)
ae1ab9fe 5772 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
5773 ("python-jinja2" ,python-jinja2)
5774 ("python-mistune" ,python-mistune)
accd5f99
RW
5775 ("python-pexpect" ,python-pexpect)
5776 ("python-pickleshare" ,python-pickleshare)
5777 ("python-simplegeneric" ,python-simplegeneric)
3a0b1b9a 5778 ("python-jsonschema" ,python-jsonschema)
accd5f99
RW
5779 ("python-traitlets" ,python-traitlets)
5780 ("python-ipykernel" ,python-ipykernel)
fb25d348 5781 ("python-nbformat" ,python-nbformat)
accd5f99
RW
5782 ("python-pygments" ,python-pygments)))
5783 (inputs
5784 `(("readline" ,readline)
5785 ("which" ,which)))
ae1ab9fe 5786 (native-inputs
fb25d348
TD
5787 `(("graphviz" ,graphviz)
5788 ("pkg-config" ,pkg-config)
accd5f99
RW
5789 ("python-requests" ,python-requests) ;; for tests
5790 ("python-testpath" ,python-testpath)
5791 ("python-nose" ,python-nose)
ae1ab9fe 5792 ("python-sphinx" ,python-sphinx)
fb25d348 5793 ("python-shpinx-rtd-theme" ,python-sphinx-rtd-theme)
2584beae
RW
5794 ;; FIXME: It's possible that a smaller union would work just as well.
5795 ("texlive" ,(texlive-union (list texlive-fonts-amsfonts
5796 texlive-fonts-ec
5797 texlive-generic-ifxetex
5798 texlive-generic-pdftex
5799 texlive-latex-amsfonts
5800 texlive-latex-capt-of
5801 texlive-latex-cmap
5802 texlive-latex-environ
5803 texlive-latex-eqparbox
5804 texlive-latex-etoolbox
5805 texlive-latex-expdlist
5806 texlive-latex-fancyhdr
5807 texlive-latex-fancyvrb
5808 texlive-latex-fncychap
5809 texlive-latex-float
5810 texlive-latex-framed
5811 texlive-latex-geometry
5812 texlive-latex-graphics
5813 texlive-latex-hyperref
5814 texlive-latex-mdwtools
5815 texlive-latex-multirow
5816 texlive-latex-oberdiek
5817 texlive-latex-parskip
5818 texlive-latex-preview
5819 texlive-latex-tabulary
5820 texlive-latex-threeparttable
5821 texlive-latex-titlesec
5822 texlive-latex-trimspaces
5823 texlive-latex-ucs
5824 texlive-latex-upquote
5825 texlive-latex-url
5826 texlive-latex-varwidth
5827 texlive-latex-wrapfig)))
f3b98f4f 5828 ("texinfo" ,texinfo)))
ae1ab9fe 5829 (arguments
89b5c60e 5830 `(#:phases
3a0b1b9a
FB
5831 (modify-phases %standard-phases
5832 (add-after
5833 'install 'install-doc
5834 (lambda* (#:key inputs outputs #:allow-other-keys)
5835 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
5836 (doc (string-append data "/doc/" ,name "-" ,version))
5837 (html (string-append doc "/html"))
5838 (man1 (string-append data "/man/man1"))
5839 (info (string-append data "/info"))
fb25d348
TD
5840 (examples (string-append doc "/examples"))
5841 (python-arg (string-append "PYTHON=" (which "python"))))
afd3d931 5842 (setenv "LANG" "en_US.utf8")
eee5cd04
HG
5843 ;; Make installed package available for running the tests
5844 (add-installed-pythonpath inputs outputs)
3a0b1b9a 5845 (with-directory-excursion "docs"
accd5f99
RW
5846 ;; FIXME: pdf fails to build
5847 ;;(system* "make" "pdf" "PAPER=a4")
fb25d348
TD
5848 (system* "make" python-arg "html")
5849 (system* "make" python-arg "info"))
3a0b1b9a
FB
5850 (copy-recursively "docs/man" man1)
5851 (copy-recursively "examples" examples)
accd5f99 5852 (copy-recursively "docs/build/html" html)
3a0b1b9a
FB
5853 ;; (copy-file "docs/build/latex/ipython.pdf"
5854 ;; (string-append doc "/ipython.pdf"))
5855 (mkdir-p info)
5856 (copy-file "docs/build/texinfo/ipython.info"
5857 (string-append info "/ipython.info"))
5858 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
5859 ;; Tests can only be run after the library has been installed and not
5860 ;; within the source directory.
5861 (delete 'check)
5862 (add-after
5863 'install 'check
eee5cd04 5864 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3a0b1b9a
FB
5865 (if tests?
5866 (with-directory-excursion "/tmp"
eee5cd04
HG
5867 ;; Make installed package available for running the tests
5868 (add-installed-pythonpath inputs outputs)
3a0b1b9a
FB
5869 (setenv "HOME" "/tmp/") ;; required by a test
5870 (zero? (system* (string-append (assoc-ref outputs "out")
5871 "/bin/iptest"))))
5872 #t)))
5873 (add-before
5874 'install 'fix-tests
5875 (lambda* (#:key inputs #:allow-other-keys)
5876 (substitute* "./IPython/utils/_process_posix.py"
5877 (("/usr/bin/env', 'which") (which "which")))
5878 (substitute* "./IPython/core/tests/test_inputtransformer.py"
5879 (("#!/usr/bin/env python")
5880 (string-append "#!" (which "python"))))
5881 ;; Disable 1 failing test
5882 (substitute* "./IPython/core/tests/test_magic.py"
5883 (("def test_dirops\\(\\):" all)
5884 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
5885 (home-page "http://ipython.org")
5886 (synopsis "IPython is a tool for interactive computing in Python")
5887 (description
5888 "IPython provides a rich architecture for interactive computing with:
5889Powerful interactive shells, a browser-based notebook, support for interactive
5890data visualization, embeddable interpreters and tools for parallel
5891computing.")
135ba811
EF
5892 (license license:bsd-3)
5893 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
5894
5895(define-public python2-ipython
135ba811 5896 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
5897 (package
5898 (inherit ipython)
3a0b1b9a 5899 ;; FIXME: add pyreadline once available.
fb25d348
TD
5900 (propagated-inputs
5901 `(("python2-backports-shutil-get-terminal-size"
5902 ,python2-backports-shutil-get-terminal-size)
5903 ("python2-pathlib2" ,python2-pathlib2)
5904 ,@(package-propagated-inputs ipython)))
e62600fe 5905 (native-inputs
135ba811 5906 `(("python2-mock" ,python2-mock)
77a6932a 5907 ,@(package-native-inputs ipython))))))
03411993
AE
5908
5909(define-public python-isodate
5910 (package
5911 (name "python-isodate")
b6785c2e 5912 (version "0.5.4")
03411993
AE
5913 (source
5914 (origin
5915 (method url-fetch)
b6785c2e 5916 (uri (pypi-uri "isodate" version))
03411993
AE
5917 (sha256
5918 (base32
b6785c2e 5919 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993 5920 (build-system python-build-system)
03411993
AE
5921 (home-page
5922 "http://cheeseshop.python.org/pypi/isodate")
5923 (synopsis
5924 "Python date parser and formatter")
5925 (description
5926 "Python-isodate is a python module for parsing and formatting
5927ISO 8601 dates, time and duration.")
3f641af0 5928 (license license:bsd-3)))
03411993
AE
5929
5930(define-public python2-isodate
5931 (package-with-python2 python-isodate))
673ab897
AE
5932
5933(define-public python-html5lib
5934 (package
5935 (name "python-html5lib")
a14061aa 5936 (version "1.0b10")
673ab897
AE
5937 (source
5938 (origin
5939 (method url-fetch)
fee04c19 5940 (uri (pypi-uri "html5lib" version))
673ab897
AE
5941 (sha256
5942 (base32
a14061aa 5943 "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd"))))
673ab897 5944 (build-system python-build-system)
3dd75476 5945 (propagated-inputs
4eb6ed28
MB
5946 `(("python-six" ,python-six)
5947 ("python-webencodings" ,python-webencodings)))
673ab897
AE
5948 (arguments
5949 `(#:test-target "check"))
5950 (home-page
5951 "https://github.com/html5lib/html5lib-python")
5952 (synopsis
5953 "Python HTML parser based on the WHATWG HTML specifcation")
5954 (description
5955 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
5956and written in Python.")
bd3fa666 5957 (license license:expat)))
673ab897
AE
5958
5959(define-public python2-html5lib
5960 (package-with-python2 python-html5lib))
e99f4211 5961
8ee62c97
RW
5962;; Needed for python-bleach, a dependency of python-notebook
5963(define-public python-html5lib-0.9
5964 (package
5965 (inherit python-html5lib)
5966 (version "0.999")
5967 (source
5968 (origin
5969 (method url-fetch)
5970 (uri (pypi-uri "html5lib" version))
5971 (sha256
5972 (base32
5973 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
5974
5975(define-public python2-html5lib-0.9
5976 (package-with-python2 python-html5lib-0.9))
5977
adbca19e
MB
5978(define-public python-webencodings
5979 (package
5980 (name "python-webencodings")
5981 (version "0.5")
5982 (source (origin
5983 (method url-fetch)
5984 (uri (pypi-uri "webencodings" version))
5985 (sha256
5986 (base32
5987 "015rw7662lkpb9aqiqah2hbizk6w531badqwjpz41rr47glmxid5"))))
5988 (build-system python-build-system)
5989 (arguments
5990 '(#:phases
5991 (modify-phases %standard-phases
5992 (replace 'check
5993 (lambda _
5994 (zero? (system* "py.test" "-v" "webencodings/tests.py")))))))
5995 (native-inputs
5996 `(("python-pytest" ,python-pytest)))
5997 (home-page "https://github.com/SimonSapin/python-webencodings")
5998 (synopsis "Character encoding aliases for legacy web content")
5999 (description
6000 "In order to be compatible with legacy web content when interpreting
6001something like @code{Content-Type: text/html; charset=latin1}, tools need
6002to use a particular set of aliases for encoding labels as well as some
6003overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
6004the web are actually aliases for @code{windows-1252}, and an @code{UTF-8}
6005or @code{UTF-16} BOM takes precedence over any other encoding declaration.
6006The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
6007defines all such details so that implementations do not have to
6008reverse-engineer each other.
6009
6010This module implements the Encoding standard and has encoding labels and
6011BOM detection, but the actual implementation for encoders and decoders
6012is Python’s.")
6013 (license license:bsd-3)))
6014
6015(define-public python2-webencodings
6016 (package-with-python2 python-webencodings))
6017
e99f4211
MW
6018(define-public python-urwid
6019 (package
6020 (name "python-urwid")
51ff41f6 6021 (version "1.3.1")
e99f4211
MW
6022 (source
6023 (origin
6024 (method url-fetch)
b97c1bfd 6025 (uri (pypi-uri "urwid" version))
e99f4211
MW
6026 (sha256
6027 (base32
51ff41f6 6028 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 6029 (build-system python-build-system)
b97c1bfd
LF
6030 (arguments
6031 `(#:phases
6032 (modify-phases %standard-phases
6033 ;; Disable failing test. Bug filed upstream:
6034 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 6035 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
6036 (add-after 'unpack 'disable-failing-test
6037 (lambda _
6038 (substitute* "urwid/tests/test_event_loops.py"
6039 (("test_remove_watch_file")
6040 "disable_remove_watch_file")))))))
e99f4211
MW
6041 (home-page "http://urwid.org")
6042 (synopsis "Console user interface library for Python")
6043 (description
6044 "Urwid is a curses-based UI/widget library for Python. It includes many
6045features useful for text console applications.")
3f641af0 6046 (license license:lgpl2.1+)))
e99f4211
MW
6047
6048(define-public python2-urwid
e9379305
MC
6049 (let ((python2-urwid (package-with-python2 python-urwid)))
6050 (package
6051 (inherit python2-urwid)
6052 (arguments
6053 (append
4fdab173
KK
6054 `(;; Explicitly using Python 2 is necessary due the argument list being
6055 ;; built from only the 'delete-test_vterm.py' phase and python-urwid's
6056 ;; package arguments, which by default assumes the use of Python 3.
6057 #:python ,python-2
6058 #:phases
e9379305
MC
6059 (modify-phases %standard-phases
6060 ;; Disable the vterm tests because of non-deterministic failures
6061 ;; with Python 2. See https://github.com/urwid/urwid/issues/230.
6062 (add-after 'unpack 'delete-test_vterm.py
6063 (delete-file "urwid/tests/test_vterm.py"))))
6064 (package-arguments python-urwid))))))
d95a56c6 6065
5220022a
JL
6066(define-public python-openid
6067 (package
6068 (name "python-openid")
6069 (version "3.0.10")
6070 (source
6071 (origin
6072 (method url-fetch)
6073 (uri (pypi-uri "python3-openid" version))
6074 (sha256
6075 (base32
6076 "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
6077 (build-system python-build-system)
0660d327
DM
6078 (arguments
6079 `(#:phases
6080 (modify-phases %standard-phases
6081 (replace 'check
6082 (lambda _
6083 (zero? (system* "./admin/runtests")))))))
f048db5a 6084 (properties `((python2-variant . ,(delay python2-openid))))
0660d327
DM
6085 (propagated-inputs
6086 `(("python-defusedxml" ,python-defusedxml)))
6087 (native-inputs
6088 `(("python-psycopg2" ,python-psycopg2)
6089 ("python-django" ,python-django)))
5220022a
JL
6090 (home-page "https://github.com/necaris/python3-openid")
6091 (synopsis "OpenID support for servers and consumers")
6092 (description "This library provides OpenID authentication for Python, both
6093for clients and servers.")
6094 (license license:asl2.0)))
6095
3ef00f56 6096(define-public python2-openid
6097 (package
6098 (name "python2-openid")
6099 (version "2.2.5")
6100 (source
6101 (origin
6102 (method url-fetch)
6103 (uri (pypi-uri "python-openid" version))
6104 (sha256
6105 (base32
6106 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
6107 (build-system python-build-system)
6108 (arguments
6109 ;; Python 3 support is in `python3-openid`, a separate package.
6110 `(#:python ,python-2))
6111 (home-page "https://github.com/openid/python-openid")
6112 (synopsis "OpenID support for servers and consumers")
6113 (description "This library provides OpenID authentication for Python, both
6114for clients and servers.")
6115 (license license:asl2.0)))
6116
47d0b292
TS
6117(define-public python-urwidtrees
6118 (package
6119 (name "python-urwidtrees")
37ec4623 6120 (version "1.0.2")
47d0b292
TS
6121 (source
6122 (origin
6123 (method url-fetch)
37ec4623
TS
6124 ;; package author intends on distributing via github rather than pypi:
6125 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
6126 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
6127 version ".tar.gz"))
6128 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
6129 (sha256
6130 (base32
37ec4623 6131 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
6132 (build-system python-build-system)
6133 (arguments
6134 '(#:tests? #f)) ; no tests
f22efa01 6135 (propagated-inputs `(("python-urwid" ,python-urwid)))
47d0b292
TS
6136 (home-page "https://github.com/pazz/urwidtrees")
6137 (synopsis "Tree widgets for urwid")
6138 (description "Urwidtrees is a Widget Container API for the @code{urwid}
6139toolkit. Use it to build trees of widgets.")
3f641af0 6140 (license license:gpl3+)))
47d0b292
TS
6141
6142(define-public python2-urwidtrees
6143 (package-with-python2 python-urwidtrees))
6144
d95a56c6
PAR
6145(define-public python-dbus
6146 (package
6147 (name "python-dbus")
6148 (version "1.2.0")
6149 (source
6150 (origin
6151 (method url-fetch)
6152 (uri (string-append
5cc3096c 6153 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
6154 version ".tar.gz"))
6155 (sha256
6156 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
6157 (build-system gnu-build-system)
6717c879
SB
6158 (arguments
6159 '(#:phases
6160 (modify-phases %standard-phases
6161 (add-before
6162 'check 'pre-check
6163 (lambda _
6164 ;; XXX: For the missing '/etc/machine-id'.
6165 (substitute* "test/run-test.sh"
6166 (("DBUS_FATAL_WARNINGS=1")
6167 "DBUS_FATAL_WARNINGS=0"))
6168 #t)))))
d95a56c6
PAR
6169 (native-inputs
6170 `(("pkg-config" ,pkg-config)))
6171 (inputs
6172 `(("python" ,python)
2e88d113 6173 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
6174 (synopsis "Python bindings for D-bus")
6175 (description "python-dbus provides bindings for libdbus, the reference
6176implementation of D-Bus.")
6177 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 6178 (license license:expat)))
b52af02b
MW
6179
6180(define-public python2-dbus
6181 (package (inherit python-dbus)
6182 (name "python2-dbus")
6183 (inputs `(("python" ,python-2)
6184 ,@(alist-delete "python"
6185 (package-inputs python-dbus)
6186 equal?)))
6187 ;; FIXME: on Python 2, the test_utf8 fails with:
6188 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
6189 (arguments `(#:tests? #f))))
a6ac8332
AE
6190
6191(define-public python-apsw
6192 (package
6193 (name "python-apsw")
917708c2 6194 (version "3.9.2-r1")
a6ac8332
AE
6195 (source
6196 (origin
6197 (method url-fetch)
917708c2 6198 (uri (pypi-uri "apsw" version))
a6ac8332
AE
6199 (sha256
6200 (base32
917708c2 6201 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
6202 (build-system python-build-system)
6203 (inputs
f3b98f4f 6204 `(("sqlite" ,sqlite)))
a6ac8332
AE
6205 (arguments
6206 `(#:phases
154d207c
MB
6207 (modify-phases %standard-phases
6208 (delete 'check)
6209 (add-after 'install 'check
6210 (lambda* (#:key inputs outputs #:allow-other-keys)
6211 (add-installed-pythonpath inputs outputs)
6212 (zero? (system* "python" "setup.py" "test")))))))
a6ac8332
AE
6213 (home-page "https://github.com/rogerbinns/apsw/")
6214 (synopsis "Another Python SQLite Wrapper")
6215 (description "APSW is a Python wrapper for the SQLite
6216embedded relational database engine. In contrast to other wrappers such as
6217pysqlite it focuses on being a minimal layer over SQLite attempting just to
6218translate the complete SQLite API into Python.")
abde5f37 6219 (license license:zlib)))
a6ac8332
AE
6220
6221(define-public python2-apsw
6222 (package-with-python2 python-apsw))
26b307e2
AE
6223
6224(define-public python-lxml
6225 (package
6226 (name "python-lxml")
d58a3203 6227 (version "3.6.0")
26b307e2
AE
6228 (source
6229 (origin
6230 (method url-fetch)
97bbc480 6231 (uri (pypi-uri "lxml" version))
26b307e2 6232 (sha256
d58a3203
EF
6233 (base32
6234 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
6235 (build-system python-build-system)
6236 (inputs
6237 `(("libxml2" ,libxml2)
f3b98f4f 6238 ("libxslt" ,libxslt)))
26b307e2
AE
6239 (home-page "http://lxml.de/")
6240 (synopsis
6241 "Python XML processing library")
6242 (description
6243 "The lxml XML toolkit is a Pythonic binding for the C libraries
6244libxml2 and libxslt.")
3f641af0 6245 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
6246
6247(define-public python2-lxml
6248 (package-with-python2 python-lxml))
4ed20663 6249
b32a1e47
CAW
6250;; beautifulsoup4 has a totally different namespace than 3.x,
6251;; and pypi seems to put it under its own name, so I guess we should too
6252(define-public python-beautifulsoup4
6253 (package
6254 (name "python-beautifulsoup4")
80e8d851 6255 (version "4.5.3")
b32a1e47
CAW
6256 (source
6257 (origin
6258 (method url-fetch)
6259 (uri (pypi-uri "beautifulsoup4" version))
6260 (sha256
6261 (base32
80e8d851 6262 "0glaw1vyxnbp03fni7h5496n6iib0n5iim4gax1n0ngscs9s075j"))))
b32a1e47 6263 (build-system python-build-system)
5f37f0b6
LF
6264 (arguments
6265 `(#:phases
6266 (modify-phases %standard-phases
6267 ;; The Python 2 source is the definitive source of beautifulsoup4. We
6268 ;; must use this conversion script when building with Python 3. The
6269 ;; conversion script also runs the tests.
6270 ;; For more information, see the file 'convert-py3k' in the source
6271 ;; distribution.
6272 (replace 'check
6273 (lambda _ (zero? (system* "./convert-py3k")))))))
b32a1e47
CAW
6274 (home-page
6275 "http://www.crummy.com/software/BeautifulSoup/bs4/")
6276 (synopsis
6277 "Python screen-scraping library")
6278 (description
6279 "Beautiful Soup is a Python library designed for rapidly setting up
6280screen-scraping projects. It offers Pythonic idioms for navigating,
6281searching, and modifying a parse tree, providing a toolkit for
6282dissecting a document and extracting what you need. It automatically
6283converts incoming documents to Unicode and outgoing documents to UTF-8.")
ee94ca11
MB
6284 (license license:expat)
6285 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
b32a1e47
CAW
6286
6287(define-public python2-beautifulsoup4
6288 (package
6289 (inherit (package-with-python2
6290 (strip-python2-variant python-beautifulsoup4)))
5f37f0b6 6291 (arguments `(#:python ,python-2))))
b32a1e47 6292
4dcb135e 6293(define-public python-cssutils
092e86f5 6294 (package
4dcb135e 6295 (name "python-cssutils")
58d1d816 6296 (version "1.0.1")
092e86f5
AE
6297 (source
6298 (origin
6299 (method url-fetch)
58d1d816 6300 (uri (pypi-uri "cssutils" version))
092e86f5 6301 (sha256
58d1d816
EF
6302 (base32
6303 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
6304 (build-system python-build-system)
6305 (native-inputs
4dcb135e 6306 `(("unzip" ,unzip))) ; for unpacking the source
092e86f5 6307 (arguments
4dcb135e 6308 `(#:tests? #f)) ;tests require python-pbr < 1.7.0
092e86f5
AE
6309 (home-page "http://cthedot.de/cssutils/")
6310 (synopsis
6311 "CSS Cascading Style Sheets library for Python")
6312 (description
6313 "Cssutils is a Python package for parsing and building CSS
6314Cascading Style Sheets. Currently it provides a DOM only and no rendering
6315options.")
3f641af0 6316 (license license:lgpl3+)))
880ff77c 6317
4dcb135e
EB
6318(define-public python2-cssutils
6319 (package-with-python2 python-cssutils))
6320
880ff77c
AE
6321(define-public python-cssselect
6322 (package
6323 (name "python-cssselect")
d5ccd9ab 6324 (version "0.9.2")
880ff77c
AE
6325 (source
6326 (origin
6327 (method url-fetch)
d5ccd9ab 6328 (uri (pypi-uri "cssselect" version))
880ff77c 6329 (sha256
d5ccd9ab
EF
6330 (base32
6331 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c 6332 (build-system python-build-system)
880ff77c
AE
6333 (arguments
6334 ;; tests fail with message
6335 ;; AttributeError: 'module' object has no attribute 'tests'
6336 `(#:tests? #f))
6337 (home-page
6338 "https://pythonhosted.org/cssselect/")
6339 (synopsis
6340 "CSS3 selector parser and translator to XPath 1.0")
6341 (description
6342 "Cssselect ia a Python module that parses CSS3 Selectors and translates
6343them to XPath 1.0 expressions. Such expressions can be used in lxml or
6344another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 6345 (license license:bsd-3)))
880ff77c
AE
6346
6347(define-public python2-cssselect
6348 (package-with-python2 python-cssselect))
60357f99 6349
03702173 6350(define-public python-openid-cla
6351 (package
6352 (name "python-openid-cla")
6353 (version "1.2")
6354 (source
6355 (origin
6356 (method url-fetch)
6357 (uri (pypi-uri "python-openid-cla" version))
6358 (sha256
6359 (base32
6360 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
6361 (build-system python-build-system)
019ccdb6 6362 (arguments '(#:tests? #f)) ; No tests.
03702173 6363 (home-page "https://github.com/puiterwijk/python-openid-cla/")
6364 (synopsis "Implementation of the OpenID CLA extension for python-openid")
6365 (description "@code{openid-cla} is an implementation of the OpenID
6366contributor license agreement extension for python-openid.")
6367 (license license:bsd-3)))
6368
6369(define-public python2-openid-cla
6370 (package-with-python2 python-openid-cla))
6371
a0e41de4 6372(define-public python-openid-teams
6373 (package
6374 (name "python-openid-teams")
6375 (version "1.1")
6376 (source
6377 (origin
6378 (method url-fetch)
6379 (uri (pypi-uri "python-openid-teams" version))
6380 (sha256
6381 (base32
6382 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
6383 (build-system python-build-system)
ac72d3d2 6384 (arguments '(#:tests? #f)) ; No tests.
a0e41de4 6385 (home-page "https://github.com/puiterwijk/python-openid-teams/")
6386 (synopsis "Implementation of the OpenID teams extension for python-openid")
6387 (description
6388 "@code{openid-teams} is an implementation of the OpenID
6389teams extension for python-openid.")
6390 (license license:bsd-3)))
6391
6392(define-public python2-openid-teams
6393 (package-with-python2 python-openid-teams))
6394
60357f99
AE
6395(define-public python-netifaces
6396 (package
6397 (name "python-netifaces")
6398 (version "0.10.4")
6399 (source
6400 (origin
6401 (method url-fetch)
6402 (uri (string-append
6403 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
6404 version
6405 ".tar.gz"))
6406 (sha256
6407 (base32
6408 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
6409 (build-system python-build-system)
60357f99
AE
6410 (home-page
6411 "https://bitbucket.org/al45tair/netifaces")
6412 (synopsis
6413 "Python module for portable network interface information")
6414 (description
6415 "Netifaces is a Python module providing information on network
6416interfaces in an easy and portable manner.")
6417 (license license:expat)))
6418
6419(define-public python2-netifaces
6420 (package-with-python2 python-netifaces))
92cb152b 6421
32f77c04
RW
6422(define-public python-networkx
6423 (package
6424 (name "python-networkx")
a4d9609c 6425 (version "1.11")
32f77c04
RW
6426 (source
6427 (origin
6428 (method url-fetch)
a4d9609c 6429 (uri (pypi-uri "networkx" version))
32f77c04 6430 (sha256
a4d9609c 6431 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
6432 (build-system python-build-system)
6433 ;; python-decorator is needed at runtime
6434 (propagated-inputs
6435 `(("python-decorator" ,python-decorator)))
6436 (native-inputs
f3b98f4f 6437 `(("python-nose" ,python-nose)))
32f77c04
RW
6438 (home-page "http://networkx.github.io/")
6439 (synopsis "Python module for creating and manipulating graphs and networks")
6440 (description
6441 "NetworkX is a Python package for the creation, manipulation, and study
6442of the structure, dynamics, and functions of complex networks.")
3f641af0 6443 (license license:bsd-3)))
32f77c04
RW
6444
6445(define-public python2-networkx
6446 (package-with-python2 python-networkx))
6447
92cb152b
RW
6448(define-public snakemake
6449 (package
6450 (name "snakemake")
1fb9b678 6451 (version "3.13.3")
92cb152b
RW
6452 (source
6453 (origin
6454 (method url-fetch)
7b93d866 6455 (uri (pypi-uri "snakemake" version))
92cb152b 6456 (sha256
1fb9b678 6457 (base32 "1nixb944r4hlskwkzc4wjs34b40xpxpw9gmhhm5p09gvmm22ap5d"))))
92cb152b 6458 (build-system python-build-system)
7b93d866
MB
6459 (arguments
6460 ;; TODO: Package missing test dependencies.
e61bc976
RW
6461 '(#:tests? #f
6462 #:phases
6463 (modify-phases %standard-phases
6464 ;; For cluster execution Snakemake will call Python. Since there is
6465 ;; no suitable PYTHONPATH set, cluster execution will fail. We fix
6466 ;; this by calling the snakemake wrapper instead.
6467 (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
6468 (lambda* (#:key outputs #:allow-other-keys)
6469 (substitute* "snakemake/executors.py"
6470 (("\\{sys.executable\\} -m snakemake")
6471 (string-append (assoc-ref outputs "out")
6472 "/bin/snakemake")))
6473 #t)))))
4f9998c6
RW
6474 (propagated-inputs
6475 `(("python-wrapt" ,python-wrapt)
6476 ("python-requests" ,python-requests)))
7b93d866 6477 (home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home")
92cb152b
RW
6478 (synopsis "Python-based execution environment for make-like workflows")
6479 (description
6480 "Snakemake aims to reduce the complexity of creating workflows by
6481providing a clean and modern domain specific specification language (DSL) in
6482Python style, together with a fast and comfortable execution environment.")
6483 (license license:expat)))
a1920bc9 6484
35de1fbd
RW
6485(define-public python-seaborn
6486 (package
6487 (name "python-seaborn")
ccc18762 6488 (version "0.7.1")
35de1fbd
RW
6489 (source
6490 (origin
6491 (method url-fetch)
fc899d4f 6492 (uri (pypi-uri "seaborn" version))
35de1fbd 6493 (sha256
ccc18762 6494 (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
35de1fbd 6495 (build-system python-build-system)
6f976df6
MB
6496 (arguments
6497 '(#:tests? #f)) ; Tests requires a running X11 server.
35de1fbd
RW
6498 (propagated-inputs
6499 `(("python-pandas" ,python-pandas)
6500 ("python-matplotlib" ,python-matplotlib)
6501 ("python-scipy" ,python-scipy)))
35de1fbd
RW
6502 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
6503 (synopsis "Statistical data visualization")
6504 (description
6505 "Seaborn is a library for making attractive and informative statistical
6506graphics in Python. It is built on top of matplotlib and tightly integrated
6507with the PyData stack, including support for numpy and pandas data structures
6508and statistical routines from scipy and statsmodels.")
3f641af0 6509 (license license:bsd-3)
fc899d4f 6510 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
6511
6512(define-public python2-seaborn
fc899d4f
EF
6513 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
6514 (package
6515 (inherit base)
6516 (propagated-inputs `(("python2-pytz" ,python2-pytz)
00e10c6e 6517 ,@(package-propagated-inputs base))))))
35de1fbd 6518
58a35665
MB
6519(define-public python-mpmath
6520 (package
6521 (name "python-mpmath")
6522 (version "0.19")
6523 (source (origin
6524 (method url-fetch)
6525 (uri (string-append "http://mpmath.org/files/mpmath-"
6526 version ".tar.gz"))
6527 (sha256
6528 (base32
6529 "08ijsr4ifrqv3cjc26mkw0dbvyygsa99in376hr4b96ddm1gdpb8"))))
6530 (build-system python-build-system)
6531 (arguments
6532 '(#:phases
6533 (modify-phases %standard-phases
6534 (replace 'check
6535 (lambda _
6536 (zero?
6537 (system* "python" "mpmath/tests/runtests.py" "-local")))))))
6538 (home-page "http://mpmath.org")
6539 (synopsis "Arbitrary-precision floating-point arithmetic in python")
6540 (description
6541 "@code{mpmath} can be used as an arbitrary-precision substitute for
6542Python's float/complex types and math/cmath modules, but also does much
6543more advanced mathematics.")
6544 (license license:bsd-3)))
6545
6546(define-public python2-mpmath
6547 (package-with-python2 python-mpmath))
35de1fbd 6548
90fc547f
RW
6549(define-public python-sympy
6550 (package
6551 (name "python-sympy")
52f622ef 6552 (version "1.0")
90fc547f
RW
6553 (source
6554 (origin
6555 (method url-fetch)
6556 (uri (string-append
6557 "https://github.com/sympy/sympy/releases/download/sympy-"
6558 version "/sympy-" version ".tar.gz"))
6559 (sha256
52f622ef 6560 (base32 "1bpzjwr9hrr7w88v4vgnj9lr6vxcldc94si13n8xpr1rv08d5b1y"))))
90fc547f 6561 (build-system python-build-system)
52f622ef
MB
6562 (propagated-inputs
6563 `(("python-mpmath" ,python-mpmath)))
90fc547f
RW
6564 (home-page "http://www.sympy.org/")
6565 (synopsis "Python library for symbolic mathematics")
6566 (description
6567 "SymPy is a Python library for symbolic mathematics. It aims to become a
6568full-featured computer algebra system (CAS) while keeping the code as simple
6569as possible in order to be comprehensible and easily extensible.")
3f641af0 6570 (license license:bsd-3)))
90fc547f
RW
6571
6572(define-public python2-sympy
6573 (package-with-python2 python-sympy))
6574
e8c9b010
SR
6575(define-public python-q
6576 (package
6577 (name "python-q")
6578 (version "2.6")
6579 (source
6580 (origin
6581 (method url-fetch)
6582 (uri (pypi-uri "q" version))
6583 (sha256
6584 (base32
6585 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
6586 (build-system python-build-system)
6587 (home-page "https://github.com/zestyping/q")
6588 (synopsis "Quick-and-dirty debugging output for tired programmers")
6589 (description
6590 "q is a Python module for \"print\" style of debugging Python code. It
6591provides convenient short API for print out of values, tracebacks, and
6592falling into the Python interpreter.")
f210e944 6593 (license license:asl2.0)))
e8c9b010
SR
6594
6595(define-public python2-q
f210e944 6596 (package-with-python2 python-q))
e8c9b010 6597
a1920bc9
FB
6598(define-public python-testlib
6599 (package
6600 (name "python-testlib")
6601 (version "0.6.5")
6602 (source
6603 (origin
6604 (method url-fetch)
6605 (uri (string-append
6606 "https://pypi.python.org/packages/source/t/testlib/testlib-"
6607 version ".zip"))
6608 (sha256
6609 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
6610 (build-system python-build-system)
a1920bc9 6611 (native-inputs
632735f2 6612 `(("unzip" ,unzip))) ; for unpacking the source
a1920bc9
FB
6613 (synopsis "Python micro test suite harness")
6614 (description "A micro unittest suite harness for Python.")
6615 (home-page "https://github.com/trentm/testlib")
1cb9c006 6616 (license license:expat)))
a1920bc9
FB
6617
6618(define-public python2-testlib
6619 (package-with-python2 python-testlib))
db62afa5
LC
6620
6621(define-public python2-xlib
6622 (package
6623 (name "python2-xlib")
6624 (version "0.14")
6625 (source (origin
6626 (method url-fetch)
de67e922
LF
6627 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
6628 "/" version "/"
db62afa5
LC
6629 "python-xlib-" version ".tar.gz"))
6630 (sha256
6631 (base32
6632 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
6633 (build-system python-build-system)
6634 (arguments
6635 `(#:python ,python-2 ;Python 2 only
6636 #:tests? #f)) ;no tests
db62afa5
LC
6637 (home-page "http://python-xlib.sourceforge.net/")
6638 (synopsis "Python X11 client library")
6639 (description
6640 "The Python X Library is intended to be a fully functional X client
6641library for Python programs. It is useful to implement low-level X clients.
6642It is written entirely in Python.")
3f641af0 6643 (license license:gpl2+)))
0234ca06
DT
6644
6645(define-public python-singledispatch
6646 (package
6647 (name "python-singledispatch")
6648 (version "3.4.0.3")
6649 (source
6650 (origin
6651 (method url-fetch)
bdb67d84 6652 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
6653 (sha256
6654 (base32
6655 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
6656 (build-system python-build-system)
5e1c9d24
HG
6657 (native-inputs
6658 `(("python-six" ,python-six))) ; required for conversion, not at run-time
0234ca06
DT
6659 (home-page
6660 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
6661 (synopsis "Backport of singledispatch feature from Python 3.4")
6662 (description
6663 "This library brings functools.singledispatch from Python 3.4 to Python
66642.6-3.3.")
6665 (license license:expat)))
6666
6667(define-public python2-singledispatch
6668 (package-with-python2 python-singledispatch))
feaae484 6669
310d218f
RW
6670(define-public python-tornado
6671 (package
6672 (name "python-tornado")
6fdeb324 6673 (version "4.5.1")
310d218f
RW
6674 (source
6675 (origin
6676 (method url-fetch)
a724924b 6677 (uri (pypi-uri "tornado" version))
310d218f 6678 (sha256
6fdeb324 6679 (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv"))))
310d218f 6680 (build-system python-build-system)
3fe2c209
MB
6681 (arguments
6682 '(;; FIXME: Two tests error out with:
6683 ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
6684 ;; #:phases
6685 ;; (modify-phases %standard-phases
6686 ;; (replace 'check
6687 ;; (lambda _
6688 ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
6689 ;; ;; "tornado/platform/kqueue.py". This is the supported method:
6690 ;; (zero? (system* "python" "-m" "tornado.test")))))
6691 #:tests? #f))
310d218f 6692 (native-inputs
b455439b 6693 `(("python-certifi" ,python-certifi)))
f22efa01 6694 (propagated-inputs
b455439b 6695 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 6696 (home-page "http://www.tornadoweb.org/")
310d218f
RW
6697 (synopsis "Python web framework and asynchronous networking library")
6698 (description
6699 "Tornado is a Python web framework and asynchronous networking library,
6700originally developed at FriendFeed. By using non-blocking network I/O,
6701Tornado can scale to tens of thousands of open connections, making it ideal
6702for long polling, WebSockets, and other applications that require a long-lived
6703connection to each user.")
3f641af0 6704 (license license:asl2.0)
b455439b 6705 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
6706
6707(define-public python2-tornado
b455439b 6708 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f 6709 (package (inherit tornado)
f22efa01 6710 (propagated-inputs
310d218f
RW
6711 `(("python2-backport-ssl-match-hostname"
6712 ,python2-backport-ssl-match-hostname)
b455439b 6713 ("python2-singledispatch" ,python2-singledispatch)
f22efa01 6714 ,@(package-propagated-inputs tornado))))))
310d218f 6715
c795bc79
CB
6716(define-public python-tornado-http-auth
6717 (package
6718 (name "python-tornado-http-auth")
6719 (version "1.1.0")
6720 (source
6721 (origin
6722 (method url-fetch)
6723 (uri (pypi-uri "tornado-http-auth" version))
6724 (sha256
6725 (base32
6726 "0znrgqd7k2s4ia474xizi6h3061zj4sn5n6cq76bkwl3wwshifn5"))))
6727 (build-system python-build-system)
6728 (propagated-inputs
6729 `(("python-tornado" ,python-tornado)))
6730 (home-page
6731 "https://github.com/gvalkov/tornado-http-auth")
6732 (synopsis
6733 "Digest and basic authentication module for Tornado")
6734 (description
6735 "Provides support for adding authentication to services using the Tornado
6736web framework, either via the basic or digest authentication schemes.")
6737 (license license:asl2.0)))
6738
6b59fc10
EF
6739;; the python- version can be removed with python-3.5
6740(define-public python-backports-abc
6741 (package
6742 (name "python-backports-abc")
27f9148e 6743 (version "0.5")
6b59fc10
EF
6744 (source
6745 (origin
6746 (method url-fetch)
6747 (uri (pypi-uri "backports_abc" version))
6748 (sha256
6749 (base32
27f9148e 6750 "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
6b59fc10 6751 (build-system python-build-system)
6b59fc10 6752 (home-page "https://github.com/cython/backports_abc")
66e07664 6753 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
6754 (description
6755 "Python-backports-abc provides a backport of additions to the
6756'collections.abc' module in Python-3.5.")
3f641af0 6757 (license license:psfl)))
6b59fc10
EF
6758
6759(define-public python2-backports-abc
6760 (package-with-python2 python-backports-abc))
6761
4ff9e868
OP
6762(define-public python-backports-csv
6763 (package
6764 (name "python-backports-csv")
6765 (version "1.0.5")
6766 (source
6767 (origin
6768 (method url-fetch)
6769 (uri (pypi-uri "backports.csv" version))
6770 (sha256
6771 (base32
6772 "1imzbrradkfn8s2m1qcimyn74dn1mz2p3j381jljn166rf2i6hlc"))))
6773 (build-system python-build-system)
6774 (home-page "https://github.com/ryanhiebert/backports.csv")
6775 (synopsis "Backport of Python 3's csv module for Python 2")
6776 (description
6777 "Provides a backport of Python 3's @code{csv} module for parsing
6778comma separated values. The API of the @code{csv} module in Python 2
6779is drastically different from the @code{csv} module in Python 3.
6780This is due, for the most part, to the difference between str in
6781Python 2 and Python 3.")
6782 (license license:psfl)))
6783
6784(define-public python2-backports-csv
6785 (package-with-python2 python-backports-csv))
6786
ec074213
TD
6787(define-public python2-backports-shutil-get-terminal-size
6788 (package
6789 (name "python2-backports-shutil-get-terminal-size")
6790 (version "1.0.0")
6791 (source
6792 (origin
6793 (method url-fetch)
6794 (uri (pypi-uri "backports.shutil_get_terminal_size" version))
6795 (sha256
6796 (base32
6797 "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki"))))
6798 (build-system python-build-system)
6799 (arguments
c0446791
MB
6800 `(#:python ,python-2
6801 #:phases
6802 (modify-phases %standard-phases
6803 (replace 'check
6804 (lambda _
6805 (zero? (system* "py.test" "-v")))))))
6806 (native-inputs
6807 `(("python2-pytest" ,python2-pytest)))
ec074213
TD
6808 (home-page "https://github.com/chrippa/backports.shutil_get_terminal_size")
6809 (synopsis "Backport of Python 3.3's @code{shutil.get_terminal_size}")
6810 (description
6811 "This package provides a backport of the @code{get_terminal_size
6812function} from Python 3.3's @code{shutil}.
6813Unlike the original version it is written in pure Python rather than C,
6814so it might be a tiny bit slower.")
6815 (license license:expat)))
6816
feaae484
SB
6817(define-public python-waf
6818 (package
6819 (name "python-waf")
27bf00e6 6820 (version "1.9.8")
feaae484
SB
6821 (source (origin
6822 (method url-fetch)
bae67829 6823 (uri (string-append "https://waf.io/"
feaae484
SB
6824 "waf-" version ".tar.bz2"))
6825 (sha256
6826 (base32
27bf00e6 6827 "0wl4cnmp06lfxqjxaan58bqxn27smhydz0sg5prrfbl3bsw4gv6q"))))
feaae484
SB
6828 (build-system python-build-system)
6829 (arguments
6830 '(#:phases
6831 (modify-phases %standard-phases
6832 (replace 'build
7dd55dfe
EF
6833 (lambda _
6834 (zero? (system* "python" "waf-light" "configure" "build"))))
feaae484 6835 (replace 'check
7dd55dfe
EF
6836 (lambda _
6837 (zero? (system* "python" "waf" "--version"))))
feaae484 6838 (replace 'install
7dd55dfe
EF
6839 (lambda _
6840 (copy-file "waf" %output))))))
27bf00e6 6841 (home-page "https://waf.io/")
feaae484
SB
6842 (synopsis "Python-based build system")
6843 (description
6844 "Waf is a Python-based framework for configuring, compiling and installing
6845applications.")
3f641af0 6846 (license license:bsd-3)))
feaae484
SB
6847
6848(define-public python2-waf
6849 (package-with-python2 python-waf))
45203542
RW
6850
6851(define-public python-pyzmq
6852 (package
6853 (name "python-pyzmq")
3655ee76 6854 (version "15.1.0")
45203542
RW
6855 (source
6856 (origin
6857 (method url-fetch)
3655ee76 6858 (uri (pypi-uri "pyzmq" version))
45203542 6859 (sha256
3655ee76 6860 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
6861 (build-system python-build-system)
6862 (arguments
6863 `(#:configure-flags
6864 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
6865 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
6866 ;; --inplace' for 'python setup.py test' to work.
6867 #:tests? #f))
6868 (inputs
6869 `(("zeromq" ,zeromq)))
6870 (native-inputs
6871 `(("pkg-config" ,pkg-config)
f3b98f4f 6872 ("python-nose" ,python-nose)))
7bf837fd 6873 (home-page "https://github.com/zeromq/pyzmq")
45203542
RW
6874 (synopsis "Python bindings for 0MQ")
6875 (description
6876 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 6877 (license license:bsd-4)))
45203542
RW
6878
6879(define-public python2-pyzmq
6880 (package-with-python2 python-pyzmq))
d889e6c4
CR
6881
6882(define-public python-pep8
6883 (package
6884 (name "python-pep8")
db251311 6885 (version "1.7.0")
d889e6c4
CR
6886 (source
6887 (origin
6888 (method url-fetch)
db251311 6889 (uri (pypi-uri "pep8" version))
d889e6c4
CR
6890 (sha256
6891 (base32
db251311 6892 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4 6893 (build-system python-build-system)
d889e6c4
CR
6894 (home-page "http://pep8.readthedocs.org/")
6895 (synopsis "Python style guide checker")
6896 (description
6897 "This tools checks Python code against some of the style conventions in
6898PEP 8.")
6899 (license license:expat)))
6900
6901(define-public python2-pep8
6902 (package-with-python2 python-pep8))
e31d7f44
CR
6903
6904(define-public python-pyflakes
6905 (package
6906 (name "python-pyflakes")
2abc3972 6907 (version "1.0.0")
e31d7f44
CR
6908 (source
6909 (origin
6910 (method url-fetch)
2abc3972 6911 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
6912 (sha256
6913 (base32
2abc3972 6914 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44 6915 (build-system python-build-system)
e31d7f44
CR
6916 (home-page
6917 "https://github.com/pyflakes/pyflakes")
6918 (synopsis "Passive checker of Python programs")
6919 (description
6920 "Pyflakes statically checks Python source code for common errors.")
6921 (license license:expat)))
a59e017c 6922
7261d9eb
CR
6923(define-public python2-pyflakes
6924 (package-with-python2 python-pyflakes))
6925
a59e017c
CR
6926(define-public python-mccabe
6927 (package
6928 (name "python-mccabe")
c6ebd40d 6929 (version "0.4.0")
a59e017c
CR
6930 (source
6931 (origin
6932 (method url-fetch)
c6ebd40d 6933 (uri (pypi-uri "mccabe" version))
a59e017c
CR
6934 (sha256
6935 (base32
c6ebd40d 6936 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c 6937 (build-system python-build-system)
328bb95d 6938 (native-inputs
c6ebd40d 6939 `(("python-pytest" ,python-pytest)
f3b98f4f 6940 ("python-pytest-runner" ,python-pytest-runner)))
a59e017c
CR
6941 (home-page "https://github.com/flintwork/mccabe")
6942 (synopsis "McCabe checker, plugin for flake8")
6943 (description
6944 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
6945complexity of Python source code.")
7362371d 6946 (license license:expat)))
a59e017c
CR
6947
6948(define-public python2-mccabe
6949 (package-with-python2 python-mccabe))
e8df8f47 6950
7477fbb1
CR
6951(define-public python-mccabe-0.2.1
6952 (package (inherit python-mccabe)
6953 (version "0.2.1")
6954 (source
6955 (origin
6956 (method url-fetch)
6957 (uri (pypi-uri "mccabe" version))
6958 (sha256
6959 (base32
f3b98f4f 6960 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))))
7477fbb1
CR
6961
6962(define-public python2-mccabe-0.2.1
6963 (package-with-python2 python-mccabe-0.2.1))
6964
e8df8f47
CR
6965;; Flake8 2.4.1 requires an older version of pep8.
6966;; This should be removed ASAP.
6967(define-public python-pep8-1.5.7
6968 (package (inherit python-pep8)
6969 (version "1.5.7")
6970 (source
6971 (origin
6972 (method url-fetch)
6973 (uri (string-append
6974 "https://pypi.python.org/packages/source/p/pep8/pep8-"
6975 version
6976 ".tar.gz"))
6977 (sha256
6978 (base32
73e3060d
MB
6979 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))
6980 (arguments
6981 ;; XXX Tests not compatible with Python 3.5.
6982 '(#:tests? #f))))
e8df8f47
CR
6983
6984(define-public python2-pep8-1.5.7
6985 (package-with-python2 python-pep8-1.5.7))
6986
6987;; Flake8 2.4.1 requires an older version of pyflakes.
6988;; This should be removed ASAP.
6989(define-public python-pyflakes-0.8.1
6990 (package (inherit python-pyflakes)
6991 (version "0.8.1")
6992 (source
6993 (origin
6994 (method url-fetch)
6995 (uri (string-append
6996 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
6997 version
6998 ".tar.gz"))
6999 (sha256
7000 (base32
0d84e1ef
MB
7001 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))
7002 (arguments
7003 ;; XXX Tests not compatible with Python 3.5.
7004 '(#:tests? #f))))
e8df8f47
CR
7005
7006(define-public python2-pyflakes-0.8.1
7261d9eb 7007 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
7008
7009(define-public python-flake8
7010 (package
7011 (name "python-flake8")
43789136 7012 (version "2.5.4")
e8df8f47
CR
7013 (source
7014 (origin
7015 (method url-fetch)
1b995533 7016 (uri (pypi-uri "flake8" version))
e8df8f47
CR
7017 (sha256
7018 (base32
011271c7
HG
7019 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))
7020 (modules '((guix build utils)))
7021 (snippet
7022 '(begin
7023 ;; Remove pre-compiled .pyc files from source.
7024 (for-each delete-file-recursively
7025 (find-files "." "__pycache__" #:directories? #t))
7026 (for-each delete-file (find-files "." "\\.pyc$"))
7027 #t))))
e8df8f47 7028 (build-system python-build-system)
482d9591 7029 (propagated-inputs
f3b98f4f 7030 `(("python-pep8" ,python-pep8)
43789136 7031 ("python-pyflakes" ,python-pyflakes)
482d9591 7032 ("python-mccabe" ,python-mccabe)))
328bb95d
HG
7033 (native-inputs
7034 `(("python-mock" ,python-mock) ; TODO: only required for < 3.3
e8df8f47
CR
7035 ("python-nose" ,python-nose)))
7036 (home-page "https://gitlab.com/pycqa/flake8")
7037 (synopsis
7038 "The modular source code checker: pep8, pyflakes and co")
7039 (description
7040 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
7041 (license license:expat)))
7042
7043(define-public python2-flake8
7044 (package-with-python2 python-flake8))
61b9ac53 7045
1f42d824
MFM
7046(define-public python-flake8-polyfill
7047 (package
7048 (name "python-flake8-polyfill")
7049 (version "1.0.1")
7050 (source
7051 (origin
7052 (method url-fetch)
7053 (uri (pypi-uri "flake8-polyfill" version))
7054 (sha256
7055 (base32
7056 "02gn2wxvh9vnf7m7dld7ca4l60mg5c370hv3swwppkngwaqmcw67"))))
7057 (build-system python-build-system)
2c1cad7a
MB
7058 (arguments
7059 '(#:phases
7060 (modify-phases %standard-phases
7061 (replace 'check
7062 (lambda _
7063 (setenv "PYTHONPATH"
7064 (string-append (getcwd) "/build/lib:"
7065 (getenv "PYTHONPATH")))
7066 (zero? (system* "py.test" "-v")))))))
7067 (native-inputs
7068 `(("python-flake8" ,python-flake8)
7069 ("python-mock" ,python-mock)
7070 ("python-pycodestyle" ,python-pycodestyle)
7071 ("python-pytest" ,python-pytest)))
1f42d824
MFM
7072 (home-page "https://gitlab.com/pycqa/flake8-polyfill")
7073 (synopsis "Polyfill package for Flake8 plugins")
7074 (description
7075 "This package that provides some compatibility helpers for Flake8
7076plugins that intend to support Flake8 2.x and 3.x simultaneously.")
7077 (license license:expat)))
7078
7079(define-public python2-flake8-polyfill
7080 (package-with-python2 python-flake8-polyfill))
7081
61b9ac53
FB
7082(define-public python-mistune
7083 (package
7084 (name "python-mistune")
08b81336 7085 (version "0.7.3")
61b9ac53
FB
7086 (source
7087 (origin
7088 (method url-fetch)
eff8d773 7089 (uri (pypi-uri "mistune" version))
61b9ac53
FB
7090 (sha256
7091 (base32
08b81336 7092 "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
61b9ac53 7093 (build-system python-build-system)
328bb95d 7094 (native-inputs
f3b98f4f 7095 `(("python-nose" ,python-nose)
61b9ac53
FB
7096 ("python-cython" ,python-cython)))
7097 (home-page "https://github.com/lepture/mistune")
7098 (synopsis "Markdown parser in pure Python")
7099 (description "This package provides a fast markdown parser in pure
7100Python.")
3f641af0 7101 (license license:bsd-3)))
61b9ac53
FB
7102
7103(define-public python2-mistune
7104 (package-with-python2 python-mistune))
6d992d07 7105
b9893908
EE
7106(define-public python-markdown
7107 (package
7108 (name "python-markdown")
4ffbe8c6 7109 (version "2.6.8")
b9893908
EE
7110 (source
7111 (origin
7112 (method url-fetch)
7113 (uri (pypi-uri "Markdown" version))
7114 (sha256
7115 (base32
4ffbe8c6 7116 "0cqfhr1km2s5d8jm6hbwgkrrj9hvkjf2gab3s2axlrw1clgaij0a"))))
b9893908
EE
7117 (build-system python-build-system)
7118 (arguments
7119 `(#:phases
7120 (modify-phases %standard-phases
7121 (replace 'check
7122 (lambda _
7123 (zero? (system* "python" "run-tests.py")))))))
7124 (native-inputs
7125 `(("python-nose" ,python-nose)
7126 ("python-pyyaml" ,python-pyyaml)))
7127 (home-page "https://pythonhosted.org/Markdown/")
7128 (synopsis "Python implementation of Markdown")
7129 (description
7130 "This package provides a Python implementation of John Gruber's
7131Markdown. The library features international input, various Markdown
7132extensions, and several HTML output formats. A command line wrapper
7133markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 7134 (license license:bsd-3)))
b9893908
EE
7135
7136(define-public python2-markdown
7137 (package-with-python2 python-markdown))
7138
6d992d07
FB
7139(define-public python-ptyprocess
7140 (package
7141 (name "python-ptyprocess")
70fc93cb 7142 (version "0.5.1")
6d992d07
FB
7143 (source
7144 (origin
7145 (method url-fetch)
7146 (uri (string-append
7147 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
7148 version ".tar.gz"))
7149 (sha256
7150 (base32
70fc93cb 7151 "19l1xrjn4l9gjz01s3vg92gn2dd9d8mw1v86ppkzlnr9m5iwwc05"))))
6d992d07 7152 (build-system python-build-system)
328bb95d 7153 (native-inputs
f3b98f4f 7154 `(("python-nose" ,python-nose)))
6d992d07
FB
7155 (arguments
7156 `(#:phases
7157 (modify-phases %standard-phases
7158 (replace 'check
7159 (lambda _
7160 (zero? (system* "nosetests")))))))
7161 (home-page "https://github.com/pexpect/ptyprocess")
7162 (synopsis "Run a subprocess in a pseudo terminal")
7163 (description
7164 "This package provides a Python library used to launch a subprocess in a
7165pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 7166 (license license:isc)))
6d992d07
FB
7167
7168(define-public python2-ptyprocess
7169 (package-with-python2 python-ptyprocess))
4aadb1df 7170
df893a38
MB
7171(define-public python-cram
7172 (package
7173 (name "python-cram")
7174 (version "0.7")
7175 (home-page "https://bitheap.org/cram/")
7176 (source (origin
7177 (method url-fetch)
7178 (uri (list (string-append home-page "cram-"
7179 version ".tar.gz")
7180 (pypi-uri "cram" version)))
7181 (sha256
7182 (base32
7183 "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
7184 (arguments
7185 '(#:phases
7186 (modify-phases %standard-phases
7187 (add-after 'unpack 'patch-source
7188 (lambda _
7189 (substitute* (find-files "cram" ".*\\.py$")
7190 ;; Replace default shell path.
7191 (("/bin/sh") (which "sh")))
7192 (substitute* (find-files "tests" ".*\\.t$")
7193 (("md5") "md5sum")
7194 (("/bin/bash") (which "bash"))
7195 (("/bin/sh") (which "sh")))
7196 (substitute* "cram/_test.py"
7197 ;; This hack works around a bug triggered by substituting
7198 ;; the /bin/sh paths. "tests/usage.t" compares the output of
7199 ;; "cram -h", which breaks the output at 80 characters. This
7200 ;; causes the line showing the default shell to break into two
7201 ;; lines, but the test expects a single line...
7202 (("env\\['COLUMNS'\\] = '80'")
7203 "env['COLUMNS'] = '160'"))
7204 #t))
7205 (delete 'check)
7206 (add-after 'install 'check
7207 ;; The test phase uses the built library and executable.
7208 ;; It's easier to run it after install since the build
7209 ;; directory contains version-specific PATH.
7210 (lambda* (#:key inputs outputs #:allow-other-keys)
7211 (add-installed-pythonpath inputs outputs)
7212 (setenv "PATH" (string-append (getenv "PATH") ":"
7213 (assoc-ref outputs "out") "/bin"))
7214 (zero? (system* "make" "test")))))))
7215 (build-system python-build-system)
7216 (native-inputs
7217 `(("python-coverage" ,python-coverage)
7218 ("which" ,which)))
7219 (synopsis "Simple testing framework for command line applications")
7220 (description
7221 "Cram is a functional testing framework for command line applications.
7222Cram tests look like snippets of interactive shell sessions. Cram runs each
7223command and compares the command output in the test with the command’s actual
7224output.")
7225 (license license:gpl2+)))
7226
7227(define-public python2-cram
7228 (package-with-python2 python-cram))
7229
4aadb1df
FB
7230(define-public python-terminado
7231 (package
7232 (name "python-terminado")
783fb0a3 7233 (version "0.6")
4aadb1df
FB
7234 (source
7235 (origin
7236 (method url-fetch)
783fb0a3 7237 (uri (pypi-uri "terminado" version))
4aadb1df
FB
7238 (sha256
7239 (base32
783fb0a3 7240 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
7241 (build-system python-build-system)
7242 (propagated-inputs
7243 `(("python-tornado" ,python-tornado)
7244 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
7245 (native-inputs
7246 `(("python-nose" ,python-nose)))
4aadb1df
FB
7247 (arguments
7248 `(#:phases
7249 (modify-phases %standard-phases
7250 (replace 'check
7251 (lambda _
7252 (zero? (system* "nosetests")))))))
7253 (home-page "https://github.com/takluyver/terminado")
7254 (synopsis "Terminals served to term.js using Tornado websockets")
7255 (description "This package provides a Tornado websocket backend for the
7256term.js Javascript terminal emulator library.")
3f641af0 7257 (license license:bsd-2)
783fb0a3 7258 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
7259
7260(define-public python2-terminado
783fb0a3 7261 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 7262 (package (inherit terminado)
783fb0a3
EF
7263 (propagated-inputs
7264 `(("python2-backport-ssl-match-hostname"
7265 ,python2-backport-ssl-match-hostname)
00e10c6e 7266 ,@(package-propagated-inputs terminado))))))
5faa5ce4 7267
789de5e2 7268(define-public python-straight-plugin
7269 (package
7270 (name "python-straight-plugin")
7271 (version "1.4.1")
7272 (source
7273 (origin
7274 (method url-fetch)
7275 (uri (pypi-uri "straight.plugin" version))
7276 (sha256
7277 (base32
7278 "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
7279 (build-system python-build-system)
7280 (home-page "https://github.com/ironfroggy/straight.plugin")
7281 (synopsis "Simple namespaced plugin facility")
7282 (description "Straight Plugin provides a type of plugin you can create from
7283almost any existing Python modules, and an easy way for outside developers to
7284add functionality and customization to your projects with their own plugins.")
7285 (license license:expat)))
7286
7287(define-public python2-straight-plugin
7288 (package-with-python2 python-straight-plugin))
7289
d582eaac
SB
7290(define-public python-fonttools
7291 (package
7292 (name "python-fonttools")
7293 (version "2.5")
7294 (source (origin
7295 (method url-fetch)
7296 (uri (string-append
7297 "https://pypi.python.org/packages/source/F/FontTools/"
7298 "fonttools-" version ".tar.gz"))
7299 (sha256
7300 (base32
7301 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
7302 (build-system python-build-system)
9e8c6a37
HG
7303 (arguments
7304 '(#:test-target "check"
7305 #:phases
7306 (modify-phases %standard-phases
7307 (add-after 'unpack 'patch-setuppy
7308 ;; Remove the undocumented "extra_path" argument, which adds an
7309 ;; intervening directories between site-packages and the package
7310 ;; directory.
7311 (lambda _
7312 (substitute* "setup.py"
7313 (("^[ \t]*extra_path *= *'FontTools',") ""))
7314 #t)))))
7bf837fd 7315 (home-page "https://github.com/behdad/fonttools")
d582eaac
SB
7316 (synopsis "Tools to manipulate font files")
7317 (description
7318 "FontTools/TTX is a library to manipulate font files from Python. It
9e8c6a37 7319supports reading and writing of TrueType/OpenType fonts, reading and writing
d582eaac
SB
7320of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
7321also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
7322from an XML-based format.")
3f641af0
DC
7323 (license (license:non-copyleft
7324 "file://LICENSE.txt"
7325 "See LICENSE.txt in the distribution."))))
d582eaac
SB
7326
7327(define-public python2-fonttools
7328 (package-with-python2 python-fonttools))
75710da6 7329
5faa5ce4
RW
7330(define-public python-ly
7331 (package
7332 (name "python-ly")
5135354f 7333 (version "0.9.4")
5faa5ce4
RW
7334 (source
7335 (origin
7336 (method url-fetch)
5135354f
RW
7337 (uri (string-append "https://pypi.python.org/packages/57/4f/"
7338 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
7339 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
7340 (sha256
7341 (base32
5135354f 7342 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4 7343 (build-system python-build-system)
972cf9be
MB
7344 (arguments
7345 ;; FIXME: Some tests need network access.
7346 '(#:tests? #f))
5faa5ce4
RW
7347 (synopsis "Tool and library for manipulating LilyPond files")
7348 (description "This package provides a Python library to parse, manipulate
7349or create documents in LilyPond format. A command line program ly is also
7350provided that can be used to do various manipulations with LilyPond files.")
7351 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 7352 (license license:gpl2+)))
7e7b27d9
CR
7353
7354(define-public python-appdirs
7355 (package
7356 (name "python-appdirs")
543782e1 7357 (version "1.4.3")
7e7b27d9
CR
7358 (source
7359 (origin
7360 (method url-fetch)
26b16fd9 7361 (uri (pypi-uri "appdirs" version))
7e7b27d9
CR
7362 (sha256
7363 (base32
543782e1 7364 "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y"))))
7e7b27d9 7365 (build-system python-build-system)
7bf837fd 7366 (home-page "https://github.com/ActiveState/appdirs")
7e7b27d9
CR
7367 (synopsis
7368 "Determine platform-specific dirs, e.g. a \"user data dir\"")
7369 (description
7370 "This module provides a portable way of finding out where user data
7371should be stored on various operating systems.")
7372 (license license:expat)))
7373
7374(define-public python2-appdirs
7375 (package-with-python2 python-appdirs))
89b2e0b0
LF
7376
7377(define-public python-llfuse
7378 (package
7379 (name "python-llfuse")
4d31d143 7380 (version "1.2")
89b2e0b0
LF
7381 (source (origin
7382 (method url-fetch)
7383 (uri (string-append
7384 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
7385 "llfuse-" version ".tar.bz2"))
7386 (sha256
7387 (base32
4d31d143 7388 "11hms1x68bf1bqbqy7w3wpffqsd3jkgricmzrc1hrnwkswfzzlr4"))))
89b2e0b0
LF
7389 (build-system python-build-system)
7390 (inputs
7391 `(("fuse" ,fuse)
7392 ("attr" ,attr)))
7393 (native-inputs
f3b98f4f 7394 `(("pkg-config" ,pkg-config)))
89b2e0b0
LF
7395 (synopsis "Python bindings for FUSE")
7396 (description
7397 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
7398 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 7399 (license license:lgpl2.0+)
cd0569c4 7400 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
7401
7402(define-public python2-llfuse
cd0569c4
LF
7403 (package (inherit (package-with-python2
7404 (strip-python2-variant python-llfuse)))
7405 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
7406
7407;; For attic-0.16
7408(define-public python-llfuse-0.41
7409 (package (inherit python-llfuse)
229b3661 7410 (version "0.41.1")
cd0569c4
LF
7411 (source (origin
7412 (method url-fetch)
7413 (uri (string-append
7414 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
7415 "llfuse-" version ".tar.bz2"))
7416 (sha256
7417 (base32
229b3661 7418 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
7419 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
7420 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 7421 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
7422
7423(define-public python-msgpack
7424 (package
7425 (name "python-msgpack")
aed625bd 7426 (version "0.4.8")
641c9871
LF
7427 (source (origin
7428 (method url-fetch)
ae831df4 7429 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
7430 (sha256
7431 (base32
aed625bd 7432 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 7433 (build-system python-build-system)
641c9871
LF
7434 (synopsis "MessagePack (de)serializer")
7435 (description "MessagePack is a fast, compact binary serialization format,
7436suitable for similar data to JSON. This package provides CPython bindings for
7437reading and writing MessagePack data.")
7438 (home-page "https://pypi.python.org/pypi/msgpack-python/")
f210e944 7439 (license license:asl2.0)))
bd74be7b
LF
7440
7441(define-public python2-msgpack
f210e944 7442 (package-with-python2 python-msgpack))
641c9871 7443
6e5e39f4
CR
7444(define-public python-netaddr
7445 (package
7446 (name "python-netaddr")
e121be1e 7447 (version "0.7.19")
6e5e39f4
CR
7448 (source
7449 (origin
7450 (method url-fetch)
7451 (uri (string-append
7452 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
7453 version
7454 ".tar.gz"))
7455 (sha256
7456 (base32
e121be1e 7457 "1zdfadvpq4lmcqzr383gywxn4xyn355kj1n3lk9q2l03vmyfrbiq"))))
6e5e39f4
CR
7458 (build-system python-build-system)
7459 (arguments `(#:tests? #f)) ;; No tests.
6e5e39f4
CR
7460 (home-page "https://github.com/drkjam/netaddr/")
7461 (synopsis "Pythonic manipulation of network addresses")
7462 (description
7463 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
7464and MAC network addresses.")
3f641af0 7465 (license license:bsd-3)))
6e5e39f4
CR
7466
7467(define-public python2-netaddr
7468 (package-with-python2 python-netaddr))
8c692a52
CR
7469
7470(define-public python-wrapt
7471 (package
7472 (name "python-wrapt")
d25bee26 7473 (version "1.10.8")
8c692a52
CR
7474 (source
7475 (origin
7476 (method url-fetch)
d25bee26 7477 (uri (pypi-uri "wrapt" version))
8c692a52
CR
7478 (sha256
7479 (base32
d25bee26 7480 "0wrcm1mydvfivbkzz0h81ygzdchnscshi6xvy5n3r21r9s0px8af"))))
8c692a52
CR
7481 (build-system python-build-system)
7482 (arguments
7483 ;; Tests are not included in the tarball, they are only available in the
7484 ;; git repository.
7485 `(#:tests? #f))
8c692a52
CR
7486 (home-page "https://github.com/GrahamDumpleton/wrapt")
7487 (synopsis "Module for decorators, wrappers and monkey patching")
7488 (description
7489 "The aim of the wrapt module is to provide a transparent object proxy for
7490 Python, which can be used as the basis for the construction of function
7491 wrappers and decorator functions.")
3f641af0 7492 (license license:bsd-2)))
8c692a52
CR
7493
7494(define-public python2-wrapt
7495 (package-with-python2 python-wrapt))
b85c85be
CR
7496
7497(define-public python-iso8601
7498 (package
7499 (name "python-iso8601")
fe84bc9a 7500 (version "0.1.11")
b85c85be
CR
7501 (source
7502 (origin
7503 (method url-fetch)
fe84bc9a 7504 (uri (pypi-uri "iso8601" version))
b85c85be 7505 (sha256
fe84bc9a
EF
7506 (base32
7507 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be 7508 (build-system python-build-system)
63b02364
MB
7509 (native-inputs
7510 `(("python-pytest" ,python-pytest)))
b85c85be
CR
7511 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
7512 (synopsis "Module to parse ISO 8601 dates")
7513 (description
7514 "This module parses the most common forms of ISO 8601 date strings (e.g.
7515@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
7516 (license license:expat)))
7517
7518(define-public python2-iso8601
7519 (package-with-python2 python-iso8601))
5e412b63
CR
7520
7521(define-public python-monotonic
7522 (package
7523 (name "python-monotonic")
7524 (version "0.3")
7525 (source
7526 (origin
7527 (method url-fetch)
7528 (uri (string-append
7529 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
7530 version
7531 ".tar.gz"))
7532 (sha256
7533 (base32
7534 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
7535 (build-system python-build-system)
5e412b63
CR
7536 (home-page "https://github.com/atdt/monotonic")
7537 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
7538 (description
7539 "This module provides a monotonic() function which returns the value (in
7540fractional seconds) of a clock which never goes backwards.")
3f641af0 7541 (license license:asl2.0)))
5e412b63
CR
7542
7543(define-public python2-monotonic
7544 (package-with-python2 python-monotonic))
de34afac
CR
7545
7546(define-public python-webob
7547 (package
7548 (name "python-webob")
b8834c21 7549 (version "1.5.1")
de34afac
CR
7550 (source
7551 (origin
7552 (method url-fetch)
b8834c21 7553 (uri (pypi-uri "WebOb" version))
de34afac
CR
7554 (sha256
7555 (base32
b8834c21 7556 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac 7557 (build-system python-build-system)
328bb95d 7558 (native-inputs
f3b98f4f 7559 `(("python-nose" ,python-nose)))
de34afac
CR
7560 (home-page "http://webob.org/")
7561 (synopsis "WSGI request and response object")
7562 (description
7563 "WebOb provides wrappers around the WSGI request environment, and an
7564object to help create WSGI responses.")
7565 (license license:expat)))
7566
7567(define-public python2-webob
7568 (package-with-python2 python-webob))
350ba0a3 7569
02a8a187
BW
7570(define-public python-xlrd
7571 (package
7572 (name "python-xlrd")
c2ad4d70 7573 (version "1.0.0")
02a8a187
BW
7574 (source (origin
7575 (method url-fetch)
e775f48e 7576 (uri (pypi-uri "xlrd" version))
02a8a187
BW
7577 (sha256
7578 (base32
c2ad4d70 7579 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
02a8a187
BW
7580 (build-system python-build-system)
7581 (arguments
7582 `(#:phases
7583 (modify-phases %standard-phases
c2ad4d70 7584 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
02a8a187
BW
7585 ;; run tests instead for now.
7586 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
f3b98f4f 7587 (native-inputs `(("python-nose" ,python-nose)))
02a8a187
BW
7588 (home-page "http://www.python-excel.org/")
7589 (synopsis "Library for extracting data from Excel files")
7590 (description "This packages provides a library to extract data from
c598e35c 7591spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
7592@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
7593Unicode-aware. It is not intended as an end-user tool.")
3f641af0 7594 (license license:bsd-3)))
02a8a187
BW
7595
7596(define-public python2-xlrd
7597 (package-with-python2 python-xlrd))
7598
350ba0a3
CR
7599(define-public python-prettytable
7600 (package
7601 (name "python-prettytable")
7602 (version "0.7.2")
7603 (source
7604 (origin
7605 (method url-fetch)
7606 (uri (string-append
7607 "https://pypi.python.org/packages/source/P/PrettyTable/"
7608 "prettytable-" version ".tar.bz2"))
7609 (sha256
7610 (base32
7611 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
7612 (build-system python-build-system)
350ba0a3
CR
7613 (home-page "http://code.google.com/p/prettytable/")
7614 (synopsis "Display tabular data in an ASCII table format")
7615 (description
7616 "A library designed to represent tabular data in visually appealing ASCII
7617tables. PrettyTable allows for selection of which columns are to be printed,
7618independent alignment of columns (left or right justified or centred) and
7619printing of sub-tables by specifying a row range.")
3f641af0 7620 (license license:bsd-3)))
350ba0a3
CR
7621
7622(define-public python2-prettytable
7623 (package-with-python2 python-prettytable))
7a8ac75a 7624
9f8ee3fe
RW
7625(define-public python-tables
7626 (package
7627 (name "python-tables")
7628 (version "3.2.2")
7629 (source
7630 (origin
7631 (method url-fetch)
7632 (uri (pypi-uri "tables" version))
7633 (sha256
7634 (base32
bac23672
HG
7635 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))
7636 (modules '((guix build utils)))
7637 (snippet
7638 '(begin
7639 ;; Remove pre-compiled .pyc files from source.
7640 (for-each delete-file-recursively
7641 (find-files "." "__pycache__" #:directories? #t))
7642 (for-each delete-file (find-files "." "\\.pyc$"))
7643 #t))))
9f8ee3fe
RW
7644 (build-system python-build-system)
7645 (arguments
7646 `(;; FIXME: python-build-system does not pass configure-flags to "build"
7647 ;; or "check", so we must override the build and check phases.
7648 #:phases
7649 (modify-phases %standard-phases
7650 (add-after 'unpack 'use-gcc
7651 (lambda _
7652 (substitute* "setup.py"
7653 (("compiler = new_compiler\\(\\)" line)
7654 (string-append line
7655 "\ncompiler.set_executables(compiler='gcc',"
7656 "compiler_so='gcc',"
7657 "linker_exe='gcc',"
7658 "linker_so='gcc -shared')")))
7659 #t))
7660 (replace 'build
7661 (lambda* (#:key inputs #:allow-other-keys)
7662 (zero? (system* "python" "setup.py" "build"
7663 (string-append "--hdf5="
7664 (assoc-ref inputs "hdf5"))))))
7665 (replace 'check
7666 (lambda* (#:key inputs #:allow-other-keys)
7667 (zero? (system* "python" "setup.py" "check"
7668 (string-append "--hdf5="
7669 (assoc-ref inputs "hdf5")))))))))
7670 (propagated-inputs
7671 `(("python-numexpr" ,python-numexpr)
7672 ("python-numpy" ,python-numpy)))
7673 (native-inputs
f3b98f4f 7674 `(("python-cython" ,python-cython)
9f8ee3fe
RW
7675 ("pkg-config" ,pkg-config)))
7676 (inputs
7677 `(("hdf5" ,hdf5)
7678 ("bzip2" ,bzip2)
7679 ("zlib" ,zlib)))
7680 (home-page "http://www.pytables.org/")
7681 (synopsis "Hierarchical datasets for Python")
7682 (description "PyTables is a package for managing hierarchical datasets and
d1e4ad1b 7683designed to efficiently cope with extremely large amounts of data.")
3f641af0 7684 (license license:bsd-3)))
9f8ee3fe
RW
7685
7686(define-public python2-tables
7687 (package-with-python2 python-tables))
7688
7a8ac75a
RW
7689(define-public python-pyasn1
7690 (package
7691 (name "python-pyasn1")
5e0ddfba 7692 (version "0.2.3")
7a8ac75a
RW
7693 (source
7694 (origin
7695 (method url-fetch)
caa0edb3 7696 (uri (pypi-uri "pyasn1" version))
7a8ac75a
RW
7697 (sha256
7698 (base32
5e0ddfba 7699 "1b86yx23c1x74clai05a5ma8c8nfmhlx3j1mxq0ff657i2ylx33k"))))
7a8ac75a
RW
7700 (build-system python-build-system)
7701 (home-page "http://pyasn1.sourceforge.net/")
7702 (synopsis "ASN.1 types and codecs")
7703 (description
7704 "This is an implementation of ASN.1 types and codecs in Python. It is
7705suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 7706 (license license:bsd-2)))
7a8ac75a
RW
7707
7708(define-public python2-pyasn1
7709 (package-with-python2 python-pyasn1))
9a49a535 7710
5988c299
EF
7711(define-public python-pyasn1-modules
7712 (package
7713 (name "python-pyasn1-modules")
7714 (version "0.0.8")
7715 (source
7716 (origin
7717 (method url-fetch)
7718 (uri (pypi-uri "pyasn1-modules" version))
7719 (sha256
7720 (base32
7721 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
7722 (build-system python-build-system)
5988c299
EF
7723 (propagated-inputs
7724 `(("python-pyasn1" ,python-pyasn1)))
3b3b60d0 7725 (home-page "https://sourceforge.net/projects/pyasn1/")
5988c299
EF
7726 (synopsis "ASN.1 codec implementations")
7727 (description
7728 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
7729implementations of ASN.1-based codecs and protocols.")
3f641af0 7730 (license license:bsd-3)))
5988c299
EF
7731
7732(define-public python2-pyasn1-modules
7733 (package-with-python2 python-pyasn1-modules))
7734
520af157 7735(define-public python-ipaddress
9a49a535 7736 (package
520af157 7737 (name "python-ipaddress")
36e0d9db 7738 (version "1.0.18")
520af157
DC
7739 (source (origin
7740 (method url-fetch)
7741 (uri (pypi-uri "ipaddress" version))
7742 (sha256
7743 (base32
36e0d9db 7744 "1q8klj9d84cmxgz66073x1j35cplr3r77vx1znhxiwl5w74391ax"))))
9a49a535 7745 (build-system python-build-system)
9a49a535
RW
7746 (home-page "https://github.com/phihag/ipaddress")
7747 (synopsis "IP address manipulation library")
7748 (description
520af157
DC
7749 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
7750 in Python. This library is used to create, poke at, and manipulate IPv4 and
7751 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
7752 module to older versions of Python.")
f210e944 7753 (license license:psfl)))
520af157
DC
7754
7755(define-public python2-ipaddress
f210e944 7756 (package-with-python2 python-ipaddress))
3f00e078 7757
4a238186
HG
7758(define-public python2-ipaddr
7759 (package
7760 (name "python2-ipaddr")
7761 (version "2.1.11")
7762 (source
7763 (origin
7764 (method url-fetch)
7765 (uri (pypi-uri "ipaddr" version))
7766 (sha256
7767 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
7768 (build-system python-build-system)
7769 (arguments
7770 `(#:python ,python-2 ;version 2 only
7771 #:phases
7772 (modify-phases %standard-phases
7773 (replace 'check
7774 (lambda* _
7775 (zero? (system* "python" "ipaddr_test.py")))))))
7776 (home-page "https://github.com/google/ipaddr-py")
7777 (synopsis "IP address manipulation library")
7778 (description
7779 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
7780IPv6 addresses and networks.
7781
7782For new implementations you may prefer to use the standard module
7783@code{ipaddress}, which was introduced in Python 3.3 and backported to older
7784versions of Python.")
3f641af0 7785 (license license:asl2.0)))
4a238186 7786
3f00e078
RW
7787(define-public python-idna
7788 (package
7789 (name "python-idna")
37c04f91 7790 (version "2.5")
3f00e078
RW
7791 (source
7792 (origin
7793 (method url-fetch)
37c04f91 7794 (uri (pypi-uri "idna" version))
3f00e078
RW
7795 (sha256
7796 (base32
37c04f91 7797 "1ara12a7k2zc69msa0arrvw00gn61a6i6by01xb3lkkc0h4cxd9w"))))
3f00e078 7798 (build-system python-build-system)
3f00e078
RW
7799 (home-page "https://github.com/kjd/idna")
7800 (synopsis "Internationalized domain names in applications")
7801 (description
7802 "This is a library to support the Internationalised Domain Names in
7803Applications (IDNA) protocol as specified in RFC 5891. This version of the
7804protocol is often referred to as “IDNA2008” and can produce different results
7805from the earlier standard from 2003. The library is also intended to act as a
7806suitable drop-in replacement for the “encodings.idna” module that comes with
7807the Python standard library but currently only supports the older 2003
7808specification.")
3f641af0 7809 (license license:bsd-4)))
3f00e078
RW
7810
7811(define-public python2-idna
7812 (package-with-python2 python-idna))
36ebf972
RW
7813
7814(define-public python-pretend
7815 (package
7816 (name "python-pretend")
7817 (version "1.0.8")
7818 (source
7819 (origin
7820 (method url-fetch)
7821 (uri (string-append "https://pypi.python.org/packages/source/p/"
7822 "pretend/pretend-" version ".tar.gz"))
7823 (sha256
7824 (base32
7825 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
7826 (build-system python-build-system)
36ebf972
RW
7827 (home-page "https://github.com/alex/pretend")
7828 (synopsis "Library for stubbing in Python")
7829 (description
7830 "Pretend is a library to make stubbing with Python easier. Stubbing is a
7831technique for writing tests. You may hear the term mixed up with mocks,
7832fakes, or doubles. Basically, a stub is an object that returns pre-canned
7833responses, rather than doing any computation.")
3f641af0 7834 (license license:bsd-3)))
36ebf972
RW
7835
7836(define-public python2-pretend
7837 (package-with-python2 python-pretend))
aa759a51
RW
7838
7839(define-public python-cryptography-vectors
7840 (package
7841 (name "python-cryptography-vectors")
f73f1f07 7842 (version "2.0.3")
aa759a51
RW
7843 (source
7844 (origin
7845 (method url-fetch)
9c509ca9 7846 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
7847 (sha256
7848 (base32
f73f1f07 7849 "1qa117fs1yd50zn2cfxh7d9l999ds0z4h83m9m7j4fk6ffm33f5y"))))
aa759a51 7850 (build-system python-build-system)
aa759a51 7851 (home-page "https://github.com/pyca/cryptography")
66e07664 7852 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
7853 (description
7854 "This package contains test vectors for the cryptography package.")
7855 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 7856 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
7857
7858(define-public python2-cryptography-vectors
7859 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
7860
7861(define-public python-cryptography
7862 (package
7863 (name "python-cryptography")
f37995fa 7864 (version "2.0.3")
88b47cb0
RW
7865 (source
7866 (origin
7867 (method url-fetch)
9c509ca9 7868 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
7869 (sha256
7870 (base32
f37995fa 7871 "0fnck37zyvbzmccbp7w3jy27jgmij1992j5wyy3gxhw6a11b4jyh"))))
88b47cb0
RW
7872 (build-system python-build-system)
7873 (inputs
7874 `(("openssl" ,openssl)))
7875 (propagated-inputs
dc1bd2b5
LF
7876 `(("python-asn1crypto" ,python-asn1crypto)
7877 ("python-cffi" ,python-cffi)
88b47cb0 7878 ("python-six" ,python-six)
88b47cb0
RW
7879 ("python-idna" ,python-idna)
7880 ("python-iso8601" ,python-iso8601)))
7881 (native-inputs
7882 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 7883 ("python-hypothesis" ,python-hypothesis)
88b47cb0 7884 ("python-pretend" ,python-pretend)
912dcbad 7885 ("python-pytz" ,python-pytz)
23b9168d 7886 ("python-pytest" ,python-pytest-3.0)))
88b47cb0
RW
7887 (home-page "https://github.com/pyca/cryptography")
7888 (synopsis "Cryptographic recipes and primitives for Python")
7889 (description
7890 "cryptography is a package which provides cryptographic recipes and
7891primitives to Python developers. It aims to be the “cryptographic standard
7892library” for Python. The package includes both high level recipes, and low
7893level interfaces to common cryptographic algorithms such as symmetric ciphers,
7894message digests and key derivation functions.")
7895 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 7896 (license (list license:bsd-3 license:asl2.0))
519e2f4f 7897 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
7898
7899(define-public python2-cryptography
519e2f4f
LF
7900 (let ((crypto (package-with-python2
7901 (strip-python2-variant python-cryptography))))
88b47cb0
RW
7902 (package (inherit crypto)
7903 (propagated-inputs
7904 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
7905 ("python2-backport-ssl-match-hostname"
7906 ,python2-backport-ssl-match-hostname)
68f1cdec 7907 ("python2-enum34" ,python2-enum34)
88b47cb0 7908 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
7909
7910(define-public python-pyopenssl
7911 (package
7912 (name "python-pyopenssl")
2580c2f0 7913 (version "17.2.0")
5af999b8
RW
7914 (source
7915 (origin
7916 (method url-fetch)
eb68d268 7917 (uri (pypi-uri "pyOpenSSL" version))
5af999b8
RW
7918 (sha256
7919 (base32
2580c2f0 7920 "0d283g4zi0hr9papd24mjl70mi15gyzq6fx618rizi87dgipqqax"))))
5af999b8 7921 (build-system python-build-system)
30e0229a 7922 (arguments
7c6bf660
MB
7923 '(#:phases
7924 (modify-phases %standard-phases
7925 (delete 'check)
7926 (add-after 'install 'check
7927 (lambda* (#:key inputs outputs #:allow-other-keys)
7928 (add-installed-pythonpath inputs outputs)
96bbc41f
MB
7929 (zero? (system* "py.test" "-v" "-k"
7930 (string-append
7931 ;; This test tries to look up certificates from
7932 ;; the compiled-in default path in OpenSSL, which
7933 ;; does not exist in the build environment.
7934 "not test_fallback_default_verify_paths "
7935 ;; This test attempts to make a connection to
7936 ;; an external web service.
7937 "and not test_set_default_verify_paths"))))))))
5af999b8
RW
7938 (propagated-inputs
7939 `(("python-cryptography" ,python-cryptography)
7940 ("python-six" ,python-six)))
7941 (inputs
7942 `(("openssl" ,openssl)))
30e0229a 7943 (native-inputs
2580c2f0
MB
7944 `(("python-flaky" ,python-flaky)
7945 ("python-pretend" ,python-pretend)
96bbc41f 7946 ("python-pytest" ,python-pytest-3.0)))
5af999b8
RW
7947 (home-page "https://github.com/pyca/pyopenssl")
7948 (synopsis "Python wrapper module around the OpenSSL library")
7949 (description
7950 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
7951library.")
3f641af0 7952 (license license:asl2.0)))
5af999b8
RW
7953
7954(define-public python2-pyopenssl
519e2f4f 7955 (package-with-python2 python-pyopenssl))
643725a1
CR
7956
7957(define-public python-pip
7958 (package
7959 (name "python-pip")
392c26b0 7960 (version "9.0.1")
643725a1
CR
7961 (source
7962 (origin
7963 (method url-fetch)
6fb54e3b 7964 (uri (pypi-uri "pip" version))
643725a1
CR
7965 (sha256
7966 (base32
392c26b0 7967 "03clr9c1dih5n9c00c592zzvf6r1ffimywkaq9agcqdllzhl7wh9"))))
643725a1 7968 (build-system python-build-system)
392c26b0
MC
7969 (arguments
7970 '(#:tests? #f)) ; there are no tests in the pypi archive.
643725a1 7971 (home-page "https://pip.pypa.io/")
392c26b0 7972 (synopsis "Package manager for Python software")
643725a1 7973 (description
392c26b0 7974 "Pip is a package manager for Python software, that finds packages on the
643725a1
CR
7975Python Package Index (PyPI).")
7976 (license license:expat)))
7977
7978(define-public python2-pip
7979 (package-with-python2 python-pip))
d8c4998f
LC
7980
7981(define-public python-tlsh
7982 (package
7983 (name "python-tlsh")
99b00dc7 7984 (version "3.4.4")
d8c4998f
LC
7985 (home-page "https://github.com/trendmicro/tlsh")
7986 (source (origin
99b00dc7
EF
7987 (method url-fetch)
7988 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
7989 version ".tar.gz"))
d8c4998f
LC
7990 (sha256
7991 (base32
99b00dc7
EF
7992 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
7993 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
7994 (build-system cmake-build-system)
7995 (arguments
7996 '(#:out-of-source? #f
7997 #:phases (modify-phases %standard-phases
7998 (replace
7999 'install
8000 (lambda* (#:key outputs #:allow-other-keys)
8001 ;; Build and install the Python bindings. The underlying
8002 ;; C++ library is apparently not meant to be installed.
8003 (let ((out (assoc-ref outputs "out")))
8004 (with-directory-excursion "py_ext"
8005 (and (system* "python" "setup.py" "build")
8006 (system* "python" "setup.py" "install"
8007 (string-append "--prefix=" out))))))))))
8008 (inputs `(("python" ,python-wrapper))) ;for the bindings
8009 (synopsis "Fuzzy matching library for Python")
8010 (description
8011 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
8012Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
8013value which can be used for similarity comparisons. Similar objects have
8014similar hash values, which allows for the detection of similar objects by
8015comparing their hash values. The byte stream should have a sufficient amount
8016of complexity; for example, a byte stream of identical bytes will not generate
8017a hash value.")
3f641af0 8018 (license license:asl2.0)))
d8c4998f
LC
8019
8020(define-public python2-tlsh
8021 (package
8022 (inherit python-tlsh)
8023 (name "python2-tlsh")
8024 (inputs `(("python" ,python-2)))))
d96034ed 8025
67f66812
BW
8026(define-public python-termcolor
8027 (package
8028 (name "python-termcolor")
8029 (version "1.1.0")
8030 (source
8031 (origin
8032 (method url-fetch)
a5e8f597 8033 (uri (pypi-uri "termcolor" version))
67f66812
BW
8034 (sha256
8035 (base32
8036 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
8037 (build-system python-build-system)
8038 (arguments
8039 ;; There are no tests.
8040 `(#:tests? #f))
8041 (home-page "http://pypi.python.org/pypi/termcolor")
8042 (synopsis "ANSII Color formatting for terminal output")
8043 (description
8044 "This package provides ANSII Color formatting for output in terminals.")
8045 (license license:expat)))
8046
8047(define-public python2-termcolor
8048 (package-with-python2 python-termcolor))
8049
d96034ed
LC
8050(define-public python-libarchive-c
8051 (package
8052 (name "python-libarchive-c")
03fd001c 8053 (version "2.2")
d96034ed
LC
8054 (source (origin
8055 (method url-fetch)
03fd001c 8056 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
8057 (sha256
8058 (base32
03fd001c 8059 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
8060 (build-system python-build-system)
8061 (arguments
8062 '(#:phases (modify-phases %standard-phases
8063 (add-before
8064 'build 'reference-libarchive
8065 (lambda* (#:key inputs #:allow-other-keys)
8066 ;; Retain the absolute file name of libarchive.so.
8067 (let ((libarchive (assoc-ref inputs "libarchive")))
8068 (substitute* "libarchive/ffi.py"
8069 (("find_library\\('archive'\\)")
8070 (string-append "'" libarchive
b41a05ce 8071 "/lib/libarchive.so'")))))))))
d96034ed 8072 (inputs
f3b98f4f 8073 `(("libarchive" ,libarchive)))
d96034ed
LC
8074 (home-page "https://github.com/Changaco/python-libarchive-c")
8075 (synopsis "Python interface to libarchive")
8076 (description
8077 "This package provides Python bindings to libarchive, a C library to
8078access possibly compressed archives in many different formats. It uses
8079Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 8080 (license license:lgpl2.0+)))
d96034ed
LC
8081
8082(define-public python2-libarchive-c
8083 (package-with-python2 python-libarchive-c))
5e1c9367
LC
8084
8085(define-public python-file
8086 (package
8087 (inherit file)
8088 (name "python-file")
8089 (build-system python-build-system)
8090 (arguments
8091 '(#:tests? #f ;no tests
00bf74be 8092 #:configure-flags '("--single-version-externally-managed" "--root=/")
5e1c9367
LC
8093 #:phases (modify-phases %standard-phases
8094 (add-before 'build 'change-directory
8095 (lambda _
8096 (chdir "python")
8097 #t))
8098 (add-before 'build 'set-library-file-name
8099 (lambda* (#:key inputs #:allow-other-keys)
8100 (let ((file (assoc-ref inputs "file")))
8101 (substitute* "magic.py"
8102 (("find_library\\('magic'\\)")
8103 (string-append "'" file "/lib/libmagic.so'")))
8104 #t))))))
8105 (inputs `(("file" ,file)))
8106 (self-native-input? #f)
daeeea71
CM
8107 (synopsis "Python bindings to the libmagic file type guesser. Note that
8108this module and the python-magic module both provide a \"magic.py\" file;
8109these two modules, which are different and were developed separately, both
f210e944 8110serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
8111
8112(define-public python2-file
f210e944 8113 (package-with-python2 python-file))
85d4aeac
LC
8114
8115(define-public python-debian
8116 (package
8117 (name "python-debian")
02d7f337 8118 (version "0.1.28")
85d4aeac
LC
8119 (source
8120 (origin
8121 (method url-fetch)
5e217a8b 8122 (uri (pypi-uri name version))
85d4aeac
LC
8123 (sha256
8124 (base32
02d7f337 8125 "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
85d4aeac 8126 (build-system python-build-system)
f22efa01 8127 (propagated-inputs
85d4aeac 8128 `(("python-six" ,python-six)))
85d4aeac
LC
8129 (home-page "http://packages.debian.org/sid/python-debian")
8130 (synopsis "Debian package related modules")
8131 (description
5c7bdc9a
LC
8132 ;; XXX: Use @enumerate instead of @itemize to work around
8133 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
8134 "This package provides Python modules that abstract many formats of
8135Debian-related files, such as:
8136
5c7bdc9a 8137@enumerate
85d4aeac
LC
8138@item Debtags information;
8139@item @file{debian/changelog} files;
8140@item packages files, pdiffs;
8141@item control files of single or multiple RFC822-style paragraphs---e.g.
8142 @file{debian/control}, @file{.changes}, @file{.dsc};
8143@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
8144 contained files and meta-information.
5c7bdc9a 8145@end enumerate\n")
85d4aeac
LC
8146
8147 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 8148 (license license:gpl3+)))
85d4aeac
LC
8149
8150(define-public python2-debian
8151 (package-with-python2 python-debian))
816a6538 8152
2d321bb2
RW
8153(define-public python-nbformat
8154 (package
8155 (name "python-nbformat")
ae7f246c 8156 (version "4.3.0")
2d321bb2
RW
8157 (source
8158 (origin
8159 (method url-fetch)
8160 (uri (pypi-uri "nbformat" version))
8161 (sha256
8162 (base32
ae7f246c 8163 "12s7j4qja8b5bs1kyw5dzmrqbjxxj8wk52cyasbiqbv7fblcrssz"))))
2d321bb2
RW
8164 (build-system python-build-system)
8165 (arguments `(#:tests? #f)) ; no test target
8166 (propagated-inputs
8167 `(("python-ipython-genutils" ,python-ipython-genutils)
8168 ("python-jsonschema" ,python-jsonschema)
8169 ("python-jupyter-core" ,python-jupyter-core)
8170 ("python-traitlets" ,python-traitlets)))
2d321bb2
RW
8171 (home-page "http://jupyter.org")
8172 (synopsis "Jupyter Notebook format")
8173 (description "This package provides the reference implementation of the
8174Jupyter Notebook format and Python APIs for working with notebooks.")
8175 (license license:bsd-3)))
8176
8177(define-public python2-nbformat
8178 (package-with-python2 python-nbformat))
8179
55436048
RW
8180(define-public python-bleach
8181 (package
8182 (name "python-bleach")
8183 (version "1.4.3")
8184 (source
8185 (origin
8186 (method url-fetch)
8187 (uri (pypi-uri "bleach" version))
8188 (sha256
8189 (base32
8190 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
8191 (build-system python-build-system)
8192 (propagated-inputs
8193 `(("python-html5lib" ,python-html5lib-0.9)
55436048
RW
8194 ("python-six" ,python-six)))
8195 (native-inputs
8196 `(("python-nose" ,python-nose)))
7bf837fd 8197 (home-page "https://github.com/jsocol/bleach")
55436048
RW
8198 (synopsis "Whitelist-based HTML-sanitizing tool")
8199 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
8200 (license license:asl2.0)))
8201
8202(define-public python2-bleach
8203 (package-with-python2 python-bleach))
8204
60590a3a
RW
8205(define-public python-entrypoints
8206 (package
8207 (name "python-entrypoints")
8208 (version "0.2.2")
8209 (source
8210 (origin
8211 (method url-fetch)
8212 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
8213 version ".tar.gz"))
8214 (file-name (string-append name "-" version ".tar.gz"))
8215 (sha256
8216 (base32
8217 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
8218 (build-system python-build-system)
8219 ;; The package does not come with a setup.py file, so we have to generate
8220 ;; one ourselves.
8221 (arguments
8222 `(#:tests? #f
8223 #:phases
8224 (modify-phases %standard-phases
8225 (add-after 'unpack 'create-setup.py
8226 (lambda _
8227 (call-with-output-file "setup.py"
8228 (lambda (port)
8229 (format port "\
8230from setuptools import setup
8231setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
8232" ,version))))))))
8233 (home-page "https://github.com/takluyver/entrypoints")
8234 (synopsis "Discover and load entry points from installed Python packages")
8235 (description "Entry points are a way for Python packages to advertise
8236objects with some common interface. The most common examples are
8237@code{console_scripts} entry points, which define shell commands by
8238identifying a Python function to run. The @code{entrypoints} module contains
8239functions to find and load entry points.")
8240 (license license:expat)))
8241
8242(define-public python2-entrypoints
8243 (package-with-python2 python-entrypoints))
8244
c60898a8
RW
8245(define-public python-nbconvert
8246 (package
8247 (name "python-nbconvert")
8248 (version "5.0.0b1")
8249 (source
8250 (origin
8251 (method url-fetch)
8252 (uri (pypi-uri "nbconvert" version))
8253 (sha256
8254 (base32
8255 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
8256 (build-system python-build-system)
497355dc
MB
8257 (arguments
8258 `(;; The "bdist_egg" target is disabled by default, causing the installation
8259 ;; to fail.
8260 #:configure-flags (list "bdist_egg")
8261 ;; FIXME: 5 failures, 40 errors.
8262 #:tests? #f))
8263 ;; #:phases
8264 ;; (modify-phases %standard-phases
8265 ;; (replace 'check
8266 ;; (lambda _
8267 ;; (zero? (system* "py.test" "-v")))))
8268 (native-inputs
8269 `(("python-pytest" ,python-pytest)))
c60898a8
RW
8270 (propagated-inputs
8271 `(("python-bleach" ,python-bleach)
8272 ("python-entrypoints" ,python-entrypoints)
8273 ("python-jinja2" ,python-jinja2)
8274 ("python-jupyter-core" ,python-jupyter-core)
8275 ("python-mistune" ,python-mistune)
8276 ("python-nbformat" ,python-nbformat)
8277 ("python-pygments" ,python-pygments)
c60898a8
RW
8278 ("python-traitlets" ,python-traitlets)))
8279 (home-page "http://jupyter.org")
8280 (synopsis "Converting Jupyter Notebooks")
8281 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
8282notebooks to various other formats via Jinja templates. It allows you to
8283convert an @code{.ipynb} notebook file into various static formats including:
8284
8285@enumerate
8286@item HTML
8287@item LaTeX
8288@item PDF
8289@item Reveal JS
8290@item Markdown (md)
8291@item ReStructured Text (rst)
8292@item executable script
8293@end enumerate\n")
8294 (license license:bsd-3)))
8295
8296(define-public python2-nbconvert
8297 (package-with-python2 python-nbconvert))
8298
a0d62280
RW
8299(define-public python-notebook
8300 (package
8301 (name "python-notebook")
8302 (version "4.2.3")
8303 (source (origin
8304 (method url-fetch)
8305 (uri (pypi-uri "notebook" version))
8306 (sha256
8307 (base32
8308 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
8309 (build-system python-build-system)
8310 (arguments
8311 `(#:phases
8312 (modify-phases %standard-phases
8313 (replace 'check
8314 (lambda _
8315 ;; HOME must be set for tests
8316 (setenv "HOME" "/tmp")
8317 (zero? (system* "nosetests")))))))
8318 (propagated-inputs
8319 `(("python-jupyter-core" ,python-jupyter-core)
8320 ("python-nbformat" ,python-nbformat)
8321 ("python-nbconvert" ,python-nbconvert)
8322 ("python-ipython" ,python-ipython)))
8323 (native-inputs
8324 `(("python-nose" ,python-nose)
8325 ("python-sphinx" ,python-sphinx)
8326 ("python-requests" ,python-requests)))
8327 (home-page "http://jupyter.org/")
8328 (synopsis "Web-based notebook environment for interactive computing")
8329 (description
8330 "The Jupyter HTML notebook is a web-based notebook environment for
8331interactive computing.")
3a735ecf 8332 (properties `((python2-variant . ,(delay python2-notebook))))
a0d62280
RW
8333 (license license:bsd-3)))
8334
8335(define-public python2-notebook
3a735ecf
HG
8336 (let ((base (package-with-python2
8337 (strip-python2-variant python-notebook))))
8338 (package (inherit base)
8339 (native-inputs
8340 `(("python2-mock" ,python2-mock)
8341 ,@(package-native-inputs base)))
8342 (arguments
8343 (substitute-keyword-arguments (package-arguments base)
8344 ((#:phases phases)
8345 `(modify-phases ,phases
8346 (add-before 'check 'disable-test-case
8347 ;; The test requires network access to localhost. Curiously it
8348 ;; fails with Python 2 only. Simply make the test-case return
8349 ;; immediately.
8350 (lambda _
8351 (substitute*
8352 "notebook/services/nbconvert/tests/test_nbconvert_api.py"
8353 (("formats = self.nbconvert_api") "return #")))))))))))
a0d62280 8354
d55724ed
RW
8355(define-public python-widgetsnbextension
8356 (package
8357 (name "python-widgetsnbextension")
8358 (version "1.2.6")
8359 (source
8360 (origin
8361 (method url-fetch)
8362 (uri (pypi-uri "widgetsnbextension" version))
8363 (sha256
8364 (base32
8365 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
8366 (build-system python-build-system)
8367 (propagated-inputs
8368 `(("python-notebook" ,python-notebook)))
8369 (native-inputs
58f5fae7
MB
8370 `(("python-certifi" ,python-certifi)
8371 ("python-nose" ,python-nose)))
d55724ed
RW
8372 (home-page "http://ipython.org")
8373 (synopsis "IPython HTML widgets for Jupyter")
8374 (description "This package provides interactive HTML widgets for Jupyter
8375notebooks.")
8376 (license license:bsd-3)))
8377
8378(define-public python2-widgetsnbextension
8379 (package-with-python2 python-widgetsnbextension))
8380
4fe2e344
RW
8381(define-public python-ipywidgets
8382 (package
8383 (name "python-ipywidgets")
8384 (version "5.2.2")
8385 (source
8386 (origin
8387 (method url-fetch)
8388 (uri (pypi-uri "ipywidgets" version))
8389 (sha256
8390 (base32
8391 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
8392 (build-system python-build-system)
8393 ;; FIXME: it's not clear how to run the tests.
8394 (arguments `(#:tests? #f))
8395 (propagated-inputs
8396 `(("python-ipykernel" ,python-ipykernel)
8397 ("python-ipython" ,python-ipython)
4fe2e344
RW
8398 ("python-traitlets" ,python-traitlets)
8399 ("python-widgetsnbextension" ,python-widgetsnbextension)))
8400 (home-page "http://ipython.org")
8401 (synopsis "IPython HTML widgets for Jupyter")
8402 (description "Ipywidgets are interactive HTML widgets for Jupyter
8403notebooks and the IPython kernel. Notebooks come alive when interactive
8404widgets are used. Users gain control of their data and can visualize changes
8405in the data.")
8406 (license license:bsd-3)))
8407
8408(define-public python2-ipywidgets
8409 (package-with-python2 python-ipywidgets))
8410
8ceebf8f
RW
8411(define-public python-jupyter-console
8412 (package
8413 (name "python-jupyter-console")
8414 (version "5.0.0")
8415 (source
8416 (origin
8417 (method url-fetch)
8418 (uri (pypi-uri "jupyter_console" version))
8419 (sha256
8420 (base32
8421 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
8422 (build-system python-build-system)
8423 ;; FIXME: it's not clear how to run the tests.
8424 (arguments `(#:tests? #f))
8425 (propagated-inputs
8426 `(("python-ipykernel" ,python-ipykernel)
8427 ("python-ipython" ,python-ipython)
8428 ("python-jupyter-client" ,python-jupyter-client)
8429 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 8430 ("python-pygments" ,python-pygments)))
8ceebf8f
RW
8431 (home-page "https://jupyter.org")
8432 (synopsis "Jupyter terminal console")
8433 (description "This package provides a terminal-based console frontend for
8434Jupyter kernels. It also allows for console-based interaction with non-Python
8435Jupyter kernels such as IJulia and IRKernel.")
8436 (license license:bsd-3)))
8437
8438(define-public python2-jupyter-console
8439 (package-with-python2 python-jupyter-console))
8440
c27ae827
RW
8441(define-public jupyter
8442 (package
8443 (name "jupyter")
8444 (version "1.0.0")
8445 (source
8446 (origin
8447 (method url-fetch)
8448 (uri (pypi-uri "jupyter" version))
8449 (sha256
8450 (base32
8451 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
8452 (build-system python-build-system)
8453 ;; FIXME: it's not clear how to run the tests.
8454 (arguments `(#:tests? #f))
8455 (propagated-inputs
8456 `(("python-ipykernel" ,python-ipykernel)
8457 ("python-ipywidgets" ,python-ipywidgets)
8458 ("python-jupyter-console" ,python-jupyter-console)
8459 ("python-nbconvert" ,python-nbconvert)
f3b98f4f 8460 ("python-notebook" ,python-notebook)))
c27ae827
RW
8461 (home-page "http://jupyter.org")
8462 (synopsis "Web application for interactive documents")
8463 (description
8464 "The Jupyter Notebook is a web application that allows you to create and
8465share documents that contain live code, equations, visualizations and
8466explanatory text. Uses include: data cleaning and transformation, numerical
8467simulation, statistical modeling, machine learning and much more.")
8468 (license license:bsd-3)))
8469
816a6538
LC
8470(define-public python-chardet
8471 (package
8472 (name "python-chardet")
8473 (version "2.3.0")
8474 (source
8475 (origin
8476 (method url-fetch)
8477 (uri (string-append
8478 "https://pypi.python.org/packages/source/c/chardet/chardet-"
8479 version
8480 ".tar.gz"))
8481 (sha256
8482 (base32
8483 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
8484 (build-system python-build-system)
816a6538
LC
8485 (home-page "https://github.com/chardet/chardet")
8486 (synopsis "Universal encoding detector for Python 2 and 3")
8487 (description
8488 "This package provides @code{chardet}, a Python module that can
8489automatically detect a wide range of file encodings.")
3f641af0 8490 (license license:lgpl2.1+)))
816a6538
LC
8491
8492(define-public python2-chardet
8493 (package-with-python2 python-chardet))
2fc5f186 8494
1872f1bb
KM
8495(define-public python-docopt
8496 (package
8497 (name "python-docopt")
8498 (version "0.6.2")
8499 (source
8500 (origin
8501 (method url-fetch)
8502 ;; The release on PyPI does not include tests.
8503 (uri (string-append
8504 "https://github.com/docopt/docopt/archive/"
8505 version ".tar.gz"))
8506 (file-name (string-append name "-" version ".tar.gz"))
8507 (sha256
8508 (base32
8509 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
8510 (build-system python-build-system)
8511 (native-inputs
f3b98f4f 8512 `(("python-pytest" ,python-pytest)))
1872f1bb
KM
8513 (arguments
8514 `(#:phases (alist-replace
8515 'check
8516 (lambda _ (zero? (system* "py.test")))
8517 %standard-phases)))
8518 (home-page "http://docopt.org")
8519 (synopsis "Command-line interface description language for Python")
8520 (description "This library allows the user to define a command-line
8521interface from a program's help message rather than specifying it
8522programatically with command-line parsers like @code{getopt} and
8523@code{argparse}.")
8524 (license license:expat)))
8525
8526(define-public python2-docopt
8527 (package-with-python2 python-docopt))
8528
2fc5f186
LF
8529(define-public python-zope-event
8530 (package
8531 (name "python-zope-event")
8532 (version "4.1.0")
8533 (source
8534 (origin
8535 (method url-fetch)
8536 (uri (string-append "https://pypi.python.org/packages/source/z"
8537 "/zope.event/zope.event-" version ".tar.gz"))
8538 (sha256
8539 (base32
8540 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
8541 (build-system python-build-system)
2fc5f186
LF
8542 (home-page "http://pypi.python.org/pypi/zope.event")
8543 (synopsis "Event publishing system for Python")
8544 (description "Zope.event provides an event publishing API, intended for
8545use by applications which are unaware of any subscribers to their events. It
8546is a simple event-dispatching system on which more sophisticated event
8547dispatching systems can be built.")
3f641af0 8548 (license license:zpl2.1)))
2fc5f186
LF
8549
8550(define-public python2-zope-event
8551 (package-with-python2 python-zope-event))
97abe268
LF
8552
8553(define-public python-zope-interface
8554 (package
8555 (name "python-zope-interface")
8556 (version "4.1.3")
8557 (source
8558 (origin
8559 (method url-fetch)
8560 (uri (string-append "https://pypi.python.org/packages/source/z"
8561 "/zope.interface/zope.interface-" version ".tar.gz"))
8562 (sha256
8563 (base32
8564 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
8565 (build-system python-build-system)
38d480a8 8566 (native-inputs
97abe268
LF
8567 `(("python-zope-event" ,python-zope-event)))
8568 (home-page "https://github.com/zopefoundation/zope.interface")
8569 (synopsis "Python implementation of the \"design by contract\"
8570methodology")
8571 (description "Zope.interface provides an implementation of \"object
8572interfaces\" for Python. Interfaces are a mechanism for labeling objects as
8573conforming to a given API or contract.")
3f641af0 8574 (license license:zpl2.1)))
97abe268
LF
8575
8576(define-public python2-zope-interface
8577 (package-with-python2 python-zope-interface))
81f2373c
LF
8578
8579(define-public python-zope-exceptions
8580 (package
8581 (name "python-zope-exceptions")
8582 (version "4.0.8")
8583 (source
8584 (origin
8585 (method url-fetch)
8586 (uri (string-append "https://pypi.python.org/packages/source/z"
8587 "/zope.exceptions/zope.exceptions-"
8588 version ".tar.gz"))
8589 (sha256
8590 (base32
8591 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
8592 (build-system python-build-system)
8593 (arguments
8594 '(#:tests? #f)) ; circular dependency with zope.testrunner
8595 (propagated-inputs
8596 `(("python-zope-interface" ,python-zope-interface)))
8597 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
8598 (synopsis "Zope exceptions")
8599 (description "Zope.exceptions provides general-purpose exception types
8600that have uses outside of the Zope framework.")
3f641af0 8601 (license license:zpl2.1)))
81f2373c
LF
8602
8603(define-public python2-zope-exceptions
8604 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
8605
8606(define-public python-zope-testing
8607 (package
8608 (name "python-zope-testing")
8609 (version "4.5.0")
8610 (source
8611 (origin
8612 (method url-fetch)
8613 (uri (string-append "https://pypi.python.org/packages/source/z"
8614 "/zope.testing/zope.testing-" version ".tar.gz"))
8615 (sha256
8616 (base32
b02f7a21
HG
8617 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
8618 (modules '((guix build utils)))
8619 (snippet
8620 '(begin
8621 ;; Remove pre-compiled .pyc files backup files from source.
8622 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
8623 #t))))
900e3c0e
LF
8624 (build-system python-build-system)
8625 (native-inputs
8626 `(("python-zope-exceptions" ,python-zope-exceptions)))
8627 (propagated-inputs
8628 `(("python-zope-interface" ,python-zope-interface)))
8629 (home-page "http://pypi.python.org/pypi/zope.testing")
8630 (synopsis "Zope testing helpers")
8631 (description "Zope.testing provides a number of testing utilities for HTML
8632forms, HTTP servers, regular expressions, and more.")
3f641af0 8633 (license license:zpl2.1)))
900e3c0e
LF
8634
8635(define-public python2-zope-testing
8636 (package-with-python2 python-zope-testing))
01614c4f
LF
8637
8638(define-public python-zope-testrunner
8639 (package
8640 (name "python-zope-testrunner")
8641 (version "4.4.9")
8642 (source
8643 (origin
8644 (method url-fetch)
8645 (uri (string-append "https://pypi.python.org/packages/source/z"
8646 "/zope.testrunner/zope.testrunner-"
8647 version ".zip"))
8648 (sha256
8649 (base32
8650 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
8651 (build-system python-build-system)
385871e5
MB
8652 (arguments
8653 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
01614c4f
LF
8654 (native-inputs
8655 `(("python-six" ,python-six)
e408ffc3 8656 ;("python-zope-interface" ,python-zope-interface)
01614c4f
LF
8657 ("python-zope-exceptions" ,python-zope-exceptions)
8658 ("python-zope-testing" ,python-zope-testing)
8659 ("unzip" ,unzip)))
8660 (propagated-inputs
8661 `(("python-zope-interface" ,python-zope-interface)))
8662 (home-page "http://pypi.python.org/pypi/zope.testrunner")
8663 (synopsis "Zope testrunner script")
8664 (description "Zope.testrunner provides a script for running Python
8665tests.")
3f641af0 8666 (license license:zpl2.1)))
01614c4f
LF
8667
8668(define-public python2-zope-testrunner
8669 (let ((base (package-with-python2 python-zope-testrunner)))
8670 (package
8671 (inherit base)
8672 (native-inputs
8673 (append (package-native-inputs base)
8674 `(("python2-subunit" ,python2-subunit)
8675 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
8676
8677(define-public python-zope-i18nmessageid
8678 (package
8679 (name "python-zope-i18nmessageid")
8680 (version "4.0.3")
8681 (source
8682 (origin
8683 (method url-fetch)
8684 (uri (string-append
8685 "https://pypi.python.org/packages/source/z"
8686 "/zope.i18nmessageid/zope.i18nmessageid-"
8687 version ".tar.gz"))
8688 (sha256
8689 (base32
8690 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
8691 (build-system python-build-system)
6a5c710c
LF
8692 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
8693 (synopsis "Message identifiers for internationalization")
8694 (description "Zope.i18nmessageid provides facilities for declaring
8695internationalized messages within program source text.")
3f641af0 8696 (license license:zpl2.1)))
6a5c710c
LF
8697
8698(define-public python2-zope-i18nmessageid
8699 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
8700
8701(define-public python-zope-schema
8702 (package
8703 (name "python-zope-schema")
8704 (version "4.4.2")
8705 (source
8706 (origin
8707 (method url-fetch)
8708 (uri (string-append "https://pypi.python.org/packages/source/z"
8709 "/zope.schema/zope.schema-" version ".tar.gz"))
8710 (sha256
8711 (base32
8712 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
8713 (build-system python-build-system)
22dba2ef
MB
8714 (arguments
8715 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
71fb09f3
LF
8716 (propagated-inputs
8717 `(("python-zope-event" ,python-zope-event)
2b9e4bea 8718 ("python-zope-exceptions", python-zope-exceptions)
71fb09f3
LF
8719 ("python-zope-interface" ,python-zope-interface)))
8720 (native-inputs
47f77210
HG
8721 `(("python-zope-testing" ,python-zope-testing)
8722 ("python-coverage" ,python-coverage)
8723 ("python-nose" ,python-nose)))
71fb09f3
LF
8724 (home-page "http://pypi.python.org/pypi/zope.schema")
8725 (synopsis "Zope data schemas")
8726 (description "Zope.scheme provides extensions to zope.interface for
8727defining data schemas.")
3f641af0 8728 (license license:zpl2.1)))
71fb09f3
LF
8729
8730(define-public python2-zope-schema
8731 (package-with-python2 python-zope-schema))
fbac9b17
LF
8732
8733(define-public python-zope-configuration
8734 (package
8735 (name "python-zope-configuration")
8736 (version "4.0.3")
8737 (source (origin
8738 (method url-fetch)
8739 (uri (string-append "https://pypi.python.org/packages/source/z"
8740 "/zope.configuration/zope.configuration-"
8741 version ".tar.gz"))
8742 (sha256
8743 (base32
8744 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
8745 (build-system python-build-system)
7e8b1bfa
MB
8746 (arguments
8747 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
fbac9b17
LF
8748 (propagated-inputs
8749 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8750 ("python-zope-schema" ,python-zope-schema)))
8751 (home-page "http://pypi.python.org/pypi/zope.configuration")
8752 (synopsis "Zope Configuration Markup Language")
8753 (description "Zope.configuration implements ZCML, the Zope Configuration
8754Markup Language.")
3f641af0 8755 (license license:zpl2.1)))
fbac9b17
LF
8756
8757(define-public python2-zope-configuration
8758 (package-with-python2 python-zope-configuration))
2ad52086
LF
8759
8760(define-public python-zope-proxy
8761 (package
8762 (name "python-zope-proxy")
8763 (version "4.1.6")
8764 (source
8765 (origin
8766 (method url-fetch)
8767 (uri (string-append "https://pypi.python.org/packages/source/z"
8768 "/zope.proxy/zope.proxy-" version ".tar.gz"))
8769 (sha256
8770 (base32
8771 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
8772 (build-system python-build-system)
66b3aadb
MB
8773 (arguments
8774 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
2ad52086
LF
8775 (propagated-inputs
8776 `(("python-zope-interface" ,python-zope-interface)))
8777 (home-page "http://pypi.python.org/pypi/zope.proxy")
8778 (synopsis "Generic, transparent proxies")
8779 (description "Zope.proxy provides generic, transparent proxies for Python.
8780Proxies are special objects which serve as mostly-transparent wrappers around
8781another object, intervening in the apparent behavior of the wrapped object
8782only when necessary to apply the policy (e.g., access checking, location
8783brokering, etc.) for which the proxy is responsible.")
3f641af0 8784 (license license:zpl2.1)))
2ad52086
LF
8785
8786(define-public python2-zope-proxy
8787 (package-with-python2 python-zope-proxy))
f404b5ea
LF
8788
8789(define-public python-zope-location
8790 (package
8791 (name "python-zope-location")
8792 (version "4.0.3")
8793 (source
8794 (origin
8795 (method url-fetch)
8796 (uri (string-append "https://pypi.python.org/packages/source/z"
8797 "/zope.location/zope.location-" version ".tar.gz"))
8798 (sha256
8799 (base32
8800 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
8801 (build-system python-build-system)
40bb8e07
MB
8802 (arguments
8803 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
d27f176a 8804 (propagated-inputs
f404b5ea
LF
8805 `(("python-zope-proxy" ,python-zope-proxy)
8806 ("python-zope-schema" ,python-zope-schema)))
8807 (home-page "http://pypi.python.org/pypi/zope.location/")
8808 (synopsis "Zope location library")
8809 (description "Zope.location implements the concept of \"locations\" in
8810Zope3, which are are special objects that have a structural location.")
3f641af0 8811 (license license:zpl2.1)))
f404b5ea
LF
8812
8813(define-public python2-zope-location
8814 (package-with-python2 python-zope-location))
d4b77f36
LF
8815
8816(define-public python-zope-security
8817 (package
8818 (name "python-zope-security")
8819 (version "4.0.3")
8820 (source
8821 (origin
8822 (method url-fetch)
8823 (uri (string-append "https://pypi.python.org/packages/source/z"
8824 "/zope.security/zope.security-" version ".tar.gz"))
8825 (sha256
8826 (base32
8827 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
8828 (build-system python-build-system)
a74f9b12
MB
8829 (arguments
8830 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
d4b77f36
LF
8831 (propagated-inputs
8832 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
d4b77f36 8833 ("python-zope-proxy" ,python-zope-proxy)
fd8e23b7 8834 ("python-zope-schema" ,python-zope-schema)))
a74f9b12
MB
8835 (native-inputs
8836 `(("python-six" ,python-six)
8837 ("python-zope-component" ,python-zope-component)
fd8e23b7
HG
8838 ("python-zope-configuration" ,python-zope-configuration)
8839 ("python-zope-location" ,python-zope-location)
d4b77f36
LF
8840 ("python-zope-testrunner" ,python-zope-testrunner)
8841 ("python-zope-testing" ,python-zope-testing)))
8842 (home-page "http://pypi.python.org/pypi/zope.security")
8843 (synopsis "Zope security framework")
8844 (description "Zope.security provides a generic mechanism to implement
8845security policies on Python objects.")
3f641af0 8846 (license license:zpl2.1)))
d4b77f36
LF
8847
8848(define-public python2-zope-security
04417662
EF
8849 (let ((zope-security (package-with-python2 python-zope-security)))
8850 (package (inherit zope-security)
8851 (propagated-inputs
8852 `(("python2-zope-testrunner" ,python2-zope-testrunner)
8853 ,@(alist-delete
8854 "python-zope-testrunner"
8855 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
8856
8857(define-public python-zope-component
8858 (package
8859 (name "python-zope-component")
35e1a0f1 8860 (version "4.3.0")
a6b61b27
LF
8861 (source
8862 (origin
8863 (method url-fetch)
35e1a0f1 8864 (uri (pypi-uri "zope.component" version))
a6b61b27
LF
8865 (sha256
8866 (base32
35e1a0f1 8867 "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
a6b61b27
LF
8868 (build-system python-build-system)
8869 (arguments
8870 ;; Skip tests due to circular dependency with python-zope-security.
8871 '(#:tests? #f))
8872 (native-inputs
8873 `(("python-zope-testing" ,python-zope-testing)))
8874 (propagated-inputs
8875 `(("python-zope-event" ,python-zope-event)
8876 ("python-zope-interface" ,python-zope-interface)
8877 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
8878 ("python-zope-configuration" ,python-zope-configuration)))
8879 (home-page "https://github.com/zopefoundation/zope.component")
8880 (synopsis "Zope Component Architecture")
8881 (description "Zope.component represents the core of the Zope Component
8882Architecture. Together with the zope.interface package, it provides
8883facilities for defining, registering and looking up components.")
3f641af0 8884 (license license:zpl2.1)))
a6b61b27
LF
8885
8886(define-public python2-zope-component
8887 (package-with-python2 python-zope-component))
3859ac12 8888
1ae44b80 8889(define-public python-pythondialog
b5f218be 8890 (package
1ae44b80 8891 (name "python-pythondialog")
42c4b246 8892 (version "3.4.0")
b5f218be
LF
8893 (source
8894 (origin
8895 (method url-fetch)
1ae44b80 8896 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
8897 (sha256
8898 (base32
1ae44b80 8899 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
8900 (build-system python-build-system)
8901 (arguments
8902 `(#:phases
8903 (modify-phases %standard-phases
8904 (add-after 'unpack 'patch-path
8905 (lambda* (#:key inputs #:allow-other-keys)
8906 (let* ((dialog (assoc-ref inputs "dialog")))
8907 ;; Since this library really wants to grovel the search path, we
8908 ;; must hardcode dialog's store path into it.
8909 (substitute* "dialog.py"
8910 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
8911 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
8912 #t))))
b5f218be
LF
8913 #:tests? #f)) ; no test suite
8914 (propagated-inputs
8915 `(("dialog" ,dialog)))
8916 (home-page "http://pythondialog.sourceforge.net/")
8917 (synopsis "Python interface to the UNIX dialog utility")
8918 (description "A Python wrapper for the dialog utility. Its purpose is to
8919provide an easy to use, pythonic and comprehensive Python interface to dialog.
8920This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 8921 (license license:lgpl2.1)
1ae44b80
LF
8922 (properties `((python2-variant . ,(delay python2-pythondialog))))))
8923
8924(define-public python2-pythondialog
8925 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
8926 (package
8927 (inherit base)
8928 (version (package-version python-pythondialog))
8929 (source (origin
8930 (method url-fetch)
8931 (uri (pypi-uri "python2-pythondialog" version))
8932 (sha256
8933 (base32
8934 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 8935
3859ac12
LF
8936(define-public python-pyrfc3339
8937 (package
8938 (name "python-pyrfc3339")
d9aa097b 8939 (version "1.0")
3859ac12
LF
8940 (source
8941 (origin
8942 (method url-fetch)
d9aa097b 8943 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
8944 (sha256
8945 (base32
d9aa097b 8946 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
8947 (build-system python-build-system)
8948 (propagated-inputs
8949 `(("python-pytz" ,python-pytz)))
8950 (native-inputs
f3b98f4f 8951 `(("python-nose" ,python-nose)))
3859ac12
LF
8952 (home-page "https://github.com/kurtraschke/pyRFC3339")
8953 (synopsis "Python timestamp library")
8954 (description "Python library for generating and parsing RFC 3339-compliant
8955timestamps.")
8956 (license license:expat)))
8957
8958(define-public python2-pyrfc3339
8959 (package-with-python2 python-pyrfc3339))
5eea2005
LF
8960
8961(define-public python-werkzeug
8962 (package
8963 (name "python-werkzeug")
bbb99d6b 8964 (version "0.11.15")
5eea2005
LF
8965 (source
8966 (origin
8967 (method url-fetch)
4b47cbfa 8968 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
8969 (sha256
8970 (base32
bbb99d6b 8971 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
5eea2005
LF
8972 (build-system python-build-system)
8973 (native-inputs
8974 `(("python-pytest" ,python-pytest)))
8975 (home-page "http://werkzeug.pocoo.org/")
8976 (synopsis "Utilities for WSGI applications")
8977 (description "One of the most advanced WSGI utility modules. It includes a
8978powerful debugger, full-featured request and response objects, HTTP utilities to
8979handle entity tags, cache control headers, HTTP dates, cookie handling, file
8980uploads, a powerful URL routing system and a bunch of community-contributed
8981addon modules.")
3f641af0 8982 (license license:x11)))
5eea2005
LF
8983
8984(define-public python2-werkzeug
8985 (package-with-python2 python-werkzeug))
99fffa8a
LF
8986
8987(define-public python-configobj
8988 (package
8989 (name "python-configobj")
8990 (version "5.0.6")
8991 (source (origin
8992 (method url-fetch)
8993 (uri (string-append
8994 "https://pypi.python.org/packages/source/c/configobj/"
8995 "configobj-" version ".tar.gz"))
8996 (sha256
8997 (base32
8998 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
8999 ;; Patch setup.py so it looks for python-setuptools, which is
9000 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 9001 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a 9002 (build-system python-build-system)
861f70c9 9003 (propagated-inputs
f3b98f4f 9004 `(("python-six" ,python-six)))
99fffa8a
LF
9005 (synopsis "Config file reading, writing and validation")
9006 (description "ConfigObj is a simple but powerful config file reader and
9007writer: an ini file round tripper. Its main feature is that it is very easy to
9008use, with a straightforward programmer’s interface and a simple syntax for
9009config files.")
9010 (home-page "https://github.com/DiffSK/configobj")
3f641af0 9011 (license license:bsd-3)))
99fffa8a
LF
9012
9013(define-public python2-configobj
9014 (package-with-python2 python-configobj))
79e8a291
LF
9015
9016(define-public python-configargparse
9017 (package
9018 (name "python-configargparse")
9019 (version "0.10.0")
9020 (source (origin
9021 (method url-fetch)
9022 (uri (string-append
9023 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
9024 "ConfigArgParse-" version ".tar.gz"))
9025 (sha256
9026 (base32
9027 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
9028 (build-system python-build-system)
9029 (arguments
9030 ;; FIXME: Bug in test suite filed upstream:
9031 ;; https://github.com/bw2/ConfigArgParse/issues/32
9032 '(#:tests? #f))
9033 (synopsis "Replacement for argparse")
9034 (description "A drop-in replacement for argparse that allows options to also
9035be set via config files and/or environment variables.")
9036 (home-page "https://github.com/bw2/ConfigArgParse")
9037 (license license:expat)))
9038
9039(define-public python2-configargparse
9040 (package-with-python2 python-configargparse))
ab41f979
LF
9041
9042(define-public python-ndg-httpsclient
9043 (package
9044 (name "python-ndg-httpsclient")
ae476d01 9045 (version "0.4.2")
ab41f979
LF
9046 (source (origin
9047 (method url-fetch)
7be13d00 9048 (uri (pypi-uri "ndg_httpsclient" version))
ab41f979
LF
9049 (sha256
9050 (base32
ae476d01 9051 "1b5qirv46v4dpnmfqviwq42mdwfcby4dxmz0i41wad2337pqf2aq"))))
ab41f979 9052 (build-system python-build-system)
a39cc016
LF
9053 (arguments
9054 '(;; The tests appear to require networking.
9055 #:tests? #f))
ab41f979
LF
9056 (propagated-inputs
9057 `(("python-pyopenssl" ,python-pyopenssl)))
9058 (synopsis "HTTPS support for Python's httplib and urllib2")
9059 (description "This is a HTTPS client implementation for httplib and urllib2
9060based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
9061over the default provided with Python and importantly enables full verification
9062of the SSL peer.")
9063 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 9064 (license license:bsd-3)))
ab41f979
LF
9065
9066;; python2-openssl requires special care, so package-with-python2 is
9067;; insufficient.
9068(define-public python2-ndg-httpsclient
9069 (package (inherit python-ndg-httpsclient)
9070 (name "python2-ndg-httpsclient")
9071 (arguments `(#:python ,python-2))
9072 (propagated-inputs
9073 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
9074
9075(define-public python-contextlib2
9076 (package
9077 (name "python-contextlib2")
9078 (version "0.4.0")
9079 (source
9080 (origin
9081 (method url-fetch)
9082 (uri (pypi-uri "contextlib2" version))
9083 (sha256
9084 (base32
9085 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
9086 (build-system python-build-system)
9087 (arguments
9088 `(#:phases
9089 (modify-phases %standard-phases
9090 (replace 'check
9091 (lambda _ (zero?
9092 (system*
b3546174 9093 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
9094 (home-page "http://contextlib2.readthedocs.org/")
9095 (synopsis "Tools for decorators and context managers")
9096 (description "This module is primarily a backport of the Python
90973.2 contextlib to earlier Python versions. Like contextlib, it
9098provides utilities for common tasks involving decorators and context
9099managers. It also contains additional features that are not part of
9100the standard library.")
3f641af0 9101 (license license:psfl)))
03f964a5
CM
9102
9103(define-public python2-contextlib2
9104 (package-with-python2 python-contextlib2))
210bf497
DT
9105
9106(define-public python-texttable
9107 (package
9108 (name "python-texttable")
4c4d4df3 9109 (version "0.8.7")
210bf497
DT
9110 (source
9111 (origin
9112 (method url-fetch)
9113 (uri (pypi-uri "texttable" version))
9114 (sha256
9115 (base32
4c4d4df3 9116 "1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a"))))
210bf497
DT
9117 (build-system python-build-system)
9118 (arguments '(#:tests? #f)) ; no tests
9119 (home-page "https://github.com/foutaise/texttable/")
9120 (synopsis "Python module for creating simple ASCII tables")
9121 (description "Texttable is a Python module for creating simple ASCII
9122tables.")
3f641af0 9123 (license license:lgpl2.1+)))
210bf497
DT
9124
9125(define-public python2-texttable
9126 (package-with-python2 python-texttable))
67c52bb3
DT
9127
9128(define-public python-websocket-client
9129 (package
9130 (name "python-websocket-client")
6b810897 9131 (version "0.37.0")
67c52bb3
DT
9132 (source
9133 (origin
9134 (method url-fetch)
6b810897 9135 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
9136 (sha256
9137 (base32
6b810897 9138 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3 9139 (build-system python-build-system)
a5333f7c
HG
9140 (propagated-inputs
9141 `(("python-six" ,python-six)))
67c52bb3
DT
9142 (home-page "https://github.com/liris/websocket-client")
9143 (synopsis "WebSocket client for Python")
9144 (description "The Websocket-client module provides the low level APIs for
9145WebSocket usage in Python programs.")
3f641af0 9146 (license license:lgpl2.1+)))
67c52bb3
DT
9147
9148(define-public python2-websocket-client
9149 (package-with-python2 python-websocket-client))
5c6eea2a
LF
9150
9151(define-public python-atomicwrites
9152 (package
9153 (name "python-atomicwrites")
c56ad5e2 9154 (version "1.1.5")
5c6eea2a
LF
9155 (source (origin
9156 (method url-fetch)
9157 (uri (pypi-uri "atomicwrites" version))
9158 (sha256
9159 (base32
c56ad5e2 9160 "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214"))))
5c6eea2a
LF
9161 (build-system python-build-system)
9162 (synopsis "Atomic file writes in Python")
9163 (description "Library for atomic file writes using platform dependent tools
8f65585b 9164for atomic file system operations.")
5c6eea2a 9165 (home-page "https://github.com/untitaker/python-atomicwrites")
f210e944 9166 (license license:expat)))
9bb6d184
LF
9167
9168(define-public python2-atomicwrites
f210e944 9169 (package-with-python2 python-atomicwrites))
561bb3cb
LF
9170
9171(define-public python-requests-toolbelt
9172 (package
9173 (name "python-requests-toolbelt")
c02af1c8 9174 (version "0.6.2")
561bb3cb
LF
9175 (source (origin
9176 (method url-fetch)
c02af1c8
LF
9177 (uri (string-append
9178 "https://pypi.python.org/packages/"
9179 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
9180 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
9181 (sha256
9182 (base32
c02af1c8 9183 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb 9184 (build-system python-build-system)
759aadd4
LF
9185 (native-inputs
9186 `(("python-betamax" ,python-betamax)
9187 ("python-mock" ,python-mock)
9188 ("python-pytest" ,python-pytest)))
561bb3cb
LF
9189 (propagated-inputs
9190 `(("python-requests" ,python-requests)))
9191 (synopsis "Extensions to python-requests")
9192 (description "This is a toolbelt of useful classes and functions to be used
9193with python-requests.")
9194 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 9195 (license license:asl2.0)))
d1deb90b
LF
9196
9197(define-public python-click-threading
9198 (package
9199 (name "python-click-threading")
3d2e0dbc 9200 (version "0.2.0")
d1deb90b
LF
9201 (source (origin
9202 (method url-fetch)
3d2e0dbc
LF
9203 (uri (string-append
9204 "https://pypi.python.org/packages/"
9205 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
9206 "click-threading-" version ".tar.gz"))
d1deb90b
LF
9207 (sha256
9208 (base32
3d2e0dbc 9209 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
9210 (build-system python-build-system)
9211 (propagated-inputs
9212 `(("python-click" ,python-click)))
9213 (synopsis "Utilities for multithreading in Click")
9214 (description "This package provides utilities for multithreading in Click
9215applications.")
9216 (home-page "https://github.com/click-contrib/click-threading")
9217 (license license:expat)))
7b17cab9
LF
9218
9219(define-public python-click-log
9220 (package
9221 (name "python-click-log")
42734b9a 9222 (version "0.1.8")
7b17cab9
LF
9223 (source (origin
9224 (method url-fetch)
9225 (uri (pypi-uri "click-log" version))
9226 (sha256
9227 (base32
42734b9a 9228 "14ikfjfgnzf21mjniq9lfk2igzykgzfvwwrk85nw2b9fq44109sp"))))
7b17cab9
LF
9229 (build-system python-build-system)
9230 (propagated-inputs
9231 `(("python-click" ,python-click)))
9232 (synopsis "Logging for click applications")
9233 (description "This package provides a Python library for logging Click
9234applications.")
9235 (home-page "https://github.com/click-contrib/click-log")
9236 (license license:expat)))
7b3a4ee4
LF
9237
9238(define-public python-apipkg
9239 (package
9240 (name "python-apipkg")
9241 (version "1.4")
9242 (source (origin
9243 (method url-fetch)
9244 (uri (pypi-uri "apipkg" version))
9245 (sha256
9246 (base32
9247 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
9248 (build-system python-build-system)
328bb95d 9249 (native-inputs
7b3a4ee4
LF
9250 `(("python-pytest" ,python-pytest)))
9251 (synopsis "Namespace control and lazy-import mechanism")
9252 (description "With apipkg you can control the exported namespace of a Python
9253package and greatly reduce the number of imports for your users. It is a small
9254pure Python module that works on virtually all Python versions.")
9255 (home-page "https://bitbucket.org/hpk42/apipkg")
f210e944 9256 (license license:expat)))
e08739c3
CAW
9257
9258(define-public python2-apipkg
f210e944 9259 (package-with-python2 python-apipkg))
848964fe
LF
9260
9261(define-public python-execnet
9262 (package
9263 (name "python-execnet")
9264 (version "1.4.1")
9265 (source (origin
9266 (method url-fetch)
9267 (uri (pypi-uri "execnet" version))
9268 (sha256
9269 (base32
9270 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
9271 (build-system python-build-system)
ca0eee9d
LF
9272 (arguments
9273 `(;; 2 failed, 275 passed, 670 skipped, 4 xfailed
9274 ;; The two test failures are caused by the lack of an `ssh` executable.
9275 ;; The test suite can be run with pytest after the 'install' phase.
9276 #:tests? #f))
848964fe 9277 (native-inputs
ca0eee9d
LF
9278 `(("python-pytest" ,python-pytest)
9279 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 9280 (propagated-inputs
848964fe
LF
9281 `(("python-apipkg" ,python-apipkg)))
9282 (synopsis "Rapid multi-Python deployment")
9283 (description "Execnet provides a share-nothing model with
9284channel-send/receive communication for distributing execution across many
9285Python interpreters across version, platform and network barriers. It has a
d1e4ad1b 9286minimal and fast API targeting the following uses:
848964fe
LF
9287@enumerate
9288@item distribute tasks to (many) local or remote CPUs
9289@item write and deploy hybrid multi-process applications
9290@item write scripts to administer multiple environments
9291@end enumerate")
9292 (home-page "http://codespeak.net/execnet/")
f210e944 9293 (license license:expat)))
16c84f90
CAW
9294
9295(define-public python2-execnet
f210e944 9296 (package-with-python2 python-execnet))
6720dbb4 9297
d5bbf806 9298(define-public python-trollius-redis
9299 (package
9300 (name "python-trollius-redis")
9301 (version "0.1.4")
9302 (source
9303 (origin
9304 (method url-fetch)
9305 (uri (pypi-uri "trollius_redis" version))
9306 (sha256
9307 (base32
9308 "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
9309 (build-system python-build-system)
97b62eb0
MB
9310 ;; TODO: Tests require packaging 'hiredis'.
9311 (arguments '(#:tests? #f))
d5bbf806 9312 (home-page "https://github.com/benjolitz/trollius-redis")
9313 (synopsis "Port of asyncio-redis to trollius")
9314 (description "@code{trollius-redis} is a Redis client for Python
9315 trollius. It is an asynchronious IO (PEP 3156) implementation of the
9316 Redis protocol.")
9317 (license license:bsd-2)))
9318
9319(define-public python2-trollius-redis
9320 (package-with-python2 python-trollius-redis))
9321
6720dbb4
LF
9322;;; The software provided by this package was integrated into pytest 2.8.
9323(define-public python-pytest-cache
9324 (package
9325 (name "python-pytest-cache")
9326 (version "1.0")
9327 (source (origin
9328 (method url-fetch)
9329 (uri (pypi-uri "pytest-cache" version))
9330 (sha256
9331 (base32
9332 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
9333 (build-system python-build-system)
f22efa01 9334 (propagated-inputs
630d938f
EF
9335 `(("python-apipkg" ,python-apipkg)
9336 ("python-execnet" ,python-execnet)
9337 ("python-py" ,python-py)
9338 ("python-pytest" ,python-pytest)))
6720dbb4
LF
9339 (synopsis "Py.test plugin with mechanisms for caching across test runs")
9340 (description "The pytest-cache plugin provides tools to rerun failures from
9341the last py.test invocation.")
9342 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
f210e944 9343 (license license:expat)))
0adc21c2
EF
9344
9345(define-public python2-pytest-cache
f210e944 9346 (package-with-python2 python-pytest-cache))
d7e729fe
LF
9347
9348(define-public python-pytest-localserver
9349 (package
9350 (name "python-pytest-localserver")
29f20168 9351 (version "0.3.5")
d7e729fe
LF
9352 (source (origin
9353 (method url-fetch)
29f20168 9354 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
9355 (sha256
9356 (base32
29f20168 9357 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
9358 (build-system python-build-system)
9359 (arguments
9360 `(#:phases (modify-phases %standard-phases
9361 (replace 'check
9362 (lambda _
9363 (zero? (system* "py.test" "--genscript=runtests.py"))
9364 (zero? (system* "py.test")))))))
9365 (native-inputs
d7e729fe
LF
9366 `(("python-pytest" ,python-pytest)
9367 ("python-requests" ,python-requests)
9ba40f05 9368 ("python-six" ,python-six)))
f22efa01 9369 (propagated-inputs
9ba40f05 9370 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
9371 (synopsis "Py.test plugin to test server connections locally")
9372 (description "Pytest-localserver is a plugin for the pytest testing
9373framework which enables you to test server connections locally.")
9374 (home-page "https://pypi.python.org/pypi/pytest-localserver")
9375 (license license:expat)))
28cecbb7
LF
9376
9377(define-public python-wsgi-intercept
9378 (package
9379 (name "python-wsgi-intercept")
909fbd2b 9380 (version "1.2.2")
28cecbb7
LF
9381 (source (origin
9382 (method url-fetch)
909fbd2b
LF
9383 (uri (string-append
9384 "https://pypi.python.org/packages/"
9385 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
9386 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
9387 (sha256
9388 (base32
909fbd2b 9389 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7 9390 (build-system python-build-system)
b9fc496f
HG
9391 (propagated-inputs
9392 `(("python-six" ,python-six)))
28cecbb7 9393 (native-inputs
9d813ec1 9394 `(("python-pytest" ,python-pytest)
b9fc496f
HG
9395 ("python-httplib2" ,python-httplib2)
9396 ("python-requests" ,python-requests)
8757f050 9397 ("python-urllib3" ,python-urllib3)))
28cecbb7
LF
9398 (synopsis "Puts a WSGI application in place of a real URI for testing")
9399 (description "Wsgi_intercept installs a WSGI application in place of a real
9400URI for testing. Testing a WSGI application normally involves starting a
9401server at a local host and port, then pointing your test code to that address.
9402Instead, this library lets you intercept calls to any specific host/port
9403combination and redirect them into a WSGI application importable by your test
9404program. Thus, you can avoid spawning multiple processes or threads to test
9405your Web app.")
9406 (home-page "https://github.com/cdent/wsgi-intercept")
9407 (license license:expat)))
89b8a551
LF
9408
9409(define-public python-pytest-xprocess
9410 (package
9411 (name "python-pytest-xprocess")
9412 (version "0.9.1")
9413 (source (origin
9414 (method url-fetch)
9415 (uri (pypi-uri "pytest-xprocess" version))
9416 (sha256
9417 (base32
9418 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
9419 (build-system python-build-system)
9420 (propagated-inputs
9421 `(("python-pytest" ,python-pytest)
9422 ("python-pytest-cache" ,python-pytest-cache)
9423 ("python-psutil" ,python-psutil)))
9424 (synopsis "Pytest plugin to manage external processes across test runs")
9425 (description "Pytest-xprocess is an experimental py.test plugin for managing
9426processes across test runs.")
9427 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
9428 (license license:expat)))
5c299bf0
LF
9429
9430(define-public python-icalendar
9431 (package
9432 (name "python-icalendar")
fd8f9463 9433 (version "3.11.6")
5c299bf0
LF
9434 (source (origin
9435 (method url-fetch)
9436 (uri (pypi-uri "icalendar" version))
9437 (sha256
9438 (base32
fd8f9463 9439 "1ny9mbm9zgghl612b8wc4ap52bz3kgl486d7f307gxjmlqgz3i64"))))
5c299bf0
LF
9440 (build-system python-build-system)
9441 (propagated-inputs
22d7360b 9442 `(("python-dateutil" ,python-dateutil)
5c299bf0
LF
9443 ("python-pytz" ,python-pytz)))
9444 (synopsis "Python library for parsing iCalendar files")
9445 (description "The icalendar package is a parser/generator of iCalendar
9446files for use with Python.")
9447 (home-page "https://github.com/collective/icalendar")
3f641af0 9448 (license license:bsd-2)))
6bbbb53e
LF
9449
9450(define-public python-sphinxcontrib-newsfeed
9451 (package
9452 (name "python-sphinxcontrib-newsfeed")
9453 (version "0.1.4")
9454 (source (origin
9455 (method url-fetch)
9456 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
9457 (sha256
9458 (base32
9459 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
3d2a544c 9460 (arguments '(#:tests? #f)) ; No tests.
6bbbb53e
LF
9461 (build-system python-build-system)
9462 (propagated-inputs
251ed7f2 9463 `(("python-sphinx" ,python-sphinx)))
6bbbb53e
LF
9464 (synopsis "News Feed extension for Sphinx")
9465 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
9466Blog, News or Announcements section to a Sphinx website.")
9467 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 9468 (license license:bsd-2)))
2216e15c
SB
9469
9470(define-public python-args
9471 (package
9472 (name "python-args")
9473 (version "0.1.0")
9474 (source (origin
9475 (method url-fetch)
9476 (uri (pypi-uri "args" version))
9477 (sha256
9478 (base32
9479 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
9480 (build-system python-build-system)
2216e15c
SB
9481 (home-page "https://github.com/kennethreitz/args")
9482 (synopsis "Command-line argument parser")
9483 (description
9484 "This library provides a Python module to parse command-line arguments.")
3f641af0 9485 (license license:bsd-3)))
2216e15c
SB
9486
9487(define-public python2-args
9488 (package-with-python2 python-args))
c06a3de9
SB
9489
9490(define-public python-clint
9491 (package
9492 (name "python-clint")
9493 (version "0.5.1")
9494 (source (origin
9495 (method url-fetch)
9496 (uri (pypi-uri "clint" version))
9497 (sha256
9498 (base32
9499 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
9500 (build-system python-build-system)
6145b604
MB
9501 (arguments
9502 '(#:phases
9503 (modify-phases %standard-phases
9504 (replace 'check
9505 (lambda _
9506 (zero? (system* "py.test" "-v")))))))
9507 (native-inputs
9508 `(("python-pytest" ,python-pytest)))
f22efa01 9509 (propagated-inputs
f3b98f4f 9510 `(("python-args" ,python-args)))
c06a3de9
SB
9511 (home-page "https://github.com/kennethreitz/clint")
9512 (synopsis "Command-line interface tools")
9513 (description
9514 "Clint is a Python module filled with a set of tools for developing
9515command-line applications, including tools for colored and indented
9516output, progress bar display, and pipes.")
3f641af0 9517 (license license:isc)))
c06a3de9
SB
9518
9519(define-public python2-clint
9520 (package-with-python2 python-clint))
4ecdeef8
SB
9521
9522(define-public python-astor
9523 (package
9524 (name "python-astor")
9525 (version "0.5")
9526 (source (origin
9527 (method url-fetch)
9528 (uri (pypi-uri "astor" version))
9529 (sha256
9530 (base32
9531 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
9532 (build-system python-build-system)
4ecdeef8
SB
9533 (home-page "https://github.com/berkerpeksag/astor")
9534 (synopsis "Read and write Python ASTs")
9535 (description
9536 "Astor is designed to allow easy manipulation of Python source via the
9537Abstract Syntax Tree.")
3f641af0 9538 (license license:bsd-3)))
4ecdeef8
SB
9539
9540(define-public python2-astor
9541 (package-with-python2 python-astor))
e224b7d0
SB
9542
9543(define-public python-rply
9544 (package
9545 (name "python-rply")
9546 (version "0.7.4")
9547 (source (origin
9548 (method url-fetch)
9549 (uri (pypi-uri "rply" version))
9550 (sha256
9551 (base32
9552 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
9553 (build-system python-build-system)
f22efa01 9554 (propagated-inputs
f3b98f4f 9555 `(("python-appdirs" ,python-appdirs)))
e224b7d0
SB
9556 (home-page "https://github.com/alex/rply")
9557 (synopsis "Parser generator for Python")
9558 (description
9559 "This package provides a pure Python based parser generator, that also
9560works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
9561with a new public API, and RPython support.")
3f641af0 9562 (license license:bsd-3)))
e224b7d0
SB
9563
9564(define-public python2-rply
9565 (package-with-python2 python-rply))
c3e919d7
SB
9566
9567(define-public python-hy
9568 (package
9569 (name "python-hy")
9570 (version "0.11.1")
9571 (source (origin
9572 (method url-fetch)
9573 (uri (pypi-uri "hy" version))
9574 (sha256
9575 (base32
9576 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
9577 (build-system python-build-system)
15c37077
MB
9578 (arguments
9579 '(#:phases
9580 (modify-phases %standard-phases
9581 (replace 'check
9582 (lambda _
9583 ;; Tests require write access to HOME.
9584 (setenv "HOME" "/tmp")
9585 (zero? (system* "nosetests")))))))
9586 (native-inputs
9587 `(("python-coverage" ,python-coverage)
9588 ("python-nose" ,python-nose)))
f22efa01 9589 (propagated-inputs
c3e919d7
SB
9590 `(("python-astor" ,python-astor)
9591 ("python-clint" ,python-clint)
f3b98f4f 9592 ("python-rply" ,python-rply)))
c3e919d7
SB
9593 (home-page "http://hylang.org/")
9594 (synopsis "Lisp frontend to Python")
9595 (description
9596 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
9597its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
9598Python at your fingertips, in Lisp form.")
9599 (license license:expat)))
9600
9601(define-public python2-hy
9602 (package-with-python2 python-hy))
7a5b944e 9603
81f7f297
EF
9604(define-public python-rauth
9605 (package
9606 (name "python-rauth")
06fe79f2 9607 (version "0.7.3")
81f7f297
EF
9608 (source
9609 (origin
9610 (method url-fetch)
9611 (uri (pypi-uri "rauth" version))
9612 (sha256
9613 (base32
06fe79f2 9614 "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
81f7f297
EF
9615 (build-system python-build-system)
9616 (arguments
9617 `(#:test-target "check"))
f22efa01 9618 (propagated-inputs
81f7f297
EF
9619 `(("python-requests" ,python-requests)))
9620 (home-page "https://github.com/litl/rauth")
9621 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
9622 (description
9623 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
9624provides service wrappers for convenient connection initialization and
9625authenticated session objects providing things like keep-alive.")
0848d8d3
EF
9626 (license license:expat)
9627 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
9628
9629(define-public python2-rauth
0848d8d3
EF
9630 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
9631 (package
9632 (inherit base)
00e10c6e 9633 (native-inputs `(("python2-unittest2" ,python2-unittest2)
0848d8d3 9634 ,@(package-native-inputs base))))))
81f7f297 9635
1abe448d
EF
9636(define-public python2-functools32
9637 (package
9638 (name "python2-functools32")
9639 (version "3.2.3-2")
9640 (source
9641 (origin
9642 (method url-fetch)
9643 (uri (pypi-uri "functools32" version))
9644 (sha256
9645 (base32
9646 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
9647 (build-system python-build-system)
9648 (arguments
9649 `(#:python ,python-2
9650 #:tests? #f)) ; no test target
1abe448d
EF
9651 (home-page "https://github.com/MiCHiLU/python-functools32")
9652 (synopsis
9653 "Backport of the functools module from Python 3.2.3")
9654 (description
9655 "This package is a backport of the @code{functools} module from Python
96563.2.3 for use with older versions of Python and PyPy.")
9657 (license license:expat)))
9658
550bd98b
MB
9659(define-public python2-subprocess32
9660 (package
9661 (name "python2-subprocess32")
9662 (version "3.2.7")
9663 (source (origin
9664 (method url-fetch)
9665 (uri (pypi-uri "subprocess32" version))
9666 (sha256
9667 (base32
9668 "14350dhhlhyz5gqzi3lihn9m6lvskx5mcb20srx1kgsk9i50li8y"))
9669 (patches
9670 (search-patches "python2-subprocess32-disable-input-test.patch"))))
9671 (build-system python-build-system)
9672 (arguments
9673 `(#:python ,python-2
9674 #:phases
9675 (modify-phases %standard-phases
9676 (add-after 'unpack 'patch-/bin/sh
9677 (lambda _
9678 (substitute* '("subprocess32.py"
9679 "test_subprocess32.py")
9680 (("/bin/sh") (which "sh")))
9681 #t))
9682 (delete 'check)
9683 (add-after 'install 'check
9684 (lambda* (#:key inputs outputs #:allow-other-keys)
9685 ;; For some reason this package fails to import
9686 ;; _posixsubprocess.so when PYTHONPATH is set to the build
9687 ;; directory. Running tests after install is easier.
9688 (add-installed-pythonpath inputs outputs)
9689 (zero? (system* "python" "test_subprocess32.py")))))))
9690 (home-page "https://github.com/google/python-subprocess32")
9691 (synopsis "Backport of the subprocess module from Python 3.2")
9692 (description
9693 "This is a backport of the @code{subprocess} standard library module
9694from Python 3.2 and 3.3 for use on Python 2. It includes bugfixes and some
9695new features. On POSIX systems it is guaranteed to be reliable when used
9696in threaded applications. It includes timeout support from Python 3.3 but
9697otherwise matches 3.2’s API.")
9698 (license license:psfl)))
9699
877889f3 9700(define-public python2-futures
7a5b944e 9701 (package
877889f3 9702 (name "python2-futures")
e17a1248 9703 (version "3.0.5")
7a5b944e
EF
9704 (source
9705 (origin
9706 (method url-fetch)
9707 (uri (pypi-uri "futures" version))
9708 (sha256
9709 (base32
e17a1248 9710 "1pw1z4329xvlabdpwqa6b7v2fxf7hl64m4cgr22ckbym8m8m4hh5"))))
7a5b944e 9711 (build-system python-build-system)
877889f3 9712 (arguments `(#:python ,python-2))
7a5b944e
EF
9713 (home-page "https://github.com/agronholm/pythonfutures")
9714 (synopsis
9715 "Backport of the concurrent.futures package from Python 3.2")
9716 (description
9717 "The concurrent.futures module provides a high-level interface for
9718asynchronously executing callables. This package backports the
9719concurrent.futures package from Python 3.2")
3f641af0 9720 (license license:bsd-3)))
7a5b944e 9721
5cb2fe44
EF
9722(define-public python-promise
9723 (package
9724 (name "python-promise")
9725 (version "0.4.2")
9726 (source
9727 (origin
9728 (method url-fetch)
9729 (uri (pypi-uri "promise" version))
9730 (sha256
9731 (base32
9732 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
9733 (build-system python-build-system)
9734 ;; Tests wants python-futures, which is a python2 only program, and
9735 ;; can't be found by python-promise at test time.
9736 (arguments `(#:tests? #f))
9737 (home-page "https://github.com/syrusakbary/promise")
9738 (synopsis "Promises/A+ implementation for Python")
9739 (description
9740 "Promises/A+ implementation for Python")
9741 (properties `((python2-variant . ,(delay python2-promise))))
9742 (license license:expat)))
9743
9744(define-public python2-promise
9745 (let ((promise (package-with-python2
9746 (strip-python2-variant python-promise))))
9747 (package (inherit promise)
9748 (arguments (substitute-keyword-arguments (package-arguments promise)
9749 ((#:tests? _) #t)))
9750 (native-inputs
9751 `(("python2-futures" ,python2-futures)
9752 ("python2-pytest" ,python2-pytest)
5cb2fe44
EF
9753 ,@(package-native-inputs promise))))))
9754
c18f6368
EF
9755(define-public python-urllib3
9756 (package
9757 (name "python-urllib3")
6178274d 9758 (version "1.18.1")
c18f6368
EF
9759 (source
9760 (origin
9761 (method url-fetch)
9762 (uri (pypi-uri "urllib3" version))
9763 (sha256
9764 (base32
6178274d 9765 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
c18f6368
EF
9766 (build-system python-build-system)
9767 (arguments `(#:tests? #f))
9768 (native-inputs
f3b98f4f 9769 `(;; some packages for tests
c18f6368
EF
9770 ("python-nose" ,python-nose)
9771 ("python-mock" ,python-mock)
9772 ("python-tornado" ,python-tornado)))
9773 (propagated-inputs
8322749a 9774 `(;; extra packages for https security
c18f6368
EF
9775 ("python-certifi" ,python-certifi)
9776 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
9777 ("python-pyasn1" ,python-pyasn1)
9778 ("python-pyopenssl" ,python-pyopenssl)))
6178274d 9779 (home-page "https://urllib3.readthedocs.org/")
c18f6368
EF
9780 (synopsis "HTTP library with thread-safe connection pooling")
9781 (description
9782 "Urllib3 supports features left out of urllib and urllib2 libraries. It
9783can reuse the same socket connection for multiple requests, it can POST files,
9784supports url redirection and retries, and also gzip and deflate decoding.")
9785 (license license:expat)))
9786
9787(define-public python2-urllib3
9788 (package-with-python2 python-urllib3))
2b2f2fc1
DT
9789
9790(define-public python-colorama
9791 (package
9792 (name "python-colorama")
f92576f9 9793 (version "0.3.7")
2b2f2fc1
DT
9794 (source
9795 (origin
9796 (method url-fetch)
9797 (uri (pypi-uri "colorama" version))
9798 (sha256
9799 (base32
f92576f9 9800 "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
2b2f2fc1 9801 (build-system python-build-system)
46e110cc 9802 (synopsis "Colored terminal text rendering for Python")
2b2f2fc1
DT
9803 (description "Colorama is a Python library for rendering colored terminal
9804text.")
9805 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 9806 (license license:bsd-3)))
2b2f2fc1
DT
9807
9808(define-public python2-colorama
9809 (package-with-python2 python-colorama))
f5bcec6e
DT
9810
9811(define-public python-rsa
9812 (package
9813 (name "python-rsa")
ecd68c53 9814 (version "3.4.2")
f5bcec6e
DT
9815 (source
9816 (origin
9817 (method url-fetch)
9818 (uri (pypi-uri "rsa" version))
9819 (sha256
9820 (base32
ecd68c53 9821 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
f5bcec6e 9822 (build-system python-build-system)
f22efa01 9823 (propagated-inputs
f3b98f4f 9824 `(("python-pyasn1" ,python-pyasn1)))
f5bcec6e
DT
9825 (synopsis "Pure-Python RSA implementation")
9826 (description "Python-RSA is a pure-Python RSA implementation. It supports
9827encryption and decryption, signing and verifying signatures, and key
9828generation according to PKCS#1 version 1.5. It can be used as a Python
9829library as well as on the command line.")
9830 (home-page "http://stuvel.eu/rsa")
3f641af0 9831 (license license:asl2.0)))
f5bcec6e
DT
9832
9833(define-public python2-rsa
9834 (package-with-python2 python-rsa))
c0aacfa5
DT
9835
9836(define-public python-pluggy
9837 (package
9838 (name "python-pluggy")
9839 (version "0.3.1")
9840 (source
9841 (origin
9842 (method url-fetch)
9843 (uri (pypi-uri "pluggy" version))
9844 (sha256
9845 (base32
9846 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
9847 (build-system python-build-system)
c0aacfa5
DT
9848 (synopsis "Plugin and hook calling mechanism for Python")
9849 (description "Pluggy is an extraction of the plugin manager as used by
9850Pytest but stripped of Pytest specific details.")
9851 (home-page "https://pypi.python.org/pypi/pluggy")
9852 (license license:expat)))
9853
9854(define-public python2-pluggy
9855 (package-with-python2 python-pluggy))
a4af21ca
DT
9856
9857(define-public python-tox
9858 (package
9859 (name "python-tox")
9860 (version "2.3.1")
9861 (source
9862 (origin
9863 (method url-fetch)
9864 (uri (pypi-uri "tox" version))
9865 (sha256
9866 (base32
9867 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
9868 (build-system python-build-system)
9869 (arguments
7ba07edf
HG
9870 ;; FIXME: Tests require pytest-timeout, which itself requires
9871 ;; pytest>=2.8.0 for installation.
a4af21ca 9872 '(#:tests? #f))
482d9591
HG
9873 (propagated-inputs
9874 `(("python-pluggy" ,python-pluggy) ; >=0.3.0,<0.4.0
a4af21ca 9875 ("python-py" ,python-py)
482d9591 9876 ("python-virtualenv" ,python-virtualenv)))
328bb95d 9877 (native-inputs
7ba07edf
HG
9878 `(; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
9879 ("python-pytest" ,python-pytest))) ; >= 2.3.5
a4af21ca
DT
9880 (home-page "http://tox.testrun.org/")
9881 (synopsis "Virtualenv-based automation of test activities")
9882 (description "Tox is a generic virtualenv management and test command line
9883tool. It can be used to check that a package installs correctly with
9884different Python versions and interpreters, or run tests in each type of
9885supported environment, or act as a frontend to continuous integration
9886servers.")
9887 (license license:expat)))
9888
9889(define-public python2-tox
9890 (package-with-python2 python-tox))
ba9da248
DT
9891
9892(define-public python-jmespath
9893 (package
9894 (name "python-jmespath")
9895 (version "0.9.0")
9896 (source
9897 (origin
9898 (method url-fetch)
9899 (uri (pypi-uri "jmespath" version))
9900 (sha256
9901 (base32
9902 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
9903 (build-system python-build-system)
52a75a83
MB
9904 (native-inputs
9905 `(("python-nose" ,python-nose)))
ba9da248
DT
9906 (synopsis "JSON Matching Expressions")
9907 (description "JMESPath (pronounced “james path”) is a Python library that
9908allows one to declaratively specify how to extract elements from a JSON
9909document.")
9910 (home-page "https://github.com/jmespath/jmespath.py")
9911 (license license:expat)))
9912
9913(define-public python2-jmespath
9914 (package-with-python2 python-jmespath))
935fcd5c
DT
9915
9916(define-public python-botocore
9917 (package
9918 (name "python-botocore")
d93985fe 9919 (version "1.5.26")
935fcd5c
DT
9920 (source
9921 (origin
9922 (method url-fetch)
9923 (uri (pypi-uri "botocore" version))
9924 (sha256
9925 (base32
d93985fe 9926 "1b7l48hr88galrrc5q6k21z3sdadzxc87ppzs7k9fz4p1w8bfnvb"))))
935fcd5c 9927 (build-system python-build-system)
877fdac9
MB
9928 (arguments
9929 ;; FIXME: Many tests are failing.
9930 '(#:tests? #f))
482d9591 9931 (propagated-inputs
22d7360b 9932 `(("python-dateutil" ,python-dateutil)
935fcd5c 9933 ("python-docutils" ,python-docutils)
482d9591 9934 ("python-jmespath" ,python-jmespath)))
8fa6890b 9935 (native-inputs
482d9591 9936 `(("python-mock" ,python-mock)
935fcd5c 9937 ("python-nose" ,python-nose)
482d9591 9938 ("behave" ,behave)
935fcd5c 9939 ("python-tox" ,python-tox)
482d9591 9940 ("python-wheel" ,python-wheel)))
935fcd5c
DT
9941 (home-page "https://github.com/boto/botocore")
9942 (synopsis "Low-level interface to AWS")
9943 (description "Botocore is a Python library that provides a low-level
9944interface to the Amazon Web Services (AWS) API.")
3f641af0 9945 (license license:asl2.0)))
935fcd5c
DT
9946
9947(define-public python2-botocore
9948 (package-with-python2 python-botocore))
f861b8b8
DT
9949
9950(define-public awscli
9951 (package
9952 (name "awscli")
192b887a 9953 (version "1.11.63")
f861b8b8
DT
9954 (source
9955 (origin
9956 (method url-fetch)
d5ccf71e 9957 (uri (pypi-uri name version))
f861b8b8
DT
9958 (sha256
9959 (base32
192b887a 9960 "1r8aqv8w27k76lcsfk83w6qw9lz8gk2ibzwacp5wjhpp2gik911m"))))
f861b8b8 9961 (build-system python-build-system)
482d9591 9962 (propagated-inputs
f861b8b8 9963 `(("python-colorama" ,python-colorama)
482d9591
HG
9964 ("python-botocore" ,python-botocore)
9965 ("python-s3transfer" ,python-s3transfer)
f861b8b8 9966 ("python-docutils" ,python-docutils)
0cb9fba3 9967 ("python-pyyaml" ,python-pyyaml)
482d9591 9968 ("python-rsa" ,python-rsa)))
619bfd81
MB
9969 (arguments
9970 ;; FIXME: The 'pypi' release does not contain tests.
9971 '(#:tests? #f))
60a8be3a 9972 (home-page "https://aws.amazon.com/cli/")
f861b8b8
DT
9973 (synopsis "Command line client for AWS")
9974 (description "AWS CLI provides a unified command line interface to the
9975Amazon Web Services (AWS) API.")
3f641af0 9976 (license license:asl2.0)))
6a44697d
LF
9977
9978(define-public python-hypothesis
9979 (package
9980 (name "python-hypothesis")
bea6d94d 9981 (version "3.1.0")
6a44697d
LF
9982 (source (origin
9983 (method url-fetch)
9984 (uri (pypi-uri "hypothesis" version))
9985 (sha256
9986 (base32
bea6d94d 9987 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 9988 (build-system python-build-system)
bd100c71 9989 (native-inputs
6a44697d
LF
9990 `(("python-flake8" ,python-flake8)
9991 ("python-pytest" ,python-pytest)))
9992 (synopsis "Library for property based testing")
9993 (description "Hypothesis is a library for testing your Python code against a
9994much larger range of examples than you would ever want to write by hand. It’s
9995based on the Haskell library, Quickcheck, and is designed to integrate
9996seamlessly into your existing Python unit testing work flow.")
9997 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 9998 (license license:mpl2.0)
6f068e08 9999 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
10000
10001(define-public python2-hypothesis
6f068e08
EF
10002 (let ((hypothesis (package-with-python2
10003 (strip-python2-variant python-hypothesis))))
10004 (package (inherit hypothesis)
10005 (native-inputs
bd100c71
MB
10006 `(("python2-enum34" ,python2-enum34)
10007 ,@(package-native-inputs hypothesis))))))
7517e73c
LF
10008
10009(define-public python-pytest-subtesthack
10010 (package
10011 (name "python-pytest-subtesthack")
10012 (version "0.1.1")
10013 (source (origin
10014 (method url-fetch)
10015 (uri (pypi-uri "pytest-subtesthack" version))
10016 (sha256
10017 (base32
10018 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
10019 (build-system python-build-system)
7517e73c
LF
10020 (propagated-inputs
10021 `(("python-pytest" ,python-pytest)))
10022 (synopsis "Set-up and tear-down fixtures for unit tests")
10023 (description "This plugin allows you to set up and tear down fixtures within
10024unit test functions that use @code{py.test}. This is useful for using
10025@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
10026function multiple times, without setting up or tearing down fixture state as is
10027normally the case.")
10028 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 10029 (license license:unlicense)))
7517e73c
LF
10030
10031(define-public python2-pytest-subtesthack
10032 (package-with-python2 python-pytest-subtesthack))
0bdc1671 10033
7637de23 10034(define-public python-xdo
0bdc1671 10035 (package
7637de23 10036 (name "python-xdo")
e871c332 10037 (version "0.3")
0bdc1671
CAW
10038 (source (origin
10039 (method url-fetch)
10040 (uri (string-append
10041 "http://http.debian.net/debian/pool/main/p/python-xdo/"
10042 "python-xdo_" version ".orig.tar.gz"))
10043 (sha256
10044 (base32
e871c332 10045 "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
0bdc1671
CAW
10046 (build-system python-build-system)
10047 (arguments
736cfc10
SB
10048 '(#:phases
10049 (modify-phases %standard-phases
10050 (add-before 'install 'patch-libxdo-path
10051 ;; Hardcode the path of dynamically loaded libxdo library.
10052 (lambda* (#:key inputs #:allow-other-keys)
10053 (let ((libxdo (string-append
10054 (assoc-ref inputs "xdotool")
10055 "/lib/libxdo.so")))
10056 (substitute* "xdo/_xdo.py"
10057 (("find_library\\(\"xdo\"\\)")
10058 (simple-format #f "\"~a\"" libxdo)))
10059 #t))))
10060 #:tests? #f)) ; no tests provided
0b5e0863
SB
10061 (propagated-inputs
10062 `(("python-six" ,python-six)))
0bdc1671
CAW
10063 (inputs
10064 `(("xdotool" ,xdotool)
10065 ("libX11" ,libx11)))
10066 (home-page "https://tracker.debian.org/pkg/python-xdo")
10067 (synopsis "Python library for simulating X11 keyboard/mouse input")
10068 (description "Provides bindings to libxdo for manipulating X11 via simulated
10069input. (Note that this is mostly a legacy library; you may wish to look at
10070python-xdo for newer bindings.)")
3f641af0 10071 (license license:bsd-3)))
0bdc1671 10072
7637de23
LF
10073(define-public python2-xdo
10074 (package-with-python2 python-xdo))
10075
cb34dc6c
CAW
10076(define-public python-wtforms
10077 (package
10078 (name "python-wtforms")
10079 (version "2.1")
10080 (source
10081 (origin
10082 (method url-fetch)
10083 (uri (pypi-uri "WTForms" version ".zip"))
10084 (sha256
10085 (base32
10086 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
10087 (build-system python-build-system)
13c4d874
EF
10088 (arguments
10089 '(#:phases
10090 (modify-phases %standard-phases
10091 (add-after 'unpack 'remove-django-test
10092 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
10093 (lambda _
10094 (substitute*
10095 "tests/runtests.py"
10096 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
10097 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
10098 #t)))))
cb34dc6c
CAW
10099 (native-inputs
10100 `(("unzip" ,unzip)))
10101 (home-page "http://wtforms.simplecodes.com/")
10102 (synopsis
10103 "Form validation and rendering library for Python web development")
10104 (description
10105 "WTForms is a flexible forms validation and rendering library
10106for Python web development. It is very similar to the web form API
10107available in Django, but is a standalone package.")
f210e944 10108 (license license:bsd-3)))
cb34dc6c
CAW
10109
10110(define-public python2-wtforms
f210e944 10111 (package-with-python2 python-wtforms))
50aaec25
DT
10112
10113(define-public python-mako
10114 (package
10115 (name "python-mako")
3753f2e6 10116 (version "1.0.6")
50aaec25
DT
10117 (source
10118 (origin
10119 (method url-fetch)
10120 (uri (pypi-uri "Mako" version))
10121 (sha256
10122 (base32
3753f2e6 10123 "03dyxgjknp4ffsv7vwfd28l5bbpzi0ylp20543wpg3iahyyrwma8"))))
50aaec25 10124 (build-system python-build-system)
482d9591
HG
10125 (propagated-inputs
10126 `(("python-markupsafe" ,python-markupsafe)))
50aaec25 10127 (native-inputs
482d9591 10128 `(("python-mock" ,python-mock)
e435af5c
MB
10129 ("python-nose" ,python-nose)
10130 ("python-pytest" ,python-pytest)))
50aaec25
DT
10131 (home-page "http://www.makotemplates.org/")
10132 (synopsis "Templating language for Python")
10133 (description "Mako is a templating language for Python that compiles
10134templates into Python modules.")
f210e944 10135 (license license:expat)))
50aaec25
DT
10136
10137(define-public python2-mako
f210e944 10138 (package-with-python2 python-mako))
ae00a41f
CAW
10139
10140(define-public python-waitress
10141 (package
10142 (name "python-waitress")
10143 (version "0.8.10")
10144 (source
10145 (origin
10146 (method url-fetch)
10147 (uri (pypi-uri "waitress" version))
10148 (sha256
10149 (base32
10150 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
10151 (build-system python-build-system)
10152 (home-page "https://github.com/Pylons/waitress")
10153 (synopsis "Waitress WSGI server")
10154 (description "Waitress is meant to be a production-quality pure-Python WSGI
10155server with very acceptable performance.")
f210e944 10156 (license license:zpl2.1)))
ae00a41f
CAW
10157
10158(define-public python2-waitress
f210e944 10159 (package-with-python2 python-waitress))
778a284b
CAW
10160
10161(define-public python-wsgiproxy2
10162 (package
10163 (name "python-wsgiproxy2")
10164 (version "0.4.2")
10165 (source
10166 (origin
10167 (method url-fetch)
10168 (uri (pypi-uri "WSGIProxy2" version ".zip"))
10169 (sha256
10170 (base32
10171 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
10172 (build-system python-build-system)
e359b31a
LF
10173 (arguments
10174 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
10175 ;; support Python 3:
10176 ;; https://github.com/benoitc/restkit/issues/140
10177 #:tests? #f))
778a284b
CAW
10178 (native-inputs
10179 `(("unzip" ,unzip)
10180 ("python-nose" ,python-nose)
10181 ("python-coverage" ,python-coverage)))
10182 (propagated-inputs
10183 `(("python-six" ,python-six)
10184 ("python-webob" ,python-webob)))
10185 (home-page
10186 "https://github.com/gawel/WSGIProxy2/")
10187 (synopsis "WSGI Proxy with various http client backends")
10188 (description "WSGI turns HTTP requests into WSGI function calls.
10189WSGIProxy turns WSGI function calls into HTTP requests.
10190It also includes code to sign requests and pass private data,
10191and to spawn subprocesses to handle requests.")
f210e944 10192 (license license:expat)))
778a284b
CAW
10193
10194(define-public python2-wsgiproxy2
f210e944 10195 (package-with-python2 python-wsgiproxy2))
bb7518b1
CAW
10196
10197(define-public python-pastedeploy
10198 (package
10199 (name "python-pastedeploy")
10200 (version "1.5.2")
10201 (source
10202 (origin
10203 (method url-fetch)
10204 (uri (pypi-uri "PasteDeploy" version))
10205 (sha256
10206 (base32
10207 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
10208 (build-system python-build-system)
10209 (native-inputs
10210 `(("python-nose" ,python-nose)))
bb7518b1
CAW
10211 (home-page "http://pythonpaste.org/deploy/")
10212 (synopsis
10213 "Load, configure, and compose WSGI applications and servers")
10214 (description
10215 "This tool provides code to load WSGI applications and servers from URIs;
10216these URIs can refer to Python Eggs for INI-style configuration files. Paste
10217Script provides commands to serve applications based on this configuration
10218file.")
10219 (license license:expat)))
10220
10221(define-public python2-pastedeploy
10222 (package-with-python2 python-pastedeploy))
1cf53652 10223
c4a7904c
CAW
10224(define-public python-paste
10225 (package
10226 (name "python-paste")
ba1731da 10227 (version "2.0.3")
c4a7904c
CAW
10228 (source
10229 (origin
10230 (method url-fetch)
10231 (uri (pypi-uri "Paste" version))
10232 (sha256
10233 (base32
ba1731da 10234 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
fc1adab1
AK
10235 (patches (search-patches "python-paste-remove-website-test.patch"
10236 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
10237 (build-system python-build-system)
10238 (native-inputs
10239 `(("python-nose" ,python-nose)))
10240 (propagated-inputs
f3b98f4f 10241 `(("python-six" ,python-six)))
c4a7904c
CAW
10242 (home-page "http://pythonpaste.org")
10243 (synopsis
10244 "Python web development tools, focusing on WSGI")
10245 (description
10246 "Paste provides a variety of web development tools and middleware which
10247can be nested together to build web applications. Paste's design closely
10248follows ideas flowing from WSGI (Web Standard Gateway Interface).")
ba1731da 10249 (license license:expat)))
c4a7904c
CAW
10250
10251(define-public python2-paste
ba1731da 10252 (package-with-python2 python-paste))
c4a7904c 10253
a8f20f63
CAW
10254(define-public python-pastescript
10255 (package
10256 (name "python-pastescript")
10257 (version "2.0.2")
10258 (source
10259 (origin
10260 (method url-fetch)
10261 (uri (pypi-uri "PasteScript" version))
10262 (sha256
10263 (base32
10264 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
10265 (build-system python-build-system)
10266 (native-inputs
10267 `(("python-nose" ,python-nose)))
10268 (propagated-inputs
f3b98f4f 10269 `(("python-paste" ,python-paste)
a8f20f63
CAW
10270 ("python-pastedeploy" ,python-pastedeploy)))
10271 (home-page "http://pythonpaste.org/script/")
10272 (arguments
10273 '(;; Unfortunately, this requires the latest unittest2,
10274 ;; but that requires traceback2 which requires linecache2 which requires
10275 ;; unittest2. So we're skipping tests for now.
10276 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
10277 ;; so in theory we could get around this situation somehow.)
10278 #:tests? #f))
10279 (synopsis
10280 "Pluggable command line tool for serving web applications and more")
10281 (description
10282 "PasteScript is a plugin-friendly command line tool which provides a
10283variety of features, from launching web applications to bootstrapping project
10284layouts.")
10285 (license license:expat)))
10286
10287(define-public python2-pastescript
10288 (package-with-python2 python-pastescript))
10289
1cf53652
CAW
10290(define-public python-pyquery
10291 (package
10292 (name "python-pyquery")
ab0c3429 10293 (version "1.2.17")
1cf53652
CAW
10294 (source
10295 (origin
10296 (method url-fetch)
10297 (uri (pypi-uri "pyquery" version))
10298 (sha256
10299 (base32
ab0c3429 10300 "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
1cf53652 10301 (build-system python-build-system)
2ddbfa8c
LF
10302 (native-inputs
10303 `(("python-webob" ,python-webob)
10304 ("python-webtest" ,python-webtest)))
1cf53652
CAW
10305 (propagated-inputs
10306 `(("python-lxml" ,python-lxml)
10307 ("python-cssselect" ,python-cssselect)))
10308 (home-page "https://github.com/gawel/pyquery")
10309 (synopsis "Make jQuery-like queries on xml documents")
10310 (description "pyquery allows you to make jQuery queries on xml documents.
10311The API is as much as possible the similar to jQuery. pyquery uses lxml for
10312fast xml and html manipulation.")
f210e944 10313 (license license:bsd-3)))
1cf53652
CAW
10314
10315(define-public python2-pyquery
f210e944 10316 (package-with-python2 python-pyquery))
aa6313d6
CAW
10317
10318(define-public python-webtest
10319 (package
10320 (name "python-webtest")
10321 (version "2.0.20")
10322 (source
10323 (origin
10324 (method url-fetch)
10325 (uri (pypi-uri "WebTest" version))
10326 (sha256
10327 (base32
10328 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
10329 (build-system python-build-system)
10330 (arguments
10331 `(;; Unfortunately we have to disable tests!
10332 ;; This release of WebTest is pinned to python-nose < 1.3,
10333 ;; but older versions of python-nose are plagued with the following
10334 ;; bug(s), which rears its ugly head during test execution:
10335 ;; https://github.com/nose-devs/nose/issues/759
10336 ;; https://github.com/nose-devs/nose/pull/811
10337 #:tests? #f))
10338 ;; Commented out code is no good, but in this case, once tests
10339 ;; are ready to be enabled again, we should put the following
10340 ;; in place:
10341 ;; (native-inputs
10342 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
10343 ;; ; but see above comment
10344 ;; ("python-coverage" ,python-coverage)
10345 ;; ("python-mock" ,python-mock)
10346 ;; ("python-pastedeploy" ,python-pastedeploy)
10347 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
10348 ;; ("python-pyquery" ,python-pyquery)))
10349 (propagated-inputs
10350 `(("python-waitress" ,python-waitress)
10351 ("python-webob" ,python-webob)
10352 ("python-six" ,python-six)
10353 ("python-beautifulsoup4" ,python-beautifulsoup4)))
10354 (home-page "http://webtest.pythonpaste.org/")
10355 (synopsis "Helper to test WSGI applications")
10356 (description "Webtest allows you to test your Python web applications
10357without starting an HTTP server. It supports anything that supports the
10358minimum of WSGI.")
f210e944 10359 (license license:expat)))
aa6313d6
CAW
10360
10361(define-public python2-webtest
f210e944 10362 (package-with-python2 python-webtest))
4cb122cd
CAW
10363
10364(define-public python-anyjson
10365 (package
10366 (name "python-anyjson")
10367 (version "0.3.3")
10368 (source
10369 (origin
10370 (method url-fetch)
10371 (uri (pypi-uri "anyjson" version))
10372 (sha256
10373 (base32
10374 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
10375 (build-system python-build-system)
10376 (arguments
10377 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
10378 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
10379 ;; whatever) so this transformation needs to be done before the tests
10380 ;; can be run. Maybe we could add a build step to transform beforehand
10381 ;; but it could be annoying/difficult.
10382 ;; We can enable tests for the Python 2 version, though, and do below.
10383 #:tests? #f))
10384 (home-page "http://bitbucket.org/runeh/anyjson/")
10385 (synopsis
10386 "Wraps best available JSON implementation in a common interface")
10387 (description
10388 "Anyjson loads whichever is the fastest JSON module installed
10389and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 10390 (license license:bsd-3)
4cb122cd
CAW
10391 (properties `((python2-variant . ,(delay python2-anyjson))))))
10392
10393(define-public python2-anyjson
10394 (let ((anyjson (package-with-python2
10395 (strip-python2-variant python-anyjson))))
10396 (package
10397 (inherit anyjson)
10398 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
10399 #:tests? #t
10400 ,@(package-arguments anyjson)))
00e10c6e 10401 (native-inputs `(("python2-nose" ,python2-nose))))))
8dfceab7
CAW
10402
10403(define-public python-amqp
10404 (package
10405 (name "python-amqp")
10406 (version "1.4.9")
10407 (source
10408 (origin
10409 (method url-fetch)
10410 (uri (pypi-uri "amqp" version))
10411 (sha256
10412 (base32
10413 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
10414 (build-system python-build-system)
10415 (native-inputs
10416 `(("python-nose" ,python-nose)
10417 ("python-mock" ,python-mock)))
7bf837fd 10418 (home-page "https://github.com/celery/py-amqp")
8dfceab7
CAW
10419 (synopsis
10420 "Low-level AMQP client for Python (fork of amqplib)")
10421 (description
10422 "This is a fork of amqplib which was originally written by Barry Pederson.
10423It is maintained by the Celery project, and used by kombu as a pure python
10424alternative when librabbitmq is not available.")
3f641af0 10425 (license license:lgpl2.1+)
8dfceab7
CAW
10426 (properties `((python2-variant . ,(delay python2-amqp))))))
10427
10428(define-public python2-amqp
10429 (let ((amqp (package-with-python2
10430 (strip-python2-variant python-amqp))))
10431 (package
10432 (inherit amqp)
10433 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
10434 ;; unmaintained. Weirdly, does not do this on the python 3
10435 ;; version?
10436 #:tests? #f
00e10c6e 10437 ,@(package-arguments amqp))))))
7d387305
CAW
10438
10439(define-public python-kombu
10440 (package
10441 (name "python-kombu")
0cb59822 10442 (version "3.0.37")
7d387305
CAW
10443 (source
10444 (origin
10445 (method url-fetch)
10446 (uri (pypi-uri "kombu" version))
10447 (sha256
10448 (base32
0cb59822 10449 "0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
7d387305
CAW
10450 (build-system python-build-system)
10451 (native-inputs
10452 `(("python-mock" ,python-mock)
10453 ("python-nose" ,python-nose)))
10454 (propagated-inputs
10455 `(("python-anyjson" ,python-anyjson)
0cb59822
LF
10456 ("python-amqp" ,python-amqp)
10457 ("python-redis" ,python-redis)))
7d387305
CAW
10458 (home-page "http://kombu.readthedocs.org")
10459 (synopsis "Message passing library for Python")
10460 (description "The aim of Kombu is to make messaging in Python as easy as
10461possible by providing an idiomatic high-level interface for the AMQ protocol,
10462and also provide proven and tested solutions to common messaging problems.
10463AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
10464message orientation, queuing, routing, reliability and security, for which the
10465RabbitMQ messaging server is the most popular implementation.")
3f641af0 10466 (license license:bsd-3)
7d387305
CAW
10467 (properties `((python2-variant . ,(delay python2-kombu))))))
10468
10469(define-public python2-kombu
10470 (let ((kombu (package-with-python2
10471 (strip-python2-variant python-kombu))))
10472 (package
10473 (inherit kombu)
752eb9e0
MB
10474 (arguments `(;; FIXME: 'TestTransport.test_del_sync' fails on python2.
10475 ;; It works fine on the python3 variant.
10476 #:tests? #f
10477 ,@(package-arguments kombu)))
328bb95d
HG
10478 (native-inputs `(("python2-unittest2" ,python2-unittest2)
10479 ,@(package-native-inputs kombu))))))
b6f0b9fb
CAW
10480
10481(define-public python-billiard
10482 (package
10483 (name "python-billiard")
a6bb9e44 10484 (version "3.3.0.23")
b6f0b9fb
CAW
10485 (source
10486 (origin
10487 (method url-fetch)
10488 (uri (pypi-uri "billiard" version))
10489 (sha256
10490 (base32
a6bb9e44 10491 "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
b6f0b9fb
CAW
10492 (build-system python-build-system)
10493 (native-inputs
10494 `(("python-nose" ,python-nose)))
7bf837fd 10495 (home-page "https://github.com/celery/billiard")
b6f0b9fb
CAW
10496 (synopsis
10497 "Python multiprocessing fork with improvements and bugfixes")
10498 (description
10499 "Billiard is a fork of the Python 2.7 multiprocessing package. The
10500multiprocessing package itself is a renamed and updated version of R Oudkerk's
10501pyprocessing package. This standalone variant is intended to be compatible with
10502Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 10503 (license license:bsd-3)
b6f0b9fb
CAW
10504 (properties `((python2-variant . ,(delay python2-billiard))))))
10505
10506(define-public python2-billiard
10507 (let ((billiard (package-with-python2
10508 (strip-python2-variant python-billiard))))
10509 (package
10510 (inherit billiard)
00e10c6e 10511 (native-inputs `(("python2-unittest2" ,python2-unittest2)
b6f0b9fb
CAW
10512 ("python2-mock" ,python2-mock)
10513 ,@(package-native-inputs billiard))))))
22df6419
CAW
10514
10515(define-public python-celery
10516 (package
10517 (name "python-celery")
9ebe87fe 10518 (version "3.1.24")
22df6419
CAW
10519 (source
10520 (origin
10521 (method url-fetch)
10522 (uri (pypi-uri "celery" version))
10523 (sha256
10524 (base32
9ebe87fe 10525 "0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
22df6419 10526 (build-system python-build-system)
9ebe87fe
LF
10527 (arguments
10528 `(#:phases
10529 (modify-phases %standard-phases
10530 ;; These tests break with Python 3.5:
10531 ;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
10532 (replace 'check
10533 (lambda _
10534 (zero?
10535 (system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
22df6419
CAW
10536 (native-inputs
10537 `(("python-nose" ,python-nose)))
f22efa01 10538 (propagated-inputs
22df6419
CAW
10539 `(("python-pytz" ,python-pytz)
10540 ("python-billiard" ,python-billiard)
10541 ("python-kombu" ,python-kombu)))
10542 (home-page "http://celeryproject.org")
10543 (synopsis "Distributed Task Queue")
10544 (description "Celery is an asynchronous task queue/job queue based on
10545distributed message passing. It is focused on real-time operation, but
10546supports scheduling as well. The execution units, called tasks, are executed
10547concurrently on a single or more worker servers using multiprocessing,
10548Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
10549synchronously (wait until ready).")
3f641af0 10550 (license license:bsd-3)
22df6419
CAW
10551 (properties `((python2-variant . ,(delay python2-celery))))))
10552
10553(define-public python2-celery
10554 (let ((celery (package-with-python2
10555 (strip-python2-variant python-celery))))
10556 (package
10557 (inherit celery)
00e10c6e 10558 (native-inputs `(("python2-unittest2" ,python2-unittest2)
22df6419
CAW
10559 ("python2-mock" ,python2-mock)
10560 ,@(package-native-inputs celery))))))
97e32948
CAW
10561
10562(define-public python-translitcodec
10563 (package
10564 (name "python-translitcodec")
10565 (version "0.4.0")
10566 (source
10567 (origin
10568 (method url-fetch)
10569 (uri (pypi-uri "translitcodec" version))
10570 (sha256
10571 (base32
10572 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
10573 (build-system python-build-system)
10574 (arguments
10575 `(#:tests? #f)) ; no tests provided
10576 (home-page
10577 "https://github.com/claudep/translitcodec")
10578 (synopsis
10579 "Unicode to 8-bit charset transliteration codec")
10580 (description
10581 "This package contains codecs for transliterating ISO 10646 texts into
10582best-effort representations using smaller coded character sets (ASCII,
10583ISO 8859, etc.).")
f210e944 10584 (license license:expat)))
97e32948
CAW
10585
10586(define-public python2-translitcodec
f210e944 10587 (package-with-python2 python-translitcodec))
0c3b90d4
CAW
10588
10589(define-public python-editor
10590 (package
10591 (name "python-editor")
10592 (version "0.5")
10593 (source
10594 (origin
10595 (method url-fetch)
10596 (uri (pypi-uri "python-editor" version))
10597 (sha256
10598 (base32
10599 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
10600 (build-system python-build-system)
10601 (home-page
10602 "https://github.com/fmoo/python-editor")
10603 (synopsis
10604 "Programmatically open an editor, capture the result")
10605 (description
10606 "python-editor is a library that provides the editor module for
10607programmatically interfacing with your system's $EDITOR.")
f210e944 10608 (license license:asl2.0)))
0c3b90d4
CAW
10609
10610(define-public python2-editor
f210e944 10611 (package-with-python2 python-editor))
3276517c
LF
10612
10613(define-public python-sphinxcontrib-programoutput
10614 (package
10615 (name "python-sphinxcontrib-programoutput")
b9ce9eca 10616 (version "0.10")
3276517c
LF
10617 (source (origin
10618 (method url-fetch)
10619 (uri (pypi-uri "sphinxcontrib-programoutput" version))
10620 (sha256
10621 (base32
b9ce9eca 10622 "153hhnlbx4688zj9wd64819ps5znc2jlyp5crkgzvn5hxgy99vpx"))))
3276517c 10623 (build-system python-build-system)
e2cb140e
MB
10624 (arguments
10625 ;; FIXME: Many tests are failing and the upstream is gone.
10626 '(#:tests? #f))
3276517c 10627 (propagated-inputs
a0a09859 10628 `(("python-sphinx" ,python-sphinx)))
3276517c
LF
10629 (synopsis "Sphinx extension to include program output")
10630 (description "A Sphinx extension to literally insert the output of arbitrary
10631commands into documents, helping you to keep your command examples up to date.")
10632 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
f210e944 10633 (license license:bsd-2)))
3276517c
LF
10634
10635(define-public python2-sphinxcontrib-programoutput
f210e944 10636 (package-with-python2 python-sphinxcontrib-programoutput))
548d7165
LF
10637
10638(define-public python-sphinx-repoze-autointerface
10639 (package
10640 (name "python-sphinx-repoze-autointerface")
328ae341 10641 (version "0.8")
548d7165
LF
10642 (source (origin
10643 (method url-fetch)
10644 (uri (pypi-uri "repoze.sphinx.autointerface" version))
10645 (sha256
10646 (base32
328ae341 10647 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165 10648 (build-system python-build-system)
5b3c3d4b 10649 (arguments '(#:tests? #f)) ; No tests.
548d7165 10650 (propagated-inputs
47c7dc4a 10651 `(("python-sphinx" ,python-sphinx)
548d7165
LF
10652 ("python-zope-interface" ,python-zope-interface)))
10653 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
10654 (description "This package defines an extension for the Sphinx documentation
10655system. The extension allows generation of API documentation by
10656introspection of @code{zope.interface} instances in code.")
10657 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 10658 (license license:repoze)))
548d7165
LF
10659
10660(define-public python2-sphinx-repoze-autointerface
10661 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
10662
10663(define-public python-psycopg2
10664 (package
10665 (name "python-psycopg2")
8e718963 10666 (version "2.6.2")
b31fbea5
DM
10667 (source
10668 (origin
10669 (method url-fetch)
10670 (uri (pypi-uri "psycopg2" version))
10671 (sha256
10672 (base32
8e718963 10673 "0p60z2gwfcal30y2w8gprflchp1kcg9qblc5rn782p4wxl90wjbh"))))
b31fbea5
DM
10674 (build-system python-build-system)
10675 (arguments
10676 ;; Tests would require a postgresql database "psycopg2_test"
10677 ;; and a running postgresql database management service.
10678 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
10679 (inputs
10680 `(("postgresql" ,postgresql))) ; libpq
10681 (home-page "http://initd.org/psycopg/")
10682 (synopsis "Python PostgreSQL adapter")
10683 (description
10684 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
f210e944 10685 (license license:lgpl3+)))
b31fbea5
DM
10686
10687(define-public python2-psycopg2
f210e944 10688 (package-with-python2 python-psycopg2))
eed1a61f
LF
10689
10690(define-public python-vobject
10691 (package
10692 (name "python-vobject")
e00a5909 10693 (version "0.9.5")
eed1a61f
LF
10694 (source (origin
10695 (method url-fetch)
10696 (uri (pypi-uri "vobject" version))
10697 (sha256
10698 (base32
e00a5909 10699 "0hqjgf3ay1m5w1c0k00g5yfpdz1zni5qnr5rh9b8fg9hjvhwlmhg"))))
eed1a61f 10700 (build-system python-build-system)
a9871b7b
LF
10701 (arguments
10702 '(;; The test suite relies on some non-portable Windows interfaces.
10703 #:tests? #f))
f22efa01 10704 (propagated-inputs
22d7360b 10705 `(("python-dateutil" ,python-dateutil)
eed1a61f
LF
10706 ("python-pyicu" ,python-pyicu)))
10707 (synopsis "Parse and generate vCard and vCalendar files")
10708 (description "Vobject is intended to be a full featured Python package for
10709parsing and generating vCard and vCalendar files. Currently, iCalendar files
10710are supported and well tested. vCard 3.0 files are supported, and all data
10711should be imported, but only a few components are understood in a sophisticated
10712way.")
10713 (home-page "http://eventable.github.io/vobject/")
f210e944 10714 (license license:asl2.0)))
eed1a61f
LF
10715
10716(define-public python2-vobject
f210e944 10717 (package-with-python2 python-vobject))
cedac813
LF
10718
10719(define-public python-munkres
10720 (package
10721 (name "python-munkres")
38e81a2c 10722 (version "1.0.8")
cedac813
LF
10723 (source (origin
10724 (method url-fetch)
10725 (uri (pypi-uri "munkres" version))
10726 (sha256
10727 (base32
38e81a2c 10728 "0mbspx4zv8id4x6pim6ybsa1xh96qwpbqj7skbqz4c9c9nf1lpqq"))))
cedac813
LF
10729 (build-system python-build-system)
10730 (arguments
10731 '(#:tests? #f)) ; no test suite
10732 (home-page "http://software.clapper.org/munkres/")
10733 (synopsis "Implementation of the Munkres algorithm")
10734 (description "The Munkres module provides an implementation of the Munkres
10735algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
10736useful for solving the Assignment Problem.")
3f641af0 10737 (license license:bsd-3)))
cedac813
LF
10738
10739(define-public python2-munkres
10740 (package-with-python2 python-munkres))
f3b3d78f
LF
10741
10742(define-public python-flask
10743 (package
10744 (name "python-flask")
c6c80104 10745 (version "0.11.1")
f3b3d78f
LF
10746 (source (origin
10747 (method url-fetch)
10748 (uri (pypi-uri "Flask" version))
10749 (sha256
10750 (base32
c6c80104 10751 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
f3b3d78f
LF
10752 (build-system python-build-system)
10753 (propagated-inputs
10754 `(("python-itsdangerous" ,python-itsdangerous)
10755 ("python-jinja2" ,python-jinja2)
8f35c030 10756 ("python-click" ,python-click)
f3b3d78f
LF
10757 ("python-werkzeug" ,python-werkzeug)))
10758 (home-page "https://github.com/mitsuhiko/flask/")
10759 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
10760 (description "Flask is a micro web framework based on the Werkzeug toolkit
10761and Jinja2 template engine. It is called a micro framework because it does not
10762presume or force a developer to use a particular tool or library.")
f210e944 10763 (license license:bsd-3)))
f3b3d78f
LF
10764
10765(define-public python2-flask
f210e944 10766 (package-with-python2 python-flask))
603d665b 10767
a7ad802b 10768(define-public python-flask-wtf
10769 (package
10770 (name "python-flask-wtf")
10771 (version "0.13.1")
10772 (source
10773 (origin
10774 (method url-fetch)
10775 (uri (pypi-uri "Flask-WTF" version))
10776 (sha256
10777 (base32
10778 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
10779 (build-system python-build-system)
d296d300
MB
10780 (arguments
10781 '(#:phases
10782 (modify-phases %standard-phases
10783 (add-before 'check 'drop-failing-test
10784 (lambda _
10785 ;; FIXME: This file tries resolving an external server, which
10786 ;; fails. Try to patch out the offending section instead of
10787 ;; deleting the whole thing.
10788 (delete-file "tests/test_recaptcha.py")
10789 #t)))))
a7ad802b 10790 (propagated-inputs
10791 `(("python-flask-babel" ,python-flask-babel)
10792 ("python-babel" ,python-babel)
10793 ("python-wtforms" ,python-wtforms)))
10794 (native-inputs
10795 `(("python-nose" ,python-nose)))
10796 (home-page "https://github.com/lepture/flask-wtf")
10797 (synopsis "Simple integration of Flask and WTForms")
10798 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
10799upload, and reCAPTCHA.")
10800 (license license:bsd-3)))
10801
10802(define-public python2-flask-wtf
10803 (package-with-python2 python-flask-wtf))
10804
a2c7d88e 10805(define-public python-flask-multistatic
10806 (package
10807 (name "python-flask-multistatic")
10808 (version "1.0")
10809 (source
10810 (origin
10811 (method url-fetch)
10812 (uri (pypi-uri "flask-multistatic" version))
10813 (sha256
10814 (base32
10815 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
10816 (build-system python-build-system)
10817 (propagated-inputs
10818 `(("python-flask" ,python-flask)))
10819 (home-page "https://pagure.io/flask-multistatic")
10820 (synopsis "Flask plugin to allow overriding static files")
10821 (description "@code{flask-multistatic} is a flask plugin that adds support
10822for overriding static files.")
10823 (license license:gpl3+)))
10824
10825(define-public python2-flask-multistatic
10826 (package-with-python2 python-flask-multistatic))
10827
603d665b
LF
10828(define-public python-cookies
10829 (package
10830 (name "python-cookies")
10831 (version "2.2.1")
10832 (source (origin
10833 (method url-fetch)
10834 (uri (pypi-uri "cookies" version))
10835 (sha256
10836 (base32
10837 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
10838 (build-system python-build-system)
10839 (arguments
10840 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
10841 #:tests? #f))
10842 (native-inputs
10843 `(("python-pytest" ,python2-pytest)))
10844 (synopsis "HTTP cookie parser and renderer")
10845 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
10846Python.")
10847 (home-page "https://gitlab.com/sashahart/cookies")
f210e944 10848 (license license:expat)))
603d665b
LF
10849
10850(define-public python2-cookies
f210e944 10851 (package-with-python2 python-cookies))
0efde7d6
LF
10852
10853(define-public python-responses
10854 (package
10855 (name "python-responses")
10856 (version "0.5.1")
10857 (source (origin
10858 (method url-fetch)
10859 (uri (pypi-uri "responses" version))
10860 (sha256
10861 (base32
10862 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
10863 (build-system python-build-system)
10864 (arguments
10865 `(;; Test suite is not distributed:
10866 ;; https://github.com/getsentry/responses/issues/38
10867 #:tests? #f))
10868 (native-inputs
d8ea5f2f 10869 `(("python-mock" ,python-mock)))
0efde7d6
LF
10870 (propagated-inputs
10871 `(("python-requests" ,python-requests)
d8ea5f2f 10872 ("python-cookies" ,python-cookies)
0efde7d6
LF
10873 ("python-six" ,python-six)))
10874 (home-page "https://github.com/getsentry/responses")
10875 (synopsis "Utility for mocking out the `requests` Python library")
10876 (description "A utility library for mocking out the `requests` Python
10877library.")
f210e944 10878 (license license:asl2.0)))
0efde7d6
LF
10879
10880(define-public python2-responses
f210e944 10881 (package-with-python2 python-responses))
76b94885 10882
b7afd018
RW
10883(define-public python-whoosh
10884 (package
10885 (name "python-whoosh")
10886 (version "2.7.4")
10887 (source
10888 (origin
10889 (method url-fetch)
10890 (uri (pypi-uri "Whoosh" version))
10891 (sha256
10892 (base32
10893 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
10894 (build-system python-build-system)
10895 (native-inputs
f3b98f4f 10896 `(("python-pytest" ,python-pytest)))
b7afd018
RW
10897 (home-page "http://bitbucket.org/mchaput/whoosh")
10898 (synopsis "Full text indexing, search, and spell checking library")
10899 (description
10900 "Whoosh is a fast, pure-Python full text indexing, search, and spell
10901checking library.")
10902 (license license:bsd-2)))
10903
10904(define-public python2-whoosh
10905 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
10906 (package (inherit whoosh)
10907 (propagated-inputs
10908 `(("python2-backport-ssl-match-hostname"
10909 ,python2-backport-ssl-match-hostname)
10910 ,@(package-propagated-inputs whoosh))))))
10911
76b94885
LF
10912(define-public python-pathlib
10913 (package
10914 (name "python-pathlib")
10915 (version "1.0.1")
10916 (source (origin
10917 (method url-fetch)
10918 (uri (pypi-uri "pathlib" version))
10919 (sha256
10920 (base32
10921 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
10922 (build-system python-build-system)
92a312dc
RW
10923 ;; The tests depend on the internal "test" module, which does not provide
10924 ;; a stable interface.
10925 (arguments `(#:tests? #f))
76b94885 10926 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
10927 (synopsis "Object-oriented file system paths")
10928 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
10929It offers the following advantages over using string objects:
10930
10931@enumerate
10932@item No more cumbersome use of os and os.path functions. Everything can
10933be done easily through operators, attribute accesses, and method calls.
10934@item Embodies the semantics of different path types. For example,
10935comparing Windows paths ignores casing.
10936@item Well-defined semantics, eliminating any inconsistencies or
10937ambiguities (forward vs. backward slashes, etc.).
7a8894e8
HG
10938@end enumerate
10939
10940Note: In Python 3.4, pathlib is now part of the standard library. For other
10941Python versions please consider python-pathlib2 instead, which tracks the
10942standard library module. This module (python-pathlib) isn't maintained
10943anymore.")
76b94885
LF
10944 (license license:expat)))
10945
10946(define-public python2-pathlib
10947 (package-with-python2 python-pathlib))
25a7db0a 10948
b7703c81
HG
10949(define-public python2-pathlib2
10950 (package
10951 (name "python2-pathlib2")
10952 (version "2.1.0")
10953 (source (origin
10954 (method url-fetch)
10955 (uri (pypi-uri "pathlib2" version))
10956 (sha256
10957 (base32
10958 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
10959 (build-system python-build-system)
49a531f5
HG
10960 ;; We only need the the Python 2 variant, since for Python 3 our minimum
10961 ;; version is 3.4 which already includes this package as part of the
10962 ;; standard library.
b7703c81
HG
10963 (arguments
10964 `(#:python ,python-2))
10965 (native-inputs
f3b98f4f 10966 `(("python2-six" ,python2-six)))
b7703c81
HG
10967 (home-page "http://pypi.python.org/pypi/pathlib2/")
10968 (synopsis "Object-oriented file system paths - backport of standard
10969pathlib module")
10970 (description "The goal of pathlib2 is to provide a backport of standard
10971pathlib module which tracks the standard library module, so all the newest
10972features of the standard pathlib can be used also on older Python versions.
10973
10974Pathlib offers a set of classes to handle file system paths. It offers the
10975following advantages over using string objects:
10976
10977@enumerate
10978@item No more cumbersome use of os and os.path functions. Everything can
10979be done easily through operators, attribute accesses, and method calls.
10980@item Embodies the semantics of different path types. For example,
10981comparing Windows paths ignores casing.
10982@item Well-defined semantics, eliminating any inconsistencies or
10983ambiguities (forward vs. backward slashes, etc.).
10984@end enumerate")
10985 (license license:expat)))
10986
25a7db0a
LF
10987(define-public python-jellyfish
10988 (package
10989 (name "python-jellyfish")
8c4964dd 10990 (version "0.5.6")
25a7db0a
LF
10991 (source (origin
10992 (method url-fetch)
10993 (uri (pypi-uri "jellyfish" version))
10994 (sha256
10995 (base32
8c4964dd 10996 "1j9rplb16ba2prjj6mip46z0w9pnhnqpwgiwi0x93vnas14rlyl8"))))
25a7db0a
LF
10997 (build-system python-build-system)
10998 (native-inputs
10999 `(("python-pytest" ,python-pytest)))
11000 (home-page "https://github.com/jamesturk/jellyfish")
11001 (synopsis "Approximate and phonetic matching of strings")
11002 (description "Jellyfish uses a variety of string comparison and phonetic
11003encoding algorithms to do fuzzy string matching.")
3f641af0 11004 (license license:bsd-2)
25a7db0a
LF
11005 (properties `((python2-variant . ,(delay python2-jellyfish))))))
11006
11007(define-public python2-jellyfish
11008 (let ((jellyfish (package-with-python2
11009 (strip-python2-variant python-jellyfish))))
11010 (package (inherit jellyfish)
00e10c6e 11011 (native-inputs `(("python2-unicodecsv" ,python2-unicodecsv)
25a7db0a 11012 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
11013
11014(define-public python2-unicodecsv
11015 (package
11016 (name "python2-unicodecsv")
11017 (version "0.14.1")
11018 (source (origin
11019 (method url-fetch)
11020 ;; The test suite is not included in the PyPi release.
11021 ;; https://github.com/jdunck/python-unicodecsv/issues/19
11022 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
11023 "archive/" version ".tar.gz"))
11024 (file-name (string-append name "-" version ".tar.gz"))
11025 (sha256
11026 (base32
11027 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
11028 (build-system python-build-system)
11029 (arguments
11030 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
11031 #:python ,python-2))
11032 (native-inputs
f3b98f4f 11033 `(("python2-unittest2" ,python2-unittest2)))
13edb0e5
LF
11034 (home-page "https://github.com/jdunck/python-unicodecsv")
11035 (synopsis "Unicode CSV module for Python 2")
11036 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
11037module, adding support for Unicode strings.")
3f641af0 11038 (license license:bsd-2)))
064503aa
LF
11039
11040(define-public python-rarfile
11041 (package
11042 (name "python-rarfile")
67824447 11043 (version "2.8")
064503aa
LF
11044 (source (origin
11045 (method url-fetch)
11046 (uri (pypi-uri "rarfile" version))
11047 (sha256
11048 (base32
67824447 11049 "0qfad483kcbga0bn4qmcz953xjk16r52fahiy46zzn56v80y89ra"))))
064503aa
LF
11050 (build-system python-build-system)
11051 (arguments
11052 '(#:phases
11053 (modify-phases %standard-phases
11054 (replace 'check
11055 ;; Many tests fail, but the installation proceeds.
11056 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
11057 (native-inputs
11058 `(("which" ,which))) ; required for tests
11059 (propagated-inputs
11060 `(("libarchive" ,libarchive)))
11061 (home-page "https://github.com/markokr/rarfile")
11062 (synopsis "RAR archive reader for Python")
11063 (description "This is Python module for RAR archive reading. The interface
11064is made as zipfile like as possible.")
3f641af0 11065 (license license:isc)))
064503aa
LF
11066
11067(define-public python2-rarfile
11068 (package-with-python2 python-rarfile))
daeeea71
CM
11069
11070(define-public python-magic
11071 (package
11072 (name "python-magic")
11073 (version "0.4.3")
11074 (source
11075 (origin
11076 (method url-fetch)
11077 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
11078 version ".tar.gz"))
11079 (sha256
11080 (base32
11081 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
11082 (file-name (string-append name "-" version "-checkout"))))
11083 (build-system python-build-system)
11084 (arguments
11085 ;; The tests are unreliable, so don't run them. The tests fail
11086 ;; under Python3 because they were written for Python2 and
11087 ;; contain import statements that do not work in Python3. One of
11088 ;; the tests fails under Python2 because its assertions are
11089 ;; overly stringent; it relies on comparing output strings which
11090 ;; are brittle and can change depending on the version of
11091 ;; libmagic being used and the system on which the test is
11092 ;; running. In my case, under GuixSD 0.10.0, only one test
11093 ;; failed, and it seems to have failed only because the version
11094 ;; of libmagic that is packaged in Guix outputs a slightly
11095 ;; different (but not wrong) string than the one that the test
11096 ;; expected.
11097 '(#:tests? #f
11098 #:phases (modify-phases %standard-phases
11099 ;; Replace a specific method call with a hard-coded
11100 ;; path to the necessary libmagic.so file in the
11101 ;; store. If we don't do this, then the method call
11102 ;; will fail to find the libmagic.so file, which in
11103 ;; turn will cause any application using
11104 ;; python-magic to fail.
11105 (add-before 'build 'hard-code-path-to-libmagic
11106 (lambda* (#:key inputs #:allow-other-keys)
11107 (let ((file (assoc-ref inputs "file")))
11108 (substitute* "magic.py"
11109 (("ctypes.util.find_library\\('magic'\\)")
11110 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
11111 #t)))
11112 (add-before 'install 'disable-egg-compression
11113 (lambda _
11114 (let ((port (open-file "setup.cfg" "a")))
11115 (display "\n[easy_install]\nzip_ok = 0\n"
11116 port)
11117 (close-port port)
11118 #t))))))
daeeea71
CM
11119 (inputs
11120 ;; python-magic needs to be able to find libmagic.so.
11121 `(("file" ,file)))
11122 (home-page "https://github.com/ahupp/python-magic")
11123 (synopsis "File type identification using libmagic")
11124 (description
11125 "This module uses ctypes to access the libmagic file type
11126identification library. It makes use of the local magic database and
11127supports both textual and MIME-type output. Note that this module and
11128the python-file module both provide a \"magic.py\" file; these two
11129modules, which are different and were developed separately, both serve
11130the same purpose: to provide Python bindings for libmagic.")
11131 (license license:expat)))
11132
11133(define-public python2-magic
11134 (package-with-python2 python-magic))
12af303f
CM
11135
11136(define-public python2-s3cmd
11137 (package
11138 (name "python2-s3cmd")
11139 (version "1.6.1")
11140 (source
11141 (origin
11142 (method url-fetch)
de67e922 11143 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
11144 "s3cmd-" version ".tar.gz"))
11145 (sha256
11146 (base32
11147 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
11148 (build-system python-build-system)
11149 (arguments
11150 ;; s3cmd is written for python2 only and contains no tests.
11151 `(#:python ,python-2
11152 #:tests? #f))
f22efa01 11153 (propagated-inputs
12af303f
CM
11154 `(("python2-dateutil" ,python2-dateutil)
11155 ;; The python-file package also provides a magic.py module.
11156 ;; This is an unfortunate state of affairs; however, s3cmd
11157 ;; fails to install if it cannot find specifically the
11158 ;; python-magic package. Thus we include it, instead of using
11159 ;; python-file. Ironically, s3cmd sometimes works better
11160 ;; without libmagic bindings at all:
11161 ;; https://github.com/s3tools/s3cmd/issues/198
11162 ("python2-magic" ,python2-magic)))
11163 (home-page "http://s3tools.org/s3cmd")
11164 (synopsis "Command line tool for S3-compatible storage services")
11165 (description
11166 "S3cmd is a command line tool for uploading, retrieving and managing data
11167in storage services that are compatible with the Amazon Simple Storage
11168Service (S3) protocol, including S3 itself. It supports rsync-like backup,
11169GnuPG encryption, and more. It also supports management of Amazon's
11170CloudFront content delivery network.")
3f641af0 11171 (license license:gpl2+)))
4323a5f0
AE
11172
11173(define-public python-pkgconfig
11174 (package
11175 (name "python-pkgconfig")
11176 (version "1.1.0")
11177 (source
11178 (origin
11179 (method url-fetch)
11180 (uri (pypi-uri "pkgconfig" version))
11181 (sha256
11182 (base32
11183 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
11184 (build-system python-build-system)
11185 (native-inputs
f3b98f4f 11186 `(("python-nose" ,python-nose)))
4323a5f0
AE
11187 (inputs
11188 `(("pkg-config" ,pkg-config)))
11189 (arguments
11190 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
11191 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
11192 #:tests? #f
4323a5f0
AE
11193 ;; Hard-code the path to pkg-config.
11194 #:phases
11195 (modify-phases %standard-phases
11196 (add-before
11197 'build 'patch
11198 (lambda _
11199 (substitute* "pkgconfig/pkgconfig.py"
11200 (("cmd = 'pkg-config")
11201 (string-append "cmd = '" (which "pkg-config"))))
11202 #t)))))
7bf837fd 11203 (home-page "https://github.com/matze/pkgconfig")
4323a5f0
AE
11204 (synopsis "Python interface for pkg-config")
11205 (description "This module provides a Python interface to pkg-config. It
11206can be used to find all pkg-config packages, check if a package exists,
11207check if a package meets certain version requirements, query CFLAGS and
11208LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 11209 (license license:expat)))
4323a5f0
AE
11210
11211(define-public python2-pkgconfig
11212 (package-with-python2 python-pkgconfig))
11213
2e697322
BW
11214(define-public python-bz2file
11215 (package
11216 (name "python-bz2file")
11217 (version "0.98")
11218 (source
11219 (origin
11220 (method url-fetch)
11221 (uri (pypi-uri "bz2file" version))
11222 (sha256
11223 (base32
11224 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
11225 (build-system python-build-system)
11226 (arguments
124df723 11227 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
11228 (home-page "https://github.com/nvawda/bz2file")
11229 (synopsis "Read and write bzip2-compressed files")
11230 (description
11231 "Bz2file is a Python library for reading and writing bzip2-compressed
11232files. It contains a drop-in replacement for the I/O interface in the
11233standard library's @code{bz2} module, including features from the latest
11234development version of CPython that are not available in older releases.")
3f641af0 11235 (license license:asl2.0)
2e697322
BW
11236 (properties `((python2-variant . ,(delay python2-bz2file))))))
11237
11238(define-public python2-bz2file
11239 (let ((base (package-with-python2
11240 (strip-python2-variant python-bz2file))))
11241 (package
11242 (inherit base)
124df723 11243 (arguments
752bb447
BW
11244 `(#:python ,python-2
11245 #:phases
124df723
BW
11246 (modify-phases %standard-phases
11247 ;; 'python setup.py test' does not work as of 0.98.
11248 ;; There is only the one test file, so we run it directly.
11249 (replace 'check
11250 (lambda _ (zero? (system* "python"
11251 "test_bz2file.py"))))))))))
2e697322 11252
da4ac1aa
BW
11253(define-public python-future
11254 (package
11255 (name "python-future")
c522f57e 11256 (version "0.16.0")
da4ac1aa
BW
11257 (source
11258 (origin
11259 (method url-fetch)
11260 (uri (pypi-uri "future" version))
11261 (sha256
11262 (base32
c522f57e 11263 "1nzy1k4m9966sikp0qka7lirh8sqrsyainyf8rk97db7nwdfv773"))))
da4ac1aa
BW
11264 (build-system python-build-system)
11265 ;; Many tests connect to the network or are otherwise flawed.
11266 ;; https://github.com/PythonCharmers/python-future/issues/210
11267 (arguments
11268 `(#:tests? #f))
11269 (home-page "http://python-future.org")
11270 (synopsis "Single-source support for Python 3 and 2")
11271 (description
11272 "@code{python-future} is the missing compatibility layer between Python 2 and
11273Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
11274to support both Python 2 and Python 3 with minimal overhead.")
f210e944 11275 (license license:expat)))
da4ac1aa
BW
11276
11277(define-public python2-future
f210e944 11278 (package-with-python2 python-future))
da4ac1aa 11279
8e451885
AE
11280(define-public python-cysignals
11281 (package
11282 (name "python-cysignals")
11283 (version "1.1.0")
11284 (source
11285 (origin
11286 (method url-fetch)
11287 (uri (pypi-uri "cysignals" version ".tar.bz2"))
11288 (sha256
11289 (base32
11290 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
11291 (build-system python-build-system)
11292 (native-inputs
11293 `(("python-cython" ,python-cython)
8e451885
AE
11294 ("python-sphinx" ,python-sphinx)))
11295 (inputs
11296 `(("pari-gp" ,pari-gp)))
11297 (arguments
11298 `(#:modules ((guix build python-build-system)
11299 ((guix build gnu-build-system) #:prefix gnu:)
11300 (guix build utils))
11301 ;; FIXME: Tests are executed after installation and currently fail
11302 ;; when not installing into standard locations; the author is working
11303 ;; on a fix.
11304 #:tests? #f
11305 #:phases
11306 (modify-phases %standard-phases
11307 (add-before
11308 'build 'configure
11309 (assoc-ref gnu:%standard-phases 'configure)))))
11310 (home-page
11311 "https://github.com/sagemath/cysignals")
11312 (synopsis
11313 "Handling of interrupts and signals for Cython")
11314 (description
11315 "The cysignals package provides mechanisms to handle interrupts (and
11316other signals and errors) in Cython code, using two related approaches,
11317for mixed Cython/Python code or external C libraries and pure Cython code,
11318respectively.")
3f641af0 11319 (license license:lgpl3+)))
8e451885
AE
11320
11321(define-public python2-cysignals
11322 (package-with-python2 python-cysignals))
11323
63bcec71
DM
11324(define-public python2-shedskin
11325 (package
11326 (name "python2-shedskin")
11327 (version "0.9.4")
11328 (source
11329 (origin
11330 (method url-fetch)
11331 (uri (string-append "https://github.com/shedskin/shedskin/"
11332 "releases/download/v" version
11333 "/shedskin-" version ".tgz"))
11334 (sha256
11335 (base32
11336 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
11337 (build-system python-build-system)
11338 (arguments
11339 `(#:python ,python-2
11340 #:phases (modify-phases %standard-phases
11341 (add-after 'unpack 'fix-resulting-include-libs
11342 (lambda* (#:key inputs #:allow-other-keys)
11343 (let ((libgc (assoc-ref inputs "libgc"))
11344 (pcre (assoc-ref inputs "pcre")))
11345 (substitute* "shedskin/makefile.py"
11346 (("variable == 'CCFLAGS':[ ]*")
11347 (string-append "variable == 'CCFLAGS':\n"
11348 " line += ' -I " pcre "/include"
11349 " -I " libgc "/include'"))
11350 (("variable == 'LFLAGS':[ ]*")
11351 (string-append "variable == 'LFLAGS':\n"
11352 " line += ' -L" pcre "/lib"
11353 " -L " libgc "/lib'")))
11354 #t))))))
63bcec71
DM
11355 (inputs `(("pcre" ,pcre)
11356 ("libgc" ,libgc)))
11357 (home-page "https://shedskin.github.io/")
11358 (synopsis "Experimental Python-2 to C++ Compiler")
11359 (description (string-append "This is an experimental compiler for a subset of
11360Python. It generates C++ code and a Makefile."))
3f641af0 11361 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
11362
11363(define-public python2-rope
11364 (package
11365 (name "python2-rope")
11366 (version "0.10.3")
11367 (source
11368 (origin
11369 (method url-fetch)
11370 (uri (pypi-uri "rope" version))
11371 (sha256
11372 (base32
11373 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
11374 (arguments
11375 ;; Rope is currently python-2 only.
11376 ;; https://github.com/python-rope/rope/issues/57
11377 `(#:python ,python-2))
11378 (build-system python-build-system)
11379 (native-inputs
f3b98f4f 11380 `(("python2-unittest2" ,python2-unittest2)))
88bb4197
LG
11381 (home-page "https://github.com/python-rope/rope")
11382 (synopsis "Refactoring library for Python")
11383 (description "Rope is a refactoring library for Python. It facilitates
11384the renaming, moving and extracting of attributes, functions, modules, fields
11385and parameters in Python 2 source code. These refactorings can also be applied
d1e4ad1b 11386to occurrences in strings and comments.")
3f641af0 11387 (license license:gpl2)))
6ba8ca17
11388
11389(define-public python-py3status
11390 (package
11391 (name "python-py3status")
d2262d70 11392 (version "3.1")
6ba8ca17
11393 (source
11394 (origin
11395 (method url-fetch)
11396 (uri (pypi-uri "py3status" version))
11397 (sha256
11398 (base32
d2262d70 11399 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17 11400 (build-system python-build-system)
8653c1d5
MB
11401 (arguments
11402 '(#:tests? #f)) ; TODO: Requires many libraries not in Guix.
6ba8ca17
11403 (home-page "https://github.com/ultrabug/py3status")
11404 (synopsis "Extensible i3status wrapper written in Python")
11405 (description "py3status is an i3status wrapper which extends i3status
11406functionality in a modular way, allowing you to extend your panel with your
11407own code, responding to click events and updating clock every second.")
3f641af0 11408 (license license:bsd-3)))
b8fdbca3
HG
11409
11410(define-public python-tblib
11411 (package
11412 (name "python-tblib")
11413 (version "1.3.0")
11414 (source (origin
11415 (method url-fetch)
11416 (uri (pypi-uri "tblib" version))
11417 (sha256 (base32
11418 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
11419 (build-system python-build-system)
11420 (arguments
11421 `(#:phases
11422 (modify-phases %standard-phases
11423 (replace 'check
11424 (lambda _
11425 ;; Upstream runs tests after installation and the package itself
11426 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
11427 ;; found.
11428 (setenv "PYTHONPATH"
11429 (string-append (getcwd) "/build/lib:"
11430 (getenv "PYTHONPATH")))
11431 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
11432 (native-inputs
11433 `(("python-pytest" ,python-pytest)
b8fdbca3
HG
11434 ("python-six" ,python-six)))
11435 (home-page "https://github.com/ionelmc/python-tblib")
11436 (synopsis "Traceback serialization library")
11437 (description
11438 "Traceback serialization allows you to:
11439
11440@enumerate
11441@item Pickle tracebacks and raise exceptions with pickled tracebacks in
11442different processes. This allows better error handling when running code over
11443multiple processes (imagine multiprocessing, billiard, futures, celery etc).
11444
11445@item Parse traceback strings and raise with the parsed tracebacks.
9657aeb1 11446@end enumerate\n")
3f641af0 11447 (license license:bsd-3)))
b8fdbca3
HG
11448
11449(define-public python2-tblib
11450 (package-with-python2 python-tblib))
1a024de4
HG
11451
11452(define-public python-sqlparse
11453 (package
11454 (name "python-sqlparse")
11455 (version "0.1.19")
11456 (source (origin
11457 (method url-fetch)
11458 (uri (pypi-uri "sqlparse" version))
11459 (sha256
11460 (base32
11461 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
11462 (build-system python-build-system)
11463 (arguments
11464 `(#:phases
11465 (modify-phases %standard-phases
11466 (replace 'check
11467 (lambda* _
11468 ;; setup.py-integrated 2to3 only affects the build files, but
11469 ;; py.test is using the source files. So we need to convert them
11470 ;; manually.
11471 (when (zero? (system* "python3"))
11472 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
11473 (zero? (system* "py.test")))))))
11474 (native-inputs
f3b98f4f 11475 `(("python-pytest" ,python-pytest)))
1a024de4
HG
11476 (home-page "https://github.com/andialbrecht/sqlparse")
11477 (synopsis "Non-validating SQL parser")
11478 (description "Sqlparse is a non-validating SQL parser for Python. It
11479provides support for parsing, splitting and formatting SQL statements.")
3f641af0 11480 (license license:bsd-3)))
1a024de4
HG
11481
11482(define-public python2-sqlparse
11483 (package-with-python2 python-sqlparse))
68b9d242
SB
11484
11485(define-public python-greenlet
11486 (package
11487 (name "python-greenlet")
1f89fb16 11488 (version "0.4.11")
68b9d242
SB
11489 (source (origin
11490 (method url-fetch)
11491 (uri (pypi-uri "greenlet" version))
11492 (sha256
11493 (base32
1f89fb16 11494 "1xhik26j4f3kc4qw9xmj0c567rb5h1zryb4ijwqnqwwjvfhbv59h"))))
68b9d242 11495 (build-system python-build-system)
68b9d242
SB
11496 (home-page "https://greenlet.readthedocs.io/")
11497 (synopsis "Lightweight in-process concurrent programming")
11498 (description
11499 "Greenlet package is a spin-off of Stackless, a version of CPython
11500that supports micro-threads called \"tasklets\". Tasklets run
11501pseudo-concurrently (typically in a single or a few OS-level threads) and
11502are synchronized with data exchanges on \"channels\".")
3f641af0 11503 (license (list license:psfl license:expat))))
68b9d242
SB
11504
11505(define-public python2-greenlet
11506 (package-with-python2 python-greenlet))
d79a343b
SB
11507
11508(define-public python-gevent
11509 (package
11510 (name "python-gevent")
11511 (version "1.1.1")
11512 (source (origin
11513 (method url-fetch)
11514 (uri (pypi-uri "gevent" version))
11515 (sha256
11516 (base32
11517 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
11518 (modules '((guix build utils)))
11519 (snippet
11520 '(begin
11521 ;; unbunding libev and c-ares
11522 (for-each delete-file-recursively '("libev" "c-ares"))
11523 ;; fixing testsuite
11524 (call-with-output-file "greentest/__init__.py" noop)
11525 (substitute* "greentest/testrunner.py"
11526 (("import util") "from . import util")
11527 (("from util import log") "from .util import log"))))))
11528 (build-system python-build-system)
11529 (propagated-inputs
11530 `(("python-greenlet" ,python-greenlet)))
11531 (native-inputs
f3b98f4f 11532 `(("python-six" ,python-six)))
d79a343b
SB
11533 (inputs
11534 `(("c-ares" ,c-ares)
11535 ("libev" ,libev)))
11536 (home-page "http://www.gevent.org/")
11537 (synopsis "Coroutine-based network library")
11538 (description
11539 "gevent is a coroutine-based Python networking library that uses greenlet
11540to provide a high-level synchronous API on top of the libev event loop.")
11541 (license license:expat)))
11542
11543(define-public python2-gevent
11544 (package-with-python2 python-gevent))
da3aeeb6 11545
c9a18125
MB
11546(define-public python-geventhttpclient
11547 (package
11548 (name "python-geventhttpclient")
11549 (version "1.3.1")
11550 (source (origin
11551 (method url-fetch)
11552 (uri (pypi-uri "geventhttpclient" version))
11553 (sha256
11554 (base32
11555 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
11556 (modules '((guix build utils)))
11557 (snippet
11558 '(begin
11559 ;; Delete pre-compiled files.
11560 (for-each delete-file (find-files "src/geventhttpclient"
11561 ".*\\.pyc"))
11562 #t))))
11563 (build-system python-build-system)
11564 (arguments
11565 '(#:phases
11566 (modify-phases %standard-phases
11567 (add-after 'unpack 'delete-network-tests
11568 (lambda _
11569 (delete-file "src/geventhttpclient/tests/test_client.py")
11570 #t))
11571 (delete 'check)
11572 (add-after 'install 'check
11573 (lambda* (#:key inputs outputs #:allow-other-keys)
11574 (add-installed-pythonpath inputs outputs)
11575 (zero? (system* "py.test" "src/geventhttpclient/tests" "-v")))))))
11576 (native-inputs
11577 `(("python-pytest" ,python-pytest)))
11578 (propagated-inputs
11579 `(("python-certifi" ,python-certifi)
11580 ("python-gevent" ,python-gevent)
11581 ("python-six" ,python-six)))
11582 (home-page "https://github.com/gwik/geventhttpclient")
11583 (synopsis "HTTP client library for gevent")
11584 (description "@code{python-geventhttpclient} is a high performance,
11585concurrent HTTP client library for python using @code{gevent}.")
11586 (license license:expat)))
11587
11588(define-public python2-geventhttpclient
11589 (package-with-python2 python-geventhttpclient))
11590
b585e361
DM
11591(define-public python-fastimport
11592 (package
11593 (name "python-fastimport")
11594 (version "0.9.6")
11595 (source
11596 (origin
11597 (method url-fetch)
11598 (uri (pypi-uri "fastimport" version))
11599 (sha256
11600 (base32 "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"))))
11601 (build-system python-build-system)
11602 (home-page "https://github.com/jelmer/python-fastimport")
11603 (synopsis "VCS fastimport parser and generator in Python")
11604 (description "This package provides a parser for and generator of the Git
11605@url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport}
11606format.")
11607 (license license:gpl2+)))
11608
11609(define-public python2-fastimport
11610 (package-with-python2 python-fastimport))
11611
da3aeeb6
SB
11612(define-public python-twisted
11613 (package
11614 (name "python-twisted")
11615 (version "16.2.0")
11616 (source (origin
11617 (method url-fetch)
8ea8e8d3 11618 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
11619 (sha256
11620 (base32
11621 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
11622 (build-system python-build-system)
a960e73f
MB
11623 (arguments
11624 '(#:tests? #f)) ; FIXME: Some tests are failing.
11625 ;; #:phases
11626 ;; (modify-phases %standard-phases
11627 ;; (replace 'check
11628 ;; (lambda _
11629 ;; (zero? (system* "./bin/trial" "twisted")))))
45912170
SB
11630 (propagated-inputs
11631 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
11632 (home-page "https://twistedmatrix.com/")
11633 (synopsis "Asynchronous networking framework written in Python")
11634 (description
11635 "Twisted is an extensible framework for Python programming, with special
11636focus on event-based network programming and multiprotocol integration.")
11637 (license license:expat)))
11638
11639(define-public python2-twisted
11640 (package-with-python2 python-twisted))
d0b6fed6 11641
4d3fa5a4
EF
11642(define-public python-pika
11643 (package
11644 (name "python-pika")
11645 (version "0.10.0")
11646 (source
11647 (origin
11648 (method url-fetch)
11649 (uri (pypi-uri "pika" version))
11650 (sha256
11651 (base32
11652 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
11653 (build-system python-build-system)
11654 (native-inputs
269d9172
LF
11655 `(("python-pyev" ,python-pyev)
11656 ("python-tornado" ,python-tornado)
11657 ("python-twisted" ,python-twisted)))
4d3fa5a4
EF
11658 (home-page "https://pika.readthedocs.org")
11659 (synopsis "Pure Python AMQP Client Library")
11660 (description
11661 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
11662Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
11663network support library.")
11664 (license license:bsd-3)))
11665
11666(define-public python2-pika
11667 (package-with-python2 python-pika))
11668
d0b6fed6
DM
11669(define-public python-ply
11670 (package
11671 (name "python-ply")
234ade2d 11672 (version "3.9")
d0b6fed6
DM
11673 (source
11674 (origin
11675 (method url-fetch)
234ade2d 11676 (uri (pypi-uri "ply" version))
d0b6fed6
DM
11677 (sha256
11678 (base32
234ade2d 11679 "0gpl0yli3w03ipyqfrp3w5nf0iawhsq65anf5wwm2wf5p502jzhd"))))
d0b6fed6
DM
11680 (build-system python-build-system)
11681 (home-page "http://www.dabeaz.com/ply/")
11682 (synopsis "Python Lex & Yacc")
11683 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
11684It uses LR parsing and does extensive error checking.")
f210e944 11685 (license license:bsd-3)))
d0b6fed6
DM
11686
11687(define-public python2-ply
f210e944 11688 (package-with-python2 python-ply))
d951bd54
SB
11689
11690(define-public python-tabulate
11691 (package
11692 (name "python-tabulate")
e6ace98d 11693 (version "0.7.7")
d951bd54
SB
11694 (source (origin
11695 (method url-fetch)
11696 (uri (pypi-uri "tabulate" version))
11697 (sha256
11698 (base32
fe2ba3a8 11699 "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
d951bd54 11700 (build-system python-build-system)
fe2ba3a8
MB
11701 (arguments
11702 ;; FIXME: The pypi release tarball is missing a 'test/common.py'
11703 ;; and the latest release is not tagged in the upstream repository.
11704 '(#:tests? #f))
d951bd54
SB
11705 (home-page "https://bitbucket.org/astanin/python-tabulate")
11706 (synopsis "Pretty-print tabular data")
11707 (description
11708 "Tabulate is a library and command-line utility to pretty-print tabular
11709data in Python.")
11710 (license license:expat)))
11711
11712(define-public python2-tabulate
11713 (package-with-python2 python-tabulate))
1c4c8a33
SB
11714
11715(define-public python-kazoo
11716 (package
11717 (name "python-kazoo")
11718 (version "2.2.1")
11719 (source
11720 (origin
11721 (method url-fetch)
11722 (uri (pypi-uri "kazoo" version))
11723 (sha256
11724 (base32
11725 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
11726 (build-system python-build-system)
11727 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
c18899e8
SB
11728 (propagated-inputs
11729 `(("python-six" ,python-six)))
1c4c8a33
SB
11730 (home-page "https://kazoo.readthedocs.org")
11731 (synopsis "High-level Zookeeper client library")
11732 (description
11733 "Kazoo is a Python client library for the Apache Zookeeper distributed
11734application service. It is designed to be easy to use and to avoid common
11735programming errors.")
3f641af0 11736 (license license:asl2.0)))
1c4c8a33
SB
11737
11738(define-public python2-kazoo
11739 (package-with-python2 python-kazoo))
45dda35e
SB
11740
11741(define-public python-pykafka
11742 (package
11743 (name "python-pykafka")
11744 (version "2.4.0")
11745 (source (origin
11746 (method url-fetch)
c6bccf71
EF
11747 (uri (string-append
11748 "https://pypi.python.org/packages/8b/3e/"
11749 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
11750 "pykafka-" version ".tar.gz"))
45dda35e
SB
11751 (sha256
11752 (base32
11753 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
11754 (build-system python-build-system)
11755 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
c8fa3d9b 11756 (propagated-inputs
45dda35e
SB
11757 `(("python-gevent" ,python-gevent)
11758 ("python-kazoo" ,python-kazoo)
45dda35e
SB
11759 ("python-tabulate" ,python-tabulate)))
11760 (inputs
11761 `(("librdkafka" ,librdkafka)))
11762 (home-page "https://pykafka.readthedocs.io/")
11763 (synopsis "Apache Kafka client for Python")
11764 (description
11765 "PyKafka is a client for the Apache Kafka distributed messaging system.
11766It includes Python implementations of Kafka producers and consumers, which
11767are optionally backed by a C extension built on librdkafka.")
3f641af0 11768 (license license:asl2.0)))
45dda35e
SB
11769
11770(define-public python2-pykafka
11771 (package-with-python2 python-pykafka))
a44fd439
DM
11772
11773(define-public python-wcwidth
11774 (package
11775 (name "python-wcwidth")
9e59478f 11776 (version "0.1.7")
a44fd439
DM
11777 (source
11778 (origin
11779 (method url-fetch)
9e59478f 11780 (uri (pypi-uri "wcwidth" version))
a44fd439
DM
11781 (sha256
11782 (base32
9e59478f 11783 "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx"))))
a44fd439
DM
11784 (build-system python-build-system)
11785 (home-page "https://github.com/jquast/wcwidth")
66e07664 11786 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
11787 (description "Wcwidth measures the number of terminal column cells of
11788wide-character codes. It is useful for those implementing a terminal emulator,
11789or programs that carefully produce output to be interpreted by one. It is a
11790Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
11791specified in POSIX.1-2001 and POSIX.1-2008.")
f210e944 11792 (license license:expat)))
a44fd439
DM
11793
11794(define-public python2-wcwidth
f210e944 11795 (package-with-python2 python-wcwidth))
0de78c95
DP
11796
11797(define-public python2-jsonrpclib
11798 (package
11799 (name "python2-jsonrpclib")
11800 (version "0.1.7")
11801 (source (origin
11802 (method url-fetch)
11803 (uri (string-append
11804 "https://pypi.python.org/packages/source/j/jsonrpclib/"
11805 "jsonrpclib-" version ".tar.gz"))
11806 (sha256
11807 (base32
11808 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
11809 (build-system python-build-system)
0de78c95
DP
11810 (arguments
11811 `(#:tests? #f
11812 #:python ,python-2))
11813 (home-page "https://github.com/joshmarshall/jsonrpclib/")
11814 (synopsis "Implementation of JSON-RPC specification for Python")
11815 (description
11816 "This library is an implementation of the JSON-RPC specification.
11817It supports both the original 1.0 specification, as well as the
11818new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
11819etc.")
3f641af0 11820 (license license:asl2.0)))
9250b0f3
SB
11821
11822(define-public python-chai
11823 (package
11824 (name "python-chai")
11825 (version "1.1.1")
11826 (source (origin
11827 (method url-fetch)
11828 (uri (pypi-uri "chai" version))
11829 (sha256
11830 (base32
11831 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
11832 (build-system python-build-system)
9250b0f3
SB
11833 (home-page "https://github.com/agoragames/chai")
11834 (synopsis "Mocking framework for Python")
11835 (description
11836 "Chai provides an api for mocking, stubbing and spying your python
11837objects, patterned after the Mocha library for Ruby.")
3f641af0 11838 (license license:bsd-3)))
9250b0f3
SB
11839
11840(define-public python2-chai
11841 (package-with-python2 python-chai))
11842
ae43baa8
SB
11843(define-public python-arrow
11844 (package
11845 (name "python-arrow")
11846 (version "0.8.0")
11847 (source (origin
11848 (method url-fetch)
11849 (uri (pypi-uri "arrow" version))
11850 (sha256
11851 (base32
11852 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
11853 (build-system python-build-system)
11854 (native-inputs
f3b98f4f 11855 `(;; For testing
ae43baa8
SB
11856 ("python-chai" ,python-chai)
11857 ("python-simplejson" ,python-simplejson)))
36aed736 11858 (propagated-inputs
22d7360b 11859 `(("python-dateutil" ,python-dateutil)))
ae43baa8
SB
11860 (home-page "https://github.com/crsmithdev/arrow/")
11861 (synopsis "Dates and times for Python")
11862 (description
11863 "Arrow is a Python library to creating, manipulating, formatting and
11864converting dates, times, and timestamps. It implements and updates the
11865datetime type.")
3f641af0 11866 (license license:asl2.0)))
ae43baa8
SB
11867
11868(define-public python2-arrow
11869 (package-with-python2 python-arrow))
11870
1f2b62a4
SB
11871(define-public python-inflection
11872 (package
11873 (name "python-inflection")
11874 (version "0.3.1")
11875 (source
11876 (origin (method url-fetch)
11877 (uri (pypi-uri "inflection" version))
11878 (sha256
11879 (base32
11880 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
11881 (build-system python-build-system)
e9127525
MB
11882 (native-inputs
11883 `(("python-pytest" ,python-pytest)))
7bf837fd 11884 (home-page "https://github.com/jpvanhal/inflection")
1f2b62a4
SB
11885 (synopsis "Python string transformation library")
11886 (description
11887 "Inflection is a string transformation library. It singularizes
11888and pluralizes English words, and transforms strings from CamelCase to
11889underscored string.")
11890 (license license:expat)))
11891
11892(define-public python2-inflection
11893 (package-with-python2 python-inflection))
11894
18995566
SB
11895(define-public python-pylev
11896 (package
11897 (name "python-pylev")
11898 (version "1.3.0")
11899 (source (origin
11900 (method url-fetch)
11901 (uri (pypi-uri "pylev" version))
11902 (sha256
11903 (base32
11904 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
11905 (build-system python-build-system)
7bf837fd 11906 (home-page "https://github.com/toastdriven/pylev")
18995566
SB
11907 (synopsis "Levenshtein distance implementation in Python")
11908 (description "Pure Python Levenshtein implementation, based off the
11909Wikipedia code samples at
11910@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 11911 (license license:bsd-3)))
18995566
SB
11912
11913(define-public python2-pylev
11914 (package-with-python2 python-pylev))
11915
f5deff7a
SB
11916(define-public python-cleo
11917 (package
11918 (name "python-cleo")
11919 (version "0.4.1")
11920 (source (origin
11921 (method url-fetch)
11922 (uri (pypi-uri "cleo" version))
11923 (sha256
11924 (base32
11925 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
11926 (build-system python-build-system)
11927 (native-inputs
f3b98f4f 11928 `(;; For testing
f5deff7a
SB
11929 ("python-mock" ,python-mock)
11930 ("python-pytest" ,python-pytest)))
9403150a
SB
11931 (propagated-inputs
11932 `(("python-psutil" ,python-psutil)
11933 ("python-pylev" ,python-pylev)))
f5deff7a
SB
11934 (home-page "https://github.com/sdispater/cleo")
11935 (synopsis "Command-line arguments library for Python")
11936 (description
11937 "Cleo allows you to create command-line commands with signature in
11938docstring and colored output.")
11939 (license license:expat)))
11940
11941(define-public python2-cleo
11942 (package-with-python2 python-cleo))
11943
77cadb43
SB
11944(define-public python-lazy-object-proxy
11945 (package
11946 (name "python-lazy-object-proxy")
11947 (version "1.2.2")
11948 (source (origin
11949 (method url-fetch)
11950 (uri (pypi-uri "lazy-object-proxy" version))
11951 (sha256
11952 (base32
11953 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
11954 (build-system python-build-system)
77cadb43
SB
11955 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
11956 (synopsis "Lazy object proxy for python")
11957 (description
11958 "Lazy object proxy is an object that wraps a callable but defers the call
11959until the object is actually required, and caches the result of said call.")
3f641af0 11960 (license license:bsd-2)))
77cadb43
SB
11961
11962(define-public python2-lazy-object-proxy
11963 (package-with-python2 python-lazy-object-proxy))
11964
5477e05f
SB
11965(define-public python-dnspython
11966 (package
11967 (name "python-dnspython")
6c514128 11968 (version "1.15.0")
5477e05f
SB
11969 (source (origin
11970 (method url-fetch)
11971 (uri (string-append "http://www.dnspython.org/kits/"
11972 version "/dnspython-" version ".tar.gz"))
11973 (sha256
11974 (base32
6c514128 11975 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
5477e05f
SB
11976 (build-system python-build-system)
11977 (arguments '(#:tests? #f)) ; XXX: requires internet access
5477e05f
SB
11978 (home-page "http://www.dnspython.org")
11979 (synopsis "DNS toolkit for Python")
11980 (description
11981 "dnspython is a DNS toolkit for Python. It supports almost all record
11982types. It can be used for queries, zone transfers, and dynamic updates.
11983It supports TSIG authenticated messages and EDNS0.")
11984 (license license:expat)))
11985
11986(define-public python2-dnspython
11987 (package-with-python2 python-dnspython))
11988
22711e25
SB
11989(define-public python-email-validator
11990 (package
11991 (name "python-email-validator")
b165c215 11992 (version "1.0.2")
22711e25
SB
11993 (source
11994 (origin (method url-fetch)
11995 (uri (pypi-uri "email_validator" version))
11996 (sha256
11997 (base32
b165c215 11998 "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
22711e25
SB
11999 (build-system python-build-system)
12000 (arguments
12001 '(#:phases
12002 (modify-phases %standard-phases
12003 (add-before 'build 'use-dnspython
12004 (lambda _
12005 (substitute* "setup.py"
12006 (("dnspython3") "dnspython"))
12007 #t)))))
d42560bd 12008 (propagated-inputs
22711e25 12009 `(("python-dnspython" ,python-dnspython)
d42560bd 12010 ("python-idna" ,python-idna)))
22711e25
SB
12011 (home-page "https://github.com/JoshData/python-email-validator")
12012 (synopsis "Email address validation library for Python")
12013 (description
12014 "This library validates email address syntax and deliverability.")
3f641af0 12015 (license license:cc0)))
22711e25
SB
12016
12017(define-public python2-email-validator
12018 (package-with-python2 python-email-validator))
12019
8987d91e
SB
12020(define-public python-ukpostcodeparser
12021 (package
12022 (name "python-ukpostcodeparser")
12023 (version "1.0.3")
12024 (source (origin
12025 (method url-fetch)
12026 (uri (pypi-uri "UkPostcodeParser" version))
12027 (sha256
12028 (base32
12029 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
12030 (build-system python-build-system)
8987d91e
SB
12031 (home-page "https://github.com/hamstah/ukpostcodeparser")
12032 (synopsis "UK Postcode parser for Python")
12033 (description
12034 "This library provides the @code{parse_uk_postcode} function for
12035parsing UK postcodes.")
12036 (license license:expat)))
12037
12038(define-public python2-ukpostcodeparser
12039 (package-with-python2 python-ukpostcodeparser))
ea92ae01 12040
ce7911dd
MB
12041(define-public python-faker
12042 (package
12043 (name "python-faker")
12044 (version "0.7.9")
12045 (source (origin
12046 (method url-fetch)
12047 (uri (pypi-uri "Faker" version))
12048 (sha256
12049 (base32
12050 "1fh2p2yz0fsdr4fqwxgddwbvfb6qn6vp8yx0qwqzra27yq5d1wsm"))
12051 (patches
12052 (search-patches "python-faker-fix-build-32bit.patch"))
12053 (modules '((guix build utils)))
12054 (snippet
12055 '(begin
12056 (for-each delete-file (find-files "." "\\.pyc$"))
12057 #t))))
12058 (build-system python-build-system)
12059 (arguments
12060 '(#:phases
12061 (modify-phases %standard-phases
12062 (replace 'check
12063 (lambda _
12064 (zero? (system* "python" "-m" "unittest" "-v" "tests")))))))
12065 (native-inputs
12066 `(;; For testing
12067 ("python-email-validator" ,python-email-validator)
12068 ("python-mock" ,python-mock)
12069 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
12070 (propagated-inputs
12071 `(("python-dateutil" ,python-dateutil)
12072 ("python-six" ,python-six)))
12073 (home-page "https://github.com/joke2k/faker")
12074 (synopsis "Python package that generates fake data")
12075 (description
12076 "Faker is a Python package that generates fake data such as names,
12077addresses, and phone numbers.")
12078 (license license:expat)
12079 (properties `((python2-variant . ,(delay python2-faker))))))
12080
12081(define-public python2-faker
12082 (let ((base (package-with-python2 (strip-python2-variant
12083 python-faker))))
12084 (package
12085 (inherit base)
12086 (propagated-inputs
12087 `(("python2-ipaddress" ,python2-ipaddress)
12088 ,@(package-propagated-inputs base))))))
12089
b49504fd
SB
12090(define-public python-pyaml
12091 (package
12092 (name "python-pyaml")
12093 (version "15.8.2")
12094 (source (origin
12095 (method url-fetch)
12096 (uri (pypi-uri "pyaml" version))
12097 (sha256
12098 (base32
12099 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
12100 (build-system python-build-system)
f620311a
MB
12101 (native-inputs
12102 `(("python-unidecode" ,python-unidecode)))
b49504fd
SB
12103 (propagated-inputs
12104 `(("python-pyyaml" ,python-pyyaml)))
12105 (home-page "https://github.com/mk-fg/pretty-yaml")
12106 (synopsis "YAML pretty-print library for Python")
12107 (description
12108 "pyaml is a PyYAML based python module to produce pretty and readable
12109YAML-serialized data.")
3f641af0 12110 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
12111
12112(define-public python2-pyaml
12113 (package-with-python2 python-pyaml))
12114
347175a2
SB
12115(define-public python-flexmock
12116 (package
12117 (name "python-flexmock")
12118 (version "0.10.2")
12119 (source (origin
12120 (method url-fetch)
12121 (uri (pypi-uri "flexmock" version))
12122 (sha256
12123 (base32
12124 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
12125 (build-system python-build-system)
347175a2
SB
12126 (home-page "https://flexmock.readthedocs.org")
12127 (synopsis "Testing library for Python")
12128 (description
12129 "flexmock is a testing library for Python that makes it easy to create
12130mocks, stubs and fakes.")
3f641af0 12131 (license license:bsd-3)))
347175a2
SB
12132
12133(define-public python2-flexmock
12134 (package-with-python2 python-flexmock))
12135
5a744191
SB
12136(define-public python-orator
12137 (package
12138 (name "python-orator")
12139 (version "0.8.2")
12140 (source (origin
12141 (method url-fetch)
12142 (uri (pypi-uri "orator" version))
12143 (sha256
12144 (base32
12145 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
12146 (build-system python-build-system)
12147 (arguments '(#:tests? #f)) ; no tests
b2676030 12148 (propagated-inputs
5a744191
SB
12149 `(("python-arrow" ,python-arrow)
12150 ("python-blinker" ,python-blinker)
12151 ("python-cleo" ,python-cleo)
ce7911dd 12152 ("python-faker" ,python-faker)
5a744191
SB
12153 ("python-inflection" ,python-inflection)
12154 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
12155 ("python-pyaml" ,python-pyaml)
5a744191
SB
12156 ("python-simplejson" ,python-simplejson)
12157 ("python-wrapt" ,python-wrapt)))
12158 (home-page "https://orator-orm.com/")
12159 (synopsis "ActiveRecord ORM for Python")
12160 (description
12161 "Orator provides a simple ActiveRecord-like Object Relational Mapping
12162implementation for Python.")
12163 (license license:expat)
12164 (properties `((python2-variant . ,(delay python2-orator))))))
12165
12166(define-public python2-orator
12167 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
12168 (package
12169 (inherit base)
06961617 12170 (propagated-inputs
5a744191 12171 `(("python2-ipaddress" ,python2-ipaddress)
06961617 12172 ,@(package-propagated-inputs base))))))
f4155188
DM
12173
12174(define-public python-prompt-toolkit
12175 (package
12176 (name "python-prompt-toolkit")
6a34f4cc 12177 (version "1.0.9")
f4155188
DM
12178 (source
12179 (origin
12180 (method url-fetch)
d15e2ef0 12181 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
12182 (sha256
12183 (base32
6a34f4cc 12184 "172r15k9kwdw2lnajvpz1632dd16nqz1kcal1p0lq5ywdarj6rfd"))))
f4155188 12185 (build-system python-build-system)
bae18710
LF
12186 (arguments
12187 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
f22efa01
HG
12188 (propagated-inputs
12189 `(("python-wcwidth" ,python-wcwidth)
2c199b55 12190 ("python-six" ,python-six)
f22efa01 12191 ("python-pygments" ,python-pygments)))
f4155188
DM
12192 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
12193 (synopsis "Library for building command line interfaces in Python")
12194 (description
12195 "Prompt-Toolkit is a library for building interactive command line
12196interfaces in Python. It's like GNU Readline but it also features syntax
12197highlighting while typing, out-of-the-box multi-line input editing, advanced
12198code completion, incremental search, support for Chinese double-width
12199characters, mouse support, and auto suggestions.")
f210e944 12200 (license license:bsd-3)))
f4155188
DM
12201
12202(define-public python2-prompt-toolkit
f210e944 12203 (package-with-python2 python-prompt-toolkit))
a502dfbf
DM
12204
12205(define-public python-jedi
12206 (package
12207 (name "python-jedi")
12208 (version "0.9.0")
12209 (source
12210 (origin
12211 (method url-fetch)
12212 (uri (pypi-uri "jedi" version))
12213 (sha256
12214 (base32
12215 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
12216 (build-system python-build-system)
bfce8a34
MB
12217 (arguments
12218 ;; FIXME: One test fails (use "py.test" instead of 'setup.py test').
12219 '(#:tests? #f))
12220 (native-inputs
12221 `(("python-pytest" ,python-pytest)))
a502dfbf
DM
12222 (home-page "https://github.com/davidhalter/jedi")
12223 (synopsis
12224 "Autocompletion for Python that can be used for text editors")
12225 (description
12226 "Jedi is an autocompletion tool for Python that can be used for text editors.")
f210e944 12227 (license license:expat)))
a502dfbf
DM
12228
12229(define-public python2-jedi
f210e944 12230 (package-with-python2 python-jedi))
c2f0dc6e
DM
12231
12232(define-public ptpython
12233 (package
12234 (name "ptpython")
12235 (version "0.34")
12236 (source (origin
12237 (method url-fetch)
12238 (uri (pypi-uri "ptpython" version))
12239 (sha256
12240 (base32
12241 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
12242 (build-system python-build-system)
32955348
MB
12243 (arguments
12244 '(#:tests? #f)) ; FIXME: No tests in pypi tarball.
f22efa01 12245 (propagated-inputs
c2f0dc6e
DM
12246 `(("python-docopt" ,python-docopt)
12247 ("python-jedi" ,python-jedi)
12248 ("python-prompt-toolkit" ,python-prompt-toolkit)
f3b98f4f 12249 ("python-pygments" ,python-pygments)))
c2f0dc6e
DM
12250 (home-page "https://github.com/jonathanslenders/ptpython")
12251 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
12252 (description
12253 "ptpython is a Python read-eval-print loop with IDE-like features.
12254It supports syntax highlighting, multiline editing, autocompletion, mouse,
12255color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
12256etc.")
3f641af0 12257 (license license:bsd-3)
c2f0dc6e
DM
12258 (properties `((python2-variant . ,(delay ptpython-2))))))
12259
12260(define-public ptpython-2
12261 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
12262 (package
12263 (inherit base)
12264 (name "ptpython2"))))
b227f0be 12265
b04a52a6
DJ
12266(define-public python-requests-oauthlib
12267 (package
12268 (name "python-requests-oauthlib")
12269 (version "0.6.2")
12270 (source
12271 (origin
12272 (method url-fetch)
12273 (uri (pypi-uri "requests-oauthlib" version))
12274 (sha256
12275 (base32
12276 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
12277 (build-system python-build-system)
12278 (arguments
12279 `(#:phases
12280 (modify-phases %standard-phases
12281 ;; removes tests that require network access
12282 (add-before 'check 'pre-check
12283 (lambda _
12284 (delete-file "tests/test_core.py")
12285 #t)))))
12286 (native-inputs
12287 `(("python-requests-mock" ,python-requests-mock)
12288 ("python-mock" ,python-mock)))
f22efa01 12289 (propagated-inputs
b04a52a6
DJ
12290 `(("python-oauthlib" ,python-oauthlib)
12291 ("python-requests" ,python-requests)))
12292 (home-page
12293 "https://github.com/requests/requests-oauthlib")
12294 (synopsis
12295 "OAuthlib authentication support for Requests")
12296 (description
12297 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
12298provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
f210e944 12299 (license license:isc)))
b04a52a6
DJ
12300
12301(define-public python2-requests-oauthlib
f210e944 12302 (package-with-python2 python-requests-oauthlib))
b04a52a6 12303
b227f0be 12304(define-public python-stem
12305 (package
12306 (name "python-stem")
0bb1c35a 12307 (version "1.5.4")
b227f0be 12308 (source
12309 (origin
12310 (method url-fetch)
c976b319 12311 (uri (pypi-uri "stem" version))
b227f0be 12312 (sha256
12313 (base32
0bb1c35a 12314 "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
b227f0be 12315 (build-system python-build-system)
12316 (arguments
12317 `(#:phases
12318 (modify-phases %standard-phases
12319 (replace 'check
12320 (lambda _
12321 (zero? (system* "./run_tests.py" "--unit")))))))
12322 (native-inputs
12323 `(("python-mock" ,python-mock)
12324 ("python-pep8" ,python-pep8)
12325 ("python-pyflakes" ,python-pyflakes)))
b227f0be 12326 (home-page "https://stem.torproject.org/")
12327 (synopsis
12328 "Python controller library that allows applications to interact with Tor")
12329 (description
12330 "Stem is a Python controller library for Tor. With it you can use Tor's
12331control protocol to script against the Tor process and read descriptor data
12332relays publish about themselves.")
3f641af0 12333 (license license:lgpl3)))
b227f0be 12334
12335(define-public python2-stem
12336 (package-with-python2 python-stem))
517a6c0c
DM
12337
12338(define-public python-pyserial
12339 (package
12340 (name "python-pyserial")
12341 (version "3.1.1")
12342 (source
12343 (origin
12344 (method url-fetch)
12345 (uri (pypi-uri "pyserial" version))
12346 (sha256
12347 (base32
12348 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
12349 (build-system python-build-system)
0a702009
MB
12350 (arguments
12351 '(#:tests? #f)) ; FIXME: 3/49 tests are failing.
12352 ;; #:phases
12353 ;; (modify-phases %standard-phases
12354 ;; (replace 'check
12355 ;; (lambda _
12356 ;; (zero? (system* "python" "test/run_all_tests.py" "loop://")))))))
517a6c0c
DM
12357 (home-page
12358 "https://github.com/pyserial/pyserial")
12359 (synopsis "Python Serial Port Bindings")
12360 (description "@code{pyserial} provide serial port bindings for Python. It
12361supports different byte sizes, stop bits, parity and flow control with RTS/CTS
12362and/or Xon/Xoff. The port is accessed in RAW mode.")
f210e944 12363 (license license:bsd-3)))
517a6c0c
DM
12364
12365(define-public python2-pyserial
f210e944 12366 (package-with-python2 python-pyserial))
6eb7af2a
DJ
12367
12368(define-public python-kivy
12369 (package
12370 (name "python-kivy")
12371 (version "1.9.1")
12372 (source
12373 (origin
12374 (method url-fetch)
12375 (uri (pypi-uri "kivy" version))
12376 (file-name (string-append name "-" version ".tar.gz"))
12377 (sha256
12378 (base32
12379 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
12380 (build-system python-build-system)
12381 (arguments
12382 `(#:tests? #f ; Tests require many optional packages
12383 #:phases
12384 (modify-phases %standard-phases
12385 (replace 'build (lambda _ (zero? (system* "make" "force"))))
12386 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
12387 (lambda* (#:key inputs #:allow-other-keys)
12388 (setenv "KIVY_SDL2_PATH"
12389 (string-append (assoc-ref inputs "sdl-union")
12390 "/include/SDL2"))
12391 #t)))))
12392 (native-inputs
f2516de2
HG
12393 `(("pkg-config" ,pkg-config)
12394 ("python-cython" ,python-cython)))
6eb7af2a 12395 (inputs
f2516de2 12396 `(("gstreamer" ,gstreamer)
6eb7af2a
DJ
12397 ("mesa" ,mesa)
12398 ("sdl-union"
12399 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
12400 (home-page "http://kivy.org")
12401 (synopsis
12402 "Multitouch application framework")
12403 (description
12404 "A software library for rapid development of
12405hardware-accelerated multitouch applications.")
12406 (license license:expat)))
12407
12408(define-public python2-kivy
12409 (package-with-python2 python-kivy))
12410
12411(define-public python-kivy-next
12412 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
12413 (revision "1"))
12414 (package (inherit python-kivy)
12415 (name "python-kivy-next")
d80a71eb 12416 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
12417 (string-take commit 7)))
12418 (source
12419 (origin
12420 (method git-fetch)
12421 (uri (git-reference
12422 (url "https://github.com/kivy/kivy")
12423 (commit commit)))
12424 (file-name (string-append name "-" version "-checkout"))
12425 (sha256
12426 (base32
12427 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
12428
12429(define-public python2-kivy-next
12430 (package-with-python2 python-kivy-next))
8794bd8b
DC
12431
12432(define-public python-binaryornot
12433 (package
12434 (name "python-binaryornot")
12435 (version "0.4.0")
12436 (source (origin
12437 (method url-fetch)
12438 (uri (pypi-uri "binaryornot" version))
12439 (sha256
12440 (base32
12441 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
12442 (build-system python-build-system)
f22efa01 12443 (propagated-inputs
8794bd8b
DC
12444 `(("python-chardet" ,python-chardet)
12445 ("python-hypothesis" ,python-hypothesis)))
12446 (home-page "https://github.com/audreyr/binaryornot")
12447 (synopsis "Package to check if a file is binary or text")
12448 (description "Ultra-lightweight pure Python package to check if a file is
12449binary or text.")
12450 (license license:bsd-3)
12451 (properties `((python2-variant . ,(delay python2-binaryornot))))))
12452
12453(define-public python2-binaryornot
12454 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
12455 (package (inherit base)
f22efa01 12456 (propagated-inputs
8794bd8b 12457 `(("python2-enum34" ,python2-enum34)
f22efa01 12458 ,@(package-propagated-inputs base))))))
a9ac982a
DC
12459
12460(define-public python-nltk
12461 (package
12462 (name "python-nltk")
12463 (version "3.2.1")
12464 (source (origin
12465 (method url-fetch)
12466 (uri (pypi-uri "nltk" version))
12467 (sha256
12468 (base32
12469 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
12470 (build-system python-build-system)
59f12985
LF
12471 (arguments
12472 '(;; The tests require some extra resources to be downloaded.
12473 ;; TODO Try packaging these resources.
12474 #:tests? #f))
a9ac982a
DC
12475 (home-page "http://nltk.org/")
12476 (synopsis "Natural Language Toolkit")
12477 (description "It provides interfaces to over 50 corpora and lexical
12478resources such as WordNet, along with a suite of text processing libraries
12479for classification, tokenization, stemming, tagging, parsing, and semantic
12480reasoning, wrappers for natural language processing libraries.")
f210e944 12481 (license license:asl2.0)))
a9ac982a
DC
12482
12483(define-public python2-nltk
f210e944 12484 (package-with-python2 python-nltk))
691cd90d
DC
12485
12486(define-public python-pymongo
12487 (package
12488 (name "python-pymongo")
12489 (version "3.3.0")
12490 (source (origin
12491 (method url-fetch)
12492 (uri (pypi-uri "pymongo" version))
12493 (sha256
12494 (base32
12495 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
12496 (build-system python-build-system)
f22efa01 12497 (propagated-inputs
691cd90d 12498 `(("python-certifi" ,python-certifi)))
7bf837fd 12499 (home-page "https://github.com/mongodb/mongo-python-driver")
691cd90d
DC
12500 (synopsis "Python driver for MongoDB")
12501 (description "Python driver for MongoDB.")
f210e944 12502 (license license:asl2.0)))
691cd90d
DC
12503
12504(define-public python2-pymongo
f210e944 12505 (package-with-python2 python-pymongo))
6a6c9d43
DC
12506
12507(define-public python-sh
12508 (package
12509 (name "python-sh")
12510 (version "1.11")
12511 (source (origin
12512 (method url-fetch)
12513 (uri (pypi-uri "sh" version))
12514 (sha256
12515 (base32
12516 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
12517 (build-system python-build-system)
12518 (arguments
12519 `(#:tests? #f)) ; no tests
12520 (home-page "https://github.com/amoffat/sh")
12521 (synopsis "Python subprocess interface")
12522 (description "Abstracts process invocation by providing a function
12523interface for programs.")
f210e944 12524 (license license:expat)))
6a6c9d43
DC
12525
12526(define-public python2-sh
f210e944 12527 (package-with-python2 python-sh))
05b59190 12528
25702397
EF
12529(define-public python-consul
12530 (package
12531 (name "python-consul")
12532 (version "0.6.1")
12533 (source
12534 (origin
12535 (method url-fetch)
12536 (uri (pypi-uri "python-consul" version))
12537 (sha256
12538 (base32
12539 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
12540 (build-system python-build-system)
12541 (native-inputs
fd1d6de7
HG
12542 `(("python-pytest" ,python-pytest)))
12543 (propagated-inputs
12544 `(("python-requests" ,python-requests)
25702397
EF
12545 ("python-six" ,python-six)))
12546 (home-page "https://github.com/cablehead/python-consul")
12547 (synopsis "Python client for Consul")
12548 (description
12549 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
12550discovery, monitoring and configuration.")
12551 (license license:expat)))
12552
12553(define-public python2-consul
f210e944 12554 (package-with-python2 python-consul))
25702397 12555
05b59190
DC
12556(define-public python-schematics
12557 (package
12558 (name "python-schematics")
12559 (version "1.1.1")
12560 (source
12561 (origin
12562 (method url-fetch)
12563 (uri (string-append
12564 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
12565 (file-name (string-append name "-" version ".tar.gz"))
12566 (sha256
12567 (base32
12568 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
12569 (build-system python-build-system)
f22efa01 12570 (propagated-inputs
05b59190
DC
12571 `(("python-six" ,python-six)))
12572 (arguments
12573 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
12574 ; version requirements (eg python-coveralls)
12575 (home-page "https://github.com/schematics/schematics")
12576 (synopsis "Python Data Structures for Humans")
12577 (description "Python Data Structures for Humans.")
f210e944 12578 (license license:bsd-3)))
05b59190
DC
12579
12580(define-public python2-schematics
f210e944 12581 (package-with-python2 python-schematics))
d6907ff7
DC
12582
12583(define-public python-publicsuffix
12584 (package
12585 (name "python-publicsuffix")
12586 (version "1.1.0")
12587 (source (origin
12588 (method url-fetch)
12589 (uri (pypi-uri "publicsuffix" version))
12590 (sha256
12591 (base32
12592 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
12593 (build-system python-build-system)
12594 (arguments
12595 `(#:tests? #f)) ; tests use the internet
12596 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
12597 (synopsis "Get suffix for a domain name")
12598 (description "Get a public suffix for a domain name using the Public Suffix
12599List.")
f210e944 12600 (license license:expat)))
d6907ff7
DC
12601
12602(define-public python2-publicsuffix
f210e944 12603 (package-with-python2 python-publicsuffix))
b2319996
DC
12604
12605(define-public python-publicsuffix2
12606 (package
12607 (name "python-publicsuffix2")
91862162 12608 (version "2.20160818")
b2319996
DC
12609 (source
12610 (origin
12611 (method url-fetch)
12612 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
12613 (sha256
12614 (base32
91862162 12615 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
b2319996 12616 (build-system python-build-system)
10797a0a
LF
12617 (arguments
12618 '(#:tests? #f)) ; The test suite requires network access.
b2319996
DC
12619 (home-page "https://github.com/pombredanne/python-publicsuffix2")
12620 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
12621 (description "Get a public suffix for a domain name using the Public Suffix
12622List. Forked from and using the same API as the publicsuffix package.")
f210e944 12623 (license (list license:expat license:mpl2.0))))
b2319996
DC
12624
12625(define-public python2-publicsuffix2
f210e944 12626 (package-with-python2 python-publicsuffix2))
81f1515d
DC
12627
12628(define-public python-url
12629 (package
12630 (name "python-url")
12631 (version "0.2.0")
12632 (source (origin
12633 (method url-fetch)
12634 (uri (pypi-uri "url" version))
12635 (sha256
12636 (base32
12637 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
12638 (build-system python-build-system)
f22efa01 12639 (propagated-inputs
81f1515d
DC
12640 `(("python-publicsuffix" ,python-publicsuffix)))
12641 (native-inputs
12642 `(("python-coverage" ,python-coverage)
12643 ("python-nose" ,python-nose)))
12644 (arguments
12645 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
7bf837fd 12646 (home-page "https://github.com/seomoz/url-py")
81f1515d
DC
12647 (synopsis "URL Parsing")
12648 (description "Library for parsing urls.")
12649 (license license:expat)
12650 (properties `((python2-variant . ,(delay python2-url))))))
12651
12652(define-public python2-url
12653 (let ((base (package-with-python2 (strip-python2-variant python-url))))
12654 (package (inherit base)
f22efa01 12655 (propagated-inputs
f210e944 12656 `(("python2-publicsuffix" ,python2-publicsuffix))))))
974ee2c1
TS
12657
12658(define-public python-freezegun
12659 (package
12660 (name "python-freezegun")
0c315fb3 12661 (version "0.3.8")
974ee2c1
TS
12662 (source
12663 (origin
12664 (method url-fetch)
12665 (uri (pypi-uri "freezegun" version))
12666 (sha256
12667 (base32
0c315fb3 12668 "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151"))))
974ee2c1
TS
12669 (build-system python-build-system)
12670 (native-inputs
12671 `(("python-mock" ,python-mock)
12672 ("python-nose" ,python-nose)
4e096968 12673 ("python-coverage" ,python-coverage)))
f22efa01 12674 (propagated-inputs
4e096968 12675 `(("python-six" ,python-six)
22d7360b 12676 ("python-dateutil" ,python-dateutil)))
974ee2c1
TS
12677 (arguments
12678 `(#:phases (modify-phases %standard-phases
12679 ;; The tests are normally executed via `make test`, but the PyPi
12680 ;; package does not include the Makefile.
12681 (replace 'check
12682 (lambda _
12683 (zero? (system* "nosetests" "./tests/")))))))
12684 (home-page "https://github.com/spulec/freezegun")
12685 (synopsis "Test utility for mocking the datetime module")
12686 (description
12687 "FreezeGun is a library that allows your python tests to travel through
12688time by mocking the datetime module.")
12689 (license license:asl2.0)))
12690
12691(define-public python2-freezegun
f210e944
HG
12692 (package-with-python2 python-freezegun))
12693
dddcb25c
MB
12694
12695(define-public python-odfpy
12696 (package
12697 (name "python-odfpy")
12698 (version "1.3.3")
12699 (source (origin
12700 (method url-fetch)
12701 (uri (pypi-uri "odfpy" version))
12702 (sha256
12703 (base32
12704 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
12705 (arguments
12706 `(#:modules ((srfi srfi-1)
12707 (guix build python-build-system)
12708 (guix build utils))
12709 #:phases
12710 (modify-phases %standard-phases
12711 (replace 'check
12712 ;; The test runner invokes python2 and python3 for test*.py.
12713 ;; To avoid having both in inputs, we replicate it here.
12714 (lambda _
12715 (every (lambda (test-file)
12716 (zero? (system* "python" test-file)))
12717 (find-files "tests" "^test.*\\.py$")))))))
12718 (build-system python-build-system)
12719 (home-page "https://github.com/eea/odfpy")
12720 (synopsis "Python API and tools to manipulate OpenDocument files")
12721 (description "Collection of libraries and utility programs written in
12722Python to manipulate OpenDocument 1.2 files.")
12723 (license
12724 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
12725 ;; number of files with other licenses.
12726 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
12727
12728(define-public python2-odfpy
12729 (package-with-python2 python-odfpy))
b30565bd
MB
12730
12731(define-public python-cachecontrol
12732 (package
12733 (name "python-cachecontrol")
12734 (version "0.11.6")
12735 (source
12736 (origin
12737 (method url-fetch)
12738 ;; Pypi does not have tests.
12739 (uri (string-append
12740 "https://github.com/ionrock/cachecontrol/archive/v"
12741 version ".tar.gz"))
12742 (file-name (string-append name "-" version ".tar.gz"))
12743 (sha256
12744 (base32
12745 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
12746 (build-system python-build-system)
12747 (arguments
12748 `(#:phases
12749 (modify-phases %standard-phases
12750 (replace 'check
12751 (lambda _
12752 ;; Drop test that requires internet access.
12753 (delete-file "tests/test_regressions.py")
12754 (setenv "PYTHONPATH"
12755 (string-append (getcwd) "/build/lib:"
12756 (getenv "PYTHONPATH")))
12757 (zero? (system* "py.test" "-vv")))))))
12758 (native-inputs
12759 `(("python-pytest" ,python-pytest)
12760 ("python-redis" ,python-redis)
12761 ("python-webtest" ,python-webtest)
12762 ("python-mock" ,python-mock)))
12763 (propagated-inputs
12764 `(("python-requests" ,python-requests)
12765 ("python-lockfile" ,python-lockfile)))
12766 (home-page "https://github.com/ionrock/cachecontrol")
12767 (synopsis "The httplib2 caching algorithms for use with requests")
12768 (description "CacheControl is a port of the caching algorithms in
12769@code{httplib2} for use with @code{requests} session objects.")
f210e944 12770 (license license:asl2.0)))
b30565bd
MB
12771
12772(define-public python2-cachecontrol
f210e944 12773 (package-with-python2 python-cachecontrol))
243db824
DM
12774
12775(define-public python-lit
12776 (package
12777 (name "python-lit")
12778 (version "0.5.0")
12779 (source
12780 (origin
12781 (method url-fetch)
12782 (uri (pypi-uri "lit" version))
12783 (sha256
12784 (base32
12785 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
12786 (build-system python-build-system)
12787 (home-page "http://llvm.org/")
12788 (synopsis "LLVM Software Testing Tool")
12789 (description "@code{lit} is a portable tool for executing LLVM and Clang
12790style test suites, summarizing their results, and providing indication of
12791failures.")
f210e944 12792 (license license:ncsa)))
243db824
DM
12793
12794(define-public python2-lit
f210e944 12795 (package-with-python2 python-lit))
66f95b20
MB
12796
12797(define-public python-pytest-pep8
12798 (package
12799 (name "python-pytest-pep8")
12800 (version "1.0.6")
12801 (source (origin
12802 (method url-fetch)
12803 (uri (pypi-uri "pytest-pep8" version))
12804 (sha256
12805 (base32
12806 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
12807 (build-system python-build-system)
12808 (arguments
b41a05ce 12809 `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
66f95b20
MB
12810 (native-inputs
12811 `(("python-pytest" ,python-pytest)))
12812 (propagated-inputs
12813 `(("python-pep8" ,python-pep8)))
12814 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
12815 (synopsis "Py.test plugin to check PEP8 requirements")
12816 (description "Pytest plugin for checking PEP8 compliance.")
f210e944 12817 (license license:expat)))
66f95b20
MB
12818
12819(define-public python2-pytest-pep8
f210e944 12820 (package-with-python2 python-pytest-pep8))
df94a6b5
MB
12821
12822(define-public python-pytest-flakes
12823 (package
12824 (name "python-pytest-flakes")
12825 (version "1.0.1")
12826 (source (origin
12827 (method url-fetch)
12828 (uri (pypi-uri "pytest-flakes" version))
12829 (sha256
12830 (base32
12831 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
12832 (build-system python-build-system)
12833 (arguments
b41a05ce 12834 `(#:phases
df94a6b5
MB
12835 (modify-phases %standard-phases
12836 (delete 'check)
12837 (add-after 'install 'check
05c2fd36
HG
12838 (lambda* (#:key outputs inputs #:allow-other-keys)
12839 ;; It's easier to run tests after install.
12840 ;; Make installed package available for running the tests
12841 (add-installed-pythonpath inputs outputs)
df94a6b5
MB
12842 (zero? (system* "py.test" "-vv")))))))
12843 (native-inputs
12844 `(("python-coverage" ,python-coverage)
12845 ("python-pytest" ,python-pytest)
12846 ("python-pytest-cache" ,python-pytest-cache)
12847 ("python-pytest-pep8" ,python-pytest-pep8)))
12848 (propagated-inputs
12849 `(("python-pyflakes" ,python-pyflakes)))
12850 (home-page "https://github.com/fschulze/pytest-flakes")
12851 (synopsis "Py.test plugin to check source code with pyflakes")
12852 (description "Pytest plugin for checking Python source code with pyflakes.")
f210e944 12853 (license license:expat)))
df94a6b5
MB
12854
12855(define-public python2-pytest-flakes
f210e944 12856 (package-with-python2 python-pytest-flakes))
5467ea62
MB
12857
12858(define-public python-natsort
12859 (package
12860 (name "python-natsort")
a06cd95a 12861 (version "5.0.2")
5467ea62
MB
12862 (source (origin
12863 (method url-fetch)
12864 (uri (pypi-uri "natsort" version))
12865 (sha256
12866 (base32
a06cd95a 12867 "0bh6j0l8iapjnsgg3bs6q075cnzjl6zw1vlgqyv3qrygm2cxypkn"))))
5467ea62
MB
12868 (build-system python-build-system)
12869 (arguments
12870 `(#:phases
12871 (modify-phases %standard-phases
12872 (add-before 'check 'set-cachedir
12873 ;; Tests require write access to $HOME by default
12874 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
12875 (native-inputs
12876 `(("python-hypothesis" ,python-hypothesis)
12877 ("python-pytest-cache" ,python-pytest-cache)
12878 ("python-pytest-cov" ,python-pytest-cov)
12879 ("python-pytest-flakes" ,python-pytest-flakes)
12880 ("python-pytest-pep8" ,python-pytest-pep8)))
12881 (propagated-inputs ; TODO: Add python-fastnumbers.
12882 `(("python-pyicu" ,python-pyicu)))
12883 (home-page "https://github.com/SethMMorton/natsort")
12884 (synopsis "Natural sorting for python and shell")
12885 (description
12886 "Natsort lets you apply natural sorting on lists instead of
12887lexicographical. If you use the built-in @code{sorted} method in python
12888on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
12889returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
12890function @code{natsorted} that identifies numbers and sorts them separately
12891from strings. It can also sort version numbers, real numbers, mixed types
12892and more, and comes with a shell command @command{natsort} that exposes this
12893functionality in the command line.")
12894 (license license:expat)
12895 (properties `((python2-variant . ,(delay python2-natsort))))))
12896
12897(define-public python2-natsort
12898 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
12899 (package (inherit base)
12900 (native-inputs
00e10c6e 12901 `(("python2-pathlib" ,python2-pathlib)
5467ea62
MB
12902 ("python2-mock" ,python2-mock)
12903 ("python2-enum34" ,python2-enum34)
12904 ,@(package-native-inputs base))))))
4efb9c54
SR
12905
12906(define-public python-glances
12907 (package
12908 (name "python-glances")
12909 (version "2.7.1")
12910 (source
12911 (origin
12912 (method url-fetch)
12913 (uri (pypi-uri "Glances" version))
12914 (sha256
12915 (base32
12916 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
12917 (build-system python-build-system)
f22efa01 12918 (propagated-inputs
4efb9c54
SR
12919 `(("python-psutil" ,python-psutil)))
12920 (home-page
12921 "https://github.com/nicolargo/glances")
12922 (synopsis
12923 "A cross-platform curses-based monitoring tool")
12924 (description
12925 "Glances is a curses-based monitoring tool for a wide variety of platforms.
12926Glances uses the PsUtil library to get information from your system. It monitors
12927CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
f210e944 12928 (license license:lgpl3+)))
4efb9c54
SR
12929
12930(define-public python2-glances
f210e944 12931 (package-with-python2 python-glances))
05b7a593
EF
12932
12933(define-public python-graphql-core
12934 (package
12935 (name "python-graphql-core")
12936 (version "0.5.3")
12937 (source
12938 (origin
12939 (method url-fetch)
12940 (uri (pypi-uri "graphql-core" version))
12941 (sha256
12942 (base32
12943 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
12944 (build-system python-build-system)
12945 (arguments
326f8285
LF
12946 `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
12947 #:phases
05b7a593
EF
12948 (modify-phases %standard-phases
12949 (add-after 'unpack 'patch-hardcoded-version
12950 (lambda _ (substitute*
12951 "setup.py"
12952 (("'gevent==1.1rc1'") "'gevent'"))
12953 #t)))))
12954 (native-inputs
12955 `(("python-gevent" ,python-gevent)
12956 ("python-mock" ,python-mock)
12957 ("python-pytest-mock" ,python-pytest-mock)))
f22efa01 12958 (propagated-inputs
05b7a593
EF
12959 `(("python-promise" ,python-promise)
12960 ("python-six" ,python-six)))
12961 (home-page "https://github.com/graphql-python/graphql-core")
12962 (synopsis "GraphQL implementation for Python")
12963 (description
12964 "GraphQL implementation for Python. GraphQL is a data query language and
12965runtime designed and used to request and deliver data to mobile and web apps.
12966This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
12967to Python.")
05b7a593
EF
12968 (license license:expat)))
12969
12970(define-public python2-graphql-core
f210e944 12971 (package-with-python2 python-graphql-core))
7ee51575
EF
12972
12973(define-public python-graphql-relay
12974 (package
12975 (name "python-graphql-relay")
b13a5b4d 12976 (version "0.4.5")
7ee51575
EF
12977 (source
12978 (origin
12979 (method url-fetch)
12980 (uri (pypi-uri "graphql-relay" version))
12981 (sha256
12982 (base32
b13a5b4d 12983 "1nv5dxcj59zv31qvl8bd142njmxcmymny2dz3br1l2cpbljbf5i7"))))
7ee51575
EF
12984 (build-system python-build-system)
12985 (native-inputs
12986 `(("python-pytest" ,python-pytest)))
f22efa01 12987 (propagated-inputs
7ee51575
EF
12988 `(("python-graphql-core" ,python-graphql-core)
12989 ("python-promise" ,python-promise)
12990 ("python-six" ,python-six)))
12991 (home-page "https://github.com/graphql-python/graphql-relay-py")
12992 (synopsis "Relay implementation for Python")
12993 (description
12994 "This is a library to allow the easy creation of Relay-compliant servers
12995using the GraphQL Python reference implementation of a GraphQL server. It
12996should be noted that the code is a exact port of the original
12997@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
12998from Facebook.")
7ee51575
EF
12999 (license license:expat)))
13000
13001(define-public python2-graphql-relay
f210e944 13002 (package-with-python2 python-graphql-relay))
ddc63a56
EF
13003
13004(define-public python-graphene
13005 (package
13006 (name "python-graphene")
13007 (version "0.10.2")
13008 (source
13009 (origin
13010 (method url-fetch)
13011 (uri (pypi-uri "graphene" version))
13012 (sha256
13013 (base32
13014 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
13015 (build-system python-build-system)
13016 (native-inputs
13017 `(("python-django-filter" ,python-django-filter)
13018 ("python-mock" ,python-mock)
13019 ("python-psycopg2" ,python-psycopg2)
13020 ("python-pytest-django" ,python-pytest-django)
13021 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
f22efa01 13022 (propagated-inputs
ddc63a56
EF
13023 `(("python-graphql-core" ,python-graphql-core)
13024 ("python-graphql-relay" ,python-graphql-relay)
13025 ("python-iso8601" ,python-iso8601)
13026 ("python-promise" ,python-promise)
13027 ("python-six" ,python-six)))
13028 (home-page "http://graphene-python.org/")
13029 (synopsis "GraphQL Framework for Python")
13030 (description
13031 "Graphene is a Python library for building GraphQL schemas/types.
13032A GraphQL schema describes your data model, and provides a GraphQL server
13033with an associated set of resolve methods that know how to fetch data.")
13034 (properties `((python2-variant . ,(delay python2-graphene))))
13035 (license license:expat)))
13036
13037(define-public python2-graphene
13038 (let ((base (package-with-python2
13039 (strip-python2-variant python-graphene))))
13040 (package (inherit base)
13041 (native-inputs
00e10c6e 13042 `(("python2-sqlalchemy" ,python2-sqlalchemy)
ddc63a56 13043 ,@(package-native-inputs base))))))
d488d5d6
EF
13044
13045(define-public python-nautilus
13046 (package
13047 (name "python-nautilus")
13048 (version "0.4.9")
13049 (source
13050 (origin
13051 (method url-fetch)
13052 (uri (pypi-uri "nautilus" version))
13053 (sha256
13054 (base32
13055 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
13056 (build-system python-build-system)
13057 (arguments `(#:tests? #f)) ; fails to import test modules
f22efa01 13058 (propagated-inputs
d488d5d6
EF
13059 `(("python-bcrypt" ,python-bcrypt)
13060 ("python-click" ,python-click)
13061 ("python-consul" ,python-consul)
d488d5d6
EF
13062 ("python-graphene" ,python-graphene)
13063 ("python-jinja2" ,python-jinja2)
d488d5d6
EF
13064 ("python-peewee" ,python-peewee)
13065 ("python-pika" ,python-pika)
d488d5d6
EF
13066 ("python-tornado" ,python-tornado)
13067 ("python-wtforms" ,python-wtforms)))
38ceb106
HG
13068 (native-inputs
13069 `(("python-nose2" ,python-nose2)))
d488d5d6
EF
13070 (home-page "https://github.com/AlecAivazis/nautilus")
13071 (synopsis "Library for creating microservice applications")
13072 (description
13073 "Nautilus is a framework for flux based microservices that looks to
13074provide extendible implementations of common aspects of a cloud so that you can
13075focus on building massively scalable web applications.")
13076 (license license:expat)))
94cffc63 13077
89cd988b
DM
13078(define-public python-snowballstemmer
13079 (package
13080 (name "python-snowballstemmer")
13081 (version "1.2.1")
13082 (source (origin
1bd858cc
MB
13083 (method url-fetch)
13084 (uri (pypi-uri "snowballstemmer" version))
13085 (sha256
13086 (base32
13087 "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi"))))
89cd988b
DM
13088 (build-system python-build-system)
13089 (arguments
13090 `(;; No tests exist
13091 #:tests? #f))
13092 (home-page "https://github.com/shibukawa/snowball_py")
13093 (synopsis "Snowball stemming library collection for Python")
13094 (description "This package provides 16 word stemmer algorithms generated
13095from Snowball algorithms. It includes the 15 original ones plus the Poerter
13096English stemmer.")
13097 (license license:bsd-3)))
13098
13099(define-public python2-snowballstemmer
13100 (package-with-python2 python-snowballstemmer))
13101
754bfd70
DM
13102(define-public python-sphinx-cloud-sptheme
13103 (package
13104 (name "python-sphinx-cloud-sptheme")
5095bc7d 13105 (version "1.8.0")
754bfd70 13106 (source (origin
1bd858cc
MB
13107 (method url-fetch)
13108 (uri (pypi-uri "cloud_sptheme" version))
13109 (sha256
13110 (base32
5095bc7d 13111 "1dniqb6a39yh786f86c4jn666rwnyi1jvzn4616zhcchb7sfdshd"))))
1bd858cc 13112 (build-system python-build-system)
a31e2f1a
MB
13113 ;; FIXME: The 'pypi' release archive does not contain tests.
13114 (arguments '(#:tests? #f))
1bd858cc
MB
13115 (native-inputs
13116 `(("python-sphinx" ,python-sphinx)))
13117 (home-page "https://bitbucket.org/ecollins/cloud_sptheme")
13118 (synopsis "'Cloud' theme for Sphinx documenter")
13119 (description "This package contains the \"Cloud\" theme for Sphinx and some
754bfd70 13120related extensions.")
1bd858cc 13121 (license license:bsd-3)))
754bfd70
DM
13122
13123(define-public python2-sphinx-cloud-sptheme
13124 (package-with-python2 python-sphinx-cloud-sptheme))
13125
807a5b32
DM
13126(define-public python-sphinx-alabaster-theme
13127 (package
13128 (name "python-sphinx-alabaster-theme")
13129 (version "0.7.9")
1bd858cc
MB
13130 (source (origin
13131 (method url-fetch)
13132 (uri (pypi-uri "alabaster" version))
13133 (sha256
13134 (base32
13135 "027anxzcb951gjlcc43y3rbn9qrw36d16vj9wd2smv5410xx9bs7"))))
807a5b32
DM
13136 (build-system python-build-system)
13137 (propagated-inputs
13138 `(("python-pygments" ,python-pygments)))
13139 (home-page "https://alabaster.readthedocs.io/")
13140 (synopsis "Configurable sidebar-enabled Sphinx theme")
13141 (description "Alabaster is a visually (c)lean, responsive, configurable
13142theme for the Sphinx documentation system. It's the default theme of Sphinx.")
13143 (license license:bsd-3)))
13144
13145(define-public python2-sphinx-alabaster-theme
13146 (package-with-python2 python-sphinx-alabaster-theme))
13147
66d3f50a
LF
13148(define-public python-betamax
13149 (package
13150 (name "python-betamax")
13151 (version "0.8.0")
13152 (source
13153 (origin
13154 (method url-fetch)
13155 (uri (pypi-uri "betamax" version))
13156 (sha256
13157 (base32
13158 "18f8v5gng3j773jlbbzx4rg1i4y2zw3m2l1zpmbvp8bh5a2q1i42"))))
13159 (build-system python-build-system)
13160 (arguments
13161 '(;; Many tests fail because they require networking.
13162 #:tests? #f))
c415f763 13163 (propagated-inputs
66d3f50a
LF
13164 `(("python-requests" ,python-requests)))
13165 (home-page "https://github.com/sigmavirus24/betamax")
13166 (synopsis "Record HTTP interactions with python-requests")
13167 (description "Betamax will record your test suite's HTTP interactions and
13168replay them during future tests. It is designed to work with python-requests.")
f210e944 13169 (license license:expat)))
66d3f50a
LF
13170
13171(define-public python2-betamax
f210e944 13172 (package-with-python2 python-betamax))
ca0635b4 13173
94cffc63
LF
13174(define-public python-s3transfer
13175 (package
13176 (name "python-s3transfer")
1b5ea092 13177 (version "0.1.10")
94cffc63
LF
13178 (source (origin
13179 (method url-fetch)
13180 (uri (pypi-uri "s3transfer" version))
13181 (sha256
13182 (base32
1b5ea092 13183 "1h8g9bknvxflxkpbnxyfxmk8pvgykbbk9ljdvhqh6z4vjc2926ms"))))
94cffc63 13184 (build-system python-build-system)
fad8bf97
LF
13185 (arguments
13186 `(#:phases
13187 (modify-phases %standard-phases
13188 (replace 'check
13189 (lambda _
13190 ;; 7 of the 'integration' tests require network access or login
13191 ;; credentials.
13192 (zero? (system* "nosetests" "--exclude=integration")))))))
94cffc63 13193 (native-inputs
fad8bf97
LF
13194 `(("python-docutils" ,python-docutils)
13195 ("python-mock" ,python-mock)
13196 ("python-nose" ,python-nose)))
f22efa01 13197 (propagated-inputs
94cffc63
LF
13198 `(("python-botocore" ,python-botocore)))
13199 (synopsis "Amazon S3 Transfer Manager")
13200 (description "S3transfer is a Python library for managing Amazon S3
13201transfers.")
13202 (home-page "https://github.com/boto/s3transfer")
13203 (license license:asl2.0)
13204 (properties `((python2-variant . ,(delay python2-s3transfer))))))
13205
13206(define-public python2-s3transfer
13207 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
13208 (package
13209 (inherit base)
13210 (native-inputs
13211 `(("python2-futures" ,python2-futures)
94cffc63 13212 ,@(package-native-inputs base))))))
8ab59181
HG
13213
13214(define-public python-setproctitle
13215(package
13216 (name "python-setproctitle")
13217 (version "1.1.10")
13218 (source
13219 (origin
13220 (method url-fetch)
13221 (uri (pypi-uri "setproctitle" version))
13222 (sha256
13223 (base32
13224 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
13225 (build-system python-build-system)
13226 (arguments
13227 '(#:phases
13228 (modify-phases %standard-phases
13229 (add-before 'check 'patch-Makefile
13230 ;; Stricly this is only required for the python2 variant.
13231 ;; But adding a phase in an inherited package seems to be
13232 ;; cumbersum. So we patch even for python3.
13233 (lambda _
13234 (let ((nose (assoc-ref %build-inputs "python2-nose")))
13235 (when nose
13236 (substitute* "Makefile"
13237 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
13238 (string-append nose "/bin/nosetests "))))
13239 #t)))
13240 (replace 'check
13241 (lambda _
13242 (setenv "PYTHON" (or (which "python3") (which "python")))
13243 (setenv "PYCONFIG" (or (which "python3-config")
13244 (which "python-config")))
13245 (setenv "CC" "gcc")
13246 ;; No need to extend PYTHONPATH to find the built package, since
13247 ;; the Makefile will build anyway
13248 (zero? (system* "make" "check")))))))
13249 (native-inputs
13250 `(("procps" ,procps))) ; required for tests
13251 (home-page
13252 "https://github.com/dvarrazzo/py-setproctitle")
13253 (synopsis
13254 "Setproctitle implementation for Python to customize the process title")
13255 (description "The library allows a process to change its title (as displayed
13256by system tools such as ps and top).
13257
13258Changing the title is mostly useful in multi-process systems, for
13259example when a master process is forked: changing the children's title
13260allows to identify the task each process is busy with. The technique
13261is used by PostgreSQL and the OpenSSH Server for example.")
13262 (license license:bsd-3)
13263 (properties `((python2-variant . ,(delay python2-setproctitle))))))
13264
13265(define-public python2-setproctitle
13266 (let ((base (package-with-python2
13267 (strip-python2-variant python-setproctitle))))
13268 (package
13269 (inherit base)
13270 (native-inputs `(("python2-nose" ,python2-nose)
13271 ,@(package-native-inputs base))))))
162e42d8
HG
13272
13273(define-public python-validictory
13274 (package
13275 (name "python-validictory")
13276 (version "1.0.1")
13277 (source
13278 (origin
13279 (method url-fetch)
13280 (uri (pypi-uri "validictory" version))
13281 (sha256
13282 (base32
13283 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
13284 (build-system python-build-system)
13285 (arguments
13286 '(#:phases
13287 (modify-phases %standard-phases
13288 (add-after 'unpack 'bootstrap
13289 ;; Move the tests out of the package directory to avoid
13290 ;; packaging them.
13291 (lambda* _
13292 (rename-file "validictory/tests" "tests")
13293 (delete-file "tests/__init__.py")))
13294 (replace 'check
13295 (lambda _
13296 ;; Extend PYTHONPATH so the built package will be found.
13297 (setenv "PYTHONPATH"
13298 (string-append (getcwd) "/build/lib:"
13299 (getenv "PYTHONPATH")))
13300 (zero? (system* "py.test" "-vv" )))))))
13301 (native-inputs
13302 `(("python-pytest" ,python-pytest)))
13303 (home-page
13304 "https://github.com/jamesturk/validictory")
13305 (synopsis "General purpose Python data validator")
13306 (description "It allows validation of arbitrary Python data structures.
13307
13308The schema format is based on the JSON Schema
13309proposal (http://json-schema.org), so combined with json the library is also
13310useful as a validator for JSON data.")
f210e944 13311 (license license:expat)))
162e42d8
HG
13312
13313(define-public python2-validictory
f210e944 13314 (package-with-python2 python-validictory))
0990edfe
DM
13315
13316(define-public python-aniso8601
13317 (package
13318 (name "python-aniso8601")
13319 (version "1.1.0")
13320 (source
13321 (origin
13322 (method url-fetch)
13323 (uri (pypi-uri "aniso8601" version))
13324 (sha256
13325 (base32
13326 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
13327 (build-system python-build-system)
13328 (propagated-inputs
22d7360b 13329 `(("python-dateutil" ,python-dateutil)))
0990edfe
DM
13330 (home-page
13331 "https://bitbucket.org/nielsenb/aniso8601")
13332 (synopsis
13333 "Python library for parsing ISO 8601 strings")
13334 (description
13335 "This package contains a library for parsing ISO 8601 datetime strings.")
13336 (license license:bsd-3)))
999d964d
DM
13337
13338(define-public python-flask-restful
13339 (package
13340 (name "python-flask-restful")
13341 (version "0.3.5")
13342 (source
13343 (origin
13344 (method url-fetch)
13345 (uri (pypi-uri "Flask-RESTful" version))
13346 (sha256
13347 (base32
13348 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
13349 (build-system python-build-system)
13350 (propagated-inputs
13351 `(("python-aniso8601" ,python-aniso8601)
13352 ("python-flask" ,python-flask)
13353 ("python-pycrypto" ,python-pycrypto)
13354 ("python-pytz" ,python-pytz)))
13355 (native-inputs
13356 `(;; Optional dependency of Flask. Tests need it.
13357 ("python-blinker" ,python-blinker)
13358 ("python-mock" ,python-mock) ; For tests
13359 ("python-nose" ,python-nose) ; For tests
13360 ("python-sphinx" ,python-sphinx)))
13361 (home-page
13362 "https://www.github.com/flask-restful/flask-restful/")
13363 (synopsis
13364 "Flask module for creating REST APIs")
13365 (description
13366 "This package contains a Flask module for creating REST APIs.")
13367 (license license:bsd-3)))
31288222
DM
13368
13369(define-public python-flask-basicauth
13370 (package
13371 (name "python-flask-basicauth")
13372 (version "0.2.0")
13373 (source
13374 (origin
13375 (method url-fetch)
13376 (uri (pypi-uri "Flask-BasicAuth" version))
13377 (sha256
13378 (base32
13379 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
13380 (build-system python-build-system)
13381 (propagated-inputs
13382 `(("python-flask" ,python-flask)))
13383 (home-page
13384 "https://github.com/jpvanhal/flask-basicauth")
13385 (synopsis
13386 "HTTP basic access authentication for Flask")
13387 (description
13388 "This package provides HTTP basic access authentication for Flask.")
13389 (license license:bsd-3)))
903276d0
DM
13390
13391(define-public python-flask-sqlalchemy
13392 (package
13393 (name "python-flask-sqlalchemy")
13394 (version "2.1")
13395 (source
13396 (origin
13397 (method url-fetch)
13398 (uri (pypi-uri "Flask-SQLAlchemy" version))
13399 (sha256
13400 (base32
13401 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
13402 (build-system python-build-system)
13403 (propagated-inputs
13404 `(("python-flask" ,python-flask)
13405 ("python-sqlalchemy" ,python-sqlalchemy)))
13406 (home-page
7bf837fd 13407 "https://github.com/mitsuhiko/flask-sqlalchemy")
903276d0
DM
13408 (synopsis
13409 "Module adding SQLAlchemy support to your Flask application")
13410 (description
13411 "This package adds SQLAlchemy support to your Flask application.")
13412 (license license:bsd-3)))
329b4b3b
LF
13413
13414(define-public python-pyev
13415 (package
13416 (name "python-pyev")
13417 (version "0.9.0")
13418 (source
13419 (origin
13420 (method url-fetch)
13421 (uri (pypi-uri "pyev" version))
13422 (sha256
13423 (base32
13424 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
13425 (build-system python-build-system)
13426 (arguments
13427 `(#:tests? #f ; no test suite
13428 #:phases
13429 (modify-phases %standard-phases
13430 (add-after 'unpack 'patch
13431 (lambda* (#:key inputs #:allow-other-keys)
13432 (let ((libev (string-append (assoc-ref inputs "libev")
13433 "/lib/libev.so.4")))
13434 (substitute* "setup.py"
13435 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
13436 (string-append "libev_dll_name = \"" libev "\"")))))))))
13437 (inputs
13438 `(("libev" ,libev)))
13439 (home-page "http://pythonhosted.org/pyev/")
13440 (synopsis "Python libev interface")
13441 (description "Pyev provides a Python interface to libev.")
13442 (license license:gpl3)))
13443
13444(define-public python2-pyev
13445 (package-with-python2 python-pyev))
45b4f127
DM
13446
13447(define-public python-imagesize
13448 (package
13449 (name "python-imagesize")
13450 (version "0.7.1")
13451 (source
13452 (origin
13453 (method url-fetch)
13454 (uri (pypi-uri "imagesize" version))
13455 (sha256
13456 (base32
13457 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
13458 (build-system python-build-system)
9422c98a
LF
13459 (arguments
13460 '(;; Test files are not distributed on PyPi:
13461 ;; https://github.com/shibukawa/imagesize_py/issues/7
13462 #:tests? #f))
45b4f127
DM
13463 (home-page "https://github.com/shibukawa/imagesize_py")
13464 (synopsis "Gets image size of files in variaous formats in Python")
13465 (description
13466 "This package allows determination of image size from
13467PNG, JPEG, JPEG2000 and GIF files in pure Python.")
f210e944 13468 (license license:expat)))
45b4f127
DM
13469
13470(define-public python2-imagesize
f210e944 13471 (package-with-python2 python-imagesize))
2f6dd9cd
AI
13472
13473(define-public python-axolotl-curve25519
13474 (package
13475 (name "python-axolotl-curve25519")
13476 (version "0.1")
13477 (source
13478 (origin
13479 (method git-fetch)
13480 (uri (git-reference
5f13bf09 13481 (url "https://github.com/tgalal/python-axolotl-curve25519")
2f6dd9cd
AI
13482 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
13483 (file-name (string-append name "-" version "-checkout"))
13484 (sha256
13485 (base32
13486 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
13487 (build-system python-build-system)
13488 (arguments
13489 `(;; Prevent creation of the egg. This works around
13490 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
13491 #:configure-flags '("--root=/")))
2f6dd9cd
AI
13492 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
13493 (synopsis "Python wrapper for curve25519 library")
13494 (description "This is a python wrapper for the curve25519 library
13495with ed25519 signatures. The C code was pulled from
13496libaxolotl-android. At the moment this wrapper is meant for use by
13497python-axolotl.")
13498 (license (list license:gpl3 ; Most files
683cdbf5 13499 license:bsd-3)))) ; curve/curve25519-donna.c
2f6dd9cd
AI
13500
13501(define-public python2-axolotl-curve25519
13502 (package-with-python2 python-axolotl-curve25519))
06ff0837
AI
13503
13504(define-public python-axolotl
13505 (package
13506 (name "python-axolotl")
13507 (version "0.1.35")
13508 (source
13509 (origin
13510 (method url-fetch)
13511 (uri (string-append
13512 "https://github.com/tgalal/python-axolotl/archive/"
13513 version ".tar.gz"))
13514 (file-name (string-append name "-" version ".tar.gz"))
13515 (sha256
13516 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
13517 (build-system python-build-system)
13518 (arguments
13519 `(#:phases
13520 (modify-phases %standard-phases
13521 ;; Don't install tests
13522 (add-before 'install 'remove-tests
13523 (lambda _
13524 (for-each delete-file-recursively
13525 '("axolotl/tests" "build/lib/axolotl/tests"))
01fb9f66 13526 #t)))))
06ff0837
AI
13527 (propagated-inputs
13528 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
13529 ("python-dateutil" ,python-dateutil)
13530 ("python-protobuf" ,python-protobuf)
13531 ("python-pycrypto" ,python-pycrypto)))
13532 (home-page "https://github.com/tgalal/python-axolotl")
13533 (synopsis "Python port of libaxolotl-android")
13534 (description "This is a python port of libaxolotl-android. This
13535is a ratcheting forward secrecy protocol that works in synchronous and
13536asynchronous messaging environments.")
13537 (license license:gpl3)))
13538
13539(define-public python2-axolotl
13540 (package-with-python2 python-axolotl))
e2fca490
DM
13541
13542(define-public python-termstyle
13543 (package
13544 (name "python-termstyle")
13545 (version "0.1.11")
13546 (source
13547 (origin
13548 (method url-fetch)
13549 (uri (pypi-uri "termstyle" version))
13550 (sha256
13551 (base32
13552 "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
13553 (build-system python-build-system)
7917a135
MB
13554 (arguments
13555 '(#:phases
13556 (modify-phases %standard-phases
13557 (replace 'check
13558 (lambda _
13559 (zero? (system* "python" "test3.py")))))))
7bf837fd 13560 (home-page "https://github.com/gfxmonk/termstyle")
e2fca490
DM
13561 (synopsis "Console text coloring for Python")
13562 (description "This package provides console text coloring for Python.")
13563 (license license:bsd-3)))
1e6112d8
DM
13564
13565(define-public python-rednose
13566 (package
13567 (name "python-rednose")
13568 (version "1.2.1")
13569 (source
13570 (origin
13571 (method url-fetch)
13572 (uri (pypi-uri "rednose" version))
13573 (sha256
13574 (base32
13575 "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0"))))
13576 (build-system python-build-system)
13577 (arguments
13578 `(#:phases
13579 (modify-phases %standard-phases
13580 (add-after 'unpack 'fix-deps
13581 (lambda _
13582 ;; See <https://github.com/JBKahn/rednose/issues/12>
13583 (substitute* "setup.py"
13584 (("python-termstyle") "termstyle"))
13585 #t)))))
13586 (propagated-inputs
13587 `(("python-colorama" ,python-colorama)
13588 ("python-termstyle" ,python-termstyle)))
13589 (native-inputs
13590 `(("python-six" ,python-six)
13591 ("python-nose" ,python-nose)))
13592 (home-page "https://github.com/JBKahn/rednose")
13593 (synopsis "Colored output for Python nosetests")
13594 (description "This package provides colored output for the
13595@command{nosetests} command of the Python Nose unit test framework.")
13596 (license license:bsd-3)))
0a7f17f0 13597
ef74a425
MFM
13598(define-public python2-rednose
13599 (package-with-python2 python-rednose))
13600
0a7f17f0
DM
13601(define-public python-flask-restplus
13602 (package
13603 (name "python-flask-restplus")
13604 (version "0.9.2")
13605 (source
13606 (origin
13607 (method url-fetch)
13608 (uri (pypi-uri "flask-restplus" version))
13609 (sha256
13610 (base32
13611 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
13612 (build-system python-build-system)
59f74825
MB
13613 (arguments
13614 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
13615 ;; #:phases
13616 ;; (modify-phases %standard-phases
13617 ;; (replace 'check
13618 ;; (lambda _
13619 ;; (zero? (system* "nosetests")))))))
0a7f17f0
DM
13620 (propagated-inputs
13621 `(("python-aniso8601" ,python-aniso8601)
13622 ("python-flask" ,python-flask)
13623 ("python-jsonschema" ,python-jsonschema)
13624 ("python-pytz" ,python-pytz)
13625 ("python-six" ,python-six)))
13626 (native-inputs
13627 `(("python-tzlocal" ,python-tzlocal)
13628 ("python-blinker" ,python-blinker)
13629 ("python-nose" ,python-nose)
13630 ("python-rednose" ,python-rednose)))
13631 (home-page "https://github.com/noirbizarre/flask-restplus")
13632 (synopsis "Framework for documented API development with Flask")
13633 (description "This package provides a framework for API development with
13634the Flask web framework in Python. It is similar to package
13635@code{python-flask-restful} but supports the @code{python-swagger}
13636documentation builder.")
13637 (license license:expat)))
1ed21519
DM
13638
13639(define-public python-sadisplay
13640 (package
13641 (name "python-sadisplay")
13642 (version "0.4.6")
13643 (source
13644 (origin
13645 (method url-fetch)
13646 (uri (pypi-uri "sadisplay" version))
13647 (sha256
13648 (base32
13649 "0zqad2fl7q26p090qmqgmxbm6iwgf9zij1w8da1g3wdgjj72ql05"))))
13650 (build-system python-build-system)
13651 (propagated-inputs
13652 `(("python-sqlalchemy" ,python-sqlalchemy)))
13653 (native-inputs
13654 `(("python-nose" ,python-nose)))
13655 (home-page "https://bitbucket.org/estin/sadisplay")
13656 (synopsis "SQLAlchemy schema displayer")
13657 (description "This package provides a program to build Entity
13658Relationship diagrams from a SQLAlchemy model (or directly from the
13659database).")
13660 (license license:bsd-3)))
13661
13662(define-public python2-sadisplay
13663 (package-with-python2 python-sadisplay))
444a79b6
DM
13664
13665(define-public python-flask-restful-swagger
13666 (package
13667 (name "python-flask-restful-swagger")
13668 (version "0.19")
13669 (source
13670 (origin
13671 (method url-fetch)
13672 (uri (pypi-uri "flask-restful-swagger" version))
13673 (sha256
13674 (base32
13675 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
13676 (build-system python-build-system)
13677 (propagated-inputs
13678 `(("python-flask-restful" ,python-flask-restful)))
13679 (home-page "https://github.com/rantav/flask-restful-swagger")
13680 (synopsis "Extract Swagger specs from Flask-Restful projects")
13681 (description "This package lets you extract Swagger API documentation
13682specs from your Flask-Restful projects.")
13683 (license license:expat)))
13684
13685(define-public python2-flask-restful-swagger
13686 (package-with-python2 python-flask-restful-swagger))
6c2e82bc
TGR
13687
13688(define-public python-argcomplete
13689 (package
13690 (name "python-argcomplete")
13691 (version "1.7.0")
13692 (source
13693 (origin
13694 (method url-fetch)
13695 (uri (pypi-uri "argcomplete" version))
13696 (sha256
13697 (base32
13698 "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
13699 (build-system python-build-system)
80ce42bd
MB
13700 (native-inputs
13701 `(("python-pexpect" ,python-pexpect)
240d3cef
LC
13702 ("tcsh" ,tcsh)
13703 ("bash-full" ,bash))) ;full Bash for 'test_file_completion'
6c2e82bc
TGR
13704 (home-page "https://github.com/kislyuk/argcomplete")
13705 (synopsis "Shell tab completion for Python argparse")
13706 (description "argcomplete provides extensible command line tab completion
13707of arguments and options for Python scripts using @code{argparse}. It's
13708particularly useful for programs with many options or sub-parsers that can
13709dynamically suggest completions; for example, when browsing resources over the
13710network.")
13711 (license license:asl2.0)))
13712
13713(define-public python2-argcomplete
13714 (package-with-python2 python-argcomplete))
361a2fcf
TGR
13715
13716(define-public python-xopen
13717 (package
13718 (name "python-xopen")
13719 (version "0.1.1")
13720 (source
13721 (origin
13722 (method url-fetch)
13723 (uri (pypi-uri "xopen" version))
13724 (sha256
13725 (base32
13726 "1wx6mylzcsyhjl19ycb83qq6iqpmr927lz62njfsar6ldsj0qcni"))
13727 (file-name (string-append name "-" version ".tar.gz"))))
13728 (build-system python-build-system)
13729 (home-page "https://github.com/marcelm/xopen/")
13730 (synopsis "Open compressed files transparently")
13731 (description "This module provides an @code{xopen} function that works like
13732Python's built-in @code{open} function, but can also deal with compressed files.
13733Supported compression formats are gzip, bzip2 and, xz, and are automatically
13734recognized by their file extensions. The focus is on being as efficient as
13735possible on all supported Python versions.")
13736 (license license:expat)))
13737
13738(define-public python2-xopen
13739 (package-with-python2 python-xopen))
8d67610b
DM
13740
13741(define-public python2-cheetah
13742 (package
13743 (name "python2-cheetah")
13744 (version "2.4.4")
13745 (source
13746 (origin
13747 (method url-fetch)
13748 (uri (pypi-uri "Cheetah" version))
13749 (sha256
13750 (base32
13751 "0l5mm4lnysjkzpjr95q5ydm9xc8bv43fxmr79ypybrf1y0lq4c5y"))))
13752 (build-system python-build-system)
13753 (arguments
13754 `(#:python ,python-2))
13755 (propagated-inputs
13756 `(("python2-markdown" ,python2-markdown)))
13757 (home-page "https://pythonhosted.org/Cheetah/")
13758 (synopsis "Template engine")
13759 (description "Cheetah is a text-based template engine and Python code
13760generator.
13761
13762Cheetah can be used as a standalone templating utility or referenced as
13763a library from other Python applications. It has many potential uses,
13764but web developers looking for a viable alternative to ASP, JSP, PHP and
13765PSP are expected to be its principle user group.
13766
13767Features:
13768@enumerate
13769@item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
13770 text-based format.
13771@item Cleanly separates content, graphic design, and program code.
13772@item Blends the power and flexibility of Python with a simple template language
13773 that non-programmers can understand.
13774@item Gives template writers full access to any Python data structure, module,
13775 function, object, or method in their templates.
13776@item Makes code reuse easy by providing an object-orientated interface to
13777 templates that is accessible from Python code or other Cheetah templates.
13778 One template can subclass another and selectively reimplement sections of it.
13779@item Provides a simple, yet powerful, caching mechanism that can dramatically
13780 improve the performance of a dynamic website.
13781@item Compiles templates into optimized, yet readable, Python code.
13782@end enumerate")
13783 (license (license:x11-style "file://LICENSE"))))
916aafa4 13784
d83d8722
DM
13785(define-public python-dulwich
13786 (package
13787 (name "python-dulwich")
13788 (version "0.16.3")
13789 (source
13790 (origin
13791 (method url-fetch)
13792 (uri (list (string-append "https://www.dulwich.io/releases/"
13793 "dulwich-" version ".tar.gz")
13794 (pypi-uri "dulwich" version)))
13795 (sha256
13796 (base32 "0fl47vzfgc3w3rmhn8naii905cjqcp0vc68iyvymxp7567hh6als"))))
13797 (build-system python-build-system)
13798 (arguments
13799 `(#:phases
13800 (modify-phases %standard-phases
13801 (add-before 'check 'fix-tests
13802 (lambda* (#:key inputs #:allow-other-keys)
13803 ;; The tests use Popen with a custom environment which doesn't
13804 ;; include PATH.
13805 (substitute* "dulwich/tests/compat/utils.py"
13806 (("'git'") (string-append "'"
13807 (which "git")
13808 "'")))
13809 (substitute* '("dulwich/tests/test_repository.py"
13810 "dulwich/tests/test_hooks.py")
13811 (("#!/bin/sh") (string-append "#!" (which "sh"))))
13812 (setenv "TEST_RUNNER" "unittest")
13813 (setenv "PYTHONHASHSEED" "random")
13814 #t)))))
13815 (propagated-inputs
13816 `(("python-fastimport" ,python-fastimport)))
13817 (native-inputs
13818 `(("python-mock" ,python-mock)
13819 ("python-geventhttpclient" ,python-geventhttpclient)
13820 ("git" ,git)))
13821 (home-page "https://www.dulwich.io/")
13822 (synopsis "Git implementation in Python")
13823 (description "Dulwich is an implementation of the Git file formats and
13824protocols written in pure Python.")
13825 ;; Can be used with either license.
13826 (license (list license:asl2.0 license:gpl2+))))
13827
13828(define-public python2-dulwich
13829 (package-with-python2 python-dulwich))
424b1ae7 13830
916aafa4
CZ
13831(define-public python-pbkdf2
13832 (package
13833 (name "python-pbkdf2")
13834 (version "1.3")
13835 (source
13836 (origin
13837 (method url-fetch)
13838 (uri (pypi-uri "pbkdf2" version))
13839 (sha256
13840 (base32
13841 "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
13842 (build-system python-build-system)
fffcd8b8
MB
13843 (arguments
13844 '(#:phases
13845 (modify-phases %standard-phases
13846 (replace 'check
13847 (lambda _
13848 (setenv "PYTHONPATH"
13849 (string-append (getcwd) "/build/lib:"
13850 (getenv "PYTHONPATH")))
13851 (zero? (system* "python" "test/test_pbkdf2.py")))))))
916aafa4
CZ
13852 (propagated-inputs
13853 `(("python-pycrypto" ,python-pycrypto))) ; optional
13854 (home-page "http://www.dlitz.net/software/python-pbkdf2/")
13855 (synopsis "Password-based key derivation")
13856 (description "This module implements the password-based key derivation
13857function, PBKDF2, specified in RSA PKCS#5 v2.0.
13858
13859PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
13860is part of the RSA Public Key Cryptography Standards series. The provided
13861implementation takes a password or a passphrase and a salt value (and
13862optionally a iteration count, a digest module, and a MAC module) and provides
13863a file-like object from which an arbitrarly-sized key can be read.")
13864 (license license:expat)))
13865
13866(define-public python2-pbkdf2
13867 (package-with-python2 python-pbkdf2))
cba84a38
CZ
13868
13869(define-public python-qrcode
13870 (package
13871 (name "python-qrcode")
13872 (version "5.3")
13873 (source
13874 (origin
13875 (method url-fetch)
13876 (uri (pypi-uri "qrcode" version))
13877 (sha256
13878 (base32
13879 "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1"))))
13880 (build-system python-build-system)
6925cd78
MB
13881 (arguments
13882 ;; FIXME: Tests require packaging 'pymaging'.
13883 '(#:tests? #f))
cba84a38
CZ
13884 (propagated-inputs
13885 `(("python-lxml" ,python-lxml) ; for SVG output
13886 ("python-pillow" ,python-pillow) ; for PNG output
13887 ("python-six" ,python-six)))
13888 (home-page "https://github.com/lincolnloop/python-qrcode")
13889 (synopsis "QR Code image generator")
13890 (description "This package provides a pure Python QR Code generator
13891module. It uses the Python Imaging Library (PIL) to allow for the generation
13892of QR Codes.
13893
13894In addition this package provides a command line tool to generate QR codes and
13895either write these QR codes to a file or do the output as ascii art at the
13896console.")
13897 (license license:bsd-3)))
13898
13899(define-public python2-qrcode
13900 (package-with-python2 python-qrcode))
af7caada
CZ
13901
13902;; SlowAES isn't compatible with Python 3.
13903(define-public python2-slowaes
13904 (package
13905 (name "python2-slowaes")
13906 (version "0.1a1")
13907 (source
13908 (origin
13909 (method url-fetch)
13910 (uri (pypi-uri "slowaes" version))
13911 (sha256
13912 (base32
13913 "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
13914 (build-system python-build-system)
13915 (arguments `(#:python ,python-2))
13916 (home-page "http://code.google.com/p/slowaes/")
13917 (synopsis "Implementation of AES in Python")
13918 (description "This package contains an implementation of AES in Python.
13919This implementation is slow (hence the project name) but still useful when
13920faster ones are not available.")
13921 (license license:asl2.0)))
1a917fc9
MFM
13922
13923(define-public python-rst2ansi
13924 (package
13925 (name "python-rst2ansi")
13926 (version "0.1.5")
13927 (source
13928 (origin
13929 (method url-fetch)
13930 (uri (pypi-uri "rst2ansi" version))
13931 (sha256
13932 (base32
13933 "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
13934 (build-system python-build-system)
13935 (propagated-inputs
13936 `(("python-docutils" ,python-docutils)))
13937 (home-page "https://github.com/Snaipe/python-rst-to-ansi")
13938 (synopsis "Convert RST to ANSI-decorated console output")
13939 (description
13940 "Python module dedicated to rendering RST (reStructuredText) documents
13941to ansi-escaped strings suitable for display in a terminal.")
13942 (license license:expat)))
2f4623db 13943
ca0e62bf
SR
13944(define-public python-ansi2html
13945 (package
13946 (name "python-ansi2html")
13947 (version "1.2.0")
13948 (source
13949 (origin
13950 (method url-fetch)
13951 (uri (pypi-uri "ansi2html" version))
13952 (sha256
13953 (base32
13954 "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y"))))
13955 (build-system python-build-system)
13956 (native-inputs
13957 `(("python-mock" ,python-mock)
13958 ("python-nose" ,python-nose)))
13959 (propagated-inputs
13960 `(("python-six" ,python-six)))
13961 (home-page "http://github.com/ralphbean/ansi2html")
13962 (synopsis "Convert ANSI-decorated console output to HTML")
13963 (description
13964 "@command{ansi2html} is a Python library and command line utility for
13965convering text with ANSI color codes to HTML or LaTeX.")
13966 (license license:gpl3+)))
13967
13968(define-public python2-ansi2html
13969 (package-with-python2 python-ansi2html))
13970
2f4623db
MFM
13971(define-public python-ddt
13972 (package
13973 (name "python-ddt")
13974 (version "1.1.1")
13975 (source
13976 (origin
13977 (method url-fetch)
13978 (uri (pypi-uri "ddt" version))
13979 (sha256
13980 (base32
13981 "1c00ikkxr7lha97c81k938bzhgd4pbwamkjn0h4nkhr3xk00zp6n"))))
13982 (build-system python-build-system)
13983 (native-inputs
13984 `(("python-mock" ,python-mock)
13985 ("python-nose" ,python-nose)))
13986 (propagated-inputs
13987 `(("python-six" ,python-six)
13988 ("python-pyyaml" ,python-pyyaml)))
13989 (home-page "https://github.com/txels/ddt")
13990 (synopsis "Data-Driven Tests")
13991 (description
13992 "DDT (Data-Driven Tests) allows you to multiply one test case by running
13993it with different test data, and make it appear as multiple test cases.")
13994 (license license:expat)))
13995
13996(define-public python2-ddt
13997 (package-with-python2 python-ddt))
2299b137
MFM
13998
13999(define-public python-pycosat
14000 (package
14001 (name "python-pycosat")
14002 (version "0.6.1")
14003 (source
14004 (origin
14005 (method url-fetch)
14006 (uri (pypi-uri "pycosat" version))
14007 (sha256
14008 (base32
14009 "1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
14010 ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
14011 (build-system python-build-system)
14012 (home-page "https://github.com/ContinuumIO/pycosat")
14013 (synopsis "Bindings to picosat (a SAT solver)")
14014 (description
14015 "This package provides efficient Python bindings to @code{picosat} on
14016the C level. When importing pycosat, the @code{picosat} solver becomes part
14017of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
14018Problem} (SAT) solver.")
14019 (license license:expat)))
14020
14021(define-public python2-pycosat
14022 (package-with-python2 python-pycosat))
8fd68504
MFM
14023
14024(define-public python2-ruamel.ordereddict
14025 (package
14026 (name "python2-ruamel.ordereddict")
14027 (version "0.4.9")
14028 (source
14029 (origin
14030 (method url-fetch)
14031 (uri (pypi-uri "ruamel.ordereddict" version))
14032 (sha256
14033 (base32
14034 "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
14035 (build-system python-build-system)
14036 (arguments
14037 `(#:python ,python-2
14038 #:phases
14039 (modify-phases %standard-phases
14040 (delete 'check)
14041 (add-after 'install 'check
14042 (lambda* (#:key inputs outputs #:allow-other-keys)
14043 (add-installed-pythonpath inputs outputs)
14044 (zero? (system* "python" "test/testordereddict.py")))))))
14045 (home-page "https://bitbucket.org/ruamel/ordereddict")
14046 (synopsis "Version of dict that keeps keys in insertion order")
14047 (description
14048 "This is an implementation of an ordered dictionary with @dfn{Key
14049Insertion Order} (KIO: updates of values do not affect the position of the
14050key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
14051removed and put at the back). The standard library module @code{OrderedDict},
14052implemented later, implements a subset of @code{ordereddict} functionality.
14053Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
14054Order} (KSO, no sorting function can be specified, but a transform can be
14055specified to apply on the key before comparison (e.g. @code{string.lower})).")
14056 (license license:expat)))
d8768e31
EB
14057
14058(define-public python-pypeg2
14059 (package
14060 (name "python-pypeg2")
14061 (version "2.15.2")
14062 (source
14063 (origin
14064 (method url-fetch)
14065 (uri (pypi-uri "pyPEG2" version))
14066 (sha256
14067 (base32
14068 "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
14069 (build-system python-build-system)
14070 (propagated-inputs `(("python-lxml" ,python-lxml)))
14071 (arguments
14072 ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
14073 '(#:tests? #f))
14074 (home-page "https://fdik.org/pyPEG/")
14075 (synopsis "Parsering Expression Grammars in Python")
14076 (description "PyPEG is an intrinsic parser interpreter framework for
14077Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
14078parse many formal languages.")
14079 (license license:gpl2)))
33e9490c
AI
14080
14081(define-public python2-cliapp
14082 (package
14083 (name "python2-cliapp")
f6c58215 14084 (version "1.20170823")
33e9490c
AI
14085 (source
14086 (origin
14087 (method url-fetch)
14088 (uri (string-append
14089 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-"
14090 version ".tar.gz"))
14091 (sha256
14092 (base32
f6c58215 14093 "1i9gik0xrj6jmi95s5w988jl1y265baz5xm5pbqdyvsh8h9ln6yq"))))
33e9490c
AI
14094 (build-system python-build-system)
14095 (arguments
689042e5
AI
14096 `(#:python ,python-2
14097 #:phases
14098 (modify-phases %standard-phases
14099 ;; check phase needs to be run before the build phase. If not,
14100 ;; coverage-test-runner looks for tests for the built source files,
14101 ;; and fails.
14102 (delete 'check)
14103 (add-before 'build 'check
14104 (lambda _
14105 ;; Disable python3 tests
14106 (substitute* "check"
14107 (("python3") "# python3"))
14108 (zero? (system* "./check")))))))
14109 (native-inputs
14110 `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
14111 ("python2-pep8" ,python2-pep8)))
33e9490c
AI
14112 (propagated-inputs
14113 `(("python2-pyaml" ,python2-pyaml)))
14114 (home-page "https://liw.fi/cliapp/")
14115 (synopsis "Python framework for command line programs")
14116 (description "@code{python2-cliapp} is a python framework for
14117command line programs. It contains the typical stuff such programs
14118need to do, such as parsing the command line for options, and
14119iterating over input files.")
14120 (license license:gpl2+)))
14121
77e99411
AI
14122(define-public python2-ttystatus
14123 (package
14124 (name "python2-ttystatus")
2d6da794 14125 (version "0.35")
77e99411
AI
14126 (source
14127 (origin
14128 (method url-fetch)
14129 (uri (string-append
14130 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/ttystatus/snapshot/ttystatus-"
14131 version ".tar.gz"))
14132 (sha256
14133 (base32
2d6da794 14134 "0vivqbw7ddhsq1zj3g9cvvv4f0phl0pis2smsnwcr2szz2fk3hl6"))))
77e99411 14135 (build-system python-build-system)
f6180862
AI
14136 (native-inputs
14137 `(("python2-coverage-test-runner" ,python2-coverage-test-runner)
14138 ("python2-pep8" ,python2-pep8)))
77e99411 14139 (arguments
f6180862
AI
14140 `(#:python ,python-2
14141 #:phases
14142 (modify-phases %standard-phases
14143 ;; check phase needs to be run before the build phase. If not,
14144 ;; coverage-test-runner looks for tests for the built source files,
14145 ;; and fails.
14146 (delete 'check)
14147 (add-before 'build 'check
14148 (lambda _
14149 (zero? (system* "make" "check")))))))
77e99411
AI
14150 (home-page "https://liw.fi/ttystatus/")
14151 (synopsis "Python library for showing progress reporting and
14152status updates on terminals")
14153 (description "@code{python2-ttystatus} is a python library for
14154showing progress reporting and status updates on terminals, for
14155command line programs. Output is automatically adapted to the width
14156of the terminal: truncated if it does not fit, and resized if the
14157terminal size changes.")
14158 (license license:gpl3+)))
c220f0b4
AI
14159
14160(define-public python2-tracing
14161 (package
14162 (name "python2-tracing")
14163 (version "0.10")
14164 (source
14165 (origin
14166 (method url-fetch)
14167 (uri (string-append
14168 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/python-tracing/snapshot/tracing-"
14169 version ".tar.gz"))
14170 (sha256
14171 (base32
14172 "06cw4zg42fsvqy372vi2whj26w56vzg5axhzwdjc2bgwf03garbw"))))
14173 (build-system python-build-system)
14174 (arguments
14175 `(#:python ,python-2))
14176 (home-page "https://liw.fi/tracing/")
14177 (synopsis "Python debug logging helper")
14178 (description "@code{python2-tracing} is a python library for
14179logging debug messages. It provides a way to turn debugging messages
14180on and off, based on the filename they occur in. It is much faster
14181than using @code{logging.Filter} to accomplish the same thing, which
14182matters when code is run in production mode. The actual logging still
14183happens using the @code{logging} library.")
14184 (license license:gpl3+)))
b6b2ca5d
AI
14185
14186(define-public python2-larch
14187 (package
14188 (name "python2-larch")
14189 (version "1.20151025")
14190 (source
14191 (origin
14192 (method url-fetch)
14193 (uri (string-append
14194 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/larch/snapshot/larch-"
14195 version ".tar.gz"))
14196 (sha256
14197 (base32
14198 "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
14199 (build-system python-build-system)
14200 (arguments
14201 `(#:python ,python-2))
14202 (propagated-inputs
14203 `(("python2-tracing" ,python2-tracing)))
14204 (home-page "https://liw.fi/larch/")
14205 (synopsis "Python copy-on-write B-tree library")
14206 (description "@code{python2-larch} is an implementation of
14207particular kind of B-tree, based on research by Ohad Rodeh. See
14208@url{http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf} for details
14209on the data structure.
14210
14211The distinctive feature of this B-tree is that a node is never
14212(conceptually) modified. Instead, all updates are done by
14213copy-on-write. This makes it easy to clone a tree, and modify only the
14214clone, while other processes access the original tree.")
14215 (license license:gpl3+)))
35db2d3c
AP
14216
14217(define-public python-htmlmin
14218 (package
14219 (name "python-htmlmin")
14220 (version "0.1.10")
14221 (source
14222 (origin
14223 (method url-fetch)
14224 (uri (pypi-uri "htmlmin" version))
14225 (sha256
14226 (base32
14227 "0qxa93j3p1ak32qh8d9kshqv8v3z0hkc13dwbhp5cn7sn3xmsp6a"))))
14228 (arguments
14229 `(#:tests? #f)) ;htmlmin has no tests
14230 (build-system python-build-system)
14231 (home-page "https://htmlmin.readthedocs.org/en/latest/")
14232 (synopsis "HTML minifier")
14233 (description "@code{htmlmin} is an HTML minifier that just works.
14234It comes with safe defaults and easily configurable options.")
14235 (license license:bsd-3)))
14236
14237(define-public python2-htmlmin
14238 (package-with-python2 python-htmlmin))
78c55663
AP
14239
14240(define-public python-flask-htmlmin
14241 (package
14242 (name "python-flask-htmlmin")
14243 (version "1.2")
14244 (source
14245 (origin
14246 (method url-fetch)
14247 (uri (pypi-uri "Flask-HTMLmin" version))
14248 (sha256
14249 (base32
14250 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
14251 (propagated-inputs
14252 `(("python-flask" ,python-flask)
14253 ("python-htmlmin" ,python-htmlmin)))
14254 (build-system python-build-system)
14255 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
14256 (synopsis "HTML response minifier for Flask")
14257 (description
14258 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
14259 (license license:bsd-3)))
14260
14261(define-public python2-flask-htmlmin
14262 (package-with-python2 python-flask-htmlmin))
a71c8638
AP
14263
14264(define-public python-flask-login
14265 (package
14266 (name "python-flask-login")
14267 (version "0.4.0")
14268 (source
14269 (origin
14270 (method url-fetch)
14271 (uri (string-append "https://github.com/maxcountryman/flask-login/archive/"
14272 version ".tar.gz"))
14273 (file-name (string-append name "-" version ".tar.gz"))
14274 (sha256
14275 (base32
14276 "1pdqp7a2gyb7k06xda004x0fi2w66s6kn2i0ndkqndmg12d83f9w"))))
14277 (arguments
14278 ;; Tests fail PEP8 compliance. See:
14279 ;; https://github.com/maxcountryman/flask-login/issues/340
14280 `(#:tests? #f))
14281 (build-system python-build-system)
14282 (home-page "https://github.com/maxcountryman/flask-login")
14283 (synopsis "User session management for Flask")
14284 (description
14285 "@code{Flask-Login} provides user session management for Flask. It
14286handles the common tasks of logging in, logging out, and remembering your
14287users' sessions over extended periods of time.")
14288 (license license:expat)))
14289
14290(define-public python2-flask-login
14291 (package-with-python2 python-flask-login))
d5ef113c
AI
14292
14293(define-public python-astroid
14294 (package
14295 (name "python-astroid")
de2f56cf 14296 (version "1.5.3")
d5ef113c
AI
14297 (source
14298 (origin
14299 (method url-fetch)
14300 (uri (string-append
14301 "https://github.com/PyCQA/astroid/archive/astroid-"
14302 version ".tar.gz"))
14303 (sha256
14304 (base32
de2f56cf 14305 "0isn5p7f9n48hmksgbrj7dkm9dyglnayzn5jngk37qywg8a74ngn"))))
d5ef113c
AI
14306 (build-system python-build-system)
14307 (propagated-inputs
14308 `(("python-lazy-object-proxy" ,python-lazy-object-proxy)
14309 ("python-six" ,python-six)
14310 ("python-wrapt" ,python-wrapt)))
14311 (arguments
14312 `(#:phases
14313 (modify-phases %standard-phases
14314 (replace 'check
14315 (lambda _
14316 (zero? (system* "python" "-m" "unittest" "discover"
14317 "-p" "unittest*.py")))))))
14318 (home-page "https://github.com/PyCQA/astroid")
14319 (synopsis "Common base representation of python source code for pylint and
14320other projects")
14321 (description "@code{python-astroid} provides a common base representation
14322of python source code for projects such as pychecker, pyreverse, pylint, etc.
14323
14324It provides a compatible representation which comes from the _ast module. It
14325rebuilds the tree generated by the builtin _ast module by recursively walking
14326down the AST and building an extended ast. The new node classes have
14327additional methods and attributes for different usages. They include some
14328support for static inference and local name scopes. Furthermore, astroid
14329builds partial trees by inspecting living objects.")
de2f56cf
MB
14330 (license license:lgpl2.1+)
14331 (properties `((python2-variant . ,(delay python2-astroid))))))
d5ef113c
AI
14332
14333(define-public python2-astroid
de2f56cf
MB
14334 (let ((base (package-with-python2
14335 (strip-python2-variant python-astroid))))
14336 (package (inherit base)
14337 (propagated-inputs
14338 `(("python2-backports-functools-lru-cache"
14339 ,python2-backports-functools-lru-cache)
14340 ("python2-enum34" ,python2-enum34)
14341 ("python2-singledispatch" ,python2-singledispatch)
14342 ,@(package-propagated-inputs base))))))
6ba0af79
AI
14343
14344(define-public python-isort
14345 (package
14346 (name "python-isort")
14347 (version "4.2.5")
14348 (source
14349 (origin
14350 (method url-fetch)
14351 (uri (string-append
14352 "https://github.com/timothycrosley/isort/archive/"
14353 version ".tar.gz"))
14354 (file-name (string-append name "-" version ".tar.gz"))
14355 (sha256
14356 (base32
14357 "0zsrgkb0krn5476yncy5dd56k7dk34zqb4bnlvwy44ixgilyjmfh"))))
14358 (build-system python-build-system)
14359 (native-inputs
14360 `(("python-mock" ,python-mock)
14361 ("python-pytest" ,python-pytest)))
14362 (home-page "https://github.com/timothycrosley/isort")
14363 (synopsis "Python utility/library to sort python imports")
14364 (description "@code{python-isort} is a python utility/library to sort
14365imports alphabetically, and automatically separated into sections. It
14366provides a command line utility, a python library and plugins for various
14367editors.")
14368 (license license:expat)))
14369
14370(define-public python2-isort
14371 (package-with-python2 python-isort))
965a083e
AI
14372
14373(define-public python2-backports-functools-lru-cache
14374 (package
14375 (name "python2-backports-functools-lru-cache")
14376 (version "1.3")
14377 (source
14378 (origin
14379 (method url-fetch)
14380 ;; only the pypi tarballs contain the necessary metadata
14381 (uri (pypi-uri "backports.functools_lru_cache" version))
14382 (sha256
14383 (base32
14384 "158ysf2hb0q4p4695abfiym9x1ywg0dgh8a3apd7gqaaxjy22jj4"))))
14385 (build-system python-build-system)
14386 (native-inputs
14387 `(("python2-setuptools-scm" ,python2-setuptools-scm)))
14388 (arguments
14389 `(#:python ,python-2))
14390 (home-page "https://github.com/jaraco/backports.functools_lru_cache")
14391 (synopsis "Backport of functools.lru_cache from Python 3.3")
14392 (description "@code{python2-backports-functools-lru-cache} is a backport
14393of @code{functools.lru_cache} from python 3.3.")
14394 (license license:expat)))
23db3fc6
AI
14395
14396(define-public python-configparser
14397 (package
14398 (name "python-configparser")
14399 (version "3.5.0")
14400 (source
14401 (origin
14402 (method url-fetch)
14403 (uri (string-append
14404 "https://bitbucket.org/ambv/configparser/get/"
14405 version ".tar.bz2"))
14406 (file-name (string-append name "-" version ".tar.gz"))
14407 (sha256
14408 (base32
14409 "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa"))))
14410 (build-system python-build-system)
14411 (home-page "http://docs.python.org/py3k/library/configparser.html")
14412 (synopsis "Backport of configparser from python 3.5")
14413 (description "@code{python-configparser} is a backport of
14414@code{configparser} from Python 3.5 so that it can be used directly
14415in other versions.")
14416 (license license:expat)))
14417
14418(define-public python2-configparser
14419 (package-with-python2 python-configparser))
61550ded
AI
14420
14421(define-public python2-coverage-test-runner
14422 (package
14423 (name "python2-coverage-test-runner")
14424 (version "1.11")
14425 (source
14426 (origin
14427 (method url-fetch)
14428 (uri (string-append
14429 "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/"
14430 "coverage-test-runner/snapshot/coverage-test-runner-"
14431 version ".tar.gz"))
14432 (sha256
14433 (base32
14434 "0y1m7z3dl63kmhcmydl1mwg0hacnf6ghrx9dah17j9iasssfa3g7"))))
14435 (build-system python-build-system)
14436 (arguments
14437 `(#:python ,python-2
14438 #:phases
14439 (modify-phases %standard-phases
14440 (replace 'check
14441 (lambda _
14442 (zero? (system* "./testrun")))))))
14443 (propagated-inputs
14444 `(("python2-coverage" ,python2-coverage)))
14445 (home-page "https://liw.fi/coverage-test-runner/")
14446 (synopsis "Python module for running unit tests")
14447 (description "@code{CoverageTestRunner} is a python module for running
d1e4ad1b 14448unit tests and failing them if the unit test module does not exercise all
61550ded
AI
14449statements in the module it tests.")
14450 (license license:gpl3+)))
315944a3
AI
14451
14452(define-public python-pylint
14453 (package
14454 (name "python-pylint")
a8a964db 14455 (version "1.7.2")
315944a3
AI
14456 (source
14457 (origin
14458 (method url-fetch)
14459 (uri (string-append
14460 "https://github.com/PyCQA/pylint/archive/pylint-"
14461 version ".tar.gz"))
14462 (sha256
14463 (base32
a8a964db 14464 "0mzn1czhf1mgr2wiqfihb274sja02h899b85kywdpivppa9nwrmp"))))
315944a3
AI
14465 (build-system python-build-system)
14466 (native-inputs
a8a964db
MB
14467 `(("python-pytest" ,python-pytest)
14468 ("python-pytest-runner" ,python-pytest-runner)
14469 ("python-tox" ,python-tox)))
315944a3
AI
14470 (propagated-inputs
14471 `(("python-astroid" ,python-astroid)
14472 ("python-isort" ,python-isort)
14473 ("python-mccabe" ,python-mccabe)
14474 ("python-six" ,python-six)))
14475 (arguments
14476 `(#:phases
14477 (modify-phases %standard-phases
14478 (replace 'check
14479 (lambda _
14480 ;; Somehow, tests for python2-pylint
14481 ;; fail if run from the build directory
14482 (let ((work "/tmp/work"))
14483 (mkdir-p work)
14484 (setenv "PYTHONPATH"
14485 (string-append (getenv "PYTHONPATH") ":" work))
14486 (copy-recursively "." work)
14487 (with-directory-excursion "/tmp"
14488 (zero? (system* "python" "-m" "unittest" "discover"
14489 "-s" (string-append work "/pylint/test")
14490 "-p" "*test_*.py")))))))))
14491 (home-page "https://github.com/PyCQA/pylint")
14492 (synopsis "Python source code analyzer which looks for coding standard
14493errors")
14494 (description "Pylint is a Python source code analyzer which looks
14495for programming errors, helps enforcing a coding standard and sniffs
14496for some code smells (as defined in Martin Fowler's Refactoring book).
14497
14498Pylint has many rules enabled by default, way too much to silence them
14499all on a minimally sized program. It's highly configurable and handle
14500pragmas to control it from within your code. Additionally, it is
14501possible to write plugins to add your own checks.")
462ae6f6 14502 (properties `((python2-variant . ,(delay python2-pylint))))
315944a3
AI
14503 (license license:gpl2+)))
14504
14505(define-public python2-pylint
462ae6f6
DM
14506 (let ((pylint (package-with-python2
14507 (strip-python2-variant python-pylint))))
315944a3
AI
14508 (package (inherit pylint)
14509 (propagated-inputs
14510 `(("python2-backports-functools-lru-cache"
14511 ,python2-backports-functools-lru-cache)
14512 ("python2-configparser" ,python2-configparser)
14513 ,@(package-propagated-inputs pylint))))))
5d0c3ba8
MFM
14514
14515(define-public python-paramunittest
14516 (package
14517 (name "python-paramunittest")
14518 (version "0.2")
14519 (source
14520 (origin
14521 (method url-fetch)
14522 (uri (pypi-uri "ParamUnittest" version))
14523 (sha256
14524 (base32
14525 "0kp793hws5xv1wvycxq7jw2pwy36f35k39jg8hx5qikij5a0jid1"))))
14526 (build-system python-build-system)
14527 (home-page
14528 "https://github.com/rik0/ParamUnittest")
14529 (synopsis
14530 "Simple extension to have parametrized unit tests")
14531 (description
14532 "This package allows to create parametrized unit-tests that work with the standard
14533unittest package. A parametrized test case is automatically converted to multiple test
14534cases. Since they are TestCase subclasses, they work with other test suites that
14535recognize TestCases.")
14536 (license license:bsd-2)))
14537
14538(define-public python2-python-paramunittest
14539 (package-with-python2 python-paramunittest))
eec21d4b
MFM
14540
14541(define-public python-mando
14542 (package
14543 (name "python-mando")
14544 (version "0.5")
14545 (source
14546 (origin
14547 (method url-fetch)
14548 (uri (pypi-uri "mando" version))
14549 (sha256
14550 (base32
14551 "0q05h66439gqdmlk4jqm6xrwrzfdgs4mwk70barxhr2y83qbbdc0"))))
14552 (build-system python-build-system)
14553 (propagated-inputs
14554 `(("python-rst2ansi" ,python-rst2ansi)))
14555 (native-inputs
14556 `(("python-sphinx" ,python-sphinx-1.5.3)
14557 ("python-paramunittest" ,python-paramunittest)))
14558 (home-page "https://mando.readthedocs.org/")
14559 (synopsis
14560 "Wrapper around argparse, allowing creation of complete CLI applications")
14561 (description
14562 "This package is a wrapper around argparse, allowing you to write complete CLI
14563 applications in seconds while maintaining all the flexibility.")
14564 (license license:expat)))
14565
14566(define-public python2-mando
14567 (package-with-python2 python-mando))
b98d4ec0
MFM
14568
14569(define-public python-mando-0.3.1
14570 ;; python-radon (version 1.5.0) has a requirement
14571 ;; for mando<0.4,>=0.3
14572 (package
14573 (inherit python-mando)
14574 (name "python-mando")
14575 (version "0.3.1")
14576 (source
14577 (origin
14578 (method url-fetch)
14579 (uri (string-append "https://github.com/rubik/mando/archive/v"
14580 version
14581 ".tar.gz"))
14582 (sha256
14583 (base32
14584 "17jlkdpqw22z1nyml5ybslilqkzmnk0dxxjml8bfghav1l5hbwd2"))))))
16fe516e
BS
14585
14586(define-public python-fudge
14587 (package
14588 (name "python-fudge")
14589 ;; 0.9.6 is the latest version suitable for testing the "fabric" Python 2
14590 ;; package, which is currently the only use of this package.
14591 (version "0.9.6")
14592 (source
14593 (origin
14594 (method url-fetch)
14595 (uri (pypi-uri "fudge" version))
14596 (sha256
14597 (base32
14598 "185ia3vr3qk4f2s1a9hdxb8ci4qc0x0xidrad96pywg8j930qs9l"))))
14599 (build-system python-build-system)
14600 (arguments
14601 `(#:tests? #f)) ;XXX: Tests require the NoseJS Python package.
14602 (home-page "https://github.com/fudge-py/fudge")
14603 (synopsis "Replace real objects with fakes/mocks/stubs while testing")
14604 (description
14605 "Fudge is a Python module for using fake objects (mocks and stubs) to
14606test real ones.
14607
14608In readable Python code, you declare the methods available on your fake object
14609and how they should be called. Then you inject that into your application and
14610start testing. This declarative approach means you don’t have to record and
14611playback actions and you don’t have to inspect your fakes after running code.
14612If the fake object was used incorrectly then you’ll see an informative
14613exception message with a traceback that points to the culprit.")
14614 (license license:expat)))
14615
14616(define-public python2-fudge
14617 (package-with-python2 python-fudge))
f3f8d159
DM
14618
14619(define-public python-oauth2client
14620 (package
14621 (name "python-oauth2client")
14622 (version "4.0.0")
14623 (source
14624 (origin
14625 (method url-fetch)
14626 (uri (pypi-uri "oauth2client" version))
14627 (sha256
14628 (base32
14629 "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
14630 (build-system python-build-system)
14631 (arguments
14632 `(#:tests? #f))
14633 (propagated-inputs
14634 `(("python-httplib2" ,python-httplib2)
14635 ("python-pyasn1" ,python-pyasn1)
14636 ("python-pyasn1-modules" ,python-pyasn1-modules)
14637 ("python-rsa" ,python-rsa)
14638 ("python-six" ,python-six)))
14639 (home-page "http://github.com/google/oauth2client/")
14640 (synopsis "OAuth 2.0 client library")
14641 (description "@code{python-oauth2client} provides an OAuth 2.0 client
14642library for Python")
14643 (license license:asl2.0)))
6e7302e9
DM
14644
14645(define-public python-flask-oidc
14646 (package
14647 (name "python-flask-oidc")
14648 (version "1.1.1")
14649 (source
14650 (origin
14651 (method url-fetch)
14652 (uri (pypi-uri "flask-oidc" version))
14653 (sha256
14654 (base32
14655 "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
14656 (build-system python-build-system)
14657 (propagated-inputs
14658 `(("python-flask" ,python-flask)
14659 ("python-itsdangerous" ,python-itsdangerous)
14660 ("python-oauth2client" ,python-oauth2client)
14661 ("python-six" ,python-six)))
14662 (native-inputs
14663 `(("python-nose" ,python-nose)
14664 ("python-mock" ,python-mock)))
14665 (home-page "https://github.com/puiterwijk/flask-oidc")
14666 (synopsis "OpenID Connect extension for Flask")
14667 (description "@code{python-flask-oidc} provides an OpenID Connect extension
14668for Flask.")
14669 (license license:bsd-2)))
7e16478f
DM
14670
14671(define-public python-mwclient
14672 (package
14673 (name "python-mwclient")
14674 (version "0.8.4")
14675 (source
14676 (origin
14677 (method url-fetch)
14678 ;; The PyPI version wouldn't contain tests.
14679 (uri (string-append "https://github.com/mwclient/mwclient/archive/"
14680 "v" version ".tar.gz"))
14681 (sha256
14682 (base32
14683 "1jj0yhilkjir00719fc7w133x7hdyhkxhk6xblla4asig45klsfv"))))
14684 (build-system python-build-system)
14685 (propagated-inputs
14686 `(("python-requests" ,python-requests)
14687 ("python-requests-oauthlib"
14688 ,python-requests-oauthlib)
14689 ("python-six" ,python-six)))
14690 (native-inputs
14691 `(("python-mock" ,python-mock)
14692 ("python-pytest" ,python-pytest)
14693 ("python-pytest-pep8" ,python-pytest-pep8)
14694 ("python-pytest-cache" ,python-pytest-cache)
14695 ("python-pytest-cov" ,python-pytest-cov)
14696 ("python-responses" ,python-responses)))
14697 (home-page "https://github.com/btongminh/mwclient")
14698 (synopsis "MediaWiki API client")
14699 (description "This package provides a MediaWiki API client.")
14700 (license license:expat)))
14701
14702(define-public python2-mwclient
14703 (package-with-python2 python-mwclient))
59a97288
JL
14704
14705(define-public python-pytest-warnings
14706 (package
14707 (name "python-pytest-warnings")
14708 (version "0.2.0")
14709 (source
14710 (origin
14711 (method url-fetch)
14712 (uri (pypi-uri "pytest-warnings" version))
14713 (sha256
14714 (base32
14715 "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g"))))
14716 (build-system python-build-system)
14717 (propagated-inputs
14718 `(("pytest" ,python-pytest-3.0)))
14719 (home-page "https://github.com/fschulze/pytest-warnings")
14720 (synopsis "Pytest plugin to list Python warnings in pytest report")
14721 (description
14722 "Python-pytest-warnings is a pytest plugin to list Python warnings in
14723pytest report.")
14724 (license license:expat)))
14725
14726(define-public python2-pytest-warnings
14727 (package-with-python2 python-pytest-warnings))
2d6e56ba 14728
a12b30a0
DM
14729(define-public python-pytest-capturelog
14730 (package
14731 (name "python-pytest-capturelog")
14732 (version "0.7")
14733 (source
14734 (origin
14735 (method url-fetch)
14736 (uri (pypi-uri "pytest-capturelog" version ".tar.gz"))
14737 (sha256
14738 (base32
14739 "038049nyjl7di59ycnxvc9nydivc5m8np3hqq84j2iirkccdbs5n"))))
14740 (build-system python-build-system)
14741 (propagated-inputs
14742 `(("pytest" ,python-pytest-3.0)))
14743 (home-page "http://bitbucket.org/memedough/pytest-capturelog/overview")
14744 (synopsis "Pytest plugin to catch log messages")
14745 (description
14746 "Python-pytest-catchlog is a pytest plugin to catch log messages.")
14747 (license license:expat)))
14748
14749(define-public python2-pytest-capturelog
14750 (package-with-python2 python-pytest-capturelog))
14751
2d6e56ba
JL
14752(define-public python-pytest-catchlog
14753 (package
14754 (name "python-pytest-catchlog")
14755 (version "1.2.2")
14756 (source
14757 (origin
14758 (method url-fetch)
14759 (uri (pypi-uri "pytest-catchlog" version ".zip"))
14760 (sha256
14761 (base32
14762 "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab"))))
14763 (build-system python-build-system)
14764 (native-inputs
14765 `(("unzip" ,unzip)))
14766 (propagated-inputs
14767 `(("pytest" ,python-pytest-3.0)))
14768 (home-page "https://github.com/eisensheng/pytest-catchlog")
14769 (synopsis "Pytest plugin to catch log messages")
14770 (description
14771 "Python-pytest-catchlog is a pytest plugin to catch log messages. This is
14772a fork of pytest-capturelog.")
14773 (license license:expat)))
14774
14775(define-public python2-pytest-catchlog
14776 (package-with-python2 python-pytest-catchlog))
75805449
JL
14777
14778(define-public python-utils
14779 (package
14780 (name "python-utils")
14781 (version "2.1.0")
14782 (source (origin
14783 (method url-fetch)
14784 (uri (pypi-uri "python-utils" version))
14785 (sha256
14786 (base32
14787 "1mcsy6q5am4ya72rgkpb6kax6vv7c93cfkkas89xnpa4sj9zf28p"))))
14788 (build-system python-build-system)
14789 (native-inputs
14790 `(("pytest-runner" ,python-pytest-runner)
14791 ("pytest" ,python-pytest)
14792 ("six" ,python-six)))
14793 (home-page "https://github.com/WoLpH/python-utils")
14794 (synopsis "Convenient utilities not included with the standard Python install")
14795 (description
14796 "Python Utils is a collection of small Python functions and classes which
14797make common patterns shorter and easier.")
14798 (license license:bsd-2)))
14799
14800(define-public python2-utils
14801 (package-with-python2 python-utils))
709a5a93
JL
14802
14803(define-public python-webassets
14804 (package
14805 (name "python-webassets")
14806 (version "0.12.1")
14807 (source
14808 (origin
14809 (method url-fetch)
14810 (uri (pypi-uri "webassets" version))
14811 (sha256
14812 (base32
14813 "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
14814 (build-system python-build-system)
14815 (native-inputs
14816 `(("python-jinja2" ,python-jinja2)
14817 ("python-mock" ,python-mock)
14818 ("python-nose" ,python-nose)
14819 ("python-pytest" ,python-pytest)))
14820 (home-page "https://github.com/miracle2k/webassets")
14821 (synopsis "Media asset management")
14822 (description "Merges, minifies and compresses Javascript and CSS files,
14823supporting a variety of different filters, including YUI, jsmin, jspacker or
14824CSS tidy. Also supports URL rewriting in CSS files.")
14825 (license license:bsd-2)))
4c066b72
JL
14826
14827(define-public python-sphinx-me
14828 (package
14829 (name "python-sphinx-me")
14830 (version "0.3")
14831 (source
14832 (origin
14833 (method url-fetch)
14834 (uri (pypi-uri "sphinx-me" version))
14835 (sha256
14836 (base32
14837 "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq"))))
14838 (build-system python-build-system)
14839 (home-page "https://github.com/stephenmcd/sphinx-me")
14840 (synopsis "Create a Sphinx documentation shell")
14841 (description
14842 "Create a Sphinx documentation shell for your project and include the
14843README file as the documentation index. It handles extracting the required
14844meta data such as the project name, author and version from your project for
14845use in your Sphinx docs.")
14846 (license license:bsd-2)))
14847
14848(define-public python2-sphinx-me
14849 (package-with-python2 python-sphinx-me))
03ded2fd
JL
14850
14851(define-public python-cssmin
14852 (package
14853 (name "python-cssmin")
14854 (version "0.2.0")
14855 (source
14856 (origin
14857 (method url-fetch)
14858 (uri (pypi-uri "cssmin" version))
14859 (sha256
14860 (base32
14861 "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
14862 (build-system python-build-system)
14863 (home-page "https://github.com/zacharyvoase/cssmin")
14864 (synopsis "Python port of the YUI CSS Compressor")
14865 (description "Python port of the YUI CSS Compressor.")
14866 (license (list license:expat license:bsd-3))))
14867
14868(define-public python2-cssmin
14869 (package-with-python2 python-cssmin))
186d4f8d
JL
14870
14871(define-public python-diff-match-patch
14872 (package
14873 (name "python-diff-match-patch")
14874 (version "20121119")
14875 (source
14876 (origin
14877 (method url-fetch)
14878 (uri (pypi-uri "diff-match-patch" version))
14879 (sha256
14880 (base32
14881 "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
14882 (build-system python-build-system)
14883 (home-page "https://code.google.com/p/google-diff-match-patch")
14884 (synopsis "Synchronize plain text")
14885 (description "Diff Match and Patch libraries offer robust algorithms to
14886perform the operations required for synchronizing plain text.")
14887 (license license:asl2.0)))
14888
14889(define-public python2-diff-match-patch
14890 (package-with-python2 python-diff-match-patch))
d15a4791
JL
14891
14892(define-public python-dirsync
14893 (package
14894 (name "python-dirsync")
14895 (version "2.2.2")
14896 (source
14897 (origin
14898 (method url-fetch)
14899 (uri (pypi-uri "dirsync" version ".zip"))
14900 (sha256
14901 (base32
14902 "1hcdvmkwd5512zbxpin0k7bx5bkgzy3swjx7d0kj1y45af6r75v2"))))
14903 (build-system python-build-system)
14904 (native-inputs
14905 `(("unzip" ,unzip)))
14906 (propagated-inputs
14907 `(("six" ,python-six)))
14908 (home-page "https://bitbucket.org/tkhyn/dirsync")
14909 (synopsis "Advanced directory tree synchronisation tool")
14910 (description "Advanced directory tree synchronisation tool.")
14911 (license license:expat)))
14912
14913(define-public python2-dirsync
14914 (package-with-python2 python-dirsync))
1b16f1ec
JL
14915
14916(define-public python-nosexcover
14917 (package
14918 (name "python-nosexcover")
14919 (version "1.0.11")
14920 (source (origin
14921 (method url-fetch)
14922 (uri (pypi-uri "nosexcover" version))
14923 (sha256
14924 (base32
14925 "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319"))))
14926 (build-system python-build-system)
14927 (propagated-inputs
14928 `(("python-coverage" ,python-coverage)
14929 ("python-nose" ,python-nose)))
14930 (home-page "http://github.com/cmheisel/nose-xcover")
14931 (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
14932 (description "Nose-xcover is a companion to the built-in
14933@code{nose.plugins.cover}. This plugin will write out an XML coverage report
14934to a file named coverage.xml.
14935
14936It will honor all the options you pass to the Nose coverage plugin,
14937especially -cover-package.")
14938 (license license:expat)))
14939
14940(define-public python2-nosexcover
14941 (package-with-python2 python-nosexcover))
afdfbb1d
JL
14942
14943(define-public python-elasticsearch
14944 (package
14945 (name "python-elasticsearch")
14946 (version "1.0.0")
14947 (source
14948 (origin
14949 (method url-fetch)
14950 (uri (pypi-uri "elasticsearch" version))
14951 (sha256
14952 (base32
14953 "1sdw1r05cw7ihnmng8ra9v968fj7bq6sji8i1dikymsnkcpgc69g"))))
14954 (build-system python-build-system)
14955 (native-inputs
14956 `(("python-mock" ,python-mock)
14957 ("python-nosexcover" ,python-nosexcover)
14958 ("python-pyaml" ,python-pyaml)
14959 ("python-requests" ,python-requests)))
14960 (propagated-inputs
14961 `(("urllib3" ,python-urllib3)))
14962 (arguments
14963 ;; tests require the test_elasticsearch module but it is not distributed.
14964 `(#:tests? #f))
14965 (home-page "https://github.com/elastic/elasticsearch-py")
14966 (synopsis "Low-level client for Elasticsearch")
14967 (description "Official low-level client for Elasticsearch. Its goal is to
14968provide common ground for all Elasticsearch-related code in Python; because of
14969this it tries to be opinion-free and very extendable.")
14970 (license license:expat)))
14971
14972(define-public python2-elasticsearch
14973 (package-with-python2 python-elasticsearch))
a17ccbbb
JL
14974
14975(define-public python-levenshtein
14976 (package
14977 (name "python-levenshtein")
14978 (version "0.12.0")
14979 (source
14980 (origin
14981 (method url-fetch)
14982 (uri (pypi-uri "python-Levenshtein" version))
14983 (sha256
14984 (base32
14985 "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
14986 (build-system python-build-system)
14987 (home-page "https://github.com/ztane/python-Levenshtein")
14988 (synopsis "Fast computation of Levenshtein distance and string similarity")
14989 (description
14990 "The Levenshtein Python C extension module contains functions for fast computation of
14991@enumerate
14992@item Levenshtein (edit) distance, and edit operations
14993@item string similarity
14994@item approximate median strings, and generally string averaging
14995@item string sequence and set similarity
14996@end enumerate
14997It supports both normal and Unicode strings.")
14998 (license license:gpl2+)))
14999
15000(define-public python2-levenshtein
15001 (package-with-python2 python-levenshtein))
38a370d2
JL
15002
15003(define-public python-scandir
15004 (package
15005 (name "python-scandir")
15006 (version "1.4")
15007 (source
15008 (origin
15009 (method url-fetch)
15010 (uri (pypi-uri "scandir" version))
15011 (sha256
15012 (base32 "0yjrgp0mxp3d8bjkq2m1ac2ys8n76wykksvgyjrnil9gr3fx7a5d"))))
15013 (build-system python-build-system)
15014 (home-page "https://github.com/benhoyt/scandir")
15015 (synopsis "Directory iteration function")
15016 (description
15017 "Directory iteration function like os.listdir(), except that instead of
15018returning a list of bare filenames, it yields DirEntry objects that include
15019file type and stat information along with the name. Using scandir() increases
15020the speed of os.walk() by 2-20 times (depending on the platform and file
15021system) by avoiding unnecessary calls to os.stat() in most cases.")
15022 (license license:bsd-3)))
15023
15024(define-public python2-scandir
15025 (package-with-python2 python-scandir))
18c25460
JL
15026
15027(define-public python2-stemming
15028 (package
15029 (name "python2-stemming")
15030 (version "1.0.1")
15031 (source
15032 (origin
15033 (method url-fetch)
15034 (uri (pypi-uri "stemming" version))
15035 (sha256
15036 (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
15037 (build-system python-build-system)
15038 (arguments
15039 `(#:python ,python-2))
15040 (home-page "https://bitbucket.org/mchaput/stemming/overview")
15041 (synopsis "Python implementations of various stemming algorithms")
15042 (description
15043 "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
15044stemming algorithms for English. These implementations are straightforward and
15045efficient, unlike some Python versions of the same algorithms available on the
15046Web. This package is an extraction of the stemming code included in the Whoosh
15047search engine.")
15048 (license license:public-domain)))
54153b85
JL
15049
15050(define-public python-factory-boy
15051 (package
15052 (name "python-factory-boy")
15053 (version "2.8.1")
15054 (source
15055 (origin
15056 (method url-fetch)
15057 (uri (pypi-uri "factory_boy" version))
15058 (sha256
15059 (base32 "1fvin6san5xsjh2c4y18caj2lnmwxlylyqm8mh1yc6rp38wlwr56"))))
15060 (build-system python-build-system)
15061 (arguments
15062 ;; Tests are not included in the tarball.
15063 `(#:tests? #f))
15064 (propagated-inputs
15065 `(("faker" ,python-faker)))
15066 (home-page "https://github.com/benhoyt/scandir")
15067 (synopsis "Versatile test fixtures replacement")
15068 (description
15069 "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl.
15070
15071As a fixtures replacement tool, it aims to replace static, hard to maintain
15072fixtures with easy-to-use factories for complex object.
15073
15074Instead of building an exhaustive test setup with every possible combination
15075of corner cases, factory_boy allows you to use objects customized for the
15076current test, while only declaring the test-specific fields")
15077 (license license:expat)))
15078
15079(define-public python2-factory-boy
15080 (package-with-python2 python-factory-boy))
5f25fd69
JL
15081
15082(define-public python-translate-toolkit
15083 (package
15084 (name "python-translate-toolkit")
15085 (version "2.1.0")
15086 (source
15087 (origin
15088 (method url-fetch)
15089 (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
15090 (sha256
15091 (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq"))))
15092 (build-system python-build-system)
15093 (native-inputs
15094 `(("python-pytest" ,python-pytest)
15095 ("python-sphinx" ,python-sphinx)))
15096 (propagated-inputs
15097 `(("python-babel" ,python-babel)
15098 ("python-beautifulsoup4" ,python-beautifulsoup4)
15099 ("python-chardet" ,python-chardet)
15100 ("python-diff-match-patch" ,python-diff-match-patch)
15101 ("python-levenshtein" ,python-levenshtein)
15102 ("python-lxml" ,python-lxml)
15103 ("python-six" ,python-six)
15104 ("python-vobject" ,python-vobject)
15105 ("python-pyyaml" ,python-pyyaml)))
15106 (arguments
15107 ;; TODO: tests are not run, because they end with
15108 ;; TypeError: parse() missing 2 required positional arguments: 'tree' and
15109 ;; 'parse_funcs'
15110 ;; during test setup.
15111 `(#:tests? #f))
15112 (home-page "http://toolkit.translatehouse.org")
15113 (synopsis "Tools and API for translation and localization engineering")
15114 (description
15115 "Tools and API for translation and localization engineering. It contains
15116several utilities, as well as an API for building localization tools.")
15117 (license license:gpl2+)))
15118
15119(define-public python2-translate-toolkit
15120 (package-with-python2 python-translate-toolkit))
3b08d1a6
JL
15121
15122(define-public python-mysqlclient
15123 (package
15124 (name "python-mysqlclient")
15125 (version "1.3.10")
15126 (source
15127 (origin
15128 (method url-fetch)
15129 (uri (pypi-uri "mysqlclient" version))
15130 (sha256
15131 (base32
15132 "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
15133 (build-system python-build-system)
15134 (native-inputs
15135 `(("mariadb" ,mariadb)
15136 ("nose" ,python-nose)
15137 ("mock" ,python-mock)
15138 ("py.test" ,python-pytest)))
15139 (inputs
15140 `(("mysql" ,mysql)
15141 ("libz" ,zlib)
15142 ("openssl" ,openssl)))
15143 (home-page "https://github.com/PyMySQL/mysqlclient-python")
15144 (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
15145 (description "MySQLdb is an interface to the popular MySQL database server
15146for Python. The design goals are:
15147@enumerate
15148@item Compliance with Python database API version 2.0 [PEP-0249],
15149@item Thread-safety,
15150@item Thread-friendliness (threads will not block each other).
15151@end enumerate")
15152 (license license:gpl2)))
15153
15154(define-public python2-mysqlclient
15155 (package-with-python2 python-mysqlclient))
c009e934
JL
15156
15157(define-public python-hiredis
15158 (package
15159 (name "python-hiredis")
15160 (version "0.2.0")
15161 (source
15162 (origin
15163 (method url-fetch)
15164 (uri (pypi-uri "hiredis" version))
15165 (sha256
15166 (base32
15167 "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa"))))
15168 (build-system python-build-system)
15169 (arguments
15170 ;; no tests
15171 `(#:tests? #f))
15172 (home-page "https://github.com/redis/hiredis-py")
15173 (synopsis "Python extension that wraps protocol parsing code in hiredis")
15174 (description "Python-hiredis is a python extension that wraps protocol
15175parsing code in hiredis. It primarily speeds up parsing of multi bulk replies.")
15176 (license license:bsd-3)))
15177
15178(define-public python2-hiredis
15179 (package-with-python2 python-hiredis))
91154d4a
JL
15180
15181(define-public python-fakeredis
15182 (package
15183 (name "python-fakeredis")
15184 (version "0.8.2")
15185 (source
15186 (origin
15187 (method url-fetch)
15188 (uri (pypi-uri "fakeredis" version))
15189 (sha256
15190 (base32
15191 "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r"))))
15192 (build-system python-build-system)
15193 (arguments
15194 ;; no tests
15195 `(#:tests? #f))
15196 (home-page "https://github.com/jamesls/fakeredis")
15197 (synopsis "Fake implementation of redis API for testing purposes")
15198 (description "Fakeredis is a pure python implementation of the redis-py
15199python client that simulates talking to a redis server. This was created for a
15200single purpose: to write unittests. Setting up redis is not hard, but many time
15201 you want to write unittests that do not talk to an external server (such as
15202redis). This module now allows tests to simply use this module as a reasonable
15203substitute for redis.")
15204 (license license:bsd-3)))
15205
15206(define-public python2-fakeredis
15207 (package-with-python2 python-fakeredis))
d1693269
DM
15208
15209(define-public python-behave-web-api
15210 (package
15211 (name "python-behave-web-api")
15212 (version "1.0.6")
15213 (source
15214 (origin
15215 (method url-fetch)
15216 (uri (pypi-uri "behave-web-api" version))
15217 (sha256
15218 (base32
15219 "03kpq2xsy1gab3jy0dccbxlsg7vwfy4lagss0qldwmx3xz6b3i19"))))
15220 (build-system python-build-system)
15221 (arguments
15222 `(#:phases
15223 (modify-phases %standard-phases
15224 (add-after 'unpack 'fix-dependencies
15225 (lambda _
15226 (substitute* "setup.py"
15227 (("'wheel'") "") ; We don't use it.
15228 (("'ordereddict==1.1'") ""))))))) ; Python >= 2.7 has it built-in.
15229 (propagated-inputs
15230 `(("behave" ,behave)
15231 ("python-requests" ,python-requests)))
15232 (home-page "https://github.com/jefersondaniel/behave-web-api")
15233 (synopsis "Provides testing for JSON APIs with Behave for Python")
15234 (description "This package provides testing utility modules for testing
15235JSON APIs with Behave.")
15236 (license license:expat)))
15237
15238(define-public python2-behave-web-api
15239 (package-with-python2 python-behave-web-api))
75baf319
DM
15240
15241(define-public python-flask-script
15242 (package
15243 (name "python-flask-script")
15244 (version "2.0.5")
15245 (source
15246 (origin
15247 (method url-fetch)
15248 (uri (pypi-uri "Flask-Script" version))
15249 (sha256
15250 (base32
15251 "0zqh2yq8zk7m9b4xw1ryqmrljkdigfb3hk5155a3b5hkfnn6xxyf"))))
15252 (build-system python-build-system)
15253 (propagated-inputs
15254 `(("python-flask" ,python-flask)
15255 ("python-argcomplete" ,python-argcomplete)
15256 ("python-werkzeug" ,python-werkzeug)))
15257 (native-inputs
15258 `(("python-pytest" ,python-pytest)))
15259 (home-page
15260 "http://github.com/smurfix/flask-script")
15261 (synopsis "Scripting support for Flask")
15262 (description "The Flask-Script extension provides support for writing
15263external scripts in Flask. This includes running a development server,
15264a customised Python shell, scripts to set up your database, cronjobs,
15265and other command-line tasks that belong outside the web application
15266itself.")
15267 (license license:bsd-3)))
15268
15269(define-public python2-flask-script
15270 (package-with-python2 python-flask-script))
013e1e85
DM
15271
15272(define-public python-flask-migrate
15273 (package
15274 (name "python-flask-migrate")
15275 (version "2.0.3")
15276 (source
15277 (origin
15278 (method url-fetch)
15279 (uri (pypi-uri "Flask-Migrate" version))
15280 (sha256
15281 (base32
15282 "107x78lkqsnbg92dld3dkagg07jvchp3ib3y0sivc4ipz6n1y7rk"))))
15283 (build-system python-build-system)
15284 (propagated-inputs
15285 `(("python-flask" ,python-flask)
15286 ("python-alembic" ,python-alembic)
15287 ("python-sqlalchemy" ,python-sqlalchemy)
15288 ("python-flask-script" ,python-flask-script)
15289 ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
15290 (home-page "http://github.com/miguelgrinberg/flask-migrate/")
15291 (synopsis "SQLAlchemy database migrations for Flask programs using
15292Alembic")
15293 (description "This package contains SQLAlchemy database migration tools
15294for Flask programs that are using @code{python-alembic}.")
15295 (license license:expat)))
15296
15297(define-public python2-flask-migrate
15298 (package-with-python2 python-flask-migrate))
c0f5b802
LF
15299
15300(define-public python-packaging
15301 (package
15302 (name "python-packaging")
15303 (version "16.8")
15304 (source
15305 (origin
15306 (method url-fetch)
15307 (uri (pypi-uri "packaging" version))
15308 (sha256
15309 (base32
15310 "17k1xbjshackwvbsnxqixbph8rbqhz4bf4g3al5xyzhavxgq6l2x"))))
15311 (build-system python-build-system)
15312 (native-inputs
15313 `(("python-pretend" ,python-pretend)
15314 ("python-pytest" ,python-pytest)))
15315 (propagated-inputs
15316 `(("python-pyparsing" ,python-pyparsing)
15317 ("python-six" ,python-six)))
15318 (home-page "https://github.com/pypa/packaging")
15319 (synopsis "Core utilities for Python packages")
15320 (description "Packaging is a Python module for dealing with Python packages.
15321It offers an interface for working with package versions, names, and dependency
15322information.")
15323 ;; From 'LICENSE': This software is made available under the terms of
15324 ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD.
15325 ;; Contributions to this software is made under the terms of *both* these
15326 ;; licenses.
15327 (license (list license:asl2.0 license:bsd-2))))
15328
15329(define-public python2-packaging
15330 (package-with-python2 python-packaging))
ad2ef260
AP
15331
15332(define-public python-sql
15333 (package
15334 (name "python-sql")
15335 (version "0.9")
15336 (source
15337 (origin
15338 (method url-fetch)
15339 (uri (pypi-uri "python-sql" version))
15340 (sha256
15341 (base32
15342 "0p6kaqj02vz0habmdx37zjk6hjxdfm8aw737zs059vvpr70ird87"))))
15343 (build-system python-build-system)
15344 (home-page "https://python-sql.tryton.org/")
15345 (synopsis "Library to write SQL queries in a pythonic way")
15346 (description "@code{python-sql} is a library to write SQL queries, that
15347transforms idiomatic python function calls to well-formed SQL queries.")
15348 (license license:bsd-3)))
15349
15350(define-public python2-sql
15351 (package-with-python2 python-sql))
b208f71b
AP
15352
15353(define-public python-genshi
15354 (package
15355 (name "python-genshi")
15356 (version "0.7")
15357 (source
15358 (origin
15359 (method url-fetch)
15360 (uri (string-append
15361 "https://ftp.edgewall.org/pub/genshi/Genshi-"
15362 version ".tar.gz"))
15363 (patches
15364 (search-patches
15365 ;; The first 4 patches are in the master branch upstream.
15366 ;; See this as a reference https://genshi.edgewall.org/ticket/582
15367 ;; The last 2 are NOT in any branch.
15368 ;; They were sent as attachments to a ticket opened at
15369 ;; https://genshi.edgewall.org/ticket/602#no1
15370 "python-genshi-stripping-of-unsafe-script-tags.patch"
15371 "python-genshi-disable-speedups-on-python-3.3.patch"
15372 "python-genshi-isstring-helper.patch"
15373 "python-genshi-add-support-for-python-3.4-AST.patch"
15374 "python-genshi-fix-tests-on-python-3.5.patch"
15375 "python-genshi-buildable-on-python-2.7.patch"))
15376 (sha256
15377 (base32
15378 "0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
15379 (build-system python-build-system)
15380 (home-page "https://genshi.edgewall.org/")
15381 (synopsis "Toolkit for generation of output for the web")
15382 (description "Genshi is a Python library that provides an integrated set
15383of components for parsing, generating, and processing HTML, XML or other
15384textual content for output generation on the web.")
15385 (license license:bsd-3)))
15386
15387;; The linter here claims that patch file names should start with the package
15388;; name. But, in this case the patches are inherited from python-genshi with
15389;; the "python-genshi-" prefix instead of "python2-genshi-".
15390(define-public python2-genshi
15391 (package-with-python2 python-genshi))
ecca63b6
AP
15392
15393(define-public python-relatorio
15394 (package
15395 (name "python-relatorio")
15396 (version "0.6.4")
15397 (source
15398 (origin
15399 (method url-fetch)
15400 (uri (pypi-uri "relatorio" version))
15401 (sha256
15402 (base32
15403 "0lincq79mzgazwd9gh41dybjh9c3n87r83pl8nk3j79aihyfk84z"))))
15404 (build-system python-build-system)
15405 (propagated-inputs
15406 `(("python-lxml" ,python-lxml)
15407 ("python-genshi" ,python-genshi)))
15408 (home-page "https://relatorio.tryton.org/")
15409 (synopsis "Templating library able to output ODT and PDF files")
15410 (description "Relatorio is a templating library which provides a way to
15411easily output ODT, ODS, PNG, SVG and several other kinds of files. Support
15412for more filetypes can be easily added by creating plugins for them.")
15413 (license license:gpl3+)))
15414
15415(define-public python2-relatorio
15416 (package-with-python2 python-relatorio))
65e7d52a
MFM
15417
15418(define-public python-radon
15419 (package
15420 (name "python-radon")
15421 (version "1.5.0")
15422 (source
15423 (origin
15424 (method url-fetch)
15425 (uri (pypi-uri "radon" version))
15426 (sha256
15427 (base32
15428 "1h6jv36am0i827182a04ki6291lyx4kp957xfr5njgprj4nd0qsl"))))
15429 (build-system python-build-system)
15430 (propagated-inputs
15431 `(("python-colorama" ,python-colorama)
15432 ("python-flake8-polyfill" ,python-flake8-polyfill)
15433 ("python-mando" ,python-mando-0.3.1)))
15434 (native-inputs
15435 `(("python-flake8" ,python-flake8)
15436 ("python-tox" ,python-tox)
15437 ("python-pytest" ,python-pytest)
15438 ("python-paramunittest" ,python-paramunittest)))
15439 (home-page "https://radon.readthedocs.org/")
15440 (synopsis "Code Metrics in Python")
15441 (description "Radon is a Python tool which computes various code metrics.
15442Supported metrics are:
15443@itemize @bullet
15444@item raw metrics: SLOC, comment lines, blank lines, &c.
15445@item Cyclomatic Complexity (i.e. McCabe’s Complexity)
15446@item Halstead metrics (all of them)
15447@item the Maintainability Index (a Visual Studio metric)
15448@end itemize")
15449 (license license:expat)))
15450
15451(define-public python2-radon
15452 (package-with-python2 python-radon))
50d586f6
MFM
15453
15454(define-public python-sure
15455 (package
15456 (name "python-sure")
15457 (version "1.4.6")
15458 (source
15459 (origin
15460 (method url-fetch)
15461 (uri (pypi-uri "sure" version))
15462 (sha256
15463 (base32
15464 "1iyqsy2d6radi88g1qf0lziy5b39h5cpb3g5jiqyb4xi46ig3x1z"))))
15465 (build-system python-build-system)
15466 (propagated-inputs
15467 `(("python-mock" ,python-mock)
15468 ("python-six" ,python-six)))
15469 (native-inputs
15470 `(("python-nose" ,python-nose)))
15471 (home-page "https://github.com/gabrielfalcao/sure")
15472 (synopsis "Automated testing library in python for python")
15473 (description
15474 "Sure is a python library that leverages a DSL for writing assertions.
15475Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
15476 (license license:gpl3+)))
15477
15478(define-public python2-sure
15479 (package-with-python2 python-sure))
a0ffc701
MFM
15480
15481(define-public python2-couleur
15482 ;; This package does not seem to support python3 at all, hence,
15483 ;; only the python2 variant definition is provided.
15484 (package
15485 (name "python2-couleur")
15486 (version "0.6.2")
15487 (source
15488 (origin
15489 (method url-fetch)
15490 (uri (pypi-uri "couleur" version))
15491 (sha256
15492 (base32
15493 "1qqaxyqz74wvid0cr119dhcwz0h0if5b5by44zl49pd5z65v58k1"))))
15494 (build-system python-build-system)
15495 (arguments
15496 `(#:python ,python-2))
15497 (home-page "https://github.com/gabrielfalcao/couleur")
15498 (synopsis
15499 "ANSI terminal tool for python, colored shell and other handy fancy features")
15500 (description
15501 "@code{Couleur} provides python programs a way to use the ANSI features in a unix
15502terminal such as coloured output in the shell, overwriting output, indentation, etc.")
15503 ;; README.md says ASL2.0, but all source code headers are LGPL3+.
15504 ;; https://github.com/gabrielfalcao/couleur/issues/11
15505 (license license:lgpl3+)))
511b47de
MFM
15506
15507(define-public python-misaka
15508 (package
15509 (name "python-misaka")
15510 (version "2.1.0")
15511 (source
15512 (origin
15513 (method url-fetch)
15514 (uri (pypi-uri "misaka" version))
15515 (sha256
15516 (base32
15517 "1yqrq3a5rracirmvk52n28nn6ckdaz897gnigv89a9gmyn87sqw7"))))
15518 (build-system python-build-system)
15519 (arguments
15520 `(;; Line 37 of setup.py calls self.run_command('develop')
15521 ;; in the 'check' phase. This command seems to be trying
15522 ;; to write to
15523 ;; /gnu/store/...-python-<version>/lib/python<version>/site-packages/
15524 ;; for which it does not have the permission to write.
15525 #:tests? #f))
15526 (propagated-inputs
15527 `(("python-cffi" ,python-cffi)))
15528 (home-page "https://github.com/FSX/misaka")
15529 (synopsis "Python binding for Hoedown")
15530 (description
15531 "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing
15532library written in C. It features a fast HTML renderer and functionality to make custom
15533renderers (e.g. man pages or LaTeX).")
15534 (license license:expat)))
15535
15536(define-public python2-misaka
15537 (package-with-python2 python-misaka))
5786b47c
MFM
15538
15539(define-public python2-steadymark
15540 ;; This is forced into being a python2 only variant
15541 ;; due to its dependence on couleur that has no support
15542 ;; for python3
15543 (package
15544 (name "python2-steadymark")
15545 (version "0.7.3")
15546 (source
15547 (origin
15548 (method url-fetch)
15549 (uri (pypi-uri "steadymark" version))
15550 (sha256
15551 (base32
15552 "1640i9g8dycql3cc8j0bky0jkzj0q39blfbp4lsgpkprkfgcdk8v"))))
15553 (build-system python-build-system)
15554 (native-inputs
15555 `(("python-couleur" ,python2-couleur)
15556 ("python-sure" ,python2-sure)
15557 ("python-misaka" ,python2-misaka)))
15558 (arguments
15559 `(#:python ,python-2
15560 #:phases
15561 (modify-phases %standard-phases
15562 (add-before 'build 'patch-setup-py
15563 (lambda _
15564 ;; Update requirements from dependency==version
15565 ;; to dependency>=version
15566 (substitute* "setup.py"
15567 (("==") ">="))
15568 #t)))))
15569 (home-page "https://github.com/gabrielfalcao/steadymark")
15570 (synopsis "Markdown-based test runner for python")
15571 (description
15572 "@code{Steadymark} allows documentation to be written in github-flavoured
15573markdown. The documentation may contain snippets of code surrounded by python
15574code blocks and @code{Steadymark} will find these snippets and run them, making
15575sure that there are no old malfunctional examples in the documentation examples.")
15576 (license license:expat)))
7e488f99
MFM
15577
15578(define-public python-nose-randomly
15579 (package
15580 (name "python-nose-randomly")
15581 (version "1.2.5")
15582 (source
15583 (origin
15584 (method url-fetch)
15585 (uri (pypi-uri "nose-randomly" version))
15586 (sha256
15587 (base32
15588 "1cw9dlr1zh3w4i438kin7z0rm8092ki52hayisyc43h9pcplq7rn"))))
15589 (build-system python-build-system)
15590 (native-inputs
15591 `(("python-nose" ,python-nose)
15592 ("python-numpy" ,python-numpy)))
15593 (home-page "https://github.com/adamchainz/nose-randomly")
15594 (synopsis
15595 "Nose plugin to randomly order tests and control random.seed")
15596 (description
15597 "This is a @code{Nose} plugin to randomly order tests which can be quite
15598powerful in discovering hidden flaws in the tests themselves, while helping to
15599reduce inter-test dependencies. It also helps in controlling @code{random.seed},
15600by resetting it to a repeatable number for each test, enabling the tests to
15601create data based on random numbers and yet remain repeatable.")
15602 (license license:bsd-3)))
15603
15604(define-public python2-nose-randomly
15605 (package-with-python2 python-nose-randomly))
1e92287d
DM
15606
15607(define-public python-jsonpointer
15608 (package
15609 (name "python-jsonpointer")
15610 (version "1.10")
15611 (source
15612 (origin
15613 (method url-fetch)
15614 (uri (pypi-uri "jsonpointer" version))
15615 (sha256
15616 (base32
15617 "1cg0gvgqjysydv6p45v4jywg1jb3v48c7m3cbpi57zgf6nndr9cz"))))
15618 (build-system python-build-system)
15619 (home-page "https://github.com/stefankoegl/python-json-pointer")
15620 (synopsis "Identify specific nodes in a JSON document")
15621 (description "@code{jsonpointer} allows you to access specific nodes
15622by path in a JSON document (see RFC 6901).")
15623 (license license:bsd-3)))
15624
15625(define-public python2-jsonpointer
15626 (package-with-python2 python-jsonpointer))
7d88093f 15627
841e5908
OP
15628(define-public python-jsonpatch
15629 (package
15630 (name "python-jsonpatch")
15631 (version "1.16")
15632 (source
15633 (origin
15634 (method url-fetch)
15635 ;; pypi version lacks tests.js
15636 (uri (string-append "https://github.com/stefankoegl/python-json-patch/"
15637 "archive/v" version ".tar.gz"))
15638 (file-name (string-append name "-" version ".tar.gz"))
15639 (sha256
15640 (base32
15641 "085ykisl8v7mv9h7hvhdy3l2fjzs4214gx32r5k6nx4f76hbv6y5"))))
15642 (build-system python-build-system)
15643 (native-inputs
15644 `(("python-jsonpointer" ,python-jsonpointer)))
15645 (home-page "https://github.com/stefankoegl/python-json-patch")
15646 (synopsis "Applying JSON Patches in Python 2.6+ and 3.x")
15647 (description "@code{jsonpatch} is a library and program that allows
15648applying JSON Patches according to RFC 6902.")
15649 (license license:bsd-3)))
15650
15651(define-public python2-jsonpatch
15652 (package-with-python2 python-jsonpatch))
15653
15654(define-public python-jsonpatch-0.4
15655 (package (inherit python-jsonpatch)
15656 (name "python-jsonpatch")
15657 (version "0.4")
15658 (source
15659 (origin
15660 (method url-fetch)
15661 (uri (string-append "https://github.com/stefankoegl/python-json-patch/"
15662 "archive/v" version ".tar.gz"))
15663 (file-name (string-append name "-" version ".tar.gz"))
15664 (sha256
15665 (base32
15666 "0j0cd9z9zyp8kppp464jxrfgrnbgkzl1yi10i5gsv8yz6d95929d"))))))
15667
15668(define-public python2-jsonpatch-0.4
15669 (package-with-python2 python-jsonpatch-0.4))
15670
7d88093f
DM
15671(define-public python-rfc3987
15672 (package
15673 (name "python-rfc3987")
15674 (version "1.3.7")
15675 (source
15676 (origin
15677 (method url-fetch)
15678 (uri (pypi-uri "rfc3987" version))
15679 (sha256
15680 (base32
15681 "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi"))))
15682 (build-system python-build-system)
15683 (home-page "http://pypi.python.org/pypi/rfc3987")
15684 (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)")
15685 (description "@code{rfc3987} provides routines for parsing and
15686validation of URIs (see RFC 3986) and IRIs (see RFC 3987).")
15687 (license license:gpl3+)))
15688
15689(define-public python2-rfc3987
15690 (package-with-python2 python-rfc3987))
0960bf8b
DM
15691
15692(define-public python-validate-email
15693 (package
15694 (name "python-validate-email")
15695 (version "1.3")
15696 (source
15697 (origin
15698 (method url-fetch)
15699 (uri (pypi-uri "validate_email" version))
15700 (sha256
15701 (base32
15702 "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq"))))
15703 (build-system python-build-system)
15704 (home-page "http://github.com/syrusakbary/validate_email")
15705 (synopsis "Verifies if an email address is valid and really exists")
15706 (description "@code{validate_email} can be used to verify if an email
15707address is valid and really exists.")
15708 (license license:lgpl3+)))
15709
15710(define-public python2-validate-email
15711 (package-with-python2 python-validate-email))
620b59ea
DM
15712
15713(define-public python-flex
15714 (package
15715 (name "python-flex")
15716 (version "6.10.0")
15717 (source
15718 (origin
15719 (method url-fetch)
15720 (uri (pypi-uri "flex" version))
15721 (sha256
15722 (base32
15723 "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk"))))
15724 (build-system python-build-system)
15725 (propagated-inputs
15726 `(("python-click" ,python-click)
15727 ("python-iso8601" ,python-iso8601)
15728 ("python-jsonpointer" ,python-jsonpointer)
15729 ("python-pyyaml" ,python-pyyaml)
15730 ("python-requests" ,python-requests)
15731 ("python-rfc3987" ,python-rfc3987)
15732 ("python-six" ,python-six)
15733 ("python-validate-email" ,python-validate-email)))
15734 (home-page "https://github.com/pipermerriam/flex")
15735 (synopsis "Validates Swagger schemata")
15736 (description "@code{flex} can be used to validate Swagger schemata.")
15737 (license license:bsd-3)))
15738
15739(define-public python2-flex
15740 (package-with-python2 python-flex))
235bc01b
DM
15741
15742(define-public python-marshmallow
15743 (package
15744 (name "python-marshmallow")
58f3d459 15745 (version "3.0.0b3")
235bc01b
DM
15746 (source
15747 (origin
15748 (method url-fetch)
15749 (uri (pypi-uri "marshmallow" version))
15750 (sha256
15751 (base32
58f3d459 15752 "07mcrij1yvk85lvgx44wwr9pc80xryghvlgayb057g1cazcypysd"))))
235bc01b
DM
15753 (build-system python-build-system)
15754 (propagated-inputs
15755 `(("python-dateutil" ,python-dateutil)
15756 ("python-simplejson" ,python-simplejson)))
15757 (native-inputs
15758 `(("python-pytest-3.0" ,python-pytest-3.0)
15759 ("python-pytz" ,python-pytz)))
15760 (home-page "https://github.com/marshmallow-code/marshmallow")
15761 (synopsis "Convert complex datatypes to and from native
15762Python datatypes.")
15763 (description "@code{marshmallow} provides a library for converting
15764complex datatypes to and from native Python datatypes.")
15765 (license license:expat)))
15766
15767(define-public python2-marshmallow
15768 (package-with-python2 python-marshmallow))
d270df8d
DM
15769
15770(define-public python-bottle
15771 (package
15772 (name "python-bottle")
15773 (version "0.12.13")
15774 (source
15775 (origin
15776 (method url-fetch)
15777 (uri (pypi-uri "bottle" version))
15778 (sha256
15779 (base32
15780 "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr"))))
15781 (build-system python-build-system)
15782 (home-page "http://bottlepy.org/")
15783 (synopsis "WSGI framework for small web-applications.")
15784 (description "@code{python-bottle} is a WSGI framework for small web-applications.")
15785 (license license:expat)))
15786
15787(define-public python2-bottle
15788 (package-with-python2 python-bottle))
635b3636
DM
15789
15790(define-public python-apispec
15791 (package
15792 (name "python-apispec")
15793 (version "0.22.0")
15794 (source
15795 (origin
15796 (method url-fetch)
15797 (uri (pypi-uri "apispec" version))
15798 (sha256
15799 (base32
15800 "0y3jxmgp2d24am3hxl40f5rw9abb0r8037sagax3dv64h4n1azwq"))))
15801 (build-system python-build-system)
15802 (propagated-inputs
15803 `(("python-pyyaml" ,python-pyyaml)))
15804 (native-inputs
15805 `(("python-pytest-3.0" ,python-pytest-3.0)
15806 ("python-flask" ,python-flask)
15807 ("python-marshmallow" ,python-marshmallow)
15808 ("python-tornado" ,python-tornado)
15809 ("python-bottle" ,python-bottle)
15810 ("python-mock" ,python-mock)))
15811 (home-page "https://github.com/marshmallow-code/apispec")
15812 (synopsis "Swagger 2.0 API specification generator")
15813 (description "@code{python-apispec} is a pluggable API specification
15814generator. Currently supports the OpenAPI specification (f.k.a.
15815Swagger 2.0).")
15816 (license license:expat)))
15817
15818(define-public python2-apispec
15819 (package-with-python2 python-apispec))
543c5f3f
DM
15820
15821(define-public python-flasgger
15822 (package
15823 (name "python-flasgger")
15824 (version "0.6.3")
15825 (source
15826 (origin
15827 (method url-fetch)
15828 (uri (string-append "https://github.com/rochacbruno/flasgger/archive/"
15829 version ".tar.gz"))
15830 (file-name (string-append name "-" version ".tar.gz"))
15831 (sha256
15832 (base32
15833 "1gqzlm0rb55fdpsy5ipkganlx9cnpi454fqyycr03jm22zql14ay"))))
15834 (build-system python-build-system)
15835 (arguments
15836 `(#:phases
15837 (modify-phases %standard-phases
15838 (replace 'check
15839 (lambda* (#:key inputs outputs #:allow-other-keys)
15840 (substitute* "Makefile"
15841 (("flake8 flasgger --ignore=F403")
15842 "flake8 flasgger --ignore=E731,F403"))
15843 (setenv "PYTHONPATH" (string-append (getcwd)
15844 ":"
15845 (getenv "PYTHONPATH")))
15846 (zero? (system* "py.test")))))))
15847 (propagated-inputs
15848 `(("python-flask" ,python-flask)
15849 ("python-pyyaml" ,python-pyyaml)
15850 ("python-jsonschema" ,python-jsonschema)
15851 ("python-mistune" ,python-mistune)
15852 ("python-six" ,python-six)))
15853 (native-inputs
15854 `(("python-decorator" ,python-decorator)
15855 ("python-flake8" ,python-flake8)
15856 ("python-flask-restful" ,python-flask-restful)
15857 ("python-flex" ,python-flex)
15858 ("python-pytest-3.0" ,python-pytest-3.0)
15859 ("python-pytest-cov" ,python-pytest-cov)
15860 ("python-marshmallow" ,python-marshmallow)
15861 ("python-apispec" ,python-apispec)))
15862 (home-page "https://github.com/rochacbruno/flasgger/")
15863 (synopsis "Extract Swagger specs from your Flask project")
15864 (description "@code{python-flasgger} allows extracting Swagger specs
15865from your Flask project. It is a fork of Flask-Swagger.")
15866 (license license:expat)))
15867
15868(define-public python2-flasgger
15869 (package-with-python2 python-flasgger))
4eadc8b9
DM
15870
15871(define-public python-swagger-spec-validator
15872 (package
15873 (name "python-swagger-spec-validator")
15874 (version "2.1.0")
15875 (source
15876 (origin
15877 (method url-fetch)
15878 (uri (pypi-uri "swagger-spec-validator" version))
15879 (sha256
15880 (base32
15881 "13hkpn2lycwr0468yqhjb3kwszqf7hjwlq61w7vdxq1caz31k4nw"))))
15882 (build-system python-build-system)
15883 (propagated-inputs
15884 `(("python-jsonschema" ,python-jsonschema)
15885 ("python-six" ,python-six)))
15886 (home-page
15887 "http://github.com/Yelp/swagger_spec_validator")
15888 (synopsis "Validation of Swagger specifications")
15889 (description "@code{swagger_spec_validator} provides a library for
15890validating Swagger API specifications.")
15891 (license license:asl2.0)))
15892
15893(define-public python2-swagger-spec-validator
15894 (package-with-python2 python-swagger-spec-validator))
7ea498e5
DM
15895
15896(define-public python-apache-libcloud
15897 (package
15898 (name "python-apache-libcloud")
15899 (version "2.0.0")
15900 (source
15901 (origin
15902 (method url-fetch)
15903 (uri (pypi-uri "apache-libcloud" version))
15904 (sha256
15905 (base32
15906 "1a71z02ckcxld72k4qgmdnkjan52c4wczncs3p2mp5yafh7dsan7"))))
15907 (build-system python-build-system)
15908 (arguments
15909 `(#:phases
15910 (modify-phases %standard-phases
15911 (add-after 'unpack 'patch-ssh
15912 (lambda* (#:key inputs #:allow-other-keys)
15913 (substitute* "libcloud/compute/ssh.py"
15914 (("'ssh'") (string-append "'" (assoc-ref inputs "openssh")
15915 "/bin/ssh" "'")))
15916 #t))
15917 (add-after 'unpack 'patch-tests
15918 (lambda _
15919 (substitute* "./libcloud/test/test_file_fixtures.py"
15920 ;; See <https://issues.apache.org/jira/browse/LIBCLOUD-923>.
15921 (("def _ascii") "def _raw_data(self, method, url, body, headers):
15922 return (httplib.OK,
15923 \"1234abcd\",
15924 {\"test\": \"value\"},
15925 httplib.responses[httplib.OK])
15926 def _ascii"))
15927 (substitute* "libcloud/test/compute/test_ssh_client.py"
15928 (("class ShellOutSSHClientTests")
15929 "@unittest.skip(\"Guix container doesn't have ssh service\")
15930class ShellOutSSHClientTests")
15931 ;; See <https://issues.apache.org/jira/browse/LIBCLOUD-924>.
15932 (("'.xf0.x90.x8d.x88'") "b'\\xF0\\x90\\x8D\\x88'")
15933 (("'.xF0', '.x90', '.x8D', '.x88'")
15934 "b'\\xF0', b'\\x90', b'\\x8D', b'\\x88'"))
15935 #t)))))
15936 (inputs
15937 `(("openssh" ,openssh)))
15938 (propagated-inputs
15939 `(("python-paramiko" ,python-paramiko)
15940 ("python-requests" ,python-requests)))
15941 (native-inputs
15942 `(("python-lockfile" ,python-lockfile)
15943 ("python-mock" ,python-mock)
15944 ("python-requests-mock" ,python-requests-mock)))
15945 (home-page "https://libcloud.apache.org/")
15946 (synopsis "Unified Cloud API")
15947 (description "@code{libcloud} is a Python library for interacting with
15948many of the popular cloud service providers using a unified API.")
15949 (license license:asl2.0)))
15950
15951(define-public python2-apache-libcloud
15952 (package-with-python2 python-apache-libcloud))
7fadeab4
DM
15953
15954(define-public python-smmap2
15955 (package
15956 (name "python-smmap2")
15957 (version "2.0.3")
15958 (source
15959 (origin
15960 (method url-fetch)
15961 (uri (pypi-uri "smmap2" version))
15962 (sha256
15963 (base32
15964 "1hvn28p3zvxa98sbi9lrqvv2ps4q284j4jq9a619zw0m7yv0sly7"))))
15965 (build-system python-build-system)
15966 (native-inputs
15967 `(("python-nosexcover" ,python-nosexcover)))
15968 (home-page "https://github.com/Byron/smmap")
15969 (synopsis "Python sliding window memory map manager")
15970 (description "@code{smmap2} is a pure Python implementation of a sliding
15971window memory map manager.")
15972 (license license:bsd-3)))
15973
15974(define-public python2-smmap2
15975 (package-with-python2 python-smmap2))
fa3f5f47
RJ
15976
15977(define-public python-regex
15978 (package
15979 (name "python-regex")
15980 (version "2017.06.07")
15981 (source (origin
15982 (method url-fetch)
15983 (uri (pypi-uri "regex" version))
15984 (sha256
15985 (base32
15986 "06r6b7yigikbj3a72whl85r2b64pj1r0ypmw9yalmkm0wnxq8mz4"))))
15987 (build-system python-build-system)
15988 (home-page "https://bitbucket.org/mrabarnett/mrab-regex")
15989 (synopsis "Alternative regular expression module")
15990 (description "This regular expression implementation is backwards-
15991compatible with the standard @code{re} module, but offers additional
15992functionality like full case-folding for case-insensitive matches in Unicode.")
15993 (license license:psfl)))
15994
15995(define-public python2-regex
15996 (package-with-python2 python-regex))
f817b4d9
RH
15997
15998(define-public python2-pyopengl
15999 (package
16000 (name "python2-pyopengl")
16001 (version "3.1.0")
16002 (source
16003 (origin
16004 (method url-fetch)
16005 (uri (pypi-uri "PyOpenGL" version))
16006 (sha256
16007 (base32
16008 "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
16009 (arguments
16010 `(#:python ,python-2))
16011 (build-system python-build-system)
16012 (home-page "http://pyopengl.sourceforge.net")
16013 (synopsis "Standard OpenGL bindings for Python")
16014 (description
16015 "PyOpenGL is the most common cross platform Python binding to OpenGL and
16016related APIs. The binding is created using the standard @code{ctypes}
16017library.")
16018 (license license:bsd-3)))
7efd98be
RH
16019
16020(define-public python-rencode
16021 (package
16022 (name "python-rencode")
16023 (version "1.0.3")
16024 (source
16025 (origin
16026 (method url-fetch)
16027 (uri (pypi-uri "rencode" version))
16028 (sha256
16029 (base32
16030 "08if5yax1xn5yfp8p3765ccjmfcv9di7i4m5jckgnwvdsgznwkbj"))))
16031 (build-system python-build-system)
16032 (native-inputs `(("pkg-config" ,pkg-config)
16033 ("python-cython", python-cython)))
16034 (home-page "https://github.com/aresch/rencode")
16035 (synopsis "Serialization of heterogeneous data structures")
16036 (description
16037 "The @code{rencode} module is a data structure serialization library,
16038similar to @code{bencode} from the BitTorrent project. For complex,
16039heterogeneous data structures with many small elements, r-encoding stake up
16040significantly less space than b-encodings. This version of rencode is a
16041complete rewrite in Cython to attempt to increase the performance over the
16042pure Python module.")
16043 (license license:bsd-3)))
16044
16045(define-public python2-rencode
16046 (package-with-python2 python-rencode))
9ea61b1c
DM
16047
16048(define-public python-flask-principal
16049 (package
16050 (name "python-flask-principal")
16051 (version "0.4.0")
16052 (source
16053 (origin
16054 (method url-fetch)
16055 (uri (pypi-uri "Flask-Principal" version))
16056 (sha256
16057 (base32
16058 "0lwlr5smz8vfm5h9a9i7da3q1c24xqc6vm9jdywdpgxfbi5i7mpm"))))
16059 (build-system python-build-system)
16060 (propagated-inputs
16061 `(("python-blinker" ,python-blinker)))
16062 (native-inputs
16063 `(("python-flask" ,python-flask)
16064 ("python-nose" ,python-nose)))
16065 (home-page "http://packages.python.org/Flask-Principal/")
16066 (synopsis "Identity management for Flask")
16067 (description "@code{flask_principal} is a identity management library for
16068Flask. It supports managing both authentication and authorization data in a
16069thread-local variable.")
16070 (license license:expat)))
16071
16072(define-public python2-flask-principal
16073 (package-with-python2 python-flask-principal))
18c6a7b4
DM
16074
16075(define-public python-flask-httpauth
16076 (package
16077 (name "python-flask-httpauth")
16078 (version "3.2.3")
16079 (source
16080 (origin
16081 (method url-fetch)
16082 (uri (pypi-uri "Flask-HTTPAuth" version))
16083 (sha256
16084 (base32
16085 "13gff5w1mqpzm5nccyg02v3ifb9ifqh5k866cssjhghhg6msfjsz"))))
16086 (build-system python-build-system)
16087 (native-inputs
16088 `(("python-flask" ,python-flask)))
16089 (home-page "http://github.com/miguelgrinberg/flask-httpauth/")
16090 (synopsis "Basic and Digest HTTP authentication for Flask routes")
16091 (description "@code{flask_httpauth} provides Basic and Digest HTTP
16092authentication for Flask routes.")
16093 (license license:expat)))
16094
16095(define-public python2-flask-httpauth
16096 (package-with-python2 python-flask-httpauth))
07e62ae1
CZ
16097
16098(define-public python-pysocks
16099 (package
16100 (name "python-pysocks")
16101 (version "1.6.7")
16102 (source
16103 (origin
16104 (method url-fetch)
16105 (uri (pypi-uri "PySocks" version))
16106 (sha256
16107 (base32
16108 "1krkiss578zqwcg4c8iqz1hwscwhsvy2djp3xyvps5gsgvr2j0yh"))))
16109 (build-system python-build-system)
16110 (arguments `(#:tests? #f))
16111 (home-page "https://github.com/Anorov/PySocks")
16112 (synopsis "SOCKS client module")
16113 (description "@code{pysocks} is an updated and semi-actively maintained
16114version of @code{SocksiPy} with bug fixes and extra features.")
16115 (license license:bsd-3)))
16116
16117(define-public python2-pysocks
16118 (package-with-python2 python-pysocks))
7a276cd9
CZ
16119
16120(define-public python-pyaes
16121 (package
16122 (name "python-pyaes")
16123 (version "1.6.0")
16124 (source
16125 (origin
16126 (method url-fetch)
16127 (uri (pypi-uri "pyaes" version))
16128 (sha256
16129 (base32
16130 "0bp9bjqy1n6ij1zb86wz9lqa1dhla8qr1d7w2kxyn7jbj56sbmcw"))))
16131 (build-system python-build-system)
16132 (home-page "https://github.com/ricmoo/pyaes")
16133 (synopsis "Implementation of AES in Python")
16134 (description "This package contains a pure-Python implementation of the
16135AES block cipher algorithm and the common modes of operation (CBC, CFB, CTR,
16136ECB and OFB).")
16137 (license license:expat)))
16138
16139(define-public python2-pyaes
16140 (package-with-python2 python-pyaes))