gnu: r-rmarkdown: Remove phase "copy-files-without-mode".
[jackhill/guix/guix.git] / gnu / packages / python.scm
CommitLineData
a01b6da7
NK
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
48b311b1 3;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
8e451885 4;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
e99f4211 5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
a480bc41 6;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
da6ce3f1 7;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
e99f4211 8;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
d95a56c6 9;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
534db463 10;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
0bdc1671 11;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
345f0611 12;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
2b2f2fc1 13;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
6a44697d 14;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
02a8a187 15;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
b9893908 16;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
264ae686 17;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
1872f1bb 18;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
daeeea71 19;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
b31fbea5 20;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
88bb4197 21;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
b8fdbca3 22;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
0de78c95 23;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
9250b0f3 24;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
47d0b292 25;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
42c4b246 26;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
6eb7af2a 27;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
3f641af0 28;;; Copyright © 2016 David Craven <david@craven.ch>
dddcb25c 29;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
4efb9c54 30;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at>
b04a52a6 31;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
ee5fb7ee 32;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
2f6dd9cd 33;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
a01b6da7
NK
34;;;
35;;; This file is part of GNU Guix.
36;;;
37;;; GNU Guix is free software; you can redistribute it and/or modify it
38;;; under the terms of the GNU General Public License as published by
39;;; the Free Software Foundation; either version 3 of the License, or (at
40;;; your option) any later version.
41;;;
42;;; GNU Guix is distributed in the hope that it will be useful, but
43;;; WITHOUT ANY WARRANTY; without even the implied warranty of
44;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45;;; GNU General Public License for more details.
46;;;
47;;; You should have received a copy of the GNU General Public License
48;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
49
1ffa7090 50(define-module (gnu packages python)
3f641af0 51 #:use-module ((guix licenses) #:prefix license:)
3fdc99da 52 #:use-module (gnu packages)
8e451885 53 #:use-module (gnu packages algebra)
d79a343b 54 #:use-module (gnu packages adns)
89b2e0b0 55 #:use-module (gnu packages attr)
d96034ed 56 #:use-module (gnu packages backup)
1ffa7090 57 #:use-module (gnu packages compression)
4ed20663 58 #:use-module (gnu packages databases)
ddc63a56 59 #:use-module (gnu packages django)
5e1c9367 60 #:use-module (gnu packages file)
4ed20663 61 #:use-module (gnu packages fontutils)
4ed20663
AE
62 #:use-module (gnu packages gcc)
63 #:use-module (gnu packages ghostscript)
6eb7af2a 64 #:use-module (gnu packages gl)
4ed20663 65 #:use-module (gnu packages glib)
6eb7af2a 66 #:use-module (gnu packages gstreamer)
4ed20663 67 #:use-module (gnu packages gtk)
421a80a2 68 #:use-module (gnu packages icu4c)
c937562e 69 #:use-module (gnu packages image)
4ed20663 70 #:use-module (gnu packages imagemagick)
d79a343b 71 #:use-module (gnu packages libevent)
b10ab723 72 #:use-module (gnu packages libffi)
89b2e0b0 73 #:use-module (gnu packages linux)
0da98533 74 #:use-module (gnu packages maths)
4ed20663 75 #:use-module (gnu packages multiprecision)
45203542 76 #:use-module (gnu packages networking)
be7134bf 77 #:use-module (gnu packages ncurses)
b04a52a6 78 #:use-module (gnu packages openstack)
d488d5d6 79 #:use-module (gnu packages password-utils)
c9b1b4f9 80 #:use-module (gnu packages pcre)
4ed20663 81 #:use-module (gnu packages perl)
b10ab723 82 #:use-module (gnu packages pkg-config)
06ff0837 83 #:use-module (gnu packages protobuf)
4ed20663 84 #:use-module (gnu packages readline)
6eb7af2a 85 #:use-module (gnu packages sdl)
c9b1b4f9 86 #:use-module (gnu packages statistics)
8f9ac901 87 #:use-module (gnu packages tex)
1c65314c 88 #:use-module (gnu packages texinfo)
cc2b77df 89 #:use-module (gnu packages tls)
e25f0174 90 #:use-module (gnu packages version-control)
02f8f804 91 #:use-module (gnu packages video)
8d12be1e 92 #:use-module (gnu packages web)
ce0614dd 93 #:use-module (gnu packages base)
26b307e2 94 #:use-module (gnu packages xml)
6fa14469 95 #:use-module (gnu packages xorg)
0bdc1671 96 #:use-module (gnu packages xdisorg)
4ed20663 97 #:use-module (gnu packages zip)
afa181ff 98 #:use-module (gnu packages tcl)
63bcec71 99 #:use-module (gnu packages bdw-gc)
a01b6da7
NK
100 #:use-module (guix packages)
101 #:use-module (guix download)
ea5456c8 102 #:use-module (guix git-download)
11bb85a1 103 #:use-module (guix utils)
acc26ff1 104 #:use-module (guix build-system gnu)
d8c4998f 105 #:use-module (guix build-system cmake)
898238b9 106 #:use-module (guix build-system python)
1c65314c
FB
107 #:use-module (guix build-system trivial)
108 #:use-module (srfi srfi-1))
a01b6da7 109
45848023 110(define-public python-2.7
a01b6da7
NK
111 (package
112 (name "python")
e7e7a1eb 113 (version "2.7.11")
a01b6da7
NK
114 (source
115 (origin
116 (method url-fetch)
9b43a0ff 117 (uri (string-append "https://www.python.org/ftp/python/"
a01b6da7
NK
118 version "/Python-" version ".tar.xz"))
119 (sha256
120 (base32
e7e7a1eb 121 "0iiz844riiznsyhhyy962710pz228gmhv8qi3yk4w4jhmx2lqawn"))
c3052d6b
ML
122 (patches (search-patches "python-2.7-search-paths.patch"
123 "python-2-deterministic-build-info.patch"
124 "python-2.7-source-date-epoch.patch"))
10a42aa2
EF
125 (modules '((guix build utils)))
126 ;; suboptimal to delete failing tests here, but if we delete them in the
127 ;; arguments then we need to make sure to strip out that phase when it
128 ;; gets inherited by python and python-minimal.
129 (snippet
130 '(begin
131 (for-each delete-file
132 '("Lib/test/test_compileall.py"
133 "Lib/test/test_distutils.py"
134 "Lib/test/test_import.py"
135 "Lib/test/test_shutil.py"
136 "Lib/test/test_socket.py"
1bb163b0 137 "Lib/test/test_subprocess.py"))
10a42aa2 138 #t))))
02f0c3b2
LC
139 (outputs '("out"
140 "tk")) ;tkinter; adds 50 MiB to the closure
a01b6da7 141 (build-system gnu-build-system)
3fdc99da 142 (arguments
10a42aa2 143 `(;; 356 tests OK.
e7e7a1eb
EF
144 ;; 6 tests failed:
145 ;; test_compileall test_distutils test_import test_shutil test_socket
146 ;; test_subprocess
147 ;; 39 tests skipped:
ff6f33cf
ED
148 ;; test_aepack test_al test_applesingle test_bsddb test_bsddb185
149 ;; test_bsddb3 test_cd test_cl test_codecmaps_cn test_codecmaps_hk
e7e7a1eb
EF
150 ;; test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_curses
151 ;; test_dl test_gdb test_gl test_imageop test_imgfile test_ioctl
152 ;; test_kqueue test_linuxaudiodev test_macos test_macostools
153 ;; test_msilib test_ossaudiodev test_scriptpackages test_smtpnet
154 ;; test_socketserver test_startfile test_sunaudiodev test_timeout
155 ;; test_tk test_ttk_guionly test_urllib2net test_urllibnet
156 ;; test_winreg test_winsound test_zipfile64
157 ;; 4 skips unexpected on linux2:
158 ;; test_bsddb test_bsddb3 test_gdb test_ioctl
af807dea 159 #:test-target "test"
3fdc99da 160 #:configure-flags
6a20289d
LC
161 (list "--enable-shared" ;allow embedding
162 "--with-system-ffi" ;build ctypes
163 (string-append "LDFLAGS=-Wl,-rpath="
164 (assoc-ref %outputs "out") "/lib"))
fd982732 165
d2cc9c7c
LC
166 #:modules ((ice-9 ftw) (ice-9 match)
167 (guix build utils) (guix build gnu-build-system))
fd982732 168 #:phases
46472ecd
MW
169 (modify-phases %standard-phases
170 (add-before
171 'configure 'patch-lib-shells
172 (lambda _
173 ;; Filter for existing files, since some may not exist in all
174 ;; versions of python that are built with this recipe.
175 (substitute* (filter file-exists?
176 '("Lib/subprocess.py"
177 "Lib/popen2.py"
178 "Lib/distutils/tests/test_spawn.py"
179 "Lib/test/test_subprocess.py"))
180 (("/bin/sh") (which "sh")))
dedc8320
LC
181
182 ;; Use zero as the timestamp in .pyc files so that builds are
183 ;; deterministic. TODO: Remove it when this variable is set in
184 ;; gnu-build-system.scm.
a665996f 185 (setenv "SOURCE_DATE_EPOCH" "1")
46472ecd 186 #t))
5b4e2791
LC
187 (add-before 'configure 'do-not-record-configure-flags
188 (lambda* (#:key configure-flags #:allow-other-keys)
189 ;; Remove configure flags from the installed '_sysconfigdata.py'
190 ;; and 'Makefile' so we don't end up keeping references to the
191 ;; build tools.
192 ;;
193 ;; Preserve at least '--with-system-ffi' since otherwise the
194 ;; thing tries to build libffi, fails, and we end up with a
195 ;; Python that lacks ctypes.
196 (substitute* "configure"
197 (("^CONFIG_ARGS=.*$")
198 (format #f "CONFIG_ARGS='~a'\n"
199 (if (member "--with-system-ffi" configure-flags)
200 "--with-system-ffi"
201 ""))))
202 #t))
46472ecd
MW
203 (add-before
204 'check 'pre-check
205 (lambda _
206 ;; 'Lib/test/test_site.py' needs a valid $HOME
207 (setenv "HOME" (getcwd))
1bb163b0
LC
208 ,@(if (string-prefix? "mips64el" (%current-system))
209
210 ;; XXX: The following test fails on mips64el.
211 '((false-if-exception
212 (delete-file "Lib/test/test_ctypes.py")))
213
214 '())
46472ecd
MW
215 #t))
216 (add-after
217 'unpack 'set-source-file-times-to-1980
218 ;; XXX One of the tests uses a ZIP library to pack up some of the
219 ;; source tree, and fails with "ZIP does not support timestamps
220 ;; before 1980". Work around this by setting the file times in the
221 ;; source tree to sometime in early 1980.
222 (lambda _
223 (let ((circa-1980 (* 10 366 24 60 60)))
224 (ftw "." (lambda (file stat flag)
225 (utime file circa-1980 circa-1980)
226 #t))
02f0c3b2 227 #t)))
9ffe61b0
LC
228 (add-after 'install 'remove-tests
229 ;; Remove 25 MiB of unneeded unit tests. Keep test_support.*
230 ;; because these files are used by some libraries out there.
231 (lambda* (#:key outputs #:allow-other-keys)
232 (let ((out (assoc-ref outputs "out")))
233 (match (scandir (string-append out "/lib")
234 (lambda (name)
235 (string-prefix? "python" name)))
236 ((pythonX.Y)
237 (let ((testdir (string-append out "/lib/" pythonX.Y
238 "/test")))
239 (with-directory-excursion testdir
240 (for-each delete-file-recursively
241 (scandir testdir
242 (match-lambda
243 ((or "." "..") #f)
244 (file
245 (not
246 (string-prefix? "test_support."
247 file))))))
248 (call-with-output-file "__init__.py" (const #t))
249 #t)))))))
216c283b
LC
250 (add-before 'strip 'make-libraries-writable
251 (lambda* (#:key outputs #:allow-other-keys)
252 ;; Make .so files writable so they can be stripped.
253 (let ((out (assoc-ref outputs "out")))
254 (for-each (lambda (file)
255 (chmod file #o755))
256 (find-files (string-append out "/lib")
257 "\\.so"))
258 #t)))
02f0c3b2
LC
259 (add-after 'install 'move-tk-inter
260 (lambda* (#:key outputs #:allow-other-keys)
261 ;; When Tkinter support is built move it to a separate output so
262 ;; that the main output doesn't contain a reference to Tcl/Tk.
263 (let ((out (assoc-ref outputs "out"))
264 (tk (assoc-ref outputs "tk")))
265 (when tk
266 (match (find-files out "tkinter.*\\.so")
267 ((tkinter.so)
268 ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
269 ;; want it under TK/lib/pythonX.Y/site-packages.
270 (let* ((len (string-length out))
271 (target (string-append
272 tk "/"
273 (string-drop
274 (dirname (dirname tkinter.so))
275 len)
276 "/site-packages")))
277 (install-file tkinter.so target)
278 (delete-file tkinter.so)))))
279 #t))))))
a01b6da7 280 (inputs
3fdc99da
CR
281 `(("bzip2" ,bzip2)
282 ("gdbm" ,gdbm)
b10ab723 283 ("libffi" ,libffi) ; for ctypes
b88e1b0a 284 ("sqlite" ,sqlite) ; for sqlite extension
a01b6da7 285 ("openssl" ,openssl)
3fdc99da 286 ("readline" ,readline)
afa181ff
LC
287 ("zlib" ,zlib)
288 ("tcl" ,tcl)
289 ("tk" ,tk))) ; for tkinter
b10ab723
CR
290 (native-inputs
291 `(("pkg-config" ,pkg-config)))
9be8d7c8
LC
292 (native-search-paths
293 (list (search-path-specification
294 (variable "PYTHONPATH")
af070955 295 (files '("lib/python2.7/site-packages")))))
a01b6da7 296 (home-page "http://python.org")
afa181ff 297 (synopsis "High-level, dynamically-typed programming language")
a01b6da7
NK
298 (description
299 "Python is a remarkably powerful dynamic programming language that
300is used in a wide variety of application domains. Some of its key
301distinguishing features include: clear, readable syntax; strong
302introspection capabilities; intuitive object orientation; natural
303expression of procedural code; full modularity, supporting hierarchical
304packages; exception-based error handling; and very high level dynamic
305data types.")
3f641af0 306 (license license:psfl)))
acc26ff1 307
45848023
HG
308;; Current 2.x version.
309(define-public python-2 python-2.7)
310
311(define-public python-3.4
b24d1cfc 312 (package (inherit python-2)
08c04509 313 (version "3.4.3")
717003e3
LC
314 (source (origin
315 (method url-fetch)
316 (uri (string-append "https://www.python.org/ftp/python/"
317 version "/Python-" version ".tar.xz"))
fc1adab1
AK
318 (patches (search-patches
319 "python-fix-tests.patch"
320 ;; XXX Try removing this patch for python > 3.4.3
321 "python-disable-ssl-test.patch"
322 "python-3-deterministic-build-info.patch"
323 "python-3-search-paths.patch"))
717003e3
LC
324 (patch-flags '("-p0"))
325 (sha256
326 (base32
08c04509 327 "1f4nm4z08sy0kqwisvv95l02crv6dyysdmx44p1mz3bn6csrdcxm"))))
1f434457
MW
328 (arguments (substitute-keyword-arguments (package-arguments python-2)
329 ((#:tests? _) #t)))
1aebc0cb
AE
330 (native-search-paths
331 (list (search-path-specification
332 (variable "PYTHONPATH")
0e05d01e
SB
333 (files (list (string-append "lib/python"
334 (version-major+minor version)
335 "/site-packages"))))))))
f26a77ff 336
45848023
HG
337;; Current 3.x version.
338(define-public python-3 python-3.4)
339
340;; Current major version.
341(define-public python python-3)
342
95288fcc
LC
343;; Minimal variants of Python, mostly used to break the cycle between Tk and
344;; Python (Tk -> libxcb -> Python.)
345
346(define-public python2-minimal
347 (package (inherit python-2)
348 (name "python-minimal")
02f0c3b2 349 (outputs '("out"))
95288fcc
LC
350 (arguments
351 (substitute-keyword-arguments (package-arguments python-2)
c5a05e31
LC
352 ((#:configure-flags cf)
353 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
354 (inputs '()))) ;none of the optional dependencies
355
356(define-public python-minimal
898238b9 357 (package (inherit python)
95288fcc 358 (name "python-minimal")
02f0c3b2 359 (outputs '("out"))
95288fcc
LC
360 (arguments
361 (substitute-keyword-arguments (package-arguments python)
c5a05e31
LC
362 ((#:configure-flags cf)
363 `(append ,cf '("--without-system-ffi")))))
95288fcc
LC
364
365 ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
366 ;; zlib is required by 'zipimport', used by pip.
367 (inputs `(("openssl" ,openssl)
368 ("zlib" ,zlib)))))
369
64cb064c
LC
370(define* (wrap-python3 python
371 #:optional
372 (name (string-append (package-name python) "-wrapper")))
898238b9 373 (package (inherit python)
95288fcc 374 (name name)
898238b9
AE
375 (source #f)
376 (build-system trivial-build-system)
02f0c3b2 377 (outputs '("out"))
3c0f2329 378 (propagated-inputs `(("python" ,python)))
898238b9
AE
379 (arguments
380 `(#:modules ((guix build utils))
381 #:builder
382 (begin
383 (use-modules (guix build utils))
384 (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
385 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
386 (mkdir-p bin)
387 (for-each
388 (lambda (old new)
389 (symlink (string-append python old)
390 (string-append bin "/" new)))
187e9094
LF
391 '("python3" "pydoc3" "idle3")
392 '("python" "pydoc" "idle"))))))
0d56e3e1
LC
393 (synopsis "Wrapper for the Python 3 commands")
394 (description
395 "This package provides wrappers for the commands of Python@tie{}3.x such
396that they can be invoked under their usual name---e.g., @command{python}
397instead of @command{python3}.")))
398
95288fcc
LC
399(define-public python-wrapper (wrap-python3 python))
400(define-public python-minimal-wrapper (wrap-python3 python-minimal))
898238b9 401
aaf625b8
RW
402(define-public python-psutil
403 (package
404 (name "python-psutil")
88535a44 405 (version "4.3.0")
aaf625b8
RW
406 (source
407 (origin
408 (method url-fetch)
f56777be 409 (uri (pypi-uri "psutil" version))
aaf625b8
RW
410 (sha256
411 (base32
88535a44 412 "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6"))))
aaf625b8
RW
413 (build-system python-build-system)
414 (native-inputs
415 `(("python-setuptools" ,python-setuptools)))
88535a44 416 (home-page "https://www.github.com/giampaolo/psutil")
aaf625b8
RW
417 (synopsis "Library for retrieving information on running processes")
418 (description
419 "psutil (Python system and process utilities) is a library for retrieving
420information on running processes and system utilization (CPU, memory, disks,
421network) in Python. It is useful mainly for system monitoring, profiling and
422limiting process resources and management of running processes. It implements
423many functionalities offered by command line tools such as: ps, top, lsof,
424netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime,
425pidof, tty, taskset, pmap.")
3f641af0 426 (license license:bsd-3)))
aaf625b8
RW
427
428(define-public python2-psutil
429 (package-with-python2 python-psutil))
898238b9 430
f9da1d8a
ED
431(define-public python-passlib
432 (package
433 (name "python-passlib")
690e8c66 434 (version "1.6.5")
f9da1d8a
ED
435 (source
436 (origin
437 (method url-fetch)
690e8c66 438 (uri (pypi-uri "passlib" version))
f9da1d8a
ED
439 (sha256
440 (base32
690e8c66 441 "1z27wdxs5rj5xhhqfzvzn3yg682irkxw6dcs5jj7mcf97psk8gd8"))))
f9da1d8a
ED
442 (build-system python-build-system)
443 (native-inputs
444 `(("python-nose" ,python-nose)
445 ("python-setuptools" ,python-setuptools)))
446 (inputs
447 `(("python-py-bcrypt" ,python-py-bcrypt)))
448 (arguments
449 `(#:phases
450 (alist-cons-before
451 'check 'set-PYTHON_EGG_CACHE
452 ;; some tests require access to "$HOME/.cython"
453 (lambda* _ (setenv "PYTHON_EGG_CACHE" "/tmp"))
454 %standard-phases)))
455 (home-page "https://bitbucket.org/ecollins/passlib")
456 (synopsis
457 "Comprehensive password hashing framework")
458 (description
459 "Passlib is a password hashing library for Python 2 & 3, which provides
460cross-platform implementations of over 30 password hashing algorithms, as well
461as a framework for managing existing password hashes. It's designed to be
462useful for a wide range of tasks, from verifying a hash found in /etc/shadow,
463to providing full-strength password hashing for multi-user application.")
3f641af0 464 (license license:bsd-3)))
f9da1d8a
ED
465
466(define-public python2-passlib
467 (package-with-python2 python-passlib))
468
feb0d9c3
ED
469(define-public python-py-bcrypt
470 (package
471 (name "python-py-bcrypt")
472 (version "0.4")
473 (source
474 (origin
475 (method url-fetch)
476 (uri (string-append
477 "https://pypi.python.org/packages/source/p/py-bcrypt/py-bcrypt-"
478 version
479 ".tar.gz"))
480 (sha256
481 (base32
482 "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az"))))
483 (build-system python-build-system)
484 (native-inputs
485 `(("python-setuptools" ,python-setuptools)))
486 (home-page "https://code.google.com/p/py-bcrypt")
487 (synopsis
488 "Bcrypt password hashing and key derivation")
489 (description
490 "A python wrapper of OpenBSD's Blowfish password hashing code. This
491system hashes passwords using a version of Bruce Schneier's Blowfish block
492cipher with modifications designed to raise the cost of off-line password
493cracking and frustrate fast hardware implementation. The computation cost of
494the algorithm is parametised, so it can be increased as computers get faster.
495The intent is to make a compromise of a password database less likely to
496result in an attacker gaining knowledge of the plaintext passwords (e.g. using
497John the Ripper).")
498 ;; "sha2.c" is under BSD-3;
499 ;; "blowfish.c" and "bcrypt.c" are under BSD-4;
500 ;; the rest is under ISC.
3f641af0 501 (license (list license:isc license:bsd-3 license:bsd-4))))
feb0d9c3
ED
502
503(define-public python2-py-bcrypt
504 (package-with-python2 python-py-bcrypt))
505
506
429fdea1
ED
507(define-public python-paramiko
508 (package
509 (name "python-paramiko")
81b9bbbd 510 (version "1.16.0")
429fdea1
ED
511 (source
512 (origin
513 (method url-fetch)
81b9bbbd 514 (uri (pypi-uri "paramiko" version))
429fdea1
ED
515 (sha256
516 (base32
81b9bbbd 517 "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj"))))
429fdea1
ED
518 (build-system python-build-system)
519 (native-inputs
520 `(("python-setuptools" ,python-setuptools)))
a3fc12da
CR
521 (propagated-inputs
522 `(("python-pycrypto" ,python-pycrypto)))
429fdea1 523 (inputs
a3fc12da 524 `(("python-ecdsa" ,python-ecdsa)))
429fdea1
ED
525 (home-page "http://www.paramiko.org/")
526 (synopsis "SSHv2 protocol library")
527 (description "Paramiko is a python implementation of the SSHv2 protocol,
528providing both client and server functionality. While it leverages a Python C
529extension for low level cryptography (PyCrypto), Paramiko itself is a pure
530Python interface around SSH networking concepts.")
3f641af0 531 (license license:lgpl2.1+)))
429fdea1
ED
532
533(define-public python2-paramiko
534 (package-with-python2 python-paramiko))
535
536
de73dbf6
ED
537(define-public python-httplib2
538 (package
539 (name "python-httplib2")
286f1bac 540 (version "0.9.2")
de73dbf6
ED
541 (source
542 (origin
543 (method url-fetch)
286f1bac 544 (uri (pypi-uri "httplib2" version))
de73dbf6
ED
545 (sha256
546 (base32
286f1bac 547 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
de73dbf6
ED
548 (build-system python-build-system)
549 (native-inputs
550 `(("python-setuptools" ,python-setuptools)))
286f1bac 551 (home-page "https://github.com/jcgregorio/httplib2")
de73dbf6
ED
552 (synopsis "Comprehensive HTTP client library")
553 (description
554 "A comprehensive HTTP client library supporting many features left out of
555other HTTP libraries.")
556 (license license:expat)))
557
558(define-public python2-httplib2
559 (package-with-python2 python-httplib2))
560
67039875
ED
561(define-public python-ecdsa
562 (package
563 (name "python-ecdsa")
564 (version "0.13")
565 (source
566 (origin
567 (method url-fetch)
568 (uri (string-append
569 "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-"
570 version
571 ".tar.gz"))
572 (sha256
573 (base32
574 "1yj31j0asmrx4an9xvsaj2icdmzy6pw0glfpqrrkrphwdpi1xkv4"))))
575 (build-system python-build-system)
576 (native-inputs
577 `(("python-setuptools" ,python-setuptools)))
578 (inputs
579 `(("openssl" ,openssl)))
580 (home-page
581 "http://github.com/warner/python-ecdsa")
582 (synopsis
583 "ECDSA cryptographic signature library (pure python)")
584 (description
585 "This is an easy-to-use implementation of ECDSA cryptography (Elliptic
586Curve Digital Signature Algorithm), implemented purely in Python. With this
587library, you can quickly create keypairs (signing key and verifying key), sign
588messages, and verify the signatures. The keys and signatures are very short,
589making them easy to handle and incorporate into other protocols.")
590 (license license:expat)))
591
592(define-public python2-ecdsa
593 (package-with-python2 python-ecdsa))
594
52323f32
ED
595(define-public python-ccm
596 (package
597 (name "python-ccm")
db5567f7 598 (version "2.1.6")
52323f32
ED
599 (source
600 (origin
601 (method url-fetch)
db5567f7 602 (uri (pypi-uri "ccm" version))
52323f32
ED
603 (sha256
604 (base32
db5567f7 605 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
52323f32
ED
606 (build-system python-build-system)
607 (native-inputs
608 `(("python-setuptools" ,python-setuptools)))
609 (inputs
610 `(("python-pyyaml" ,python-pyyaml)
611 ("python-six" ,python-six)))
612 (home-page "https://github.com/pcmanus/ccm")
613 (synopsis "Cassandra Cluster Manager")
614 (description "A script/library to create, launch and remove an Apache
615Cassandra cluster on localhost.")
3f641af0 616 (license license:asl2.0)))
52323f32
ED
617
618(define-public python2-ccm
619 (package-with-python2 python-ccm))
620
89114f39 621(define-public python-pytz
acc26ff1 622 (package
89114f39 623 (name "python-pytz")
61c9babb 624 (version "2016.3")
acc26ff1
CR
625 (source
626 (origin
627 (method url-fetch)
61c9babb 628 (uri (pypi-uri "pytz" version ".tar.bz2"))
acc26ff1
CR
629 (sha256
630 (base32
61c9babb 631 "1mjmrkk4vc5xzppw7fm0pli1nnbj57cvqv7jjv5whcmccyhxz4y1"))))
acc26ff1 632 (build-system python-build-system)
8498b8cf 633 (arguments `(#:tests? #f)) ; no test target
b01bbbcf 634 (home-page "http://pythonhosted.org/pytz")
9e771e3b 635 (synopsis "Python timezone library")
acc26ff1
CR
636 (description
637 "This library allows accurate and cross platform timezone calculations
638using Python 2.4 or higher and provides access to the Olson timezone database.")
b01bbbcf 639 (license license:expat)))
5ace6e2f 640
89114f39 641(define-public python2-pytz
11bb85a1 642 (package-with-python2 python-pytz))
89114f39 643
fc50e9c6 644
89114f39 645(define-public python-babel
5ace6e2f 646 (package
89114f39 647 (name "python-babel")
3f37db6b 648 (version "2.3.2")
5ace6e2f
CR
649 (source
650 (origin
651 (method url-fetch)
b850a6d8 652 (uri (pypi-uri "Babel" version))
5ace6e2f
CR
653 (sha256
654 (base32
3f37db6b 655 "0k43pi0p1dwpds2w0km3fw92wixzxv2vw7p09capxmjz5cfh23lw"))))
5ace6e2f
CR
656 (build-system python-build-system)
657 (inputs
e1804763
AE
658 `(("python-pytz" ,python-pytz)
659 ("python-setuptools" ,python-setuptools)))
8498b8cf 660 (arguments `(#:tests? #f)) ; no test target
e1804763 661 (home-page "http://babel.pocoo.org/")
5ace6e2f
CR
662 (synopsis
663 "Tools for internationalizing Python applications")
664 (description
665 "Babel is composed of two major parts:
666- tools to build and work with gettext message catalogs
667- a Python interface to the CLDR (Common Locale Data Repository), providing
668access to various locale display names, localized number and date formatting,
669etc. ")
3f641af0 670 (license license:bsd-3)))
89114f39
AE
671
672(define-public python2-babel
11bb85a1 673 (package-with-python2 python-babel))
73adf220 674
ed377cc6
RW
675(define-public python2-backport-ssl-match-hostname
676 (package
677 (name "python2-backport-ssl-match-hostname")
f2d06d46 678 (version "3.5.0.1")
ed377cc6
RW
679 (source
680 (origin
681 (method url-fetch)
682 (uri (string-append
683 "https://pypi.python.org/packages/source/b/"
684 "backports.ssl_match_hostname/backports.ssl_match_hostname-"
685 version ".tar.gz"))
686 (sha256
687 (base32
f2d06d46 688 "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
ed377cc6 689 (build-system python-build-system)
f2d06d46
EF
690 (arguments
691 `(#:python ,python-2
692 #:tests? #f)) ; no test target
ed377cc6
RW
693 (inputs
694 `(("python2-setuptools" ,python2-setuptools)))
f2d06d46
EF
695 (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
696 (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
ed377cc6
RW
697 (description
698 "This backport brings the ssl.match_hostname() function to users of
699earlier versions of Python. The function checks the hostname in the
700certificate returned by the server to which a connection has been established,
701and verifies that it matches the intended target hostname.")
3f641af0 702 (license license:psfl)))
ed377cc6 703
ef5cbf9b
RW
704(define-public python-h5py
705 (package
706 (name "python-h5py")
fe147c41 707 (version "2.6.0")
ef5cbf9b
RW
708 (source
709 (origin
710 (method url-fetch)
fe147c41 711 (uri (pypi-uri "h5py" version))
ef5cbf9b
RW
712 (sha256
713 (base32
fe147c41 714 "0df46dg7i7xfking9lp221bfm8dbl974yvlrbi1w7r6m61ac7bxj"))))
ef5cbf9b 715 (build-system python-build-system)
797e1401
RW
716 (arguments
717 `(#:tests? #f ; no test target
718 #:phases
719 (modify-phases %standard-phases
720 (add-after 'unpack 'fix-hdf5-paths
721 (lambda* (#:key inputs #:allow-other-keys)
722 (let ((prefix (assoc-ref inputs "hdf5")))
723 (substitute* "setup_build.py"
724 (("\\['/opt/local/lib', '/usr/local/lib'\\]")
725 (string-append "['" prefix "/lib" "']"))
726 (("'/opt/local/include', '/usr/local/include'")
727 (string-append "'" prefix "/include" "'")))
728 (substitute* "setup_configure.py"
729 (("\\['/usr/local/lib', '/opt/local/lib'\\]")
730 (string-append "['" prefix "/lib" "']")))
731 #t))))))
3c4010b1
RW
732 (propagated-inputs
733 `(("python-numpy" ,python-numpy)))
ef5cbf9b 734 (inputs
fe147c41
EF
735 `(("hdf5" ,hdf5)
736 ("python-six" ,python-six)))
ef5cbf9b 737 (native-inputs
fe147c41
EF
738 `(("python-cython" ,python-cython)
739 ("python-pkgconfig" ,python-pkgconfig)))
ef5cbf9b
RW
740 (home-page "http://www.h5py.org/")
741 (synopsis "Read and write HDF5 files from Python")
742 (description
743 "The h5py package provides both a high- and low-level interface to the
744HDF5 library from Python. The low-level interface is intended to be a
745complete wrapping of the HDF5 API, while the high-level component supports
746access to HDF5 files, datasets and groups using established Python and NumPy
747concepts.")
3f641af0 748 (license license:bsd-3)
fe147c41 749 (properties `((python2-variant . ,(delay python2-h5py))))))
ef5cbf9b
RW
750
751(define-public python2-h5py
fe147c41 752 (package-with-python2 (strip-python2-variant python-h5py)))
ef5cbf9b 753
c1448c69
EB
754(define-public python-lockfile
755 (package
756 (name "python-lockfile")
692add53 757 (version "0.12.2")
c1448c69
EB
758 (source
759 (origin
760 (method url-fetch)
761 (uri (string-append "https://pypi.python.org/packages/source/l/lockfile/"
762 "lockfile-" version ".tar.gz"))
763 (sha256
764 (base32
692add53 765 "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
c1448c69
EB
766 (build-system python-build-system)
767 (arguments '(#:test-target "check"))
692add53
BW
768 (native-inputs
769 `(("python-pbr" ,python-pbr)))
6a8f26a4 770 (home-page "https://launchpad.net/pylockfile")
c1448c69
EB
771 (synopsis "Platform-independent file locking module")
772 (description
773 "The lockfile package exports a LockFile class which provides a simple
774API for locking files.")
1804527a
BW
775 (license license:expat)
776 (properties `((python2-variant . ,(delay python2-lockfile))))))
c1448c69
EB
777
778(define-public python2-lockfile
1804527a
BW
779 (let ((base (package-with-python2 (strip-python2-variant python-lockfile))))
780 (package
692add53
BW
781 (inherit base)
782 (native-inputs `(("python2-setuptools" ,python2-setuptools)
783 ,@(package-native-inputs base))))))
c1448c69 784
5a1a4bf6
EB
785(define-public python-mock
786 (package
787 (name "python-mock")
788 (version "1.0.1")
789 (source
790 (origin
791 (method url-fetch)
792 (uri (string-append "https://pypi.python.org/packages/source/m/mock/"
793 "mock-" version ".tar.gz"))
794 (sha256
795 (base32
796 "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq"))))
797 (build-system python-build-system)
798 (arguments '(#:test-target "check"))
07af3e5e 799 (home-page "http://code.google.com/p/mock/")
9e771e3b 800 (synopsis "Python mocking and patching library for testing")
5a1a4bf6
EB
801 (description
802 "Mock is a library for testing in Python. It allows you to replace parts
803of your system under test with mock objects and make assertions about how they
804have been used.")
bd3fa666 805 (license license:expat)))
5a1a4bf6
EB
806
807(define-public python2-mock
808 (package-with-python2 python-mock))
809
fc50e9c6 810
73adf220
AE
811(define-public python-setuptools
812 (package
813 (name "python-setuptools")
62a9a23b 814 (version "18.3.1")
73adf220
AE
815 (source
816 (origin
817 (method url-fetch)
818 (uri (string-append "https://pypi.python.org/packages/source/s/setuptools/setuptools-"
819 version ".tar.gz"))
820 (sha256
821 (base32
62a9a23b 822 "0kc7rbav00ks6iaw14p38y81q12fx0lpkhgf5m97xc04f5r318ig"))))
73adf220 823 (build-system python-build-system)
d3d656c5
AE
824 ;; FIXME: Tests require pytest, which itself relies on setuptools.
825 ;; One could bootstrap with an internal untested setuptools.
73adf220 826 (arguments
824af8ca 827 `(#:tests? #f))
73adf220
AE
828 (home-page "https://pypi.python.org/pypi/setuptools")
829 (synopsis
830 "Library designed to facilitate packaging Python projects")
831 (description
832 "Setuptools is a fully-featured, stable library designed to facilitate
833packaging Python projects, where packaging includes:
834Python package and module definitions,
835distribution package metadata,
836test hooks,
837project installation,
838platform-specific details,
839Python 3 support.")
3f641af0 840 (license license:psfl)))
73adf220
AE
841
842(define-public python2-setuptools
843 (package-with-python2 python-setuptools))
fc50e9c6
AE
844
845
cafc3f5a
EB
846(define-public python-pycrypto
847 (package
848 (name "python-pycrypto")
849 (version "2.6.1")
850 (source
851 (origin
852 (method url-fetch)
853 (uri (string-append "https://pypi.python.org/packages/source/p/"
854 "pycrypto/pycrypto-" version ".tar.gz"))
855 (sha256
856 (base32
857 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj"))))
858 (build-system python-build-system)
859 (native-inputs
860 `(("python-setuptools" ,python-setuptools)))
861 (inputs
862 `(("python" ,python)
863 ("gmp" ,gmp)))
864 (arguments
865 `(#:phases
866 (alist-cons-before
867 'build 'set-build-env
868 ;; pycrypto runs an autoconf configure script behind the scenes
869 (lambda _
870 (setenv "CONFIG_SHELL" (which "bash")))
871 %standard-phases)))
872 (home-page "http://www.pycrypto.org/")
873 (synopsis "Cryptographic modules for Python")
874 (description
875 "Pycrypto is a collection of both secure hash functions (such as SHA256
876and RIPEMD160), and various encryption algorithms (AES, DES, RSA, ElGamal,
35b9e423 877etc.). The package is structured to make adding new modules easy.")
3f641af0 878 (license license:public-domain)))
cafc3f5a 879
345f0611 880(define-public python2-pycrypto
1c0059da
EF
881 (let ((pycrypto (package-with-python2 python-pycrypto)))
882 (package (inherit pycrypto)
883 (inputs
884 `(("python" ,python-2)
885 ,@(alist-delete
886 "python"
887 (package-inputs pycrypto)))))))
345f0611 888
cafc3f5a
EB
889(define-public python-keyring
890 (package
891 (name "python-keyring")
13f3ff35 892 (version "8.7")
cafc3f5a
EB
893 (source
894 (origin
895 (method url-fetch)
664e6c3a 896 (uri (pypi-uri "keyring" version))
cafc3f5a
EB
897 (sha256
898 (base32
13f3ff35 899 "0482rmi2x6p78wl2kz8qzyq21xz1sbbfwnv5x7dggar4vkwxhzfx"))))
cafc3f5a
EB
900 (build-system python-build-system)
901 (native-inputs
13f3ff35 902 `(("python-setuptools-scm" ,python-setuptools-scm)))
cafc3f5a
EB
903 (inputs
904 `(("python-pycrypto" ,python-pycrypto)))
905 (arguments
664e6c3a 906 `(#:tests? #f)) ;TODO: tests require pytest
190ba6c2 907 (home-page "https://github.com/jaraco/keyring")
cafc3f5a
EB
908 (synopsis "Store and access your passwords safely")
909 (description
910 "The Python keyring lib provides a easy way to access the system keyring
35b9e423 911service from python. It can be used in any application that needs safe
cafc3f5a
EB
912password storage.")
913 ;; "MIT" and PSF dual license
3f641af0 914 (license license:x11)
13f3ff35 915 (properties `((python2-variant . ,(delay python2-keyring))))))
cafc3f5a 916
d7af1069 917(define-public python2-keyring
13f3ff35
EF
918 (let ((base (package-with-python2 (strip-python2-variant python-keyring))))
919 (package
920 (inherit base)
921 (native-inputs `(("python2-setuptools" ,python2-setuptools)
922 ,@(package-native-inputs base))))))
d7af1069 923
a480bc41
EB
924(define-public python-six
925 (package
926 (name "python-six")
b6ab89ef 927 (version "1.10.0")
a480bc41
EB
928 (source
929 (origin
930 (method url-fetch)
b6ab89ef 931 (uri (pypi-uri "six" version))
a480bc41
EB
932 (sha256
933 (base32
b6ab89ef 934 "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh"))))
a480bc41
EB
935 (build-system python-build-system)
936 (inputs
937 `(("python-setuptools" ,python-setuptools)))
938 (home-page "http://pypi.python.org/pypi/six/")
939 (synopsis "Python 2 and 3 compatibility utilities")
940 (description
35b9e423 941 "Six is a Python 2 and 3 compatibility library. It provides utility
a480bc41
EB
942functions for smoothing over the differences between the Python versions with
943the goal of writing Python code that is compatible on both Python versions.
35b9e423 944Six supports every Python version since 2.5. It is contained in only one
a480bc41 945Python file, so it can be easily copied into your project.")
3f641af0 946 (license license:x11)))
a480bc41 947
0c20025c
AE
948(define-public python2-six
949 (package-with-python2 python-six))
950
cafc3f5a
EB
951(define-public python-dateutil-2
952 (package
953 (name "python-dateutil")
394b8060 954 (version "2.5.2")
cafc3f5a
EB
955 (source
956 (origin
957 (method url-fetch)
394b8060 958 (uri (pypi-uri "python-dateutil" version))
cafc3f5a
EB
959 (sha256
960 (base32
394b8060 961 "0jrfpcgvgya6hs45dhrd9yiqgdgz9qp9aa07zsw8gqgn8zphff86"))))
cafc3f5a
EB
962 (build-system python-build-system)
963 (inputs
394b8060 964 `(("python-six" ,python-six)))
b5a5fb19 965 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a
EB
966 (synopsis "Extensions to the standard datetime module")
967 (description
968 "The dateutil module provides powerful extensions to the standard
969datetime module, available in Python 2.3+.")
3f641af0 970 (license license:bsd-3)
394b8060 971 (properties `((python2-variant . ,(delay python2-dateutil-2))))))
cafc3f5a
EB
972
973(define-public python2-dateutil-2
394b8060
EF
974 (let ((base (package-with-python2 (strip-python2-variant python-dateutil-2))))
975 (package
976 (inherit base)
977 (inputs `(("python2-setuptools" ,python2-setuptools)
978 ,@(package-inputs base))))))
cafc3f5a 979
fc50e9c6
AE
980(define-public python-dateutil
981 (package
982 (name "python-dateutil")
983 (version "1.5") ; last version for python < 3
984 (source
985 (origin
986 (method url-fetch)
cafc3f5a
EB
987 (uri (string-append "http://labix.org/download/python-dateutil/"
988 "python-dateutil-" version ".tar.gz"))
fc50e9c6
AE
989 (sha256
990 (base32
991 "0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
992 (build-system python-build-system)
993 (inputs
994 `(("python-setuptools" ,python-setuptools)))
b5a5fb19 995 (home-page "https://dateutil.readthedocs.io/en/stable/")
cafc3f5a 996 (synopsis "Extensions to the standard datetime module")
fc50e9c6
AE
997 (description
998 "The dateutil module provides powerful extensions to the standard
999datetime module, available in Python 2.3+.")
3f641af0 1000 (license license:psfl)))
fc50e9c6
AE
1001
1002(define-public python2-dateutil
1003 (package-with-python2 python-dateutil))
1d08c01f 1004
cafc3f5a
EB
1005(define-public python-parsedatetime
1006 (package
1007 (name "python-parsedatetime")
eebf6f01 1008 (version "2.1")
cafc3f5a
EB
1009 (source
1010 (origin
1011 (method url-fetch)
eebf6f01 1012 (uri (pypi-uri "parsedatetime" version))
cafc3f5a
EB
1013 (sha256
1014 (base32
eebf6f01 1015 "0bdgyw6y3v7bcxlx0p50s8drxsh5bb5cy2afccqr3j90amvpii8p"))))
cafc3f5a
EB
1016 (build-system python-build-system)
1017 (native-inputs
eebf6f01
EF
1018 `(("python-nose" ,python-nose)
1019 ("python-pyicu" ,python-pyicu)))
cafc3f5a
EB
1020 (home-page "http://github.com/bear/parsedatetime/")
1021 (synopsis
1022 "Parse human-readable date/time text")
1023 (description
e881752c 1024 "Parse human-readable date/time text.")
3f641af0 1025 (license license:asl2.0)
eebf6f01 1026 (properties `((python2-variant . ,(delay python2-parsedatetime))))))
cafc3f5a 1027
38b8f9b2 1028(define-public python2-parsedatetime
eebf6f01
EF
1029 (let ((base (package-with-python2 (strip-python2-variant python-parsedatetime))))
1030 (package
1031 (inherit base)
1032 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1033 ,@(package-native-inputs base))))))
38b8f9b2 1034
d072efcb
RW
1035(define-public python-pandas
1036 (package
1037 (name "python-pandas")
7d0c3c8d 1038 (version "0.18.1")
d072efcb
RW
1039 (source
1040 (origin
1b96f069 1041 (method url-fetch)
7d0c3c8d
EF
1042 (uri (string-append
1043 "https://pypi.python.org/packages/11/09/"
1044 "e66eb844daba8680ddff26335d5b4fead77f60f957678243549a8dd4830d/"
1045 "pandas-" version ".tar.gz"))
1b96f069 1046 (sha256
7d0c3c8d 1047 (base32 "1ckpxrvvjj6zxmn68icd9hib8qcpx9b35f6izxnr25br5ilq7r6j"))))
d072efcb 1048 (build-system python-build-system)
d072efcb 1049 (propagated-inputs
42603726
EF
1050 `(("python-numpy" ,python-numpy)))
1051 (inputs
1052 `(("python-pytz" ,python-pytz)
d072efcb
RW
1053 ("python-dateutil" ,python-dateutil-2)))
1054 (native-inputs
7d0c3c8d 1055 `(("python-nose" ,python-nose)))
d072efcb
RW
1056 (home-page "http://pandas.pydata.org")
1057 (synopsis "Data structures for data analysis, time series, and statistics")
1058 (description
1059 "Pandas is a Python package providing fast, flexible, and expressive data
1060structures designed to make working with structured (tabular,
1061multidimensional, potentially heterogeneous) and time series data both easy
1062and intuitive. It aims to be the fundamental high-level building block for
1063doing practical, real world data analysis in Python.")
3f641af0 1064 (license license:bsd-3)
7d0c3c8d 1065 (properties `((python2-variant . ,(delay python2-pandas))))))
d072efcb
RW
1066
1067(define-public python2-pandas
7d0c3c8d
EF
1068 (let ((base (package-with-python2 (strip-python2-variant python-pandas))))
1069 (package
1070 (inherit base)
1071 (native-inputs `(("python2-setuptools" ,python2-setuptools)
dbd40ac1 1072 ,@(package-native-inputs base))))))
d072efcb 1073
cafc3f5a
EB
1074(define-public python-tzlocal
1075 (package
1076 (name "python-tzlocal")
ed80839b 1077 (version "1.2.2")
cafc3f5a
EB
1078 (source
1079 (origin
1080 (method url-fetch)
226d3331 1081 (uri (pypi-uri "tzlocal" version))
cafc3f5a
EB
1082 (sha256
1083 (base32
ed80839b 1084 "0paj7vlsb0np8b5sp4bv64wxv7qk2piyp7xg29pkhdjwsbls9fnb"))))
cafc3f5a 1085 (build-system python-build-system)
ed80839b 1086 (inputs `(("python-pytz" ,python-pytz)))
cafc3f5a
EB
1087 (home-page "https://github.com/regebro/tzlocal")
1088 (synopsis
35b9e423 1089 "Local timezone information for Python")
cafc3f5a
EB
1090 (description
1091 "Tzlocal returns a tzinfo object with the local timezone information.
1092This module attempts to fix a glaring hole in pytz, that there is no way to
1093get the local timezone information, unless you know the zoneinfo name, and
1094under several distributions that's hard or impossible to figure out.")
3f641af0 1095 (license license:cc0)))
cafc3f5a 1096
1d08c01f
AE
1097(define-public python2-pysqlite
1098 (package
1099 (name "python2-pysqlite")
fe476868 1100 (version "2.8.1")
1d08c01f
AE
1101 (source
1102 (origin
1103 (method url-fetch)
fe476868 1104 (uri (pypi-uri "pysqlite" version))
1d08c01f
AE
1105 (sha256
1106 (base32
fe476868 1107 "0rm0zqyb363y6wljhfmbxs16jjv7p8nk1d8zgq9sdwj6js7y3jkm"))))
1d08c01f
AE
1108 (build-system python-build-system)
1109 (inputs
1110 `(("sqlite" ,sqlite)))
1111 (arguments
1112 `(#:python ,python-2 ; incompatible with Python 3
1113 #:tests? #f)) ; no test target
fe476868 1114 (home-page "http://github.com/ghaering/pysqlite")
7a03af70 1115 (synopsis "SQLite bindings for Python")
1d08c01f
AE
1116 (description
1117 "Pysqlite provides SQLite bindings for Python that comply to the
1118Database API 2.0T.")
ed0cdf83 1119 (license license:zlib)))
1d08c01f 1120
2875caf5
AE
1121
1122(define-public python2-mechanize
1123 (package
1124 (name "python2-mechanize")
1125 (version "0.2.5")
1126 (source
1127 (origin
1128 (method url-fetch)
1129 (uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
1130 version ".tar.gz"))
1131 (sha256
1132 (base32
1133 "0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
1134 (build-system python-build-system)
1135 (inputs
1136 `(("python2-setuptools" ,python2-setuptools)))
1137 (arguments
1138 `(#:python ,python-2 ; apparently incompatible with Python 3
1139 #:tests? #f))
1140 ;; test fails with message
1141 ;; AttributeError: 'module' object has no attribute 'test_pullparser'
1142 ;; (python-3.3.2) or
1143 ;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
1144 ;; (python-2.7.5).
1145 ;; The source code is from March 2011 and probably not up-to-date
1146 ;; with respect to python unit tests.
1147 (home-page "http://wwwsearch.sourceforge.net/mechanize/")
1148 (synopsis
1149 "Stateful programmatic web browsing in Python")
1150 (description
1151 "Mechanize implements stateful programmatic web browsing in Python,
1152after Andy Lester’s Perl module WWW::Mechanize.")
3f641af0
DC
1153 (license (license:non-copyleft
1154 "file://COPYING"
1155 "See COPYING in the distribution."))))
2875caf5 1156
0352532e
AE
1157
1158(define-public python-simplejson
1159 (package
1160 (name "python-simplejson")
988d1bad 1161 (version "3.8.2")
0352532e
AE
1162 (source
1163 (origin
1164 (method url-fetch)
988d1bad 1165 (uri (pypi-uri "simplejson" version))
0352532e
AE
1166 (sha256
1167 (base32
988d1bad 1168 "0zylrnax8b6r0ndgni4w9c599fi6wm9vx5g6k3ddqfj3932kk16m"))))
0352532e
AE
1169 (build-system python-build-system)
1170 (home-page "http://simplejson.readthedocs.org/en/latest/")
1171 (synopsis
1172 "Json library for Python")
1173 (description
e881752c
AK
1174 "JSON (JavaScript Object Notation) is a subset of JavaScript
1175syntax (ECMA-262 3rd edition) used as a lightweight data interchange
1176format.
0352532e
AE
1177
1178Simplejson exposes an API familiar to users of the standard library marshal
1179and pickle modules. It is the externally maintained version of the json
1180library contained in Python 2.6, but maintains compatibility with Python 2.5
1181and (currently) has significant performance advantages, even without using
1182the optional C extension for speedups. Simplejson is also supported on
1183Python 3.3+.")
3f641af0 1184 (license license:x11)))
0352532e
AE
1185
1186(define-public python2-simplejson
1187 (package-with-python2 python-simplejson))
421a80a2
AE
1188
1189
ed07b08d 1190(define-public python-pyicu
421a80a2 1191 (package
ed07b08d 1192 (name "python-pyicu")
d3b29319 1193 (version "1.9.2")
421a80a2
AE
1194 (source
1195 (origin
1196 (method url-fetch)
1197 (uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
1198 version ".tar.gz"))
1199 (sha256
1200 (base32
d3b29319 1201 "1diba0g8md614fvm9yf50paiwdkhj6rd7xwf1rg9mc0pxc0hhn4v"))))
421a80a2
AE
1202 (build-system python-build-system)
1203 (inputs
1204 `(("icu4c" ,icu4c)))
421a80a2 1205 (home-page "http://pyicu.osafoundation.org/")
9e771e3b 1206 (synopsis "Python extension wrapping the ICU C++ API")
421a80a2
AE
1207 (description
1208 "PyICU is a python extension wrapping the ICU C++ API.")
3f641af0 1209 (license license:x11)
ed07b08d
LF
1210 (properties `((python2-variant . ,(delay python2-pyicu))))))
1211
1212(define-public python2-pyicu
1213 (package
1214 (inherit (package-with-python2
1215 (strip-python2-variant python-pyicu)))
1216 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
cc20a22a
LC
1217
1218(define-public python2-dogtail
1219 ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and
1220 ;; spaces in indentation" with Python 3.
1221 (package
1222 (name "python2-dogtail")
1223 (version "0.8.2")
1224 (source (origin
1225 (method url-fetch)
1226 (uri (string-append
1227 "https://fedorahosted.org/released/dogtail/dogtail-"
1228 version ".tar.gz"))
1229 (sha256
1230 (base32
1231 "1yc4cg7ip87z15gyd4wy2vzbywrjc52a3m8r8gqy2b50d65llcg1"))))
1232 (build-system python-build-system)
1233 (arguments `(#:python ,python-2
1234 #:tests? #f)) ; invalid command "test"
1235 (home-page "https://fedorahosted.org/dogtail/")
1236 (synopsis "GUI test tool and automation framework written in ​Python")
1237 (description
35b9e423 1238 "Dogtail is a GUI test tool and automation framework written in Python.
cc20a22a
LC
1239It uses Accessibility (a11y) technologies to communicate with desktop
1240applications. dogtail scripts are written in Python and executed like any
1241other Python program.")
3f641af0 1242 (license license:gpl2+)))
515e6878 1243
011b18c3
LC
1244(define-public python2-empy
1245 (package
1246 (name "python2-empy")
1247 (version "3.3")
1248 (source (origin
1249 (method url-fetch)
1250 (uri (string-append "http://www.alcyone.com/software/empy/empy-"
1251 version ".tar.gz"))
1252 (sha256
1253 (base32
1254 "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
1255 (build-system python-build-system)
1256 (arguments
1257 `(#:python ,python-2
1258 #:phases (alist-replace
1259 'check
1260 (lambda _
1261 (zero? (system* "./test.sh")))
1262 %standard-phases)))
1263 (home-page "http://www.alcyone.com/software/empy/")
1264 (synopsis "Templating system for Python")
1265 (description
1266 "EmPy is a system for embedding Python expressions and statements in
1267template text; it takes an EmPy source file, processes it, and produces
1268output. This is accomplished via expansions, which are special signals to the
1cd4027c 1269EmPy system and are set off by a special prefix (by default the at sign, @@).
011b18c3
LC
1270EmPy can expand arbitrary Python expressions and statements in this way, as
1271well as a variety of special forms. Textual data not explicitly delimited in
1272this way is sent unaffected to the output, allowing Python to be used in
1273effect as a markup language. Also supported are callbacks via hooks,
1274recording and playback via diversions, and dynamic, chainable filters. The
1275system is highly configurable via command line options and embedded
1276commands.")
3f641af0 1277 (license license:lgpl2.1+)))
011b18c3 1278
8deeda0c
LC
1279(define-public python2-element-tree
1280 (package
1281 (name "python2-element-tree")
1282 (version "1.2.6")
1283 (source (origin
1284 (method url-fetch)
1285 (uri (string-append
1286 "http://effbot.org/media/downloads/elementtree-"
1287 version "-20050316.tar.gz"))
1288 (sha256
1289 (base32
1290 "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
1291 (build-system python-build-system)
1292 (arguments
1293 `(#:python ,python-2 ; seems to be part of Python 3
1294 #:tests? #f)) ; no 'test' sub-command
1295 (synopsis "Toolkit for XML processing in Python")
1296 (description
1297 "ElementTree is a Python library supporting lightweight XML processing.")
1298 (home-page "http://effbot.org/zone/element-index.htm")
3f641af0
DC
1299 (license (license:x11-style
1300 "http://docs.python.org/2/license.html"
1301 "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
8deeda0c
LC
1302
1303(define-public python2-pybugz
1304 (package
1305 (name "python2-pybugz")
1306 (version "0.6.11")
1307 (source (origin
1308 (method url-fetch)
1309 (uri (string-append
1310 "http://bits.liquidx.net/projects/pybugz/pybugz-"
1311 version ".tar.gz"))
1312 (sha256
1313 (base32
6f194a1e 1314 "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
fc1adab1
AK
1315 (patches (search-patches "pybugz-stty.patch"
1316 "pybugz-encode-error.patch"))))
8deeda0c
LC
1317 (build-system python-build-system)
1318 (arguments
1319 `(#:python ,python-2 ; SyntaxError with Python 3
1320 #:tests? #f)) ; no 'test' sub-command
1321 (inputs `(("element-tree" ,python2-element-tree)))
1322 (synopsis "Python and command-line interface to Bugzilla")
1323 (description
1324 "PyBugz is a Python library and command-line tool to query the Bugzilla
1325bug tracking system. It is meant as an aid to speed up interaction with the
1326bug tracker.")
1327 (home-page "http://www.liquidx.net/pybugz/")
3f641af0 1328 (license license:gpl2)))
8deeda0c 1329
a480bc41
EB
1330(define-public python-enum34
1331 (package
1332 (name "python-enum34")
d39ae1e5 1333 (version "1.1.0")
a480bc41
EB
1334 (source
1335 (origin
1336 (method url-fetch)
d39ae1e5 1337 (uri (pypi-uri "enum34" version))
a480bc41
EB
1338 (sha256
1339 (base32
d39ae1e5 1340 "0yx1m4564wxgbm4glb3457hi16xihd9w63rv13y2przkdir9dfgp"))))
a480bc41 1341 (build-system python-build-system)
a480bc41
EB
1342 (arguments
1343 `(#:phases
1344 (alist-replace
1345 'check
1346 (lambda _ (zero? (system* "python" "enum/test_enum.py")))
1347 %standard-phases)))
1348 (home-page "https://pypi.python.org/pypi/enum34")
1349 (synopsis "Backported Python 3.4 Enum")
1350 (description
1351 "Enum34 is the new Python stdlib enum module available in Python 3.4
1352backported for previous versions of Python from 2.4 to 3.3.")
3f641af0 1353 (license license:bsd-3)))
a480bc41 1354
820acd1b
LF
1355(define-public python2-enum34
1356 (package-with-python2 python-enum34))
1357
a480bc41
EB
1358(define-public python-parse-type
1359 (package
1360 (name "python-parse-type")
1361 (version "0.3.4")
1362 (source
1363 (origin
1364 (method url-fetch)
1365 (uri (string-append "https://pypi.python.org/packages/source/p/"
1366 "parse_type/parse_type-" version ".tar.gz"))
1367 (sha256
1368 (base32
1369 "0iv1c34npr4iynwpgv1vkjx9rjd18a85ir8c01gc5f7wp8iv7l1x"))))
1370 (build-system python-build-system)
1371 (inputs
1372 `(("python-setuptools" ,python-setuptools)
1373 ("python-six" ,python-six)
68f1cdec 1374 ("python-parse" ,python-parse)))
a480bc41
EB
1375 (arguments '(#:tests? #f)) ;TODO: tests require pytest
1376 (home-page "https://github.com/jenisys/parse_type")
1377 (synopsis "Extended parse module")
1378 (description
1379 "Parse_type extends the python parse module.")
3f641af0 1380 (license license:bsd-3)))
a480bc41
EB
1381
1382(define-public python-parse
1383 (package
1384 (name "python-parse")
eb3d3503 1385 (version "1.6.6")
a480bc41
EB
1386 (source
1387 (origin
1388 (method url-fetch)
eb3d3503 1389 (uri (pypi-uri "parse" version))
a480bc41
EB
1390 (sha256
1391 (base32
eb3d3503 1392 "0y31i3mwgv35qn0kzzjn9q8jqfdqmbi6sr6yfvn8rq4lqjm5lhvi"))))
a480bc41
EB
1393 (build-system python-build-system)
1394 (arguments
1395 `(#:phases
1396 (alist-replace
1397 'check
1398 (lambda _ (zero? (system* "python" "test_parse.py")))
1399 %standard-phases)))
1400 (home-page "https://github.com/r1chardj0n3s/parse")
1401 (synopsis "Parse strings")
1402 (description
1403 "Parse strings using a specification based on the Python format()
1404syntax.")
3f641af0 1405 (license license:x11)))
a480bc41
EB
1406
1407
515e6878
LC
1408(define-public scons
1409 (package
1410 (name "scons")
a3f61425 1411 (version "2.3.4")
515e6878
LC
1412 (source (origin
1413 (method url-fetch)
de67e922
LF
1414 (uri (string-append "mirror://sourceforge/scons/scons/" version
1415 "/scons-" version ".tar.gz"))
515e6878
LC
1416 (sha256
1417 (base32
a3f61425 1418 "0hdlci43wjz8maryj83mz04ir6rwcdrrzpd7cpzvdlzycqhdfmsb"))))
515e6878
LC
1419 (build-system python-build-system)
1420 (arguments
1421 ;; With Python 3.x, fails to build with a syntax error.
1422 `(#:python ,python-2
1423 #:tests? #f)) ; no 'python setup.py test' command
1424 (home-page "http://scons.org/")
1425 (synopsis "Software construction tool written in Python")
1426 (description
1427 "SCons is a software construction tool. Think of SCons as an improved,
1428cross-platform substitute for the classic Make utility with integrated
1429functionality similar to autoconf/automake and compiler caches such as ccache.
1430In short, SCons is an easier, more reliable and faster way to build
1431software.")
3f641af0 1432 (license license:x11)))
011b18c3 1433
c15a5c0e
DT
1434(define-public python-extras
1435 (package
1436 (name "python-extras")
1437 (version "0.0.3")
1438 (source
1439 (origin
1440 (method url-fetch)
1441 (uri (string-append
1442 "https://pypi.python.org/packages/source/e/extras/extras-"
1443 version ".tar.gz"))
1444 (sha256
1445 (base32
1446 "1h7zx4dfyclalg0fqnfjijpn0f793a9mx8sy3b27gd31nr6dhq3s"))))
1447 (build-system python-build-system)
1448 (inputs
1449 `(("python-setuptools" ,python-setuptools)))
1450 (arguments
1451 ;; error in setup.cfg: command 'test' has no such option 'buffer'
1452 '(#:tests? #f))
1453 (home-page "https://github.com/testing-cabal/extras")
1454 (synopsis "Useful extensions to the Python standard library")
1455 (description
1456 "Extras is a set of extensions to the Python standard library.")
bd3fa666 1457 (license license:expat)))
c15a5c0e
DT
1458
1459(define-public python2-extras
1460 (package-with-python2 python-extras))
1461
56ea0efd
DT
1462(define-public python-mimeparse
1463 (package
1464 (name "python-mimeparse")
1465 (version "0.1.4")
1466 (source
1467 (origin
1468 (method url-fetch)
1469 (uri (string-append
1470 "https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-"
1471 version ".tar.gz"))
1472 (sha256
1473 (base32
1474 "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w"))))
1475 (build-system python-build-system)
1476 (inputs
1477 `(("python-setuptools" ,python-setuptools)))
1478 (arguments
1479 '(#:tests? #f)) ; no setup.py test command
1480 (home-page
1481 "https://github.com/dbtsai/python-mimeparse")
9e771e3b 1482 (synopsis "Python library for parsing MIME types")
56ea0efd
DT
1483 (description
1484 "Mimeparse provides basic functions for parsing MIME type names and
1485matching them against a list of media-ranges.")
bd3fa666 1486 (license license:expat)))
56ea0efd
DT
1487
1488(define-public python2-mimeparse
1489 (package-with-python2 python-mimeparse))
1490
4435427e
DT
1491(define-public python-nose
1492 (package
1493 (name "python-nose")
f7cb9841 1494 (version "1.3.7")
4435427e
DT
1495 (source
1496 (origin
1497 (method url-fetch)
f7cb9841 1498 (uri (pypi-uri "nose" version))
4435427e
DT
1499 (sha256
1500 (base32
f7cb9841 1501 "164a43k7k2wsqqk1s6vavcdamvss4mz0vd6pwzv2h9n8rgwzxgzi"))))
4435427e
DT
1502 (build-system python-build-system)
1503 (inputs
1504 `(("python-setuptools" ,python-setuptools)))
1505 (arguments
1506 '(#:tests? #f)) ; FIXME: test suite fails
1507 (home-page "http://readthedocs.org/docs/nose/")
1508 (synopsis "Python testing library")
1509 (description
1510 "Nose extends the unittest library to make testing easier.")
3f641af0 1511 (license license:lgpl2.0+)))
4435427e
DT
1512
1513(define-public python2-nose
1514 (package-with-python2 python-nose))
1515
0aea283a
EF
1516(define-public python-nose2
1517 (package
1518 (name "python-nose2")
1519 (version "0.6.5")
1520 (source
1521 (origin
1522 (method url-fetch)
1523 (uri (pypi-uri "nose2" version))
1524 (sha256
1525 (base32
1526 "1x4zjq1zlyrh8b9ba0cmafd3w94pxhid408kibyjd3s6h1lap6s7"))))
1527 (build-system python-build-system)
1528 (arguments `(#:tests? #f)) ; 'module' object has no attribute 'collector'
1529 (native-inputs
1530 `(("python-setuptools" ,python-setuptools)))
1531 (inputs
1532 `(("python-cov-core" ,python-cov-core)
1533 ("python-pytest-cov" ,python-pytest-cov)
1534 ("python-six" ,python-six)))
1535 (home-page "https://github.com/nose-devs/nose2")
1536 (synopsis "Next generation of nicer testing for Python")
1537 (description
1538 "Nose2 is the next generation of nicer testing for Python, based on the
1539plugins branch of unittest2. Nose2 aims to improve on nose by providing a
1540better plugin api, being easier for users to configure, and simplifying internal
1541interfaces and processes.")
1542 (license license:bsd-2)))
1543
1544(define-public python2-nose2
1545 (package-with-python2 python-nose2))
1546
6cd9c356
DT
1547(define-public python-unittest2
1548 (package
1549 (name "python-unittest2")
1550 (version "0.5.1")
1551 (source
1552 (origin
1553 (method url-fetch)
1554 (uri (string-append
1555 "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-"
1556 version ".tar.gz"))
1557 (sha256
1558 (base32
1559 "00yl6lskygcrddx5zspkhr0ibgvpknl4678kkm6s626539grq93q"))))
1560 (build-system python-build-system)
1561 (inputs
1562 `(("python-setuptools" ,python-setuptools)))
1563 (home-page "http://pypi.python.org/pypi/unittest2")
1564 (synopsis "Python unit testing library")
1565 (description
1566 "Unittest2 is a replacement for the unittest module in the Python
1567standard library.")
3f641af0 1568 (license license:psfl)))
6cd9c356
DT
1569
1570(define-public python2-unittest2
1571 (package (inherit python-unittest2)
1572 (name "python2-unittest2")
1573 (version "0.5.1")
1574 (source
1575 (origin
1576 (method url-fetch)
1577 (uri (string-append
1578 "https://pypi.python.org/packages/source/u/unittest2/unittest2-"
1579 version ".tar.gz"))
1580 (sha256
1581 (base32
1582 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda"))))
1583 (inputs
7957fe6c 1584 `(("python2-setuptools" ,python2-setuptools)))
6cd9c356
DT
1585 (arguments
1586 `(#:python ,python-2
1587 #:tests? #f)))) ; no setup.py test command
1588
02f8f804 1589(define-public python-pafy
1590 (package
1591 (name "python-pafy")
1592 (version "0.5.2")
1593 (source
1594 (origin
1595 (method url-fetch)
1596 (uri (pypi-uri "pafy" version))
1597 (sha256
1598 (base32
1599 "1ckvrypyvb7jbqlgwdz0y337ajagjv7dgxyns326nqwypn1wpq0i"))))
1600 (build-system python-build-system)
1601 (propagated-inputs
1602 ;; Youtube-dl is a python package which is imported in the file
1603 ;; "backend_youtube_dl.py", therefore it needs to be propagated.
1604 `(("youtube-dl" ,youtube-dl)))
1605 (home-page "https://np1.github.io/pafy/")
1606 (synopsis "Retrieve YouTube content and metadata")
1607 (description
1608 "@code{pafy} is a python library to retrieve YouTube content and metadata.")
1609 (license license:lgpl3+)))
1610
542ad60f
DT
1611(define-public python-py
1612 (package
1613 (name "python-py")
71c8a804 1614 (version "1.4.31")
542ad60f
DT
1615 (source
1616 (origin
1617 (method url-fetch)
71c8a804 1618 (uri (pypi-uri "py" version))
542ad60f
DT
1619 (sha256
1620 (base32
71c8a804 1621 "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56"))))
542ad60f
DT
1622 (build-system python-build-system)
1623 (inputs
1624 `(("python-setuptools" ,python-setuptools)))
1625 (home-page "http://pylib.readthedocs.org/")
1626 (synopsis "Python library for parsing, I/O, instrospection, and logging")
1627 (description
1628 "Py is a Python library for file name parsing, .ini file parsing, I/O,
1629code introspection, and logging.")
bd3fa666 1630 (license license:expat)))
542ad60f
DT
1631
1632(define-public python2-py
1633 (package-with-python2 python-py))
1634
855d4761
DT
1635(define-public python-pytest
1636 (package
1637 (name "python-pytest")
61a4332d 1638 (version "2.7.3")
855d4761
DT
1639 (source
1640 (origin
1641 (method url-fetch)
1642 (uri (string-append
1643 "https://pypi.python.org/packages/source/p/pytest/pytest-"
1644 version ".tar.gz"))
1645 (sha256
1646 (base32
61a4332d 1647 "1z4yi986f9n0p8qmzmn21m21m8j1x78hk3505f89baqm6pdw7afm"))
855d4761
DT
1648 (modules '((guix build utils)))
1649 (snippet
1650 ;; One of the tests involves the /usr directory, so it fails.
1651 '(substitute* "testing/test_argcomplete.py"
1652 (("def test_remove_dir_prefix\\(self\\):")
1653 "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")))))
1654 (build-system python-build-system)
1655 (inputs
1656 `(("python-setuptools" ,python-setuptools)
1657 ("python-py" ,python-py)
1658 ("python-nose" ,python-nose)
1659 ("python-mock" ,python-mock)))
1660 (home-page "http://pytest.org")
1661 (synopsis "Python testing library")
1662 (description
1663 "Pytest is a testing tool that provides auto-discovery of test modules
1664and functions, detailed info on failing assert statements, modular fixtures,
1665and many external plugins.")
bd3fa666 1666 (license license:expat)))
855d4761
DT
1667
1668(define-public python2-pytest
1669 (package-with-python2 python-pytest))
1670
fca4ff35
LF
1671;; This package is used by Borg until we can upgrade all our Python packages to
1672;; use a more recent pytest.
1673(define-public python-pytest-2.9.2
1674 (package
1675 (inherit python-pytest)
1676 (name "python-pytest")
1677 (version "2.9.2")
1678 (source (origin
1679 (method url-fetch)
1680 (uri (pypi-uri "pytest" version))
1681 (sha256
1682 (base32
1683 "1n6igbc1b138wx1q5gca4pqw1j6nsyicfxds5n0b5989kaxqmh8j"))))
1684 (arguments
1685 `(#:phases
1686 (modify-phases %standard-phases
1687 (add-before 'check 'disable-invalid-test
1688 (lambda _
1689 (substitute* "testing/test_argcomplete.py"
1690 (("def test_remove_dir_prefix" line)
1691 (string-append "@pytest.mark.skip"
1692 "(reason=\"Assumes that /usr exists.\")\n "
1693 line)))
1694 #t)))))))
1695
358c3d61
EF
1696(define-public python-pytest-cov
1697 (package
1698 (name "python-pytest-cov")
545f4a1c 1699 (version "2.2.1")
358c3d61
EF
1700 (source
1701 (origin
1702 (method url-fetch)
1703 (uri (pypi-uri "pytest-cov" version))
1704 (sha256
545f4a1c
EF
1705 (base32
1706 "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8"))))
10468636 1707 (build-system python-build-system)
545f4a1c 1708 (inputs
10468636
EF
1709 `(("python-coverage" ,python-coverage)
1710 ("python-pytest" ,python-pytest)))
10468636
EF
1711 (home-page "https://github.com/pytest-dev/pytest-cov")
1712 (synopsis "Pytest plugin for measuring coverage")
1713 (description
1714 "Pytest-cov produces coverage reports. It supports centralised testing and
1715distributed testing in both @code{load} and @code{each} modes. It also
1716supports coverage of subprocesses.")
545f4a1c
EF
1717 (license license:expat)
1718 (properties `((python2-variant . ,(delay python2-pytest-cov))))))
358c3d61
EF
1719
1720(define-public python2-pytest-cov
545f4a1c
EF
1721 (let ((base (package-with-python2 (strip-python2-variant python-pytest-cov))))
1722 (package
1723 (inherit base)
1724 (inputs `(("python2-setuptools" ,python2-setuptools)
1725 ,@(package-inputs base))))))
358c3d61 1726
6784f2e3
RW
1727(define-public python-pytest-runner
1728 (package
1729 (name "python-pytest-runner")
1730 (version "2.6.2")
1731 (source
1732 (origin
1733 (method url-fetch)
54cd239b 1734 (uri (pypi-uri "pytest-runner" version))
6784f2e3
RW
1735 (sha256
1736 (base32
1737 "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7"))))
1738 (build-system python-build-system)
1739 (arguments
1740 `(#:phases
1741 (modify-phases %standard-phases
1742 ;; The fancy way of setting the version with setuptools_scm does not
1743 ;; seem to work here.
1744 (add-after 'unpack 'set-version
1745 (lambda _
1746 (substitute* "docs/conf.py"
1747 (("version = setuptools_scm\\.get_version\\(root='\\.\\.')")
1748 (string-append "version = \"" ,version "\"")))
1749 #t)))))
1750 (native-inputs
1751 `(("python-pytest" ,python-pytest)
1752 ("python-setuptools-scm" ,python-setuptools-scm)))
54cd239b 1753 (home-page "https://github.com/pytest-dev/pytest-runner")
6784f2e3
RW
1754 (synopsis "Invoke py.test as a distutils command")
1755 (description
1756 "This package provides a @command{pytest-runner} command that
1757@file{setup.py} files can use to run tests.")
54cd239b
EF
1758 (license license:expat)
1759 (properties `((python2-variant . ,(delay python2-pytest-runner))))))
1760
1761(define-public python2-pytest-runner
1762 (let ((base (package-with-python2
1763 (strip-python2-variant python-pytest-runner))))
1764 (package
1765 (inherit base)
1766 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1767 ,@(package-native-inputs base))))))
6784f2e3 1768
44547e51
EF
1769(define-public python-pytest-mock
1770 (package
1771 (name "python-pytest-mock")
1772 (version "1.2")
1773 (source
1774 (origin
1775 (method url-fetch)
1776 (uri (pypi-uri "pytest-mock" version ".zip"))
1777 (sha256
1778 (base32
1779 "03zxar5drzm7ksqyrwypjaza3cri6wqvpr6iam92djvg6znp32gp"))))
1780 (build-system python-build-system)
1781 (native-inputs
1782 `(("unzip" ,unzip)))
1783 (inputs
1784 `(("python-py" ,python-py)
1785 ("python-pytest" ,python-pytest)))
1786 (home-page "https://github.com/pytest-dev/pytest-mock/")
1787 (synopsis "Thin-wrapper around the mock package for easier use with py.test")
1788 (description
1789 "This plugin installs a @code{mocker} fixture which is a thin-wrapper
1790around the patching API provided by the @code{mock} package, but with the
1791benefit of not having to worry about undoing patches at the end of a test.
1792The mocker fixture has the same API as @code{mock.patch}, supporting the
1793same arguments.")
1794 (properties `((python2-variant . ,(delay python2-pytest-mock))))
1795 (license license:expat)))
1796
1797(define-public python2-pytest-mock
1798 (let ((base (package-with-python2
1799 (strip-python2-variant python-pytest-mock))))
1800 (package (inherit base)
1801 (native-inputs
1802 `(("python2-setuptools" ,python2-setuptools)
1803 ,@(package-native-inputs base)))
1804 (inputs
1805 `(("python2-mock" ,python2-mock)
1806 ,@(package-inputs base))))))
1807
8fa58fc9
CAW
1808(define-public python-pytest-xdist
1809 (package
1810 (name "python-pytest-xdist")
1811 (version "1.14")
1812 (source
1813 (origin
1814 (method url-fetch)
1815 (uri (pypi-uri "pytest-xdist" version ".zip"))
1816 (sha256
1817 (base32
de585a7e
HG
1818 "08rn2l39ds60xshs4js787l84pfckksqklfq2wq9x8ig2aci2pja"))
1819 (modules '((guix build utils)))
1820 (snippet
1821 '(begin
1822 ;; Remove pre-compiled .pyc files from source.
1823 (for-each delete-file-recursively
1824 (find-files "." "__pycache__" #:directories? #t))
1825 (for-each delete-file (find-files "." "\\.pyc$"))
1826 #t))))
8fa58fc9
CAW
1827 (build-system python-build-system)
1828 (native-inputs
1829 `(("unzip" ,unzip)
8fa58fc9 1830 ("python-setuptools-scm" ,python-setuptools-scm)))
fbe9abcc
EF
1831 (inputs
1832 `(("python-apipkg" ,python-apipkg)
1833 ("python-execnet" ,python-execnet)
8fa58fc9
CAW
1834 ("python-pytest" ,python-pytest)
1835 ("python-py" ,python-py)))
1836 (home-page
1837 "https://github.com/pytest-dev/pytest-xdist")
1838 (synopsis
1839 "Plugin for py.test with distributed testing and loop-on-failing modes")
1840 (description
1841 "The pytest-xdist plugin extends py.test with some unique test execution
1842modes: parallelization, running tests in boxed subprocesses, the ability
1843to run tests repeatedly when failed, and the ability to run tests on multiple
1844Python interpreters or platforms. It uses rsync to copy the existing
1845program code to a remote location, executes there, and then syncs the
1846result back.")
fbe9abcc
EF
1847 (license license:expat)
1848 (properties `((python2-variant . ,(delay python2-pytest-xdist))))))
8fa58fc9
CAW
1849
1850(define-public python2-pytest-xdist
fbe9abcc
EF
1851 (let ((base (package-with-python2
1852 (strip-python2-variant python-pytest-xdist))))
1853 (package
1854 (inherit base)
1855 (native-inputs `(("python2-setuptools" ,python2-setuptools)
1856 ,@(package-native-inputs base))))))
8fa58fc9 1857
84d24017
DT
1858(define-public python-scripttest
1859 (package
1860 (name "python-scripttest")
1861 (version "1.3")
1862 (source
1863 (origin
1864 (method url-fetch)
1865 (uri (string-append
1866 "https://pypi.python.org/packages/source/s/scripttest/scripttest-"
1867 version ".tar.gz"))
1868 (sha256
1869 (base32
1870 "0f4w84k8ck82syys7yg9maz93mqzc8p5ymis941x034v44jzq74m"))))
1871 (build-system python-build-system)
1872 (inputs
1873 `(("python-setuptools" ,python-setuptools)
1874 ("python-pytest" ,python-pytest)))
1875 (home-page "http://pythonpaste.org/scripttest/")
1876 (synopsis "Python library to test command-line scripts")
1877 (description "Scripttest is a Python helper library for testing
1878interactive command-line applications. With it you can run a script in a
1879subprocess and see the output as well as any file modifications.")
bd3fa666 1880 (license license:expat)))
84d24017
DT
1881
1882(define-public python2-scripttest
1883 (package-with-python2 python-scripttest))
1884
d8fa80e1
DT
1885(define-public python-testtools
1886 (package
1887 (name "python-testtools")
1888 (version "1.0.0")
1889 (source
1890 (origin
1891 (method url-fetch)
1892 (uri (string-append
1893 "https://pypi.python.org/packages/source/t/testtools/testtools-"
1894 version ".tar.gz"))
1895 (sha256
1896 (base32
1897 "1dyml28ykpl5jb9khdmcdvhy1cxqingys6qvj2k04fzlaj6z3bbx"))))
1898 (build-system python-build-system)
0e88cbf8
CR
1899 (propagated-inputs
1900 `(("python-mimeparse" ,python-mimeparse)))
d8fa80e1
DT
1901 (inputs
1902 `(("python-setuptools" ,python-setuptools)
d8fa80e1
DT
1903 ("python-extras" ,python-extras)))
1904 (home-page "https://github.com/testing-cabal/testtools")
1905 (synopsis
1906 "Extensions to the Python standard library unit testing framework")
1907 (description
1908 "Testtools extends the Python standard library unit testing framework to
1909provide matchers, more debugging information, and cross-Python
1910compatibility.")
3f641af0 1911 (license license:psfl)))
d8fa80e1
DT
1912
1913(define-public python2-testtools
1914 (package-with-python2 python-testtools))
1915
5bf3afea
DT
1916(define-public python-testscenarios
1917 (package
1918 (name "python-testscenarios")
1919 (version "0.4")
1920 (source
1921 (origin
1922 (method url-fetch)
1923 (uri (string-append
1924 "https://pypi.python.org/packages/source/t/testscenarios/testscenarios-"
1925 version ".tar.gz"))
1926 (sha256
1927 (base32
1928 "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg"))))
1929 (build-system python-build-system)
1930 (inputs
1931 `(("python-setuptools" ,python-setuptools)
1932 ("python-testtools" ,python-testtools)
1933 ("python-mimeparse" ,python-mimeparse)))
1934 (home-page "https://launchpad.net/testscenarios")
1935 (synopsis "Pyunit extension for dependency injection")
1936 (description
1937 "Testscenarios provides clean dependency injection for Python unittest
1938style tests.")
3f641af0 1939 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
5bf3afea
DT
1940
1941(define-public python2-testscenarios
1942 (package-with-python2 python-testscenarios))
1943
dac79ecc
DT
1944(define-public python-testresources
1945 (package
1946 (name "python-testresources")
1947 (version "0.2.7")
1948 (source
1949 (origin
1950 (method url-fetch)
1951 (uri (string-append
1952 "https://pypi.python.org/packages/source/t/testresources/testresources-"
1953 version ".tar.gz"))
1954 (sha256
1955 (base32
1956 "0cbj3plbllyz42c4b5xxgwaa7mml54lakslrn4kkhinxhdri22md"))))
1957 (build-system python-build-system)
1958 (inputs
1959 `(("python-setuptools" ,python-setuptools)))
1960 (home-page "https://launchpad.net/testresources")
1961 (synopsis
1962 "Pyunit extension for managing test resources")
1963 (description
1964 "Testresources is an extension to Python's unittest to allow declarative
1965use of resources by test cases.")
3f641af0 1966 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
dac79ecc
DT
1967
1968(define-public python2-testresources
1969 (package-with-python2 python-testresources))
1970
070ab058
DT
1971(define-public python-subunit
1972 (package
1973 (name "python-subunit")
1974 (version "0.0.21")
1975 (source
1976 (origin
1977 (method url-fetch)
1978 (uri (string-append
1979 "https://pypi.python.org/packages/source/p/python-subunit/python-subunit-"
1980 version ".tar.gz"))
1981 (sha256
1982 (base32
1983 "1nkw9wfbvizmpajbj3in8ns07g7lwkiv8hip14jjlwk3cacls6jv"))))
1984 (build-system python-build-system)
1985 (inputs
1986 `(("python-setuptools" ,python-setuptools)
1987 ("python-testtools" ,python-testtools)
1988 ("python-mimeparse" ,python-mimeparse)
1989 ("python-testscenarios" ,python-testscenarios)))
1990 (home-page "http://launchpad.net/subunit")
1991 (synopsis "Python implementation of the subunit protocol")
1992 (description
1993 "Python-subunit is a Python implementation of the subunit test streaming
1994protocol.")
3f641af0 1995 (license (list license:bsd-3 license:asl2.0)))) ; at the user's option
070ab058
DT
1996
1997(define-public python2-subunit
1998 (package-with-python2 python-subunit))
1999
7787ef76
CR
2000;; Recent versions of python-fixtures need a recent version of python-pbr,
2001;; which needs a recent version of python-fixtures. To fix this circular
2002;; dependency, we keep old versions of python-fixtures and python-pbr to
2003;; bootstrap the whole thing:
2004;; - python-fixtures-0.3.16 is used to build python-pbr-0.11
2005;; - python-pbr-0.11 is used to build python-fixtures
2006;; - python-fixtures is used to build python-pbr
2007(define-public python-fixtures-0.3.16
cd49454b
DT
2008 (package
2009 (name "python-fixtures")
2010 (version "0.3.16")
2011 (source
2012 (origin
2013 (method url-fetch)
2014 (uri (string-append
2015 "https://pypi.python.org/packages/source/f/fixtures/fixtures-"
2016 version ".tar.gz"))
2017 (sha256
2018 (base32
2019 "0x9r2gwilcig5g54k60bxzg96zabizq1855lrprlb4zckalp9asc"))))
2020 (build-system python-build-system)
2021 (inputs
2022 `(("python-setuptools" ,python-setuptools)))
2023 (arguments
2024 '(#:tests? #f)) ; no setup.py test command
2025 (home-page "https://launchpad.net/python-fixtures")
2026 (synopsis "Python test fixture library")
2027 (description
2028 "Fixtures provides a way to create reusable state, useful when writing
2029Python tests.")
3f641af0 2030 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
cd49454b 2031
7787ef76
CR
2032(define-public python2-fixtures-0.3.16
2033 (package-with-python2 python-fixtures-0.3.16))
2034
2035(define-public python-pbr-0.11
2036 (package
2037 (name "python-pbr")
2038 (version "0.11.0")
2039 (source
2040 (origin
2041 (method url-fetch)
2042 (uri (string-append
2043 "https://pypi.python.org/packages/source/p/pbr/pbr-"
2044 version ".tar.gz"))
2045 (sha256
2046 (base32
2047 "0v9gb7gyqf7q9s99l0nnjj9ww9b0jvyqlwm4d56pcyinxydddw6p"))))
2048 (build-system python-build-system)
2049 (arguments
2050 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2051 (inputs
2052 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
2053 ("python-pip" ,python-pip)
2054 ("python-setuptools" ,python-setuptools)))
2055 (home-page "https://launchpad.net/pbr")
2056 (synopsis "Change the default behavior of Python’s setuptools")
2057 (description
2058 "Python Build Reasonableness (PBR) is a library that injects some useful
2059and sensible default behaviors into your setuptools run.")
3f641af0 2060 (license license:asl2.0)))
7787ef76
CR
2061
2062(define-public python2-pbr-0.11
2063 (package-with-python2 python-pbr-0.11))
2064
1ef09c0c 2065(define-public python-pbr
e25f0174
BW
2066 (package
2067 (name "python-pbr")
1ef09c0c
BW
2068 (version "1.8.1")
2069 (source
e25f0174
BW
2070 (origin
2071 (method url-fetch)
2072 (uri (string-append
2073 "https://pypi.python.org/packages/source/p/pbr/pbr-"
2074 version
2075 ".tar.gz"))
2076 (sha256
2077 (base32
2078 "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2"))))
1ef09c0c 2079 (build-system python-build-system)
e25f0174
BW
2080 (arguments
2081 `(#:tests? #f)) ;; Most tests seem to use the Internet.
2082 (propagated-inputs
2083 `(("python-testrepository" ,python-testrepository)
2084 ("git" ,git))) ;; pbr actually uses the "git" binary.
1ef09c0c 2085 (inputs
e25f0174
BW
2086 `(("python-fixtures" ,python-fixtures)
2087 ("python-mimeparse" ,python-mimeparse)
2088 ("python-mock" ,python-mock)
2089 ("python-setuptools" ,python-setuptools)
2090 ("python-six" ,python-six)
2091 ("python-sphinx" ,python-sphinx)
2092 ("python-testrepository" ,python-testrepository)
2093 ("python-testresources" ,python-testresources)
2094 ("python-testscenarios" ,python-testscenarios)
2095 ("python-testtools" ,python-testtools)
2096 ("python-virtualenv" ,python-virtualenv)))
2097 (home-page "https://launchpad.net/pbr")
2098 (synopsis "Change the default behavior of Python’s setuptools")
2099 (description
2100 "Python Build Reasonableness (PBR) is a library that injects some useful
2101and sensible default behaviors into your setuptools run.")
3f641af0 2102 (license license:asl2.0)))
1ef09c0c
BW
2103
2104(define-public python2-pbr
e25f0174 2105 (package-with-python2 python-pbr))
1ef09c0c 2106
7787ef76
CR
2107(define-public python-fixtures
2108 (package
2109 (name "python-fixtures")
13fcc6df 2110 (version "1.4.0")
7787ef76
CR
2111 (source
2112 (origin
2113 (method url-fetch)
13fcc6df 2114 (uri (pypi-uri "fixtures" version))
7787ef76
CR
2115 (sha256
2116 (base32
13fcc6df 2117 "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
7787ef76
CR
2118 (build-system python-build-system)
2119 (propagated-inputs
2120 `(("python-six" ,python-six)
2121 ("python-pbr-0.11" ,python-pbr-0.11)))
2122 (inputs
2123 `(("python-pip" ,python-pip)
2124 ("python-setuptools" ,python-setuptools)
2125 ;; Tests
2126 ("python-testtools" ,python-testtools)))
2127 (arguments
2128 '(#:tests? #f)) ; no setup.py test command
2129 (home-page "https://launchpad.net/python-fixtures")
2130 (synopsis "Python test fixture library")
2131 (description
2132 "Fixtures provides a way to create reusable state, useful when writing
2133Python tests.")
3f641af0 2134 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
7787ef76 2135
cd49454b
DT
2136(define-public python2-fixtures
2137 (package-with-python2 python-fixtures))
2138
b24a0c00
DT
2139(define-public python-testrepository
2140 (package
2141 (name "python-testrepository")
2142 (version "0.0.20")
2143 (source
2144 (origin
2145 (method url-fetch)
2146 (uri (string-append
2147 "https://pypi.python.org/packages/source/t/testrepository/testrepository-"
2148 version ".tar.gz"))
2149 (sha256
2150 (base32
2151 "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
2152 (build-system python-build-system)
05de40c5 2153 (propagated-inputs
7787ef76 2154 `(("python-fixtures-0.3.16" ,python-fixtures-0.3.16)
05de40c5 2155 ("python-testtools" ,python-testtools)))
b24a0c00
DT
2156 (inputs
2157 `(("python-setuptools" ,python-setuptools)
b24a0c00 2158 ("python-subunit" ,python-subunit)
b24a0c00
DT
2159 ("python-mimeparse" ,python-mimeparse)))
2160 (home-page "https://launchpad.net/testrepository")
2161 (synopsis "Database for Python test results")
2162 (description "Testrepository provides a database of test results which can
2163be used as part of a developer's workflow to check things such as what tests
2164have failed since the last commit or what tests are currently failing.")
3f641af0 2165 (license (list license:bsd-3 license:asl2.0)))) ; at user's option
b24a0c00
DT
2166
2167(define-public python2-testrepository
2168 (package-with-python2 python-testrepository))
2169
243a009a
DT
2170(define-public python-coverage
2171 (package
2172 (name "python-coverage")
4d4cf3dd 2173 (version "4.1")
243a009a
DT
2174 (source
2175 (origin
2176 (method url-fetch)
82a3c582 2177 (uri (pypi-uri "coverage" version))
243a009a
DT
2178 (sha256
2179 (base32
4d4cf3dd 2180 "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1"))))
243a009a
DT
2181 (build-system python-build-system)
2182 (inputs
2183 `(("python-setuptools" ,python-setuptools)))
2184 (home-page "http://nedbatchelder.com/code/coverage")
2185 (synopsis "Code coverage measurement for Python")
2186 (description
2187 "Coverage measures code coverage, typically during test execution. It
2188uses the code analysis tools and tracing hooks provided in the Python standard
2189library to determine which lines are executable, and which have been
2190executed.")
3f641af0 2191 (license license:bsd-3)))
243a009a
DT
2192
2193(define-public python2-coverage
2194 (package-with-python2 python-coverage))
2195
12f839fd
EF
2196(define-public python-cov-core
2197 (package
2198 (name "python-cov-core")
2199 (version "1.15.0")
2200 (source
2201 (origin
2202 (method url-fetch)
2203 (uri (pypi-uri "cov-core" version))
2204 (sha256
2205 (base32
2206 "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a"))))
2207 (build-system python-build-system)
2208 (native-inputs
2209 `(("python-coverage" ,python-coverage)))
2210 (home-page "https://github.com/schlamar/cov-core")
2211 (synopsis "plugin core for use by pytest-cov, nose-cov and nose2-cov")
2212 (description
2213 "This is a library package for use by pytest-cov, nose-cov and nose2-cov.
2214It is useful for developing coverage plugins for these testing frameworks.")
8120205c
EF
2215 (license license:expat)
2216 (properties `((python2-variant . ,(delay python2-cov-core))))))
12f839fd
EF
2217
2218(define-public python2-cov-core
8120205c 2219 (let ((cov-core (package-with-python2 (strip-python2-variant python-cov-core))))
12f839fd
EF
2220 (package (inherit cov-core)
2221 (native-inputs
2222 `(("python2-setuptools" ,python2-setuptools)
2223 ,@(package-native-inputs cov-core))))))
2224
041358fb
DT
2225(define-public python-discover
2226 (package
2227 (name "python-discover")
2228 (version "0.4.0")
2229 (source
2230 (origin
2231 (method url-fetch)
2232 (uri (string-append
2233 "https://pypi.python.org/packages/source/d/discover/discover-"
2234 version ".tar.gz"))
2235 (sha256
2236 (base32
2237 "0y8d0zwiqar51kxj8lzmkvwc3b8kazb04gk5zcb4nzg5k68zmhq5"))))
2238 (build-system python-build-system)
2239 (inputs
2240 `(("python-setuptools" ,python-setuptools)))
2241 (home-page "http://pypi.python.org/pypi/discover/")
2242 (synopsis
2243 "Python test discovery for unittest")
2244 (description
2245 "Discover provides test discovery for unittest, a feature that has been
e881752c 2246backported from Python 2.7 for Python 2.4+.")
3f641af0 2247 (license license:bsd-3)))
041358fb
DT
2248
2249(define-public python2-discover
2250 (package-with-python2 python-discover))
2251
a480bc41
EB
2252(define-public behave
2253 (package
2254 (name "behave")
287cfd1a 2255 (version "1.2.5")
a480bc41
EB
2256 (source (origin
2257 (method url-fetch)
287cfd1a 2258 (uri (pypi-uri "behave" version ".tar.bz2"))
a480bc41
EB
2259 (sha256
2260 (base32
287cfd1a 2261 "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c"))))
a480bc41
EB
2262 (build-system python-build-system)
2263 (inputs
2264 `(("python-setuptools" ,python-setuptools)
2265 ("python-six" ,python-six)
a480bc41
EB
2266 ("python-parse" ,python-parse)
2267 ("python-parse-type" ,python-parse-type)))
2268 (arguments `(#:tests? #f)) ;TODO: tests require nose>=1.3 and
2269 ;PyHamcrest>=1.8
2270 (home-page "http://github.com/behave/behave")
2271 (synopsis "Python behavior-driven development")
2272 (description
2273 "Behave is a tool for behavior-driven development in python.
2274Behavior-driven development (or BDD) is an agile software development
2275technique that encourages collaboration between developers, QA and
2276non-technical or business participants in a software project. Behave uses
2277tests written in a natural language style, backed up by Python code.")
3f641af0 2278 (license license:x11)))
c7303d3c
DT
2279
2280(define-public python-exif-read
2281 (package
2282 (name "python-exif-read")
2a2d0981 2283 (version "2.1.2")
c7303d3c
DT
2284 (source (origin
2285 (method url-fetch)
2a2d0981 2286 (uri (pypi-uri "ExifRead" version))
c7303d3c
DT
2287 (sha256
2288 (base32
2a2d0981 2289 "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
c7303d3c
DT
2290 (build-system python-build-system)
2291 (inputs
2292 `(("python-setuptools" ,python-setuptools)))
2293 (arguments `(#:tests? #f)) ; no tests
2294 (home-page "https://github.com/ianare/exif-py")
2295 (synopsis "Python library to extract EXIF data from image files")
2296 (description
2297 "ExifRead is a Python library to extract EXIF data from tiff and jpeg
2298files.")
3f641af0 2299 (license license:bsd-3)))
c7303d3c
DT
2300
2301(define-public python2-exif-read
2302 (package-with-python2 python-exif-read))
d5f89b22
DT
2303
2304(define-public python-pyld
2305 (package
2306 (name "python-pyld")
af1ab773 2307 (version "0.6.8")
d5f89b22
DT
2308 (source (origin
2309 (method url-fetch)
af1ab773 2310 (uri (pypi-uri "PyLD" version))
d5f89b22
DT
2311 (sha256
2312 (base32
af1ab773 2313 "0k881ffazpf8q1z8862g4bb3pzwpnz9whrci2mf311mvn1qbyqad"))))
d5f89b22
DT
2314 (build-system python-build-system)
2315 (inputs
2316 `(("python-setuptools" ,python-setuptools)))
2317 (arguments `(#:tests? #f)) ; no tests
2318 (home-page "http://github.com/digitalbazaar/pyld")
2319 (synopsis "Python implementation of the JSON-LD specification")
2320 (description
2321 "PyLD is an implementation of the JSON-LD specification.")
3f641af0 2322 (license license:bsd-3)))
d5f89b22
DT
2323
2324(define-public python2-pyld
2325 (package-with-python2 python-pyld))
3a1f9a68
DT
2326
2327(define-public python-certifi
2328 (package
2329 (name "python-certifi")
b2a2232c 2330 (version "2016.8.31")
3a1f9a68
DT
2331 (source (origin
2332 (method url-fetch)
9a41f443 2333 (uri (pypi-uri "certifi" version))
3a1f9a68
DT
2334 (sha256
2335 (base32
b2a2232c 2336 "06c9dcyv8ss050gkv5xjivbxhm6qm0s9vzy4r33wqabgv118lw7p"))))
3a1f9a68
DT
2337 (build-system python-build-system)
2338 (inputs
2339 `(("python-setuptools" ,python-setuptools)))
2340 (arguments `(#:tests? #f)) ; no tests
2341 (home-page "http://python-requests.org/")
2342 (synopsis "Python CA certificate bundle")
2343 (description
2344 "Certifi is a Python library that contains a CA certificate bundle, which
2345is used by the Requests library to verify HTTPS requests.")
3f641af0 2346 (license license:asl2.0)))
3a1f9a68
DT
2347
2348(define-public python2-certifi
2349 (package-with-python2 python-certifi))
e6cfbd36 2350
12c270dd
RW
2351(define-public python-click
2352 (package
2353 (name "python-click")
43accb58 2354 (version "6.6")
12c270dd
RW
2355 (source
2356 (origin
2357 (method url-fetch)
375f224b 2358 (uri (pypi-uri "click" version))
12c270dd 2359 (sha256
43accb58
LF
2360 (base32
2361 "1sggipyz52crrybwbr9xvwxd4aqigvplf53k9w3ygxmzivd1jsnc"))))
12c270dd 2362 (build-system python-build-system)
e2ab5a09
BW
2363 (arguments
2364 `(#:phases
2365 (modify-phases %standard-phases
2366 (add-after 'unpack 'fix-paths
2367 (lambda* (#:key inputs #:allow-other-keys)
2368 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
2369 "cross-libc" "libc"))))
2370 (substitute* "click/_unicodefun.py"
2371 (("'locale'")
2372 (string-append "'" glibc "/bin/locale'"))))
2373 #t)))))
12c270dd
RW
2374 (native-inputs
2375 `(("python-setuptools" ,python-setuptools)))
2376 (home-page "http://click.pocoo.org")
2377 (synopsis "Command line library for Python")
2378 (description
2379 "Click is a Python package for creating command line interfaces in a
2380composable way with as little code as necessary. Its name stands for
2381\"Command Line Interface Creation Kit\". It's highly configurable but comes
2382with sensible defaults out of the box.")
3f641af0 2383 (license license:bsd-3)))
12c270dd
RW
2384
2385(define-public python2-click
2386 (package-with-python2 python-click))
2387
addc808d
EF
2388(define-public python-wheel
2389 (package
2390 (name "python-wheel")
40981b5c 2391 (version "0.29.0")
e1ba0749
EF
2392 (source
2393 (origin
2394 (method url-fetch)
2395 (uri (pypi-uri "wheel" version))
2396 (sha256
2397 (base32
40981b5c 2398 "0j0n38hg1jvrmyy68f9ikvzq1gs9g0sx4ws7maf8wi3bwbbqmfqy"))))
e1ba0749
EF
2399 (build-system python-build-system)
2400 (native-inputs
2401 `(("python-setuptools" ,python-setuptools)
2402 ("python-jsonschema" ,python-jsonschema)
2403 ("python-pytest-cov" ,python-pytest-cov)))
2404 (home-page "https://bitbucket.org/pypa/wheel/")
2405 (synopsis "Format for built Python packages")
2406 (description
2407 "A wheel is a ZIP-format archive with a specially formatted filename and
2408the @code{.whl} extension. It is designed to contain all the files for a PEP
2409376 compatible install in a way that is very close to the on-disk format. Many
2410packages will be properly installed with only the @code{Unpack} step and the
2411unpacked archive preserves enough information to @code{Spread} (copy data and
2412scripts to their final locations) at any later time. Wheel files can be
2413installed with a newer @code{pip} or with wheel's own command line utility.")
8ad4ae20
LF
2414 (license license:expat)
2415 (properties `((python2-variant . ,(delay python2-wheel))))))
addc808d
EF
2416
2417(define-public python2-wheel
8ad4ae20
LF
2418 (let ((wheel (package-with-python2
2419 (strip-python2-variant python-wheel))))
264ae686 2420 (package (inherit wheel)
8ad4ae20
LF
2421 (native-inputs `(("python2-functools32" ,python2-functools32)
2422 ,@(package-native-inputs wheel))))))
2423
addc808d 2424
ae641128 2425(define-public python-requests
e6cfbd36 2426 (package
ae641128 2427 (name "python-requests")
74a066f9 2428 (version "2.9.1")
e6cfbd36
DT
2429 (source (origin
2430 (method url-fetch)
5d691657 2431 (uri (pypi-uri "requests" version))
e6cfbd36
DT
2432 (sha256
2433 (base32
74a066f9 2434 "0zsqrzlybf25xscgi7ja4s48y2abf9wvjkn47wh984qgs1fq2xy5"))))
e6cfbd36 2435 (build-system python-build-system)
5d691657 2436 (native-inputs
6a308947
EF
2437 `(("python-setuptools" ,python-setuptools)
2438 ("python-py" ,python-py)
5d691657
EF
2439 ("python-pytest" ,python-pytest)
2440 ("python-pytest-cov" ,python-pytest-cov)
2441 ("python-wheel" ,python-wheel)))
e6cfbd36
DT
2442 (home-page "http://python-requests.org/")
2443 (synopsis "Python HTTP library")
2444 (description
2445 "Requests is a Python HTTP client library. It aims to be easier to use
2446than Python’s urllib2 library.")
3f641af0 2447 (license license:asl2.0)))
864b5211 2448
e9005180
DT
2449;; Some software requires an older version of Requests, notably Docker
2450;; Compose.
2451(define-public python-requests-2.7
2452 (package (inherit python-requests)
2453 (version "2.7.0")
2454 (source (origin
2455 (method url-fetch)
2456 (uri (pypi-uri "requests" version))
2457 (sha256
2458 (base32
2459 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
2460
ae641128 2461(define-public python2-requests
8ad4ae20 2462 (package-with-python2 python-requests))
ae641128 2463
ea521b42
DT
2464(define-public python-vcversioner
2465 (package
2466 (name "python-vcversioner")
2467 (version "2.14.0.0")
2468 (source
2469 (origin
2470 (method url-fetch)
2471 (uri (pypi-uri "vcversioner" version))
2472 (sha256
2473 (base32
2474 "11ivq1bm7v0yb4nsfbv9m7g7lyjn112gbvpjnjz8nv1fx633dm5c"))))
2475 (build-system python-build-system)
2476 (inputs
2477 `(("python-setuptools" ,python-setuptools)))
2478 (synopsis "Python library for version number discovery")
2479 (description "Vcversioner is a Python library that inspects tagging
2480information in a variety of version control systems in order to discover
2481version numbers.")
2482 (home-page "https://github.com/habnabit/vcversioner")
3f641af0 2483 (license license:isc)))
ea521b42
DT
2484
2485(define-public python2-vcversioner
2486 (package-with-python2 python-vcversioner))
ae641128 2487
864b5211
DT
2488(define-public python-jsonschema
2489 (package
2490 (name "python-jsonschema")
b3667afb 2491 (version "2.5.1")
864b5211
DT
2492 (source (origin
2493 (method url-fetch)
2494 (uri
2495 (string-append
2496 "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-"
2497 version ".tar.gz"))
2498 (sha256
2499 (base32
b3667afb 2500 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
864b5211 2501 (build-system python-build-system)
eaba9d66
MB
2502 (native-inputs
2503 `(("python-vcversioner" ,python-vcversioner)))
864b5211
DT
2504 (home-page "http://github.com/Julian/jsonschema")
2505 (synopsis "Implementation of JSON Schema for Python")
2506 (description
2507 "Jsonschema is an implementation of JSON Schema for Python.")
a14600ec
LF
2508 (license license:expat)
2509 (properties `((python2-variant . ,(delay python2-jsonschema))))))
864b5211
DT
2510
2511(define-public python2-jsonschema
a14600ec
LF
2512 (let ((jsonschema (package-with-python2
2513 (strip-python2-variant python-jsonschema))))
264ae686 2514 (package (inherit jsonschema)
eaba9d66
MB
2515 (native-inputs
2516 `(("python2-setuptools" ,python2-setuptools)
2517 ,@(package-native-inputs jsonschema)))
2518 (propagated-inputs
2519 `(("python2-functools32" ,python2-functools32))))))
850189b8
DT
2520
2521(define-public python-unidecode
2522 (package
2523 (name "python-unidecode")
8925d4f3 2524 (version "0.04.18")
850189b8
DT
2525 (source (origin
2526 (method url-fetch)
8925d4f3 2527 (uri (pypi-uri "Unidecode" version))
850189b8
DT
2528 (sha256
2529 (base32
8925d4f3 2530 "12hhblqy1ajvidm38im4171x4arg83pfmziyn53nizp29p3m14gi"))))
850189b8
DT
2531 (build-system python-build-system)
2532 (inputs
2533 `(("python-setuptools" ,python-setuptools)))
2534 (home-page "https://pypi.python.org/pypi/Unidecode")
2535 (synopsis "ASCII transliterations of Unicode text")
2536 (description
2537 "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
2538useful when integrating with legacy code that doesn't support Unicode, or for
2539ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
2540machine identifiers from human-readable Unicode strings that should still be
2541somewhat intelligeble.")
3f641af0 2542 (license license:gpl2+)))
850189b8
DT
2543
2544(define-public python2-unidecode
2545 (package-with-python2 python-unidecode))
6d45fef4
DT
2546
2547(define-public python-pyjwt
2548 (package
2549 (name "python-pyjwt")
eb31d4b4 2550 (version "1.4.0")
6d45fef4
DT
2551 (source
2552 (origin
2553 (method url-fetch)
eb31d4b4 2554 (uri (pypi-uri "PyJWT" version))
6d45fef4
DT
2555 (sha256
2556 (base32
eb31d4b4 2557 "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1"))))
6d45fef4 2558 (build-system python-build-system)
eb31d4b4
EF
2559 (native-inputs
2560 `(("python-setuptools" ,python-setuptools)
2561 ("python-pytest-runner" ,python-pytest-runner)))
6d45fef4
DT
2562 (arguments
2563 '(#:tests? #f)) ; test suite doesn't work
2564 (home-page "http://github.com/progrium/pyjwt")
2565 (synopsis "JSON Web Token implementation in Python")
2566 (description
2567 "PyJWT is a JSON Web Token implementation written in Python.")
bd3fa666 2568 (license license:expat)))
6d45fef4
DT
2569
2570(define-public python2-pyjwt
2571 (package-with-python2 python-pyjwt))
2572
2cec1f6f
DT
2573(define-public python-oauthlib
2574 (package
2575 (name "python-oauthlib")
bde2171d 2576 (version "1.0.3")
2cec1f6f
DT
2577 (source (origin
2578 (method url-fetch)
bde2171d 2579 (uri (pypi-uri "oauthlib" version))
2cec1f6f
DT
2580 (sha256
2581 (base32
bde2171d 2582 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
2cec1f6f 2583 (build-system python-build-system)
bde2171d 2584 (native-inputs
59f151ec 2585 `(("python-coverage" ,python-coverage)
2cec1f6f
DT
2586 ("python-nose" ,python-nose)
2587 ("python-mock" ,python-mock)))
bde2171d
EF
2588 (inputs
2589 `(("python-blinker" ,python-blinker)
2590 ("python-cryptography" ,python-cryptography)
2591 ("python-pyjwt" ,python-pyjwt)))
2cec1f6f
DT
2592 (home-page "https://github.com/idan/oauthlib")
2593 (synopsis "OAuth implementation for Python")
2594 (description
2595 "Oauthlib is a generic, spec-compliant, thorough implementation of the
2596OAuth request-signing logic.")
3f641af0 2597 (license license:bsd-3)
59f151ec 2598 (properties `((python2-variant . ,(delay python2-oauthlib))))))
2cec1f6f
DT
2599
2600(define-public python2-oauthlib
59f151ec 2601 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
2cec1f6f
DT
2602 (package
2603 (inherit base)
59f151ec
EF
2604 (native-inputs `(("python2-setuptools" ,python2-setuptools)
2605 ("python2-unittest2" ,python2-unittest2)
2606 ,@(package-native-inputs base))))))
ec5dbb5c
DT
2607
2608(define-public python-itsdangerous
2609 (package
2610 (name "python-itsdangerous")
2611 (version "0.24")
2612 (source
2613 (origin
2614 (method url-fetch)
2615 (uri (string-append
2616 "https://pypi.python.org/packages/source/i/itsdangerous/itsdangerous-"
2617 version ".tar.gz"))
2618 (sha256
2619 (base32
2620 "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb"))))
2621 (build-system python-build-system)
ec5dbb5c
DT
2622 (home-page "http://github.com/mitsuhiko/itsdangerous")
2623 (synopsis "Python library for passing data to/from untrusted environments")
2624 (description
2625 "Itsdangerous provides various helpers to pass trusted data to untrusted
2626environments and back.")
3f641af0 2627 (license license:bsd-3)
194d0d98 2628 (properties `((python2-variant . ,(delay python2-itsdangerous))))))
ec5dbb5c
DT
2629
2630(define-public python2-itsdangerous
194d0d98
EF
2631 (let ((base (package-with-python2
2632 (strip-python2-variant python-itsdangerous))))
2633 (package
2634 (inherit base)
2635 (native-inputs `(("python2-setuptools" ,python2-setuptools)
2636 ,@(package-native-inputs base))))))
5731cae3 2637
8d12be1e
RW
2638(define-public python-pyyaml
2639 (package
2640 (name "python-pyyaml")
2641 (version "3.11")
2642 (source
2643 (origin
2644 (method url-fetch)
2645 (uri (string-append
2646 "https://pypi.python.org/packages/source/P/PyYAML/PyYAML-"
2647 version ".tar.gz"))
2648 (sha256
2649 (base32
2650 "1s26125vfnskng58ym37xhwv8v0mm95b2cwbjfag8prfhy596v63"))))
2651 (build-system python-build-system)
2652 (inputs
2653 `(("libyaml" ,libyaml)))
2654 (native-inputs
2655 `(("python-setuptools" ,python-setuptools)))
2656 (home-page "http://pyyaml.org/wiki/PyYAML")
2657 (synopsis "YAML parser and emitter for Python")
2658 (description
2659 "PyYAML is a YAML parser and emitter for Python. PyYAML features a
2660complete YAML 1.1 parser, Unicode support, pickle support, capable extension
2661API, and sensible error messages. PyYAML supports standard YAML tags and
2662provides Python-specific tags that allow to represent an arbitrary Python
2663object.")
2664 (license license:expat)))
2665
2666(define-public python2-pyyaml
2667 (package-with-python2 python-pyyaml))
2668
5731cae3
DT
2669(define-public python-virtualenv
2670 (package
2671 (name "python-virtualenv")
58d04dba 2672 (version "15.0.3")
5731cae3
DT
2673 (source
2674 (origin
2675 (method url-fetch)
17804240 2676 (uri (pypi-uri "virtualenv" version))
5731cae3
DT
2677 (sha256
2678 (base32
58d04dba 2679 "07cbajzk8l05k5zhlw0b9wbf2is65bl9v6zrn2a0iyn57w6pd73d"))))
5731cae3 2680 (build-system python-build-system)
17804240
EF
2681 (arguments
2682 `(#:phases
2683 (modify-phases %standard-phases
58d04dba
RW
2684 (replace 'check
2685 (lambda _
2686 ;; Disable failing test. See upstream bug report
2687 ;; https://github.com/pypa/virtualenv/issues/957
2688 (substitute* "tests/test_virtualenv.py"
2689 (("skipif.*") "skipif(True, reason=\"Guix\")\n"))
2690 (zero? (system* "py.test")))))))
5731cae3
DT
2691 (inputs
2692 `(("python-setuptools" ,python-setuptools)
2693 ("python-mock" ,python-mock)
17804240 2694 ("python-pytest" ,python-pytest)))
5731cae3
DT
2695 (home-page "https://virtualenv.pypa.io/")
2696 (synopsis "Virtual Python environment builder")
2697 (description
2698 "Virtualenv is a tool to create isolated Python environments.")
bd3fa666 2699 (license license:expat)))
5731cae3
DT
2700
2701(define-public python2-virtualenv
2702 (package-with-python2 python-virtualenv))
8176d4d5
DT
2703
2704(define-public python-markupsafe
2705 (package
2706 (name "python-markupsafe")
2707 (version "0.23")
2708 (source
2709 (origin
2710 (method url-fetch)
2711 (uri (string-append
2712 "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-"
2713 version ".tar.gz"))
2714 (sha256
2715 (base32
2716 "1hvip33wva3fnmvfp9x5klqri7hpl1hkgqmjbss18nmrb7zimv54"))))
2717 (build-system python-build-system)
2718 (inputs
2719 `(("python-setuptools" ,python-setuptools)))
2720 (home-page "http://github.com/mitsuhiko/markupsafe")
2721 (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
2722 (description
2723 "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
2724for Python.")
3f641af0 2725 (license license:bsd-3)))
8176d4d5
DT
2726
2727(define-public python2-markupsafe
2728 (package-with-python2 python-markupsafe))
fe34f0d1
DT
2729
2730(define-public python-jinja2
2731 (package
2732 (name "python-jinja2")
e98149b3 2733 (version "2.8")
fe34f0d1
DT
2734 (source
2735 (origin
2736 (method url-fetch)
e98149b3 2737 (uri (pypi-uri "Jinja2" version))
fe34f0d1
DT
2738 (sha256
2739 (base32
e98149b3 2740 "1x0v41lp5m1pjix3l46zx02b7lqp2hflgpnxwkywxynvi3zz47xw"))))
fe34f0d1
DT
2741 (build-system python-build-system)
2742 (inputs
2743 `(("python-setuptools" ,python-setuptools)
2744 ("python-markupsafe" ,python-markupsafe)))
2745 (home-page "http://jinja.pocoo.org/")
2746 (synopsis "Python template engine")
2747 (description
2748 "Jinja2 is a small but fast and easy to use stand-alone template engine
2749written in pure Python.")
3f641af0 2750 (license license:bsd-3)))
fe34f0d1
DT
2751
2752(define-public python2-jinja2
2753 (package-with-python2 python-jinja2))
3580ab8b 2754
f7d17ac7
EE
2755(define-public python-pystache
2756 (package
2757 (name "python-pystache")
2758 (version "0.5.4")
2759 (source (origin
2760 (method url-fetch)
2761 (uri (pypi-uri "pystache" version))
2762 (sha256
2763 (base32
2764 "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp"))))
2765 (build-system python-build-system)
2766 (native-inputs
2767 `(("python-setuptools" ,python-setuptools)))
2768 (home-page "http://defunkt.io/pystache/")
2769 (synopsis "Python logic-less template engine")
2770 (description
2771 "Pystache is a Python implementation of the framework agnostic,
2772logic-free templating system Mustache.")
2773 (license license:expat)))
2774
2775(define-public python2-pystache
2776 (package-with-python2 python-pystache))
2777
1285119b
RW
2778(define-public python-joblib
2779 (package
2780 (name "python-joblib")
2781 (version "0.9.0b4")
2782 (source (origin
2783 (method url-fetch)
2784 (uri (string-append "https://pypi.python.org/packages/source/"
2785 "j/joblib/joblib-" version ".tar.gz"))
2786 (sha256
2787 (base32
2788 "1dvw3f8jgj6h0fxkghbgyclvdzc7l0ig7n0vis70awb5kczb9bs3"))))
2789 (build-system python-build-system)
2790 (native-inputs
2791 `(("python-setuptools" ,python-setuptools)
2792 ("python-nose" ,python-nose)))
2793 (home-page "http://pythonhosted.org/joblib/")
2794 (synopsis "Using Python functions as pipeline jobs")
2795 (description
2796 "Joblib is a set of tools to provide lightweight pipelining in Python.
2797In particular, joblib offers: transparent disk-caching of the output values
2798and lazy re-evaluation (memoize pattern), easy simple parallel computing
2799logging and tracing of the execution.")
3f641af0 2800 (license license:bsd-3)))
1285119b
RW
2801
2802(define-public python2-joblib
2803 (package-with-python2 python-joblib))
2804
3580ab8b
DT
2805(define-public python-docutils
2806 (package
2807 (name "python-docutils")
2808 (version "0.12")
2809 (source
2810 (origin
2811 (method url-fetch)
2812 (uri (string-append
2813 "https://pypi.python.org/packages/source/d/docutils/docutils-"
2814 version ".tar.gz"))
2815 (sha256
2816 (base32
2817 "1ylnjnw1x4b2y7blr6x35ncdzn69k253kw4cdkv6asdb21w73ny7"))))
2818 (build-system python-build-system)
2819 (inputs
2820 `(("python-setuptools" ,python-setuptools)))
2821 (arguments
2822 '(#:tests? #f)) ; no setup.py test command
2823 (home-page "http://docutils.sourceforge.net/")
2824 (synopsis "Python Documentation Utilities")
2825 (description
2826 "Docutils is a modular system for processing documentation into useful
2827formats, such as HTML, XML, and LaTeX. For input Docutils supports
2828reStructuredText.")
2829 ;; Most of the source code is public domain, but some source files are
2830 ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
3f641af0 2831 (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
3580ab8b
DT
2832
2833(define-public python2-docutils
2834 (package-with-python2 python-docutils))
fb35b7c0
DT
2835
2836(define-public python-pygments
2837 (package
2838 (name "python-pygments")
9f442285 2839 (version "2.0.2")
fb35b7c0
DT
2840 (source
2841 (origin
2842 (method url-fetch)
9f442285 2843 (uri (pypi-uri "Pygments" version))
fb35b7c0
DT
2844 (sha256
2845 (base32
9f442285 2846 "0lagrwifsgn0s8bzqahpr87p7gd38xja8f06akscinp6hj89283k"))))
fb35b7c0
DT
2847 (build-system python-build-system)
2848 (inputs
2849 `(("python-setuptools" ,python-setuptools)))
2850 (home-page "http://pygments.org/")
2851 (synopsis "Syntax highlighting")
2852 (description
2853 "Pygments is a syntax highlighting package written in Python.")
3f641af0 2854 (license license:bsd-2)))
fb35b7c0
DT
2855
2856(define-public python2-pygments
2857 (package-with-python2 python-pygments))
9dd6078d
DT
2858
2859(define-public python-sphinx
2860 (package
2861 (name "python-sphinx")
2862 (version "1.2.3")
2863 (source
2864 (origin
2865 (method url-fetch)
2866 (uri (string-append
2867 "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-"
2868 version ".tar.gz"))
2869 (sha256
2870 (base32
2871 "011xizm3jnmf4cvs5i6kgf6c5nn046h79i8j0vd0f27yw9j3p4wl"))))
2872 (build-system python-build-system)
2873 (inputs
2874 `(("python-setuptools" ,python-setuptools)
2875 ("python-jinja2" ,python-jinja2)
2876 ("python-docutils" ,python-docutils)
2877 ("python-pygments" ,python-pygments)))
2878 (home-page "http://sphinx-doc.org/")
2879 (synopsis "Python documentation generator")
2880 (description "Sphinx is a tool that makes it easy to create documentation
2881for Python projects or other documents consisting of multiple reStructuredText
2882sources.")
3f641af0 2883 (license license:bsd-3)))
9dd6078d
DT
2884
2885(define-public python2-sphinx
2886 (package-with-python2 python-sphinx))
6888830b 2887
ad320b20
RW
2888(define-public python-sphinx-rtd-theme
2889 (package
2890 (name "python-sphinx-rtd-theme")
2891 (version "0.1.6")
2892 (source
2893 (origin
2894 (method url-fetch)
2895 (uri (string-append "https://pypi.python.org/packages/source/s/"
2896 "sphinx_rtd_theme/sphinx_rtd_theme-"
2897 version ".tar.gz"))
2898 (sha256
2899 (base32
2900 "19nw3rn7awplcdrz63kg1njqwkbymfg9lwn7l2grhdyhyr2gaa8g"))))
2901 (build-system python-build-system)
2902 (arguments
2903 `(;; With standard flags, the install phase attempts to create a zip'd
2904 ;; egg file, and fails with an error: 'ZIP does not support timestamps
2905 ;; before 1980'
2906 #:configure-flags '("--single-version-externally-managed"
2907 "--record=sphinx-rtd-theme.txt")))
2908 (native-inputs
2909 `(("python-setuptools" ,python-setuptools)))
2910 (inputs
2911 `(("python-docutils" ,python-docutils)
2912 ("python-sphinx" ,python-sphinx)))
2913 (home-page "https://github.com/snide/sphinx_rtd_theme/")
2914 (synopsis "ReadTheDocs.org theme for Sphinx")
2915 (description "A theme for Sphinx used by ReadTheDocs.org.")
bd3fa666 2916 (license license:expat)))
ad320b20
RW
2917
2918(define-public python2-sphinx-rtd-theme
2919 (package-with-python2 python-sphinx-rtd-theme))
2920
f4de5b3b
CAW
2921(define-public python-feedgenerator
2922 (package
2923 (name "python-feedgenerator")
f0412aa2 2924 (version "1.8")
f4de5b3b 2925 (source
f4de5b3b 2926 (origin
f0412aa2
EF
2927 (method url-fetch)
2928 (uri (pypi-uri "feedgenerator" version))
f4de5b3b
CAW
2929 (sha256
2930 (base32
f0412aa2 2931 "0mkimp1fpdan4p3882vzcws4l594k71ich4g0wq97jbra7p602n0"))))
f4de5b3b 2932 (build-system python-build-system)
f0412aa2 2933 (native-inputs
f4de5b3b
CAW
2934 `(("python-setuptools" ,python-setuptools)
2935 ("python-pytz" ,python-pytz)
2936 ("python-six" ,python-six)))
f0412aa2 2937 (home-page "https://github.com/getpelican/feedgenerator")
f4de5b3b
CAW
2938 (synopsis
2939 "Standalone version of Django's Atom/RSS feed generator")
2940 (description
2941 "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
2942which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
3f641af0 2943 (license license:bsd-3)))
f4de5b3b
CAW
2944
2945(define-public python2-feedgenerator
2946 (package-with-python2 python-feedgenerator))
2947
59ad30e3
CAW
2948(define-public python-blinker
2949 (package
2950 (name "python-blinker")
7fb9ff4d 2951 (version "1.4")
59ad30e3
CAW
2952 (source
2953 (origin
2954 (method url-fetch)
7fb9ff4d 2955 (uri (pypi-uri "blinker" version))
59ad30e3
CAW
2956 (sha256
2957 (base32
7fb9ff4d 2958 "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
59ad30e3
CAW
2959 (build-system python-build-system)
2960 (native-inputs
2961 `(("python-setuptools" ,python-setuptools)))
2962 ;; No "test" command supplied to setuptools, so unless there's another way
2963 ;; to run tests, we're skipping them!
2964 (arguments '(#:tests? #f))
2965 (home-page "http://pythonhosted.org/blinker/")
2966 (synopsis "Fast, simple object-to-object and broadcast signaling")
2967 (description
2968 "Blinker provides a fast dispatching system that allows any number of
2969interested parties to subscribe to events, or \"signals\".")
2970 (license license:expat)))
2971
2972(define-public python2-blinker
2973 (package-with-python2 python-blinker))
2974
b8050e71
CAW
2975(define-public pelican
2976 (package
2977 (name "pelican")
11f97c27 2978 (version "3.6.3")
b8050e71
CAW
2979 (source
2980 (origin
2981 (method url-fetch)
11f97c27 2982 (uri (pypi-uri "pelican" version))
b8050e71
CAW
2983 (sha256
2984 (base32
11f97c27 2985 "1hn94rb4q3zmcq16in055xikal4dba5hfx3zznq7warllcgc9f8k"))))
b8050e71 2986 (build-system python-build-system)
d9f2dece 2987 (inputs
b8050e71
CAW
2988 `(("python-feedgenerator" ,python-feedgenerator)
2989 ("python-jinja2" ,python-jinja2)
2990 ("python-pygments" ,python-pygments)
2991 ("python-docutils" ,python-docutils)
2992 ("python-pytz" ,python-pytz)
2993 ("python-blinker" ,python-blinker)
2994 ("python-unidecode" ,python-unidecode)
2995 ("python-six" ,python-six)
2996 ("python-dateutil-2" ,python-dateutil-2)))
2997 (home-page "http://getpelican.com/")
2998 (arguments
2999 `(;; XXX Requires a lot more packages to do unit tests :P
3000 #:tests? #f
3001 #:phases (modify-phases %standard-phases
3002 (add-before
3003 'install 'adjust-requires
3004 ;; Since feedgenerator is installed from git, it doesn't
3005 ;; conform to the version requirements.
3006 ;;
3007 ;; We *do have* "feedgenerator >= 1.6", but strip off the
3008 ;; version requirement so setuptools doesn't get confused.
3009 (lambda _
3010 (substitute* "setup.py"
3011 (("['\"]feedgenerator.*?['\"]")
3012 "'feedgenerator'")))))))
3013 (synopsis "Python-based static site publishing system")
3014 (description
3015 "Pelican is a tool to generate a static blog from reStructuredText,
3016Markdown input files, and more. Pelican uses Jinja2 for templating
3017and is very extensible.")
3f641af0 3018 (license license:agpl3+)))
b8050e71 3019
240ca4aa
RW
3020(define-public python-scikit-learn
3021 (package
3022 (name "python-scikit-learn")
be0a4c26 3023 (version "0.16.1")
240ca4aa
RW
3024 (source
3025 (origin
3026 (method url-fetch)
3027 (uri (string-append
3028 "https://github.com/scikit-learn/scikit-learn/archive/"
3029 version ".tar.gz"))
7e21b9fb 3030 (file-name (string-append name "-" version ".tar.gz"))
240ca4aa
RW
3031 (sha256
3032 (base32
be0a4c26 3033 "140skabifgc7lvvj873pnzlwx0ni6q8qkrsyad2ccjb3h8rxzkih"))))
240ca4aa
RW
3034 (build-system python-build-system)
3035 (arguments
3036 `(#:phases
3037 (alist-cons-before
2f6b3d2e
RW
3038 'check 'set-HOME
3039 ;; some tests require access to "$HOME"
3040 (lambda _ (setenv "HOME" "/tmp"))
3041 ;; Tests can only be run after the library has been installed and not
3042 ;; within the source directory.
3043 (alist-cons-after
3044 'install 'check
3045 (lambda _
3046 (with-directory-excursion "/tmp"
3047 ;; With Python 3 one test of 3334 fails
3048 ;; (sklearn.tests.test_common.test_transformers); see
3049 ;; https://github.com/scikit-learn/scikit-learn/issues/3693
3050 (system* "nosetests" "-v" "sklearn")))
3051 (alist-delete 'check %standard-phases)))))
240ca4aa 3052 (inputs
2f6b3d2e 3053 `(("openblas" ,openblas)
240ca4aa
RW
3054 ("python-nose" ,python-nose)))
3055 (propagated-inputs
3056 `(("python-numpy" ,python-numpy)
3057 ("python-scipy" ,python-scipy)))
3058 (home-page "http://scikit-learn.org/")
3059 (synopsis "Machine Learning in Python")
3060 (description
3061 "Scikit-learn provides simple and efficient tools for data
3062mining and data analysis.")
25a2f81f
EF
3063 (license license:bsd-3)
3064 (properties `((python2-variant . ,(delay python2-scikit-learn))))))
240ca4aa
RW
3065
3066(define-public python2-scikit-learn
25a2f81f 3067 (package-with-python2 (strip-python2-variant python-scikit-learn)))
240ca4aa 3068
12f8f9bb
RW
3069(define-public python-scikit-image
3070 (package
3071 (name "python-scikit-image")
3072 (version "0.11.3")
3073 (source
3074 (origin
3075 (method url-fetch)
3076 (uri (string-append
3077 "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-"
3078 version ".tar.gz"))
3079 (sha256
3080 (base32 "0jz416fqvpahqyffw8plmszzfj669w8wvf3y9clnr5lr6a7md3kn"))))
3081 (build-system python-build-system)
3082 (propagated-inputs
3083 `(("python-matplotlib" ,python-matplotlib)
3084 ("python-networkx" ,python-networkx)
3085 ("python-numpy" ,python-numpy)
3086 ("python-scipy" ,python-scipy)
3087 ("python-six" ,python-six)
3088 ("python-pillow" ,python-pillow)))
3089 (native-inputs
3090 `(("python-cython" ,python-cython)
3091 ("python-setuptools" ,python-setuptools)))
3092 (home-page "http://scikit-image.org/")
3093 (synopsis "Image processing in Python")
3094 (description
e881752c 3095 "Scikit-image is a collection of algorithms for image processing.")
2b031d3f
EF
3096 (license license:bsd-3)
3097 (properties `((python2-variant . ,(delay python2-scikit-image))))))
12f8f9bb
RW
3098
3099(define-public python2-scikit-image
2b031d3f
EF
3100 (let ((scikit-image (package-with-python2
3101 (strip-python2-variant python-scikit-image))))
12f8f9bb
RW
3102 (package (inherit scikit-image)
3103 (native-inputs
3104 `(("python2-mock" ,python2-mock)
3105 ,@(package-native-inputs scikit-image)))
3106 (propagated-inputs
3107 `(("python2-pytz" ,python2-pytz)
2b031d3f 3108 ,@(package-propagated-inputs scikit-image))))))
12f8f9bb 3109
5394a6a6
RW
3110(define-public python-redis
3111 (package
3112 (name "python-redis")
3113 (version "2.10.3")
3114 (source
3115 (origin
3116 (method url-fetch)
3117 (uri (string-append
3118 "https://pypi.python.org/packages/source/r/redis/redis-"
3119 version ".tar.gz"))
3120 (sha256
3121 (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4"))))
3122 (build-system python-build-system)
3123 ;; Tests require a running Redis server
3124 (arguments '(#:tests? #f))
3125 (native-inputs
3126 `(("python-setuptools" ,python-setuptools)
3127 ("python-pytest" ,python-pytest)))
3128 (home-page "https://github.com/andymccurdy/redis-py")
3129 (synopsis "Redis Python client")
3130 (description
3131 "This package provides a Python interface to the Redis key-value store.")
3132 (license license:expat)))
3133
3134(define-public python2-redis
3135 (package-with-python2 python-redis))
3136
748cef5b
RW
3137(define-public python-rq
3138 (package
3139 (name "python-rq")
3140 (version "0.5.2")
3141 (source
3142 (origin
3143 (method url-fetch)
3144 (uri (string-append
3145 "https://pypi.python.org/packages/source/r/rq/rq-"
3146 version ".tar.gz"))
3147 (sha256
3148 (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix"))))
3149 (build-system python-build-system)
3150 (propagated-inputs
3151 `(("python-click" ,python-click)
3152 ("python-redis" ,python-redis)))
3153 (native-inputs
3154 `(("python-setuptools" ,python-setuptools)))
3155 (home-page "http://python-rq.org/")
3156 (synopsis "Simple job queues for Python")
3157 (description
3158 "RQ (Redis Queue) is a simple Python library for queueing jobs and
3159processing them in the background with workers. It is backed by Redis and it
3160is designed to have a low barrier to entry.")
3f641af0 3161 (license license:bsd-2)))
748cef5b
RW
3162
3163(define-public python2-rq
3164 (package-with-python2 python-rq))
3165
6888830b
FB
3166(define-public python-cython
3167 (package
3168 (name "python-cython")
dd22efef 3169 (version "0.24.1")
6888830b
FB
3170 (source
3171 (origin
3172 (method url-fetch)
56918e26 3173 (uri (pypi-uri "Cython" version))
6888830b
FB
3174 (sha256
3175 (base32
dd22efef 3176 "1fg7fmpvfcq9md4ncyqnnylyjy4z3ksdrshzis95g1sh03d8z044"))))
6888830b
FB
3177 (build-system python-build-system)
3178 ;; we need the full python package and not just the python-wrapper
3179 ;; because we need libpython3.3m.so
3180 (inputs
3181 `(("python" ,python)))
3182 (arguments
3183 `(#:phases
b92f651b
EF
3184 (modify-phases %standard-phases
3185 (add-before 'check 'set-HOME
3186 ;; some tests require access to "$HOME/.cython"
3187 (lambda _ (setenv "HOME" "/tmp")))
3188 (replace 'check
3189 (lambda _ (zero? (system* "python" "runtests.py" "-vv")))))))
6888830b
FB
3190 (home-page "http://cython.org/")
3191 (synopsis "C extensions for Python")
3192 (description "Cython is an optimising static compiler for both the Python
3193programming language and the extended Cython programming language. It makes
3194writing C extensions for Python as easy as Python itself.")
3f641af0 3195 (license license:asl2.0)
48b311b1 3196 (properties `((python2-variant . ,(delay python2-cython))))))
6888830b
FB
3197
3198(define-public python2-cython
48b311b1
LC
3199 (package (inherit (package-with-python2
3200 (strip-python2-variant python-cython)))
6888830b
FB
3201 (name "python2-cython")
3202 (inputs
3203 `(("python-2" ,python-2))))) ; this is not automatically changed
0da98533 3204
ee5fb7ee
AV
3205;; The RPython toolchain currently does not support Python 3.
3206(define-public python2-rpython
3207 (package
3208 (name "python2-rpython")
3209 (version "0.1.4")
3210 (source
3211 (origin
3212 (method url-fetch)
3213 (uri (pypi-uri "rpython" version))
3214 (sha256
3215 (base32
3216 "07pps06fq4c4wmi5ii0sgh9zgwniz5y7frqhm28g3a154l163fxc"))))
3217 (build-system python-build-system)
3218 (arguments `(#:python ,python-2))
3219 (native-inputs
3220 `(("python2-pytest" ,python2-pytest) ; needed for running tests
3221 ("python2-setuptools" ,python2-setuptools)))
3222 (home-page "https://rpython.readthedocs.org")
3223 (synopsis "Framework for implementing interpreters and virtual machines")
3224 (description "RPython is a translation and support framework for
3225producing implementations of dynamic languages, emphasizing a clean separation
3226between language specification and implementation aspects.")
3227 (license license:expat)))
3228
0da98533
FB
3229;; This version of numpy is missing the documentation and is only used to
3230;; build matplotlib which is required to build numpy's documentation.
3231(define python-numpy-bootstrap
3232 (package
3233 (name "python-numpy-bootstrap")
ef9b4c04 3234 (version "1.10.4")
0da98533
FB
3235 (source
3236 (origin
3237 (method url-fetch)
de67e922 3238 (uri (string-append "mirror://sourceforge/numpy/NumPy/" version
0da98533
FB
3239 "/numpy-" version ".tar.gz"))
3240 (sha256
3241 (base32
ef9b4c04 3242 "1bjjhvncraka5s6i4lg644jrxij6bvycxy7an20gcz3a0m11iygp"))))
0da98533
FB
3243 (build-system python-build-system)
3244 (inputs
3245 `(("python-nose" ,python-nose)
cba256f8
RW
3246 ("openblas" ,openblas)
3247 ("lapack" ,lapack)))
0da98533 3248 (native-inputs
19afbea1 3249 `(("gfortran" ,gfortran)))
0da98533
FB
3250 (arguments
3251 `(#:phases
3252 (alist-cons-before
3253 'build 'set-environment-variables
3254 (lambda* (#:key inputs #:allow-other-keys)
dbdfe515
RW
3255 (call-with-output-file "site.cfg"
3256 (lambda (port)
cba256f8
RW
3257 (format port
3258 "[openblas]
dbdfe515
RW
3259libraries = openblas
3260library_dirs = ~a/lib
3261include_dirs = ~a/include
cba256f8
RW
3262
3263[lapack]
3264lapack_libs = lapack
3265library_dirs = ~a/lib
3266include_dirs = ~a/include
3267"
3268 (assoc-ref inputs "openblas")
3269 (assoc-ref inputs "openblas")
3270 (assoc-ref inputs "lapack")
3271 (assoc-ref inputs "lapack"))))
dbdfe515
RW
3272 ;; Use "gcc" executable, not "cc".
3273 (substitute* "numpy/distutils/system_info.py"
3274 (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
3275 "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))
3276 #t)
6a843168
FB
3277 ;; Tests can only be run after the library has been installed and not
3278 ;; within the source directory.
3279 (alist-cons-after
3280 'install 'check
89b5c60e 3281 (lambda _
6a843168 3282 (with-directory-excursion "/tmp"
89b5c60e 3283 (zero? (system* "python" "-c"
6a843168 3284 "import numpy; numpy.test(verbose=2)"))))
89b5c60e
AE
3285 (alist-delete
3286 'check
6a843168 3287 %standard-phases)))))
0da98533
FB
3288 (home-page "http://www.numpy.org/")
3289 (synopsis "Fundamental package for scientific computing with Python")
3290 (description "NumPy is the fundamental package for scientific computing
e881752c 3291with Python. It contains among other things: a powerful N-dimensional array
0da98533
FB
3292object, sophisticated (broadcasting) functions, tools for integrating C/C++
3293and Fortran code, useful linear algebra, Fourier transform, and random number
3294capabilities.")
3f641af0 3295 (license license:bsd-3)))
0da98533
FB
3296
3297(define python2-numpy-bootstrap
3298 (package-with-python2 python-numpy-bootstrap))
15bfe6d6 3299
3a1bfe18
RW
3300(define-public python2-fastlmm
3301 (package
3302 (name "python2-fastlmm")
b074e7d4 3303 (version "0.2.21")
3a1bfe18
RW
3304 (source
3305 (origin
3306 (method url-fetch)
b074e7d4 3307 (uri (pypi-uri "fastlmm" version ".zip"))
3a1bfe18
RW
3308 (sha256
3309 (base32
b074e7d4 3310 "1q8c34rpmwkfy3r4d5172pzdkpfryj561897z9r3x22gq7813x1m"))))
3a1bfe18
RW
3311 (build-system python-build-system)
3312 (arguments
3313 `(#:python ,python-2)) ; only Python 2.7 is supported
3314 (propagated-inputs
3315 `(("python2-numpy" ,python2-numpy)
3316 ("python2-scipy" ,python2-scipy)
3317 ("python2-matplotlib" ,python2-matplotlib)
3318 ("python2-pandas" ,python2-pandas)
3319 ("python2-scikit-learn" ,python2-scikit-learn)
3320 ("python2-cython" ,python2-cython)
3321 ("python2-pysnptools" ,python2-pysnptools)))
3322 (native-inputs
3323 `(("unzip" ,unzip)
3324 ("python2-mock" ,python2-mock)
3325 ("python2-setuptools" ,python2-setuptools)))
3326 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/fastlmm/")
3327 (synopsis "Perform genome-wide association studies on large data sets")
3328 (description
3329 "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed
3330Models, is a program for performing both single-SNP and SNP-set genome-wide
3331association studies (GWAS) on extremely large data sets.")
3f641af0 3332 (license license:asl2.0)))
3a1bfe18 3333
2ee8869a
FB
3334(define-public python-numpy
3335 (package (inherit python-numpy-bootstrap)
3336 (name "python-numpy")
3337 (outputs '("out" "doc"))
89b5c60e 3338 (inputs
2ee8869a
FB
3339 `(("which" ,which)
3340 ("python-setuptools" ,python-setuptools)
3341 ("python-matplotlib" ,python-matplotlib)
3342 ("python-sphinx" ,python-sphinx)
3343 ("python-pyparsing" ,python-pyparsing)
3344 ("python-numpydoc" ,python-numpydoc)
3345 ,@(package-inputs python-numpy-bootstrap)))
3346 (native-inputs
3347 `(("pkg-config" ,pkg-config)
3348 ("texlive" ,texlive)
3349 ("texinfo" ,texinfo)
3350 ("perl" ,perl)
3351 ,@(package-native-inputs python-numpy-bootstrap)))
3352 (arguments
89b5c60e 3353 `(,@(substitute-keyword-arguments
2ee8869a
FB
3354 (package-arguments python-numpy-bootstrap)
3355 ((#:phases phases)
3356 `(alist-cons-after
3357 'install 'install-doc
3358 (lambda* (#:key outputs #:allow-other-keys)
3359 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
89b5c60e
AE
3360 (doc (string-append
3361 data "/doc/" ,name "-"
2ee8869a
FB
3362 ,(package-version python-numpy-bootstrap)))
3363 (info (string-append data "/info"))
3364 (html (string-append doc "/html"))
3365 (pyver ,(string-append "PYVER=")))
3366 (with-directory-excursion "doc"
3367 (mkdir-p html)
3368 (system* "make" "html" pyver)
3369 (system* "make" "latex" "PAPER=a4" pyver)
89b5c60e 3370 (system* "make" "-C" "build/latex"
2ee8869a
FB
3371 "all-pdf" "PAPER=a4" pyver)
3372 ;; FIXME: Generation of the info file fails.
3373 ;; (system* "make" "info" pyver)
3374 ;; (mkdir-p info)
3375 ;; (copy-file "build/texinfo/numpy.info"
3376 ;; (string-append info "/numpy.info"))
3377 (for-each (lambda (file)
3378 (copy-file (string-append "build/latex" file)
3379 (string-append doc file)))
3380 '("/numpy-ref.pdf" "/numpy-user.pdf"))
3381 (with-directory-excursion "build/html"
3382 (for-each (lambda (file)
3383 (let* ((dir (dirname file))
3384 (tgt-dir (string-append html "/" dir)))
3385 (unless (equal? "." dir)
3386 (mkdir-p tgt-dir))
96c46210 3387 (install-file file html)))
2ee8869a
FB
3388 (find-files "." ".*"))))))
3389 ,phases)))))))
3390
764c077b 3391(define-public python2-numpy
57b7b8cd 3392 (package-with-python2 python-numpy))
2ee8869a 3393
15bfe6d6
FB
3394(define-public python-pyparsing
3395 (package
3396 (name "python-pyparsing")
e0669289 3397 (version "2.0.3")
15bfe6d6
FB
3398 (source
3399 (origin
3400 (method url-fetch)
de67e922
LF
3401 (uri (string-append "mirror://sourceforge/pyparsing/pyparsing"
3402 "/pyparsing-" version
15bfe6d6
FB
3403 "/pyparsing-" version ".tar.gz"))
3404 (sha256
3405 (base32
e0669289 3406 "0kw4py7gn45j93q8r7bzajfrjdc3xlsn2yzln41lf9zmrghjkrq6"))))
15bfe6d6
FB
3407 (build-system python-build-system)
3408 (outputs '("out" "doc"))
3409 (arguments
3410 `(#:tests? #f ; no test target
3411 #:modules ((guix build python-build-system)
3412 (guix build utils))
3413 #:phases
3414 (alist-cons-after
3415 'install 'install-doc
3416 (lambda* (#:key outputs #:allow-other-keys)
89b5c60e 3417 (let* ((doc (string-append (assoc-ref outputs "doc")
15bfe6d6
FB
3418 "/share/doc/" ,name "-" ,version))
3419 (html-doc (string-append doc "/html"))
3420 (examples (string-append doc "/examples")))
3421 (mkdir-p html-doc)
3422 (mkdir-p examples)
89b5c60e 3423 (for-each
15bfe6d6 3424 (lambda (dir tgt)
89b5c60e 3425 (map (lambda (file)
96c46210 3426 (install-file file tgt))
15bfe6d6
FB
3427 (find-files dir ".*")))
3428 (list "docs" "htmldoc" "examples")
3429 (list doc html-doc examples))))
3430 %standard-phases)))
3431 (home-page "http://pyparsing.wikispaces.com")
3432 (synopsis "Python parsing class library")
3433 (description
3434 "The pyparsing module is an alternative approach to creating and
3435executing simple grammars, vs. the traditional lex/yacc approach, or the use
3436of regular expressions. The pyparsing module provides a library of classes
3437that client code uses to construct the grammar directly in Python code.")
bd3fa666 3438 (license license:expat)))
15bfe6d6
FB
3439
3440(define-public python2-pyparsing
3441 (package-with-python2 python-pyparsing))
3442
ec00de35
FB
3443(define-public python-numpydoc
3444 (package
3445 (name "python-numpydoc")
3446 (version "0.5")
3447 (source
3448 (origin
3449 (method url-fetch)
89b5c60e 3450 (uri (string-append
ec00de35
FB
3451 "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
3452 version ".tar.gz"))
3453 (sha256
3454 (base32
5e4d8f67
AE
3455 "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
3456 (modules '((guix build utils)))
3457 (snippet
3458 '(begin
3459 ;; Drop a test requiring matplotlib, which we cannot add as an
3460 ;; input since it would create a circular dependency: Extend the
3461 ;; test for Python 3, where it is already dropped, to Python 2.
3462 (substitute* "numpydoc/tests/test_plot_directive.py"
3463 (("3") "2"))))))
ec00de35
FB
3464 (build-system python-build-system)
3465 (inputs
3466 `(("python-setuptools" ,python-setuptools)
3467 ("python-docutils" ,python-docutils)
3468 ("python-sphinx" ,python-sphinx)
3469 ("python-nose" ,python-nose)))
3470 (home-page "https://pypi.python.org/pypi/numpydoc")
3471 (synopsis
3472 "Numpy's Sphinx extensions")
3473 (description
3474 "Sphinx extension to support docstrings in Numpy format.")
3f641af0 3475 (license license:bsd-2)))
ec00de35
FB
3476
3477(define-public python2-numpydoc
5e4d8f67 3478 (package-with-python2 python-numpydoc))
1c65314c 3479
1e656049
RW
3480(define-public python-numexpr
3481 (package
3482 (name "python-numexpr")
26112c0a 3483 (version "2.6.0")
1e656049
RW
3484 (source
3485 (origin
3486 (method url-fetch)
26112c0a 3487 (uri (pypi-uri "numexpr" version))
1e656049
RW
3488 (sha256
3489 (base32
26112c0a 3490 "0i6iagl2hhbr8q4qzbbjd859v5806vqylq87fq7pi914ps6d6cag"))))
1e656049
RW
3491 (build-system python-build-system)
3492 (arguments `(#:tests? #f)) ; no tests included
3493 (propagated-inputs
3494 `(("python-numpy" ,python-numpy)))
3495 (home-page "https://github.com/pydata/numexpr")
3496 (synopsis "Fast numerical expression evaluator for NumPy")
3497 (description
3498 "Numexpr is a fast numerical expression evaluator for NumPy. With it,
3499expressions that operate on arrays are accelerated and use less memory than
3500doing the same calculation in Python. In addition, its multi-threaded
3501capabilities can make use of all your cores, which may accelerate
3502computations, most specially if they are not memory-bounded (e.g. those using
3503transcendental functions).")
fc1a170e
EF
3504 (license license:expat)
3505 (properties `((python2-variant . ,(delay python2-numexpr))))))
1e656049
RW
3506
3507(define-public python2-numexpr
fc1a170e 3508 (package-with-python2 (strip-python2-variant python-numexpr)))
1e656049 3509
1c65314c
FB
3510(define-public python-matplotlib
3511 (package
3512 (name "python-matplotlib")
1bbc659f 3513 (version "1.4.3")
1c65314c
FB
3514 (source
3515 (origin
3516 (method url-fetch)
de67e922
LF
3517 (uri (string-append "mirror://sourceforge/matplotlib/matplotlib"
3518 "/matplotlib-" version
1c65314c
FB
3519 "/matplotlib-" version ".tar.gz"))
3520 (sha256
3521 (base32
1bbc659f 3522 "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av"))
fc1adab1 3523 (patches (search-patches "matplotlib-setupext-tk.patch"))))
1c65314c
FB
3524 (build-system python-build-system)
3525 (outputs '("out" "doc"))
25f9a068
FB
3526 (propagated-inputs ; the following packages are all needed at run time
3527 `(("python-pyparsing" ,python-pyparsing)
3528 ("python-pygobject" ,python-pygobject)
3529 ("gobject-introspection" ,gobject-introspection)
1bbc659f 3530 ("python-tkinter" ,python "tk")
25f9a068
FB
3531 ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
3532 ;; from 'gtk+') provides the required 'typelib' files used by
3533 ;; 'gobject-introspection'. The location of these files is set with the
3534 ;; help of the environment variable GI_TYPELIB_PATH. At build time this
3535 ;; is done automatically by a 'native-search-path' procedure. However,
3536 ;; at run-time the user must set this variable as follows:
3537 ;;
3538 ;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
25f9a068
FB
3539 ("gtk+" ,gtk+)
3540 ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
3541 ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
3542 ;; object. For this reason we need to import both libraries.
3543 ;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
3544 ("python-pycairo" ,python-pycairo)
3545 ("python-cairocffi" ,python-cairocffi)))
1c65314c
FB
3546 (inputs
3547 `(("python-setuptools" ,python-setuptools)
3548 ("python-dateutil" ,python-dateutil-2)
1c65314c
FB
3549 ("python-six" ,python-six)
3550 ("python-pytz" ,python-pytz)
3551 ("python-numpy" ,python-numpy-bootstrap)
3552 ("python-sphinx" ,python-sphinx)
3553 ("python-numpydoc" ,python-numpydoc)
3554 ("python-nose" ,python-nose)
3555 ("python-mock" ,python-mock)
3556 ("libpng" ,libpng)
3557 ("imagemagick" ,imagemagick)
3558 ("freetype" ,freetype)
25f9a068
FB
3559 ("cairo" ,cairo)
3560 ("glib" ,glib)
4e7a137a 3561 ("python-pillow" ,python-pillow)
1c65314c 3562 ;; FIXME: Add backends when available.
1c65314c
FB
3563 ;("python-wxpython" ,python-wxpython)
3564 ;("python-pyqt" ,python-pyqt)
1bbc659f
FB
3565 ("tcl" ,tcl)
3566 ("tk" ,tk)))
1c65314c
FB
3567 (native-inputs
3568 `(("pkg-config" ,pkg-config)
3569 ("texlive" ,texlive)
3570 ("texinfo" ,texinfo)))
3571 (arguments
3572 `(#:phases
25f9a068
FB
3573 (alist-cons-before
3574 'build 'configure-environment
3575 (lambda* (#:key outputs inputs #:allow-other-keys)
3576 (let ((cairo (assoc-ref inputs "cairo"))
3577 (gtk+ (assoc-ref inputs "gtk+")))
3578 ;; Setting these directories in the 'basedirlist' of 'setup.cfg'
3579 ;; has not effect.
25f9a068
FB
3580 (setenv "LD_LIBRARY_PATH"
3581 (string-append cairo "/lib:" gtk+ "/lib"))
3582 (setenv "HOME" (getcwd))
3583 (call-with-output-file "setup.cfg"
3584 (lambda (port)
1bbc659f
FB
3585 (format port "[directories]~%
3586basedirlist = ~a,~a~%
57b7b8cd 3587 [rc_options]~%
1bbc659f
FB
3588backend = TkAgg~%"
3589 (assoc-ref inputs "tcl")
3590 (assoc-ref inputs "tk"))))))
25f9a068
FB
3591 (alist-cons-after
3592 'install 'install-doc
3593 (lambda* (#:key outputs #:allow-other-keys)
3594 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3595 (doc (string-append data "/doc/" ,name "-" ,version))
3596 (info (string-append data "/info"))
3597 (html (string-append doc "/html")))
3598 (with-directory-excursion "doc"
25f9a068
FB
3599 ;; Produce pdf in 'A4' format.
3600 (substitute* (find-files "." "conf\\.py")
3601 (("latex_paper_size = 'letter'")
3602 "latex_paper_size = 'a4'"))
3603 (mkdir-p html)
3604 (mkdir-p info)
3605 ;; The doc recommends to run the 'html' target twice.
3606 (system* "python" "make.py" "html")
3607 (system* "python" "make.py" "html")
18b31516 3608 (copy-recursively "build/html" html)
25f9a068
FB
3609 (system* "python" "make.py" "latex")
3610 (system* "python" "make.py" "texinfo")
18b31516
FB
3611 (symlink (string-append html "/_images")
3612 (string-append info "/matplotlib-figures"))
3613 (with-directory-excursion "build/texinfo"
3614 (substitute* "matplotlib.texi"
3615 (("@image\\{([^,]*)" all file)
3616 (string-append "@image{matplotlib-figures/" file)))
3617 (symlink (string-append html "/_images")
3618 "./matplotlib-figures")
3619 (system* "makeinfo" "--no-split"
3620 "-o" "matplotlib.info" "matplotlib.texi"))
25f9a068
FB
3621 (copy-file "build/texinfo/matplotlib.info"
3622 (string-append info "/matplotlib.info"))
3623 (copy-file "build/latex/Matplotlib.pdf"
18b31516 3624 (string-append doc "/Matplotlib.pdf")))))
25f9a068 3625 %standard-phases))))
1c65314c
FB
3626 (home-page "http://matplotlib.org")
3627 (synopsis "2D plotting library for Python")
3628 (description
3629 "Matplotlib is a Python 2D plotting library which produces publication
3630quality figures in a variety of hardcopy formats and interactive environments
3631across platforms. Matplotlib can be used in Python scripts, the python and
3632ipython shell, web application servers, and six graphical user interface
3633toolkits.")
3f641af0 3634 (license license:psfl)
57b7b8cd 3635 (properties `((python2-variant . ,(delay python2-matplotlib))))))
1c65314c 3636
764c077b 3637(define-public python2-matplotlib
57b7b8cd
LC
3638 (let ((matplotlib (package-with-python2
3639 (strip-python2-variant python-matplotlib))))
764c077b 3640 (package (inherit matplotlib)
88c26834
AE
3641 ;; Make sure to use special packages for Python 2 instead
3642 ;; of those automatically rewritten by package-with-python2.
89b5c60e 3643 (propagated-inputs
7ca0dbc3 3644 `(("python2-pycairo" ,python2-pycairo)
764c077b 3645 ("python2-pygobject-2" ,python2-pygobject-2)
1bbc659f
FB
3646 ("python2-tkinter" ,python-2 "tk")
3647 ,@(fold alist-delete (package-propagated-inputs matplotlib)
3648 '("python-pycairo" "python-pygobject" "python-tkinter")))))))
94914805 3649
0dde6232
RW
3650(define-public python2-pysnptools
3651 (package
3652 (name "python2-pysnptools")
a800018e 3653 (version "0.3.9")
0dde6232
RW
3654 (source
3655 (origin
3656 (method url-fetch)
3f2e9675 3657 (uri (pypi-uri "pysnptools" version ".zip"))
0dde6232
RW
3658 (sha256
3659 (base32
a800018e 3660 "1wybggjzz8zw7aav4pjsg2h22xp17a1lghrprza1pxwlm7wf96y2"))))
0dde6232
RW
3661 (build-system python-build-system)
3662 (arguments
3663 `(#:python ,python-2)) ; only Python 2.7 is supported
3664 (propagated-inputs
3665 `(("python2-numpy" ,python2-numpy)
3666 ("python2-scipy" ,python2-scipy)
a800018e 3667 ("python2-pytz" ,python2-pytz)
0dde6232 3668 ("python2-cython" ,python2-cython)))
a800018e
EF
3669 (inputs
3670 `(("python2-dateutil-2" ,python2-dateutil-2)
3671 ("python2-pandas" ,python2-pandas)
3672 ("python2-six" ,python2-six)))
0dde6232
RW
3673 (native-inputs
3674 `(("unzip" ,unzip)
3675 ("python2-setuptools" ,python2-setuptools)))
3676 (home-page "http://research.microsoft.com/en-us/um/redmond/projects/mscompbio/")
3677 (synopsis "Library for reading and manipulating genetic data")
3678 (description
3679 "PySnpTools is a library for reading and manipulating genetic data. It
3680can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
3681those files. It can also efficiently manipulate ranges of integers using set
3682operators such as union, intersection, and difference.")
3f641af0 3683 (license license:asl2.0)))
0dde6232 3684
c9b1b4f9
RW
3685(define-public python-rpy2
3686 (package
3687 (name "python-rpy2")
ec3bcbc7 3688 (version "2.7.6")
c9b1b4f9
RW
3689 (source
3690 (origin
3691 (method url-fetch)
ec3bcbc7 3692 (uri (pypi-uri "rpy2" version))
c9b1b4f9
RW
3693 (sha256
3694 (base32
ec3bcbc7 3695 "0nhan2qvrw7b7gg5zddwa22kybdv3x1g26vkd7q8lvnkgzrs4dga"))))
c9b1b4f9
RW
3696 (build-system python-build-system)
3697 (inputs
3698 `(("python-six" ,python-six)
3699 ("readline" ,readline)
3700 ("icu4c" ,icu4c)
3701 ("pcre" ,pcre)
3702 ("r" ,r)))
3703 (native-inputs
5ff6575b
RW
3704 `(("python-setuptools" ,python-setuptools)
3705 ("zlib" ,zlib)))
c9b1b4f9
RW
3706 (home-page "http://rpy.sourceforge.net/")
3707 (synopsis "Python interface to the R language")
3708 (description "rpy2 is a redesign and rewrite of rpy. It is providing a
3709low-level interface to R from Python, a proposed high-level interface,
3710including wrappers to graphical libraries, as well as R-like structures and
3711functions.")
3f641af0 3712 (license license:gpl3+)))
c9b1b4f9
RW
3713
3714(define-public python2-rpy2
3715 (let ((rpy2 (package-with-python2 python-rpy2)))
3716 (package (inherit rpy2)
3717 (native-inputs
3718 `(("python2-singledispatch" ,python2-singledispatch)
3719 ,@(package-native-inputs rpy2))))))
3720
bb986599
FB
3721(define-public python-scipy
3722 (package
3723 (name "python-scipy")
ba8a0824 3724 (version "0.16.0")
bb986599
FB
3725 (source
3726 (origin
3727 (method url-fetch)
de67e922
LF
3728; http://downloads.sourceforge.net/project/scipy/scipy/0.16.1/scipy-0.16.1.tar.gz
3729 (uri (string-append "mirror://sourceforge/scipy/scipy/" version
da6ce3f1 3730 "/scipy-" version ".tar.xz"))
bb986599
FB
3731 (sha256
3732 (base32
ba8a0824 3733 "0wa0a4skpda3gx7lb12yn19nhbairlyxrvda2lz2bcawk3x5qzz2"))))
bb986599 3734 (build-system python-build-system)
dd86c0d1 3735 (propagated-inputs
bb986599
FB
3736 `(("python-numpy" ,python-numpy)
3737 ("python-matplotlib" ,python-matplotlib)
dd86c0d1
RW
3738 ("python-pyparsing" ,python-pyparsing)))
3739 (inputs
3740 `(("lapack" ,lapack)
719b01c1 3741 ("openblas" ,openblas)))
bb986599 3742 (native-inputs
dd86c0d1
RW
3743 `(("python-nose" ,python-nose)
3744 ("python-sphinx" ,python-sphinx)
5248d49e 3745 ("python-numpydoc" ,python-numpydoc)
dd86c0d1 3746 ("gfortran" ,gfortran)
bb986599
FB
3747 ("texlive" ,texlive)
3748 ("perl" ,perl)))
3749 (outputs '("out" "doc"))
3750 (arguments
3751 `(#:phases
3752 (alist-cons-before
719b01c1 3753 'build 'configure-openblas
bb986599 3754 (lambda* (#:key inputs #:allow-other-keys)
719b01c1
RW
3755 (call-with-output-file "site.cfg"
3756 (lambda (port)
3757 (format port
3758 "[blas]
3759libraries = openblas
3760library_dirs = ~a/lib
3761include_dirs = ~a/include
3762[atlas]
3763library_dirs = ~a/lib
3764atlas_libs = openblas
3765"
3766 (assoc-ref inputs "openblas")
3767 (assoc-ref inputs "openblas")
3768 (assoc-ref inputs "openblas"))))
3769 #t)
bb986599
FB
3770 (alist-cons-after
3771 'install 'install-doc
3772 (lambda* (#:key outputs #:allow-other-keys)
3773 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
3774 (doc (string-append data "/doc/" ,name "-" ,version))
3775 (html (string-append doc "/html"))
3776 (pyver ,(string-append "PYVER=")))
3777 (with-directory-excursion "doc"
bb986599
FB
3778 ;; Fix generation of images for mathematical expressions.
3779 (substitute* (find-files "source" "conf\\.py")
3780 (("pngmath_use_preview = True")
3781 "pngmath_use_preview = False"))
3782 (mkdir-p html)
3783 (system* "make" "html" pyver)
3784 (system* "make" "latex" "PAPER=a4" pyver)
3785 (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
3786 (copy-file "build/latex/scipy-ref.pdf"
3787 (string-append doc "/scipy-ref.pdf"))
3788 (with-directory-excursion "build/html"
3789 (for-each (lambda (file)
3790 (let* ((dir (dirname file))
3791 (tgt-dir (string-append html "/" dir)))
96c46210 3792 (install-file file html)))
bb986599
FB
3793 (find-files "." ".*"))))))
3794 ;; Tests can only be run after the library has been installed and not
3795 ;; within the source directory.
3796 (alist-cons-after
3797 'install 'check
89b5c60e 3798 (lambda _
bb986599
FB
3799 (with-directory-excursion "/tmp"
3800 (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
89b5c60e
AE
3801 (alist-delete
3802 'check
4f9ff21e
RW
3803 (alist-cons-after
3804 'unpack 'fix-tests
3805 (lambda _
3806 (substitute* "scipy/integrate/tests/test_quadpack.py"
3807 (("libm.so") "libm.so.6"))
3808 #t)
3809 %standard-phases)))))))
bb986599
FB
3810 (home-page "http://www.scipy.org/")
3811 (synopsis "The Scipy library provides efficient numerical routines")
3812 (description "The SciPy library is one of the core packages that make up
3813the SciPy stack. It provides many user-friendly and efficient numerical
3814routines such as routines for numerical integration and optimization.")
3f641af0 3815 (license license:bsd-3)))
bb986599 3816
764c077b 3817(define-public python2-scipy
57b7b8cd 3818 (package-with-python2 python-scipy))
bb986599 3819
73acc193 3820(define-public python-socksipy-branch
3821 (package
3822 (name "python-socksipy-branch")
3823 (version "1.01")
3824 (source
3825 (origin
3826 (method url-fetch)
3827 (uri (pypi-uri "SocksiPy-branch" version))
3828 (sha256
3829 (base32
3830 "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
3831 (build-system python-build-system)
3832 (arguments
3833 `(#:tests? #f)) ; There are no tests
3834 (home-page "https://code.google.com/archive/p/socksipy-branch/")
3835 (synopsis "Python SOCKS module")
3836 (description
3837 "SocksiPy - A Python SOCKS client module. It provides a
3838socket-like interface that supports connections to any TCP
3839service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
3840The original version was developed by Dan Haim, this is a
3841branch created by Mario Vilas to address some open issues,
3842as the original project seems to have been abandoned circa 2007.")
3843 (license license:bsd-3)))
3844
3845(define-public python2-socksipy-branch
3846 (package-with-python2 python-socksipy-branch))
3847
94914805
EB
3848(define-public python-sqlalchemy
3849 (package
3850 (name "python-sqlalchemy")
a4ba286b 3851 (version "1.0.12")
94914805
EB
3852 (source
3853 (origin
3854 (method url-fetch)
3855 (uri (string-append "https://pypi.python.org/packages/source/S/"
3856 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
3857 (sha256
3858 (base32
a4ba286b 3859 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
94914805
EB
3860 (build-system python-build-system)
3861 (native-inputs
3862 `(("python-cython" ,python-cython) ;for c extensions
3863 ("python-pytest" ,python-pytest)
3864 ("python-mock" ,python-mock))) ;for tests
3865 (arguments
3866 `(#:phases (alist-replace
3867 'check
3868 (lambda _ (zero? (system* "py.test")))
3869 %standard-phases)))
3870 (home-page "http://www.sqlalchemy.org")
3871 (synopsis "Database abstraction library")
3872 (description
3873 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
3874gives application developers the full power and flexibility of SQL. It
3875provides a full suite of well known enterprise-level persistence patterns,
3876designed for efficient and high-performing database access, adapted into a
3877simple and Pythonic domain language.")
3f641af0 3878 (license license:x11)))
94914805
EB
3879
3880(define-public python2-sqlalchemy
3881 (package-with-python2 python-sqlalchemy))
c937562e 3882
4a093330
DM
3883(define-public python-pycodestyle
3884 (package
3885 (name "python-pycodestyle")
3886 (version "2.0.0")
3887 (source
3888 (origin
3889 (method url-fetch)
3890 (uri (pypi-uri "pycodestyle" version))
3891 (sha256
3892 (base32
3893 "1rz2v8506mdjdyxcnv9ygiw6v0d4dqx8z5sjyjm0w2v32h5l5w1p"))))
3894 (build-system python-build-system)
3895 (home-page "https://pycodestyle.readthedocs.io/")
3896 (synopsis "Python style guide checker")
3897 (description "@code{pycodestyle} (formerly pep8) is a tool to check
3898Python code against some of the style conventions in
3899@url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
3900 (license license:expat)
3901 (properties `((python2-variant . ,(delay python2-pycodestyle))))))
3902
3903(define-public python2-pycodestyle
3904 (let ((base (package-with-python2 (strip-python2-variant
3905 python-pycodestyle))))
3906 (package (inherit base)
3907 (native-inputs
3908 `(("python2-setuptools" ,python2-setuptools)
3909 ,@(package-native-inputs base))))))
b91912c4
DM
3910
3911(define-public python-orderedmultidict
3912 (package
3913 (name "python-orderedmultidict")
3914 (version "0.7.10")
3915 (source
3916 (origin
3917 (method url-fetch)
3918 (uri (pypi-uri "orderedmultidict" version))
3919 (sha256
3920 (base32
3921 "1gvqk0jd432wsn88kq4svad68xz3r012jfpnhh9in7bqrkyxidky"))))
3922 (build-system python-build-system)
3923 (arguments
3924 `(#:phases
3925 (modify-phases %standard-phases
3926 (add-after 'unpack 'fix-tests
3927 (lambda _
3928 ;; The package uses nosetest for running the tests.
3929 ;; Adding this initfile allows to run the test suite
3930 ;; without requiring nosetest.
3931 (zero? (system* "touch" "tests/__init__.py")))))))
3932 (propagated-inputs
3933 `(("python-six" ,python-six)))
3934 (native-inputs
3935 `(("python-pycodestyle" ,python-pycodestyle)))
3936 (home-page "https://github.com/gruns/orderedmultidict")
3937 (synopsis "Python Ordered Multivalue Dictionary - omdict")
3938 (description "This package contains a library for ordered multivalue
3939dictionaries. A multivalue dictionary is a dictionary that can store
3940multiple values for the same key. An ordered multivalue dictionary is a
3941multivalue dictionary that retains the order of insertions and deletions.")
3942 (license license:unlicense)
3943 (properties `((python2-variant . ,(delay python2-orderedmultidict))))))
3944
3945(define-public python2-orderedmultidict
3946 (let ((base (package-with-python2 (strip-python2-variant
3947 python-orderedmultidict))))
3948 (package (inherit base)
3949 (native-inputs
3950 `(("python2-setuptools" ,python2-setuptools)
3951 ,@(package-native-inputs base))))))
9dede065
DM
3952
3953(define-public python-furl
3954 (package
3955 (name "python-furl")
3956 (version "0.5.6")
3957 (source
3958 (origin
3959 (method url-fetch)
3960 (uri (pypi-uri "furl" version))
3961 (sha256
3962 (base32
3963 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
3964 (build-system python-build-system)
3965 (propagated-inputs
3966 `(("python-six" ,python-six)
3967 ("python-orderedmultidict" ,python-orderedmultidict)))
3968 (native-inputs
3969 `(("python-pycodestyle" ,python-pycodestyle)))
3970 (home-page "https://github.com/gruns/furl")
3971 (synopsis "URL manipulation in Python")
3972 (description "Furl provides an easy-to-use alternative to the
3973@code{urllib} and @code{urlparse} modules for manipulating URLs.")
3974 (license license:unlicense)
3975 (properties `((python2-variant . ,(delay python2-furl))))))
3976
3977(define-public python2-furl
3978 (let ((base (package-with-python2 (strip-python2-variant
3979 python-furl))))
3980 (package (inherit base)
3981 (native-inputs
3982 `(("python2-setuptools" ,python2-setuptools)
3983 ,@(package-native-inputs base))))))
462bf271
DM
3984
3985(define-public python-flask-babel
3986 (package
3987 (name "python-flask-babel")
3988 (version "0.11.1")
3989 (source
3990 (origin
3991 (method url-fetch)
3992 (uri (pypi-uri "Flask-Babel" version))
3993 (sha256
3994 (base32
3995 "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj"))))
3996 (build-system python-build-system)
3997 (propagated-inputs
3998 `(("python-flask" ,python-flask)
3999 ("python-babel" ,python-babel)
4000 ("python-jinja2" ,python-jinja2)
4001 ("python-pytz" ,python-pytz)))
4002 (home-page "https://github.com/python-babel/flask-babel")
4003 (synopsis "Add i18n/l10n support to Flask applications")
4004 (description "This package implements internationalization and localization
4005support for Flask. This is based on the Python babel module as well as pytz -
4006both of which are installed automatically if you install this library.")
4007 (license license:bsd-3)
4008 (properties `((python2-variant . ,(delay python2-flask-babel))))))
4009
4010(define-public python2-flask-babel
4011 (let ((base (package-with-python2 (strip-python2-variant
4012 python-flask-babel))))
4013 (package (inherit base)
4014 (native-inputs
4015 `(("python2-setuptools" ,python2-setuptools)
4016 ,@(package-native-inputs base))))))
4a093330 4017
de2966cf
EF
4018(define-public python-sqlalchemy-utils
4019 (package
4020 (name "python-sqlalchemy-utils")
4021 (version "0.32.9")
4022 (source
4023 (origin
4024 (method url-fetch)
4025 (uri (pypi-uri "SQLAlchemy-Utils" version))
4026 (sha256
4027 (base32
4028 "1zbmmh7n8m01ikizn2mj1mfwch26nsr1awv9mvskqry7av0mpy98"))))
4029 (build-system python-build-system)
c22b4f87 4030 (propagated-inputs
de2966cf
EF
4031 `(("python-six" ,python-six)
4032 ("python-sqlalchemy" ,python-sqlalchemy)))
26d07efb
DM
4033 (native-inputs
4034 `(("python-pytest" ,python-pytest)))
de2966cf
EF
4035 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
4036 (synopsis "Various utility functions for SQLAlchemy")
4037 (description
4038 "SQLAlchemy-utils provides various utility functions and custom data types
6a686b18
DM
4039for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
4040
4041You might also want to install the following optional dependencies:
4042@enumerate
4043@item @code{python-passlib}
4044@item @code{python-babel}
4045@item @code{python-cryptography}
4046@item @code{python-pytz}
4047@item @code{python-psycopg2}
4048@item @code{python-furl}
4049@item @code{python-flask-babel}
4050@end enumerate
4051")
de2966cf
EF
4052 (properties `((python2-variant . ,(delay python2-sqlalchemy-utils))))
4053 (license license:bsd-3)))
4054
4055(define-public python2-sqlalchemy-utils
4056 (let ((base (package-with-python2
4057 (strip-python2-variant python-sqlalchemy-utils))))
4058 (package (inherit base)
4059 (native-inputs
4060 `(("python2-setuptools" ,python2-setuptools)
4061 ,@(package-native-inputs base))))))
4062
af5a4602
CAW
4063(define-public python-alembic
4064 (package
4065 (name "python-alembic")
bb484529 4066 (version "0.8.7")
af5a4602
CAW
4067 (source
4068 (origin
4069 (method url-fetch)
4070 (uri (pypi-uri "alembic" version))
4071 (sha256
4072 (base32
bb484529 4073 "0ias6fdzwr2s220fnjspkdgm9510bd0cnap0hx5y4zy4srba9f3z"))))
af5a4602
CAW
4074 (build-system python-build-system)
4075 (native-inputs
4076 `(("python-mock" ,python-mock)
4077 ("python-pytest-cov" ,python-pytest-cov)))
4078 (propagated-inputs
4079 `(("python-sqlalchemy" ,python-sqlalchemy)
4080 ("python-mako" ,python-mako)
4081 ("python-editor" ,python-editor)))
4082 (home-page "http://bitbucket.org/zzzeek/alembic")
4083 (synopsis
4084 "Database migration tool for SQLAlchemy")
4085 (description
4086 "Alembic is a lightweight database migration tool for usage with the
4087SQLAlchemy Database Toolkit for Python.")
4088 (license license:expat)
4089 (properties `((python2-variant . ,(delay python2-alembic))))))
4090
4091(define-public python2-alembic
4092 (let ((alembic (package-with-python2
4093 (strip-python2-variant python-alembic))))
4094 (package
4095 (inherit alembic)
4096 (native-inputs `(("python2-setuptools" ,python2-setuptools)
4097 ,@(package-native-inputs alembic))))))
4098
1671c07c
EB
4099(define-public python-distutils-extra
4100 (package
4101 (name "python-distutils-extra")
4102 (version "2.38")
4103 (source
4104 (origin
4105 (method url-fetch)
4106 (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
4107 version "/+download/python-distutils-extra-"
4108 version ".tar.gz"))
4109 (sha256
4110 (base32
4111 "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
4112 (build-system python-build-system)
4113 (native-inputs
4114 `(("python-setuptools" ,python-setuptools)))
4115 (home-page "https://launchpad.net/python-distutils-extra/")
4116 (synopsis "Enhancements to Python's distutils")
4117 (description
4118 "The python-distutils-extra module enables you to easily integrate
4119gettext support, themed icons, and scrollkeeper-based documentation into
4120Python's distutils.")
3f641af0 4121 (license license:gpl2)))
1671c07c
EB
4122
4123(define-public python2-distutils-extra
4124 (package-with-python2 python-distutils-extra))
ea5456c8
EB
4125
4126(define-public python2-elib.intl
4127 (package
4128 (name "python2-elib.intl")
4129 (version "0.0.3")
4130 (source
4131 (origin
4132 ;; This project doesn't tag releases or publish tarballs, so we take
4133 ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
4134 (method git-fetch)
4135 (uri (git-reference
4136 (url "https://github.com/dieterv/elib.intl.git")
4137 (commit "d09997cfef")))
4138 (sha256
4139 (base32
4140 "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
4141 (build-system python-build-system)
4142 (native-inputs
4143 `(("python2-setuptools" ,python2-setuptools)))
4144 (arguments
4145 ;; incompatible with Python 3 (exception syntax)
4146 `(#:python ,python-2
4147 #:tests? #f
4148 ;; With standard flags, the install phase attempts to create a zip'd
4149 ;; egg file, and fails with an error: 'ZIP does not support timestamps
4150 ;; before 1980'
4151 #:configure-flags '("--single-version-externally-managed"
4152 "--record=elib.txt")))
4153 (home-page "https://github.com/dieterv/elib.intl")
4154 (synopsis "Enhanced internationalization for Python")
4155 (description
4156 "The elib.intl module provides enhanced internationalization (I18N)
4157services for your Python modules and applications.")
3f641af0 4158 (license license:lgpl3+)))
ea5456c8 4159
c937562e
EB
4160(define-public python-pillow
4161 (package
4162 (name "python-pillow")
debf4179 4163 (version "3.3.1")
c937562e
EB
4164 (source
4165 (origin
4166 (method url-fetch)
f1d9231d 4167 (uri (pypi-uri "Pillow" version))
c937562e
EB
4168 (sha256
4169 (base32
debf4179 4170 "1w9x3dfrg8b5lqhpjl0fczfyf9842wbqwgxbjjq4vfpxv5jwm49l"))))
c937562e
EB
4171 (build-system python-build-system)
4172 (native-inputs
4173 `(("python-setuptools" ,python-setuptools)
4174 ("python-nose" ,python-nose)))
4175 (inputs
5ff408d9
SB
4176 `(("freetype" ,freetype)
4177 ("lcms" ,lcms)
c937562e
EB
4178 ("zlib" ,zlib)
4179 ("libjpeg" ,libjpeg)
4180 ("openjpeg" ,openjpeg)
5ff408d9
SB
4181 ("libtiff" ,libtiff)
4182 ("libwebp" ,libwebp)))
c937562e
EB
4183 (propagated-inputs
4184 `(;; Used at runtime for pkg_resources
4185 ("python-setuptools" ,python-setuptools)))
4186 (arguments
e5358a6b
LC
4187 `(#:phases (modify-phases %standard-phases
4188 (add-before
4189 'install 'disable-egg-compression
4190 (lambda _
4191 ;; Leave the .egg uncompressed since compressing it would
4192 ;; prevent the GC from identifying run-time dependencies.
4193 ;; See <http://bugs.gnu.org/20765>.
4194 (let ((port (open-file "setup.cfg" "a")))
4195 (display "\n[easy_install]\nzip_ok = 0\n"
4196 port)
4197 (close-port port)
4198 #t)))
4199 (add-after
4200 'install 'check-installed
4201 (lambda _
4202 (begin
4203 (setenv "HOME" (getcwd))
4204 (and (zero? (system* "python" "selftest.py"
4205 "--installed"))
4206 (zero? (system* "python" "test-installed.py"))))))
4207 (delete 'check))))
c937562e
EB
4208 (home-page "https://pypi.python.org/pypi/Pillow")
4209 (synopsis "Fork of the Python Imaging Library")
4210 (description
4211 "The Python Imaging Library adds image processing capabilities to your
4212Python interpreter. This library provides extensive file format support, an
4213efficient internal representation, and fairly powerful image processing
4214capabilities. The core image library is designed for fast access to data
4215stored in a few basic pixel formats. It should provide a solid foundation for
4216a general image processing tool.")
3f641af0 4217 (license (license:x11-style
c937562e
EB
4218 "http://www.pythonware.com/products/pil/license.htm"
4219 "The PIL Software License"))))
4220
4221(define-public python2-pillow
4222 (package-with-python2 python-pillow))
bb986599 4223
a415f036
FB
4224(define-public python-pycparser
4225 (package
4226 (name "python-pycparser")
38eb6919 4227 (version "2.14")
a415f036
FB
4228 (source
4229 (origin
4230 (method url-fetch)
38eb6919 4231 (uri (pypi-uri "pycparser" version))
a415f036
FB
4232 (sha256
4233 (base32
38eb6919 4234 "0wvzyb6rxsfj3xcnpa4ynbh9qc7rrbk2277d5wqpphmx9akv8nbr"))))
a415f036
FB
4235 (outputs '("out" "doc"))
4236 (build-system python-build-system)
4237 (native-inputs
4238 `(("pkg-config" ,pkg-config)
4239 ("python-setuptools" ,python-setuptools)))
4240 (arguments
89b5c60e 4241 `(#:phases
a415f036
FB
4242 (alist-replace
4243 'check
4244 (lambda _
4245 (with-directory-excursion "tests"
4246 (zero? (system* "python" "all_tests.py"))))
4247 (alist-cons-after
4248 'install 'install-doc
4249 (lambda* (#:key outputs #:allow-other-keys)
4250 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4251 (doc (string-append data "/doc/" ,name "-" ,version))
4252 (examples (string-append doc "/examples")))
4253 (mkdir-p examples)
4254 (for-each (lambda (file)
4255 (copy-file (string-append "." file)
4256 (string-append doc file)))
4257 '("/README.rst" "/CHANGES" "/LICENSE"))
4258 (copy-recursively "examples" examples)))
4259 %standard-phases))))
4260 (home-page "https://github.com/eliben/pycparser")
4261 (synopsis "C parser in Python")
4262 (description
4263 "Pycparser is a complete parser of the C language, written in pure Python
4264using the PLY parsing library. It parses C code into an AST and can serve as
4265a front-end for C compilers or analysis tools.")
3f641af0 4266 (license license:bsd-3)))
a415f036
FB
4267
4268(define-public python2-pycparser
4269 (package-with-python2 python-pycparser))
57c3f716
FB
4270
4271(define-public python-cffi
4272 (package
4273 (name "python-cffi")
2d3a437c 4274 (version "1.4.2")
57c3f716
FB
4275 (source
4276 (origin
4277 (method url-fetch)
2d3a437c 4278 (uri (pypi-uri "cffi" version))
89b5c60e 4279 (sha256
2d3a437c 4280 (base32 "161rj52rzi3880lij17d6i9kvgkiwjilrqjs8405k8sf6ryif7cg"))))
57c3f716
FB
4281 (build-system python-build-system)
4282 (outputs '("out" "doc"))
4283 (inputs
4284 `(("libffi" ,libffi)))
4285 (propagated-inputs ; required at run-time
4286 `(("python-pycparser" ,python-pycparser)))
4287 (native-inputs
4288 `(("pkg-config" ,pkg-config)
4289 ("python-sphinx" ,python-sphinx)
4179f952 4290 ("python-pytest" ,python-pytest)
57c3f716
FB
4291 ("python-setuptools" ,python-setuptools)))
4292 (arguments
4179f952 4293 `(#:phases
57c3f716
FB
4294 (alist-cons-after
4295 'install 'install-doc
4296 (lambda* (#:key outputs #:allow-other-keys)
4297 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4298 (doc (string-append data "/doc/" ,name "-" ,version))
4299 (html (string-append doc "/html")))
4300 (with-directory-excursion "doc"
4301 (system* "make" "html")
4302 (mkdir-p html)
4303 (copy-recursively "build/html" html))
4304 (copy-file "LICENSE" (string-append doc "/LICENSE"))))
4305 %standard-phases)))
4306 (home-page "http://cffi.readthedocs.org")
4307 (synopsis "Foreign function interface for Python")
4308 (description
4309 "Foreign Function Interface for Python calling C code.")
bd3fa666 4310 (license license:expat)))
57c3f716
FB
4311
4312(define-public python2-cffi
4313 (package-with-python2 python-cffi))
6fa14469
FB
4314
4315(define-public python-xcffib
4316 (package
4317 (name "python-xcffib")
4318 (version "0.1.9")
4319 (source
4320 (origin
4321 (method url-fetch)
4322 (uri (string-append "https://pypi.python.org/packages/source/x/"
4323 "xcffib/xcffib-" version ".tar.gz"))
4324 (sha256
4325 (base32
4326 "0655hzxv57h1a9ja9kwp0ichbkhf3djw32k33d66xp0q37dq2y81"))))
4327 (build-system python-build-system)
4328 (inputs
4329 `(("libxcb" ,libxcb)
4330 ("python-six" ,python-six)))
4331 (native-inputs
4332 `(("python-setuptools" ,python-setuptools)))
4333 (propagated-inputs
4334 `(("python-cffi" ,python-cffi))) ; used at run time
4335 (arguments
89b5c60e 4336 `(#:phases
6fa14469
FB
4337 (alist-cons-after
4338 'install 'install-doc
4339 (lambda* (#:key outputs #:allow-other-keys)
4340 (let ((doc (string-append (assoc-ref outputs "out") "/share"
4341 "/doc/" ,name "-" ,version)))
4342 (mkdir-p doc)
4343 (copy-file "README.md"
4344 (string-append doc "/README.md"))))
4345 %standard-phases)))
4346 (home-page "https://github.com/tych0/xcffib")
4347 (synopsis "XCB Python bindings")
4348 (description
4349 "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
4350support for Python 3 and PyPy. It is based on cffi.")
bd3fa666 4351 (license license:expat)))
6fa14469
FB
4352
4353(define-public python2-xcffib
4354 (package-with-python2 python-xcffib))
4355
9e099723
FB
4356(define-public python-cairocffi
4357 (package
4358 (name "python-cairocffi")
4359 (version "0.6")
4360 (source
4361 (origin
4362 (method url-fetch)
4363 ;; The archive on pypi is missing the 'utils' directory!
4364 (uri (string-append "https://github.com/SimonSapin/cairocffi/archive/v"
4365 version ".tar.gz"))
f586c877 4366 (file-name (string-append name "-" version ".tar.gz"))
9e099723
FB
4367 (sha256
4368 (base32
4369 "03w5p62sp3nqiccx864sbq0jvh7946277jqx3rcc3dch5xwfvv51"))))
4370 (build-system python-build-system)
4371 (outputs '("out" "doc"))
4372 (inputs
4373 `(("gdk-pixbuf" ,gdk-pixbuf)
4374 ("cairo" ,cairo)))
4375 (native-inputs
4376 `(("pkg-config" ,pkg-config)
4377 ("python-sphinx" ,python-sphinx)
4378 ("python-docutils" ,python-docutils)
4379 ("python-setuptools" ,python-setuptools)))
4380 (propagated-inputs
4381 `(("python-xcffib" ,python-xcffib))) ; used at run time
4382 (arguments
89b5c60e 4383 `(#:phases
9e099723
FB
4384 (alist-cons-after
4385 'install 'install-doc
4386 (lambda* (#:key inputs outputs #:allow-other-keys)
4387 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4388 (doc (string-append data "/doc/" ,name "-" ,version))
4389 (html (string-append doc "/html")))
89b5c60e 4390 (setenv "LD_LIBRARY_PATH"
9e099723
FB
4391 (string-append (assoc-ref inputs "cairo") "/lib" ":"
4392 (assoc-ref inputs "gdk-pixbuf") "/lib"))
4393 (setenv "LANG" "en_US.UTF-8")
4394 (mkdir-p html)
4395 (for-each (lambda (file)
4396 (copy-file (string-append "." file)
4397 (string-append doc file)))
4398 '("/README.rst" "/CHANGES" "/LICENSE"))
4399 (system* "python" "setup.py" "build_sphinx")
4400 (copy-recursively "docs/_build/html" html)))
4401 %standard-phases)))
4402 (home-page "https://github.com/SimonSapin/cairocffi")
4403 (synopsis "Python bindings and object-oriented API for Cairo")
4404 (description
4405 "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
4406Python bindings and object-oriented API for cairo. Cairo is a 2D vector
4407graphics library with support for multiple backends including image buffers,
4408PNG, PostScript, PDF, and SVG file output.")
3f641af0 4409 (license license:bsd-3)))
9e099723
FB
4410
4411(define-public python2-cairocffi
4412 (package-with-python2 python-cairocffi))
4413
3cff95cb
RW
4414(define-public python-decorator
4415 (package
4416 (name "python-decorator")
eb6e2e81 4417 (version "4.0.9")
3cff95cb
RW
4418 (source
4419 (origin
4420 (method url-fetch)
e21338be 4421 (uri (pypi-uri "decorator" version))
3cff95cb 4422 (sha256
eb6e2e81 4423 (base32 "1a5vwhflfd9sh3rfb40xlyipldgdzfff6brman57hqv3661jw0lh"))))
3cff95cb
RW
4424 (build-system python-build-system)
4425 (arguments '(#:tests? #f)) ; no test target
4426 (native-inputs
4427 `(("python-setuptools" ,python-setuptools)))
eb6e2e81 4428 (home-page "https://pypi.python.org/pypi/decorator/")
3cff95cb
RW
4429 (synopsis "Python module to simplify usage of decorators")
4430 (description
4431 "The aim of the decorator module is to simplify the usage of decorators
4432for the average programmer, and to popularize decorators usage giving examples
4433of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
4434etc. The core of this module is a decorator factory.")
4435 (license license:expat)))
4436
4437(define-public python2-decorator
4438 (package-with-python2 python-decorator))
4439
2c0499ad
RW
4440(define-public python-drmaa
4441 (package
4442 (name "python-drmaa")
4443 (version "0.7.6")
4444 (source
4445 (origin
4446 (method url-fetch)
4447 (uri (string-append
4448 "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
4449 version ".tar.gz"))
4450 (sha256
4451 (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
4452 (build-system python-build-system)
4453 ;; The test suite requires libdrmaa which is provided by the cluster
4454 ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
4455 ;; should be set to the path of the libdrmaa library.
4456 (arguments '(#:tests? #f))
4457 (native-inputs
4458 `(("python-nose" ,python-nose)
4459 ("python-setuptools" ,python-setuptools)))
4460 (home-page "https://pypi.python.org/pypi/drmaa")
4461 (synopsis "Python bindings for the DRMAA library")
4462 (description
4463 "A Python package for Distributed Resource Management (DRM) job
4464submission and control. This package is an implementation of the DRMAA 1.0
4465Python language binding specification.")
3f641af0 4466 (license license:bsd-3)))
2c0499ad
RW
4467
4468(define-public python2-drmaa
4469 (package-with-python2 python-drmaa))
4470
d05c6da0
RW
4471(define-public python-gridmap
4472 (package
4473 (name "python-gridmap")
4474 (version "0.13.0")
4475 (source
4476 (origin
4477 (method url-fetch)
4478 (uri (string-append
4479 "https://github.com/pygridtools/gridmap/archive/v"
4480 version ".tar.gz"))
4481 (file-name (string-append name "-" version ".tar.gz"))
4482 (sha256
4483 (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
4484 (build-system python-build-system)
4485 (inputs
4486 `(("python-psutil" ,python-psutil)
4487 ("python-drmaa" ,python-drmaa)
4488 ("python-pyzmq" ,python-pyzmq)))
4489 (native-inputs
4490 `(("python-setuptools" ,python-setuptools)))
4491 (home-page "https://github.com/pygridtools/gridmap")
4492 (synopsis "Create jobs on a cluster directly from Python")
4493 (description
4494 "Gridmap is a Python package to allow you to easily create jobs on the
4495cluster directly from Python. You can directly map Python functions onto the
4496cluster without needing to write any wrapper code yourself.")
3f641af0 4497 (license license:gpl3+)))
d05c6da0
RW
4498
4499(define-public python2-gridmap
4500 (package-with-python2 python-gridmap))
4501
cb6d5c54
RW
4502(define-public python-pexpect
4503 (package
4504 (name "python-pexpect")
4505 (version "3.3")
4506 (source
4507 (origin
4508 (method url-fetch)
4509 (uri (string-append "https://pypi.python.org/packages/source/p/"
4510 "pexpect/pexpect-" version ".tar.gz"))
4511 (sha256
4512 (base32 "1fp5gm976z7ghm8jw57463rj19cv06c8zw842prgyg788f6n3snz"))))
4513 (build-system python-build-system)
4514 (arguments
4515 `(#:phases
4516 (modify-phases %standard-phases
4517 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4518 (native-inputs
4519 `(("python-nose" ,python-nose)))
4520 (home-page "http://pexpect.readthedocs.org/")
4521 (synopsis "Controlling interactive console applications")
4522 (description
4523 "Pexpect is a pure Python module for spawning child applications;
4524controlling them; and responding to expected patterns in their output.
4525Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
4526child application and control it as if a human were typing commands.")
3f641af0 4527 (license license:isc)))
cb6d5c54
RW
4528
4529(define-public python2-pexpect
4530 (package-with-python2 python-pexpect))
4531
229ad120
RW
4532(define-public python-setuptools-scm
4533 (package
4534 (name "python-setuptools-scm")
42d6d0d0 4535 (version "1.11.1")
229ad120
RW
4536 (source (origin
4537 (method url-fetch)
383af6b0 4538 (uri (pypi-uri "setuptools_scm" version))
229ad120
RW
4539 (sha256
4540 (base32
42d6d0d0 4541 "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc"))))
229ad120 4542 (build-system python-build-system)
383af6b0 4543 (native-inputs `(("python-setuptools" ,python-setuptools)))
229ad120
RW
4544 (home-page "https://github.com/pypa/setuptools_scm/")
4545 (synopsis "Manage Python package versions in SCM metadata")
4546 (description
383af6b0 4547 "Setuptools_scm handles managing your Python package versions in
229ad120
RW
4548@dfn{software configuration management} (SCM) metadata instead of declaring
4549them as the version argument or in a SCM managed file.")
4550 (license license:expat)))
4551
4552(define-public python2-setuptools-scm
4553 (package-with-python2 python-setuptools-scm))
4554
b74270ee
RW
4555(define-public python-pathpy
4556 (package
4557 (name "python-pathpy")
4558 (version "8.1.1")
4559 (source
4560 (origin
4561 (method url-fetch)
4562 (uri (string-append "https://pypi.python.org/packages/source/p/"
4563 "path.py/path.py-" version ".tar.gz"))
4564 (sha256
4565 (base32 "1p8s1l2vfkqhqxdhqlj0g1jjw4f1as2frr35sjcpjjpd5a89y41f"))))
4566 (build-system python-build-system)
4567 (propagated-inputs
4568 `(("python-appdirs" ,python-appdirs)))
4569 (native-inputs
553b709b
EF
4570 `(("python-setuptools" ,python-setuptools)
4571 ("python-setuptools-scm" ,python-setuptools-scm)
b74270ee
RW
4572 ("python-pytest" ,python-pytest)
4573 ("python-pytest-runner" ,python-pytest-runner)))
4574 (home-page "http://github.com/jaraco/path.py")
4575 (synopsis "Python module wrapper for built-in os.path")
4576 (description
4577 "@code{path.py} implements path objects as first-class entities, allowing
4578common operations on files to be invoked on those path objects directly.")
4579 (license license:expat)))
4580
4581(define-public python2-pathpy
4582 (package-with-python2 python-pathpy))
4583
0d34e01b
RW
4584(define-public python-pickleshare
4585 (package
4586 (name "python-pickleshare")
4587 (version "0.5")
4588 (source
4589 (origin
4590 (method url-fetch)
4591 (uri (string-append "https://pypi.python.org/packages/source/p/"
4592 "pickleshare/pickleshare-" version ".tar.gz"))
4593 (sha256
4594 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
4595 (build-system python-build-system)
4596 (propagated-inputs
4597 `(("python-pathpy" ,python-pathpy)))
b72a4410
EF
4598 (native-inputs
4599 `(("python-setuptools" ,python-setuptools)))
0d34e01b
RW
4600 (home-page "https://github.com/vivainio/pickleshare")
4601 (synopsis "Tiny key value database with concurrency support")
4602 (description
4603 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
4604Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
4605shelve, many processes can access the database simultaneously. Changing a
4606value in database is immediately visible to other processes accessing the same
4607database. Concurrency is possible because the values are stored in separate
4608files. Hence the “database” is a directory where all files are governed by
4609PickleShare.")
4610 (license license:expat)))
4611
4612(define-public python2-pickleshare
4613 (package-with-python2 python-pickleshare))
4614
cd6e5189
RW
4615(define-public python-simplegeneric
4616 (package
4617 (name "python-simplegeneric")
4618 (version "0.8.1")
4619 (source
4620 (origin
4621 (method url-fetch)
4622 (uri (string-append "https://pypi.python.org/packages/source/s/"
4623 "simplegeneric/simplegeneric-" version ".zip"))
4624 (sha256
4625 (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
4626 (build-system python-build-system)
4627 (native-inputs
69b96e5e
RW
4628 `(("python-setuptools" ,python-setuptools)
4629 ("unzip" ,unzip)))
cd6e5189
RW
4630 (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
4631 (synopsis "Python module for simple generic functions")
4632 (description
4633 "The simplegeneric module lets you define simple single-dispatch generic
4634functions, akin to Python’s built-in generic functions like @code{len()},
4635@code{iter()} and so on. However, instead of using specially-named methods,
4636these generic functions use simple lookup tables, akin to those used by
4637e.g. @code{pickle.dump()} and other generic functions found in the Python
4638standard library.")
3f641af0 4639 (license license:zpl2.1)))
cd6e5189
RW
4640
4641(define-public python2-simplegeneric
4642 (package-with-python2 python-simplegeneric))
4643
ddc7d8ed
RW
4644(define-public python-ipython-genutils
4645 (package
4646 (name "python-ipython-genutils")
4647 (version "0.1.0")
4648 (source
4649 (origin
4650 (method url-fetch)
4651 (uri (string-append "https://pypi.python.org/packages/source/i/"
4652 "ipython_genutils/ipython_genutils-"
4653 version ".tar.gz"))
4654 (sha256
4655 (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
4656 (build-system python-build-system)
4657 (arguments `(#:tests? #f)) ; no tests
4658 (home-page "http://ipython.org")
4659 (synopsis "Vestigial utilities from IPython")
4660 (description
4661 "This package provides retired utilities from IPython.")
3f641af0 4662 (license license:bsd-3)))
ddc7d8ed
RW
4663
4664(define-public python2-ipython-genutils
4665 (package-with-python2 python-ipython-genutils))
4666
2b10eb48
RW
4667(define-public python-traitlets
4668 (package
4669 (name "python-traitlets")
a5ba1481 4670 (version "4.2.0")
2b10eb48
RW
4671 (source
4672 (origin
4673 (method url-fetch)
cc0c4fde 4674 (uri (pypi-uri "traitlets" version))
2b10eb48
RW
4675 (sha256
4676 (base32
a5ba1481 4677 "1afy08sa5n9gnkvh3da49c16zkyv598vchv0p1hp7zzjy8895hz4"))))
2b10eb48
RW
4678 (build-system python-build-system)
4679 (arguments
4680 `(#:phases
4681 (modify-phases %standard-phases
4682 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
4683 (propagated-inputs
4684 `(("python-ipython-genutils" ,python-ipython-genutils)
4685 ("python-decorator" ,python-decorator)))
4686 (native-inputs
cc0c4fde
EF
4687 `(("python-mock" ,python-mock)
4688 ("python-nose" ,python-nose)))
2b10eb48
RW
4689 (home-page "http://ipython.org")
4690 (synopsis "Configuration system for Python applications")
4691 (description
4692 "Traitlets is a framework that lets Python classes have attributes with
4693type checking, dynamically calculated default values, and ‘on change’
4694callbacks. The package also includes a mechanism to use traitlets for
4695configuration, loading values from files or from command line arguments. This
4696is a distinct layer on top of traitlets, so you can use traitlets in your code
4697without using the configuration machinery.")
3f641af0 4698 (license license:bsd-3)))
2b10eb48
RW
4699
4700(define-public python2-traitlets
4701 (package-with-python2 python-traitlets))
4702
4263b06f
RW
4703(define-public python-jupyter-core
4704 (package
4705 (name "python-jupyter-core")
4706 (version "4.2.0")
4707 (source
4708 (origin
4709 (method url-fetch)
4710 (uri (string-append (pypi-uri "jupyter_core" version)))
4711 (sha256
4712 (base32
4713 "177d9csqldzhsh6xs1p4nf6lzvhzyg6gklqjf69lxgxyadx87v24"))))
4714 (build-system python-build-system)
4715 ;; FIXME: not sure how to run the tests
4716 (arguments `(#:tests? #f))
4717 (propagated-inputs
4718 `(("python-traitlets" ,python-traitlets)))
4719 (home-page "http://jupyter.org/")
4720 (synopsis "Jupyter base package")
4721 (description
4722 "Jupyter core is the base package on which Jupyter projects rely.")
4723 (license license:bsd-3)))
4724
4725(define-public python2-jupyter-core
4726 (package-with-python2 python-jupyter-core))
4727
9ff01f2d
RW
4728(define-public python-jupyter-client
4729 (package
4730 (name "python-jupyter-client")
4731 (version "4.4.0")
4732 (source
4733 (origin
4734 (method url-fetch)
4735 (uri (pypi-uri "jupyter_client" version))
4736 (sha256
4737 (base32
4738 "1vjjrpjw7k5sh982pbjnslv7byfbfazjw9g92jvs7dz5qbx556n9"))))
4739 (build-system python-build-system)
4740 ;; Tests fail because of missing native python kernel which I assume is
4741 ;; provided by the ipython package, which we cannot use because it would
4742 ;; cause a dependency cycle.
4743 (arguments `(#:tests? #f))
4744 (propagated-inputs
4745 `(("python-pyzmq" ,python-pyzmq)
4746 ("python-traitlets" ,python-traitlets)
4747 ("python-jupyter-core" ,python-jupyter-core)))
4748 (home-page "http://jupyter.org/")
4749 (synopsis "Jupyter protocol implementation and client libraries")
4750 (description
4751 "The @code{jupyter_client} package contains the reference implementation
4752of the Jupyter protocol. It also provides client and kernel management APIs
4753for working with kernels, and the @code{jupyter kernelspec} entrypoint for
4754installing @code{kernelspec}s for use with Jupyter frontends.")
4755 (license license:bsd-3)))
4756
4757(define-public python2-jupyter-client
4758 (package-with-python2 python-jupyter-client))
4759
ab526102
RW
4760(define-public python-ipykernel
4761 (package
4762 (name "python-ipykernel")
4763 (version "4.5.0")
4764 (source
4765 (origin
4766 (method url-fetch)
4767 (uri (pypi-uri "ipykernel" version))
4768 (sha256
4769 (base32 "15c2bp1x3i6s4xb7vz7742h3kmvdfdfn9n2haywm3mwgvf77jni4"))))
4770 (build-system python-build-system)
4771 ;; The tests load a submodule of IPython. However, IPython itself depends
4772 ;; on ipykernel.
4773 (arguments `(#:tests? #f))
4774 (propagated-inputs
4775 ;; imported at runtime during connect
4776 `(("python-jupyter-client" ,python-jupyter-client)))
4777 (home-page "http://ipython.org")
4778 (synopsis "IPython Kernel for Jupyter")
4779 (description
4780 "This package provides the IPython kernel for Jupyter.")
4781 (license license:bsd-3)))
4782
4783(define-public python2-ipykernel
4784 (package-with-python2 python-ipykernel))
4785
5ff6effc
RW
4786(define-public python-testpath
4787 (package
4788 (name "python-testpath")
4789 (version "0.2")
4790 (source
4791 (origin
4792 (method url-fetch)
4793 (uri (string-append "https://github.com/jupyter/testpath/archive/"
4794 version ".tar.gz"))
4795 (file-name (string-append name "-" version ".tar.gz"))
4796 (sha256
4797 (base32
4798 "04kh3fgvmqz6cfcw79q70qwjz7ib7lxm27cc548iy2rpr33qqf55"))))
4799 (build-system python-build-system)
4800 (arguments
4801 `(#:tests? #f ; this package does not even have a setup.py
4802 #:phases
4803 (modify-phases %standard-phases
4804 (delete 'install)
4805 (replace 'build
4806 (lambda* (#:key inputs outputs #:allow-other-keys)
4807 (let ((dir (string-append
4808 (assoc-ref outputs "out")
4809 "/lib/python"
4810 (string-take (string-take-right
4811 (assoc-ref inputs "python") 5) 3)
4812 "/site-packages/testpath")))
4813 (mkdir-p dir)
4814 (copy-recursively "testpath" dir))
4815 #t)))))
4816 (home-page "https://github.com/takluyver/testpath")
4817 (synopsis "Test utilities for code working with files and commands")
4818 (description
4819 "Testpath is a collection of utilities for Python code working with files
4820and commands. It contains functions to check things on the filesystem, and
4821tools for mocking system commands and recording calls to those.")
4822 (license license:expat)))
4823
4824(define-public python2-testpath
4825 (package-with-python2 python-testpath))
4826
ae1ab9fe
FB
4827(define-public python-ipython
4828 (package
4829 (name "python-ipython")
accd5f99 4830 (version "4.0.0")
ae1ab9fe
FB
4831 (source
4832 (origin
fceac880 4833 (method url-fetch)
accd5f99 4834 (uri (pypi-uri "ipython" version ".tar.gz"))
fceac880 4835 (sha256
accd5f99 4836 (base32 "1npl8g6bfsff9j938ypx0q5fyzy2l8lp0jl8skjjj2zv0z27dlig"))))
ae1ab9fe
FB
4837 (build-system python-build-system)
4838 (outputs '("out" "doc"))
3a0b1b9a
FB
4839 (propagated-inputs
4840 `(("python-pyzmq" ,python-pyzmq)
accd5f99 4841 ("python-terminado" ,python-terminado)
ae1ab9fe 4842 ("python-matplotlib" ,python-matplotlib)
5d26e542 4843 ("python-numpy" ,python-numpy)
ae1ab9fe 4844 ("python-numpydoc" ,python-numpydoc)
3a0b1b9a
FB
4845 ("python-jinja2" ,python-jinja2)
4846 ("python-mistune" ,python-mistune)
accd5f99
RW
4847 ("python-pexpect" ,python-pexpect)
4848 ("python-pickleshare" ,python-pickleshare)
4849 ("python-simplegeneric" ,python-simplegeneric)
3a0b1b9a 4850 ("python-jsonschema" ,python-jsonschema)
accd5f99
RW
4851 ("python-traitlets" ,python-traitlets)
4852 ("python-ipykernel" ,python-ipykernel)
4853 ("python-pygments" ,python-pygments)))
4854 (inputs
4855 `(("readline" ,readline)
4856 ("which" ,which)))
ae1ab9fe
FB
4857 (native-inputs
4858 `(("pkg-config" ,pkg-config)
accd5f99
RW
4859 ("python-requests" ,python-requests) ;; for tests
4860 ("python-testpath" ,python-testpath)
4861 ("python-nose" ,python-nose)
ae1ab9fe
FB
4862 ("python-sphinx" ,python-sphinx)
4863 ("texlive" ,texlive)
4864 ("texinfo" ,texinfo)
4865 ("python-setuptools" ,python-setuptools)))
4866 (arguments
89b5c60e 4867 `(#:phases
3a0b1b9a
FB
4868 (modify-phases %standard-phases
4869 (add-after
4870 'install 'install-doc
4871 (lambda* (#:key inputs outputs #:allow-other-keys)
4872 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
4873 (doc (string-append data "/doc/" ,name "-" ,version))
4874 (html (string-append doc "/html"))
4875 (man1 (string-append data "/man/man1"))
4876 (info (string-append data "/info"))
4877 (examples (string-append doc "/examples")))
afd3d931 4878 (setenv "LANG" "en_US.utf8")
3a0b1b9a 4879 (with-directory-excursion "docs"
accd5f99
RW
4880 ;; FIXME: pdf fails to build
4881 ;;(system* "make" "pdf" "PAPER=a4")
4882 (system* "make" "html")
3a0b1b9a
FB
4883 (system* "make" "info"))
4884 (copy-recursively "docs/man" man1)
4885 (copy-recursively "examples" examples)
accd5f99 4886 (copy-recursively "docs/build/html" html)
3a0b1b9a
FB
4887 ;; (copy-file "docs/build/latex/ipython.pdf"
4888 ;; (string-append doc "/ipython.pdf"))
4889 (mkdir-p info)
4890 (copy-file "docs/build/texinfo/ipython.info"
4891 (string-append info "/ipython.info"))
4892 (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))))
4893 ;; Tests can only be run after the library has been installed and not
4894 ;; within the source directory.
4895 (delete 'check)
4896 (add-after
4897 'install 'check
4898 (lambda* (#:key outputs tests? #:allow-other-keys)
4899 (if tests?
4900 (with-directory-excursion "/tmp"
4901 (setenv "HOME" "/tmp/") ;; required by a test
4902 (zero? (system* (string-append (assoc-ref outputs "out")
4903 "/bin/iptest"))))
4904 #t)))
4905 (add-before
4906 'install 'fix-tests
4907 (lambda* (#:key inputs #:allow-other-keys)
4908 (substitute* "./IPython/utils/_process_posix.py"
4909 (("/usr/bin/env', 'which") (which "which")))
4910 (substitute* "./IPython/core/tests/test_inputtransformer.py"
4911 (("#!/usr/bin/env python")
4912 (string-append "#!" (which "python"))))
4913 ;; Disable 1 failing test
4914 (substitute* "./IPython/core/tests/test_magic.py"
4915 (("def test_dirops\\(\\):" all)
4916 (string-append "@dec.skipif(True)\n" all))))))))
ae1ab9fe
FB
4917 (home-page "http://ipython.org")
4918 (synopsis "IPython is a tool for interactive computing in Python")
4919 (description
4920 "IPython provides a rich architecture for interactive computing with:
4921Powerful interactive shells, a browser-based notebook, support for interactive
4922data visualization, embeddable interpreters and tools for parallel
4923computing.")
135ba811
EF
4924 (license license:bsd-3)
4925 (properties `((python2-variant . ,(delay python2-ipython))))))
ae1ab9fe
FB
4926
4927(define-public python2-ipython
135ba811 4928 (let ((ipython (package-with-python2 (strip-python2-variant python-ipython))))
3a0b1b9a
FB
4929 (package
4930 (inherit ipython)
4931 ;; FIXME: some tests are failing
4932 (arguments
4933 `(#:tests? #f ,@(package-arguments ipython)))
3a0b1b9a 4934 ;; FIXME: add pyreadline once available.
89b5c60e 4935 (inputs
135ba811
EF
4936 `(("python2-mock" ,python2-mock)
4937 ,@(package-inputs ipython))))))
03411993
AE
4938
4939(define-public python-isodate
4940 (package
4941 (name "python-isodate")
b6785c2e 4942 (version "0.5.4")
03411993
AE
4943 (source
4944 (origin
4945 (method url-fetch)
b6785c2e 4946 (uri (pypi-uri "isodate" version))
03411993
AE
4947 (sha256
4948 (base32
b6785c2e 4949 "0cafaiwixgpxwh9dsd28qb0dbzsj6xpxjdkyk30ns91ps10mq422"))))
03411993
AE
4950 (build-system python-build-system)
4951 (inputs
4952 `(("python-setuptools" ,python-setuptools)))
4953 (home-page
4954 "http://cheeseshop.python.org/pypi/isodate")
4955 (synopsis
4956 "Python date parser and formatter")
4957 (description
4958 "Python-isodate is a python module for parsing and formatting
4959ISO 8601 dates, time and duration.")
3f641af0 4960 (license license:bsd-3)))
03411993
AE
4961
4962(define-public python2-isodate
4963 (package-with-python2 python-isodate))
673ab897
AE
4964
4965(define-public python-html5lib
4966 (package
4967 (name "python-html5lib")
fee04c19 4968 (version "1.0b8")
673ab897
AE
4969 (source
4970 (origin
4971 (method url-fetch)
fee04c19 4972 (uri (pypi-uri "html5lib" version))
673ab897
AE
4973 (sha256
4974 (base32
fee04c19 4975 "1lknq5j3nh11xrl268ks76zaj0gyzh34v94n5vbf6dk8llzxdx0q"))))
673ab897 4976 (build-system python-build-system)
3dd75476
AE
4977 (propagated-inputs
4978 `(("python-six" ,python-six))) ; required to "import html5lib"
673ab897
AE
4979 (inputs
4980 `(("python-setuptools" ,python-setuptools)))
4981 (arguments
4982 `(#:test-target "check"))
4983 (home-page
4984 "https://github.com/html5lib/html5lib-python")
4985 (synopsis
4986 "Python HTML parser based on the WHATWG HTML specifcation")
4987 (description
4988 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
4989and written in Python.")
bd3fa666 4990 (license license:expat)))
673ab897
AE
4991
4992(define-public python2-html5lib
4993 (package-with-python2 python-html5lib))
e99f4211 4994
8ee62c97
RW
4995;; Needed for python-bleach, a dependency of python-notebook
4996(define-public python-html5lib-0.9
4997 (package
4998 (inherit python-html5lib)
4999 (version "0.999")
5000 (source
5001 (origin
5002 (method url-fetch)
5003 (uri (pypi-uri "html5lib" version))
5004 (sha256
5005 (base32
5006 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
5007
5008(define-public python2-html5lib-0.9
5009 (package-with-python2 python-html5lib-0.9))
5010
e99f4211
MW
5011(define-public python-urwid
5012 (package
5013 (name "python-urwid")
51ff41f6 5014 (version "1.3.1")
e99f4211
MW
5015 (source
5016 (origin
5017 (method url-fetch)
b97c1bfd 5018 (uri (pypi-uri "urwid" version))
e99f4211
MW
5019 (sha256
5020 (base32
51ff41f6 5021 "18cnd1wdjcas08x5qwa5ayw6jsfcn33w4d9f7q3s29fy6qzc1kng"))))
e99f4211 5022 (build-system python-build-system)
b97c1bfd
LF
5023 (arguments
5024 `(#:phases
5025 (modify-phases %standard-phases
5026 ;; Disable failing test. Bug filed upstream:
5027 ;; https://github.com/wardi/urwid/issues/164
51ff41f6 5028 ;; TODO: check again for python-urwid > 1.3.1 or python > 3.4.3.
b97c1bfd
LF
5029 (add-after 'unpack 'disable-failing-test
5030 (lambda _
5031 (substitute* "urwid/tests/test_event_loops.py"
5032 (("test_remove_watch_file")
5033 "disable_remove_watch_file")))))))
e99f4211
MW
5034 (native-inputs `(("python-setuptools" ,python-setuptools)))
5035 (home-page "http://urwid.org")
5036 (synopsis "Console user interface library for Python")
5037 (description
5038 "Urwid is a curses-based UI/widget library for Python. It includes many
5039features useful for text console applications.")
3f641af0 5040 (license license:lgpl2.1+)))
e99f4211
MW
5041
5042(define-public python2-urwid
5043 (package-with-python2 python-urwid))
d95a56c6 5044
47d0b292
TS
5045(define-public python-urwidtrees
5046 (package
5047 (name "python-urwidtrees")
37ec4623 5048 (version "1.0.2")
47d0b292
TS
5049 (source
5050 (origin
5051 (method url-fetch)
37ec4623
TS
5052 ;; package author intends on distributing via github rather than pypi:
5053 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
5054 (uri (string-append "https://github.com/pazz/urwidtrees/archive/"
5055 version ".tar.gz"))
5056 (file-name (string-append name "-" version ".tar.gz"))
47d0b292
TS
5057 (sha256
5058 (base32
37ec4623 5059 "0d30lyd3s2a97rhqfax5w9ssqds2z6aydqx3c6j2c2lk3cb4ngvh"))))
47d0b292
TS
5060 (build-system python-build-system)
5061 (arguments
5062 '(#:tests? #f)) ; no tests
5063 (inputs `(("python-urwid" ,python-urwid)))
5064 (home-page "https://github.com/pazz/urwidtrees")
5065 (synopsis "Tree widgets for urwid")
5066 (description "Urwidtrees is a Widget Container API for the @code{urwid}
5067toolkit. Use it to build trees of widgets.")
3f641af0 5068 (license license:gpl3+)))
47d0b292
TS
5069
5070(define-public python2-urwidtrees
5071 (package-with-python2 python-urwidtrees))
5072
d95a56c6
PAR
5073(define-public python-dbus
5074 (package
5075 (name "python-dbus")
5076 (version "1.2.0")
5077 (source
5078 (origin
5079 (method url-fetch)
5080 (uri (string-append
5cc3096c 5081 "https://dbus.freedesktop.org/releases/dbus-python/dbus-python-"
d95a56c6
PAR
5082 version ".tar.gz"))
5083 (sha256
5084 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71"))))
5085 (build-system gnu-build-system)
6717c879
SB
5086 (arguments
5087 '(#:phases
5088 (modify-phases %standard-phases
5089 (add-before
5090 'check 'pre-check
5091 (lambda _
5092 ;; XXX: For the missing '/etc/machine-id'.
5093 (substitute* "test/run-test.sh"
5094 (("DBUS_FATAL_WARNINGS=1")
5095 "DBUS_FATAL_WARNINGS=0"))
5096 #t)))))
d95a56c6
PAR
5097 (native-inputs
5098 `(("pkg-config" ,pkg-config)))
5099 (inputs
5100 `(("python" ,python)
2e88d113 5101 ("dbus-glib" ,dbus-glib)))
d95a56c6
PAR
5102 (synopsis "Python bindings for D-bus")
5103 (description "python-dbus provides bindings for libdbus, the reference
5104implementation of D-Bus.")
5105 (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
bd3fa666 5106 (license license:expat)))
b52af02b
MW
5107
5108(define-public python2-dbus
5109 (package (inherit python-dbus)
5110 (name "python2-dbus")
5111 (inputs `(("python" ,python-2)
5112 ,@(alist-delete "python"
5113 (package-inputs python-dbus)
5114 equal?)))
5115 ;; FIXME: on Python 2, the test_utf8 fails with:
5116 ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
5117 (arguments `(#:tests? #f))))
a6ac8332
AE
5118
5119(define-public python-apsw
5120 (package
5121 (name "python-apsw")
917708c2 5122 (version "3.9.2-r1")
a6ac8332
AE
5123 (source
5124 (origin
5125 (method url-fetch)
917708c2 5126 (uri (pypi-uri "apsw" version))
a6ac8332
AE
5127 (sha256
5128 (base32
917708c2 5129 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
a6ac8332
AE
5130 (build-system python-build-system)
5131 (inputs
5132 `(("python-setuptools" ,python-setuptools)
5133 ("sqlite" ,sqlite)))
5134 (arguments
5135 `(#:phases
5136 ;; swap check and install phases
5137 (alist-cons-after
5138 'install 'check
5139 (assoc-ref %standard-phases 'check)
5140 (alist-delete
5141 'check
5142 %standard-phases))))
5143 (home-page "https://github.com/rogerbinns/apsw/")
5144 (synopsis "Another Python SQLite Wrapper")
5145 (description "APSW is a Python wrapper for the SQLite
5146embedded relational database engine. In contrast to other wrappers such as
5147pysqlite it focuses on being a minimal layer over SQLite attempting just to
5148translate the complete SQLite API into Python.")
abde5f37 5149 (license license:zlib)))
a6ac8332
AE
5150
5151(define-public python2-apsw
5152 (package-with-python2 python-apsw))
26b307e2
AE
5153
5154(define-public python-lxml
5155 (package
5156 (name "python-lxml")
d58a3203 5157 (version "3.6.0")
26b307e2
AE
5158 (source
5159 (origin
5160 (method url-fetch)
97bbc480 5161 (uri (pypi-uri "lxml" version))
26b307e2 5162 (sha256
d58a3203
EF
5163 (base32
5164 "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w"))))
26b307e2
AE
5165 (build-system python-build-system)
5166 (inputs
5167 `(("libxml2" ,libxml2)
5168 ("libxslt" ,libxslt)
5169 ("python-setuptools" ,python-setuptools)))
5170 (home-page "http://lxml.de/")
5171 (synopsis
5172 "Python XML processing library")
5173 (description
5174 "The lxml XML toolkit is a Pythonic binding for the C libraries
5175libxml2 and libxslt.")
3f641af0 5176 (license license:bsd-3))) ; and a few more, see LICENSES.txt
26b307e2
AE
5177
5178(define-public python2-lxml
5179 (package-with-python2 python-lxml))
4ed20663 5180
b32a1e47
CAW
5181;; beautifulsoup4 has a totally different namespace than 3.x,
5182;; and pypi seems to put it under its own name, so I guess we should too
5183(define-public python-beautifulsoup4
5184 (package
5185 (name "python-beautifulsoup4")
67fd4a12 5186 (version "4.5.1")
b32a1e47
CAW
5187 (source
5188 (origin
5189 (method url-fetch)
5190 (uri (pypi-uri "beautifulsoup4" version))
5191 (sha256
5192 (base32
67fd4a12 5193 "1qgmhw65ncsgccjhslgkkszif47q6gvxwqv4mim17agxd81p951w"))))
b32a1e47 5194 (build-system python-build-system)
5f37f0b6
LF
5195 (arguments
5196 `(#:phases
5197 (modify-phases %standard-phases
5198 ;; The Python 2 source is the definitive source of beautifulsoup4. We
5199 ;; must use this conversion script when building with Python 3. The
5200 ;; conversion script also runs the tests.
5201 ;; For more information, see the file 'convert-py3k' in the source
5202 ;; distribution.
5203 (replace 'check
5204 (lambda _ (zero? (system* "./convert-py3k")))))))
b32a1e47
CAW
5205 (home-page
5206 "http://www.crummy.com/software/BeautifulSoup/bs4/")
5207 (synopsis
5208 "Python screen-scraping library")
5209 (description
5210 "Beautiful Soup is a Python library designed for rapidly setting up
5211screen-scraping projects. It offers Pythonic idioms for navigating,
5212searching, and modifying a parse tree, providing a toolkit for
5213dissecting a document and extracting what you need. It automatically
5214converts incoming documents to Unicode and outgoing documents to UTF-8.")
5215 (license license:expat)
5216 (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
5217
5218(define-public python2-beautifulsoup4
5219 (package
5220 (inherit (package-with-python2
5221 (strip-python2-variant python-beautifulsoup4)))
5f37f0b6
LF
5222 (native-inputs `(("python2-setuptools" ,python2-setuptools)))
5223 (arguments `(#:python ,python-2))))
b32a1e47 5224
092e86f5
AE
5225(define-public python2-cssutils
5226 (package
5227 (name "python2-cssutils")
58d1d816 5228 (version "1.0.1")
092e86f5
AE
5229 (source
5230 (origin
5231 (method url-fetch)
58d1d816 5232 (uri (pypi-uri "cssutils" version))
092e86f5 5233 (sha256
58d1d816
EF
5234 (base32
5235 "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq"))))
092e86f5
AE
5236 (build-system python-build-system)
5237 (native-inputs
5238 `(("python2-mock" ,python2-mock) ; for the tests
5239 ("unzip" ,unzip))) ; for unpacking the source
5240 (inputs
5241 `(("python2-setuptools" ,python2-setuptools)))
5242 (arguments
5243 `(#:python ,python-2 ; Otherwise tests fail with a syntax error.
5244 #:tests? #f ; The tests apparently download an external URL.
da6dd842 5245 ))
092e86f5
AE
5246 (home-page "http://cthedot.de/cssutils/")
5247 (synopsis
5248 "CSS Cascading Style Sheets library for Python")
5249 (description
5250 "Cssutils is a Python package for parsing and building CSS
5251Cascading Style Sheets. Currently it provides a DOM only and no rendering
5252options.")
3f641af0 5253 (license license:lgpl3+)))
880ff77c
AE
5254
5255(define-public python-cssselect
5256 (package
5257 (name "python-cssselect")
d5ccd9ab 5258 (version "0.9.2")
880ff77c
AE
5259 (source
5260 (origin
5261 (method url-fetch)
d5ccd9ab 5262 (uri (pypi-uri "cssselect" version))
880ff77c 5263 (sha256
d5ccd9ab
EF
5264 (base32
5265 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
880ff77c
AE
5266 (build-system python-build-system)
5267 (inputs
5268 `(("python-setuptools" ,python-setuptools)))
5269 (arguments
5270 ;; tests fail with message
5271 ;; AttributeError: 'module' object has no attribute 'tests'
5272 `(#:tests? #f))
5273 (home-page
5274 "https://pythonhosted.org/cssselect/")
5275 (synopsis
5276 "CSS3 selector parser and translator to XPath 1.0")
5277 (description
5278 "Cssselect ia a Python module that parses CSS3 Selectors and translates
5279them to XPath 1.0 expressions. Such expressions can be used in lxml or
5280another XPath engine to find the matching elements in an XML or HTML document.")
3f641af0 5281 (license license:bsd-3)))
880ff77c
AE
5282
5283(define-public python2-cssselect
5284 (package-with-python2 python-cssselect))
60357f99
AE
5285
5286(define-public python-netifaces
5287 (package
5288 (name "python-netifaces")
5289 (version "0.10.4")
5290 (source
5291 (origin
5292 (method url-fetch)
5293 (uri (string-append
5294 "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
5295 version
5296 ".tar.gz"))
5297 (sha256
5298 (base32
5299 "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
5300 (build-system python-build-system)
5301 (inputs
5302 `(("python-setuptools" ,python-setuptools)))
5303 (home-page
5304 "https://bitbucket.org/al45tair/netifaces")
5305 (synopsis
5306 "Python module for portable network interface information")
5307 (description
5308 "Netifaces is a Python module providing information on network
5309interfaces in an easy and portable manner.")
5310 (license license:expat)))
5311
5312(define-public python2-netifaces
5313 (package-with-python2 python-netifaces))
92cb152b 5314
32f77c04
RW
5315(define-public python-networkx
5316 (package
5317 (name "python-networkx")
a4d9609c 5318 (version "1.11")
32f77c04
RW
5319 (source
5320 (origin
5321 (method url-fetch)
a4d9609c 5322 (uri (pypi-uri "networkx" version))
32f77c04 5323 (sha256
a4d9609c 5324 (base32 "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd"))))
32f77c04
RW
5325 (build-system python-build-system)
5326 ;; python-decorator is needed at runtime
5327 (propagated-inputs
5328 `(("python-decorator" ,python-decorator)))
5329 (native-inputs
5330 `(("python-setuptools" ,python-setuptools)
5331 ("python-nose" ,python-nose)))
5332 (home-page "http://networkx.github.io/")
5333 (synopsis "Python module for creating and manipulating graphs and networks")
5334 (description
5335 "NetworkX is a Python package for the creation, manipulation, and study
5336of the structure, dynamics, and functions of complex networks.")
3f641af0 5337 (license license:bsd-3)))
32f77c04
RW
5338
5339(define-public python2-networkx
5340 (package-with-python2 python-networkx))
5341
92cb152b
RW
5342(define-public snakemake
5343 (package
5344 (name "snakemake")
5345 (version "3.2.1")
5346 (source
5347 (origin
5348 (method url-fetch)
5349 (uri (string-append
5350 "https://pypi.python.org/packages/source/s/snakemake/snakemake-"
5351 version ".tar.gz"))
5352 (sha256
5353 (base32 "0fi4b63sj60hvi7rfydvmz2icl4wj74djw5sn2gl8hxd02qw4b91"))))
5354 (build-system python-build-system)
5355 (inputs `(("python-setuptools" ,python-setuptools)))
5356 (home-page "https://bitbucket.org/johanneskoester/snakemake")
5357 (synopsis "Python-based execution environment for make-like workflows")
5358 (description
5359 "Snakemake aims to reduce the complexity of creating workflows by
5360providing a clean and modern domain specific specification language (DSL) in
5361Python style, together with a fast and comfortable execution environment.")
5362 (license license:expat)))
a1920bc9 5363
35de1fbd
RW
5364(define-public python-seaborn
5365 (package
5366 (name "python-seaborn")
fc899d4f 5367 (version "0.7.0")
35de1fbd
RW
5368 (source
5369 (origin
5370 (method url-fetch)
fc899d4f 5371 (uri (pypi-uri "seaborn" version))
35de1fbd 5372 (sha256
fc899d4f 5373 (base32 "0ibi3xsfm2kysph61mnfy0pf8d5rkgxgrdb0z9nbizgcgdsb5a0m"))))
35de1fbd
RW
5374 (build-system python-build-system)
5375 (propagated-inputs
5376 `(("python-pandas" ,python-pandas)
5377 ("python-matplotlib" ,python-matplotlib)
5378 ("python-scipy" ,python-scipy)))
35de1fbd
RW
5379 (home-page "http://stanford.edu/~mwaskom/software/seaborn/")
5380 (synopsis "Statistical data visualization")
5381 (description
5382 "Seaborn is a library for making attractive and informative statistical
5383graphics in Python. It is built on top of matplotlib and tightly integrated
5384with the PyData stack, including support for numpy and pandas data structures
5385and statistical routines from scipy and statsmodels.")
3f641af0 5386 (license license:bsd-3)
fc899d4f 5387 (properties `((python2-variant . ,(delay python2-seaborn))))))
35de1fbd
RW
5388
5389(define-public python2-seaborn
fc899d4f
EF
5390 (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
5391 (package
5392 (inherit base)
5393 (propagated-inputs `(("python2-pytz" ,python2-pytz)
5394 ,@(package-propagated-inputs base)))
5395 (native-inputs `(("python2-setuptools" ,python2-setuptools)
5396 ,@(package-native-inputs base))))))
35de1fbd 5397
90fc547f
RW
5398(define-public python-sympy
5399 (package
5400 (name "python-sympy")
5401 (version "0.7.6")
5402 (source
5403 (origin
5404 (method url-fetch)
5405 (uri (string-append
5406 "https://github.com/sympy/sympy/releases/download/sympy-"
5407 version "/sympy-" version ".tar.gz"))
5408 (sha256
5409 (base32 "19yp0gy4i7p4g6l3b8vaqkj9qj7yqb5kqy0qgbdagpzgkdz958yz"))))
5410 (build-system python-build-system)
5411 (native-inputs
5412 `(("python-setuptools" ,python-setuptools)))
5413 (home-page "http://www.sympy.org/")
5414 (synopsis "Python library for symbolic mathematics")
5415 (description
5416 "SymPy is a Python library for symbolic mathematics. It aims to become a
5417full-featured computer algebra system (CAS) while keeping the code as simple
5418as possible in order to be comprehensible and easily extensible.")
3f641af0 5419 (license license:bsd-3)))
90fc547f
RW
5420
5421(define-public python2-sympy
5422 (package-with-python2 python-sympy))
5423
e8c9b010
SR
5424(define-public python-q
5425 (package
5426 (name "python-q")
5427 (version "2.6")
5428 (source
5429 (origin
5430 (method url-fetch)
5431 (uri (pypi-uri "q" version))
5432 (sha256
5433 (base32
5434 "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
5435 (build-system python-build-system)
5436 (home-page "https://github.com/zestyping/q")
5437 (synopsis "Quick-and-dirty debugging output for tired programmers")
5438 (description
5439 "q is a Python module for \"print\" style of debugging Python code. It
5440provides convenient short API for print out of values, tracebacks, and
5441falling into the Python interpreter.")
5442 (license license:asl2.0)
5443 (properties `((python2-variant . ,(delay python2-q))))))
5444
5445(define-public python2-q
5446 (let ((base (package-with-python2 (strip-python2-variant python-q))))
5447 (package
5448 (inherit base)
5449 (native-inputs
5450 `(("python2-setuptools" ,python2-setuptools)
5451 ,@(package-native-inputs base))))))
5452
a1920bc9
FB
5453(define-public python-testlib
5454 (package
5455 (name "python-testlib")
5456 (version "0.6.5")
5457 (source
5458 (origin
5459 (method url-fetch)
5460 (uri (string-append
5461 "https://pypi.python.org/packages/source/t/testlib/testlib-"
5462 version ".zip"))
5463 (sha256
5464 (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
5465 (build-system python-build-system)
5466 (inputs
5467 `(("python-setuptools" ,python-setuptools)))
5468 (native-inputs
5469 `(("unzip" ,unzip)))
5470 (arguments
5471 `(#:phases
5472 (alist-replace
5473 'unpack
5474 (lambda* (#:key inputs outputs #:allow-other-keys)
5475 (let ((unzip (string-append (assoc-ref inputs "unzip")
5476 "/bin/unzip"))
5477 (source (assoc-ref inputs "source")))
5478 (and (zero? (system* unzip source))
5479 (chdir (string-append "testlib-" ,version)))))
5480 %standard-phases)))
5481 (synopsis "Python micro test suite harness")
5482 (description "A micro unittest suite harness for Python.")
5483 (home-page "https://github.com/trentm/testlib")
1cb9c006 5484 (license license:expat)))
a1920bc9
FB
5485
5486(define-public python2-testlib
5487 (package-with-python2 python-testlib))
db62afa5
LC
5488
5489(define-public python2-xlib
5490 (package
5491 (name "python2-xlib")
5492 (version "0.14")
5493 (source (origin
5494 (method url-fetch)
de67e922
LF
5495 (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
5496 "/" version "/"
db62afa5
LC
5497 "python-xlib-" version ".tar.gz"))
5498 (sha256
5499 (base32
5500 "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
5501 (build-system python-build-system)
5502 (arguments
5503 `(#:python ,python-2 ;Python 2 only
5504 #:tests? #f)) ;no tests
5505 (inputs
5506 `(("python-setuptools" ,python-setuptools)))
5507 (home-page "http://python-xlib.sourceforge.net/")
5508 (synopsis "Python X11 client library")
5509 (description
5510 "The Python X Library is intended to be a fully functional X client
5511library for Python programs. It is useful to implement low-level X clients.
5512It is written entirely in Python.")
3f641af0 5513 (license license:gpl2+)))
0234ca06
DT
5514
5515(define-public python-singledispatch
5516 (package
5517 (name "python-singledispatch")
5518 (version "3.4.0.3")
5519 (source
5520 (origin
5521 (method url-fetch)
bdb67d84 5522 (uri (pypi-uri "singledispatch" version))
0234ca06
DT
5523 (sha256
5524 (base32
5525 "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
5526 (build-system python-build-system)
5527 (native-inputs
5528 `(("python-setuptools" ,python-setuptools)))
bdb67d84 5529 (inputs
0234ca06
DT
5530 `(("python-six" ,python-six)))
5531 (home-page
5532 "http://docs.python.org/3/library/functools.html#functools.singledispatch")
5533 (synopsis "Backport of singledispatch feature from Python 3.4")
5534 (description
5535 "This library brings functools.singledispatch from Python 3.4 to Python
55362.6-3.3.")
5537 (license license:expat)))
5538
5539(define-public python2-singledispatch
5540 (package-with-python2 python-singledispatch))
feaae484 5541
310d218f
RW
5542(define-public python-tornado
5543 (package
5544 (name "python-tornado")
a724924b 5545 (version "4.3")
310d218f
RW
5546 (source
5547 (origin
5548 (method url-fetch)
a724924b 5549 (uri (pypi-uri "tornado" version))
310d218f 5550 (sha256
a724924b 5551 (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9"))))
310d218f 5552 (build-system python-build-system)
310d218f 5553 (native-inputs
b455439b
EF
5554 `(("python-certifi" ,python-certifi)))
5555 (inputs
5556 `(("python-backports-abc" ,python-backports-abc)))
f4a4a718 5557 (home-page "http://www.tornadoweb.org/")
310d218f
RW
5558 (synopsis "Python web framework and asynchronous networking library")
5559 (description
5560 "Tornado is a Python web framework and asynchronous networking library,
5561originally developed at FriendFeed. By using non-blocking network I/O,
5562Tornado can scale to tens of thousands of open connections, making it ideal
5563for long polling, WebSockets, and other applications that require a long-lived
5564connection to each user.")
3f641af0 5565 (license license:asl2.0)
b455439b 5566 (properties `((python2-variant . ,(delay python2-tornado))))))
310d218f
RW
5567
5568(define-public python2-tornado
b455439b 5569 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
310d218f
RW
5570 (package (inherit tornado)
5571 (inputs
5572 `(("python2-backport-ssl-match-hostname"
5573 ,python2-backport-ssl-match-hostname)
b455439b
EF
5574 ("python2-singledispatch" ,python2-singledispatch)
5575 ,@(package-inputs tornado)))
5576 (native-inputs
5577 `(("python2-setuptools" ,python2-setuptools)
5578 ,@(package-native-inputs tornado))))))
310d218f 5579
6b59fc10
EF
5580;; the python- version can be removed with python-3.5
5581(define-public python-backports-abc
5582 (package
5583 (name "python-backports-abc")
5584 (version "0.4")
5585 (source
5586 (origin
5587 (method url-fetch)
5588 (uri (pypi-uri "backports_abc" version))
5589 (sha256
5590 (base32
5591 "19fh75lni9pb673n2fn505m1rckm0af0szcv5xx1qm1xpa940glb"))))
5592 (build-system python-build-system)
5593 (inputs
5594 `(("python-setuptools" ,python-setuptools)))
5595 (home-page "https://github.com/cython/backports_abc")
66e07664 5596 (synopsis "Backport of additions to the 'collections.abc' module")
6b59fc10
EF
5597 (description
5598 "Python-backports-abc provides a backport of additions to the
5599'collections.abc' module in Python-3.5.")
3f641af0 5600 (license license:psfl)))
6b59fc10
EF
5601
5602(define-public python2-backports-abc
5603 (package-with-python2 python-backports-abc))
5604
feaae484
SB
5605(define-public python-waf
5606 (package
5607 (name "python-waf")
7dd55dfe 5608 (version "1.9.5")
feaae484
SB
5609 (source (origin
5610 (method url-fetch)
bae67829 5611 (uri (string-append "https://waf.io/"
feaae484
SB
5612 "waf-" version ".tar.bz2"))
5613 (sha256
5614 (base32
7dd55dfe 5615 "1sl3ipi2czds57rlzjnpdzqa0skx8asfvmh3qmibpvdwf15rpppg"))))
feaae484
SB
5616 (build-system python-build-system)
5617 (arguments
5618 '(#:phases
5619 (modify-phases %standard-phases
5620 (replace 'build
7dd55dfe
EF
5621 (lambda _
5622 (zero? (system* "python" "waf-light" "configure" "build"))))
feaae484 5623 (replace 'check
7dd55dfe
EF
5624 (lambda _
5625 (zero? (system* "python" "waf" "--version"))))
feaae484 5626 (replace 'install
7dd55dfe
EF
5627 (lambda _
5628 (copy-file "waf" %output))))))
5629 (home-page "http://waf.io/")
feaae484
SB
5630 (synopsis "Python-based build system")
5631 (description
5632 "Waf is a Python-based framework for configuring, compiling and installing
5633applications.")
3f641af0 5634 (license license:bsd-3)))
feaae484
SB
5635
5636(define-public python2-waf
5637 (package-with-python2 python-waf))
45203542
RW
5638
5639(define-public python-pyzmq
5640 (package
5641 (name "python-pyzmq")
3655ee76 5642 (version "15.1.0")
45203542
RW
5643 (source
5644 (origin
5645 (method url-fetch)
3655ee76 5646 (uri (pypi-uri "pyzmq" version))
45203542 5647 (sha256
3655ee76 5648 (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
45203542
RW
5649 (build-system python-build-system)
5650 (arguments
5651 `(#:configure-flags
5652 (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
5653 ;; FIXME: You must build pyzmq with 'python setup.py build_ext
5654 ;; --inplace' for 'python setup.py test' to work.
5655 #:tests? #f))
5656 (inputs
5657 `(("zeromq" ,zeromq)))
5658 (native-inputs
5659 `(("pkg-config" ,pkg-config)
5660 ("python-nose" ,python-nose)
5661 ("python-setuptools" ,python-setuptools)))
5662 (home-page "http://github.com/zeromq/pyzmq")
5663 (synopsis "Python bindings for 0MQ")
5664 (description
5665 "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
3f641af0 5666 (license license:bsd-4)))
45203542
RW
5667
5668(define-public python2-pyzmq
5669 (package-with-python2 python-pyzmq))
d889e6c4
CR
5670
5671(define-public python-pep8
5672 (package
5673 (name "python-pep8")
db251311 5674 (version "1.7.0")
d889e6c4
CR
5675 (source
5676 (origin
5677 (method url-fetch)
db251311 5678 (uri (pypi-uri "pep8" version))
d889e6c4
CR
5679 (sha256
5680 (base32
db251311 5681 "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))))
d889e6c4
CR
5682 (build-system python-build-system)
5683 (inputs
5684 `(("python-setuptools" ,python-setuptools)))
5685 (home-page "http://pep8.readthedocs.org/")
5686 (synopsis "Python style guide checker")
5687 (description
5688 "This tools checks Python code against some of the style conventions in
5689PEP 8.")
5690 (license license:expat)))
5691
5692(define-public python2-pep8
5693 (package-with-python2 python-pep8))
e31d7f44
CR
5694
5695(define-public python-pyflakes
5696 (package
5697 (name "python-pyflakes")
2abc3972 5698 (version "1.0.0")
e31d7f44
CR
5699 (source
5700 (origin
5701 (method url-fetch)
2abc3972 5702 (uri (pypi-uri "pyflakes" version))
e31d7f44
CR
5703 (sha256
5704 (base32
2abc3972 5705 "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
e31d7f44
CR
5706 (build-system python-build-system)
5707 (inputs
5708 `(("python-setuptools" ,python-setuptools)))
5709 (home-page
5710 "https://github.com/pyflakes/pyflakes")
5711 (synopsis "Passive checker of Python programs")
5712 (description
5713 "Pyflakes statically checks Python source code for common errors.")
5714 (license license:expat)))
a59e017c 5715
7261d9eb
CR
5716(define-public python2-pyflakes
5717 (package-with-python2 python-pyflakes))
5718
a59e017c
CR
5719(define-public python-mccabe
5720 (package
5721 (name "python-mccabe")
c6ebd40d 5722 (version "0.4.0")
a59e017c
CR
5723 (source
5724 (origin
5725 (method url-fetch)
c6ebd40d 5726 (uri (pypi-uri "mccabe" version))
a59e017c
CR
5727 (sha256
5728 (base32
c6ebd40d 5729 "0yr08a36h8lqlif10l4xcikbbig7q8f41gqywir7rrvnv3mi4aws"))))
a59e017c
CR
5730 (build-system python-build-system)
5731 (inputs
c6ebd40d
EF
5732 `(("python-pytest" ,python-pytest)
5733 ("python-pytest-runner" ,python-pytest-runner)
5734 ("python-setuptools" ,python-setuptools)))
a59e017c
CR
5735 (home-page "https://github.com/flintwork/mccabe")
5736 (synopsis "McCabe checker, plugin for flake8")
5737 (description
5738 "This package provides a Flake8 plug-in to compute the McCabe cyclomatic
5739complexity of Python source code.")
7362371d 5740 (license license:expat)))
a59e017c
CR
5741
5742(define-public python2-mccabe
5743 (package-with-python2 python-mccabe))
e8df8f47 5744
7477fbb1
CR
5745(define-public python-mccabe-0.2.1
5746 (package (inherit python-mccabe)
5747 (version "0.2.1")
5748 (source
5749 (origin
5750 (method url-fetch)
5751 (uri (pypi-uri "mccabe" version))
5752 (sha256
5753 (base32
c6ebd40d 5754 "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs"))))
b3546174 5755 (inputs `(("python-setuptools" ,python-setuptools)))))
7477fbb1
CR
5756
5757(define-public python2-mccabe-0.2.1
5758 (package-with-python2 python-mccabe-0.2.1))
5759
e8df8f47
CR
5760;; Flake8 2.4.1 requires an older version of pep8.
5761;; This should be removed ASAP.
5762(define-public python-pep8-1.5.7
5763 (package (inherit python-pep8)
5764 (version "1.5.7")
5765 (source
5766 (origin
5767 (method url-fetch)
5768 (uri (string-append
5769 "https://pypi.python.org/packages/source/p/pep8/pep8-"
5770 version
5771 ".tar.gz"))
5772 (sha256
5773 (base32
5774 "12b9bbdbwnspxgak14xg58c130x2n0blxzlms5jn2dszn8qj3d0m"))))))
5775
5776(define-public python2-pep8-1.5.7
5777 (package-with-python2 python-pep8-1.5.7))
5778
5779;; Flake8 2.4.1 requires an older version of pyflakes.
5780;; This should be removed ASAP.
5781(define-public python-pyflakes-0.8.1
5782 (package (inherit python-pyflakes)
5783 (version "0.8.1")
5784 (source
5785 (origin
5786 (method url-fetch)
5787 (uri (string-append
5788 "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
5789 version
5790 ".tar.gz"))
5791 (sha256
5792 (base32
5793 "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z"))))))
5794
5795(define-public python2-pyflakes-0.8.1
7261d9eb 5796 (package-with-python2 python-pyflakes-0.8.1))
e8df8f47
CR
5797
5798(define-public python-flake8
5799 (package
5800 (name "python-flake8")
43789136 5801 (version "2.5.4")
e8df8f47
CR
5802 (source
5803 (origin
5804 (method url-fetch)
1b995533 5805 (uri (pypi-uri "flake8" version))
e8df8f47
CR
5806 (sha256
5807 (base32
43789136 5808 "0bs9cz4fr99r2rwig1b8jwaadl1nan7kgpdzqwj0bwbckwbmh7nc"))))
e8df8f47
CR
5809 (build-system python-build-system)
5810 (inputs
5811 `(("python-setuptools" ,python-setuptools)
43789136
EF
5812 ("python-pep8" ,python-pep8)
5813 ("python-pyflakes" ,python-pyflakes)
e8df8f47
CR
5814 ("python-mccabe" ,python-mccabe)
5815 ("python-mock" ,python-mock)
5816 ("python-nose" ,python-nose)))
5817 (home-page "https://gitlab.com/pycqa/flake8")
5818 (synopsis
5819 "The modular source code checker: pep8, pyflakes and co")
5820 (description
5821 "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
5822 (license license:expat)))
5823
5824(define-public python2-flake8
5825 (package-with-python2 python-flake8))
61b9ac53 5826
abf21efc
CR
5827;; This will only be needed by the python-hacking package and will not be
5828;; necessary once python-hacking > 0.10.2 is released.
5829(define-public python-flake8-2.2.4
5830 (package (inherit python-flake8)
5831 (inputs
5832 `(("python-setuptools" ,python-setuptools)
5833 ("python-pep8" ,python-pep8-1.5.7)
5834 ("python-pyflakes" ,python-pyflakes-0.8.1)
5835 ("python-mccabe" ,python-mccabe-0.2.1)
5836 ("python-mock" ,python-mock)
5837 ("python-nose" ,python-nose)))
5838 (version "2.2.4")
5839 (source
5840 (origin
5841 (method url-fetch)
5842 (uri (pypi-uri "flake8" version))
5843 (sha256
5844 (base32
5845 "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8"))))))
5846
5847(define-public python2-flake8-2.2.4
5848 (package-with-python2 python-flake8-2.2.4))
5849
61b9ac53
FB
5850(define-public python-mistune
5851 (package
5852 (name "python-mistune")
5853 (version "0.7")
5854 (source
5855 (origin
5856 (method url-fetch)
5857 (uri (string-append
5858 "https://pypi.python.org/packages/source/m/mistune/mistune-"
5859 version
5860 ".tar.gz"))
5861 (sha256
5862 (base32
5863 "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
5864 (build-system python-build-system)
5865 (inputs
5866 `(("python-setuptools" ,python-setuptools)
5867 ("python-nose" ,python-nose)
5868 ("python-cython" ,python-cython)))
5869 (home-page "https://github.com/lepture/mistune")
5870 (synopsis "Markdown parser in pure Python")
5871 (description "This package provides a fast markdown parser in pure
5872Python.")
3f641af0 5873 (license license:bsd-3)))
61b9ac53
FB
5874
5875(define-public python2-mistune
5876 (package-with-python2 python-mistune))
6d992d07 5877
b9893908
EE
5878(define-public python-markdown
5879 (package
5880 (name "python-markdown")
5881 (version "2.6.5")
5882 (source
5883 (origin
5884 (method url-fetch)
5885 (uri (pypi-uri "Markdown" version))
5886 (sha256
5887 (base32
5888 "0q758a3fiiawr20b3hhjfs677cwj6xi284yb7xspcvv0fdicz54d"))))
5889 (build-system python-build-system)
5890 (arguments
5891 `(#:phases
5892 (modify-phases %standard-phases
5893 (replace 'check
5894 (lambda _
5895 (zero? (system* "python" "run-tests.py")))))))
5896 (native-inputs
5897 `(("python-nose" ,python-nose)
5898 ("python-pyyaml" ,python-pyyaml)))
5899 (home-page "https://pythonhosted.org/Markdown/")
5900 (synopsis "Python implementation of Markdown")
5901 (description
5902 "This package provides a Python implementation of John Gruber's
5903Markdown. The library features international input, various Markdown
5904extensions, and several HTML output formats. A command line wrapper
5905markdown_py is also provided to convert Markdown files to HTML.")
3f641af0 5906 (license license:bsd-3)))
b9893908
EE
5907
5908(define-public python2-markdown
5909 (package-with-python2 python-markdown))
5910
6d992d07
FB
5911(define-public python-ptyprocess
5912 (package
5913 (name "python-ptyprocess")
5914 (version "0.5")
5915 (source
5916 (origin
5917 (method url-fetch)
5918 (uri (string-append
5919 "https://pypi.python.org/packages/source/p/ptyprocess/ptyprocess-"
5920 version ".tar.gz"))
5921 (sha256
5922 (base32
5923 "0nggns5kikn32yyda2zrj1xdmh49pi3v0drggcdwljbv36r8zdyw"))))
5924 (build-system python-build-system)
5925 (inputs
5926 `(("python-setuptools" ,python-setuptools)
5927 ("python-nose" ,python-nose)))
5928 (arguments
5929 `(#:phases
5930 (modify-phases %standard-phases
5931 (replace 'check
5932 (lambda _
5933 (zero? (system* "nosetests")))))))
5934 (home-page "https://github.com/pexpect/ptyprocess")
5935 (synopsis "Run a subprocess in a pseudo terminal")
5936 (description
5937 "This package provides a Python library used to launch a subprocess in a
5938pseudo terminal (pty), and interact with both the process and its pty.")
3f641af0 5939 (license license:isc)))
6d992d07
FB
5940
5941(define-public python2-ptyprocess
5942 (package-with-python2 python-ptyprocess))
4aadb1df
FB
5943
5944(define-public python-terminado
5945 (package
5946 (name "python-terminado")
783fb0a3 5947 (version "0.6")
4aadb1df
FB
5948 (source
5949 (origin
5950 (method url-fetch)
783fb0a3 5951 (uri (pypi-uri "terminado" version))
4aadb1df
FB
5952 (sha256
5953 (base32
783fb0a3 5954 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
4aadb1df
FB
5955 (build-system python-build-system)
5956 (propagated-inputs
5957 `(("python-tornado" ,python-tornado)
5958 ("python-ptyprocess" ,python-ptyprocess)))
783fb0a3
EF
5959 (native-inputs
5960 `(("python-nose" ,python-nose)))
4aadb1df
FB
5961 (arguments
5962 `(#:phases
5963 (modify-phases %standard-phases
5964 (replace 'check
5965 (lambda _
5966 (zero? (system* "nosetests")))))))
5967 (home-page "https://github.com/takluyver/terminado")
5968 (synopsis "Terminals served to term.js using Tornado websockets")
5969 (description "This package provides a Tornado websocket backend for the
5970term.js Javascript terminal emulator library.")
3f641af0 5971 (license license:bsd-2)
783fb0a3 5972 (properties `((python2-variant . ,(delay python2-terminado))))))
4aadb1df
FB
5973
5974(define-public python2-terminado
783fb0a3 5975 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
4aadb1df 5976 (package (inherit terminado)
783fb0a3
EF
5977 (propagated-inputs
5978 `(("python2-backport-ssl-match-hostname"
5979 ,python2-backport-ssl-match-hostname)
5980 ,@(package-propagated-inputs terminado)))
5981 (native-inputs
5982 `(("python2-setuptools" ,python2-setuptools)
5983 ,@(package-native-inputs terminado))))))
5faa5ce4 5984
d582eaac
SB
5985(define-public python-fonttools
5986 (package
5987 (name "python-fonttools")
5988 (version "2.5")
5989 (source (origin
5990 (method url-fetch)
5991 (uri (string-append
5992 "https://pypi.python.org/packages/source/F/FontTools/"
5993 "fonttools-" version ".tar.gz"))
5994 (sha256
5995 (base32
5996 "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
5997 (build-system python-build-system)
5998 (arguments '(#:test-target "check"))
5999 (propagated-inputs
6000 ;; XXX: module not found if setuptools is not available.
6001 `(("python-setuptools" ,python-setuptools)))
6002 (home-page "http://github.com/behdad/fonttools")
6003 (synopsis "Tools to manipulate font files")
6004 (description
6005 "FontTools/TTX is a library to manipulate font files from Python. It
6006supports reading and writinfg of TrueType/OpenType fonts, reading and writing
6007of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
6008also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
6009from an XML-based format.")
3f641af0
DC
6010 (license (license:non-copyleft
6011 "file://LICENSE.txt"
6012 "See LICENSE.txt in the distribution."))))
d582eaac
SB
6013
6014(define-public python2-fonttools
6015 (package-with-python2 python-fonttools))
75710da6 6016
5faa5ce4
RW
6017(define-public python-ly
6018 (package
6019 (name "python-ly")
5135354f 6020 (version "0.9.4")
5faa5ce4
RW
6021 (source
6022 (origin
6023 (method url-fetch)
5135354f
RW
6024 (uri (string-append "https://pypi.python.org/packages/57/4f/"
6025 "889579244947368f28eda66b782331b1e75f83fd72e63f9ece93cd7a18f9"
6026 "/python-ly-" version ".tar.gz"))
5faa5ce4
RW
6027 (sha256
6028 (base32
5135354f 6029 "0g6n288l83sfwavxh1aryi0aqvsr3sp7v6f903mckwqa4scpky62"))))
5faa5ce4
RW
6030 (build-system python-build-system)
6031 (native-inputs
6032 `(("python-setuptools" ,python-setuptools)))
6033 (synopsis "Tool and library for manipulating LilyPond files")
6034 (description "This package provides a Python library to parse, manipulate
6035or create documents in LilyPond format. A command line program ly is also
6036provided that can be used to do various manipulations with LilyPond files.")
6037 (home-page "https://pypi.python.org/pypi/python-ly")
3f641af0 6038 (license license:gpl2+)))
7e7b27d9
CR
6039
6040(define-public python-appdirs
6041 (package
6042 (name "python-appdirs")
6043 (version "1.4.0")
6044 (source
6045 (origin
6046 (method url-fetch)
6047 (uri (string-append
6048 "https://pypi.python.org/packages/source/a/appdirs/appdirs-"
6049 version
6050 ".tar.gz"))
6051 (sha256
6052 (base32
6053 "1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
6054 (build-system python-build-system)
6055 (inputs
6056 `(("python-setuptools" ,python-setuptools)))
6057 (home-page "http://github.com/ActiveState/appdirs")
6058 (synopsis
6059 "Determine platform-specific dirs, e.g. a \"user data dir\"")
6060 (description
6061 "This module provides a portable way of finding out where user data
6062should be stored on various operating systems.")
6063 (license license:expat)))
6064
6065(define-public python2-appdirs
6066 (package-with-python2 python-appdirs))
89b2e0b0
LF
6067
6068(define-public python-llfuse
6069 (package
6070 (name "python-llfuse")
e36ace36 6071 (version "1.1.1")
89b2e0b0
LF
6072 (source (origin
6073 (method url-fetch)
6074 (uri (string-append
6075 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6076 "llfuse-" version ".tar.bz2"))
6077 (sha256
6078 (base32
e36ace36 6079 "0v6vj9mb286njgd1szg9hz2qdh5f3vkhsvajripfcqg458av310v"))))
89b2e0b0
LF
6080 (build-system python-build-system)
6081 (inputs
6082 `(("fuse" ,fuse)
6083 ("attr" ,attr)))
6084 (native-inputs
6085 `(("pkg-config" ,pkg-config)
6086 ("python-setuptools" ,python-setuptools)))
6087 (synopsis "Python bindings for FUSE")
6088 (description
6089 "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
6090 (home-page "https://bitbucket.org/nikratio/python-llfuse/")
3f641af0 6091 (license license:lgpl2.0+)
cd0569c4 6092 (properties `((python2-variant . ,(delay python2-llfuse))))))
89b2e0b0
LF
6093
6094(define-public python2-llfuse
cd0569c4
LF
6095 (package (inherit (package-with-python2
6096 (strip-python2-variant python-llfuse)))
6097 (propagated-inputs `(("python2-contextlib2" ,python2-contextlib2)))))
6098
6099;; For attic-0.16
6100(define-public python-llfuse-0.41
6101 (package (inherit python-llfuse)
229b3661 6102 (version "0.41.1")
cd0569c4
LF
6103 (source (origin
6104 (method url-fetch)
6105 (uri (string-append
6106 "https://bitbucket.org/nikratio/python-llfuse/downloads/"
6107 "llfuse-" version ".tar.bz2"))
6108 (sha256
6109 (base32
229b3661 6110 "1imlqw9b73086y97izr036f58pgc5akv4ihc2rrf8j5h75jbrlaa"))))
cd0569c4
LF
6111 ;; Python-LLFUSE < 0.42 includes underscore.js, which is MIT (expat)
6112 ;; licensed. The rest of the package is licensed under LGPL2.0 or later.
3f641af0 6113 (license (list license:expat license:lgpl2.0+))))
641c9871
LF
6114
6115(define-public python-msgpack
6116 (package
6117 (name "python-msgpack")
aed625bd 6118 (version "0.4.8")
641c9871
LF
6119 (source (origin
6120 (method url-fetch)
ae831df4 6121 (uri (pypi-uri "msgpack-python" version))
641c9871
LF
6122 (sha256
6123 (base32
aed625bd 6124 "11pqk5braa6wndpnr1dhg64js82vjgxnm0lzy73rwl831zgijaqs"))))
641c9871 6125 (build-system python-build-system)
641c9871
LF
6126 (synopsis "MessagePack (de)serializer")
6127 (description "MessagePack is a fast, compact binary serialization format,
6128suitable for similar data to JSON. This package provides CPython bindings for
6129reading and writing MessagePack data.")
6130 (home-page "https://pypi.python.org/pypi/msgpack-python/")
3f641af0 6131 (license license:asl2.0)
bd74be7b
LF
6132 (properties `((python2-variant . ,(delay python2-msgpack))))))
6133
6134(define-public python2-msgpack
6135 (package (inherit (package-with-python2
6136 (strip-python2-variant python-msgpack)))
6137 (native-inputs
6138 `(("python2-setuptools" ,python2-setuptools)))))
641c9871 6139
6e5e39f4
CR
6140(define-public python-netaddr
6141 (package
6142 (name "python-netaddr")
6143 (version "0.7.18")
6144 (source
6145 (origin
6146 (method url-fetch)
6147 (uri (string-append
6148 "https://pypi.python.org/packages/source/n/netaddr/netaddr-"
6149 version
6150 ".tar.gz"))
6151 (sha256
6152 (base32
6153 "06dxjlbcicq7q3vqy8agq11ra01kvvd47j4mk6dmghjsyzyckxd1"))))
6154 (build-system python-build-system)
6155 (arguments `(#:tests? #f)) ;; No tests.
6156 (inputs
6157 `(("python-setuptools" ,python-setuptools)))
6158 (home-page "https://github.com/drkjam/netaddr/")
6159 (synopsis "Pythonic manipulation of network addresses")
6160 (description
6161 "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
6162and MAC network addresses.")
3f641af0 6163 (license license:bsd-3)))
6e5e39f4
CR
6164
6165(define-public python2-netaddr
6166 (package-with-python2 python-netaddr))
8c692a52
CR
6167
6168(define-public python-wrapt
6169 (package
6170 (name "python-wrapt")
6171 (version "1.10.5")
6172 (source
6173 (origin
6174 (method url-fetch)
6175 (uri (string-append
6176 "https://pypi.python.org/packages/source/w/wrapt/wrapt-"
6177 version
6178 ".tar.gz"))
6179 (sha256
6180 (base32
6181 "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr"))))
6182 (build-system python-build-system)
6183 (arguments
6184 ;; Tests are not included in the tarball, they are only available in the
6185 ;; git repository.
6186 `(#:tests? #f))
6187 (inputs
6188 `(("python-setuptools" ,python-setuptools)))
6189 (home-page "https://github.com/GrahamDumpleton/wrapt")
6190 (synopsis "Module for decorators, wrappers and monkey patching")
6191 (description
6192 "The aim of the wrapt module is to provide a transparent object proxy for
6193 Python, which can be used as the basis for the construction of function
6194 wrappers and decorator functions.")
3f641af0 6195 (license license:bsd-2)))
8c692a52
CR
6196
6197(define-public python2-wrapt
6198 (package-with-python2 python-wrapt))
b85c85be
CR
6199
6200(define-public python-iso8601
6201 (package
6202 (name "python-iso8601")
fe84bc9a 6203 (version "0.1.11")
b85c85be
CR
6204 (source
6205 (origin
6206 (method url-fetch)
fe84bc9a 6207 (uri (pypi-uri "iso8601" version))
b85c85be 6208 (sha256
fe84bc9a
EF
6209 (base32
6210 "0c7gh3lsdjds262h0v1sqc66l7hqgfwbakn96qrhdbl0i3vm5yz8"))))
b85c85be
CR
6211 (build-system python-build-system)
6212 (inputs
6213 `(("python-setuptools" ,python-setuptools)))
6214 (home-page "https://bitbucket.org/micktwomey/pyiso8601")
6215 (synopsis "Module to parse ISO 8601 dates")
6216 (description
6217 "This module parses the most common forms of ISO 8601 date strings (e.g.
6218@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
6219 (license license:expat)))
6220
6221(define-public python2-iso8601
6222 (package-with-python2 python-iso8601))
5e412b63
CR
6223
6224(define-public python-monotonic
6225 (package
6226 (name "python-monotonic")
6227 (version "0.3")
6228 (source
6229 (origin
6230 (method url-fetch)
6231 (uri (string-append
6232 "https://pypi.python.org/packages/source/m/monotonic/monotonic-"
6233 version
6234 ".tar.gz"))
6235 (sha256
6236 (base32
6237 "0yz0bcbwx8r2c01czzfpbrxddynxyk9k95jj8h6sgcb7xmfvl998"))))
6238 (build-system python-build-system)
6239 (inputs
6240 `(("python-setuptools" ,python-setuptools)))
6241 (home-page "https://github.com/atdt/monotonic")
6242 (synopsis "Implementation of time.monotonic() for Python 2 & < 3.3")
6243 (description
6244 "This module provides a monotonic() function which returns the value (in
6245fractional seconds) of a clock which never goes backwards.")
3f641af0 6246 (license license:asl2.0)))
5e412b63
CR
6247
6248(define-public python2-monotonic
6249 (package-with-python2 python-monotonic))
de34afac
CR
6250
6251(define-public python-webob
6252 (package
6253 (name "python-webob")
b8834c21 6254 (version "1.5.1")
de34afac
CR
6255 (source
6256 (origin
6257 (method url-fetch)
b8834c21 6258 (uri (pypi-uri "WebOb" version))
de34afac
CR
6259 (sha256
6260 (base32
b8834c21 6261 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
de34afac
CR
6262 (build-system python-build-system)
6263 (inputs
6264 `(("python-nose" ,python-nose)
6265 ("python-setuptools" ,python-setuptools)))
6266 (home-page "http://webob.org/")
6267 (synopsis "WSGI request and response object")
6268 (description
6269 "WebOb provides wrappers around the WSGI request environment, and an
6270object to help create WSGI responses.")
6271 (license license:expat)))
6272
6273(define-public python2-webob
6274 (package-with-python2 python-webob))
350ba0a3 6275
02a8a187
BW
6276(define-public python-xlrd
6277 (package
6278 (name "python-xlrd")
c2ad4d70 6279 (version "1.0.0")
02a8a187
BW
6280 (source (origin
6281 (method url-fetch)
e775f48e 6282 (uri (pypi-uri "xlrd" version))
02a8a187
BW
6283 (sha256
6284 (base32
c2ad4d70 6285 "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
02a8a187
BW
6286 (build-system python-build-system)
6287 (arguments
6288 `(#:phases
6289 (modify-phases %standard-phases
c2ad4d70 6290 ;; Current test in setup.py does not work as of 1.0.0, so use nose to
02a8a187
BW
6291 ;; run tests instead for now.
6292 (replace 'check (lambda _ (zero? (system* "nosetests")))))))
6293 (native-inputs `(("python-nose" ,python-nose)
6294 ("python-setuptools" ,python-setuptools)))
6295 (home-page "http://www.python-excel.org/")
6296 (synopsis "Library for extracting data from Excel files")
6297 (description "This packages provides a library to extract data from
c598e35c 6298spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
02a8a187
BW
6299@samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
6300Unicode-aware. It is not intended as an end-user tool.")
3f641af0 6301 (license license:bsd-3)))
02a8a187
BW
6302
6303(define-public python2-xlrd
6304 (package-with-python2 python-xlrd))
6305
350ba0a3
CR
6306(define-public python-prettytable
6307 (package
6308 (name "python-prettytable")
6309 (version "0.7.2")
6310 (source
6311 (origin
6312 (method url-fetch)
6313 (uri (string-append
6314 "https://pypi.python.org/packages/source/P/PrettyTable/"
6315 "prettytable-" version ".tar.bz2"))
6316 (sha256
6317 (base32
6318 "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
6319 (build-system python-build-system)
6320 (inputs
6321 `(("python-setuptools" ,python-setuptools)))
6322 (home-page "http://code.google.com/p/prettytable/")
6323 (synopsis "Display tabular data in an ASCII table format")
6324 (description
6325 "A library designed to represent tabular data in visually appealing ASCII
6326tables. PrettyTable allows for selection of which columns are to be printed,
6327independent alignment of columns (left or right justified or centred) and
6328printing of sub-tables by specifying a row range.")
3f641af0 6329 (license license:bsd-3)))
350ba0a3
CR
6330
6331(define-public python2-prettytable
6332 (package-with-python2 python-prettytable))
7a8ac75a 6333
9f8ee3fe
RW
6334(define-public python-tables
6335 (package
6336 (name "python-tables")
6337 (version "3.2.2")
6338 (source
6339 (origin
6340 (method url-fetch)
6341 (uri (pypi-uri "tables" version))
6342 (sha256
6343 (base32
6344 "117s6w7s3yxafpmf3zz3svana7xfrsviw01va1xp7h8ylx8v6r1m"))))
6345 (build-system python-build-system)
6346 (arguments
6347 `(;; FIXME: python-build-system does not pass configure-flags to "build"
6348 ;; or "check", so we must override the build and check phases.
6349 #:phases
6350 (modify-phases %standard-phases
6351 (add-after 'unpack 'use-gcc
6352 (lambda _
6353 (substitute* "setup.py"
6354 (("compiler = new_compiler\\(\\)" line)
6355 (string-append line
6356 "\ncompiler.set_executables(compiler='gcc',"
6357 "compiler_so='gcc',"
6358 "linker_exe='gcc',"
6359 "linker_so='gcc -shared')")))
6360 #t))
6361 (replace 'build
6362 (lambda* (#:key inputs #:allow-other-keys)
6363 (zero? (system* "python" "setup.py" "build"
6364 (string-append "--hdf5="
6365 (assoc-ref inputs "hdf5"))))))
6366 (replace 'check
6367 (lambda* (#:key inputs #:allow-other-keys)
6368 (zero? (system* "python" "setup.py" "check"
6369 (string-append "--hdf5="
6370 (assoc-ref inputs "hdf5")))))))))
6371 (propagated-inputs
6372 `(("python-numexpr" ,python-numexpr)
6373 ("python-numpy" ,python-numpy)))
6374 (native-inputs
6375 `(("python-setuptools" ,python-setuptools)
6376 ("python-cython" ,python-cython)
6377 ("pkg-config" ,pkg-config)))
6378 (inputs
6379 `(("hdf5" ,hdf5)
6380 ("bzip2" ,bzip2)
6381 ("zlib" ,zlib)))
6382 (home-page "http://www.pytables.org/")
6383 (synopsis "Hierarchical datasets for Python")
6384 (description "PyTables is a package for managing hierarchical datasets and
6385designed to efficently cope with extremely large amounts of data.")
3f641af0 6386 (license license:bsd-3)))
9f8ee3fe
RW
6387
6388(define-public python2-tables
6389 (package-with-python2 python-tables))
6390
7a8ac75a
RW
6391(define-public python-pyasn1
6392 (package
6393 (name "python-pyasn1")
caa0edb3 6394 (version "0.1.9")
7a8ac75a
RW
6395 (source
6396 (origin
6397 (method url-fetch)
caa0edb3 6398 (uri (pypi-uri "pyasn1" version))
7a8ac75a
RW
6399 (sha256
6400 (base32
caa0edb3 6401 "0zraxni14bqi20kr4bi6nwsh32aibz0fq0xaczfisw0zdpcsqg45"))))
7a8ac75a
RW
6402 (build-system python-build-system)
6403 (home-page "http://pyasn1.sourceforge.net/")
6404 (synopsis "ASN.1 types and codecs")
6405 (description
6406 "This is an implementation of ASN.1 types and codecs in Python. It is
6407suitable for a wide range of protocols based on the ASN.1 specification.")
3f641af0 6408 (license license:bsd-2)))
7a8ac75a
RW
6409
6410(define-public python2-pyasn1
6411 (package-with-python2 python-pyasn1))
9a49a535 6412
5988c299
EF
6413(define-public python-pyasn1-modules
6414 (package
6415 (name "python-pyasn1-modules")
6416 (version "0.0.8")
6417 (source
6418 (origin
6419 (method url-fetch)
6420 (uri (pypi-uri "pyasn1-modules" version))
6421 (sha256
6422 (base32
6423 "0drqgw81xd3fxdlg89kgd79zzrabvfncvkbybi2wr6w2y4s1jmhh"))))
6424 (build-system python-build-system)
6425 (native-inputs
6426 `(("python-setuptools" ,python-setuptools)))
6427 (propagated-inputs
6428 `(("python-pyasn1" ,python-pyasn1)))
6429 (home-page "http://sourceforge.net/projects/pyasn1/")
6430 (synopsis "ASN.1 codec implementations")
6431 (description
6432 "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
6433implementations of ASN.1-based codecs and protocols.")
3f641af0 6434 (license license:bsd-3)))
5988c299
EF
6435
6436(define-public python2-pyasn1-modules
6437 (package-with-python2 python-pyasn1-modules))
6438
520af157 6439(define-public python-ipaddress
9a49a535 6440 (package
520af157
DC
6441 (name "python-ipaddress")
6442 (version "1.0.16")
6443 (source (origin
6444 (method url-fetch)
6445 (uri (pypi-uri "ipaddress" version))
6446 (sha256
6447 (base32
6448 "1c3imabdrw8nfksgjjflzg7h4ynjckqacb188rf541m74arq4cas"))))
9a49a535 6449 (build-system python-build-system)
9a49a535
RW
6450 (home-page "https://github.com/phihag/ipaddress")
6451 (synopsis "IP address manipulation library")
6452 (description
520af157
DC
6453 "This package provides a fast, lightweight IPv4/IPv6 manipulation library
6454 in Python. This library is used to create, poke at, and manipulate IPv4 and
6455 IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
6456 module to older versions of Python.")
6457 (license license:psfl)
6458 (properties `((python2-variant . ,(delay python2-ipaddress))))))
6459
6460(define-public python2-ipaddress
6461 (let ((base (package-with-python2 (strip-python2-variant python-ipaddress))))
6462 (package (inherit base)
6463 (native-inputs
6464 `(("python2-setuptools" ,python2-setuptools)
6465 ,@(package-native-inputs base))))))
3f00e078 6466
4a238186
HG
6467(define-public python2-ipaddr
6468 (package
6469 (name "python2-ipaddr")
6470 (version "2.1.11")
6471 (source
6472 (origin
6473 (method url-fetch)
6474 (uri (pypi-uri "ipaddr" version))
6475 (sha256
6476 (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
6477 (build-system python-build-system)
6478 (arguments
6479 `(#:python ,python-2 ;version 2 only
6480 #:phases
6481 (modify-phases %standard-phases
6482 (replace 'check
6483 (lambda* _
6484 (zero? (system* "python" "ipaddr_test.py")))))))
6485 (home-page "https://github.com/google/ipaddr-py")
6486 (synopsis "IP address manipulation library")
6487 (description
6488 "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
6489IPv6 addresses and networks.
6490
6491For new implementations you may prefer to use the standard module
6492@code{ipaddress}, which was introduced in Python 3.3 and backported to older
6493versions of Python.")
3f641af0 6494 (license license:asl2.0)))
4a238186 6495
3f00e078
RW
6496(define-public python-idna
6497 (package
6498 (name "python-idna")
6499 (version "2.0")
6500 (source
6501 (origin
6502 (method url-fetch)
6503 (uri (string-append "https://pypi.python.org/packages/source/i/"
6504 "idna/idna-" version ".tar.gz"))
6505 (sha256
6506 (base32
6507 "0frxgmgi234lr9hylg62j69j4ik5zhg0wz05w5dhyacbjfnrl68n"))))
6508 (build-system python-build-system)
6509 (native-inputs
6510 `(("python-setuptools" ,python-setuptools)))
6511 (home-page "https://github.com/kjd/idna")
6512 (synopsis "Internationalized domain names in applications")
6513 (description
6514 "This is a library to support the Internationalised Domain Names in
6515Applications (IDNA) protocol as specified in RFC 5891. This version of the
6516protocol is often referred to as “IDNA2008” and can produce different results
6517from the earlier standard from 2003. The library is also intended to act as a
6518suitable drop-in replacement for the “encodings.idna” module that comes with
6519the Python standard library but currently only supports the older 2003
6520specification.")
3f641af0 6521 (license license:bsd-4)))
3f00e078
RW
6522
6523(define-public python2-idna
6524 (package-with-python2 python-idna))
36ebf972
RW
6525
6526(define-public python-pretend
6527 (package
6528 (name "python-pretend")
6529 (version "1.0.8")
6530 (source
6531 (origin
6532 (method url-fetch)
6533 (uri (string-append "https://pypi.python.org/packages/source/p/"
6534 "pretend/pretend-" version ".tar.gz"))
6535 (sha256
6536 (base32
6537 "0r5r7ygz9m6d2bklflbl84cqhjkc2q12xgis8268ygjh30g2q3wk"))))
6538 (build-system python-build-system)
6539 (native-inputs
6540 `(("python-setuptools" ,python-setuptools)))
6541 (home-page "https://github.com/alex/pretend")
6542 (synopsis "Library for stubbing in Python")
6543 (description
6544 "Pretend is a library to make stubbing with Python easier. Stubbing is a
6545technique for writing tests. You may hear the term mixed up with mocks,
6546fakes, or doubles. Basically, a stub is an object that returns pre-canned
6547responses, rather than doing any computation.")
3f641af0 6548 (license license:bsd-3)))
36ebf972
RW
6549
6550(define-public python2-pretend
6551 (package-with-python2 python-pretend))
aa759a51
RW
6552
6553(define-public python-cryptography-vectors
6554 (package
6555 (name "python-cryptography-vectors")
912dcbad 6556 (version "1.5.3")
aa759a51
RW
6557 (source
6558 (origin
6559 (method url-fetch)
9c509ca9 6560 (uri (pypi-uri "cryptography_vectors" version))
aa759a51
RW
6561 (sha256
6562 (base32
912dcbad 6563 "1bnd1bricyhxa27rhr0ljk0kacxzvysd3ar2j2hlv13a2k6zw4z5"))))
aa759a51
RW
6564 (build-system python-build-system)
6565 (native-inputs
6566 `(("python-setuptools" ,python-setuptools)))
6567 (home-page "https://github.com/pyca/cryptography")
66e07664 6568 (synopsis "Test vectors for the cryptography package")
aa759a51
RW
6569 (description
6570 "This package contains test vectors for the cryptography package.")
6571 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6572 (license (list license:bsd-3 license:asl2.0))))
aa759a51
RW
6573
6574(define-public python2-cryptography-vectors
6575 (package-with-python2 python-cryptography-vectors))
88b47cb0
RW
6576
6577(define-public python-cryptography
6578 (package
6579 (name "python-cryptography")
912dcbad 6580 (version "1.5.3")
88b47cb0
RW
6581 (source
6582 (origin
6583 (method url-fetch)
9c509ca9 6584 (uri (pypi-uri "cryptography" version))
88b47cb0
RW
6585 (sha256
6586 (base32
912dcbad 6587 "1raanvkdfw5ai56ymlij6ghc4k126fs7jx948ig7yn4vj6ndv0ng"))))
88b47cb0
RW
6588 (build-system python-build-system)
6589 (inputs
6590 `(("openssl" ,openssl)))
6591 (propagated-inputs
6592 `(("python-cffi" ,python-cffi)
6593 ("python-six" ,python-six)
6594 ("python-pyasn1" ,python-pyasn1)
88b47cb0
RW
6595 ("python-idna" ,python-idna)
6596 ("python-iso8601" ,python-iso8601)))
6597 (native-inputs
6598 `(("python-cryptography-vectors" ,python-cryptography-vectors)
ce6c13ee 6599 ("python-hypothesis" ,python-hypothesis)
88b47cb0
RW
6600 ("python-setuptools" ,python-setuptools)
6601 ("python-pretend" ,python-pretend)
ce6c13ee
EF
6602 ("python-pyasn1" ,python-pyasn1)
6603 ("python-pyasn1-modules" ,python-pyasn1-modules)
912dcbad
MB
6604 ("python-pytz" ,python-pytz)
6605 ("python-pytest" ,python-pytest-2.9.2)))
88b47cb0
RW
6606 (home-page "https://github.com/pyca/cryptography")
6607 (synopsis "Cryptographic recipes and primitives for Python")
6608 (description
6609 "cryptography is a package which provides cryptographic recipes and
6610primitives to Python developers. It aims to be the “cryptographic standard
6611library” for Python. The package includes both high level recipes, and low
6612level interfaces to common cryptographic algorithms such as symmetric ciphers,
6613message digests and key derivation functions.")
6614 ;; Distributed under either BSD-3 or ASL2.0
3f641af0 6615 (license (list license:bsd-3 license:asl2.0))
519e2f4f 6616 (properties `((python2-variant . ,(delay python2-cryptography))))))
88b47cb0
RW
6617
6618(define-public python2-cryptography
519e2f4f
LF
6619 (let ((crypto (package-with-python2
6620 (strip-python2-variant python-cryptography))))
88b47cb0
RW
6621 (package (inherit crypto)
6622 (propagated-inputs
6623 `(("python2-ipaddress" ,python2-ipaddress)
ce6c13ee
EF
6624 ("python2-backport-ssl-match-hostname"
6625 ,python2-backport-ssl-match-hostname)
68f1cdec 6626 ("python2-enum34" ,python2-enum34)
88b47cb0 6627 ,@(package-propagated-inputs crypto))))))
5af999b8
RW
6628
6629(define-public python-pyopenssl
6630 (package
6631 (name "python-pyopenssl")
eb68d268 6632 (version "16.1.0")
5af999b8
RW
6633 (source
6634 (origin
6635 (method url-fetch)
eb68d268 6636 (uri (pypi-uri "pyOpenSSL" version))
5af999b8
RW
6637 (sha256
6638 (base32
eb68d268 6639 "0prm06zz7hl6bk5s2lqzw25lq6smayfv2fgiliw2rbqxlyiavxw8"))))
5af999b8 6640 (build-system python-build-system)
5af999b8
RW
6641 (propagated-inputs
6642 `(("python-cryptography" ,python-cryptography)
6643 ("python-six" ,python-six)))
6644 (inputs
6645 `(("openssl" ,openssl)))
6646 (native-inputs
6647 `(("python-setuptools" ,python-setuptools)))
6648 (home-page "https://github.com/pyca/pyopenssl")
6649 (synopsis "Python wrapper module around the OpenSSL library")
6650 (description
6651 "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
6652library.")
3f641af0 6653 (license license:asl2.0)))
5af999b8
RW
6654
6655(define-public python2-pyopenssl
519e2f4f 6656 (package-with-python2 python-pyopenssl))
643725a1
CR
6657
6658(define-public python-pip
6659 (package
6660 (name "python-pip")
6fb54e3b 6661 (version "8.0.2")
643725a1
CR
6662 (source
6663 (origin
6664 (method url-fetch)
6fb54e3b 6665 (uri (pypi-uri "pip" version))
643725a1
CR
6666 (sha256
6667 (base32
6fb54e3b 6668 "08cm8d4228fj0qnrysy3qv1a6022zr3dcs25amd14lgxil6vvx26"))))
643725a1
CR
6669 (build-system python-build-system)
6670 (inputs
6671 `(("python-setuptools" ,python-setuptools)
6672 ("python-virtualenv" ,python-virtualenv)
6673 ;; Tests
6674 ("python-mock" ,python-mock)
6675 ("python-pytest" ,python-pytest)
6676 ("python-scripttest" ,python-scripttest)))
6677 (home-page "https://pip.pypa.io/")
6678 (synopsis
6679 "Package manager for Python software")
6680 (description
6681 "Pip is a package manager for Python software, that finds packages on the
6682Python Package Index (PyPI).")
6683 (license license:expat)))
6684
6685(define-public python2-pip
6686 (package-with-python2 python-pip))
d8c4998f
LC
6687
6688(define-public python-tlsh
6689 (package
6690 (name "python-tlsh")
99b00dc7 6691 (version "3.4.4")
d8c4998f
LC
6692 (home-page "https://github.com/trendmicro/tlsh")
6693 (source (origin
99b00dc7
EF
6694 (method url-fetch)
6695 (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
6696 version ".tar.gz"))
d8c4998f
LC
6697 (sha256
6698 (base32
99b00dc7
EF
6699 "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
6700 (file-name (string-append name "-" version ".tar.gz"))))
d8c4998f
LC
6701 (build-system cmake-build-system)
6702 (arguments
6703 '(#:out-of-source? #f
6704 #:phases (modify-phases %standard-phases
6705 (replace
6706 'install
6707 (lambda* (#:key outputs #:allow-other-keys)
6708 ;; Build and install the Python bindings. The underlying
6709 ;; C++ library is apparently not meant to be installed.
6710 (let ((out (assoc-ref outputs "out")))
6711 (with-directory-excursion "py_ext"
6712 (and (system* "python" "setup.py" "build")
6713 (system* "python" "setup.py" "install"
6714 (string-append "--prefix=" out))))))))))
6715 (inputs `(("python" ,python-wrapper))) ;for the bindings
6716 (synopsis "Fuzzy matching library for Python")
6717 (description
6718 "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
6719Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
6720value which can be used for similarity comparisons. Similar objects have
6721similar hash values, which allows for the detection of similar objects by
6722comparing their hash values. The byte stream should have a sufficient amount
6723of complexity; for example, a byte stream of identical bytes will not generate
6724a hash value.")
3f641af0 6725 (license license:asl2.0)))
d8c4998f
LC
6726
6727(define-public python2-tlsh
6728 (package
6729 (inherit python-tlsh)
6730 (name "python2-tlsh")
6731 (inputs `(("python" ,python-2)))))
d96034ed 6732
67f66812
BW
6733(define-public python-termcolor
6734 (package
6735 (name "python-termcolor")
6736 (version "1.1.0")
6737 (source
6738 (origin
6739 (method url-fetch)
6740 (uri (pypi-uri "python-termcolor" version))
6741 (sha256
6742 (base32
6743 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
6744 (build-system python-build-system)
6745 (arguments
6746 ;; There are no tests.
6747 `(#:tests? #f))
6748 (home-page "http://pypi.python.org/pypi/termcolor")
6749 (synopsis "ANSII Color formatting for terminal output")
6750 (description
6751 "This package provides ANSII Color formatting for output in terminals.")
6752 (license license:expat)))
6753
6754(define-public python2-termcolor
6755 (package-with-python2 python-termcolor))
6756
d96034ed
LC
6757(define-public python-libarchive-c
6758 (package
6759 (name "python-libarchive-c")
03fd001c 6760 (version "2.2")
d96034ed
LC
6761 (source (origin
6762 (method url-fetch)
03fd001c 6763 (uri (pypi-uri "libarchive-c" version))
d96034ed
LC
6764 (sha256
6765 (base32
03fd001c 6766 "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
d96034ed
LC
6767 (build-system python-build-system)
6768 (arguments
6769 '(#:phases (modify-phases %standard-phases
6770 (add-before
6771 'build 'reference-libarchive
6772 (lambda* (#:key inputs #:allow-other-keys)
6773 ;; Retain the absolute file name of libarchive.so.
6774 (let ((libarchive (assoc-ref inputs "libarchive")))
6775 (substitute* "libarchive/ffi.py"
6776 (("find_library\\('archive'\\)")
6777 (string-append "'" libarchive
6778 "/lib/libarchive.so'"))))
6779
6780 ;; Do not make a compressed egg (see
6781 ;; <http://bugs.gnu.org/20765>).
6782 (let ((port (open-file "setup.cfg" "a")))
6783 (display "\n[easy_install]\nzip_ok = 0\n"
6784 port)
6785 (close-port port)
6786 #t))))))
6787 (inputs
6788 `(("python-setuptools" ,python-setuptools)
6789 ("libarchive" ,libarchive)))
6790 (home-page "https://github.com/Changaco/python-libarchive-c")
6791 (synopsis "Python interface to libarchive")
6792 (description
6793 "This package provides Python bindings to libarchive, a C library to
6794access possibly compressed archives in many different formats. It uses
6795Python's @code{ctypes} foreign function interface (FFI).")
3f641af0 6796 (license license:lgpl2.0+)))
d96034ed
LC
6797
6798(define-public python2-libarchive-c
6799 (package-with-python2 python-libarchive-c))
5e1c9367
LC
6800
6801(define-public python-file
6802 (package
6803 (inherit file)
6804 (name "python-file")
6805 (build-system python-build-system)
6806 (arguments
6807 '(#:tests? #f ;no tests
6808 #:phases (modify-phases %standard-phases
6809 (add-before 'build 'change-directory
6810 (lambda _
6811 (chdir "python")
6812 #t))
6813 (add-before 'build 'set-library-file-name
6814 (lambda* (#:key inputs #:allow-other-keys)
6815 (let ((file (assoc-ref inputs "file")))
6816 (substitute* "magic.py"
6817 (("find_library\\('magic'\\)")
6818 (string-append "'" file "/lib/libmagic.so'")))
6819 #t))))))
6820 (inputs `(("file" ,file)))
6821 (self-native-input? #f)
daeeea71
CM
6822 (synopsis "Python bindings to the libmagic file type guesser. Note that
6823this module and the python-magic module both provide a \"magic.py\" file;
6824these two modules, which are different and were developed separately, both
6825serve the same purpose: provide Python bindings for libmagic.")))
5e1c9367
LC
6826
6827(define-public python2-file
6828 (package-with-python2 python-file))
85d4aeac
LC
6829
6830(define-public python-debian
6831 (package
6832 (name "python-debian")
6833 (version "0.1.23")
6834 (source
6835 (origin
6836 (method url-fetch)
6837 (uri (string-append
6838 "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
6839 version ".tar.gz"))
6840 (sha256
6841 (base32
6842 "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
6843 (build-system python-build-system)
6844 (inputs
6845 `(("python-six" ,python-six)))
6846 (native-inputs
6847 `(("python-setuptools" ,python-setuptools)))
6848 (home-page "http://packages.debian.org/sid/python-debian")
6849 (synopsis "Debian package related modules")
6850 (description
5c7bdc9a
LC
6851 ;; XXX: Use @enumerate instead of @itemize to work around
6852 ;; <http://bugs.gnu.org/21772>.
85d4aeac
LC
6853 "This package provides Python modules that abstract many formats of
6854Debian-related files, such as:
6855
5c7bdc9a 6856@enumerate
85d4aeac
LC
6857@item Debtags information;
6858@item @file{debian/changelog} files;
6859@item packages files, pdiffs;
6860@item control files of single or multiple RFC822-style paragraphs---e.g.
6861 @file{debian/control}, @file{.changes}, @file{.dsc};
6862@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
6863 contained files and meta-information.
5c7bdc9a 6864@end enumerate\n")
85d4aeac
LC
6865
6866 ;; Modules are either GPLv2+ or GPLv3+.
3f641af0 6867 (license license:gpl3+)))
85d4aeac
LC
6868
6869(define-public python2-debian
6870 (package-with-python2 python-debian))
816a6538 6871
2d321bb2
RW
6872(define-public python-nbformat
6873 (package
6874 (name "python-nbformat")
6875 (version "4.1.0")
6876 (source
6877 (origin
6878 (method url-fetch)
6879 (uri (pypi-uri "nbformat" version))
6880 (sha256
6881 (base32
6882 "0mq8iki3d4mnx7wy05phss7x98mds4fqydin8lcagidp1knw1xnv"))))
6883 (build-system python-build-system)
6884 (arguments `(#:tests? #f)) ; no test target
6885 (propagated-inputs
6886 `(("python-ipython-genutils" ,python-ipython-genutils)
6887 ("python-jsonschema" ,python-jsonschema)
6888 ("python-jupyter-core" ,python-jupyter-core)
6889 ("python-traitlets" ,python-traitlets)))
6890 (native-inputs
6891 `(("python-setuptools" ,python-setuptools)))
6892 (home-page "http://jupyter.org")
6893 (synopsis "Jupyter Notebook format")
6894 (description "This package provides the reference implementation of the
6895Jupyter Notebook format and Python APIs for working with notebooks.")
6896 (license license:bsd-3)))
6897
6898(define-public python2-nbformat
6899 (package-with-python2 python-nbformat))
6900
55436048
RW
6901(define-public python-bleach
6902 (package
6903 (name "python-bleach")
6904 (version "1.4.3")
6905 (source
6906 (origin
6907 (method url-fetch)
6908 (uri (pypi-uri "bleach" version))
6909 (sha256
6910 (base32
6911 "0jvg3jxrvnx7xmm9gj262v60ib452xlnwlb0navyp7jsvcd0d4qj"))))
6912 (build-system python-build-system)
6913 (propagated-inputs
6914 `(("python-html5lib" ,python-html5lib-0.9)
6915 ("python-setuptools" ,python-setuptools)
6916 ("python-six" ,python-six)))
6917 (native-inputs
6918 `(("python-nose" ,python-nose)))
6919 (home-page "http://github.com/jsocol/bleach")
6920 (synopsis "Whitelist-based HTML-sanitizing tool")
6921 (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
6922 (license license:asl2.0)))
6923
6924(define-public python2-bleach
6925 (package-with-python2 python-bleach))
6926
60590a3a
RW
6927(define-public python-entrypoints
6928 (package
6929 (name "python-entrypoints")
6930 (version "0.2.2")
6931 (source
6932 (origin
6933 (method url-fetch)
6934 (uri (string-append "https://github.com/takluyver/entrypoints/archive/"
6935 version ".tar.gz"))
6936 (file-name (string-append name "-" version ".tar.gz"))
6937 (sha256
6938 (base32
6939 "0azqlkh3j0za080lsf5crnhaxx3c93k9dpv5ihkhf5cppgw5sjz5"))))
6940 (build-system python-build-system)
6941 ;; The package does not come with a setup.py file, so we have to generate
6942 ;; one ourselves.
6943 (arguments
6944 `(#:tests? #f
6945 #:phases
6946 (modify-phases %standard-phases
6947 (add-after 'unpack 'create-setup.py
6948 (lambda _
6949 (call-with-output-file "setup.py"
6950 (lambda (port)
6951 (format port "\
6952from setuptools import setup
6953setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
6954" ,version))))))))
6955 (home-page "https://github.com/takluyver/entrypoints")
6956 (synopsis "Discover and load entry points from installed Python packages")
6957 (description "Entry points are a way for Python packages to advertise
6958objects with some common interface. The most common examples are
6959@code{console_scripts} entry points, which define shell commands by
6960identifying a Python function to run. The @code{entrypoints} module contains
6961functions to find and load entry points.")
6962 (license license:expat)))
6963
6964(define-public python2-entrypoints
6965 (package-with-python2 python-entrypoints))
6966
c60898a8
RW
6967(define-public python-nbconvert
6968 (package
6969 (name "python-nbconvert")
6970 (version "5.0.0b1")
6971 (source
6972 (origin
6973 (method url-fetch)
6974 (uri (pypi-uri "nbconvert" version))
6975 (sha256
6976 (base32
6977 "0brclbb18l4nmd5qy3dl9wn05rjdh1fz4rmzdlfqacj12rcdvdgp"))))
6978 (build-system python-build-system)
6979 ;; The "bdist_egg" target is disabled by default, causing the installation
6980 ;; to fail.
6981 (arguments `(#:configure-flags (list "bdist_egg")))
6982 (propagated-inputs
6983 `(("python-bleach" ,python-bleach)
6984 ("python-entrypoints" ,python-entrypoints)
6985 ("python-jinja2" ,python-jinja2)
6986 ("python-jupyter-core" ,python-jupyter-core)
6987 ("python-mistune" ,python-mistune)
6988 ("python-nbformat" ,python-nbformat)
6989 ("python-pygments" ,python-pygments)
6990 ("python-setuptools" ,python-setuptools)
6991 ("python-traitlets" ,python-traitlets)))
6992 (home-page "http://jupyter.org")
6993 (synopsis "Converting Jupyter Notebooks")
6994 (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
6995notebooks to various other formats via Jinja templates. It allows you to
6996convert an @code{.ipynb} notebook file into various static formats including:
6997
6998@enumerate
6999@item HTML
7000@item LaTeX
7001@item PDF
7002@item Reveal JS
7003@item Markdown (md)
7004@item ReStructured Text (rst)
7005@item executable script
7006@end enumerate\n")
7007 (license license:bsd-3)))
7008
7009(define-public python2-nbconvert
7010 (package-with-python2 python-nbconvert))
7011
a0d62280
RW
7012(define-public python-notebook
7013 (package
7014 (name "python-notebook")
7015 (version "4.2.3")
7016 (source (origin
7017 (method url-fetch)
7018 (uri (pypi-uri "notebook" version))
7019 (sha256
7020 (base32
7021 "0laq5c2f21frq6xcdckgq7raqhznbjb0qs0357g612z87wyn1a9r"))))
7022 (build-system python-build-system)
7023 (arguments
7024 `(#:phases
7025 (modify-phases %standard-phases
7026 (replace 'check
7027 (lambda _
7028 ;; HOME must be set for tests
7029 (setenv "HOME" "/tmp")
7030 (zero? (system* "nosetests")))))))
7031 (propagated-inputs
7032 `(("python-jupyter-core" ,python-jupyter-core)
7033 ("python-nbformat" ,python-nbformat)
7034 ("python-nbconvert" ,python-nbconvert)
7035 ("python-ipython" ,python-ipython)))
7036 (native-inputs
7037 `(("python-nose" ,python-nose)
7038 ("python-sphinx" ,python-sphinx)
7039 ("python-requests" ,python-requests)))
7040 (home-page "http://jupyter.org/")
7041 (synopsis "Web-based notebook environment for interactive computing")
7042 (description
7043 "The Jupyter HTML notebook is a web-based notebook environment for
7044interactive computing.")
7045 (license license:bsd-3)))
7046
7047(define-public python2-notebook
7048 (package-with-python2 python-notebook))
7049
d55724ed
RW
7050(define-public python-widgetsnbextension
7051 (package
7052 (name "python-widgetsnbextension")
7053 (version "1.2.6")
7054 (source
7055 (origin
7056 (method url-fetch)
7057 (uri (pypi-uri "widgetsnbextension" version))
7058 (sha256
7059 (base32
7060 "0lff2mrwrgsa1mxmwx3phl9xvy0jqfpg6khbmxy53jbq56rwy666"))))
7061 (build-system python-build-system)
7062 (propagated-inputs
7063 `(("python-notebook" ,python-notebook)))
7064 (native-inputs
7065 `(("python-nose" ,python-nose)
7066 ("python-setuptools" ,python-setuptools)))
7067 (home-page "http://ipython.org")
7068 (synopsis "IPython HTML widgets for Jupyter")
7069 (description "This package provides interactive HTML widgets for Jupyter
7070notebooks.")
7071 (license license:bsd-3)))
7072
7073(define-public python2-widgetsnbextension
7074 (package-with-python2 python-widgetsnbextension))
7075
4fe2e344
RW
7076(define-public python-ipywidgets
7077 (package
7078 (name "python-ipywidgets")
7079 (version "5.2.2")
7080 (source
7081 (origin
7082 (method url-fetch)
7083 (uri (pypi-uri "ipywidgets" version))
7084 (sha256
7085 (base32
7086 "1lk0qrr5l9a0z7qkkn30hv5832whxwxymf1l576fmmad0n7hkxms"))))
7087 (build-system python-build-system)
7088 ;; FIXME: it's not clear how to run the tests.
7089 (arguments `(#:tests? #f))
7090 (propagated-inputs
7091 `(("python-ipykernel" ,python-ipykernel)
7092 ("python-ipython" ,python-ipython)
7093 ("python-setuptools" ,python-setuptools)
7094 ("python-traitlets" ,python-traitlets)
7095 ("python-widgetsnbextension" ,python-widgetsnbextension)))
7096 (home-page "http://ipython.org")
7097 (synopsis "IPython HTML widgets for Jupyter")
7098 (description "Ipywidgets are interactive HTML widgets for Jupyter
7099notebooks and the IPython kernel. Notebooks come alive when interactive
7100widgets are used. Users gain control of their data and can visualize changes
7101in the data.")
7102 (license license:bsd-3)))
7103
7104(define-public python2-ipywidgets
7105 (package-with-python2 python-ipywidgets))
7106
8ceebf8f
RW
7107(define-public python-jupyter-console
7108 (package
7109 (name "python-jupyter-console")
7110 (version "5.0.0")
7111 (source
7112 (origin
7113 (method url-fetch)
7114 (uri (pypi-uri "jupyter_console" version))
7115 (sha256
7116 (base32
7117 "04acmkwsi99rcg3vb54c6n492zv35s92h2ahabc0w6wj976cipvx"))))
7118 (build-system python-build-system)
7119 ;; FIXME: it's not clear how to run the tests.
7120 (arguments `(#:tests? #f))
7121 (propagated-inputs
7122 `(("python-ipykernel" ,python-ipykernel)
7123 ("python-ipython" ,python-ipython)
7124 ("python-jupyter-client" ,python-jupyter-client)
7125 ("python-prompt-toolkit" ,python-prompt-toolkit)
7126 ("python-pygments" ,python-pygments)
7127 ("python-setuptools" ,python-setuptools)))
7128 (home-page "https://jupyter.org")
7129 (synopsis "Jupyter terminal console")
7130 (description "This package provides a terminal-based console frontend for
7131Jupyter kernels. It also allows for console-based interaction with non-Python
7132Jupyter kernels such as IJulia and IRKernel.")
7133 (license license:bsd-3)))
7134
7135(define-public python2-jupyter-console
7136 (package-with-python2 python-jupyter-console))
7137
c27ae827
RW
7138(define-public jupyter
7139 (package
7140 (name "jupyter")
7141 (version "1.0.0")
7142 (source
7143 (origin
7144 (method url-fetch)
7145 (uri (pypi-uri "jupyter" version))
7146 (sha256
7147 (base32
7148 "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
7149 (build-system python-build-system)
7150 ;; FIXME: it's not clear how to run the tests.
7151 (arguments `(#:tests? #f))
7152 (propagated-inputs
7153 `(("python-ipykernel" ,python-ipykernel)
7154 ("python-ipywidgets" ,python-ipywidgets)
7155 ("python-jupyter-console" ,python-jupyter-console)
7156 ("python-nbconvert" ,python-nbconvert)
7157 ("python-notebook" ,python-notebook)
7158 ("python-setuptools" ,python-setuptools)))
7159 (home-page "http://jupyter.org")
7160 (synopsis "Web application for interactive documents")
7161 (description
7162 "The Jupyter Notebook is a web application that allows you to create and
7163share documents that contain live code, equations, visualizations and
7164explanatory text. Uses include: data cleaning and transformation, numerical
7165simulation, statistical modeling, machine learning and much more.")
7166 (license license:bsd-3)))
7167
816a6538
LC
7168(define-public python-chardet
7169 (package
7170 (name "python-chardet")
7171 (version "2.3.0")
7172 (source
7173 (origin
7174 (method url-fetch)
7175 (uri (string-append
7176 "https://pypi.python.org/packages/source/c/chardet/chardet-"
7177 version
7178 ".tar.gz"))
7179 (sha256
7180 (base32
7181 "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5"))))
7182 (build-system python-build-system)
7183 (native-inputs
7184 `(("python-setuptools" ,python-setuptools)))
7185 (home-page "https://github.com/chardet/chardet")
7186 (synopsis "Universal encoding detector for Python 2 and 3")
7187 (description
7188 "This package provides @code{chardet}, a Python module that can
7189automatically detect a wide range of file encodings.")
3f641af0 7190 (license license:lgpl2.1+)))
816a6538
LC
7191
7192(define-public python2-chardet
7193 (package-with-python2 python-chardet))
2fc5f186 7194
1872f1bb
KM
7195(define-public python-docopt
7196 (package
7197 (name "python-docopt")
7198 (version "0.6.2")
7199 (source
7200 (origin
7201 (method url-fetch)
7202 ;; The release on PyPI does not include tests.
7203 (uri (string-append
7204 "https://github.com/docopt/docopt/archive/"
7205 version ".tar.gz"))
7206 (file-name (string-append name "-" version ".tar.gz"))
7207 (sha256
7208 (base32
7209 "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1"))))
7210 (build-system python-build-system)
7211 (native-inputs
7212 `(("python-pytest" ,python-pytest)
7213 ("python-setuptools" ,python-setuptools)))
7214 (arguments
7215 `(#:phases (alist-replace
7216 'check
7217 (lambda _ (zero? (system* "py.test")))
7218 %standard-phases)))
7219 (home-page "http://docopt.org")
7220 (synopsis "Command-line interface description language for Python")
7221 (description "This library allows the user to define a command-line
7222interface from a program's help message rather than specifying it
7223programatically with command-line parsers like @code{getopt} and
7224@code{argparse}.")
7225 (license license:expat)))
7226
7227(define-public python2-docopt
7228 (package-with-python2 python-docopt))
7229
2fc5f186
LF
7230(define-public python-zope-event
7231 (package
7232 (name "python-zope-event")
7233 (version "4.1.0")
7234 (source
7235 (origin
7236 (method url-fetch)
7237 (uri (string-append "https://pypi.python.org/packages/source/z"
7238 "/zope.event/zope.event-" version ".tar.gz"))
7239 (sha256
7240 (base32
7241 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
7242 (build-system python-build-system)
7243 (inputs
7244 `(("python-setuptools" ,python-setuptools)))
7245 (home-page "http://pypi.python.org/pypi/zope.event")
7246 (synopsis "Event publishing system for Python")
7247 (description "Zope.event provides an event publishing API, intended for
7248use by applications which are unaware of any subscribers to their events. It
7249is a simple event-dispatching system on which more sophisticated event
7250dispatching systems can be built.")
3f641af0 7251 (license license:zpl2.1)))
2fc5f186
LF
7252
7253(define-public python2-zope-event
7254 (package-with-python2 python-zope-event))
97abe268
LF
7255
7256(define-public python-zope-interface
7257 (package
7258 (name "python-zope-interface")
7259 (version "4.1.3")
7260 (source
7261 (origin
7262 (method url-fetch)
7263 (uri (string-append "https://pypi.python.org/packages/source/z"
7264 "/zope.interface/zope.interface-" version ".tar.gz"))
7265 (sha256
7266 (base32
7267 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
7268 (build-system python-build-system)
7269 (propagated-inputs
7270 `(("python-zope-event" ,python-zope-event)))
7271 (home-page "https://github.com/zopefoundation/zope.interface")
7272 (synopsis "Python implementation of the \"design by contract\"
7273methodology")
7274 (description "Zope.interface provides an implementation of \"object
7275interfaces\" for Python. Interfaces are a mechanism for labeling objects as
7276conforming to a given API or contract.")
3f641af0 7277 (license license:zpl2.1)))
97abe268
LF
7278
7279(define-public python2-zope-interface
7280 (package-with-python2 python-zope-interface))
81f2373c
LF
7281
7282(define-public python-zope-exceptions
7283 (package
7284 (name "python-zope-exceptions")
7285 (version "4.0.8")
7286 (source
7287 (origin
7288 (method url-fetch)
7289 (uri (string-append "https://pypi.python.org/packages/source/z"
7290 "/zope.exceptions/zope.exceptions-"
7291 version ".tar.gz"))
7292 (sha256
7293 (base32
7294 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
7295 (build-system python-build-system)
7296 (arguments
7297 '(#:tests? #f)) ; circular dependency with zope.testrunner
7298 (propagated-inputs
7299 `(("python-zope-interface" ,python-zope-interface)))
7300 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
7301 (synopsis "Zope exceptions")
7302 (description "Zope.exceptions provides general-purpose exception types
7303that have uses outside of the Zope framework.")
3f641af0 7304 (license license:zpl2.1)))
81f2373c
LF
7305
7306(define-public python2-zope-exceptions
7307 (package-with-python2 python-zope-exceptions))
900e3c0e
LF
7308
7309(define-public python-zope-testing
7310 (package
7311 (name "python-zope-testing")
7312 (version "4.5.0")
7313 (source
7314 (origin
7315 (method url-fetch)
7316 (uri (string-append "https://pypi.python.org/packages/source/z"
7317 "/zope.testing/zope.testing-" version ".tar.gz"))
7318 (sha256
7319 (base32
b02f7a21
HG
7320 "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s"))
7321 (modules '((guix build utils)))
7322 (snippet
7323 '(begin
7324 ;; Remove pre-compiled .pyc files backup files from source.
7325 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
7326 #t))))
900e3c0e
LF
7327 (build-system python-build-system)
7328 (native-inputs
7329 `(("python-zope-exceptions" ,python-zope-exceptions)))
7330 (propagated-inputs
7331 `(("python-zope-interface" ,python-zope-interface)))
7332 (home-page "http://pypi.python.org/pypi/zope.testing")
7333 (synopsis "Zope testing helpers")
7334 (description "Zope.testing provides a number of testing utilities for HTML
7335forms, HTTP servers, regular expressions, and more.")
3f641af0 7336 (license license:zpl2.1)))
900e3c0e
LF
7337
7338(define-public python2-zope-testing
7339 (package-with-python2 python-zope-testing))
01614c4f
LF
7340
7341(define-public python-zope-testrunner
7342 (package
7343 (name "python-zope-testrunner")
7344 (version "4.4.9")
7345 (source
7346 (origin
7347 (method url-fetch)
7348 (uri (string-append "https://pypi.python.org/packages/source/z"
7349 "/zope.testrunner/zope.testrunner-"
7350 version ".zip"))
7351 (sha256
7352 (base32
7353 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
7354 (build-system python-build-system)
7355 (native-inputs
7356 `(("python-six" ,python-six)
7357 ("python-zope-exceptions" ,python-zope-exceptions)
7358 ("python-zope-testing" ,python-zope-testing)
7359 ("unzip" ,unzip)))
7360 (propagated-inputs
7361 `(("python-zope-interface" ,python-zope-interface)))
7362 (home-page "http://pypi.python.org/pypi/zope.testrunner")
7363 (synopsis "Zope testrunner script")
7364 (description "Zope.testrunner provides a script for running Python
7365tests.")
3f641af0 7366 (license license:zpl2.1)))
01614c4f
LF
7367
7368(define-public python2-zope-testrunner
7369 (let ((base (package-with-python2 python-zope-testrunner)))
7370 (package
7371 (inherit base)
7372 (native-inputs
7373 (append (package-native-inputs base)
7374 `(("python2-subunit" ,python2-subunit)
7375 ("python2-mimeparse" ,python2-mimeparse)))))))
6a5c710c
LF
7376
7377(define-public python-zope-i18nmessageid
7378 (package
7379 (name "python-zope-i18nmessageid")
7380 (version "4.0.3")
7381 (source
7382 (origin
7383 (method url-fetch)
7384 (uri (string-append
7385 "https://pypi.python.org/packages/source/z"
7386 "/zope.i18nmessageid/zope.i18nmessageid-"
7387 version ".tar.gz"))
7388 (sha256
7389 (base32
7390 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
7391 (build-system python-build-system)
7392 (inputs
7393 `(("python-setuptools" ,python-setuptools)))
7394 (home-page "http://pypi.python.org/pypi/zope.i18nmessageid")
7395 (synopsis "Message identifiers for internationalization")
7396 (description "Zope.i18nmessageid provides facilities for declaring
7397internationalized messages within program source text.")
3f641af0 7398 (license license:zpl2.1)))
6a5c710c
LF
7399
7400(define-public python2-zope-i18nmessageid
7401 (package-with-python2 python-zope-i18nmessageid))
71fb09f3
LF
7402
7403(define-public python-zope-schema
7404 (package
7405 (name "python-zope-schema")
7406 (version "4.4.2")
7407 (source
7408 (origin
7409 (method url-fetch)
7410 (uri (string-append "https://pypi.python.org/packages/source/z"
7411 "/zope.schema/zope.schema-" version ".tar.gz"))
7412 (sha256
7413 (base32
7414 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
7415 (build-system python-build-system)
7416 (propagated-inputs
7417 `(("python-zope-event" ,python-zope-event)
7418 ("python-zope-interface" ,python-zope-interface)))
7419 (native-inputs
7420 `(("python-zope-testing" ,python-zope-testing)))
7421 (home-page "http://pypi.python.org/pypi/zope.schema")
7422 (synopsis "Zope data schemas")
7423 (description "Zope.scheme provides extensions to zope.interface for
7424defining data schemas.")
3f641af0 7425 (license license:zpl2.1)))
71fb09f3
LF
7426
7427(define-public python2-zope-schema
7428 (package-with-python2 python-zope-schema))
fbac9b17
LF
7429
7430(define-public python-zope-configuration
7431 (package
7432 (name "python-zope-configuration")
7433 (version "4.0.3")
7434 (source (origin
7435 (method url-fetch)
7436 (uri (string-append "https://pypi.python.org/packages/source/z"
7437 "/zope.configuration/zope.configuration-"
7438 version ".tar.gz"))
7439 (sha256
7440 (base32
7441 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
7442 (build-system python-build-system)
7443 (propagated-inputs
7444 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7445 ("python-zope-schema" ,python-zope-schema)))
7446 (home-page "http://pypi.python.org/pypi/zope.configuration")
7447 (synopsis "Zope Configuration Markup Language")
7448 (description "Zope.configuration implements ZCML, the Zope Configuration
7449Markup Language.")
3f641af0 7450 (license license:zpl2.1)))
fbac9b17
LF
7451
7452(define-public python2-zope-configuration
7453 (package-with-python2 python-zope-configuration))
2ad52086
LF
7454
7455(define-public python-zope-proxy
7456 (package
7457 (name "python-zope-proxy")
7458 (version "4.1.6")
7459 (source
7460 (origin
7461 (method url-fetch)
7462 (uri (string-append "https://pypi.python.org/packages/source/z"
7463 "/zope.proxy/zope.proxy-" version ".tar.gz"))
7464 (sha256
7465 (base32
7466 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
7467 (build-system python-build-system)
7468 (propagated-inputs
7469 `(("python-zope-interface" ,python-zope-interface)))
7470 (home-page "http://pypi.python.org/pypi/zope.proxy")
7471 (synopsis "Generic, transparent proxies")
7472 (description "Zope.proxy provides generic, transparent proxies for Python.
7473Proxies are special objects which serve as mostly-transparent wrappers around
7474another object, intervening in the apparent behavior of the wrapped object
7475only when necessary to apply the policy (e.g., access checking, location
7476brokering, etc.) for which the proxy is responsible.")
3f641af0 7477 (license license:zpl2.1)))
2ad52086
LF
7478
7479(define-public python2-zope-proxy
7480 (package-with-python2 python-zope-proxy))
f404b5ea
LF
7481
7482(define-public python-zope-location
7483 (package
7484 (name "python-zope-location")
7485 (version "4.0.3")
7486 (source
7487 (origin
7488 (method url-fetch)
7489 (uri (string-append "https://pypi.python.org/packages/source/z"
7490 "/zope.location/zope.location-" version ".tar.gz"))
7491 (sha256
7492 (base32
7493 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
7494 (build-system python-build-system)
7495 (native-inputs
7496 `(("python-zope-proxy" ,python-zope-proxy)
7497 ("python-zope-schema" ,python-zope-schema)))
7498 (home-page "http://pypi.python.org/pypi/zope.location/")
7499 (synopsis "Zope location library")
7500 (description "Zope.location implements the concept of \"locations\" in
7501Zope3, which are are special objects that have a structural location.")
3f641af0 7502 (license license:zpl2.1)))
f404b5ea
LF
7503
7504(define-public python2-zope-location
7505 (package-with-python2 python-zope-location))
d4b77f36
LF
7506
7507(define-public python-zope-security
7508 (package
7509 (name "python-zope-security")
7510 (version "4.0.3")
7511 (source
7512 (origin
7513 (method url-fetch)
7514 (uri (string-append "https://pypi.python.org/packages/source/z"
7515 "/zope.security/zope.security-" version ".tar.gz"))
7516 (sha256
7517 (base32
7518 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
7519 (build-system python-build-system)
7520 (propagated-inputs
7521 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7522 ("python-zope-component" ,python-zope-component)
7523 ("python-zope-location" ,python-zope-location)
7524 ("python-zope-proxy" ,python-zope-proxy)
7525 ("python-zope-schema" ,python-zope-schema)
7526 ("python-zope-testrunner" ,python-zope-testrunner)
7527 ("python-zope-testing" ,python-zope-testing)))
7528 (home-page "http://pypi.python.org/pypi/zope.security")
7529 (synopsis "Zope security framework")
7530 (description "Zope.security provides a generic mechanism to implement
7531security policies on Python objects.")
3f641af0 7532 (license license:zpl2.1)))
d4b77f36
LF
7533
7534(define-public python2-zope-security
04417662
EF
7535 (let ((zope-security (package-with-python2 python-zope-security)))
7536 (package (inherit zope-security)
7537 (propagated-inputs
7538 `(("python2-zope-testrunner" ,python2-zope-testrunner)
7539 ,@(alist-delete
7540 "python-zope-testrunner"
7541 (package-propagated-inputs zope-security)))))))
a6b61b27
LF
7542
7543(define-public python-zope-component
7544 (package
7545 (name "python-zope-component")
7546 (version "4.2.2")
7547 (source
7548 (origin
7549 (method url-fetch)
7550 (uri (string-append "https://pypi.python.org/packages/source/z"
7551 "/zope.component/zope.component-" version ".tar.gz"))
7552 (sha256
7553 (base32
7554 "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18"))))
7555 (build-system python-build-system)
7556 (arguments
7557 ;; Skip tests due to circular dependency with python-zope-security.
7558 '(#:tests? #f))
7559 (native-inputs
7560 `(("python-zope-testing" ,python-zope-testing)))
7561 (propagated-inputs
7562 `(("python-zope-event" ,python-zope-event)
7563 ("python-zope-interface" ,python-zope-interface)
7564 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
7565 ("python-zope-configuration" ,python-zope-configuration)))
7566 (home-page "https://github.com/zopefoundation/zope.component")
7567 (synopsis "Zope Component Architecture")
7568 (description "Zope.component represents the core of the Zope Component
7569Architecture. Together with the zope.interface package, it provides
7570facilities for defining, registering and looking up components.")
3f641af0 7571 (license license:zpl2.1)))
a6b61b27
LF
7572
7573(define-public python2-zope-component
7574 (package-with-python2 python-zope-component))
3859ac12 7575
1ae44b80 7576(define-public python-pythondialog
b5f218be 7577 (package
1ae44b80 7578 (name "python-pythondialog")
42c4b246 7579 (version "3.4.0")
b5f218be
LF
7580 (source
7581 (origin
7582 (method url-fetch)
1ae44b80 7583 (uri (pypi-uri "pythondialog" version))
b5f218be
LF
7584 (sha256
7585 (base32
1ae44b80 7586 "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
b5f218be
LF
7587 (build-system python-build-system)
7588 (arguments
7589 `(#:phases
7590 (modify-phases %standard-phases
7591 (add-after 'unpack 'patch-path
7592 (lambda* (#:key inputs #:allow-other-keys)
7593 (let* ((dialog (assoc-ref inputs "dialog")))
7594 ;; Since this library really wants to grovel the search path, we
7595 ;; must hardcode dialog's store path into it.
7596 (substitute* "dialog.py"
7597 (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
7598 (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
7599 #t))))
b5f218be
LF
7600 #:tests? #f)) ; no test suite
7601 (propagated-inputs
7602 `(("dialog" ,dialog)))
7603 (home-page "http://pythondialog.sourceforge.net/")
7604 (synopsis "Python interface to the UNIX dialog utility")
7605 (description "A Python wrapper for the dialog utility. Its purpose is to
7606provide an easy to use, pythonic and comprehensive Python interface to dialog.
7607This allows one to make simple text-mode user interfaces on Unix-like systems")
3f641af0 7608 (license license:lgpl2.1)
1ae44b80
LF
7609 (properties `((python2-variant . ,(delay python2-pythondialog))))))
7610
7611(define-public python2-pythondialog
7612 (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
7613 (package
7614 (inherit base)
7615 (version (package-version python-pythondialog))
7616 (source (origin
7617 (method url-fetch)
7618 (uri (pypi-uri "python2-pythondialog" version))
7619 (sha256
7620 (base32
7621 "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
b5f218be 7622
3859ac12
LF
7623(define-public python-pyrfc3339
7624 (package
7625 (name "python-pyrfc3339")
d9aa097b 7626 (version "1.0")
3859ac12
LF
7627 (source
7628 (origin
7629 (method url-fetch)
d9aa097b 7630 (uri (pypi-uri "pyRFC3339" version))
3859ac12
LF
7631 (sha256
7632 (base32
d9aa097b 7633 "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
3859ac12
LF
7634 (build-system python-build-system)
7635 (propagated-inputs
7636 `(("python-pytz" ,python-pytz)))
7637 (native-inputs
7638 `(("python-nose" ,python-nose)
7639 ("python-setuptools" ,python-setuptools)))
7640 (home-page "https://github.com/kurtraschke/pyRFC3339")
7641 (synopsis "Python timestamp library")
7642 (description "Python library for generating and parsing RFC 3339-compliant
7643timestamps.")
7644 (license license:expat)))
7645
7646(define-public python2-pyrfc3339
7647 (package-with-python2 python-pyrfc3339))
5eea2005
LF
7648
7649(define-public python-werkzeug
7650 (package
7651 (name "python-werkzeug")
0580e383 7652 (version "0.11.11")
5eea2005
LF
7653 (source
7654 (origin
7655 (method url-fetch)
4b47cbfa 7656 (uri (pypi-uri "Werkzeug" version))
5eea2005
LF
7657 (sha256
7658 (base32
0580e383 7659 "1rgpq8a2qv26d75v9j3b074inirlyy6y4b5x4rxblp202jy4cb77"))))
5eea2005
LF
7660 (build-system python-build-system)
7661 (native-inputs
7662 `(("python-pytest" ,python-pytest)))
7663 (home-page "http://werkzeug.pocoo.org/")
7664 (synopsis "Utilities for WSGI applications")
7665 (description "One of the most advanced WSGI utility modules. It includes a
7666powerful debugger, full-featured request and response objects, HTTP utilities to
7667handle entity tags, cache control headers, HTTP dates, cookie handling, file
7668uploads, a powerful URL routing system and a bunch of community-contributed
7669addon modules.")
3f641af0 7670 (license license:x11)))
5eea2005
LF
7671
7672(define-public python2-werkzeug
7673 (package-with-python2 python-werkzeug))
99fffa8a
LF
7674
7675(define-public python-configobj
7676 (package
7677 (name "python-configobj")
7678 (version "5.0.6")
7679 (source (origin
7680 (method url-fetch)
7681 (uri (string-append
7682 "https://pypi.python.org/packages/source/c/configobj/"
7683 "configobj-" version ".tar.gz"))
7684 (sha256
7685 (base32
7686 "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
7687 ;; Patch setup.py so it looks for python-setuptools, which is
7688 ;; required to parse the keyword 'install_requires' in setup.py.
fc1adab1 7689 (patches (search-patches "python-configobj-setuptools.patch"))))
99fffa8a
LF
7690 (build-system python-build-system)
7691 (native-inputs
7692 `(("python-setuptools" ,python-setuptools)
7693 ("python-six" ,python-six)))
7694 (synopsis "Config file reading, writing and validation")
7695 (description "ConfigObj is a simple but powerful config file reader and
7696writer: an ini file round tripper. Its main feature is that it is very easy to
7697use, with a straightforward programmer’s interface and a simple syntax for
7698config files.")
7699 (home-page "https://github.com/DiffSK/configobj")
3f641af0 7700 (license license:bsd-3)))
99fffa8a
LF
7701
7702(define-public python2-configobj
7703 (package-with-python2 python-configobj))
79e8a291
LF
7704
7705(define-public python-configargparse
7706 (package
7707 (name "python-configargparse")
7708 (version "0.10.0")
7709 (source (origin
7710 (method url-fetch)
7711 (uri (string-append
7712 "https://pypi.python.org/packages/source/C/ConfigArgParse/"
7713 "ConfigArgParse-" version ".tar.gz"))
7714 (sha256
7715 (base32
7716 "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
7717 (build-system python-build-system)
7718 (arguments
7719 ;; FIXME: Bug in test suite filed upstream:
7720 ;; https://github.com/bw2/ConfigArgParse/issues/32
7721 '(#:tests? #f))
7722 (synopsis "Replacement for argparse")
7723 (description "A drop-in replacement for argparse that allows options to also
7724be set via config files and/or environment variables.")
7725 (home-page "https://github.com/bw2/ConfigArgParse")
7726 (license license:expat)))
7727
7728(define-public python2-configargparse
7729 (package-with-python2 python-configargparse))
ab41f979
LF
7730
7731(define-public python-ndg-httpsclient
7732 (package
7733 (name "python-ndg-httpsclient")
7734 (version "0.4.0")
7735 (source (origin
7736 (method url-fetch)
7737 (uri (string-append
7738 "https://pypi.python.org/packages/source/n/ndg-httpsclient/"
7739 "ndg_httpsclient-" version ".tar.gz"))
7740 (sha256
7741 (base32
7742 "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8"))))
7743 (build-system python-build-system)
7744 (propagated-inputs
7745 `(("python-pyopenssl" ,python-pyopenssl)))
7746 (synopsis "HTTPS support for Python's httplib and urllib2")
7747 (description "This is a HTTPS client implementation for httplib and urllib2
7748based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
7749over the default provided with Python and importantly enables full verification
7750of the SSL peer.")
7751 (home-page "https://github.com/cedadev/ndg_httpsclient/")
3f641af0 7752 (license license:bsd-3)))
ab41f979
LF
7753
7754;; python2-openssl requires special care, so package-with-python2 is
7755;; insufficient.
7756(define-public python2-ndg-httpsclient
7757 (package (inherit python-ndg-httpsclient)
7758 (name "python2-ndg-httpsclient")
7759 (arguments `(#:python ,python-2))
7760 (propagated-inputs
7761 `(("python2-pyopenssl" ,python2-pyopenssl)))))
03f964a5
CM
7762
7763(define-public python-contextlib2
7764 (package
7765 (name "python-contextlib2")
7766 (version "0.4.0")
7767 (source
7768 (origin
7769 (method url-fetch)
7770 (uri (pypi-uri "contextlib2" version))
7771 (sha256
7772 (base32
7773 "0cmp131dlh0d0zvw0aza1zd13glvngzk8lb4avks0hm7yxwdr9am"))))
7774 (build-system python-build-system)
7775 (arguments
7776 `(#:phases
7777 (modify-phases %standard-phases
7778 (replace 'check
7779 (lambda _ (zero?
7780 (system*
b3546174 7781 "python" "test_contextlib2.py" "-v")))))))
03f964a5
CM
7782 (home-page "http://contextlib2.readthedocs.org/")
7783 (synopsis "Tools for decorators and context managers")
7784 (description "This module is primarily a backport of the Python
77853.2 contextlib to earlier Python versions. Like contextlib, it
7786provides utilities for common tasks involving decorators and context
7787managers. It also contains additional features that are not part of
7788the standard library.")
3f641af0 7789 (license license:psfl)))
03f964a5
CM
7790
7791(define-public python2-contextlib2
7792 (package-with-python2 python-contextlib2))
210bf497
DT
7793
7794(define-public python-texttable
7795 (package
7796 (name "python-texttable")
7797 (version "0.8.4")
7798 (source
7799 (origin
7800 (method url-fetch)
7801 (uri (pypi-uri "texttable" version))
7802 (sha256
7803 (base32
7804 "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
7805 (build-system python-build-system)
7806 (arguments '(#:tests? #f)) ; no tests
7807 (home-page "https://github.com/foutaise/texttable/")
7808 (synopsis "Python module for creating simple ASCII tables")
7809 (description "Texttable is a Python module for creating simple ASCII
7810tables.")
3f641af0 7811 (license license:lgpl2.1+)))
210bf497
DT
7812
7813(define-public python2-texttable
7814 (package-with-python2 python-texttable))
67c52bb3
DT
7815
7816(define-public python-websocket-client
7817 (package
7818 (name "python-websocket-client")
6b810897 7819 (version "0.37.0")
67c52bb3
DT
7820 (source
7821 (origin
7822 (method url-fetch)
6b810897 7823 (uri (pypi-uri "websocket_client" version))
67c52bb3
DT
7824 (sha256
7825 (base32
6b810897 7826 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
67c52bb3
DT
7827 (build-system python-build-system)
7828 (native-inputs
7829 `(("python-six" ,python-six))) ; for tests
7830 (inputs
7831 `(("python-setuptools" ,python-setuptools)))
7832 (home-page "https://github.com/liris/websocket-client")
7833 (synopsis "WebSocket client for Python")
7834 (description "The Websocket-client module provides the low level APIs for
7835WebSocket usage in Python programs.")
3f641af0 7836 (license license:lgpl2.1+)))
67c52bb3
DT
7837
7838(define-public python2-websocket-client
7839 (package-with-python2 python-websocket-client))
5c6eea2a
LF
7840
7841(define-public python-atomicwrites
7842 (package
7843 (name "python-atomicwrites")
4e92d76a 7844 (version "1.1.0")
5c6eea2a
LF
7845 (source (origin
7846 (method url-fetch)
7847 (uri (pypi-uri "atomicwrites" version))
7848 (sha256
7849 (base32
4e92d76a 7850 "1s01dci8arsl9d9vr5nz1fk9znldp1z3l4yl43f0c27z12b8yxl0"))))
5c6eea2a
LF
7851 (build-system python-build-system)
7852 (synopsis "Atomic file writes in Python")
7853 (description "Library for atomic file writes using platform dependent tools
8f65585b 7854for atomic file system operations.")
5c6eea2a 7855 (home-page "https://github.com/untitaker/python-atomicwrites")
9bb6d184
LF
7856 (license license:expat)
7857 (properties `((python2-variant . ,(delay python2-atomicwrites))))))
7858
7859(define-public python2-atomicwrites
7860 (package (inherit (package-with-python2
7861 (strip-python2-variant python-atomicwrites)))
7862 (native-inputs
7863 `(("python2-setuptools" ,python2-setuptools)))))
561bb3cb
LF
7864
7865(define-public python-requests-toolbelt
7866 (package
7867 (name "python-requests-toolbelt")
c02af1c8 7868 (version "0.6.2")
561bb3cb
LF
7869 (source (origin
7870 (method url-fetch)
c02af1c8
LF
7871 (uri (string-append
7872 "https://pypi.python.org/packages/"
7873 "e1/a4/a94c037bc72ad70441aff1403d3243510d2542ddca7759faaeffeb11aefe/"
7874 "requests-toolbelt-" version ".tar.gz"))
561bb3cb
LF
7875 (sha256
7876 (base32
c02af1c8 7877 "15q9nrgp85nqlr4kdz1zvj8z2npafi2sr12y7fqgxbkq28j1aci6"))))
561bb3cb
LF
7878 (build-system python-build-system)
7879 (propagated-inputs
7880 `(("python-requests" ,python-requests)))
7881 (synopsis "Extensions to python-requests")
7882 (description "This is a toolbelt of useful classes and functions to be used
7883with python-requests.")
7884 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
3f641af0 7885 (license license:asl2.0)))
d1deb90b
LF
7886
7887(define-public python-click-threading
7888 (package
7889 (name "python-click-threading")
3d2e0dbc 7890 (version "0.2.0")
d1deb90b
LF
7891 (source (origin
7892 (method url-fetch)
3d2e0dbc
LF
7893 (uri (string-append
7894 "https://pypi.python.org/packages/"
7895 "fe/b7/e7f609d18a2a351cb71616adcf54df1acd82f83cb9b5936935a4d20e2c23/"
7896 "click-threading-" version ".tar.gz"))
d1deb90b
LF
7897 (sha256
7898 (base32
3d2e0dbc 7899 "18bcqikxwb3drb8rf60cclxkxw52521b38ax3byah6j8cn8y9p4j"))))
d1deb90b
LF
7900 (build-system python-build-system)
7901 (propagated-inputs
7902 `(("python-click" ,python-click)))
7903 (synopsis "Utilities for multithreading in Click")
7904 (description "This package provides utilities for multithreading in Click
7905applications.")
7906 (home-page "https://github.com/click-contrib/click-threading")
7907 (license license:expat)))
7b17cab9
LF
7908
7909(define-public python-click-log
7910 (package
7911 (name "python-click-log")
a9da8fec 7912 (version "0.1.3")
7b17cab9
LF
7913 (source (origin
7914 (method url-fetch)
7915 (uri (pypi-uri "click-log" version))
7916 (sha256
7917 (base32
a9da8fec 7918 "0kdd1vminxpcfczxl2kkf285n0dr1gxh2cdbx1p6vkj7b7bci3gx"))))
7b17cab9
LF
7919 (build-system python-build-system)
7920 (propagated-inputs
7921 `(("python-click" ,python-click)))
7922 (synopsis "Logging for click applications")
7923 (description "This package provides a Python library for logging Click
7924applications.")
7925 (home-page "https://github.com/click-contrib/click-log")
7926 (license license:expat)))
7b3a4ee4
LF
7927
7928(define-public python-apipkg
7929 (package
7930 (name "python-apipkg")
7931 (version "1.4")
7932 (source (origin
7933 (method url-fetch)
7934 (uri (pypi-uri "apipkg" version))
7935 (sha256
7936 (base32
7937 "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
7938 (build-system python-build-system)
b43bab3c 7939 (inputs
7b3a4ee4
LF
7940 `(("python-pytest" ,python-pytest)))
7941 (synopsis "Namespace control and lazy-import mechanism")
7942 (description "With apipkg you can control the exported namespace of a Python
7943package and greatly reduce the number of imports for your users. It is a small
7944pure Python module that works on virtually all Python versions.")
7945 (home-page "https://bitbucket.org/hpk42/apipkg")
e08739c3
CAW
7946 (license license:expat)
7947 (properties `((python2-variant . ,(delay python2-apipkg))))))
7948
7949(define-public python2-apipkg
7950 (package
7951 (inherit (package-with-python2
7952 (strip-python2-variant python-apipkg)))
7953 (native-inputs
7954 `(("python2-setuptools" ,python2-setuptools)))))
848964fe
LF
7955
7956(define-public python-execnet
7957 (package
7958 (name "python-execnet")
7959 (version "1.4.1")
7960 (source (origin
7961 (method url-fetch)
7962 (uri (pypi-uri "execnet" version))
7963 (sha256
7964 (base32
7965 "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
7966 (build-system python-build-system)
7967 (native-inputs
7968 `(("python-setuptools-scm" ,python-setuptools-scm)))
584d068f 7969 (inputs
848964fe
LF
7970 `(("python-apipkg" ,python-apipkg)))
7971 (synopsis "Rapid multi-Python deployment")
7972 (description "Execnet provides a share-nothing model with
7973channel-send/receive communication for distributing execution across many
7974Python interpreters across version, platform and network barriers. It has a
7975minimal and fast API targetting the following uses:
7976@enumerate
7977@item distribute tasks to (many) local or remote CPUs
7978@item write and deploy hybrid multi-process applications
7979@item write scripts to administer multiple environments
7980@end enumerate")
7981 (home-page "http://codespeak.net/execnet/")
16c84f90
CAW
7982 (license license:expat)
7983 (properties `((python2-variant . ,(delay python2-execnet))))))
7984
7985(define-public python2-execnet
7986 (let ((execnet (package-with-python2
7987 (strip-python2-variant python-execnet))))
7988 (package
7989 (inherit execnet)
7990 (native-inputs
7991 `(("python2-setuptools" ,python2-setuptools)
7992 ,@(package-native-inputs execnet))))))
6720dbb4
LF
7993
7994;;; The software provided by this package was integrated into pytest 2.8.
7995(define-public python-pytest-cache
7996 (package
7997 (name "python-pytest-cache")
7998 (version "1.0")
7999 (source (origin
8000 (method url-fetch)
8001 (uri (pypi-uri "pytest-cache" version))
8002 (sha256
8003 (base32
8004 "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
8005 (build-system python-build-system)
630d938f
EF
8006 (inputs
8007 `(("python-apipkg" ,python-apipkg)
8008 ("python-execnet" ,python-execnet)
8009 ("python-py" ,python-py)
8010 ("python-pytest" ,python-pytest)))
6720dbb4
LF
8011 (synopsis "Py.test plugin with mechanisms for caching across test runs")
8012 (description "The pytest-cache plugin provides tools to rerun failures from
8013the last py.test invocation.")
8014 (home-page "https://bitbucket.org/hpk42/pytest-cache/")
0adc21c2
EF
8015 (license license:expat)
8016 (properties `((python2-variant . ,(delay python2-pytest-cache))))))
8017
8018(define-public python2-pytest-cache
8019 (let ((pytest-cache (package-with-python2
8020 (strip-python2-variant python-pytest-cache))))
8021 (package
8022 (inherit pytest-cache)
8023 (native-inputs
8024 `(("python2-setuptools" ,python2-setuptools)
8025 ,@(package-native-inputs pytest-cache))))))
d7e729fe
LF
8026
8027(define-public python-pytest-localserver
8028 (package
8029 (name "python-pytest-localserver")
29f20168 8030 (version "0.3.5")
d7e729fe
LF
8031 (source (origin
8032 (method url-fetch)
29f20168 8033 (uri (pypi-uri "pytest-localserver" version))
d7e729fe
LF
8034 (sha256
8035 (base32
29f20168 8036 "0dvqspjr6va55zwmnnc2mmpqc7mm65kxig9ya44x1z8aadzxpa4p"))))
d7e729fe
LF
8037 (build-system python-build-system)
8038 (arguments
8039 `(#:phases (modify-phases %standard-phases
8040 (replace 'check
8041 (lambda _
8042 (zero? (system* "py.test" "--genscript=runtests.py"))
8043 (zero? (system* "py.test")))))))
8044 (native-inputs
d7e729fe
LF
8045 `(("python-pytest" ,python-pytest)
8046 ("python-requests" ,python-requests)
9ba40f05
EF
8047 ("python-six" ,python-six)))
8048 (inputs
8049 `(("python-werkzeug" ,python-werkzeug)))
d7e729fe
LF
8050 (synopsis "Py.test plugin to test server connections locally")
8051 (description "Pytest-localserver is a plugin for the pytest testing
8052framework which enables you to test server connections locally.")
8053 (home-page "https://pypi.python.org/pypi/pytest-localserver")
8054 (license license:expat)))
28cecbb7
LF
8055
8056(define-public python-wsgi-intercept
8057 (package
8058 (name "python-wsgi-intercept")
909fbd2b 8059 (version "1.2.2")
28cecbb7
LF
8060 (source (origin
8061 (method url-fetch)
909fbd2b
LF
8062 (uri (string-append
8063 "https://pypi.python.org/packages/"
8064 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
8065 "wsgi_intercept-" version ".tar.gz"))
28cecbb7
LF
8066 (sha256
8067 (base32
909fbd2b 8068 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
28cecbb7
LF
8069 (build-system python-build-system)
8070 (native-inputs
9d813ec1
EF
8071 `(("python-pytest" ,python-pytest)
8072 ("python-six" ,python-six)))
28cecbb7
LF
8073 (propagated-inputs
8074 `(("python-httplib2" ,python-httplib2)
8075 ("python-requests" ,python-requests)))
8076 (synopsis "Puts a WSGI application in place of a real URI for testing")
8077 (description "Wsgi_intercept installs a WSGI application in place of a real
8078URI for testing. Testing a WSGI application normally involves starting a
8079server at a local host and port, then pointing your test code to that address.
8080Instead, this library lets you intercept calls to any specific host/port
8081combination and redirect them into a WSGI application importable by your test
8082program. Thus, you can avoid spawning multiple processes or threads to test
8083your Web app.")
8084 (home-page "https://github.com/cdent/wsgi-intercept")
8085 (license license:expat)))
89b8a551
LF
8086
8087(define-public python-pytest-xprocess
8088 (package
8089 (name "python-pytest-xprocess")
8090 (version "0.9.1")
8091 (source (origin
8092 (method url-fetch)
8093 (uri (pypi-uri "pytest-xprocess" version))
8094 (sha256
8095 (base32
8096 "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
8097 (build-system python-build-system)
8098 (propagated-inputs
8099 `(("python-pytest" ,python-pytest)
8100 ("python-pytest-cache" ,python-pytest-cache)
8101 ("python-psutil" ,python-psutil)))
8102 (synopsis "Pytest plugin to manage external processes across test runs")
8103 (description "Pytest-xprocess is an experimental py.test plugin for managing
8104processes across test runs.")
8105 (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
8106 (license license:expat)))
5c299bf0
LF
8107
8108(define-public python-icalendar
8109 (package
8110 (name "python-icalendar")
f2f53353 8111 (version "3.10")
5c299bf0
LF
8112 (source (origin
8113 (method url-fetch)
8114 (uri (pypi-uri "icalendar" version))
8115 (sha256
8116 (base32
f2f53353 8117 "01amnk3621s7fagfla86npd25knbqirchg7h1jpqxqp103d02bs7"))))
5c299bf0
LF
8118 (build-system python-build-system)
8119 (propagated-inputs
8120 `(("python-dateutil-2" ,python-dateutil-2)
8121 ("python-pytz" ,python-pytz)))
8122 (synopsis "Python library for parsing iCalendar files")
8123 (description "The icalendar package is a parser/generator of iCalendar
8124files for use with Python.")
8125 (home-page "https://github.com/collective/icalendar")
3f641af0 8126 (license license:bsd-2)))
6bbbb53e
LF
8127
8128(define-public python-sphinxcontrib-newsfeed
8129 (package
8130 (name "python-sphinxcontrib-newsfeed")
8131 (version "0.1.4")
8132 (source (origin
8133 (method url-fetch)
8134 (uri (pypi-uri "sphinxcontrib-newsfeed" version))
8135 (sha256
8136 (base32
8137 "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
8138 (build-system python-build-system)
8139 (propagated-inputs
8140 `(("python-docutils" ,python-docutils)
8141 ("python-sphinx" ,python-sphinx)))
8142 (synopsis "News Feed extension for Sphinx")
8143 (description "Sphinxcontrib-newsfeed is an extension for adding a simple
8144Blog, News or Announcements section to a Sphinx website.")
8145 (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
3f641af0 8146 (license license:bsd-2)))
2216e15c
SB
8147
8148(define-public python-args
8149 (package
8150 (name "python-args")
8151 (version "0.1.0")
8152 (source (origin
8153 (method url-fetch)
8154 (uri (pypi-uri "args" version))
8155 (sha256
8156 (base32
8157 "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
8158 (build-system python-build-system)
8159 (inputs
8160 `(("python-setuptools" ,python-setuptools)))
8161 (home-page "https://github.com/kennethreitz/args")
8162 (synopsis "Command-line argument parser")
8163 (description
8164 "This library provides a Python module to parse command-line arguments.")
3f641af0 8165 (license license:bsd-3)))
2216e15c
SB
8166
8167(define-public python2-args
8168 (package-with-python2 python-args))
c06a3de9
SB
8169
8170(define-public python-clint
8171 (package
8172 (name "python-clint")
8173 (version "0.5.1")
8174 (source (origin
8175 (method url-fetch)
8176 (uri (pypi-uri "clint" version))
8177 (sha256
8178 (base32
8179 "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
8180 (build-system python-build-system)
8181 (inputs
8182 `(("python-args" ,python-args)
8183 ("python-setuptools" ,python-setuptools)))
8184 (home-page "https://github.com/kennethreitz/clint")
8185 (synopsis "Command-line interface tools")
8186 (description
8187 "Clint is a Python module filled with a set of tools for developing
8188command-line applications, including tools for colored and indented
8189output, progress bar display, and pipes.")
3f641af0 8190 (license license:isc)))
c06a3de9
SB
8191
8192(define-public python2-clint
8193 (package-with-python2 python-clint))
4ecdeef8
SB
8194
8195(define-public python-astor
8196 (package
8197 (name "python-astor")
8198 (version "0.5")
8199 (source (origin
8200 (method url-fetch)
8201 (uri (pypi-uri "astor" version))
8202 (sha256
8203 (base32
8204 "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
8205 (build-system python-build-system)
8206 (inputs
8207 `(("python-setuptools" ,python-setuptools)))
8208 (home-page "https://github.com/berkerpeksag/astor")
8209 (synopsis "Read and write Python ASTs")
8210 (description
8211 "Astor is designed to allow easy manipulation of Python source via the
8212Abstract Syntax Tree.")
3f641af0 8213 (license license:bsd-3)))
4ecdeef8
SB
8214
8215(define-public python2-astor
8216 (package-with-python2 python-astor))
e224b7d0
SB
8217
8218(define-public python-rply
8219 (package
8220 (name "python-rply")
8221 (version "0.7.4")
8222 (source (origin
8223 (method url-fetch)
8224 (uri (pypi-uri "rply" version))
8225 (sha256
8226 (base32
8227 "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
8228 (build-system python-build-system)
8229 (inputs
8230 `(("python-appdirs" ,python-appdirs)
8231 ("python-setuptools" ,python-setuptools)))
8232 (home-page "https://github.com/alex/rply")
8233 (synopsis "Parser generator for Python")
8234 (description
8235 "This package provides a pure Python based parser generator, that also
8236works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
8237with a new public API, and RPython support.")
3f641af0 8238 (license license:bsd-3)))
e224b7d0
SB
8239
8240(define-public python2-rply
8241 (package-with-python2 python-rply))
c3e919d7
SB
8242
8243(define-public python-hy
8244 (package
8245 (name "python-hy")
8246 (version "0.11.1")
8247 (source (origin
8248 (method url-fetch)
8249 (uri (pypi-uri "hy" version))
8250 (sha256
8251 (base32
8252 "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs"))))
8253 (build-system python-build-system)
8254 (inputs
8255 `(("python-astor" ,python-astor)
8256 ("python-clint" ,python-clint)
8257 ("python-rply" ,python-rply)
8258 ("python-setuptools" ,python-setuptools)))
8259 (home-page "http://hylang.org/")
8260 (synopsis "Lisp frontend to Python")
8261 (description
8262 "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
8263its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
8264Python at your fingertips, in Lisp form.")
8265 (license license:expat)))
8266
8267(define-public python2-hy
8268 (package-with-python2 python-hy))
7a5b944e 8269
81f7f297
EF
8270(define-public python-rauth
8271 (package
8272 (name "python-rauth")
8273 (version "0.7.2")
8274 (source
8275 (origin
8276 (method url-fetch)
8277 (uri (pypi-uri "rauth" version))
8278 (sha256
8279 (base32
8280 "00pq7zw429hhza9c0qzxiqp77m653jv09z92nralnmzwdf6pzicf"))))
8281 (build-system python-build-system)
8282 (arguments
8283 `(#:test-target "check"))
0848d8d3 8284 (inputs
81f7f297
EF
8285 `(("python-requests" ,python-requests)))
8286 (home-page "https://github.com/litl/rauth")
8287 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
8288 (description
8289 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
8290provides service wrappers for convenient connection initialization and
8291authenticated session objects providing things like keep-alive.")
0848d8d3
EF
8292 (license license:expat)
8293 (properties `((python2-variant . ,(delay python2-rauth))))))
81f7f297
EF
8294
8295(define-public python2-rauth
0848d8d3
EF
8296 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
8297 (package
8298 (inherit base)
8299 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8300 ("python2-unittest2" ,python2-unittest2)
8301 ,@(package-native-inputs base))))))
81f7f297 8302
1abe448d
EF
8303(define-public python2-functools32
8304 (package
8305 (name "python2-functools32")
8306 (version "3.2.3-2")
8307 (source
8308 (origin
8309 (method url-fetch)
8310 (uri (pypi-uri "functools32" version))
8311 (sha256
8312 (base32
8313 "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
8314 (build-system python-build-system)
8315 (arguments
8316 `(#:python ,python-2
8317 #:tests? #f)) ; no test target
8318 (native-inputs
8319 `(("python2-setuptools" ,python2-setuptools)))
8320 (home-page "https://github.com/MiCHiLU/python-functools32")
8321 (synopsis
8322 "Backport of the functools module from Python 3.2.3")
8323 (description
8324 "This package is a backport of the @code{functools} module from Python
83253.2.3 for use with older versions of Python and PyPy.")
8326 (license license:expat)))
8327
877889f3 8328(define-public python2-futures
7a5b944e 8329 (package
877889f3 8330 (name "python2-futures")
7a5b944e
EF
8331 (version "3.0.3")
8332 (source
8333 (origin
8334 (method url-fetch)
8335 (uri (pypi-uri "futures" version))
8336 (sha256
8337 (base32
8338 "1vcb34dqhzkhbq1957vdjszhhm5y3j9ba88dgwhqx2zynhmk9qig"))))
8339 (build-system python-build-system)
877889f3 8340 (arguments `(#:python ,python-2))
7a5b944e 8341 (native-inputs
877889f3 8342 `(("python2-setuptools" ,python2-setuptools)))
7a5b944e
EF
8343 (home-page "https://github.com/agronholm/pythonfutures")
8344 (synopsis
8345 "Backport of the concurrent.futures package from Python 3.2")
8346 (description
8347 "The concurrent.futures module provides a high-level interface for
8348asynchronously executing callables. This package backports the
8349concurrent.futures package from Python 3.2")
3f641af0 8350 (license license:bsd-3)))
7a5b944e 8351
5cb2fe44
EF
8352(define-public python-promise
8353 (package
8354 (name "python-promise")
8355 (version "0.4.2")
8356 (source
8357 (origin
8358 (method url-fetch)
8359 (uri (pypi-uri "promise" version))
8360 (sha256
8361 (base32
8362 "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
8363 (build-system python-build-system)
8364 ;; Tests wants python-futures, which is a python2 only program, and
8365 ;; can't be found by python-promise at test time.
8366 (arguments `(#:tests? #f))
8367 (home-page "https://github.com/syrusakbary/promise")
8368 (synopsis "Promises/A+ implementation for Python")
8369 (description
8370 "Promises/A+ implementation for Python")
8371 (properties `((python2-variant . ,(delay python2-promise))))
8372 (license license:expat)))
8373
8374(define-public python2-promise
8375 (let ((promise (package-with-python2
8376 (strip-python2-variant python-promise))))
8377 (package (inherit promise)
8378 (arguments (substitute-keyword-arguments (package-arguments promise)
8379 ((#:tests? _) #t)))
8380 (native-inputs
8381 `(("python2-futures" ,python2-futures)
8382 ("python2-pytest" ,python2-pytest)
8383 ("python2-setuptools" ,python2-setuptools)
8384 ,@(package-native-inputs promise))))))
8385
c18f6368
EF
8386(define-public python-urllib3
8387 (package
8388 (name "python-urllib3")
6178274d 8389 (version "1.18.1")
c18f6368
EF
8390 (source
8391 (origin
8392 (method url-fetch)
8393 (uri (pypi-uri "urllib3" version))
8394 (sha256
8395 (base32
6178274d 8396 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
c18f6368
EF
8397 (build-system python-build-system)
8398 (arguments `(#:tests? #f))
8399 (native-inputs
8400 `(("python-setuptools" ,python-setuptools)
8401 ;; some packages for tests
8402 ("python-nose" ,python-nose)
8403 ("python-mock" ,python-mock)
8404 ("python-tornado" ,python-tornado)))
8405 (propagated-inputs
8406 `(;; packages for https security
8407 ("python-certifi" ,python-certifi)
8408 ("python-ndg-httpsclient" ,python-ndg-httpsclient)
8409 ("python-pyasn1" ,python-pyasn1)
8410 ("python-pyopenssl" ,python-pyopenssl)))
6178274d 8411 (home-page "https://urllib3.readthedocs.org/")
c18f6368
EF
8412 (synopsis "HTTP library with thread-safe connection pooling")
8413 (description
8414 "Urllib3 supports features left out of urllib and urllib2 libraries. It
8415can reuse the same socket connection for multiple requests, it can POST files,
8416supports url redirection and retries, and also gzip and deflate decoding.")
8417 (license license:expat)))
8418
8419(define-public python2-urllib3
8420 (package-with-python2 python-urllib3))
2b2f2fc1
DT
8421
8422(define-public python-colorama
8423 (package
8424 (name "python-colorama")
8425 (version "0.3.3")
8426 (source
8427 (origin
8428 (method url-fetch)
8429 (uri (pypi-uri "colorama" version))
8430 (sha256
8431 (base32
8432 "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
8433 (build-system python-build-system)
8434 (inputs
8435 `(("python-setuptools" ,python-setuptools)))
8436 (synopsis "colored terminal text rendering for Python")
8437 (description "Colorama is a Python library for rendering colored terminal
8438text.")
8439 (home-page "https://pypi.python.org/pypi/colorama")
3f641af0 8440 (license license:bsd-3)))
2b2f2fc1
DT
8441
8442(define-public python2-colorama
8443 (package-with-python2 python-colorama))
f5bcec6e
DT
8444
8445(define-public python-rsa
8446 (package
8447 (name "python-rsa")
ecd68c53 8448 (version "3.4.2")
f5bcec6e
DT
8449 (source
8450 (origin
8451 (method url-fetch)
8452 (uri (pypi-uri "rsa" version))
8453 (sha256
8454 (base32
ecd68c53 8455 "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
f5bcec6e
DT
8456 (build-system python-build-system)
8457 (inputs
8458 `(("python-pyasn1" ,python-pyasn1)
8459 ("python-setuptools" ,python-setuptools)))
8460 (synopsis "Pure-Python RSA implementation")
8461 (description "Python-RSA is a pure-Python RSA implementation. It supports
8462encryption and decryption, signing and verifying signatures, and key
8463generation according to PKCS#1 version 1.5. It can be used as a Python
8464library as well as on the command line.")
8465 (home-page "http://stuvel.eu/rsa")
3f641af0 8466 (license license:asl2.0)))
f5bcec6e
DT
8467
8468(define-public python2-rsa
8469 (package-with-python2 python-rsa))
c0aacfa5
DT
8470
8471(define-public python-pluggy
8472 (package
8473 (name "python-pluggy")
8474 (version "0.3.1")
8475 (source
8476 (origin
8477 (method url-fetch)
8478 (uri (pypi-uri "pluggy" version))
8479 (sha256
8480 (base32
8481 "18qfzfm40bgx672lkg8q9x5hdh76n7vax99aank7vh2nw21wg70m"))))
8482 (build-system python-build-system)
8483 (inputs
8484 `(("python-setuptools" ,python-setuptools)))
8485 (synopsis "Plugin and hook calling mechanism for Python")
8486 (description "Pluggy is an extraction of the plugin manager as used by
8487Pytest but stripped of Pytest specific details.")
8488 (home-page "https://pypi.python.org/pypi/pluggy")
8489 (license license:expat)))
8490
8491(define-public python2-pluggy
8492 (package-with-python2 python-pluggy))
a4af21ca
DT
8493
8494(define-public python-tox
8495 (package
8496 (name "python-tox")
8497 (version "2.3.1")
8498 (source
8499 (origin
8500 (method url-fetch)
8501 (uri (pypi-uri "tox" version))
8502 (sha256
8503 (base32
8504 "1vj73ar4rimq3fwy5r2z3jv4g9qbh8rmpmncsc00g0k310acqzxz"))))
8505 (build-system python-build-system)
8506 (arguments
8507 ;; FIXME: Tests require a newer version of pytest, but upgrading our
8508 ;; pytest breaks other packages.
8509 '(#:tests? #f))
8510 (inputs
8511 `(("python-setuptools" ,python-setuptools)
8512 ("python-pluggy" ,python-pluggy)
8513 ("python-py" ,python-py)
8514 ("python-virtualenv" ,python-virtualenv)
8515 ("python-pytest" ,python-pytest)))
8516 (home-page "http://tox.testrun.org/")
8517 (synopsis "Virtualenv-based automation of test activities")
8518 (description "Tox is a generic virtualenv management and test command line
8519tool. It can be used to check that a package installs correctly with
8520different Python versions and interpreters, or run tests in each type of
8521supported environment, or act as a frontend to continuous integration
8522servers.")
8523 (license license:expat)))
8524
8525(define-public python2-tox
8526 (package-with-python2 python-tox))
ba9da248
DT
8527
8528(define-public python-jmespath
8529 (package
8530 (name "python-jmespath")
8531 (version "0.9.0")
8532 (source
8533 (origin
8534 (method url-fetch)
8535 (uri (pypi-uri "jmespath" version))
8536 (sha256
8537 (base32
8538 "0g9xvl69y7nr3w7ag4fsp6sm4fqf6vrqjw7504x2hzrrsh3ampq8"))))
8539 (build-system python-build-system)
8540 (inputs
8541 `(("python-setuptools" ,python-setuptools)))
8542 (synopsis "JSON Matching Expressions")
8543 (description "JMESPath (pronounced “james path”) is a Python library that
8544allows one to declaratively specify how to extract elements from a JSON
8545document.")
8546 (home-page "https://github.com/jmespath/jmespath.py")
8547 (license license:expat)))
8548
8549(define-public python2-jmespath
8550 (package-with-python2 python-jmespath))
935fcd5c
DT
8551
8552(define-public python-botocore
8553 (package
8554 (name "python-botocore")
e09f952d 8555 (version "1.4.62")
935fcd5c
DT
8556 (source
8557 (origin
8558 (method url-fetch)
8559 (uri (pypi-uri "botocore" version))
8560 (sha256
8561 (base32
e09f952d 8562 "1zxczlwqy9bl27d9bc5x99mb5mcsxm350240lp5nx7014xb311lj"))))
935fcd5c
DT
8563 (build-system python-build-system)
8564 (inputs
8565 `(("python-dateutil" ,python-dateutil-2)
8566 ("python-docutils" ,python-docutils)
8567 ("python-mock" ,python-mock)
8568 ("python-nose" ,python-nose)
8569 ("python-setuptools" ,python-setuptools)
8570 ("python-tox" ,python-tox)
8571 ("python-wheel" ,python-wheel)
8572 ("python-jmespath" ,python-jmespath)))
8573 (home-page "https://github.com/boto/botocore")
8574 (synopsis "Low-level interface to AWS")
8575 (description "Botocore is a Python library that provides a low-level
8576interface to the Amazon Web Services (AWS) API.")
3f641af0 8577 (license license:asl2.0)))
935fcd5c
DT
8578
8579(define-public python2-botocore
8580 (package-with-python2 python-botocore))
f861b8b8
DT
8581
8582(define-public awscli
8583 (package
8584 (name "awscli")
d5ccf71e 8585 (version "1.11.5")
f861b8b8
DT
8586 (source
8587 (origin
8588 (method url-fetch)
d5ccf71e 8589 (uri (pypi-uri name version))
f861b8b8
DT
8590 (sha256
8591 (base32
d5ccf71e 8592 "0lclasm0wnayd3b8zl9l91i32nbgrhh0ncf9lksss4cv0myfwmfg"))))
f861b8b8
DT
8593 (build-system python-build-system)
8594 (inputs
8595 `(("python-colorama" ,python-colorama)
8596 ("python-docutils" ,python-docutils)
8597 ("python-mock" ,python-mock)
8598 ("python-nose" ,python-nose)
8599 ("python-rsa" ,python-rsa)
8600 ("python-setuptools" ,python-setuptools)
8601 ("python-sphinx" ,python-sphinx)
8602 ("python-tox" ,python-tox)
8603 ("python-wheel" ,python-wheel)
d5ccf71e
LF
8604 ("python-botocore" ,python-botocore)
8605 ("python-s3transfer" ,python-s3transfer)))
f861b8b8
DT
8606 (home-page "http://aws.amazon.com/cli/")
8607 (synopsis "Command line client for AWS")
8608 (description "AWS CLI provides a unified command line interface to the
8609Amazon Web Services (AWS) API.")
3f641af0 8610 (license license:asl2.0)))
6a44697d
LF
8611
8612(define-public python-hypothesis
8613 (package
8614 (name "python-hypothesis")
bea6d94d 8615 (version "3.1.0")
6a44697d
LF
8616 (source (origin
8617 (method url-fetch)
8618 (uri (pypi-uri "hypothesis" version))
8619 (sha256
8620 (base32
bea6d94d 8621 "0qyqq9akm4vshhn8cngjc1qykcvsn7cz6dlm6njfsgpbraqrmbbw"))))
6a44697d 8622 (build-system python-build-system)
6a44697d
LF
8623 (propagated-inputs
8624 `(("python-flake8" ,python-flake8)
8625 ("python-pytest" ,python-pytest)))
8626 (synopsis "Library for property based testing")
8627 (description "Hypothesis is a library for testing your Python code against a
8628much larger range of examples than you would ever want to write by hand. It’s
8629based on the Haskell library, Quickcheck, and is designed to integrate
8630seamlessly into your existing Python unit testing work flow.")
8631 (home-page "https://github.com/DRMacIver/hypothesis")
3f641af0 8632 (license license:mpl2.0)
6f068e08 8633 (properties `((python2-variant . ,(delay python2-hypothesis))))))
6a44697d
LF
8634
8635(define-public python2-hypothesis
6f068e08
EF
8636 (let ((hypothesis (package-with-python2
8637 (strip-python2-variant python-hypothesis))))
8638 (package (inherit hypothesis)
8639 (native-inputs
8640 `(("python2-enum34" ,python2-enum34)
8641 ("python2-setuptools" ,python2-setuptools))))))
7517e73c
LF
8642
8643(define-public python-pytest-subtesthack
8644 (package
8645 (name "python-pytest-subtesthack")
8646 (version "0.1.1")
8647 (source (origin
8648 (method url-fetch)
8649 (uri (pypi-uri "pytest-subtesthack" version))
8650 (sha256
8651 (base32
8652 "15kzcr5pchf3id4ikdvlv752rc0j4d912n589l4rifp8qsj19l1x"))))
8653 (build-system python-build-system)
8654 (native-inputs
8655 `(;; setuptools required for python-2 variant
8656 ("python-setuptools" ,python-setuptools)))
8657 (propagated-inputs
8658 `(("python-pytest" ,python-pytest)))
8659 (synopsis "Set-up and tear-down fixtures for unit tests")
8660 (description "This plugin allows you to set up and tear down fixtures within
8661unit test functions that use @code{py.test}. This is useful for using
8662@command{hypothesis} inside py.test, as @command{hypothesis} will call the test
8663function multiple times, without setting up or tearing down fixture state as is
8664normally the case.")
8665 (home-page "https://github.com/untitaker/pytest-subtesthack/")
3f641af0 8666 (license license:unlicense)))
7517e73c
LF
8667
8668(define-public python2-pytest-subtesthack
8669 (package-with-python2 python-pytest-subtesthack))
0bdc1671
CAW
8670
8671(define-public python2-xdo
8672 (package
8673 (name "python2-xdo")
8674 (version "0.2")
8675 (source (origin
8676 (method url-fetch)
8677 (uri (string-append
8678 "http://http.debian.net/debian/pool/main/p/python-xdo/"
8679 "python-xdo_" version ".orig.tar.gz"))
8680 (sha256
8681 (base32
8682 "1kl5c1p0dyxf62plnk6fl77ycfb4whwjms16r14dxx8kn90hlqz4"))))
8683 (build-system python-build-system)
8684 (arguments
8685 `(#:python ,python-2
8686 #:tests? #f)) ; no tests provided
8687 (inputs
8688 `(("xdotool" ,xdotool)
8689 ("libX11" ,libx11)))
8690 (home-page "https://tracker.debian.org/pkg/python-xdo")
8691 (synopsis "Python library for simulating X11 keyboard/mouse input")
8692 (description "Provides bindings to libxdo for manipulating X11 via simulated
8693input. (Note that this is mostly a legacy library; you may wish to look at
8694python-xdo for newer bindings.)")
3f641af0 8695 (license license:bsd-3)))
0bdc1671 8696
cb34dc6c
CAW
8697(define-public python-wtforms
8698 (package
8699 (name "python-wtforms")
8700 (version "2.1")
8701 (source
8702 (origin
8703 (method url-fetch)
8704 (uri (pypi-uri "WTForms" version ".zip"))
8705 (sha256
8706 (base32
8707 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
8708 (build-system python-build-system)
8709 (native-inputs
8710 `(("unzip" ,unzip)))
8711 (home-page "http://wtforms.simplecodes.com/")
8712 (synopsis
8713 "Form validation and rendering library for Python web development")
8714 (description
8715 "WTForms is a flexible forms validation and rendering library
8716for Python web development. It is very similar to the web form API
8717available in Django, but is a standalone package.")
3f641af0 8718 (license license:bsd-3)
cb34dc6c
CAW
8719 (properties `((python2-variant . ,(delay python2-wtforms))))))
8720
8721(define-public python2-wtforms
8722 (package
8723 (inherit (package-with-python2
8724 (strip-python2-variant python-wtforms)))
8725 (inputs `(("python2-setuptools" ,python2-setuptools)))))
50aaec25
DT
8726
8727(define-public python-mako
8728 (package
8729 (name "python-mako")
8730 (version "1.0.3")
8731 (source
8732 (origin
8733 (method url-fetch)
8734 (uri (pypi-uri "Mako" version))
8735 (sha256
8736 (base32
8737 "136kcjbs0s98qkx8a418b05dfblqp0kiiqyx8vhx4rarwc7bqi3n"))))
8738 (build-system python-build-system)
8739 (native-inputs
8740 `(("python-markupsafe" ,python-markupsafe)
8741 ("python-mock" ,python-mock)
8742 ("python-nose" ,python-nose)))
8743 (home-page "http://www.makotemplates.org/")
8744 (synopsis "Templating language for Python")
8745 (description "Mako is a templating language for Python that compiles
8746templates into Python modules.")
8747 (license license:expat)
8748 (properties `((python2-variant . ,(delay python2-mako))))))
8749
8750(define-public python2-mako
8751 (let ((base (package-with-python2
8752 (strip-python2-variant python-mako))))
8753 (package
8754 (inherit base)
8755 (native-inputs
8756 (cons `("python2-setuptools" ,python2-setuptools)
8757 (package-native-inputs base))))))
ae00a41f
CAW
8758
8759(define-public python-waitress
8760 (package
8761 (name "python-waitress")
8762 (version "0.8.10")
8763 (source
8764 (origin
8765 (method url-fetch)
8766 (uri (pypi-uri "waitress" version))
8767 (sha256
8768 (base32
8769 "017n9ra6vvmq9d5sfhdzyzr1mg15x2hj2dhm4pdlw98c1ypw2h3w"))))
8770 (build-system python-build-system)
8771 (home-page "https://github.com/Pylons/waitress")
8772 (synopsis "Waitress WSGI server")
8773 (description "Waitress is meant to be a production-quality pure-Python WSGI
8774server with very acceptable performance.")
3f641af0 8775 (license license:zpl2.1)
ae00a41f
CAW
8776 (properties `((python2-variant . ,(delay python2-waitress))))))
8777
8778(define-public python2-waitress
8779 (package
8780 (inherit (package-with-python2
8781 (strip-python2-variant python-waitress)))
8782 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
778a284b
CAW
8783
8784(define-public python-wsgiproxy2
8785 (package
8786 (name "python-wsgiproxy2")
8787 (version "0.4.2")
8788 (source
8789 (origin
8790 (method url-fetch)
8791 (uri (pypi-uri "WSGIProxy2" version ".zip"))
8792 (sha256
8793 (base32
8794 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
8795 (build-system python-build-system)
e359b31a
LF
8796 (arguments
8797 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
8798 ;; support Python 3:
8799 ;; https://github.com/benoitc/restkit/issues/140
8800 #:tests? #f))
778a284b
CAW
8801 (native-inputs
8802 `(("unzip" ,unzip)
8803 ("python-nose" ,python-nose)
8804 ("python-coverage" ,python-coverage)))
8805 (propagated-inputs
8806 `(("python-six" ,python-six)
8807 ("python-webob" ,python-webob)))
8808 (home-page
8809 "https://github.com/gawel/WSGIProxy2/")
8810 (synopsis "WSGI Proxy with various http client backends")
8811 (description "WSGI turns HTTP requests into WSGI function calls.
8812WSGIProxy turns WSGI function calls into HTTP requests.
8813It also includes code to sign requests and pass private data,
8814and to spawn subprocesses to handle requests.")
8815 (license license:expat)
8816 (properties `((python2-variant . ,(delay python2-wsgiproxy2))))))
8817
8818(define-public python2-wsgiproxy2
8819 (let ((wsgiproxy2 (package-with-python2
8820 (strip-python2-variant python-wsgiproxy2))))
8821 (package
8822 (inherit wsgiproxy2)
8823 (inputs `(("python2-setuptools" ,python2-setuptools)
8824 ,@(package-inputs wsgiproxy2))))))
bb7518b1
CAW
8825
8826(define-public python-pastedeploy
8827 (package
8828 (name "python-pastedeploy")
8829 (version "1.5.2")
8830 (source
8831 (origin
8832 (method url-fetch)
8833 (uri (pypi-uri "PasteDeploy" version))
8834 (sha256
8835 (base32
8836 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
8837 (build-system python-build-system)
8838 (native-inputs
8839 `(("python-nose" ,python-nose)))
8840 (propagated-inputs
8841 ;; This package uses pkg_resources, part of setuptools, during runtime,
8842 ;; hence why not a native-input.
8843 `(("python-setuptools" ,python-setuptools)))
8844 (home-page "http://pythonpaste.org/deploy/")
8845 (synopsis
8846 "Load, configure, and compose WSGI applications and servers")
8847 (description
8848 "This tool provides code to load WSGI applications and servers from URIs;
8849these URIs can refer to Python Eggs for INI-style configuration files. Paste
8850Script provides commands to serve applications based on this configuration
8851file.")
8852 (license license:expat)))
8853
8854(define-public python2-pastedeploy
8855 (package-with-python2 python-pastedeploy))
1cf53652 8856
c4a7904c
CAW
8857(define-public python-paste
8858 (package
8859 (name "python-paste")
8860 (version "2.0.2")
8861 (source
8862 (origin
8863 (method url-fetch)
8864 (uri (pypi-uri "Paste" version))
8865 (sha256
8866 (base32
8867 "16dsv9qi0r4qsrsb6dilpq2rx0fnglvh36flzywcdnm2jg43mb5d"))
fc1adab1
AK
8868 (patches (search-patches "python-paste-remove-website-test.patch"
8869 "python-paste-remove-timing-test.patch"))))
c4a7904c
CAW
8870 (build-system python-build-system)
8871 (native-inputs
8872 `(("python-nose" ,python-nose)))
8873 (propagated-inputs
8874 `(;; Uses pkg_resources provided by setuptools internally.
8875 ("python-setuptools" ,python-setuptools)
8876 ("python-six" ,python-six)))
8877 (arguments
8878 '(;; Tests don't pass on Python 3, but work fine on Python 2.
8879 ;; (As of 2.0.2, Python 3 support in Paste is presently a bit broken,
8880 ;; but is usable enough for the minimal amount it's used in MediaGoblin
8881 ;; still... things should be better by the next Paste release.)
8882 #:tests? #f))
8883 (home-page "http://pythonpaste.org")
8884 (synopsis
8885 "Python web development tools, focusing on WSGI")
8886 (description
8887 "Paste provides a variety of web development tools and middleware which
8888can be nested together to build web applications. Paste's design closely
8889follows ideas flowing from WSGI (Web Standard Gateway Interface).")
8890 (license license:expat)
8891 (properties `((python2-variant . ,(delay python2-paste))))))
8892
8893(define-public python2-paste
8894 (let ((paste (package-with-python2
8895 (strip-python2-variant python-paste))))
8896 (package
8897 (inherit paste)
8898 (arguments
8899 ;; Tests are back for Python 2!
8900 `(#:tests? #t
8901 ,@(package-arguments paste))))))
8902
a8f20f63
CAW
8903(define-public python-pastescript
8904 (package
8905 (name "python-pastescript")
8906 (version "2.0.2")
8907 (source
8908 (origin
8909 (method url-fetch)
8910 (uri (pypi-uri "PasteScript" version))
8911 (sha256
8912 (base32
8913 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
8914 (build-system python-build-system)
8915 (native-inputs
8916 `(("python-nose" ,python-nose)))
8917 (propagated-inputs
8918 `(;; Uses pkg_resources provided by setuptools internally.
8919 ("python-setuptools" ,python-setuptools)
8920 ("python-paste" ,python-paste)
8921 ("python-pastedeploy" ,python-pastedeploy)))
8922 (home-page "http://pythonpaste.org/script/")
8923 (arguments
8924 '(;; Unfortunately, this requires the latest unittest2,
8925 ;; but that requires traceback2 which requires linecache2 which requires
8926 ;; unittest2. So we're skipping tests for now.
8927 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
8928 ;; so in theory we could get around this situation somehow.)
8929 #:tests? #f))
8930 (synopsis
8931 "Pluggable command line tool for serving web applications and more")
8932 (description
8933 "PasteScript is a plugin-friendly command line tool which provides a
8934variety of features, from launching web applications to bootstrapping project
8935layouts.")
8936 (license license:expat)))
8937
8938(define-public python2-pastescript
8939 (package-with-python2 python-pastescript))
8940
1cf53652
CAW
8941(define-public python-pyquery
8942 (package
8943 (name "python-pyquery")
aab76e80 8944 (version "1.2.13")
1cf53652
CAW
8945 (source
8946 (origin
8947 (method url-fetch)
8948 (uri (pypi-uri "pyquery" version))
8949 (sha256
8950 (base32
aab76e80 8951 "0j9fsisip21qv4xljsg5dmni1pgpvwrjyyhhql0glydc4bs5rjgv"))))
1cf53652 8952 (build-system python-build-system)
2ddbfa8c
LF
8953 (native-inputs
8954 `(("python-webob" ,python-webob)
8955 ("python-webtest" ,python-webtest)))
1cf53652
CAW
8956 (propagated-inputs
8957 `(("python-lxml" ,python-lxml)
8958 ("python-cssselect" ,python-cssselect)))
8959 (home-page "https://github.com/gawel/pyquery")
8960 (synopsis "Make jQuery-like queries on xml documents")
8961 (description "pyquery allows you to make jQuery queries on xml documents.
8962The API is as much as possible the similar to jQuery. pyquery uses lxml for
8963fast xml and html manipulation.")
3f641af0 8964 (license license:bsd-3)
1cf53652
CAW
8965 (properties `((python2-variant . ,(delay python2-pyquery))))))
8966
8967(define-public python2-pyquery
8968 (let ((pyquery (package-with-python2
8969 (strip-python2-variant python-pyquery))))
8970 (package
8971 (inherit pyquery)
2ddbfa8c
LF
8972 (native-inputs `(("python2-setuptools" ,python2-setuptools)
8973 ,@(package-native-inputs pyquery))))))
aa6313d6
CAW
8974
8975(define-public python-webtest
8976 (package
8977 (name "python-webtest")
8978 (version "2.0.20")
8979 (source
8980 (origin
8981 (method url-fetch)
8982 (uri (pypi-uri "WebTest" version))
8983 (sha256
8984 (base32
8985 "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv"))))
8986 (build-system python-build-system)
8987 (arguments
8988 `(;; Unfortunately we have to disable tests!
8989 ;; This release of WebTest is pinned to python-nose < 1.3,
8990 ;; but older versions of python-nose are plagued with the following
8991 ;; bug(s), which rears its ugly head during test execution:
8992 ;; https://github.com/nose-devs/nose/issues/759
8993 ;; https://github.com/nose-devs/nose/pull/811
8994 #:tests? #f))
8995 ;; Commented out code is no good, but in this case, once tests
8996 ;; are ready to be enabled again, we should put the following
8997 ;; in place:
8998 ;; (native-inputs
8999 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
9000 ;; ; but see above comment
9001 ;; ("python-coverage" ,python-coverage)
9002 ;; ("python-mock" ,python-mock)
9003 ;; ("python-pastedeploy" ,python-pastedeploy)
9004 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
9005 ;; ("python-pyquery" ,python-pyquery)))
9006 (propagated-inputs
9007 `(("python-waitress" ,python-waitress)
9008 ("python-webob" ,python-webob)
9009 ("python-six" ,python-six)
9010 ("python-beautifulsoup4" ,python-beautifulsoup4)))
9011 (home-page "http://webtest.pythonpaste.org/")
9012 (synopsis "Helper to test WSGI applications")
9013 (description "Webtest allows you to test your Python web applications
9014without starting an HTTP server. It supports anything that supports the
9015minimum of WSGI.")
9016 (license license:expat)
9017 (properties `((python2-variant . ,(delay python2-webtest))))))
9018
9019(define-public python2-webtest
9020 (let ((webtest (package-with-python2
9021 (strip-python2-variant python-webtest))))
9022 (package
9023 (inherit webtest)
9024 (native-inputs `(("python2-setuptools" ,python2-setuptools)
9025 ,@(package-native-inputs webtest))))))
4cb122cd
CAW
9026
9027(define-public python-anyjson
9028 (package
9029 (name "python-anyjson")
9030 (version "0.3.3")
9031 (source
9032 (origin
9033 (method url-fetch)
9034 (uri (pypi-uri "anyjson" version))
9035 (sha256
9036 (base32
9037 "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
9038 (build-system python-build-system)
9039 (arguments
9040 `(;; We could possibly get tests working, but on Python 3 it's not so easy.
9041 ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
9042 ;; whatever) so this transformation needs to be done before the tests
9043 ;; can be run. Maybe we could add a build step to transform beforehand
9044 ;; but it could be annoying/difficult.
9045 ;; We can enable tests for the Python 2 version, though, and do below.
9046 #:tests? #f))
9047 (home-page "http://bitbucket.org/runeh/anyjson/")
9048 (synopsis
9049 "Wraps best available JSON implementation in a common interface")
9050 (description
9051 "Anyjson loads whichever is the fastest JSON module installed
9052and provides a uniform API regardless of which JSON implementation is used.")
3f641af0 9053 (license license:bsd-3)
4cb122cd
CAW
9054 (properties `((python2-variant . ,(delay python2-anyjson))))))
9055
9056(define-public python2-anyjson
9057 (let ((anyjson (package-with-python2
9058 (strip-python2-variant python-anyjson))))
9059 (package
9060 (inherit anyjson)
9061 (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
9062 #:tests? #t
9063 ,@(package-arguments anyjson)))
9064 (native-inputs `(("python2-setuptools" ,python2-setuptools)
9065 ("python2-nose" ,python2-nose))))))
8dfceab7
CAW
9066
9067(define-public python-amqp
9068 (package
9069 (name "python-amqp")
9070 (version "1.4.9")
9071 (source
9072 (origin
9073 (method url-fetch)
9074 (uri (pypi-uri "amqp" version))
9075 (sha256
9076 (base32
9077 "06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
9078 (build-system python-build-system)
9079 (native-inputs
9080 `(("python-nose" ,python-nose)
9081 ("python-mock" ,python-mock)))
9082 (home-page "http://github.com/celery/py-amqp")
9083 (synopsis
9084 "Low-level AMQP client for Python (fork of amqplib)")
9085 (description
9086 "This is a fork of amqplib which was originally written by Barry Pederson.
9087It is maintained by the Celery project, and used by kombu as a pure python
9088alternative when librabbitmq is not available.")
3f641af0 9089 (license license:lgpl2.1+)
8dfceab7
CAW
9090 (properties `((python2-variant . ,(delay python2-amqp))))))
9091
9092(define-public python2-amqp
9093 (let ((amqp (package-with-python2
9094 (strip-python2-variant python-amqp))))
9095 (package
9096 (inherit amqp)
9097 (arguments `(;; Tries to run coverage tests with nose-cover3, which seems
9098 ;; unmaintained. Weirdly, does not do this on the python 3
9099 ;; version?
9100 #:tests? #f
9101 ,@(package-arguments amqp)))
9102 (native-inputs `(("python2-setuptools" ,python2-setuptools)
9103 ,@(package-native-inputs amqp))))))
7d387305
CAW
9104
9105(define-public python-kombu
9106 (package
9107 (name "python-kombu")
9108 (version "3.0.33")
9109 (source
9110 (origin
9111 (method url-fetch)
9112 (uri (pypi-uri "kombu" version))
9113 (sha256
9114 (base32
9115 "16brjx2lgwbj2a37d0pjbfb84nvld6irghmqrs3qfncajp51hgc5"))))
9116 (build-system python-build-system)
9117 (native-inputs
9118 `(("python-mock" ,python-mock)
9119 ("python-nose" ,python-nose)))
9120 (propagated-inputs
9121 `(("python-anyjson" ,python-anyjson)
9122 ("python-amqp" ,python-amqp)))
9123 (home-page "http://kombu.readthedocs.org")
9124 (synopsis "Message passing library for Python")
9125 (description "The aim of Kombu is to make messaging in Python as easy as
9126possible by providing an idiomatic high-level interface for the AMQ protocol,
9127and also provide proven and tested solutions to common messaging problems.
9128AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
9129message orientation, queuing, routing, reliability and security, for which the
9130RabbitMQ messaging server is the most popular implementation.")
3f641af0 9131 (license license:bsd-3)
7d387305
CAW
9132 (properties `((python2-variant . ,(delay python2-kombu))))))
9133
9134(define-public python2-kombu
9135 (let ((kombu (package-with-python2
9136 (strip-python2-variant python-kombu))))
9137 (package
9138 (inherit kombu)
9139 (inputs `(("python2-setuptools" ,python2-setuptools)
9140 ("python2-unittest2" ,python2-unittest2)
9141 ,@(package-inputs kombu))))))
b6f0b9fb
CAW
9142
9143(define-public python-billiard
9144 (package
9145 (name "python-billiard")
9146 (version "3.3.0.22")
9147 (source
9148 (origin
9149 (method url-fetch)
9150 (uri (pypi-uri "billiard" version))
9151 (sha256
9152 (base32
9153 "0zp7h6a58alrb3mwdw61jds07395j4j0mj6iqsb8czrihw9ih5nj"))))
9154 (build-system python-build-system)
9155 (native-inputs
9156 `(("python-nose" ,python-nose)))
9157 (home-page "http://github.com/celery/billiard")
9158 (synopsis
9159 "Python multiprocessing fork with improvements and bugfixes")
9160 (description
9161 "Billiard is a fork of the Python 2.7 multiprocessing package. The
9162multiprocessing package itself is a renamed and updated version of R Oudkerk's
9163pyprocessing package. This standalone variant is intended to be compatible with
9164Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
3f641af0 9165 (license license:bsd-3)
b6f0b9fb
CAW
9166 (properties `((python2-variant . ,(delay python2-billiard))))))
9167
9168(define-public python2-billiard
9169 (let ((billiard (package-with-python2
9170 (strip-python2-variant python-billiard))))
9171 (package
9172 (inherit billiard)
9173 (native-inputs `(("python2-setuptools" ,python2-setuptools)
9174 ("python2-unittest2" ,python2-unittest2)
9175 ("python2-mock" ,python2-mock)
9176 ,@(package-native-inputs billiard))))))
22df6419
CAW
9177
9178(define-public python-celery
9179 (package
9180 (name "python-celery")
9181 (version "3.1.20")
9182 (source
9183 (origin
9184 (method url-fetch)
9185 (uri (pypi-uri "celery" version))
9186 (sha256
9187 (base32
9188 "1md6ywg1s0946qyp8ndnsd677wm0yax933h2sb4m3a4j7lf1jbyh"))))
9189 (build-system python-build-system)
9190 (native-inputs
9191 `(("python-nose" ,python-nose)))
a64cbb6f 9192 (inputs
22df6419 9193 `(("python-pytz" ,python-pytz)
a64cbb6f
EF
9194 ("python-amqp" ,python-amqp)
9195 ("python-anyjson" ,python-anyjson)
22df6419
CAW
9196 ("python-billiard" ,python-billiard)
9197 ("python-kombu" ,python-kombu)))
9198 (home-page "http://celeryproject.org")
9199 (synopsis "Distributed Task Queue")
9200 (description "Celery is an asynchronous task queue/job queue based on
9201distributed message passing. It is focused on real-time operation, but
9202supports scheduling as well. The execution units, called tasks, are executed
9203concurrently on a single or more worker servers using multiprocessing,
9204Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
9205synchronously (wait until ready).")
3f641af0 9206 (license license:bsd-3)
22df6419
CAW
9207 (properties `((python2-variant . ,(delay python2-celery))))))
9208
9209(define-public python2-celery
9210 (let ((celery (package-with-python2
9211 (strip-python2-variant python-celery))))
9212 (package
9213 (inherit celery)
9214 (native-inputs `(("python2-setuptools" ,python2-setuptools)
9215 ("python2-unittest2" ,python2-unittest2)
9216 ("python2-mock" ,python2-mock)
9217 ,@(package-native-inputs celery))))))
97e32948
CAW
9218
9219(define-public python-translitcodec
9220 (package
9221 (name "python-translitcodec")
9222 (version "0.4.0")
9223 (source
9224 (origin
9225 (method url-fetch)
9226 (uri (pypi-uri "translitcodec" version))
9227 (sha256
9228 (base32
9229 "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
9230 (build-system python-build-system)
9231 (arguments
9232 `(#:tests? #f)) ; no tests provided
9233 (home-page
9234 "https://github.com/claudep/translitcodec")
9235 (synopsis
9236 "Unicode to 8-bit charset transliteration codec")
9237 (description
9238 "This package contains codecs for transliterating ISO 10646 texts into
9239best-effort representations using smaller coded character sets (ASCII,
9240ISO 8859, etc.).")
9241 (license license:expat)
9242 (properties `((python2-variant . ,(delay python2-translitcodec))))))
9243
9244(define-public python2-translitcodec
9245 (package
9246 (inherit (package-with-python2
9247 (strip-python2-variant python-translitcodec)))
9248 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
0c3b90d4
CAW
9249
9250(define-public python-editor
9251 (package
9252 (name "python-editor")
9253 (version "0.5")
9254 (source
9255 (origin
9256 (method url-fetch)
9257 (uri (pypi-uri "python-editor" version))
9258 (sha256
9259 (base32
9260 "1ypnpgvzpkbwsg4rdvy4sy51j28b5xq9v8pnkwxncn07vqz06p7n"))))
9261 (build-system python-build-system)
9262 (home-page
9263 "https://github.com/fmoo/python-editor")
9264 (synopsis
9265 "Programmatically open an editor, capture the result")
9266 (description
9267 "python-editor is a library that provides the editor module for
9268programmatically interfacing with your system's $EDITOR.")
3f641af0 9269 (license license:asl2.0)
0c3b90d4
CAW
9270 (properties `((python2-variant . ,(delay python2-editor))))))
9271
9272(define-public python2-editor
9273 (package
9274 (inherit (package-with-python2
9275 (strip-python2-variant python-editor)))
9276 (inputs `(("python2-setuptools" ,python2-setuptools)))))
3276517c
LF
9277
9278(define-public python-sphinxcontrib-programoutput
9279 (package
9280 (name "python-sphinxcontrib-programoutput")
9281 (version "0.8")
9282 (source (origin
9283 (method url-fetch)
9284 (uri (pypi-uri "sphinxcontrib-programoutput" version))
9285 (sha256
9286 (base32
9287 "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp"))))
9288 (build-system python-build-system)
9289 (propagated-inputs
9290 `(("python-docutils" ,python-docutils)
9291 ("python-sphinx" ,python-sphinx)))
9292 (synopsis "Sphinx extension to include program output")
9293 (description "A Sphinx extension to literally insert the output of arbitrary
9294commands into documents, helping you to keep your command examples up to date.")
9295 (home-page "https://github.com/lunaryorn/sphinxcontrib-programoutput")
3f641af0 9296 (license license:bsd-2)
3276517c
LF
9297 (properties `((python2-variant . ,(delay python2-sphinxcontrib-programoutput))))))
9298
9299(define-public python2-sphinxcontrib-programoutput
9300 (package
9301 (inherit (package-with-python2
9302 (strip-python2-variant python-sphinxcontrib-programoutput)))
9303 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
548d7165
LF
9304
9305(define-public python-sphinx-repoze-autointerface
9306 (package
9307 (name "python-sphinx-repoze-autointerface")
328ae341 9308 (version "0.8")
548d7165
LF
9309 (source (origin
9310 (method url-fetch)
9311 (uri (pypi-uri "repoze.sphinx.autointerface" version))
9312 (sha256
9313 (base32
328ae341 9314 "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f"))))
548d7165
LF
9315 (build-system python-build-system)
9316 (propagated-inputs
9317 `(("python-docutils" ,python-docutils)
9318 ("python-sphinx" ,python-sphinx)
9319 ("python-zope-interface" ,python-zope-interface)))
9320 (synopsis "Auto-generate Sphinx API docs from Zope interfaces")
9321 (description "This package defines an extension for the Sphinx documentation
9322system. The extension allows generation of API documentation by
9323introspection of @code{zope.interface} instances in code.")
9324 (home-page "https://github.com/repoze/repoze.sphinx.autointerface")
3f641af0 9325 (license license:repoze)))
548d7165
LF
9326
9327(define-public python2-sphinx-repoze-autointerface
9328 (package-with-python2 python-sphinx-repoze-autointerface))
b31fbea5
DM
9329
9330(define-public python-psycopg2
9331 (package
9332 (name "python-psycopg2")
9333 (version "2.6.1")
9334 (source
9335 (origin
9336 (method url-fetch)
9337 (uri (pypi-uri "psycopg2" version))
9338 (sha256
9339 (base32
9340 "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva"))))
9341 (build-system python-build-system)
9342 (arguments
9343 ;; Tests would require a postgresql database "psycopg2_test"
9344 ;; and a running postgresql database management service.
9345 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
9346 (inputs
9347 `(("postgresql" ,postgresql))) ; libpq
9348 (home-page "http://initd.org/psycopg/")
9349 (synopsis "Python PostgreSQL adapter")
9350 (description
9351 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
3f641af0 9352 (license license:lgpl3+)
b31fbea5
DM
9353 (properties `((python2-variant . ,(delay python2-psycopg2))))))
9354
9355(define-public python2-psycopg2
9356 (package
9357 (inherit (package-with-python2
9358 (strip-python2-variant python-psycopg2)))
9359 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
eed1a61f
LF
9360
9361(define-public python-vobject
9362 (package
9363 (name "python-vobject")
9bed9b15 9364 (version "0.9.2")
eed1a61f
LF
9365 (source (origin
9366 (method url-fetch)
9367 (uri (pypi-uri "vobject" version))
9368 (sha256
9369 (base32
9bed9b15 9370 "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
eed1a61f
LF
9371 (build-system python-build-system)
9372 (inputs
9373 `(("python-dateutil-2" ,python-dateutil-2)
9374 ("python-pyicu" ,python-pyicu)))
9375 (synopsis "Parse and generate vCard and vCalendar files")
9376 (description "Vobject is intended to be a full featured Python package for
9377parsing and generating vCard and vCalendar files. Currently, iCalendar files
9378are supported and well tested. vCard 3.0 files are supported, and all data
9379should be imported, but only a few components are understood in a sophisticated
9380way.")
9381 (home-page "http://eventable.github.io/vobject/")
3f641af0 9382 (license license:asl2.0)
eed1a61f
LF
9383 (properties `((python2-variant . ,(delay python2-vobject))))))
9384
9385(define-public python2-vobject
9386 (package
9387 (inherit (package-with-python2
9388 (strip-python2-variant python-vobject)))
9389 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
cedac813
LF
9390
9391(define-public python-munkres
9392 (package
9393 (name "python-munkres")
9394 (version "1.0.7")
9395 (source (origin
9396 (method url-fetch)
9397 (uri (pypi-uri "munkres" version))
9398 (sha256
9399 (base32
9400 "1i6nf45i0kkzdx6k70giybsqxz4dxsjbrkrfqgjd7znfkf25sjik"))))
9401 (build-system python-build-system)
9402 (arguments
9403 '(#:tests? #f)) ; no test suite
9404 (home-page "http://software.clapper.org/munkres/")
9405 (synopsis "Implementation of the Munkres algorithm")
9406 (description "The Munkres module provides an implementation of the Munkres
9407algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
9408useful for solving the Assignment Problem.")
3f641af0 9409 (license license:bsd-3)))
cedac813
LF
9410
9411(define-public python2-munkres
9412 (package-with-python2 python-munkres))
f3b3d78f
LF
9413
9414(define-public python-flask
9415 (package
9416 (name "python-flask")
9417 (version "0.10.1")
9418 (source (origin
9419 (method url-fetch)
9420 (uri (pypi-uri "Flask" version))
9421 (sha256
9422 (base32
9423 "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc"))))
9424 (build-system python-build-system)
9425 (propagated-inputs
9426 `(("python-itsdangerous" ,python-itsdangerous)
9427 ("python-jinja2" ,python-jinja2)
9428 ("python-werkzeug" ,python-werkzeug)))
9429 (home-page "https://github.com/mitsuhiko/flask/")
9430 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
9431 (description "Flask is a micro web framework based on the Werkzeug toolkit
9432and Jinja2 template engine. It is called a micro framework because it does not
9433presume or force a developer to use a particular tool or library.")
3f641af0 9434 (license license:bsd-3)
f3b3d78f
LF
9435 (properties `((python2-variant . ,(delay python2-flask))))))
9436
9437(define-public python2-flask
9438 (package (inherit (package-with-python2
9439 (strip-python2-variant python-flask)))
9440 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
603d665b
LF
9441
9442(define-public python-cookies
9443 (package
9444 (name "python-cookies")
9445 (version "2.2.1")
9446 (source (origin
9447 (method url-fetch)
9448 (uri (pypi-uri "cookies" version))
9449 (sha256
9450 (base32
9451 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
9452 (build-system python-build-system)
9453 (arguments
9454 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
9455 #:tests? #f))
9456 (native-inputs
9457 `(("python-pytest" ,python2-pytest)))
9458 (synopsis "HTTP cookie parser and renderer")
9459 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
9460Python.")
9461 (home-page "https://gitlab.com/sashahart/cookies")
9462 (license license:expat)
9463 (properties `((python2-variant . ,(delay python2-cookies))))))
9464
9465(define-public python2-cookies
9466 (let ((cookies (package-with-python2
9467 (strip-python2-variant python-cookies))))
9468 (package (inherit cookies)
9469 (native-inputs `(("python2-setuptools" ,python2-setuptools)
9470 ,@(package-native-inputs cookies))))))
0efde7d6
LF
9471
9472(define-public python-responses
9473 (package
9474 (name "python-responses")
9475 (version "0.5.1")
9476 (source (origin
9477 (method url-fetch)
9478 (uri (pypi-uri "responses" version))
9479 (sha256
9480 (base32
9481 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
9482 (build-system python-build-system)
9483 (arguments
9484 `(;; Test suite is not distributed:
9485 ;; https://github.com/getsentry/responses/issues/38
9486 #:tests? #f))
9487 (native-inputs
9488 `(("python-cookies" ,python-cookies)
9489 ("python-mock" ,python-mock)))
9490 (propagated-inputs
9491 `(("python-requests" ,python-requests)
9492 ("python-six" ,python-six)))
9493 (home-page "https://github.com/getsentry/responses")
9494 (synopsis "Utility for mocking out the `requests` Python library")
9495 (description "A utility library for mocking out the `requests` Python
9496library.")
3f641af0 9497 (license license:asl2.0)
0efde7d6
LF
9498 (properties `((python2-variant . ,(delay python2-responses))))))
9499
9500(define-public python2-responses
9501 (let ((responses (package-with-python2
9502 (strip-python2-variant python-responses))))
9503 (package (inherit responses)
9504 (native-inputs `(("python2-setuptools" ,python2-setuptools)
9505 ,@(package-native-inputs responses))))))
76b94885 9506
b7afd018
RW
9507(define-public python-whoosh
9508 (package
9509 (name "python-whoosh")
9510 (version "2.7.4")
9511 (source
9512 (origin
9513 (method url-fetch)
9514 (uri (pypi-uri "Whoosh" version))
9515 (sha256
9516 (base32
9517 "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
9518 (build-system python-build-system)
9519 (native-inputs
9520 `(("python-setuptools" ,python-setuptools)
9521 ("python-pytest" ,python-pytest)))
9522 (home-page "http://bitbucket.org/mchaput/whoosh")
9523 (synopsis "Full text indexing, search, and spell checking library")
9524 (description
9525 "Whoosh is a fast, pure-Python full text indexing, search, and spell
9526checking library.")
9527 (license license:bsd-2)))
9528
9529(define-public python2-whoosh
9530 (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
9531 (package (inherit whoosh)
9532 (propagated-inputs
9533 `(("python2-backport-ssl-match-hostname"
9534 ,python2-backport-ssl-match-hostname)
9535 ,@(package-propagated-inputs whoosh))))))
9536
76b94885
LF
9537(define-public python-pathlib
9538 (package
9539 (name "python-pathlib")
9540 (version "1.0.1")
9541 (source (origin
9542 (method url-fetch)
9543 (uri (pypi-uri "pathlib" version))
9544 (sha256
9545 (base32
9546 "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
9547 (build-system python-build-system)
92a312dc
RW
9548 ;; The tests depend on the internal "test" module, which does not provide
9549 ;; a stable interface.
9550 (arguments `(#:tests? #f))
76b94885 9551 (home-page "https://pathlib.readthedocs.org/")
8f65585b
JD
9552 (synopsis "Object-oriented file system paths")
9553 (description "Pathlib offers a set of classes to handle file system paths.
76b94885
LF
9554It offers the following advantages over using string objects:
9555
9556@enumerate
9557@item No more cumbersome use of os and os.path functions. Everything can
9558be done easily through operators, attribute accesses, and method calls.
9559@item Embodies the semantics of different path types. For example,
9560comparing Windows paths ignores casing.
9561@item Well-defined semantics, eliminating any inconsistencies or
9562ambiguities (forward vs. backward slashes, etc.).
7a8894e8
HG
9563@end enumerate
9564
9565Note: In Python 3.4, pathlib is now part of the standard library. For other
9566Python versions please consider python-pathlib2 instead, which tracks the
9567standard library module. This module (python-pathlib) isn't maintained
9568anymore.")
76b94885
LF
9569 (license license:expat)))
9570
9571(define-public python2-pathlib
9572 (package-with-python2 python-pathlib))
25a7db0a 9573
b7703c81
HG
9574(define-public python2-pathlib2
9575 (package
9576 (name "python2-pathlib2")
9577 (version "2.1.0")
9578 (source (origin
9579 (method url-fetch)
9580 (uri (pypi-uri "pathlib2" version))
9581 (sha256
9582 (base32
9583 "0p050msg5c8d0kadv702jnfshaxrb0il765cpkgnhn6mq5hakcyy"))))
9584 (build-system python-build-system)
49a531f5
HG
9585 ;; We only need the the Python 2 variant, since for Python 3 our minimum
9586 ;; version is 3.4 which already includes this package as part of the
9587 ;; standard library.
b7703c81
HG
9588 (arguments
9589 `(#:python ,python-2))
9590 (native-inputs
9591 `(("python2-setuptools" ,python2-setuptools)
9592 ("python2-six" ,python2-six)))
9593 (home-page "http://pypi.python.org/pypi/pathlib2/")
9594 (synopsis "Object-oriented file system paths - backport of standard
9595pathlib module")
9596 (description "The goal of pathlib2 is to provide a backport of standard
9597pathlib module which tracks the standard library module, so all the newest
9598features of the standard pathlib can be used also on older Python versions.
9599
9600Pathlib offers a set of classes to handle file system paths. It offers the
9601following advantages over using string objects:
9602
9603@enumerate
9604@item No more cumbersome use of os and os.path functions. Everything can
9605be done easily through operators, attribute accesses, and method calls.
9606@item Embodies the semantics of different path types. For example,
9607comparing Windows paths ignores casing.
9608@item Well-defined semantics, eliminating any inconsistencies or
9609ambiguities (forward vs. backward slashes, etc.).
9610@end enumerate")
9611 (license license:expat)))
9612
25a7db0a
LF
9613(define-public python-jellyfish
9614 (package
9615 (name "python-jellyfish")
9616 (version "0.5.3")
9617 (source (origin
9618 (method url-fetch)
9619 (uri (pypi-uri "jellyfish" version))
9620 (sha256
9621 (base32
9622 "12bxh8cy9xmvyrjz7aw159nd5pyvb645rkvw4r6bvm4xbvs8gd07"))))
9623 (build-system python-build-system)
9624 (native-inputs
9625 `(("python-pytest" ,python-pytest)))
9626 (home-page "https://github.com/jamesturk/jellyfish")
9627 (synopsis "Approximate and phonetic matching of strings")
9628 (description "Jellyfish uses a variety of string comparison and phonetic
9629encoding algorithms to do fuzzy string matching.")
3f641af0 9630 (license license:bsd-2)
25a7db0a
LF
9631 (properties `((python2-variant . ,(delay python2-jellyfish))))))
9632
9633(define-public python2-jellyfish
9634 (let ((jellyfish (package-with-python2
9635 (strip-python2-variant python-jellyfish))))
9636 (package (inherit jellyfish)
9637 (native-inputs `(("python2-setuptools" ,python2-setuptools)
9638 ("python2-unicodecsv" ,python2-unicodecsv)
9639 ,@(package-native-inputs jellyfish))))))
13edb0e5
LF
9640
9641(define-public python2-unicodecsv
9642 (package
9643 (name "python2-unicodecsv")
9644 (version "0.14.1")
9645 (source (origin
9646 (method url-fetch)
9647 ;; The test suite is not included in the PyPi release.
9648 ;; https://github.com/jdunck/python-unicodecsv/issues/19
9649 (uri (string-append "https://github.com/jdunck/python-unicodecsv/"
9650 "archive/" version ".tar.gz"))
9651 (file-name (string-append name "-" version ".tar.gz"))
9652 (sha256
9653 (base32
9654 "087nqanfcyp6mlfbbr5lva5f3w6iz1bybls9xlrb8icmc474wh4w"))))
9655 (build-system python-build-system)
9656 (arguments
9657 `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
9658 #:python ,python-2))
9659 (native-inputs
9660 `(("python2-setuptools" ,python2-setuptools)
9661 ("python2-unittest2" ,python2-unittest2)))
9662 (home-page "https://github.com/jdunck/python-unicodecsv")
9663 (synopsis "Unicode CSV module for Python 2")
9664 (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
9665module, adding support for Unicode strings.")
3f641af0 9666 (license license:bsd-2)))
064503aa
LF
9667
9668(define-public python-rarfile
9669 (package
9670 (name "python-rarfile")
9671 (version "2.7")
9672 (source (origin
9673 (method url-fetch)
9674 (uri (pypi-uri "rarfile" version))
9675 (sha256
9676 (base32
9677 "0d8n1dlpiz7av8dmbp0vclrwl9cnxizr4f2c9xvj1h5nvn480527"))
9678 ;; https://github.com/markokr/rarfile/pull/17/
fc1adab1 9679 (patches (search-patches "python-rarfile-fix-tests.patch"))))
064503aa
LF
9680 (build-system python-build-system)
9681 (arguments
9682 '(#:phases
9683 (modify-phases %standard-phases
9684 (replace 'check
9685 ;; Many tests fail, but the installation proceeds.
9686 (lambda _ (zero? (system* "make" "-C" "test" "test")))))))
9687 (native-inputs
9688 `(("which" ,which))) ; required for tests
9689 (propagated-inputs
9690 `(("libarchive" ,libarchive)))
9691 (home-page "https://github.com/markokr/rarfile")
9692 (synopsis "RAR archive reader for Python")
9693 (description "This is Python module for RAR archive reading. The interface
9694is made as zipfile like as possible.")
3f641af0 9695 (license license:isc)))
064503aa
LF
9696
9697(define-public python2-rarfile
9698 (package-with-python2 python-rarfile))
daeeea71
CM
9699
9700(define-public python-magic
9701 (package
9702 (name "python-magic")
9703 (version "0.4.3")
9704 (source
9705 (origin
9706 (method url-fetch)
9707 (uri (string-append "https://github.com/ahupp/python-magic/archive/"
9708 version ".tar.gz"))
9709 (sha256
9710 (base32
9711 "17bgy92i7sb021f2s4mw1dcvpm6p1mi9jihridwy1pyn8mzvpjgk"))
9712 (file-name (string-append name "-" version "-checkout"))))
9713 (build-system python-build-system)
9714 (arguments
9715 ;; The tests are unreliable, so don't run them. The tests fail
9716 ;; under Python3 because they were written for Python2 and
9717 ;; contain import statements that do not work in Python3. One of
9718 ;; the tests fails under Python2 because its assertions are
9719 ;; overly stringent; it relies on comparing output strings which
9720 ;; are brittle and can change depending on the version of
9721 ;; libmagic being used and the system on which the test is
9722 ;; running. In my case, under GuixSD 0.10.0, only one test
9723 ;; failed, and it seems to have failed only because the version
9724 ;; of libmagic that is packaged in Guix outputs a slightly
9725 ;; different (but not wrong) string than the one that the test
9726 ;; expected.
9727 '(#:tests? #f
9728 #:phases (modify-phases %standard-phases
9729 ;; Replace a specific method call with a hard-coded
9730 ;; path to the necessary libmagic.so file in the
9731 ;; store. If we don't do this, then the method call
9732 ;; will fail to find the libmagic.so file, which in
9733 ;; turn will cause any application using
9734 ;; python-magic to fail.
9735 (add-before 'build 'hard-code-path-to-libmagic
9736 (lambda* (#:key inputs #:allow-other-keys)
9737 (let ((file (assoc-ref inputs "file")))
9738 (substitute* "magic.py"
9739 (("ctypes.util.find_library\\('magic'\\)")
9740 (string-append "'" file "/lib/libmagic.so'")))
77432686
LF
9741 #t)))
9742 (add-before 'install 'disable-egg-compression
9743 (lambda _
9744 (let ((port (open-file "setup.cfg" "a")))
9745 (display "\n[easy_install]\nzip_ok = 0\n"
9746 port)
9747 (close-port port)
9748 #t))))))
daeeea71
CM
9749 (native-inputs
9750 `(("python-setuptools" ,python-setuptools)))
9751 (inputs
9752 ;; python-magic needs to be able to find libmagic.so.
9753 `(("file" ,file)))
9754 (home-page "https://github.com/ahupp/python-magic")
9755 (synopsis "File type identification using libmagic")
9756 (description
9757 "This module uses ctypes to access the libmagic file type
9758identification library. It makes use of the local magic database and
9759supports both textual and MIME-type output. Note that this module and
9760the python-file module both provide a \"magic.py\" file; these two
9761modules, which are different and were developed separately, both serve
9762the same purpose: to provide Python bindings for libmagic.")
9763 (license license:expat)))
9764
9765(define-public python2-magic
9766 (package-with-python2 python-magic))
12af303f
CM
9767
9768(define-public python2-s3cmd
9769 (package
9770 (name "python2-s3cmd")
9771 (version "1.6.1")
9772 (source
9773 (origin
9774 (method url-fetch)
de67e922 9775 (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
12af303f
CM
9776 "s3cmd-" version ".tar.gz"))
9777 (sha256
9778 (base32
9779 "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
9780 (build-system python-build-system)
9781 (arguments
9782 ;; s3cmd is written for python2 only and contains no tests.
9783 `(#:python ,python-2
9784 #:tests? #f))
9785 (native-inputs
9786 `(("python2-setuptools" ,python2-setuptools)))
9787 (inputs
9788 `(("python2-dateutil" ,python2-dateutil)
9789 ;; The python-file package also provides a magic.py module.
9790 ;; This is an unfortunate state of affairs; however, s3cmd
9791 ;; fails to install if it cannot find specifically the
9792 ;; python-magic package. Thus we include it, instead of using
9793 ;; python-file. Ironically, s3cmd sometimes works better
9794 ;; without libmagic bindings at all:
9795 ;; https://github.com/s3tools/s3cmd/issues/198
9796 ("python2-magic" ,python2-magic)))
9797 (home-page "http://s3tools.org/s3cmd")
9798 (synopsis "Command line tool for S3-compatible storage services")
9799 (description
9800 "S3cmd is a command line tool for uploading, retrieving and managing data
9801in storage services that are compatible with the Amazon Simple Storage
9802Service (S3) protocol, including S3 itself. It supports rsync-like backup,
9803GnuPG encryption, and more. It also supports management of Amazon's
9804CloudFront content delivery network.")
3f641af0 9805 (license license:gpl2+)))
4323a5f0
AE
9806
9807(define-public python-pkgconfig
9808 (package
9809 (name "python-pkgconfig")
9810 (version "1.1.0")
9811 (source
9812 (origin
9813 (method url-fetch)
9814 (uri (pypi-uri "pkgconfig" version))
9815 (sha256
9816 (base32
9817 "1pw0kmvc57sjmaxi6c54fqsnihqj6hvhc9y1vaz36axafzqam7bh"))))
9818 (build-system python-build-system)
9819 (native-inputs
9820 `(("python-nose" ,python-nose)
9821 ("python-setuptools" ,python-setuptools)))
9822 (inputs
9823 `(("pkg-config" ,pkg-config)))
9824 (arguments
9825 `(;; Tests fail with "ValueError: _type_ 'v' not supported" on Python 3,
9826 ;; and on Python 2 they need the dl module deprecated since Python 2.6.
9827 #:tests? #f
9828 ;; Prevent creation of the egg. This works around
9829 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
9830 #:configure-flags '("--single-version-externally-managed" "--root=/")
9831 ;; Hard-code the path to pkg-config.
9832 #:phases
9833 (modify-phases %standard-phases
9834 (add-before
9835 'build 'patch
9836 (lambda _
9837 (substitute* "pkgconfig/pkgconfig.py"
9838 (("cmd = 'pkg-config")
9839 (string-append "cmd = '" (which "pkg-config"))))
9840 #t)))))
9841 (home-page "http://github.com/matze/pkgconfig")
9842 (synopsis "Python interface for pkg-config")
9843 (description "This module provides a Python interface to pkg-config. It
9844can be used to find all pkg-config packages, check if a package exists,
9845check if a package meets certain version requirements, query CFLAGS and
9846LDFLAGS and parse the output to build extensions with setup.py.")
a0c6a36b 9847 (license license:expat)))
4323a5f0
AE
9848
9849(define-public python2-pkgconfig
9850 (package-with-python2 python-pkgconfig))
9851
2e697322
BW
9852(define-public python-bz2file
9853 (package
9854 (name "python-bz2file")
9855 (version "0.98")
9856 (source
9857 (origin
9858 (method url-fetch)
9859 (uri (pypi-uri "bz2file" version))
9860 (sha256
9861 (base32
9862 "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
9863 (build-system python-build-system)
9864 (arguments
124df723 9865 `(#:tests? #f)) ; Tests use deprecated python modules.
2e697322
BW
9866 (home-page "https://github.com/nvawda/bz2file")
9867 (synopsis "Read and write bzip2-compressed files")
9868 (description
9869 "Bz2file is a Python library for reading and writing bzip2-compressed
9870files. It contains a drop-in replacement for the I/O interface in the
9871standard library's @code{bz2} module, including features from the latest
9872development version of CPython that are not available in older releases.")
3f641af0 9873 (license license:asl2.0)
2e697322
BW
9874 (properties `((python2-variant . ,(delay python2-bz2file))))))
9875
9876(define-public python2-bz2file
9877 (let ((base (package-with-python2
9878 (strip-python2-variant python-bz2file))))
9879 (package
9880 (inherit base)
9881 (native-inputs
124df723
BW
9882 `(("python2-setuptools" ,python2-setuptools)))
9883 (arguments
752bb447
BW
9884 `(#:python ,python-2
9885 #:phases
124df723
BW
9886 (modify-phases %standard-phases
9887 ;; 'python setup.py test' does not work as of 0.98.
9888 ;; There is only the one test file, so we run it directly.
9889 (replace 'check
9890 (lambda _ (zero? (system* "python"
9891 "test_bz2file.py"))))))))))
2e697322 9892
da4ac1aa
BW
9893(define-public python-future
9894 (package
9895 (name "python-future")
9896 (version "0.15.2")
9897 (source
9898 (origin
9899 (method url-fetch)
9900 (uri (pypi-uri "future" version))
9901 (sha256
9902 (base32
9903 "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx"))))
9904 (build-system python-build-system)
9905 ;; Many tests connect to the network or are otherwise flawed.
9906 ;; https://github.com/PythonCharmers/python-future/issues/210
9907 (arguments
9908 `(#:tests? #f))
9909 (home-page "http://python-future.org")
9910 (synopsis "Single-source support for Python 3 and 2")
9911 (description
9912 "@code{python-future} is the missing compatibility layer between Python 2 and
9913Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
9914to support both Python 2 and Python 3 with minimal overhead.")
9915 (license license:expat)
9916 (properties `((python2-variant . ,(delay python2-future))))))
9917
9918(define-public python2-future
9919 (let ((base (package-with-python2
9920 (strip-python2-variant python-future))))
9921 (package
9922 (inherit base)
9923 (native-inputs `(("python2-setuptools" ,python2-setuptools))))))
9924
8e451885
AE
9925(define-public python-cysignals
9926 (package
9927 (name "python-cysignals")
9928 (version "1.1.0")
9929 (source
9930 (origin
9931 (method url-fetch)
9932 (uri (pypi-uri "cysignals" version ".tar.bz2"))
9933 (sha256
9934 (base32
9935 "14cbyd9znlz6cxy1s3g6v6dv5jj45hn27pywkidd9b1zanaysqc6"))))
9936 (build-system python-build-system)
9937 (native-inputs
9938 `(("python-cython" ,python-cython)
9939 ("python-setuptools" ,python-setuptools)
9940 ("python-sphinx" ,python-sphinx)))
9941 (inputs
9942 `(("pari-gp" ,pari-gp)))
9943 (arguments
9944 `(#:modules ((guix build python-build-system)
9945 ((guix build gnu-build-system) #:prefix gnu:)
9946 (guix build utils))
9947 ;; FIXME: Tests are executed after installation and currently fail
9948 ;; when not installing into standard locations; the author is working
9949 ;; on a fix.
9950 #:tests? #f
9951 #:phases
9952 (modify-phases %standard-phases
9953 (add-before
9954 'build 'configure
9955 (assoc-ref gnu:%standard-phases 'configure)))))
9956 (home-page
9957 "https://github.com/sagemath/cysignals")
9958 (synopsis
9959 "Handling of interrupts and signals for Cython")
9960 (description
9961 "The cysignals package provides mechanisms to handle interrupts (and
9962other signals and errors) in Cython code, using two related approaches,
9963for mixed Cython/Python code or external C libraries and pure Cython code,
9964respectively.")
3f641af0 9965 (license license:lgpl3+)))
8e451885
AE
9966
9967(define-public python2-cysignals
9968 (package-with-python2 python-cysignals))
9969
63bcec71
DM
9970(define-public python2-shedskin
9971 (package
9972 (name "python2-shedskin")
9973 (version "0.9.4")
9974 (source
9975 (origin
9976 (method url-fetch)
9977 (uri (string-append "https://github.com/shedskin/shedskin/"
9978 "releases/download/v" version
9979 "/shedskin-" version ".tgz"))
9980 (sha256
9981 (base32
9982 "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
9983 (build-system python-build-system)
9984 (arguments
9985 `(#:python ,python-2
9986 #:phases (modify-phases %standard-phases
9987 (add-after 'unpack 'fix-resulting-include-libs
9988 (lambda* (#:key inputs #:allow-other-keys)
9989 (let ((libgc (assoc-ref inputs "libgc"))
9990 (pcre (assoc-ref inputs "pcre")))
9991 (substitute* "shedskin/makefile.py"
9992 (("variable == 'CCFLAGS':[ ]*")
9993 (string-append "variable == 'CCFLAGS':\n"
9994 " line += ' -I " pcre "/include"
9995 " -I " libgc "/include'"))
9996 (("variable == 'LFLAGS':[ ]*")
9997 (string-append "variable == 'LFLAGS':\n"
9998 " line += ' -L" pcre "/lib"
9999 " -L " libgc "/lib'")))
10000 #t))))))
10001 (native-inputs `(("python2-setuptools" ,python2-setuptools)))
10002 (inputs `(("pcre" ,pcre)
10003 ("libgc" ,libgc)))
10004 (home-page "https://shedskin.github.io/")
10005 (synopsis "Experimental Python-2 to C++ Compiler")
10006 (description (string-append "This is an experimental compiler for a subset of
10007Python. It generates C++ code and a Makefile."))
3f641af0 10008 (license (list license:gpl3 license:bsd-3 license:expat))))
88bb4197
LG
10009
10010(define-public python2-rope
10011 (package
10012 (name "python2-rope")
10013 (version "0.10.3")
10014 (source
10015 (origin
10016 (method url-fetch)
10017 (uri (pypi-uri "rope" version))
10018 (sha256
10019 (base32
10020 "18k5znhpwvrfck3yp0jmhd5j8r0f0s8bk1zh5yhs2cfgmfhbwigb"))))
10021 (arguments
10022 ;; Rope is currently python-2 only.
10023 ;; https://github.com/python-rope/rope/issues/57
10024 `(#:python ,python-2))
10025 (build-system python-build-system)
10026 (native-inputs
10027 `(("python2-unittest2" ,python2-unittest2)
10028 ("python2-setuptools" ,python2-setuptools)))
10029 (home-page "https://github.com/python-rope/rope")
10030 (synopsis "Refactoring library for Python")
10031 (description "Rope is a refactoring library for Python. It facilitates
10032the renaming, moving and extracting of attributes, functions, modules, fields
10033and parameters in Python 2 source code. These refactorings can also be applied
10034to occurences in strings and comments.")
3f641af0 10035 (license license:gpl2)))
6ba8ca17
10036
10037(define-public python-py3status
10038 (package
10039 (name "python-py3status")
d2262d70 10040 (version "3.1")
6ba8ca17
10041 (source
10042 (origin
10043 (method url-fetch)
10044 (uri (pypi-uri "py3status" version))
10045 (sha256
10046 (base32
d2262d70 10047 "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
6ba8ca17
10048 (build-system python-build-system)
10049 (native-inputs
10050 `(("python-setuptools" ,python-setuptools)))
10051 (home-page "https://github.com/ultrabug/py3status")
10052 (synopsis "Extensible i3status wrapper written in Python")
10053 (description "py3status is an i3status wrapper which extends i3status
10054functionality in a modular way, allowing you to extend your panel with your
10055own code, responding to click events and updating clock every second.")
3f641af0 10056 (license license:bsd-3)))
b8fdbca3
HG
10057
10058(define-public python-tblib
10059 (package
10060 (name "python-tblib")
10061 (version "1.3.0")
10062 (source (origin
10063 (method url-fetch)
10064 (uri (pypi-uri "tblib" version))
10065 (sha256 (base32
10066 "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
10067 (build-system python-build-system)
10068 (arguments
10069 `(#:phases
10070 (modify-phases %standard-phases
10071 (replace 'check
10072 (lambda _
10073 ;; Upstream runs tests after installation and the package itself
10074 ;; resides in a subdirectory. Extend PYTHONPATH so it will be
10075 ;; found.
10076 (setenv "PYTHONPATH"
10077 (string-append (getcwd) "/build/lib:"
10078 (getenv "PYTHONPATH")))
10079 (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
10080 (native-inputs
10081 `(("python-pytest" ,python-pytest)
10082 ("python-setuptools" ,python-setuptools)
10083 ("python-six" ,python-six)))
10084 (home-page "https://github.com/ionelmc/python-tblib")
10085 (synopsis "Traceback serialization library")
10086 (description
10087 "Traceback serialization allows you to:
10088
10089@enumerate
10090@item Pickle tracebacks and raise exceptions with pickled tracebacks in
10091different processes. This allows better error handling when running code over
10092multiple processes (imagine multiprocessing, billiard, futures, celery etc).
10093
10094@item Parse traceback strings and raise with the parsed tracebacks.
10095@end itemize")
3f641af0 10096 (license license:bsd-3)))
b8fdbca3
HG
10097
10098(define-public python2-tblib
10099 (package-with-python2 python-tblib))
1a024de4
HG
10100
10101(define-public python-sqlparse
10102 (package
10103 (name "python-sqlparse")
10104 (version "0.1.19")
10105 (source (origin
10106 (method url-fetch)
10107 (uri (pypi-uri "sqlparse" version))
10108 (sha256
10109 (base32
10110 "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
10111 (build-system python-build-system)
10112 (arguments
10113 `(#:phases
10114 (modify-phases %standard-phases
10115 (replace 'check
10116 (lambda* _
10117 ;; setup.py-integrated 2to3 only affects the build files, but
10118 ;; py.test is using the source files. So we need to convert them
10119 ;; manually.
10120 (when (zero? (system* "python3"))
10121 (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
10122 (zero? (system* "py.test")))))))
10123 (native-inputs
10124 `(("python-pytest" ,python-pytest)
10125 ("python-setuptools" ,python-setuptools)))
10126 (home-page "https://github.com/andialbrecht/sqlparse")
10127 (synopsis "Non-validating SQL parser")
10128 (description "Sqlparse is a non-validating SQL parser for Python. It
10129provides support for parsing, splitting and formatting SQL statements.")
3f641af0 10130 (license license:bsd-3)))
1a024de4
HG
10131
10132(define-public python2-sqlparse
10133 (package-with-python2 python-sqlparse))
68b9d242
SB
10134
10135(define-public python-greenlet
10136 (package
10137 (name "python-greenlet")
10138 (version "0.4.9")
10139 (source (origin
10140 (method url-fetch)
10141 (uri (pypi-uri "greenlet" version))
10142 (sha256
10143 (base32
10144 "04h0m54dyqg49vyarq26mry6kbivnpl47rnmmrk9qn8wpfxviybr"))))
10145 (build-system python-build-system)
10146 (native-inputs
10147 `(("python-setuptools" ,python-setuptools)))
10148 (home-page "https://greenlet.readthedocs.io/")
10149 (synopsis "Lightweight in-process concurrent programming")
10150 (description
10151 "Greenlet package is a spin-off of Stackless, a version of CPython
10152that supports micro-threads called \"tasklets\". Tasklets run
10153pseudo-concurrently (typically in a single or a few OS-level threads) and
10154are synchronized with data exchanges on \"channels\".")
3f641af0 10155 (license (list license:psfl license:expat))))
68b9d242
SB
10156
10157(define-public python2-greenlet
10158 (package-with-python2 python-greenlet))
d79a343b
SB
10159
10160(define-public python-gevent
10161 (package
10162 (name "python-gevent")
10163 (version "1.1.1")
10164 (source (origin
10165 (method url-fetch)
10166 (uri (pypi-uri "gevent" version))
10167 (sha256
10168 (base32
10169 "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
10170 (modules '((guix build utils)))
10171 (snippet
10172 '(begin
10173 ;; unbunding libev and c-ares
10174 (for-each delete-file-recursively '("libev" "c-ares"))
10175 ;; fixing testsuite
10176 (call-with-output-file "greentest/__init__.py" noop)
10177 (substitute* "greentest/testrunner.py"
10178 (("import util") "from . import util")
10179 (("from util import log") "from .util import log"))))))
10180 (build-system python-build-system)
10181 (propagated-inputs
10182 `(("python-greenlet" ,python-greenlet)))
10183 (native-inputs
10184 `(("python-setuptools" ,python-setuptools)
10185 ("python-six" ,python-six)))
10186 (inputs
10187 `(("c-ares" ,c-ares)
10188 ("libev" ,libev)))
10189 (home-page "http://www.gevent.org/")
10190 (synopsis "Coroutine-based network library")
10191 (description
10192 "gevent is a coroutine-based Python networking library that uses greenlet
10193to provide a high-level synchronous API on top of the libev event loop.")
10194 (license license:expat)))
10195
10196(define-public python2-gevent
10197 (package-with-python2 python-gevent))
da3aeeb6
SB
10198
10199(define-public python-twisted
10200 (package
10201 (name "python-twisted")
10202 (version "16.2.0")
10203 (source (origin
10204 (method url-fetch)
8ea8e8d3 10205 (uri (pypi-uri "Twisted" version ".tar.bz2"))
da3aeeb6
SB
10206 (sha256
10207 (base32
10208 "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
10209 (build-system python-build-system)
10210 (native-inputs
45912170
SB
10211 `(("python-setuptools" ,python-setuptools)))
10212 (propagated-inputs
10213 `(("python-zope-interface" ,python-zope-interface)))
da3aeeb6
SB
10214 (home-page "https://twistedmatrix.com/")
10215 (synopsis "Asynchronous networking framework written in Python")
10216 (description
10217 "Twisted is an extensible framework for Python programming, with special
10218focus on event-based network programming and multiprotocol integration.")
10219 (license license:expat)))
10220
10221(define-public python2-twisted
10222 (package-with-python2 python-twisted))
d0b6fed6 10223
4d3fa5a4
EF
10224(define-public python-pika
10225 (package
10226 (name "python-pika")
10227 (version "0.10.0")
10228 (source
10229 (origin
10230 (method url-fetch)
10231 (uri (pypi-uri "pika" version))
10232 (sha256
10233 (base32
10234 "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj"))))
10235 (build-system python-build-system)
10236 (native-inputs
269d9172
LF
10237 `(("python-pyev" ,python-pyev)
10238 ("python-tornado" ,python-tornado)
10239 ("python-twisted" ,python-twisted)))
4d3fa5a4
EF
10240 (home-page "https://pika.readthedocs.org")
10241 (synopsis "Pure Python AMQP Client Library")
10242 (description
10243 "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
10244Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
10245network support library.")
10246 (license license:bsd-3)))
10247
10248(define-public python2-pika
10249 (package-with-python2 python-pika))
10250
d0b6fed6
DM
10251(define-public python-ply
10252 (package
10253 (name "python-ply")
10254 (version "3.8")
10255 (source
10256 (origin
10257 (method url-fetch)
10258 (uri (string-append
10259 "https://pypi.python.org/packages/"
10260 "96/e0/430fcdb6b3ef1ae534d231397bee7e9304be14a47a267e82ebcb3323d0b5"
10261 "/ply-" version ".tar.gz"))
10262 (sha256
10263 (base32
10264 "1f70ipynmiy09k6px2j7v4w5cdrc21za3xs2k6f1bsvb0bzvvlg7"))))
10265 (build-system python-build-system)
10266 (home-page "http://www.dabeaz.com/ply/")
10267 (synopsis "Python Lex & Yacc")
10268 (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
10269It uses LR parsing and does extensive error checking.")
3f641af0 10270 (license license:bsd-3)
d0b6fed6
DM
10271 (properties `((python2-variant . ,(delay python2-ply))))))
10272
10273(define-public python2-ply
10274 (package
10275 (inherit (package-with-python2
10276 (strip-python2-variant python-ply)))
10277 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
d951bd54
SB
10278
10279(define-public python-tabulate
10280 (package
10281 (name "python-tabulate")
10282 (version "0.7.5")
10283 (source (origin
10284 (method url-fetch)
10285 (uri (pypi-uri "tabulate" version))
10286 (sha256
10287 (base32
10288 "03l1r7ddd1a0j2snv1yd0hlnghjad3fg1an1jr8936ksv75slwch"))
10289 ;; Fix tests
10290 (modules '((guix build utils)))
10291 (snippet '(substitute* '("test/test_cli.py"
10292 "test/test_input.py"
10293 "test/test_output.py"
10294 "test/test_regression.py")
10295 (("from common") "from nose.tools")))))
10296 (build-system python-build-system)
10297 (native-inputs
10298 `(("python-setuptools" ,python-setuptools)
10299 ;; For testing
10300 ("python-nose" ,python-nose)))
10301 (home-page "https://bitbucket.org/astanin/python-tabulate")
10302 (synopsis "Pretty-print tabular data")
10303 (description
10304 "Tabulate is a library and command-line utility to pretty-print tabular
10305data in Python.")
10306 (license license:expat)))
10307
10308(define-public python2-tabulate
10309 (package-with-python2 python-tabulate))
1c4c8a33
SB
10310
10311(define-public python-kazoo
10312 (package
10313 (name "python-kazoo")
10314 (version "2.2.1")
10315 (source
10316 (origin
10317 (method url-fetch)
10318 (uri (pypi-uri "kazoo" version))
10319 (sha256
10320 (base32
10321 "10pb864if9qi2pq9lfb9m8f7z7ss6rml80gf1d9h64lap5crjnjj"))))
10322 (build-system python-build-system)
10323 (arguments '(#:tests? #f)) ; XXX: needs zookeeper
10324 (native-inputs
c18899e8
SB
10325 `(("python-setuptools" ,python-setuptools)))
10326 (propagated-inputs
10327 `(("python-six" ,python-six)))
1c4c8a33
SB
10328 (home-page "https://kazoo.readthedocs.org")
10329 (synopsis "High-level Zookeeper client library")
10330 (description
10331 "Kazoo is a Python client library for the Apache Zookeeper distributed
10332application service. It is designed to be easy to use and to avoid common
10333programming errors.")
3f641af0 10334 (license license:asl2.0)))
1c4c8a33
SB
10335
10336(define-public python2-kazoo
10337 (package-with-python2 python-kazoo))
45dda35e
SB
10338
10339(define-public python-pykafka
10340 (package
10341 (name "python-pykafka")
10342 (version "2.4.0")
10343 (source (origin
10344 (method url-fetch)
c6bccf71
EF
10345 (uri (string-append
10346 "https://pypi.python.org/packages/8b/3e/"
10347 "384eeff406b06315738b62483fd2126c6e4f544167116b17cc04ea7d2a59/"
10348 "pykafka-" version ".tar.gz"))
45dda35e
SB
10349 (sha256
10350 (base32
10351 "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
10352 (build-system python-build-system)
10353 (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
10354 (native-inputs
c8fa3d9b
SB
10355 `(("python-setuptools" ,python-setuptools)))
10356 (propagated-inputs
45dda35e
SB
10357 `(("python-gevent" ,python-gevent)
10358 ("python-kazoo" ,python-kazoo)
45dda35e
SB
10359 ("python-tabulate" ,python-tabulate)))
10360 (inputs
10361 `(("librdkafka" ,librdkafka)))
10362 (home-page "https://pykafka.readthedocs.io/")
10363 (synopsis "Apache Kafka client for Python")
10364 (description
10365 "PyKafka is a client for the Apache Kafka distributed messaging system.
10366It includes Python implementations of Kafka producers and consumers, which
10367are optionally backed by a C extension built on librdkafka.")
3f641af0 10368 (license license:asl2.0)))
45dda35e
SB
10369
10370(define-public python2-pykafka
10371 (package-with-python2 python-pykafka))
a44fd439
DM
10372
10373(define-public python-wcwidth
10374 (package
10375 (name "python-wcwidth")
10376 (version "0.1.6")
10377 (source
10378 (origin
10379 (method url-fetch)
10380 (uri (string-append
10381 "https://pypi.python.org/packages/"
10382 "c2/d1/7689293086a8d5320025080cde0e3155b94ae0a7496fb89a3fbaa92c354a/"
10383 "wcwidth-" version ".tar.gz"))
10384 (sha256
10385 (base32
10386 "02wjrpf001gjdjsaxxbzcwfg19crlk2dbddayrfc2v06f53yrcyw"))))
10387 (build-system python-build-system)
10388 (home-page "https://github.com/jquast/wcwidth")
66e07664 10389 (synopsis "Measure number of terminal column cells of wide-character codes")
a44fd439
DM
10390 (description "Wcwidth measures the number of terminal column cells of
10391wide-character codes. It is useful for those implementing a terminal emulator,
10392or programs that carefully produce output to be interpreted by one. It is a
10393Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
10394specified in POSIX.1-2001 and POSIX.1-2008.")
e4875826
LF
10395 (license license:expat)
10396 (properties `((python2-variant . ,(delay python2-wcwidth))))))
a44fd439
DM
10397
10398(define-public python2-wcwidth
10399 (package
10400 (inherit (package-with-python2
10401 (strip-python2-variant python-wcwidth)))
10402 (native-inputs `(("python2-setuptools" ,python2-setuptools)))))
0de78c95
DP
10403
10404(define-public python2-jsonrpclib
10405 (package
10406 (name "python2-jsonrpclib")
10407 (version "0.1.7")
10408 (source (origin
10409 (method url-fetch)
10410 (uri (string-append
10411 "https://pypi.python.org/packages/source/j/jsonrpclib/"
10412 "jsonrpclib-" version ".tar.gz"))
10413 (sha256
10414 (base32
10415 "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
10416 (build-system python-build-system)
10417 (native-inputs
10418 `(("python2-setuptools" ,python2-setuptools)))
10419 (arguments
10420 `(#:tests? #f
10421 #:python ,python-2))
10422 (home-page "https://github.com/joshmarshall/jsonrpclib/")
10423 (synopsis "Implementation of JSON-RPC specification for Python")
10424 (description
10425 "This library is an implementation of the JSON-RPC specification.
10426It supports both the original 1.0 specification, as well as the
10427new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
10428etc.")
3f641af0 10429 (license license:asl2.0)))
9250b0f3
SB
10430
10431(define-public python-chai
10432 (package
10433 (name "python-chai")
10434 (version "1.1.1")
10435 (source (origin
10436 (method url-fetch)
10437 (uri (pypi-uri "chai" version))
10438 (sha256
10439 (base32
10440 "016kf3irrclpkpvcm7q0gmkfibq7jgy30a9v73pp42bq9h9a32bl"))))
10441 (build-system python-build-system)
10442 (native-inputs
10443 `(("python-setuptools" ,python-setuptools)))
10444 (home-page "https://github.com/agoragames/chai")
10445 (synopsis "Mocking framework for Python")
10446 (description
10447 "Chai provides an api for mocking, stubbing and spying your python
10448objects, patterned after the Mocha library for Ruby.")
3f641af0 10449 (license license:bsd-3)))
9250b0f3
SB
10450
10451(define-public python2-chai
10452 (package-with-python2 python-chai))
10453
ae43baa8
SB
10454(define-public python-arrow
10455 (package
10456 (name "python-arrow")
10457 (version "0.8.0")
10458 (source (origin
10459 (method url-fetch)
10460 (uri (pypi-uri "arrow" version))
10461 (sha256
10462 (base32
10463 "1bz7hkdgpqcjs866y58z8jywpy7al0f4rxdr00bh2l5qddyw245j"))))
10464 (build-system python-build-system)
10465 (native-inputs
10466 `(("python-setuptools" ,python-setuptools)
ae43baa8
SB
10467 ;; For testing
10468 ("python-chai" ,python-chai)
10469 ("python-simplejson" ,python-simplejson)))
36aed736
SB
10470 (propagated-inputs
10471 `(("python-dateutil" ,python-dateutil-2)))
ae43baa8
SB
10472 (home-page "https://github.com/crsmithdev/arrow/")
10473 (synopsis "Dates and times for Python")
10474 (description
10475 "Arrow is a Python library to creating, manipulating, formatting and
10476converting dates, times, and timestamps. It implements and updates the
10477datetime type.")
3f641af0 10478 (license license:asl2.0)))
ae43baa8
SB
10479
10480(define-public python2-arrow
10481 (package-with-python2 python-arrow))
10482
1f2b62a4
SB
10483(define-public python-inflection
10484 (package
10485 (name "python-inflection")
10486 (version "0.3.1")
10487 (source
10488 (origin (method url-fetch)
10489 (uri (pypi-uri "inflection" version))
10490 (sha256
10491 (base32
10492 "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
10493 (build-system python-build-system)
10494 (native-inputs
10495 `(("python-setuptools" ,python-setuptools)))
10496 (home-page "http://github.com/jpvanhal/inflection")
10497 (synopsis "Python string transformation library")
10498 (description
10499 "Inflection is a string transformation library. It singularizes
10500and pluralizes English words, and transforms strings from CamelCase to
10501underscored string.")
10502 (license license:expat)))
10503
10504(define-public python2-inflection
10505 (package-with-python2 python-inflection))
10506
18995566
SB
10507(define-public python-pylev
10508 (package
10509 (name "python-pylev")
10510 (version "1.3.0")
10511 (source (origin
10512 (method url-fetch)
10513 (uri (pypi-uri "pylev" version))
10514 (sha256
10515 (base32
10516 "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
10517 (build-system python-build-system)
10518 (native-inputs
10519 `(("python-setuptools" ,python-setuptools)))
10520 (home-page "http://github.com/toastdriven/pylev")
10521 (synopsis "Levenshtein distance implementation in Python")
10522 (description "Pure Python Levenshtein implementation, based off the
10523Wikipedia code samples at
10524@url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
3f641af0 10525 (license license:bsd-3)))
18995566
SB
10526
10527(define-public python2-pylev
10528 (package-with-python2 python-pylev))
10529
f5deff7a
SB
10530(define-public python-cleo
10531 (package
10532 (name "python-cleo")
10533 (version "0.4.1")
10534 (source (origin
10535 (method url-fetch)
10536 (uri (pypi-uri "cleo" version))
10537 (sha256
10538 (base32
10539 "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva"))))
10540 (build-system python-build-system)
10541 (native-inputs
9403150a 10542 `(("python-setuptools" ,python-setuptools)
f5deff7a
SB
10543 ;; For testing
10544 ("python-mock" ,python-mock)
10545 ("python-pytest" ,python-pytest)))
9403150a
SB
10546 (propagated-inputs
10547 `(("python-psutil" ,python-psutil)
10548 ("python-pylev" ,python-pylev)))
f5deff7a
SB
10549 (home-page "https://github.com/sdispater/cleo")
10550 (synopsis "Command-line arguments library for Python")
10551 (description
10552 "Cleo allows you to create command-line commands with signature in
10553docstring and colored output.")
10554 (license license:expat)))
10555
10556(define-public python2-cleo
10557 (package-with-python2 python-cleo))
10558
77cadb43
SB
10559(define-public python-lazy-object-proxy
10560 (package
10561 (name "python-lazy-object-proxy")
10562 (version "1.2.2")
10563 (source (origin
10564 (method url-fetch)
10565 (uri (pypi-uri "lazy-object-proxy" version))
10566 (sha256
10567 (base32
10568 "0s22aqqkdscyh8sjspyyax7qa1aiz8p4midrnyf39717fhfczm6x"))))
10569 (build-system python-build-system)
10570 (native-inputs
10571 `(("python-setuptools" ,python-setuptools)))
10572 (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
10573 (synopsis "Lazy object proxy for python")
10574 (description
10575 "Lazy object proxy is an object that wraps a callable but defers the call
10576until the object is actually required, and caches the result of said call.")
3f641af0 10577 (license license:bsd-2)))
77cadb43
SB
10578
10579(define-public python2-lazy-object-proxy
10580 (package-with-python2 python-lazy-object-proxy))
10581
5477e05f
SB
10582(define-public python-dnspython
10583 (package
10584 (name "python-dnspython")
6c514128 10585 (version "1.15.0")
5477e05f
SB
10586 (source (origin
10587 (method url-fetch)
10588 (uri (string-append "http://www.dnspython.org/kits/"
10589 version "/dnspython-" version ".tar.gz"))
10590 (sha256
10591 (base32
6c514128 10592 "0jr4v2pd90i6l1xxbss2m05psbjaxvyvvvpq44wycijpfgjqln8i"))))
5477e05f
SB
10593 (build-system python-build-system)
10594 (arguments '(#:tests? #f)) ; XXX: requires internet access
10595 (native-inputs
10596 `(("python-setuptools" ,python-setuptools)))
10597 (home-page "http://www.dnspython.org")
10598 (synopsis "DNS toolkit for Python")
10599 (description
10600 "dnspython is a DNS toolkit for Python. It supports almost all record
10601types. It can be used for queries, zone transfers, and dynamic updates.
10602It supports TSIG authenticated messages and EDNS0.")
10603 (license license:expat)))
10604
10605(define-public python2-dnspython
10606 (package-with-python2 python-dnspython))
10607
22711e25
SB
10608(define-public python-email-validator
10609 (package
10610 (name "python-email-validator")
10611 (version "1.0.1")
10612 (source
10613 (origin (method url-fetch)
10614 (uri (pypi-uri "email_validator" version))
10615 (sha256
10616 (base32
10617 "0mn8jg5h8ifl8w6a6m0hq8kbk0mzw9vm054qfamkn89b3npz52qw"))))
10618 (build-system python-build-system)
10619 (arguments
10620 '(#:phases
10621 (modify-phases %standard-phases
10622 (add-before 'build 'use-dnspython
10623 (lambda _
10624 (substitute* "setup.py"
10625 (("dnspython3") "dnspython"))
10626 #t)))))
10627 (native-inputs
d42560bd
SB
10628 `(("python-setuptools" ,python-setuptools)))
10629 (propagated-inputs
22711e25 10630 `(("python-dnspython" ,python-dnspython)
d42560bd 10631 ("python-idna" ,python-idna)))
22711e25
SB
10632 (home-page "https://github.com/JoshData/python-email-validator")
10633 (synopsis "Email address validation library for Python")
10634 (description
10635 "This library validates email address syntax and deliverability.")
3f641af0 10636 (license license:cc0)))
22711e25
SB
10637
10638(define-public python2-email-validator
10639 (package-with-python2 python-email-validator))
10640
8987d91e
SB
10641(define-public python-ukpostcodeparser
10642 (package
10643 (name "python-ukpostcodeparser")
10644 (version "1.0.3")
10645 (source (origin
10646 (method url-fetch)
10647 (uri (pypi-uri "UkPostcodeParser" version))
10648 (sha256
10649 (base32
10650 "1jwg9z4rz51mcka1821rwgycsd0mcicyp1kiwjfa2kvg8bm9p2qd"))))
10651 (build-system python-build-system)
10652 (native-inputs
10653 `(("python-setuptools" ,python-setuptools)))
10654 (home-page "https://github.com/hamstah/ukpostcodeparser")
10655 (synopsis "UK Postcode parser for Python")
10656 (description
10657 "This library provides the @code{parse_uk_postcode} function for
10658parsing UK postcodes.")
10659 (license license:expat)))
10660
10661(define-public python2-ukpostcodeparser
10662 (package-with-python2 python-ukpostcodeparser))
ea92ae01
SB
10663
10664(define-public python-fake-factory
10665 (package
10666 (name "python-fake-factory")
7adc698f 10667 (version "0.7.2")
ea92ae01
SB
10668 (source (origin
10669 (method url-fetch)
10670 (uri (pypi-uri "fake-factory" version))
10671 (sha256
10672 (base32
7adc698f 10673 "0vs0dkmg0dlaxf8w6q2i3k0i03gmp56ablldv7ci9x3nbadkn71g"))))
ea92ae01 10674 (build-system python-build-system)
ea92ae01 10675 (native-inputs
bbcd7297 10676 `(("python-setuptools" ,python-setuptools)
ea92ae01
SB
10677 ;; For testing
10678 ("python-email-validator" ,python-email-validator)
10679 ("python-mock" ,python-mock)
10680 ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
bbcd7297
SB
10681 (propagated-inputs
10682 `(("python-dateutil" ,python-dateutil-2)
10683 ("python-six" ,python-six)))
7adc698f 10684 (home-page "https://github.com/joke2k/faker")
ea92ae01
SB
10685 (synopsis "Python package that generates fake data")
10686 (description
10687 "Faker is a Python package that generates fake data such as names,
10688addresses, and phone numbers.")
10689 (license license:expat)
10690 (properties `((python2-variant . ,(delay python2-fake-factory))))))
10691
10692(define-public python2-fake-factory
10693 (let ((base (package-with-python2 (strip-python2-variant
10694 python-fake-factory))))
10695 (package
10696 (inherit base)
24c9aa18 10697 (propagated-inputs
ea92ae01 10698 `(("python2-ipaddress" ,python2-ipaddress)
24c9aa18 10699 ,@(package-propagated-inputs base))))))
ea92ae01 10700
b49504fd
SB
10701(define-public python-pyaml
10702 (package
10703 (name "python-pyaml")
10704 (version "15.8.2")
10705 (source (origin
10706 (method url-fetch)
10707 (uri (pypi-uri "pyaml" version))
10708 (sha256
10709 (base32
10710 "1f5m28vkh4ksq3d80d8mmd2z8wxvc3mgy2pmrv2751dm2xgznm4w"))))
10711 (build-system python-build-system)
10712 (native-inputs
10713 `(("python-setuptools" ,python-setuptools)))
10714 (propagated-inputs
10715 `(("python-pyyaml" ,python-pyyaml)))
10716 (home-page "https://github.com/mk-fg/pretty-yaml")
10717 (synopsis "YAML pretty-print library for Python")
10718 (description
10719 "pyaml is a PyYAML based python module to produce pretty and readable
10720YAML-serialized data.")
3f641af0 10721 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))
b49504fd
SB
10722
10723(define-public python2-pyaml
10724 (package-with-python2 python-pyaml))
10725
347175a2
SB
10726(define-public python-flexmock
10727 (package
10728 (name "python-flexmock")
10729 (version "0.10.2")
10730 (source (origin
10731 (method url-fetch)
10732 (uri (pypi-uri "flexmock" version))
10733 (sha256
10734 (base32
10735 "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
10736 (build-system python-build-system)
10737 (native-inputs
10738 `(("python-setuptools" ,python-setuptools)))
10739 (home-page "https://flexmock.readthedocs.org")
10740 (synopsis "Testing library for Python")
10741 (description
10742 "flexmock is a testing library for Python that makes it easy to create
10743mocks, stubs and fakes.")
3f641af0 10744 (license license:bsd-3)))
347175a2
SB
10745
10746(define-public python2-flexmock
10747 (package-with-python2 python-flexmock))
10748
5a744191
SB
10749(define-public python-orator
10750 (package
10751 (name "python-orator")
10752 (version "0.8.2")
10753 (source (origin
10754 (method url-fetch)
10755 (uri (pypi-uri "orator" version))
10756 (sha256
10757 (base32
10758 "1li49irsqha17nrda4nsb48biyy0rarp9pphf0jpqwm5zr8hv569"))))
10759 (build-system python-build-system)
10760 (arguments '(#:tests? #f)) ; no tests
10761 (native-inputs
b2676030
SB
10762 `(("python-setuptools" ,python-setuptools)))
10763 (propagated-inputs
5a744191
SB
10764 `(("python-arrow" ,python-arrow)
10765 ("python-blinker" ,python-blinker)
10766 ("python-cleo" ,python-cleo)
10767 ("python-fake-factory" ,python-fake-factory)
10768 ("python-inflection" ,python-inflection)
10769 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
10770 ("python-pyaml" ,python-pyaml)
5a744191
SB
10771 ("python-simplejson" ,python-simplejson)
10772 ("python-wrapt" ,python-wrapt)))
10773 (home-page "https://orator-orm.com/")
10774 (synopsis "ActiveRecord ORM for Python")
10775 (description
10776 "Orator provides a simple ActiveRecord-like Object Relational Mapping
10777implementation for Python.")
10778 (license license:expat)
10779 (properties `((python2-variant . ,(delay python2-orator))))))
10780
10781(define-public python2-orator
10782 (let ((base (package-with-python2 (strip-python2-variant python-orator))))
10783 (package
10784 (inherit base)
06961617 10785 (propagated-inputs
5a744191 10786 `(("python2-ipaddress" ,python2-ipaddress)
06961617 10787 ,@(package-propagated-inputs base))))))
f4155188
DM
10788
10789(define-public python-prompt-toolkit
10790 (package
10791 (name "python-prompt-toolkit")
d15e2ef0 10792 (version "1.0.7")
f4155188
DM
10793 (source
10794 (origin
10795 (method url-fetch)
d15e2ef0 10796 (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
f4155188
DM
10797 (sha256
10798 (base32
d15e2ef0 10799 "1vyjd0b7wciv55i19l44zy0adx8q7ss79lhy2r9d1rwz2y4822zg"))))
f4155188 10800 (build-system python-build-system)
bae18710
LF
10801 (arguments
10802 '(#:tests? #f)) ; The test suite uses some Windows-specific data types.
f4155188
DM
10803 (inputs `(("python-wcwidth" ,python-wcwidth)
10804 ("python-pygments" ,python-pygments)))
10805 (native-inputs `(("python-six" ,python-six)))
10806 (home-page "https://github.com/jonathanslenders/python-prompt-toolkit")
10807 (synopsis "Library for building command line interfaces in Python")
10808 (description
10809 "Prompt-Toolkit is a library for building interactive command line
10810interfaces in Python. It's like GNU Readline but it also features syntax
10811highlighting while typing, out-of-the-box multi-line input editing, advanced
10812code completion, incremental search, support for Chinese double-width
10813characters, mouse support, and auto suggestions.")
3f641af0 10814 (license license:bsd-3)
f4155188
DM
10815 (properties `((python2-variant . ,(delay python2-prompt-toolkit))))))
10816
10817(define-public python2-prompt-toolkit
10818 (let ((base (package-with-python2 (strip-python2-variant python-prompt-toolkit))))
10819 (package
10820 (inherit base)
10821 (native-inputs
10822 `(("python2-setuptools" ,python2-setuptools)
10823 ,@(package-native-inputs base))))))
a502dfbf
DM
10824
10825(define-public python-jedi
10826 (package
10827 (name "python-jedi")
10828 (version "0.9.0")
10829 (source
10830 (origin
10831 (method url-fetch)
10832 (uri (pypi-uri "jedi" version))
10833 (sha256
10834 (base32
10835 "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v"))))
10836 (build-system python-build-system)
10837 (home-page "https://github.com/davidhalter/jedi")
10838 (synopsis
10839 "Autocompletion for Python that can be used for text editors")
10840 (description
10841 "Jedi is an autocompletion tool for Python that can be used for text editors.")
10842 (license license:expat)
10843 (properties `((python2-variant . ,(delay python2-jedi))))))
10844
10845(define-public python2-jedi
10846 (let ((base (package-with-python2 (strip-python2-variant python-jedi))))
10847 (package
10848 (inherit base)
10849 (native-inputs
10850 `(("python2-setuptools" ,python2-setuptools)
10851 ,@(package-native-inputs base))))))
c2f0dc6e
DM
10852
10853(define-public ptpython
10854 (package
10855 (name "ptpython")
10856 (version "0.34")
10857 (source (origin
10858 (method url-fetch)
10859 (uri (pypi-uri "ptpython" version))
10860 (sha256
10861 (base32
10862 "1mmbiyzf0n8hm7z2a562x7w5cbl6jc0zsk6vp40q1z4cyblv1k13"))))
10863 (build-system python-build-system)
10864 (inputs
10865 `(("python-docopt" ,python-docopt)
10866 ("python-jedi" ,python-jedi)
10867 ("python-prompt-toolkit" ,python-prompt-toolkit)
10868 ("python-pygments" ,python-pygments)
10869 ("python-setuptools" ,python-setuptools)))
10870 (home-page "https://github.com/jonathanslenders/ptpython")
10871 (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
10872 (description
10873 "ptpython is a Python read-eval-print loop with IDE-like features.
10874It supports syntax highlighting, multiline editing, autocompletion, mouse,
10875color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
10876etc.")
3f641af0 10877 (license license:bsd-3)
c2f0dc6e
DM
10878 (properties `((python2-variant . ,(delay ptpython-2))))))
10879
10880(define-public ptpython-2
10881 (let ((base (package-with-python2 (strip-python2-variant ptpython))))
10882 (package
10883 (inherit base)
10884 (name "ptpython2"))))
b227f0be 10885
b04a52a6
DJ
10886(define-public python-requests-oauthlib
10887 (package
10888 (name "python-requests-oauthlib")
10889 (version "0.6.2")
10890 (source
10891 (origin
10892 (method url-fetch)
10893 (uri (pypi-uri "requests-oauthlib" version))
10894 (sha256
10895 (base32
10896 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
10897 (build-system python-build-system)
10898 (arguments
10899 `(#:phases
10900 (modify-phases %standard-phases
10901 ;; removes tests that require network access
10902 (add-before 'check 'pre-check
10903 (lambda _
10904 (delete-file "tests/test_core.py")
10905 #t)))))
10906 (native-inputs
10907 `(("python-requests-mock" ,python-requests-mock)
10908 ("python-mock" ,python-mock)))
10909 (inputs
10910 `(("python-oauthlib" ,python-oauthlib)
10911 ("python-requests" ,python-requests)))
10912 (home-page
10913 "https://github.com/requests/requests-oauthlib")
10914 (synopsis
10915 "OAuthlib authentication support for Requests")
10916 (description
10917 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
10918provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
10919 (license license:isc)
10920 (properties `((python2-variant . ,(delay python2-requests-oauthlib))))))
10921
10922(define-public python2-requests-oauthlib
10923 (let ((base (package-with-python2 (strip-python2-variant python-requests-oauthlib))))
10924 (package
10925 (inherit base)
10926 (native-inputs `(("python2-setuptools" ,python2-setuptools)
10927 ,@(package-native-inputs base))))))
10928
b227f0be 10929(define-public python-stem
10930 (package
10931 (name "python-stem")
10932 (version "1.4.1b")
10933 (source
10934 (origin
10935 (method url-fetch)
10936 (uri (pypi-uri "stem" version ".tar.bz2"))
10937 (sha256
10938 (base32
10939 "09a3amp1y351nwz088ckiibbp666qi2lxwkyknavswfm400s0ns7"))))
10940 (build-system python-build-system)
10941 (arguments
10942 `(#:phases
10943 (modify-phases %standard-phases
10944 (replace 'check
10945 (lambda _
10946 (zero? (system* "./run_tests.py" "--unit")))))))
10947 (native-inputs
10948 `(("python-mock" ,python-mock)
10949 ("python-pep8" ,python-pep8)
10950 ("python-pyflakes" ,python-pyflakes)))
10951 (inputs
10952 `(("python-pycrypto" ,python-pycrypto)))
10953 (home-page "https://stem.torproject.org/")
10954 (synopsis
10955 "Python controller library that allows applications to interact with Tor")
10956 (description
10957 "Stem is a Python controller library for Tor. With it you can use Tor's
10958control protocol to script against the Tor process and read descriptor data
10959relays publish about themselves.")
3f641af0 10960 (license license:lgpl3)))
b227f0be 10961
10962(define-public python2-stem
10963 (package-with-python2 python-stem))
517a6c0c
DM
10964
10965(define-public python-pyserial
10966 (package
10967 (name "python-pyserial")
10968 (version "3.1.1")
10969 (source
10970 (origin
10971 (method url-fetch)
10972 (uri (pypi-uri "pyserial" version))
10973 (sha256
10974 (base32
10975 "0k1nfdrxxkdlv4zgaqsdv8li0pj3gbh2pyxw8q2bsg6f9490amyn"))))
10976 (build-system python-build-system)
10977 (home-page
10978 "https://github.com/pyserial/pyserial")
10979 (synopsis "Python Serial Port Bindings")
10980 (description "@code{pyserial} provide serial port bindings for Python. It
10981supports different byte sizes, stop bits, parity and flow control with RTS/CTS
10982and/or Xon/Xoff. The port is accessed in RAW mode.")
3f641af0 10983 (license license:bsd-3)
517a6c0c
DM
10984 (properties `((python2-variant . ,(delay python2-pyserial))))))
10985
10986(define-public python2-pyserial
10987 (let ((base (package-with-python2 (strip-python2-variant python-pyserial))))
10988 (package
10989 (inherit base)
10990 (native-inputs
10991 `(("python2-setuptools" ,python2-setuptools)
10992 ,@(package-native-inputs base))))))
6eb7af2a
DJ
10993
10994(define-public python-kivy
10995 (package
10996 (name "python-kivy")
10997 (version "1.9.1")
10998 (source
10999 (origin
11000 (method url-fetch)
11001 (uri (pypi-uri "kivy" version))
11002 (file-name (string-append name "-" version ".tar.gz"))
11003 (sha256
11004 (base32
11005 "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
11006 (build-system python-build-system)
11007 (arguments
11008 `(#:tests? #f ; Tests require many optional packages
11009 #:phases
11010 (modify-phases %standard-phases
11011 (replace 'build (lambda _ (zero? (system* "make" "force"))))
11012 (add-after 'patch-generated-file-shebangs 'set-sdl-paths
11013 (lambda* (#:key inputs #:allow-other-keys)
11014 (setenv "KIVY_SDL2_PATH"
11015 (string-append (assoc-ref inputs "sdl-union")
11016 "/include/SDL2"))
11017 #t)))))
11018 (native-inputs
11019 `(("pkg-config" ,pkg-config)))
11020 (inputs
11021 `(("python-cython" ,python-cython)
11022 ("gstreamer" ,gstreamer)
11023 ("mesa" ,mesa)
11024 ("sdl-union"
11025 ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
11026 (home-page "http://kivy.org")
11027 (synopsis
11028 "Multitouch application framework")
11029 (description
11030 "A software library for rapid development of
11031hardware-accelerated multitouch applications.")
11032 (license license:expat)))
11033
11034(define-public python2-kivy
11035 (package-with-python2 python-kivy))
11036
11037(define-public python-kivy-next
11038 (let ((commit "a988c5e7a47da56263ff39514264a3de516ef2fe")
11039 (revision "1"))
11040 (package (inherit python-kivy)
11041 (name "python-kivy-next")
d80a71eb 11042 (version (string-append "1.9.1-" revision "."
6eb7af2a
DJ
11043 (string-take commit 7)))
11044 (source
11045 (origin
11046 (method git-fetch)
11047 (uri (git-reference
11048 (url "https://github.com/kivy/kivy")
11049 (commit commit)))
11050 (file-name (string-append name "-" version "-checkout"))
11051 (sha256
11052 (base32
11053 "0jk92b4a8l7blkvkgkjihk171s0dfnq582cckff5srwc8kal5m0p")))))))
11054
11055(define-public python2-kivy-next
11056 (package-with-python2 python-kivy-next))
8794bd8b
DC
11057
11058(define-public python-binaryornot
11059 (package
11060 (name "python-binaryornot")
11061 (version "0.4.0")
11062 (source (origin
11063 (method url-fetch)
11064 (uri (pypi-uri "binaryornot" version))
11065 (sha256
11066 (base32
11067 "1j4f51dxic39mdwf6alj7gd769wy6mhk916v031wjali51xkh3xb"))))
11068 (build-system python-build-system)
11069 (inputs
11070 `(("python-chardet" ,python-chardet)
11071 ("python-hypothesis" ,python-hypothesis)))
11072 (home-page "https://github.com/audreyr/binaryornot")
11073 (synopsis "Package to check if a file is binary or text")
11074 (description "Ultra-lightweight pure Python package to check if a file is
11075binary or text.")
11076 (license license:bsd-3)
11077 (properties `((python2-variant . ,(delay python2-binaryornot))))))
11078
11079(define-public python2-binaryornot
11080 (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
11081 (package (inherit base)
11082 (native-inputs
11083 `(("python2-setuptools" ,python2-setuptools)
11084 ,@(package-native-inputs base)))
11085 (inputs
11086 `(("python2-enum34" ,python2-enum34)
11087 ,@(package-inputs base))))))
a9ac982a
DC
11088
11089(define-public python-nltk
11090 (package
11091 (name "python-nltk")
11092 (version "3.2.1")
11093 (source (origin
11094 (method url-fetch)
11095 (uri (pypi-uri "nltk" version))
11096 (sha256
11097 (base32
11098 "0skxbhnymwlspjkzga0f7x1hg3y50fwpfghs8g8k7fh6f4nknlym"))))
11099 (build-system python-build-system)
59f12985
LF
11100 (arguments
11101 '(;; The tests require some extra resources to be downloaded.
11102 ;; TODO Try packaging these resources.
11103 #:tests? #f))
a9ac982a
DC
11104 (home-page "http://nltk.org/")
11105 (synopsis "Natural Language Toolkit")
11106 (description "It provides interfaces to over 50 corpora and lexical
11107resources such as WordNet, along with a suite of text processing libraries
11108for classification, tokenization, stemming, tagging, parsing, and semantic
11109reasoning, wrappers for natural language processing libraries.")
11110 (license license:asl2.0)
11111 (properties `((python2-variant . ,(delay python2-nltk))))))
11112
11113(define-public python2-nltk
11114 (let ((base (package-with-python2 (strip-python2-variant python-nltk))))
11115 (package (inherit base)
11116 (native-inputs
11117 `(("python2-setuptools" ,python2-setuptools)
11118 ,@(package-native-inputs base))))))
691cd90d
DC
11119
11120(define-public python-pymongo
11121 (package
11122 (name "python-pymongo")
11123 (version "3.3.0")
11124 (source (origin
11125 (method url-fetch)
11126 (uri (pypi-uri "pymongo" version))
11127 (sha256
11128 (base32
11129 "07mra6w86wjqy4lx5fvimidjhhfzd562gfjn8grsnbv2q8pk0i9x"))))
11130 (build-system python-build-system)
11131 (inputs
11132 `(("python-certifi" ,python-certifi)))
11133 (home-page "http://github.com/mongodb/mongo-python-driver")
11134 (synopsis "Python driver for MongoDB")
11135 (description "Python driver for MongoDB.")
11136 (license license:asl2.0)
11137 (properties `((python2-variant . ,(delay python2-pymongo))))))
11138
11139(define-public python2-pymongo
11140 (let ((base (package-with-python2 (strip-python2-variant python-pymongo))))
11141 (package (inherit base)
11142 (native-inputs
11143 `(("python2-setuptools" ,python2-setuptools)
11144 ,@(package-native-inputs base))))))
6a6c9d43
DC
11145
11146(define-public python-sh
11147 (package
11148 (name "python-sh")
11149 (version "1.11")
11150 (source (origin
11151 (method url-fetch)
11152 (uri (pypi-uri "sh" version))
11153 (sha256
11154 (base32
11155 "192r0mpv6dmkysjzhc43ddffiwb5g7c76bgr1mb1z2xz9awbj3sr"))))
11156 (build-system python-build-system)
11157 (arguments
11158 `(#:tests? #f)) ; no tests
11159 (home-page "https://github.com/amoffat/sh")
11160 (synopsis "Python subprocess interface")
11161 (description "Abstracts process invocation by providing a function
11162interface for programs.")
11163 (license license:expat)
11164 (properties `((python2-variant . ,(delay python2-sh))))))
11165
11166(define-public python2-sh
11167 (let ((base (package-with-python2 (strip-python2-variant python-sh))))
11168 (package (inherit base)
11169 (native-inputs
11170 `(("python2-setuptools" ,python2-setuptools)
11171 ,@(package-native-inputs base))))))
05b59190 11172
25702397
EF
11173(define-public python-consul
11174 (package
11175 (name "python-consul")
11176 (version "0.6.1")
11177 (source
11178 (origin
11179 (method url-fetch)
11180 (uri (pypi-uri "python-consul" version))
11181 (sha256
11182 (base32
11183 "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
11184 (build-system python-build-system)
11185 (native-inputs
11186 `(("python-pytest" ,python-pytest)
11187 ("python-requests" ,python-requests)
11188 ("python-six" ,python-six)))
11189 (home-page "https://github.com/cablehead/python-consul")
11190 (synopsis "Python client for Consul")
11191 (description
11192 "Python client for @url{http://www.consul.io/,Consul}, a tool for service
11193discovery, monitoring and configuration.")
11194 (license license:expat)))
11195
11196(define-public python2-consul
11197 (let ((consul (package-with-python2 python-consul)))
11198 (package (inherit consul)
11199 (native-inputs
11200 `(("python2-setuptools" ,python2-setuptools)
11201 ,@(package-native-inputs consul))))))
11202
05b59190
DC
11203(define-public python-schematics
11204 (package
11205 (name "python-schematics")
11206 (version "1.1.1")
11207 (source
11208 (origin
11209 (method url-fetch)
11210 (uri (string-append
11211 "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
11212 (file-name (string-append name "-" version ".tar.gz"))
11213 (sha256
11214 (base32
11215 "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
11216 (build-system python-build-system)
11217 (inputs
11218 `(("python-six" ,python-six)))
11219 (arguments
11220 `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
11221 ; version requirements (eg python-coveralls)
11222 (home-page "https://github.com/schematics/schematics")
11223 (synopsis "Python Data Structures for Humans")
11224 (description "Python Data Structures for Humans.")
11225 (license license:bsd-3)
11226 (properties `((python2-variant . ,(delay python2-schematics))))))
11227
11228(define-public python2-schematics
11229 (let ((base (package-with-python2 (strip-python2-variant python-schematics))))
11230 (package (inherit base)
11231 (native-inputs
11232 `(("python2-setuptools" ,python2-setuptools)
11233 ,@(package-native-inputs base))))))
d6907ff7
DC
11234
11235(define-public python-publicsuffix
11236 (package
11237 (name "python-publicsuffix")
11238 (version "1.1.0")
11239 (source (origin
11240 (method url-fetch)
11241 (uri (pypi-uri "publicsuffix" version))
11242 (sha256
11243 (base32
11244 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
11245 (build-system python-build-system)
11246 (arguments
11247 `(#:tests? #f)) ; tests use the internet
11248 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
11249 (synopsis "Get suffix for a domain name")
11250 (description "Get a public suffix for a domain name using the Public Suffix
11251List.")
11252 (license license:expat)
11253 (properties `((python2-variant . ,(delay python2-nltk))))))
11254
11255(define-public python2-publicsuffix
11256 (let ((base (package-with-python2 (strip-python2-variant python-publicsuffix))))
11257 (package (inherit base)
11258 (native-inputs
11259 `(("python2-setuptools" ,python2-setuptools)
11260 ,@(package-native-inputs base))))))
b2319996
DC
11261
11262(define-public python-publicsuffix2
11263 (package
11264 (name "python-publicsuffix2")
11265 (version "2.20160621")
11266 (source
11267 (origin
11268 (method url-fetch)
11269 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
11270 (sha256
11271 (base32
11272 "06lx603gdwad5hc3hmn763ngq0rq9bzz1ni3ga72nzk5n872arkd"))))
11273 (build-system python-build-system)
10797a0a
LF
11274 (arguments
11275 '(#:tests? #f)) ; The test suite requires network access.
b2319996
DC
11276 (home-page "https://github.com/pombredanne/python-publicsuffix2")
11277 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
11278 (description "Get a public suffix for a domain name using the Public Suffix
11279List. Forked from and using the same API as the publicsuffix package.")
11280 (license (list license:expat license:mpl2.0))
11281 (properties `((python2-variant . ,(delay python2-publicsuffix2))))))
11282
11283(define-public python2-publicsuffix2
11284 (let ((base (package-with-python2 (strip-python2-variant python-publicsuffix2))))
11285 (package (inherit base)
11286 (native-inputs
11287 `(("python2-setuptools" ,python2-setuptools)
11288 ,@(package-native-inputs base))))))
81f1515d
DC
11289
11290(define-public python-url
11291 (package
11292 (name "python-url")
11293 (version "0.2.0")
11294 (source (origin
11295 (method url-fetch)
11296 (uri (pypi-uri "url" version))
11297 (sha256
11298 (base32
11299 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
11300 (build-system python-build-system)
11301 (inputs
11302 `(("python-publicsuffix" ,python-publicsuffix)))
11303 (native-inputs
11304 `(("python-coverage" ,python-coverage)
11305 ("python-nose" ,python-nose)))
11306 (arguments
11307 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
11308 (home-page "http://github.com/seomoz/url-py")
11309 (synopsis "URL Parsing")
11310 (description "Library for parsing urls.")
11311 (license license:expat)
11312 (properties `((python2-variant . ,(delay python2-url))))))
11313
11314(define-public python2-url
11315 (let ((base (package-with-python2 (strip-python2-variant python-url))))
11316 (package (inherit base)
11317 (inputs
11318 `(("python2-publicsuffix" ,python2-publicsuffix)))
11319 (native-inputs
11320 `(("python2-setuptools" ,python2-setuptools)
11321 ,@(package-native-inputs base))))))
974ee2c1
TS
11322
11323(define-public python-freezegun
11324 (package
11325 (name "python-freezegun")
11326 (version "0.3.7")
11327 (source
11328 (origin
11329 (method url-fetch)
11330 (uri (pypi-uri "freezegun" version))
11331 (sha256
11332 (base32
11333 "14l19x06v5jkq4rdwbmfyw4x9lrjb2300afrk21r1ash7y1y9a0w"))))
11334 (build-system python-build-system)
11335 (native-inputs
11336 `(("python-mock" ,python-mock)
11337 ("python-nose" ,python-nose)
11338 ("python-coverage" ,python-coverage)
11339 ("python-dateutil-2" ,python-dateutil-2)))
11340 (inputs
11341 `(("python-six" ,python-six)))
11342 (arguments
11343 `(#:phases (modify-phases %standard-phases
11344 ;; The tests are normally executed via `make test`, but the PyPi
11345 ;; package does not include the Makefile.
11346 (replace 'check
11347 (lambda _
11348 (zero? (system* "nosetests" "./tests/")))))))
11349 (home-page "https://github.com/spulec/freezegun")
11350 (synopsis "Test utility for mocking the datetime module")
11351 (description
11352 "FreezeGun is a library that allows your python tests to travel through
11353time by mocking the datetime module.")
11354 (license license:asl2.0)))
11355
11356(define-public python2-freezegun
11357 (let ((base (package-with-python2 (strip-python2-variant python-freezegun))))
11358 (package (inherit base)
11359 (native-inputs
11360 `(("python2-setuptools" ,python2-setuptools)
11361 ,@(package-native-inputs base))))))
dddcb25c
MB
11362
11363(define-public python-odfpy
11364 (package
11365 (name "python-odfpy")
11366 (version "1.3.3")
11367 (source (origin
11368 (method url-fetch)
11369 (uri (pypi-uri "odfpy" version))
11370 (sha256
11371 (base32
11372 "1a6ms0w9zfhhkqhvrnynwwbxrivw6hgjc0s5k7j06npc7rq0blxw"))))
11373 (arguments
11374 `(#:modules ((srfi srfi-1)
11375 (guix build python-build-system)
11376 (guix build utils))
11377 #:phases
11378 (modify-phases %standard-phases
11379 (replace 'check
11380 ;; The test runner invokes python2 and python3 for test*.py.
11381 ;; To avoid having both in inputs, we replicate it here.
11382 (lambda _
11383 (every (lambda (test-file)
11384 (zero? (system* "python" test-file)))
11385 (find-files "tests" "^test.*\\.py$")))))))
11386 (build-system python-build-system)
11387 (home-page "https://github.com/eea/odfpy")
11388 (synopsis "Python API and tools to manipulate OpenDocument files")
11389 (description "Collection of libraries and utility programs written in
11390Python to manipulate OpenDocument 1.2 files.")
11391 (license
11392 ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
11393 ;; number of files with other licenses.
11394 (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
11395
11396(define-public python2-odfpy
11397 (package-with-python2 python-odfpy))
b30565bd
MB
11398
11399(define-public python-cachecontrol
11400 (package
11401 (name "python-cachecontrol")
11402 (version "0.11.6")
11403 (source
11404 (origin
11405 (method url-fetch)
11406 ;; Pypi does not have tests.
11407 (uri (string-append
11408 "https://github.com/ionrock/cachecontrol/archive/v"
11409 version ".tar.gz"))
11410 (file-name (string-append name "-" version ".tar.gz"))
11411 (sha256
11412 (base32
11413 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
11414 (build-system python-build-system)
11415 (arguments
11416 `(#:phases
11417 (modify-phases %standard-phases
11418 (replace 'check
11419 (lambda _
11420 ;; Drop test that requires internet access.
11421 (delete-file "tests/test_regressions.py")
11422 (setenv "PYTHONPATH"
11423 (string-append (getcwd) "/build/lib:"
11424 (getenv "PYTHONPATH")))
11425 (zero? (system* "py.test" "-vv")))))))
11426 (native-inputs
11427 `(("python-pytest" ,python-pytest)
11428 ("python-redis" ,python-redis)
11429 ("python-webtest" ,python-webtest)
11430 ("python-mock" ,python-mock)))
11431 (propagated-inputs
11432 `(("python-requests" ,python-requests)
11433 ("python-lockfile" ,python-lockfile)))
11434 (home-page "https://github.com/ionrock/cachecontrol")
11435 (synopsis "The httplib2 caching algorithms for use with requests")
11436 (description "CacheControl is a port of the caching algorithms in
11437@code{httplib2} for use with @code{requests} session objects.")
11438 (license license:asl2.0)
dd447621 11439 (properties `((python2-variant . ,(delay python2-cachecontrol))))))
b30565bd
MB
11440
11441(define-public python2-cachecontrol
11442 (let ((base (package-with-python2 (strip-python2-variant python-cachecontrol))))
11443 (package (inherit base)
11444 (native-inputs
11445 `(("python2-setuptools" ,python2-setuptools)
11446 ,@(package-native-inputs base))))))
243db824
DM
11447
11448(define-public python-lit
11449 (package
11450 (name "python-lit")
11451 (version "0.5.0")
11452 (source
11453 (origin
11454 (method url-fetch)
11455 (uri (pypi-uri "lit" version))
11456 (sha256
11457 (base32
11458 "135m2b9cwih85g66rjggavck328z7lj37srgpq3jxszbg0g2b91y"))))
11459 (build-system python-build-system)
11460 (home-page "http://llvm.org/")
11461 (synopsis "LLVM Software Testing Tool")
11462 (description "@code{lit} is a portable tool for executing LLVM and Clang
11463style test suites, summarizing their results, and providing indication of
11464failures.")
11465 (license license:ncsa)
11466 (properties `((python2-variant . ,(delay python2-lit))))))
11467
11468(define-public python2-lit
11469 (let ((base (package-with-python2 (strip-python2-variant python-lit))))
11470 (package
11471 (inherit base)
11472 (native-inputs
11473 `(("python2-setuptools" ,python2-setuptools)
11474 ,@(package-native-inputs base))))))
66f95b20
MB
11475
11476(define-public python-pytest-pep8
11477 (package
11478 (name "python-pytest-pep8")
11479 (version "1.0.6")
11480 (source (origin
11481 (method url-fetch)
11482 (uri (pypi-uri "pytest-pep8" version))
11483 (sha256
11484 (base32
11485 "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3"))))
11486 (build-system python-build-system)
11487 (arguments
11488 `(#:tests? #f ; Fails with recent pytest and pep8. See upstream issues #8 and #12.
11489 ;; Prevent creation of the egg. This works around
11490 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
11491 #:configure-flags '("--single-version-externally-managed" "--root=/")))
11492 (native-inputs
11493 `(("python-pytest" ,python-pytest)))
11494 (propagated-inputs
11495 `(("python-pep8" ,python-pep8)))
11496 (home-page "https://bitbucket.org/pytest-dev/pytest-pep8")
11497 (synopsis "Py.test plugin to check PEP8 requirements")
11498 (description "Pytest plugin for checking PEP8 compliance.")
11499 (license license:expat)
11500 (properties `((python2-variant . ,(delay python2-pytest-pep8))))))
11501
11502(define-public python2-pytest-pep8
11503 (let ((base (package-with-python2 (strip-python2-variant python-pytest-pep8))))
11504 (package (inherit base)
11505 (native-inputs
11506 `(("python2-setuptools" ,python2-setuptools)
11507 ,@(package-native-inputs base))))))
df94a6b5
MB
11508
11509(define-public python-pytest-flakes
11510 (package
11511 (name "python-pytest-flakes")
11512 (version "1.0.1")
11513 (source (origin
11514 (method url-fetch)
11515 (uri (pypi-uri "pytest-flakes" version))
11516 (sha256
11517 (base32
11518 "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
11519 (build-system python-build-system)
11520 (arguments
11521 `(;; Prevent creation of the egg. This works around
11522 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765 .
11523 #:configure-flags '("--single-version-externally-managed" "--root=/")
11524 #:phases
11525 (modify-phases %standard-phases
11526 (delete 'check)
11527 (add-after 'install 'check
11528 (lambda _ ; It's easier to run tests after install.
11529 (zero? (system* "py.test" "-vv")))))))
11530 (native-inputs
11531 `(("python-coverage" ,python-coverage)
11532 ("python-pytest" ,python-pytest)
11533 ("python-pytest-cache" ,python-pytest-cache)
11534 ("python-pytest-pep8" ,python-pytest-pep8)))
11535 (propagated-inputs
11536 `(("python-pyflakes" ,python-pyflakes)))
11537 (home-page "https://github.com/fschulze/pytest-flakes")
11538 (synopsis "Py.test plugin to check source code with pyflakes")
11539 (description "Pytest plugin for checking Python source code with pyflakes.")
11540 (license license:expat)
11541 (properties `((python2-variant . ,(delay python2-pytest-flakes))))))
11542
11543(define-public python2-pytest-flakes
11544 (let ((base (package-with-python2 (strip-python2-variant python-pytest-flakes))))
11545 (package (inherit base)
11546 (native-inputs
11547 `(("python2-setuptools" ,python2-setuptools)
11548 ,@(package-native-inputs base))))))
5467ea62
MB
11549
11550(define-public python-natsort
11551 (package
11552 (name "python-natsort")
11553 (version "5.0.1")
11554 (source (origin
11555 (method url-fetch)
11556 (uri (pypi-uri "natsort" version))
11557 (sha256
11558 (base32
11559 "1abld5p4a6n5zjnyw5mi2pv37gqalcybv2brjr2y6l9l2p8v9mja"))))
11560 (build-system python-build-system)
11561 (arguments
11562 `(#:phases
11563 (modify-phases %standard-phases
11564 (add-before 'check 'set-cachedir
11565 ;; Tests require write access to $HOME by default
11566 (lambda _ (setenv "PYTHON_EGG_CACHE" "/tmp") #t)))))
11567 (native-inputs
11568 `(("python-hypothesis" ,python-hypothesis)
11569 ("python-pytest-cache" ,python-pytest-cache)
11570 ("python-pytest-cov" ,python-pytest-cov)
11571 ("python-pytest-flakes" ,python-pytest-flakes)
11572 ("python-pytest-pep8" ,python-pytest-pep8)))
11573 (propagated-inputs ; TODO: Add python-fastnumbers.
11574 `(("python-pyicu" ,python-pyicu)))
11575 (home-page "https://github.com/SethMMorton/natsort")
11576 (synopsis "Natural sorting for python and shell")
11577 (description
11578 "Natsort lets you apply natural sorting on lists instead of
11579lexicographical. If you use the built-in @code{sorted} method in python
11580on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
11581returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a
11582function @code{natsorted} that identifies numbers and sorts them separately
11583from strings. It can also sort version numbers, real numbers, mixed types
11584and more, and comes with a shell command @command{natsort} that exposes this
11585functionality in the command line.")
11586 (license license:expat)
11587 (properties `((python2-variant . ,(delay python2-natsort))))))
11588
11589(define-public python2-natsort
11590 (let ((base (package-with-python2 (strip-python2-variant python-natsort))))
11591 (package (inherit base)
11592 (native-inputs
11593 `(("python2-setuptools" ,python2-setuptools)
11594 ("python2-pathlib" ,python2-pathlib)
11595 ("python2-mock" ,python2-mock)
11596 ("python2-enum34" ,python2-enum34)
11597 ,@(package-native-inputs base))))))
4efb9c54
SR
11598
11599(define-public python-glances
11600 (package
11601 (name "python-glances")
11602 (version "2.7.1")
11603 (source
11604 (origin
11605 (method url-fetch)
11606 (uri (pypi-uri "Glances" version))
11607 (sha256
11608 (base32
11609 "11jbq40g8alsbirnd4kiagznqg270247i0m8qhi48ldf2i5xppxg"))))
11610 (build-system python-build-system)
11611 (inputs
11612 `(("python-psutil" ,python-psutil)))
11613 (home-page
11614 "https://github.com/nicolargo/glances")
11615 (synopsis
11616 "A cross-platform curses-based monitoring tool")
11617 (description
11618 "Glances is a curses-based monitoring tool for a wide variety of platforms.
11619Glances uses the PsUtil library to get information from your system. It monitors
11620CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
11621 (license license:lgpl3+)
11622 (properties `((python2-variant . ,(delay python2-glances))))))
11623
11624(define-public python2-glances
11625 (let ((base (package-with-python2 (strip-python2-variant python-glances))))
11626 (package
11627 (inherit base)
11628 (native-inputs
11629 `(("python2-setuptools" ,python2-setuptools)
11630 ,@(package-native-inputs base))))))
05b7a593
EF
11631
11632(define-public python-graphql-core
11633 (package
11634 (name "python-graphql-core")
11635 (version "0.5.3")
11636 (source
11637 (origin
11638 (method url-fetch)
11639 (uri (pypi-uri "graphql-core" version))
11640 (sha256
11641 (base32
11642 "0rsaarx2sj4xnw9966rhh4haiqaapm4lm2mfqm48ywd51j5vh1a0"))))
11643 (build-system python-build-system)
11644 (arguments
11645 `(#:phases
11646 (modify-phases %standard-phases
11647 (add-after 'unpack 'patch-hardcoded-version
11648 (lambda _ (substitute*
11649 "setup.py"
11650 (("'gevent==1.1rc1'") "'gevent'"))
11651 #t)))))
11652 (native-inputs
11653 `(("python-gevent" ,python-gevent)
11654 ("python-mock" ,python-mock)
11655 ("python-pytest-mock" ,python-pytest-mock)))
11656 (inputs
11657 `(("python-promise" ,python-promise)
11658 ("python-six" ,python-six)))
11659 (home-page "https://github.com/graphql-python/graphql-core")
11660 (synopsis "GraphQL implementation for Python")
11661 (description
11662 "GraphQL implementation for Python. GraphQL is a data query language and
11663runtime designed and used to request and deliver data to mobile and web apps.
11664This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
11665to Python.")
11666 (properties `((python2-variant . ,(delay python2-graphql-core))))
11667 (license license:expat)))
11668
11669(define-public python2-graphql-core
11670 (let ((base (package-with-python2
11671 (strip-python2-variant python-graphql-core))))
11672 (package (inherit base)
11673 (native-inputs
11674 `(("python2-setuptools" ,python2-setuptools)
11675 ,@(package-native-inputs base))))))
7ee51575
EF
11676
11677(define-public python-graphql-relay
11678 (package
11679 (name "python-graphql-relay")
11680 (version "0.4.4")
11681 (source
11682 (origin
11683 (method url-fetch)
11684 (uri (pypi-uri "graphql-relay" version))
11685 (sha256
11686 (base32
11687 "04wr9ayshxjjdcg2v21c7ffbz36kif1wjl3604fqd3qignb3fbxi"))))
11688 (build-system python-build-system)
11689 (native-inputs
11690 `(("python-pytest" ,python-pytest)))
11691 (inputs
11692 `(("python-graphql-core" ,python-graphql-core)
11693 ("python-promise" ,python-promise)
11694 ("python-six" ,python-six)))
11695 (home-page "https://github.com/graphql-python/graphql-relay-py")
11696 (synopsis "Relay implementation for Python")
11697 (description
11698 "This is a library to allow the easy creation of Relay-compliant servers
11699using the GraphQL Python reference implementation of a GraphQL server. It
11700should be noted that the code is a exact port of the original
11701@url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
11702from Facebook.")
11703 (properties `((python2-variant . ,(delay python2-graphql-relay))))
11704 (license license:expat)))
11705
11706(define-public python2-graphql-relay
11707 (let ((base (package-with-python2
11708 (strip-python2-variant python-graphql-relay))))
11709 (package (inherit base)
11710 (native-inputs
11711 `(("python2-setuptools" ,python2-setuptools)
11712 ,@(package-native-inputs base))))))
ddc63a56
EF
11713
11714(define-public python-graphene
11715 (package
11716 (name "python-graphene")
11717 (version "0.10.2")
11718 (source
11719 (origin
11720 (method url-fetch)
11721 (uri (pypi-uri "graphene" version))
11722 (sha256
11723 (base32
11724 "09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
11725 (build-system python-build-system)
11726 (native-inputs
11727 `(("python-django-filter" ,python-django-filter)
11728 ("python-mock" ,python-mock)
11729 ("python-psycopg2" ,python-psycopg2)
11730 ("python-pytest-django" ,python-pytest-django)
11731 ("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
11732 (inputs
11733 `(("python-graphql-core" ,python-graphql-core)
11734 ("python-graphql-relay" ,python-graphql-relay)
11735 ("python-iso8601" ,python-iso8601)
11736 ("python-promise" ,python-promise)
11737 ("python-six" ,python-six)))
11738 (home-page "http://graphene-python.org/")
11739 (synopsis "GraphQL Framework for Python")
11740 (description
11741 "Graphene is a Python library for building GraphQL schemas/types.
11742A GraphQL schema describes your data model, and provides a GraphQL server
11743with an associated set of resolve methods that know how to fetch data.")
11744 (properties `((python2-variant . ,(delay python2-graphene))))
11745 (license license:expat)))
11746
11747(define-public python2-graphene
11748 (let ((base (package-with-python2
11749 (strip-python2-variant python-graphene))))
11750 (package (inherit base)
11751 (native-inputs
11752 `(("python2-setuptools" ,python2-setuptools)
11753 ("python2-sqlalchemy" ,python2-sqlalchemy)
11754 ,@(package-native-inputs base))))))
d488d5d6
EF
11755
11756(define-public python-nautilus
11757 (package
11758 (name "python-nautilus")
11759 (version "0.4.9")
11760 (source
11761 (origin
11762 (method url-fetch)
11763 (uri (pypi-uri "nautilus" version))
11764 (sha256
11765 (base32
11766 "01hwzjc1zshk4vvxrcghm398fpy4jls66dyz06g07mrwqif8878p"))))
11767 (build-system python-build-system)
11768 (arguments `(#:tests? #f)) ; fails to import test modules
11769 (native-inputs
11770 `(("python-setuptools" ,python-setuptools)))
11771 (inputs
11772 `(("python-bcrypt" ,python-bcrypt)
11773 ("python-click" ,python-click)
11774 ("python-consul" ,python-consul)
11775 ("python-graphql-core" ,python-graphql-core)
11776 ("python-graphql-relay" ,python-graphql-relay)
11777 ("python-graphene" ,python-graphene)
11778 ("python-jinja2" ,python-jinja2)
11779 ("python-nose2" ,python-nose2)
11780 ("python-peewee" ,python-peewee)
11781 ("python-pika" ,python-pika)
11782 ("python-pycparser" ,python-pycparser)
11783 ("python-requests" ,python-requests)
11784 ("python-tornado" ,python-tornado)
11785 ("python-wtforms" ,python-wtforms)))
11786 (home-page "https://github.com/AlecAivazis/nautilus")
11787 (synopsis "Library for creating microservice applications")
11788 (description
11789 "Nautilus is a framework for flux based microservices that looks to
11790provide extendible implementations of common aspects of a cloud so that you can
11791focus on building massively scalable web applications.")
11792 (license license:expat)))
94cffc63
LF
11793
11794(define-public python-s3transfer
11795 (package
11796 (name "python-s3transfer")
11797 (version "0.1.8")
11798 (source (origin
11799 (method url-fetch)
11800 (uri (pypi-uri "s3transfer" version))
11801 (sha256
11802 (base32
11803 "1jivjkp3xqif9gzr5fiq28jsskmh50vzzd7ldsb4rbyiw1iyv3hy"))))
11804 (build-system python-build-system)
11805 (native-inputs
11806 `(("python-docutils" ,python-docutils)))
11807 (inputs
11808 `(("python-botocore" ,python-botocore)))
11809 (synopsis "Amazon S3 Transfer Manager")
11810 (description "S3transfer is a Python library for managing Amazon S3
11811transfers.")
11812 (home-page "https://github.com/boto/s3transfer")
11813 (license license:asl2.0)
11814 (properties `((python2-variant . ,(delay python2-s3transfer))))))
11815
11816(define-public python2-s3transfer
11817 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
11818 (package
11819 (inherit base)
11820 (native-inputs
11821 `(("python2-futures" ,python2-futures)
11822 ("python2-setuptools" ,python2-setuptools)
11823 ,@(package-native-inputs base))))))
8ab59181
HG
11824
11825(define-public python-setproctitle
11826(package
11827 (name "python-setproctitle")
11828 (version "1.1.10")
11829 (source
11830 (origin
11831 (method url-fetch)
11832 (uri (pypi-uri "setproctitle" version))
11833 (sha256
11834 (base32
11835 "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
11836 (build-system python-build-system)
11837 (arguments
11838 '(#:phases
11839 (modify-phases %standard-phases
11840 (add-before 'check 'patch-Makefile
11841 ;; Stricly this is only required for the python2 variant.
11842 ;; But adding a phase in an inherited package seems to be
11843 ;; cumbersum. So we patch even for python3.
11844 (lambda _
11845 (let ((nose (assoc-ref %build-inputs "python2-nose")))
11846 (when nose
11847 (substitute* "Makefile"
11848 (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
11849 (string-append nose "/bin/nosetests "))))
11850 #t)))
11851 (replace 'check
11852 (lambda _
11853 (setenv "PYTHON" (or (which "python3") (which "python")))
11854 (setenv "PYCONFIG" (or (which "python3-config")
11855 (which "python-config")))
11856 (setenv "CC" "gcc")
11857 ;; No need to extend PYTHONPATH to find the built package, since
11858 ;; the Makefile will build anyway
11859 (zero? (system* "make" "check")))))))
11860 (native-inputs
11861 `(("procps" ,procps))) ; required for tests
11862 (home-page
11863 "https://github.com/dvarrazzo/py-setproctitle")
11864 (synopsis
11865 "Setproctitle implementation for Python to customize the process title")
11866 (description "The library allows a process to change its title (as displayed
11867by system tools such as ps and top).
11868
11869Changing the title is mostly useful in multi-process systems, for
11870example when a master process is forked: changing the children's title
11871allows to identify the task each process is busy with. The technique
11872is used by PostgreSQL and the OpenSSH Server for example.")
11873 (license license:bsd-3)
11874 (properties `((python2-variant . ,(delay python2-setproctitle))))))
11875
11876(define-public python2-setproctitle
11877 (let ((base (package-with-python2
11878 (strip-python2-variant python-setproctitle))))
11879 (package
11880 (inherit base)
11881 (native-inputs `(("python2-nose" ,python2-nose)
11882 ,@(package-native-inputs base))))))
162e42d8
HG
11883
11884(define-public python-validictory
11885 (package
11886 (name "python-validictory")
11887 (version "1.0.1")
11888 (source
11889 (origin
11890 (method url-fetch)
11891 (uri (pypi-uri "validictory" version))
11892 (sha256
11893 (base32
11894 "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
11895 (build-system python-build-system)
11896 (arguments
11897 '(#:phases
11898 (modify-phases %standard-phases
11899 (add-after 'unpack 'bootstrap
11900 ;; Move the tests out of the package directory to avoid
11901 ;; packaging them.
11902 (lambda* _
11903 (rename-file "validictory/tests" "tests")
11904 (delete-file "tests/__init__.py")))
11905 (replace 'check
11906 (lambda _
11907 ;; Extend PYTHONPATH so the built package will be found.
11908 (setenv "PYTHONPATH"
11909 (string-append (getcwd) "/build/lib:"
11910 (getenv "PYTHONPATH")))
11911 (zero? (system* "py.test" "-vv" )))))))
11912 (native-inputs
11913 `(("python-pytest" ,python-pytest)))
11914 (home-page
11915 "https://github.com/jamesturk/validictory")
11916 (synopsis "General purpose Python data validator")
11917 (description "It allows validation of arbitrary Python data structures.
11918
11919The schema format is based on the JSON Schema
11920proposal (http://json-schema.org), so combined with json the library is also
11921useful as a validator for JSON data.")
7ca68304
EF
11922 (license license:expat)
11923 (properties `((python2-variant . ,(delay python2-validictory))))))
162e42d8
HG
11924
11925(define-public python2-validictory
7ca68304
EF
11926 (let ((base (package-with-python2
11927 (strip-python2-variant python-validictory))))
11928 (package
11929 (inherit base)
11930 (native-inputs `(("python2-setuptools" ,python2-setuptools)
11931 ,@(package-native-inputs base))))))
0990edfe
DM
11932
11933(define-public python-aniso8601
11934 (package
11935 (name "python-aniso8601")
11936 (version "1.1.0")
11937 (source
11938 (origin
11939 (method url-fetch)
11940 (uri (pypi-uri "aniso8601" version))
11941 (sha256
11942 (base32
11943 "1k5mjg9iqbjfslb5prrsfz7dhlvi6s35p1jxq8dm87w1b7dn5i2g"))))
11944 (build-system python-build-system)
11945 (propagated-inputs
11946 `(("python-dateutil-2" ,python-dateutil-2)))
11947 (home-page
11948 "https://bitbucket.org/nielsenb/aniso8601")
11949 (synopsis
11950 "Python library for parsing ISO 8601 strings")
11951 (description
11952 "This package contains a library for parsing ISO 8601 datetime strings.")
11953 (license license:bsd-3)))
999d964d
DM
11954
11955(define-public python-flask-restful
11956 (package
11957 (name "python-flask-restful")
11958 (version "0.3.5")
11959 (source
11960 (origin
11961 (method url-fetch)
11962 (uri (pypi-uri "Flask-RESTful" version))
11963 (sha256
11964 (base32
11965 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
11966 (build-system python-build-system)
11967 (propagated-inputs
11968 `(("python-aniso8601" ,python-aniso8601)
11969 ("python-flask" ,python-flask)
11970 ("python-pycrypto" ,python-pycrypto)
11971 ("python-pytz" ,python-pytz)))
11972 (native-inputs
11973 `(;; Optional dependency of Flask. Tests need it.
11974 ("python-blinker" ,python-blinker)
11975 ("python-mock" ,python-mock) ; For tests
11976 ("python-nose" ,python-nose) ; For tests
11977 ("python-sphinx" ,python-sphinx)))
11978 (home-page
11979 "https://www.github.com/flask-restful/flask-restful/")
11980 (synopsis
11981 "Flask module for creating REST APIs")
11982 (description
11983 "This package contains a Flask module for creating REST APIs.")
11984 (license license:bsd-3)))
31288222
DM
11985
11986(define-public python-flask-basicauth
11987 (package
11988 (name "python-flask-basicauth")
11989 (version "0.2.0")
11990 (source
11991 (origin
11992 (method url-fetch)
11993 (uri (pypi-uri "Flask-BasicAuth" version))
11994 (sha256
11995 (base32
11996 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
11997 (build-system python-build-system)
11998 (propagated-inputs
11999 `(("python-flask" ,python-flask)))
12000 (home-page
12001 "https://github.com/jpvanhal/flask-basicauth")
12002 (synopsis
12003 "HTTP basic access authentication for Flask")
12004 (description
12005 "This package provides HTTP basic access authentication for Flask.")
12006 (license license:bsd-3)))
903276d0
DM
12007
12008(define-public python-flask-sqlalchemy
12009 (package
12010 (name "python-flask-sqlalchemy")
12011 (version "2.1")
12012 (source
12013 (origin
12014 (method url-fetch)
12015 (uri (pypi-uri "Flask-SQLAlchemy" version))
12016 (sha256
12017 (base32
12018 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
12019 (build-system python-build-system)
12020 (propagated-inputs
12021 `(("python-flask" ,python-flask)
12022 ("python-sqlalchemy" ,python-sqlalchemy)))
12023 (home-page
12024 "http://github.com/mitsuhiko/flask-sqlalchemy")
12025 (synopsis
12026 "Module adding SQLAlchemy support to your Flask application")
12027 (description
12028 "This package adds SQLAlchemy support to your Flask application.")
12029 (license license:bsd-3)))
329b4b3b
LF
12030
12031(define-public python-pyev
12032 (package
12033 (name "python-pyev")
12034 (version "0.9.0")
12035 (source
12036 (origin
12037 (method url-fetch)
12038 (uri (pypi-uri "pyev" version))
12039 (sha256
12040 (base32
12041 "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
12042 (build-system python-build-system)
12043 (arguments
12044 `(#:tests? #f ; no test suite
12045 #:phases
12046 (modify-phases %standard-phases
12047 (add-after 'unpack 'patch
12048 (lambda* (#:key inputs #:allow-other-keys)
12049 (let ((libev (string-append (assoc-ref inputs "libev")
12050 "/lib/libev.so.4")))
12051 (substitute* "setup.py"
12052 (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
12053 (string-append "libev_dll_name = \"" libev "\"")))))))))
12054 (inputs
12055 `(("libev" ,libev)))
12056 (home-page "http://pythonhosted.org/pyev/")
12057 (synopsis "Python libev interface")
12058 (description "Pyev provides a Python interface to libev.")
12059 (license license:gpl3)))
12060
12061(define-public python2-pyev
12062 (package-with-python2 python-pyev))
45b4f127
DM
12063
12064(define-public python-imagesize
12065 (package
12066 (name "python-imagesize")
12067 (version "0.7.1")
12068 (source
12069 (origin
12070 (method url-fetch)
12071 (uri (pypi-uri "imagesize" version))
12072 (sha256
12073 (base32
12074 "0qk07k0z4241lkzzjji7z4da04pcvg7bfc4xz1934zlqhwmwdcha"))))
12075 (build-system python-build-system)
12076 (home-page "https://github.com/shibukawa/imagesize_py")
12077 (synopsis "Gets image size of files in variaous formats in Python")
12078 (description
12079 "This package allows determination of image size from
12080PNG, JPEG, JPEG2000 and GIF files in pure Python.")
12081 (license license:expat)
12082 (properties `((python2-variant . ,(delay python2-imagesize))))))
12083
12084(define-public python2-imagesize
12085 (let ((base (package-with-python2 (strip-python2-variant python-imagesize))))
12086 (package
12087 (inherit base)
12088 (native-inputs `(("python2-setuptools" ,python2-setuptools)
12089 ,@(package-native-inputs base))))))
2f6dd9cd
AI
12090
12091(define-public python-axolotl-curve25519
12092 (package
12093 (name "python-axolotl-curve25519")
12094 (version "0.1")
12095 (source
12096 (origin
12097 (method git-fetch)
12098 (uri (git-reference
12099 (url "git://github.com/tgalal/python-axolotl-curve25519")
12100 (commit "e4a9c4de0eae27223200579c58d1f8f6d20637e2")))
12101 (file-name (string-append name "-" version "-checkout"))
12102 (sha256
12103 (base32
12104 "0agap5q0hmvf6cwzjqc05kw53pjgf6942pcivpazksmg1vk400ra"))))
12105 (build-system python-build-system)
12106 (arguments
12107 `(;; Prevent creation of the egg. This works around
12108 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
12109 #:configure-flags '("--root=/")))
12110 (native-inputs
12111 `(("python-setuptools" ,python-setuptools)))
12112 (home-page "https://github.com/tgalal/python-axolotl-curve25519")
12113 (synopsis "Python wrapper for curve25519 library")
12114 (description "This is a python wrapper for the curve25519 library
12115with ed25519 signatures. The C code was pulled from
12116libaxolotl-android. At the moment this wrapper is meant for use by
12117python-axolotl.")
12118 (license (list license:gpl3 ; Most files
683cdbf5 12119 license:bsd-3)))) ; curve/curve25519-donna.c
2f6dd9cd
AI
12120
12121(define-public python2-axolotl-curve25519
12122 (package-with-python2 python-axolotl-curve25519))
06ff0837
AI
12123
12124(define-public python-axolotl
12125 (package
12126 (name "python-axolotl")
12127 (version "0.1.35")
12128 (source
12129 (origin
12130 (method url-fetch)
12131 (uri (string-append
12132 "https://github.com/tgalal/python-axolotl/archive/"
12133 version ".tar.gz"))
12134 (file-name (string-append name "-" version ".tar.gz"))
12135 (sha256
12136 (base32 "1z8d89p7v40p4bwywjm9h4z28fdvra79ddw06azlkrfjbl7dxmz8"))))
12137 (build-system python-build-system)
12138 (arguments
12139 `(#:phases
12140 (modify-phases %standard-phases
12141 ;; Don't install tests
12142 (add-before 'install 'remove-tests
12143 (lambda _
12144 (for-each delete-file-recursively
12145 '("axolotl/tests" "build/lib/axolotl/tests"))
12146 #t)))
12147 ;; Prevent creation of the egg. This works around
12148 ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20765
12149 #:configure-flags '("--root=/")))
12150 (native-inputs
12151 `(("python-setuptools" ,python-setuptools)))
12152 (propagated-inputs
12153 `(("python-axolotl-curve25519" ,python-axolotl-curve25519)
12154 ("python-dateutil" ,python-dateutil)
12155 ("python-protobuf" ,python-protobuf)
12156 ("python-pycrypto" ,python-pycrypto)))
12157 (home-page "https://github.com/tgalal/python-axolotl")
12158 (synopsis "Python port of libaxolotl-android")
12159 (description "This is a python port of libaxolotl-android. This
12160is a ratcheting forward secrecy protocol that works in synchronous and
12161asynchronous messaging environments.")
12162 (license license:gpl3)))
12163
12164(define-public python2-axolotl
12165 (package-with-python2 python-axolotl))